Author: Włodzimierz Macewicz
Keywords: latex, description, Wirtualna Akademia

# description

Opisywana lista nie ma zdefiniowanej domyślnej etykiety, zakłada się, że każda pozycja jest opatrzona własną etykietą (parametr polecenie `\item`). Standardową postać trudno uznać za zadowalającą, poniższa struktura

    \noindent aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    \begin{description}
    \item[i] aqq
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    \item[ii] bqq
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    \item[iii] bqq
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    \end{description}
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa

będzie wyglądała:
jak widać na przykładzie występują trzy różne wielkości lewego marginesu, stwarza to niemiłe wrażenie, dobrze by było gdyby lewy margines w każdym wypadku był jednakowy, dla wszystkich linii wykazu, bez względu na długość etykiety.

Złożoność (i pogmatwanie) środowiska `list` nie pozwala na dużą swobodę, nie mniej jednak, możemy zdefiniować szereg odmian listy `description`.

Przykład 1: Lista dająca łatwą możliwość definiowania szerokości lewego marginesu

    \newenvironment{Ventry}[1]{%
        \begin{list}{}
        		 {\renewcommand{\makelabel}[1]{%
    		 				\textsf{##1:}\hfill}%
    		  \settowidth{\labelwidth}{\textsf{#1:}}%
    		  \leftmargin=\labelwidth%
    		  \advance \leftmargin\labelsep}}%
        {\end{list}}
    \begin{Ventry}{Rezultat}
    \item[Opis] środowisko pozwala na zdefiniowanie listy o zadanej szerokości
    marginesu, jego szerokość wyznacza szerokość najdłuższej etykiety,
    którą to należy podać jako argument
    \item[Błędy] brak,
    \item[Rezultat] jest zadowalający
    \end{Ventry}

daje następujący efekt:

Przykład 2: Lista podobna do wyżej zdefiniowanej, ale zdefiniowano dodatkową własność, jeżeli etykieta jest dłuższa od określonej szerokości to opis jest umieszczany w następnej linii

    \newlength{\Mylen}
    %
    \newcommand{\entrylabel}[1]{%
    \settowidth{\Mylen}{\textsf{#1:}}%
    \ifthenelse{\lengthtest{\Mylen > \labelwidth}}
    	    {\parbox[b]{\labelwidth}
    	    	{\makebox[0pt][l]{\textsf{#1:}}\\}}%
    		{\textsf{#1:}}%
    		\hfil\relax}
    \newenvironment{entry}[1]%
        {\begin{list}{}%
    	{\renewcommand{\makelabel}{\entrylabel}%
    			  \settowidth{\labelwidth}{\textsf{#1:}}%
    			  \leftmargin=\labelwidth%
    			  \advance \leftmargin\labelsep}}%
        {\end{list}}
    %
    \noindent aqq
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    \begin{entry}{Błędy}
    \item[Opis] środowisko pozwala na zdefiniowanie listy o zadanej szerokości
    marginesu, jego szerokość wyznacza szerokość wybranej etykiety,
    którą to należy podać jako argument
    \item[Błędy] brak,
    \item[Rezultat] jest zadowalający
    \end{entry}
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa

a oto przykład
Przykład 3: Lista gdzie etykieta podlega procesowi łamania na szerokości wyznaczonej przez długość argumentu

    \newcommand{\Myentrylabel}[1]{%
    \raisebox{0pt}[1ex][0pt]{%
         \makebox[\labelwidth][l]{%
    	 \parbox[t]{\labelwidth}{\hspace{0pt}\textsf{#1:}}}}}%
    \newenvironment{Myentry}[1]%
    	{\begin{list}{}
    	{%
    	  \settowidth{\labelwidth}{\textsf{#1:}}%
    	  \leftmargin=\labelwidth%
    	  \advance \leftmargin\labelsep%
    	 \renewcommand{\makelabel}{\Myentrylabel}}}%
    	{\end{list}}
    %
    \noindent aqq
    aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
    \begin{Myentry}{Błędy}
    \item[Opis] środowisko pozwala na zdefiniowanie listy o zadanej szerokości
    marginesu, jego szerokość wyznacza szerokość wybranej etykiety,
    którą to należy podać jako argument
    \item[Błędy] brak,
    \item[Rezultat] jest zadowalający, a nawet jeszcze bardziej, bowiem
    zbyt długa etykieta podlega procesowi łamania
    \end{Myentry}