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

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.