Zastaw ciekawych makroinstrukcji
Author: Włodzimierz Macewicz
Keywords: tex, latex, makroinstrukcje, pakiety makroinstrukcji, Wirtualna Akademia

## enumitem

Pakiet reimplementuje środowiska `enumerate`, `itemize` i `description`; wprowadzając mechanizmy dzięki którym można łatwiej wpływać na ich własności (ich definicje są dalej oparte na środowisku `list`). Są dwa sposoby zmiany własności: w momencie wywołania środowiska -- określając je w postaci parametru (opcjonalnego) np.
`\begin{enumerate}[parametry]`
lub wywołując specjalne konstrukcje:

`\setlist{parametry}` | określa parametry wszystkich środowisk (`enumerate`, `itemize` i `description`) na wszystkich poziomach
`\setlist[poziom]{parametry}` | jw. ale tylko dla wskazanego poziomu zagnieżdzenia
`\setenumerate{parametry}` | określa parametry środowisk `enumerate` na wszystkich poziomach
`\setenumerate[poziom]{parametry}` | jw. ale tylko dla wskazanego poziomu zagnieżdzenia
`\setitemize{parametry}` | określa parametry środowisk `itemize` na wszystkich poziomach
`\setitemize[poziom]{parametry}` | jw. ale tylko dla wskazanego poziomu zagnieżdzenia
`\setdescription{parametry}` | określa parametry środowisk `description` na wszystkich poziomach

Przy otwarciu środowiska najpierw są określane własności definiowane przez `\setlist`, następnie przez `\setlist` dla danego poziomu, później `\set...` -- właściwe dla danego środowiska dla wszystkich poziomów, potem określone dla danego poziomu, a na końcu określone przy wywołaniu środowiska. Własności określamy podając listę parametrów oddzielonych przecinkiem w postaci `nazwa=wartość`.

#### Lista własności i ich wartości

`topsep=skip` | odległość przed i po zawartości środowiska (p. `nolistsep`)
`partopsep=skip` | dodatkowa odległość przed i po, jeśli środowisko rozpoczyna (kończy) akapit
`itemsep=skip` | odległość między elementami listy (p. `noitemsep`)
`parsep=skip` | odległość między akapitami (dodawana również jeśli element listy rozpoczyna nowy akapit)
`leftmargin=długość` | wielkość lewego marginesu tekstu podstawowego środowiska
`rightmargin=długość` | wartość prawego marginesu
`listparindent=długość` | wielkość wcięcia akapitowego wewnątrz środowiska
`labelwidth=długość` | szerokość pola etykiety
`labelindent=długość` | dodatkowe wcięcie pierwszej linii etykiety
`labelsep=długość` | odległość etykiety od tekstu podstawowego
`itemindent=długość` | dodatkowe wcięcie pierwszej linii tekstu (zawiera się w `labelsep`)
`calcmargin` | ustala szerokość etykiety (`labelwidth`) ustalając ją na szerokość: cyfry dla numeracji liczbami w notacji arabskiej, szerokość napisu ,,viii'' dla numeracji liczbami w notacji rzymskiej, szerokość litery ,,m'' dla oznaczeń kolejnymi literami (analogicznie ,,VIII'' i ,,M'' jeżeli używane są wielkie litery) oraz wielkość lewego marginesu jako sumy `labelwidth`, `labelsep` i `labelindent`
`calcmargin=napis` | ustala szerokość etykiety (`labelwidth`) jako szerokość podanego napisu oraz wielkość lewego marginesu jako sumy `labelwidth`, `labelsep` i `labelindent`
`calcsep` | ustala szerokość etykiety (`labelwidth`) ustalając ją na szerokość: cyfry dla numeracji liczbami w notacji arabskiej, szerokość napisu ,,viii'' dla numeracji liczbami w notacji rzymskiej, szerokość litery ,,m'' dla oznaczeń kolejnymi literami (analogicznie ,,VIII'' i ,,M'' jeżeli używane są wielkie litery) oraz odległość między etykietą, a tekstem (`labelsep`) jako wielkość pozostałą po odjęciu od `leftmargin` `labelwidth` i `labelindent`
`calcsep=napis` | ustala szerokość etykiety (`labelwidth`) jako szerokość podanego napisu oraz odległość między etykietą, a tekstem (`labelsep`) jako wielkość pozostałą po odjęciu od `leftmargin` `labelwidth` i `labelindent`
`resume` | numeracja będzie kontynuowana (licznikiem tego samego poziomu)
`start=wartość` | ustala wartość początkową licznika
`format=`polecenia`` | ciąg poleceń, które wywołane zostaną przed treścią etykiety np. `format=\sffamily\color{blue}` określi czcionkę bezszeryfową w kolorze niebieskim, którą zostanie zaprezentowany numer
`style=nazwa` | istotne tylko dla środowiska `description`; nazwa określa nazwę stylu i może przyjmować wartości:
`normal` | neutralny
`nextline` | etykieta będzie stanowiła osobną linię
`multiline` | etykieta będzie składana w pudełku określonym przez `labelwidth` (może zajmować kilka linii, ale nie powoduje rezerwacji dodatkowego obszaru pionowego -- jeżeli tekst opisu zajmuje mniej linii niż etykieta nastąpi nałożenie z następnym elementem listy
`label=`polecenie i/lub tekst`` | polecenie określa sposób wyprowadzania licznika (powinno ono mieć jeden parametr na który zostanie podstawiona wartość, zaznaczamy go symbolicznie znakiem `*`) podany tekst zostanie po prostu zaprezentowany np.: `label=\arabic*.` określa wyprowadzenie licznika w postaci liczby w notacji arabskiej oraz znaku kropki
`ref=`polecenie i/lub tekst`` | polecenie określa sposób prezentacji etykiety związanej z wartością bieżącą zapamiętaną przez polecenie `\label` -- domyślnie wartością etykiety jest to samo co pojawia się jako etykieta elementu listy (jest to określone parametrem `label`). Może to nie być korzystne; np. należy pozbyć się kropki po numerze lub nawiasów
`nolistsep` | kasuje światło między elementami listy
`noitemsep` | kasuje światło przed i po środowisku

Włodzimierz Macewicz

Ostatnie zmiany: 05.05.2014.