6.4. Čítače a číslování

Jak již víme, LaTeX automaticky čísluje některé konstrukce (section, page). Překladač totiž pro tyto prvky používá tzv. čítače, které se automaticky zvyšují s každým použitým prvkem daného typu. Standardně existuje několik předdefinovaných čítačů: part, chapter, section, subsection, subsubsection, paragraph, subparagraph, page, equation, figure, table, footnote, enumi, enumii, enumiii, enumiv a další.

Může se stát, že v textu potřebujeme hodnotu čítače změnit na konkrétní hodnotu. Lze to snadno provést příkazem \setcounter{čítač}{hodnota}. Tím nastavíme čítač na konkrétní hodnotu, při dalším použití předdefinovaných čítačů se budou pak automaticky doplňovat hodnoty, které po ní následují.

ikona
Příklad 6.1: Nastavení čísla stránky na hodnotu 10
\setcounter{page}{10}

Další možností změny čítače je přičtení čísla k současné hodnotě čítače konstrukcí \addtocounter{page}{2}, která v tomto případě zvýší hodnotu aktuálního čítače o 2.

Chceme-li vytvořit čítač vlastní, není to žádný problém. Vlastní čítače zpravidla v běžém dokumentu vytvářet ale nepotřebujeme, využijeme je spíše když definujeme vlastní styly. Čítač lze vytvořit příkazem \newcounter{jmeno}. Počítadlo začíná na hodnotě 0. Hodnotu čítače vypíšeme příkazem \thejmeno. Kde jmeno je název čítače. Můžeme takto získat třeba číslo kapitoly nebo strany (\thechapter, \thepage).

Nový čítač také může být závislý na nějakém jiném, nadřazeném čítači. Ten určíme volitelným parametrem příkazu \newcounter. Nadřízený čítač musí být v okamžiku definice známý, může se jednat třeba o číslo stránky, nebo sekce. Jestliže se pak změní hodnota nadřízeného čitače, čítač závislý se vynuluje.

ikona
Výpis kódu 6.1: Vytvoření čítače závislého na čísle sekce
\newcounter{jmeno}[section]

Hodnotu čítače zvýšíme o jedničku příkazem \stepcounter{jmeno} nebo \refstepcounter{jmeno}. Druhý uvedený navíc definuje hodnotu, kterou lze snímat pomocí návěští (příkaz \label a získávat příkazem \ref (viz kapitola 6.7 – „Křížové odkazy, citace a balík hyperref“. Příkazem \value lze použít hodnotu čítače na místě, kde LaTeX očekává číslo (v nějakém jiném LaTeX příkazu).

Čítače se mohou zobrazovat v různých podobách. Pro změnu podoby čítače lze použít modifikační příkazy:

\arabic{jmeno}

arabské číslice

\roman{jmeno}

malé římské číslice

\Roman{jmeno}

velké římské číslice

\alph{jmeno}

malé písmeno s pořadovým číslem čítače (dle abecedy)

\Alph{jmeno}

velké písmeno

Tyto různé podoby se používají pomocí předefinování příkazu \thejmeno.

ikona
\renewcommand{\thecitac}{\roman{citac}} % vlastni citac bude rimskymi cislicemi
\renewcommand{\thesection}{\Alph{section}} % sekce dokumentu budou oznacovany pismeny

Následující příklad demonstruje využití čítačů pro změnu prostředí enumerate, tak aby automaticky používal číslování systémem 1., 2., … 1.1., 1.2., … 1.1.1., 1.1.2. … místo standardního 1., 2., … (a), (b), … i, ii. ….

ikona
Příklad 6.2: Předefinování číslovaného seznamu
\renewcommand\labelenumi{\arabic{enumi}.}
\renewcommand\labelenumii{\arabic{enumi}.\arabic{enumii}.}
\renewcommand\labelenumiii{\arabic{enumi}.\arabic{enumii}.\arabic{enumiii}.}

Vhodným způsobem použití čítače je nadefinování vlastního příkazu, který jej vypíše a zároveň i zvýši.

ikona
Výpis kódu 6.2: Vytvoření příkazu \pocitadlo\newcounter{citac}[section]
\renewcommand{\thecitac}{\thesection.\arabic{citac}}
\newcommand{\pocitadlo}{\refstepcounter{citac} {\thecitac}}

Tento nový příkaz počítadlo je závislý na sekci a čísluje vždy systémem sekce.číslo.