Przejdź do zawartości

LaTeX/Listy

Z Wikibooks, biblioteki wolnych podręczników.

Wygodnym i łatwym do zbudowania jest sporą zaletą LaTeXa. Użytkownicy programów typu WYSIWYG mają często problemy w związku z tym, iż programy nie chcą wstawić list w sposób taki jak użytkownik. LaTeX dzięki użyciu znaczników ma lepszą kontrolę na tymi zachowaniami.

Struktura listy

[edytuj]

Listy często pojawiają się w dokumentach, szczególnie akademickich, aby w łatwy przejrzysty sposób przekazać informacje. Występują trzy typy list: itemize, enumerate oraz description.

Podstawowe komendy podczas tworzenia listy:

\begin{typ_listy}

  \item Pierwsza pozycja na liście
  \item Druga pozycja na liście
  \item Trzecia pozycja na liście

\end{typ_listy}

Każdy z typów list może posiadać wiele paragrafów.Aby to uzyskać należy odpowiednią ilość razy powtórzyć komendę \item. Oczywiście wszystkie powtórzenia muszą znajdować się wewnątrz danego środowiska.

Itemize

[edytuj]

Poniżej przedstawiono przykładowy kod typu itemize wraz z wyglądem danej listy.

\begin{itemize}
  \item The first item
  \item The second item
  \item The third etc \ldots
\end{itemize}

Enumerate

[edytuj]

W przypadku tego typu listy każdy kolejny element numerowany jest kolejną liczbą arabską. Przykładowy kod wraz z wyglądem gotowej listy przedstawiono poniżej.

\begin{enumerate}
  \item The first item
  \item The second item
  \item The third etc \ldots
\end{enumerate}

Description

[edytuj]

Typ description pozwala cyfry arabskie zastąpić każdym innym znacznikiem lub słowem. Wystarczy po komendzie \item w nawiasie kwadratowym wprowadzić słowa,którymi mają zaczynać się paragrafy. Typ ten jest idealny do wprowadzania serii definicji lub słownika.

\begin{description}
  \item[First] The first item
  \item[Second] The second item
  \item[Third] The third etc \ldots
\end{description}

Jeśli chcemy, aby tekst znajdował się w osobnej linii należy użyćkomendy \hfill, tak jak pokazano w przykładzie poniżej.

\begin{description}
  \item[First] \hfill \\
  The first item
  \item[Second] \hfill \\
  The second item
  \item[Third] \hfill \\
  The third etc \ldots
\end{description}

Listy zagnieżdżone

[edytuj]

LaTeX umożliwia także tworzenie list zagnieżdżonych, czyli umieszczanie listy w liście. Maksymalnie można taka lista może posiadać cztery poziomy. Jeśli konieczne jest zagnieżdżenie większej liczby list, należy posłużyć się pakietem easylist. Aby stworzyć zagnieżdżone listy po prostu umieść jedno środowisko wewnątrz drugiego. LaTeX automatycznie posortuje listy i ponumeruje je za Ciebie.

\begin{enumerate}
  \item The first item
  \begin{enumerate}
    \item Nested item 1
    \item Nested item 2
  \end{enumerate}
  \item The second item
  \item The third etc \ldots
\end{enumerate}

Dostosowywanie list

[edytuj]

Dostosowywaniem LaTeXa zajmują się raczej zaawansowani użytkownicy. Nie jest to trudne, ale nowi użytkownicy są zazwyczaj przytłoczeni ilością nowych komend, a nauka bardziej zaawansowanych może spowodować zdezorientowanie.

Miej na uwadze, że komenda \renewcommand może być użyta tylko po \begin{document}. Dotyczy to zarówno list enumerated oraz itemized.

Często powtarzanym błędem są spacje w nieodpowiednich miejscach. Miej to na uwadze!

Przerwy między akapitami

[edytuj]

Jak być może zauważyłeś, standardowe klasy LaTeXa wprowadzają pionową przerwę między kolejnymi elementami listy. Czasami może to wyglądać dziwnie, jeśli opisy są za krótkie. Poniżej przedstawiono sposoby usunięcia tego zachowania.

Użycie pakietów

[edytuj]

