Tytuły w dokumencie
Author: Włodzimierz Macewicz

Spis treści

Tytuły w dokumencie

  Użycie standardowych poleceń prezentujących tytuły
  Tytuły, a spis treści
  Tytuły, a pagina
  Numerowanie tytułów
  Definiowanie tytułu
  Przykłady

  ## Tytuły w dokumencie

  W LaTeX-u mamy do dyspozycji szereg poleceń służących do tytułowania części dokumentu na różnych poziomach hierarchii:

  dla klasy `article`
  poziom | `nazwa`
  --- | ---
  0 | `part`
  1 | `section`
  2 | `subsection`
  3 | `subsubsection`
  4 | `paragraph`
  5 | `subparagraph`
  dla klasy `report` i `book`
  poziom | nazwa
  --- | ---
  -1 | `part`
  0 | `chapter`
  1 | `section`
  2 | `subsection`
  3 | `subsubsection`
  4 | `paragraph`
  5 | `subparagraph`

  wszystkie polecenia wywołujemy w jednakowy sposób, ale polecenia `\part` i `\chapter` są definiowane inaczej niż pozostałe. Do definiowania poleceń `\section`, `\subsection`, `\subsubsection`, `\paragraph`, `\subparagraph` służy jedna uniwersalna konstrukcja (`\startsection`). Wszelkie zmiany w tej konstrukcji mają oczywiście wpływ na wygląd wszystkich definiowanych w ten sposób tytułów.

  Definicja makroinstrukcji ,,tytułowej'' przy pomocy konstrukcji `\startsection` jest sparametryzowana, tak więc w momencie jej definiowania mamy duży wpływ na jej działanie.

  ### Użycie standardowych poleceń prezentujących tytuły

  Wywołanie poleceń pokazane jest na przykładzie polecenia `\section`
  `\section{tytuł }`
    wstawienie tytułu; zostanie również zdefiniowana pagina o tej samej treści oraz tytuł zostanie wstawiony do spisu treści
  `\section[skrót ]{tytuł }`
    tytuł zostanie umieszczony w tekście, a skrót określi treść paginy i zawartość spisu treści1,
  `\section*{tytuł }`
    tytuł zostanie umieszczony w tekście. Nie zostanie zdefiniowana nowa pagina, i tytuł nie zostanie wprowadzony do spisu treści.
  Konstrukcja makropoleceń gwarantuje, aby tekst następujący po tytule nie znalazł sie na następnej stronie (będzie on zawsze do niego ,,przyklejony''), nie może również nastąpić przełamanie strony wewnątrz tytułu.

  ## Tytuły, a spis treści

  O tym czy tytuł znajdzie się w spisie treści decyduje parametr

      tocdepth

  Wszystkie tytuły o numerze poziomu mniejszym lub równym `tocdepth` (stojące wyżej w hierarchii) będą wprowadzane do spisu treści (oczywiście o tym czy spis treści będzie dołączony do dokumentu decyduje inny parametr p. budowa zestawień) Wartość parametru `tocdepth` możemy zmienić w następujący sposób:

      \setcounter{tocdepth }{3 }

  ## Tytuły, a pagina

  W przypadku klasy `article` polecenia `\section` i `\subsection` definiują również paginę odpowienio: `\section` na stronie lewej (parzystej), kasując paginę na stronie prawej i `\subsection` na stronie prawej (nieparzystej). W przypadku klas `report` i `book` polecenie `\chapter` definiuje paginę na stronie lewej (parzystej), kasując paginę na stronie prawej, a `\section` na prawej (nieparzystej). Pagina na stronie lewej jest definiowana przez pierwsze wystąpienie odpowiedniego tytułu na stronie (lub wynika ona tytuu wcześniejszego), natomiast pagina na stronie prawej -- przez ostatnie wystąpienie odpowiedniego tytułu.

  Definiowanie paginy odbywa się przez wywołanie wewnątrz makroinstrukcji:

  `\chaptermark{tytuł }`
  `\sectionmark{tytuł }`
  `\subsectionmark{tytuł }`
  zmieniając definicję tych makropoleceń możemy mieć wpływ na postać paginy (o zasadach tworzenia paginy, nagłówka i stopki możesz przeczyta? w artykule o paginie).

  ### Numerowanie tytułów

  Zwykle tytuły w tekście są numerowane. Standardowo numer danego poziomu zawiera w sobie numer wyższego poziomu.

  O tym czy tytuł będzie opatrzony numerem decyduje jego poziom oraz wartość parametru:

      secnumdepth

  Wszystkie tytuły o numerze poziomu mniejszym lub równym (stojące wyżej w hierarchii) będą opatrzone numerem. Wartość parametru `secnumdepth` możemy zmienić w następujący sposób:

      \setcounter{secnumdepth }{3 }

  Każdemu poziomowi odpowiada licznik numerujący kolejne wystąpienia tytułów. Są one zdefiniowane tak, że zmiana numeru na wyższym poziomie inicjuje wszystkie liczniki niższych poziomów.

  Uwaga:
  Polecenie `\part` nie powoduje inicjowania liczników podrzędnych. Polecenia `\part` i `\chapter` są definiowane inaczej niż wszystkie pozostałe tytuły.

  Numery tytułów są prezentowane za pomocą następujących makroinstrukcji:

      \thepart
      \thechapter
      \thesection
      \thesubsection
      \thesubsubsection
      \theparagraph
      \thesubparagraph

  Np. polecenie:

      \renewcommand\thesection{\thechapter.\@arabic\c@section }

  definiuje makroinstrukcję `\thesection` jako złożenie:
  polecenia `\thechapter.` i prezentacji licznika podrozdziałów (section) jako liczby w notacji arabskiej2.

  Tak zdefiniowany numer jest wprowadzany do spisu treści, paginy i jako wartość ew. etykiety zaznaczającej tytuł (pojawi się w odwołaniu zamiast `\ref{etykieta }`).

  W poleceniach tych określamy jedynie z czego ma się składać numer oraz w jaki sposób ma być prezentowana wartość licznika.

  W LaTeX2e przewidziano możliwość zmiany wyglądu numeru (inna czcionka, kropka po numerze, efekty dodatkowe); wewnątrz konstrukcji definiującej wywoływana jest makroinstrukcja `\@seccntformat`, której parametrem jest nazwa tytułu (`section`, `subsection` ...):

  Standardowo jej definicja wygląda następująco:

      \makeatletter
      \renewcommand{\@seccntformat }[1]{\csname the#1\endcsname\quad }
      \makeatother

  wstawia ona dodatkowe światło między numerem, a samym tytułem (`\quad`).

  Przykład:

      \renewcommand{\thesection }{\fbox{\thechapter.\arabic{section }}}
      \section{Definicja błędna }\label{blad }

      Powołanie się na numer podrozdziału~\ref{blad }, daje właśnie taki efekt.

      \makeatletter
      \renewcommand{\@seccntformat }[1]{\fbox{\csname the#1\endcsname }\quad}
      \makeatother

      \section{Definicja poprawna }\label{dobrze }

      W tym przypadku powołanie się na podrozdział~\ref{dobrze } daje
      poprawny efekt.

  Polecenie `\@seccntformat` ma wpływ na prezentację numeru tytułów poleceń: `\section`, `\subsection`, `\subsubsection`, `\paragraph` i `\subparagraph`.

  Przy pomocy tej makroinstrukcji możemy zaspokoić wymagania polskich wydawców, czyli umieścić kropkę po ostatniej cyfrze numeru; poniższa konstrukcja załatwia ten problem.

      \makeatletter
      \renewcommand{\@seccntformat }[1]{\fbox{\csname the#1\endcsname }.\quad }
      \makeatother

  ### Definiowane tytułu

  Makropolecenia prezentujące tytuły: `\section`, `\subsection`, `\subsubsection`, `\paragraph` i `\subparagraph` są definiowane poleceniem

       \@startsection{nazwa }{poziom }{wcięcie }{odległość przed }{odległość po }{jak prezentować }

  nazwa
    nazwa polecenia np: `section` (nie może to być `part` ani `chapter`)
  poziom
    określa poziom tytułu; jest porównywany z parametrami `\secnumdepth` i `\tocdepth` -- wpływa na umieszczenie w spisie treści i numerowanie tytułów
  wcięcie
    określa odległość pierwszego znaku tytułu od lewego marginesu, jeżeli jest to wartość ujemna tytuł zacznie się na lewo od normalnej granicy tekstu (marginesu), następne linie tytułu będą zaczynały się od lewego marginesu
  odległość przed
    określa odległość przed tytułem; może mieć zdefiniowany skurcz (shrink) i rozciąg (strech). Jeżeli wartość parametru jest ujemna to brana jest wartość bezwzględna, ale pierwszy akapit po tytule nie będzie wcięty (zacznie się od lewego marginesu). Jest to standardowy sposób definiowania -- właściwy dla publikacji anglojęzycznych. Jeżeli wartość jest dodatnia to pierwszy akapit po tytule będzie wcięty na odległość `\parindent`.
  odległość po
    określa odległość do najbliższego akapitu po tytule; jeżeli wartość jest ujemna to tekst po tytule traktowany jest jako dalszy ciąg akapitu zawierającego tytuł, a wartość bezwzględna parametru określa odległość w poziomie między końcem tytułu, a dalszą częścią tekstu, powodując jednocześnie, że tekst tytułu nie będzie łamany z dodatkowym lewym marginesem uwzględniającym naturalną szerokość numeru tytułu (tak naprawdę szerokość obiektu określonego poleceniem `\@seccntformat`).
  jak prezentować
    zestaw poleceń zmieniających krój pisma, wielkość czcionki sposób formatowania itp.
    np.

        \normalfont\Large\sffamily\bfseries\itshape

  ### Przykłady

  1. tytuł centrowany
  2. tytuł dosunięty do lewego marginesu
  3. tytuł dosunięty do lewego marginesu bez efektu ,,etykiety''
  4. tytuł dosunięty do prawego marginesu
  5. tytuł z numerem na lewym marginesie

  1 Z taką strategią można by polemizować, moim zdaniem do spisu treści powinno być wstawione pełne brzmienie tytułu. Natomiast tekst zawarty w nawiasach `[]`, jeżeli wystąpi, powinien definiować paginę -- często zdarza się, że tytuł w pełnym brzmieniu jest zbyt długi.

  2 polecenie `\@arabic` jest poleceniem niższej warstwy i operuje na TeX-owej nazwie licznika; polecenie LaTeX2e `\newcounter{licznik }` definiuje TeX-ową nazwę licznika jako `\c@licznik`

  Włodzimierz Macewicz