Spisy
Author: Włodzimierz Macewicz
Keywords: tex,latex, spisy, Wirtualna Akademia

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