Jeśli chcesz aby Twoje listy były ciasno upakowane, należy użyć pakietu mdwlist, w którym używa się rodzajów numeracji oznaczonych gwiazdką (np.itemize*, enumerate* i description*. Działają one w taki sam sposób jak opisane w części powyżej, jednak wygląd listy jest bardziej skondensowany. Inne pakiety zapewniający podobne wyniki to paralist oraz enumitem.

Alternatywnie można użyć kalsę dokumentu memoir wraz z komendą \tightlists.

Dostosowanie ręczne

[edytuj]

Wewnątrz list można redefiniować niektóre długości/wymiary zmiennych. Dla przykładu:

\begin{itemize} \itemsep1pt \parskip0pt \parsep0pt
  \item first item
  \item second item
\end{itemize}

Alternatywnie, aby utworzyć jeden styl dla całego dokumentu, można zdefiniować na nowo całe środowisko enumerate:

\newenvironment{my_enumerate}{
  \begin{enumerate}
  \setlength{\itemsep}{1pt}
  \setlength{\parskip}{0pt}
  \setlength{\parsep}{0pt}
}{
  \end{enumerate}
}

Innym sposobem jest nowe zdefiniowanie komendy \item.

\newlength{\wideitemsep}
\setlength{\wideitemsep}{.5\itemsep}
\addtolength{\wideitemsep}{-7pt}
\let\olditem\item
\renewcommand{\item}{\setlength{\itemsep}{\wideitemsep}\olditem}

Dostosowanie list numerowanych

[edytuj]

Użycie pakietów

[edytuj]

Najczęściej zmianom w listach podlegają liczniki. Szybkie zmiany liczników można osiągnąć przez użycie pakietu enumerate lub enumitem. Przy użyciu pierwszego z nich można zmienić styl numeracji w następujący sposób:

\begin{enumerate}[styl]

Opcje A, a, I, i oraz 1 definiują jednoznacznie sposób punktowania.

Dostosowanie ręczne

[edytuj]

Aby mieć możliwość większej ingerencji w listy należy posiadac podstawową wiedzę na temat liczników w LaTeX. Więcej na ten temat przeczytasz w rozdziale Liczniki.

Są cztery podstawowe liczniki związane z listami. Każdy z nich reprezentuje cztery poziomy zagnieżdżenia, które nazywają się:

enumi
enumii
enumiii
enumiv

Licznik jest zwiększany przez komendę \item zanim zostanie wydrukowana. Dla przykładu, w celu zmienienia numeru licznikaenumi należy użyć:

\begin{enumerate}
  \setcounter{enumi}{4}
  \item Punkt piąty
\end{enumerate}
5. Punkt piąty

Komendy odpowiadające za zmiany na różnych poziomach zagnieżdżenia:

\labelenumi
\labelenumii
\labelenumiii
\labelenumiv

Przykład:

\renewcommand{\labelenumi}{(\Roman{enumi})}
\renewcommand{\labelenumii}{\Roman{enumi}.~\alph{enumii}<!---->}

Powyższy przykłąd zmienia definicję wyglądu listy, jednak nie zadziała gdy chcesz wprowadzić odnośniki. One będą drukowane w domyślnym stylu. Aby ominąć ten problem, należy użyć następującą serię komend:

\renewcommand{\theenumi}{\Roman{enumi}<!---->}
\renewcommand{\labelenumi}{(\theenumi)}
\renewcommand{\theenumii}{\alph{enumii}<!---->}
\renewcommand{\labelenumii}{\theenumi.~\theenumii<!---->}

Dostosowanie list wypunktowanych

[edytuj]

Wypunktowania nie są tak złożone jak listy numerowane. Jednak, aby je dostosować do własnych preferencji należy zmienić ich etykiety. Można to zrobić ręcznie dla każdego wpisu poprzez \item[nowy symbol] (np. \item[$\star$].

Etykiety kolejnych poziomów wypunktowania są dostępne pod komendami \labelitemi, \labelitemii, \labelitemiii oraz \labelitemiv.

\renewcommand{\labelitemi}{\textgreater}

Powyższy przykład powinien zmienić etykiety pierwszego poziomu na większe. Oczywiście symbole dostępne w LaTeX nie są bardzo rozbudowane. Aby urozmaicić dokument można użyć symbole ZapfDingbat, opisane w rozdziale Znaki specjalne Można także zastosować jeden z symboli matematycznych:

\renewcommand{\labelitemi}{$\star$}

Aby zmniejszyć wolną przestrzeń między kolejnymi wypunktowaniami należy posłużyć się komendami opisanymi poniżej.

\begin{itemize}
  \setlength{\itemsep}{0cm}%
  \setlength{\parskip}{0cm}%
  \item Item opening the list
  \item Item tightly following
\end{itemize}

Listy jedno liniowe

[edytuj]

Listy jedno liniowe są specjalnym przypadkiem list. Wymagają użycia pakietu paralist, który zapewnia nowy typ listy - inparaenum. Parametry podaje się w nawiasach kwadratowych,tak jak to pokazano w przykładzie poniżej.

\usepackage{paralist}
% ...
\begin{document}

\textbf{\itshape Inline lists}, which are
sequential in nature, just like enumerated
lists, but are
\begin{inparaenum}[\itshape a\upshape)]
\item formatted within their paragraph;
\item usually labelled with letters; and 
\item usually have the final item prefixed with
`and' or `or',
\end{inparaenum} like this example.

Aby zmienić styl numerowania (duże czy małe litery; liczby rzymskie czy arabskie) należy podać dodatkowy argument określający styl. Przykład przedstawiono poniżej.

\begin{inparaenum}[(styl)]

Zamiast słowa styl należy wstawić odpowiednią komendę (z wymienionych w poniższej tabeli).

Kod Efekt
\Alph A, B, C
\alph a, b, c
\Roman I, II, III
\roman i, ii, iii
\Arabic 1, 2, 3

Inne pakiety pozwalające na wstawianie tego typu list to: \shortlst oraz \enumitem

Pakiet easylist

[edytuj]

Pakiet easylist pozwala na tworzenie list przy użyciu wygodniejszej składni oraz umożliwia tworzenie nieskończenie wielu poziomów. Jest także łatwe w dostosowywaniu do własnych potrzeb.

Na początek należy załadować w preambule pakiet:

\usepackage[ampersand]{easylist}

Domyślny styl listy to numerowanie.

\begin{easylist}
& Punkt główny~:
&& Podpunkt.
&& Kolejny podpunkt.
\end{easylist}

Można także mienić styl na wypunktowanie:

\begin{easylist}[itemize]
% ...
\end{easylist}

Dostępne style:

  • tractatus
  • checklist
  • booktoc
  • articletoc
  • enumerate
  • itemize

Możesz dostosować swoją listę przy użyciu komendy \ListProperties(...).

\begin{easylist}[enumerate]
\ListProperties(Style2*=,Numbers=a,Numbers1=R,FinalMark={)})
& Main item~:
&& Sub item.
&& Another sub item.
\end{easylist}

