Jak vytvářet odkazy

[  Odkazovací značky  |  Jednoduché odkazy  |  Vlastní formát odkazů  |  Čítače |  Vlastní čítače ]

V textu, který má být na papíře, nelze používat hypertextové odkazy, proto se odkazuje stylem "(viz kap. 3)" nebo "(blíže na obrázku 4. na str. 255)". Psát tato čísla kapitol nebo stránek ručně není dobrý nápad, protože takový dokument se potom špatně opravuje. Může se stát, že kousek textu dopíšete a odkazovaný údaj se přesune na další stránku. Ruční opravování by bylo velmi pracné a nespolehlivé, proto LaTeX nabízí možnost propočítávat odkazy automaticky.

Odkazovací značky

Aby se bylo na co odkazovat, musíme nejprve na vhodná místa v dokumentu vložit pojmenované značky. Používá se k tomu příkaz \label:

\section{Závěr} \label{sec:end}
Programování této úlohy se mi velmi líbilo...

Tento příkaz lze použít v téměř libovolném místě dokumentu. Jde pouze o značku pro potřeby LaTeXu, a v sázeném textu použití tohoto příkazu nijak neprojeví. Jejím parametrem je libovolný text, který dále slouží pro vlastní odkazování. Je dobré si zvyknout vytvářet jména značek strukturovaně. Osobně používám předpony sec: pro označení sekcí, fig: pro označení obrázků, tab: pro tabulky, a podobně pro ostatní odkazovatelné objekty. Tento způsob označování odkazů ulehčuje práci v některých chytrých editorech (např. Kile), které umí v pravou chvíli nabídnout seznam všech vytvořených značek v menu.

Jednoduché odkazy

Existují dva základní údaje, které lze zobrazit jako odkaz - číslo svázané s některým z čítačů (čítače kapitol, obrázků, tabulek, ...) nebo číslo stránky. Hodnota příslušného čítače se zobrazuje pomocí příkazu \ref. Zobrazení čísla stránky, na které se nachází odkazovaná značka, se provádí příkazem \pageref.

Další údaje budou popsány v sekci \ref{sec:end}
na straně \pageref{sec:end}.

Vlastní formát odkazů

Někdy je dobré mít v dokumentu určité typy odkazů ve stejném tvaru. Občas mi příjde jako dobrý nápad mít u každého odkazu na obrázek i údaj o tom, na které stránce se nachází. Vytvořil jsem si proto nový příkaz:

\newcommand{\obrazek}[1]{(viz obr. \ref{#1}/s\pageref{#1})}

Tento příkaz se používá naprosto stejně jako příkaz \ref.

Trojúhelník se součtem úhlů větším než 180° lze 
nakreslit například na sférické ploše \obrazek{sec:end}.

Čítače

V LaTeXových dokumentech jsou standardně používány tyto čítače:

part paragraph figure enumi
chapter subparagraph table enumii
section page footnote enumiii
subsection equation mpfootnote enumiv
subsubsection 

Názvy čítačů většinou odpovídají názvům jednotlivých číslovaných prostředí, pouze se nepíší s počátečním lomítkem. Pro práci s čítači existuje několik příkazů, které se hodí spíše pro definici nových příkazů.

V některých dokumentech se občas hodí některý z čítačů vynulovat. Například pokud chci začít s číslováním stránek od první kapitoly, dělám to takto:

\setcounter{page}{1}   % nastaví čítač stránek znovu od jedné
\pagenumbering{arabic} % číslování arabskými číslicemi

Blíže viz kapitolu o číslování stránek. Podobně může mít občas smysl číslovat obrázky či tabulky od jedničky v rámci každé kapitoly.

Vlastní čítače

Občas se stane, že příkazy a prostředí, které jsou standardně v LaTeXu k dispozici nestačí a musíme si definovat vlastní pomocí příkazů \newcommand a \newenvironment. Často tyto nové příkazy a prostředí potřebujeme číslovat jako např. nový typ nadpisu, vlastní výčet, číslované prostředí ve stylu theorem, atd. Pro tyto příležitosti se hodí vědět, jak vytvořit vlastní čítač a jak donutit LaTeX, aby jej vypisoval, podle našich požadavků.

Nový čítač se vytvoří pomocí příkazu \newcounter{jméno}[čítač]. Jméno nového čítače musí být unikátní, to znamená, že se nesmí krýt s jiným čítačem nebo příkazem. Druhý nepovinný parametr určuje, kdy dojde k resetování našeho čítače. Dojde k tomu vždy, když dojde ke změně tohoto čítače. Pokud zde uvedeme například section, potom se náš nový čítač resetuje v každé nové sekci. Čítač je po vytvoření vždy resetován na hodnotu 1. To lze změnit pomocí příkazu \setcounter{čítač}{hodnota}.

LaTeX pro každý čítač automaticky vytváří příkaz, pomocí kterého tiskne jeho hodnotu. Tento příkaz má vždy tvar \thejméno_čítače, přičemž za jméno_čítače můžeme dosadit náš nový čítač nebo standardní čítače vyjmenované výše. Pokud chceme změnit způsob vypisování našeho čítače, musíme tento příkaz změnit pomocí renewcommand. Pro změnu stylu tisku čítače můžeme využít jeden z pěti příkazů \alph{čítač}, \Alph{čítač}, \arabic{čítač}, \roman{čítač} a \Roman{čítač}, které tisknou čítač buď jako malé písmeno (a, b, c, ...), velké písmeno (A, B, C, ...), arabskou číslici (1, 2, 3, ...), římskou číslici malými písmeny (i, ii, iii, iv, ...) nebo římskou číslici velkými písmeny (I, II, III, IV, ...).

V jednom svém textu jsem potřeboval vytvořit nové prostředí pro axiomy, které budou číslovány jako M1, M2, M3, atd. Prostředí theorem se mi na to nehodilo, proto jsem si vytvořil nové prostředí takto:

\newcounter{axiomcounter}[section]
\renewcommand{\theaxiomcounter}{A\arabic{axiomcounter}}
\newtheorem{axiom}[axiomcounter]{Axiom}

Nové prostředí axiom má vlastní čítač axiomcounter, který se resetuje s každou novou sekcí. Zde je ukázka použití:

\begin{axiom}[Hraniční podmínka]\label{axiom:hranicnipodminka}
Nelze jít dále než k hranici.
\end{axiom}

\begin{axiom}[Přeshraniční podmínka]\label{axiom:preshranicni}
Dostane-li se někdo za hranici, přestává být občanem tábora míru.
\end{axiom}

Axiom \ref{axiom:hranicnipodminka} je pěkný vopruz!

Výsledek pak vypadá takto:

Axiomy

Autor: David Martinek. Poslední modifikace: 6. March 2008. Pokud v tomto dokumentu narazíte na chybu, dejte mi prosím vědět.