Spis treści

Spisy w LaTeX-u

Wstawianie pozycji na listę
Budowa spisu

Spisy w LaTeXu

Niewątpliwie każda, dłuższa publikacja powinna zawierać listę występujących w niej obiektów; takich jak: rozdziały, podrozdziały, tablice, rysunki i inne. Zestawienie takie pomaga zorientować się w budowie logicznej i strukturze dokumentu. Często jest to pierwszy czytany fragment, na podstawie którego decydujemy o dalszej lekturze. Służy nam ono za przewodnik po książce. Wykorzystując okazję chciałbym zaapelowac do autorów i wydawców o umieszczanie takich zestawień na początku, a nie na końcu publikacji, szczególnie o charakterze podręcznikowym, czytanym i przeglądanym wyrywkowo.

W LaTeX-u zostały, standardowo, zdefiniowane trzy spisy: spis treści (\tableofcontents), spis rysunków (\listoffigures) oraz spis tabel (\listoftables). Wywołanie określonego polecenia spowoduje umieszczenie w tym miejscu odpowiedniego spisu.

Proces tworzenia spisu jest dwuetapowy; w czasie pierwszego przetwarzania tworzone są odpowiednie zbióry pomocnicze (osobne dla każdego ze spisów), zawierający polecenia opisujące spis; w drugim przebiegu zbiory te są dołączane do zbioru podstawowego (tworzony jest również nowy zbiór pomocniczy). Za nazwy list odpowiadają następujące makroinstrukcje:
\tableofcontenst \listoffigures \listoftables
\listcontentsname \listfigurename \listtablename

Nagłówki są definiownane przy pomocy poleceń \section*{nazwa } dla artykułu i \chapter*{nazwa } dla książki i raportu.

Wstawianie pozycji na listę

Pozycja do spisu jest wstawiana przy pomocy polecenia:

\addcontentsline{zbiór }{typ }{tekst }
lub
\addtocontents{zbiór }{tekst }
gdzie:
zbiór
określa rozszerzenie nazwy zbioru, otwieranego poleceniem wstawienia spisu (.toc -- spis treści, .lof -- spis rysunków, .lot -- spis tabel)
typ
w przypadku spisu treści typ odpowiada nazwie poziomu (chapter, section ...), a ściśle nazwie polecenia \l@typ (np. \l@section), w przypadku spisu tabel -- \l@table i spisu rysunków -- \l@figure
strona
numer strony na której wystąpił obiekt
Polecenie \addtocontents służy do wstawienia dodatkowych informacji do spisu np. poleceń wstawiających dodatkowy odstęp pionowy
\addtocontents{toc}{\protect\vspace{2ex}}
Dodatkowo została zdefiniowana makroinstrukcja \numberline służąca do przekazania numeru (identyfikatora) obiektu; np. numer rozdziału.

Przykładowe polecenie wstawiające pozycję do spisu treści wygląda następująco:

\addcontentsline{toc}{section}{\protect\numberline{\thesection}Structure of 
the Table Contents}
Polecenie to jest używane automatycznie przez makroinstrukcje definiujące nagłówki (rozdział, podrozdział ...) w wersji ,,bezgwiazdkowej'' oraz polecenie \caption użyte w środowiskach table i figure.

Budowa spisu

Wyżej opisane polecenia powodują umieszczenie w zbiorze dodatkowym polecenia
\contentsline{typ }{tekst }{strona }
gdzie:
typ
określa typ (chapter, section ... figure, table) -- nazwę polecenia \l@typ, które jest tak naprawdę wywoływane
tekst
treść tytułu
strona
numer strony
dalsze parametry polecenia \contentsline są przekazywane do polecenia \l@.... Poleceniami odpowiedzialnymi za wygląd odpowiednich pozycji w spisie są:
l@part
l@chapter
l@section
l@subsection
l@subsubsection
l@paragraph
l@subparagraph
l@figure
l@table
Sposób prezentacji jest standardowo definiowany przy pomocy jednej -- sparametryzowanej makroinstrukcji:
\@dottedtocline{poziom }{wcięcie }{pole numeru }{tekst }{strona }
gdzie:
poziom
parametr decyduje czy pozycja znajdzie się w spisie treści, stanie sie tak, jeżeli jest on mniejszy od wartości parametru \tocdepth
wcięcie
szerokość całkowita lewego marginesu
pole numeru
szerokość pola numeru, druga i następne linie tytułu będą wcięte o wcięcie +pole numeru 
tekst
strona
parametry przekazane z makroinstrukcji \l@...
Dodatkowo wygląd pozycji spisu zależy od makroinstukcji:
\@pnumwidth szerokość pola przeznaczonego na numer strony
\@tocrmarg szerokość prawego marginesu (nie obejmuje pola numeru strony)
\@dotsep odległość między dwoma kropkami (w jednostkach mu1)
Powyższe polecenia są definiowane jako:
\makeatletter
\newcommand{\@pnumwidth}{1.55em}
\newcommand{\@tocrmarg}{2.55em}
\newcommand{\@dotsep}{4.5}
\makeatother

Znaczenie parametrów na postać spisu


\contentsline {section}{\numberline {1.1}To jest przykładowy tytuł
podrozdziału dla raportu}{1}
gdzie makroinstrukcja \l@section jest zdefiniowana jako:
\makeatletter
\newcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
\makeatother
oczywiście nie każde polecenie \l@... musi być zdefiniowane przy pomocy polecenie \@dottedtocline, w szczególności jest tak w przypadku \l@chapter


1 18 mu = 1 em -- \fontdimen2 dla fontu symbols
Włodzimierz Macewicz