Zauważ, że jako ostatni znak listy numerowane podany został nawias (wpisany pomiędzy nawiasy klamrowe). Aby uniknąć rozumienia przez LaTeX tego znaku jako zakończenia wpisywania ustawień można posłużyć się poniższym kodem.

\usepackage{amssymb}
\ListProperties(Hide=100, Hang=true, Progressive=3ex, Style*=-- ,
Style2*=$\bullet$ ,Style3*=$\circ$ ,Style4*=\tiny$\blacksquare$ )
% ...

\begin{easylist}
& Blah
& Blah
&& Blah
&&& Blah
&&&& Blah
&&&&& Blah
\end{easylist}
– Blah
– Blah

  Blah
   Blah
    Blah
     – Blah

Możesz także zdefiniować własny styl używając marka:

\newcommand\myitemize{\ListProperties(Hide=100, Hang=true, Progressive=3ex, Style*=$\star$ )}
\newcommand\myenumerate{\ListProperties(Space=2\baselineskip)}

% ...
\begin{easylist} \myitemize
& Blah
\end{easylist}

Pakiet easylist posiada także wady. Podczas używania pakietu wewnątrz środowiska, które używa takie same sekwencje może spowodować błąd. Aby uniknąć tego użyj poniższych komend:

\Activate
\begin{easylist}
& ...
\end{easylist}
\Deactivate

Poza tym, używanie pakietu wraz ze środowiskiem figure może spowodować kłopoty z wyglądem strony. Standardowe listy LaTeXa nie mają takiego problemu.

Obecnie pakiet easylist nie działą w klsie Beamer.

Przypisy