Rejstřík
Vytvoření rejstříku se provádí v podstatě ve dvou krocích. Napřed musíme vybrat pojmy, které v rejstříku chceme zobrazit. Potom je třeba z označených pojmů nechat rejstřík vygenerovat.
Inicializace rejstříku
Základním balíkem pro rejstřík je makeidx
, ale raději bych vám doporučil balík index
, který lze snadno také použít pro jiné seznamy než jen rejstříky. Do hlavičky dokumentu vložíme:
\usepackage{index}
Tím získáme k dispozici potřebné příkazy pro vytváření rejstříku. Ovšem ještě musíme náš rejstřík inicializovat příkazem:
\newindex{typ}{přípona_dx}{přípona_nd}{nadpis}
Hodnotu typ lze nastavit na default
pro rejstřík, k němuž chceme přistupovat častěji. Pokud chceme použít více rejstříků (např. rejstřík zkratek nebo autorský rejstřík), pak každý z nich musí mít unikátní typ
, který si můžeme libovolně zvolit. Parametr přípona_dx označuje příponu souboru, do nějž se budou ukládat záznamy pro rejstřík. Tento soubor vzniká při kompilaci dokumentu, příkaz pro vložení položky do rejstříku vytvoří v souboru s příponou přípona_dxnový záznam. Externím programem makeindex
vytvoříme soubor s příponou přípona_nd
, ten již obsahuje naformátovaný a správně sestavený rejstřík. Základní jméno pro rejstříkové soubory je odvozeno od jména souboru s kompilovaným dokumentem. Poslední položkou v příkazu je nadpis
, kterým definujeme nadpis rejstříku.
Nyní je čas ukázat si hlavičku dokumentu se třemi nezávislými rejstříky, které budeme chtít v našem dokumentu mít:
\usepackage{index} \newindex{default}{idx}{ind}{Rejstřík} \newindex{aut}{adx}{and}{Autorský rejstřík} \newindex{zkr}{zdx}{znd}{Rejstřík zkratek}
Není sice povinné mít přípony rejstříkových souborů právě takto ( *.?dx
, *.?nd
), ale je to běžné pojmenování a lze pouze vřele doporučit jeho používání.
Vložení pojmů do rejstříku
Na místě, kde se nachází text, který chceme vložit do rejstříku, použijeme příkaz
\index*[typ]{položka}
kde typ jsme si definovali v příkazu \newindex
. Do parametru položka napíšeme text, který chceme, aby se v rejstříku zobrazoval. Součástí tohoto parametru mohou být také další informace, jako je formátování čísla stránky uvedené v rejstříku za položkou. Pro rejstřík s typem default
je předdefinovaný příkaz
\index{položka}
. Pro jiné rejstříky si můžeme nadefinovat vlastní příkaz, například pro autorský index bychom chtěli používat příkaz \aindex{položka}
:
\def\aindex{\index*[aut]}
Vzhled, rozsah a formátování položky v rejstříku se ovlivňuje přímo v parametru položka těmito znaky
! | oddělovač úrovní položky, k dispozici jsou maximálně tři úrovně |
@ | oddělovač jména položky a zobrazeného textu v rejstříku |
| | oddělovač položky a formátování čísla stránky |
( | začátek rozsahu platnosti položky |
) | konec rozsahu platnosti položky |
" | escape sekvence pro možnost zobrazení výše uvedených znaků |
Toto jsou základní parametry, které použijete nejčastěji, o dalších se můžete dočíst v dokumentaci k prostředí ind.dvi.gz
. Na příkladech převzatých z této dokumentace si můžeme ukázat použití příkazu
\index
:
Všimněte si, jak je rejstřík abecedně uspořádán a že není závislý na tom, zda je položka zapsaná velkými, nebo malými znaky písma. Vytvořený rejstřík také respektuje způsob číslování stránek, na nichž se příkaz \index
nacházel.
Takto vypadá dvouúrovňový rejstřík. Jednotlivé úrovně se oddělují právě znakem vykřičníku (!), pokud definice nižší úrovně chybí (v příkladu položka ‚gnus‘), je automaticky vytvořena, ale není k ní přiřazeno žádné číslo stránky.
Tříúrovňový rejstřík je maximum toho, čeho lze dosáhnout, a je to pouze dobře, protože rejstřík s ještě více úrovněmi by se stal spíše nepřehledným a také se už velmi obtížně vytváří a špatně udržuje.
Pokud chceme do rejstříku zařadit pojem, který má platnost v rozsahu několika stránek (například část nějaké kapitoly), neuděláme to tak, že na každou stránku okopírujeme příkaz \index
, ale v příkazu uvedeme, že zde pojem začíná, pomocí přípony |(
a jeho ukončení určíme příponou |)
. Svislítko (pípa) odděluje text pojmu od části určující práci s číslem stránky, kulaté závorky pak značí začátek a konec platnosti pojmu. Pokud se pak pojem objeví na více stránkách, bude v rejstříku zapsán celý jeho rozsah. Pokud bude rozsah uplatněn pouze na jedné stránce, zobrazí se tak, jako bychom použili jednoduchý příkaz \index
(v příkladu položka ‚gnus!bad‘).
Balík index
nám připravil příkaz \see{text}
, který vytiskne správně naformátovaný odkaz s textem text. Horní příklad je přeložen v anglickém prostředí LaTeXu, pokud ale máme zapnuté české prostředí, bude to po překladu stejné kódu vypadat dle příkladu pod ním. V příkazu \index
se příkazy pro stránky (v části za svislítkem) píší bez úvodního zpětného lomítka, toto lomítko přidá automaticky program makeindex
do výstupního souboru s příponou přípona_dx. Tím je zaručeno to, že se překlad a jeho formátování provede ve chvíli, kdy to budeme potřebovat (tedy až na místě, kde budeme chtít rejstřík vytisknout) a nikoliv tam, kde jsme příkaz \index
uvedli.
Nezřídka se stane, že chceme do rejstříku zařadit pojem, který se nějak jmenuje, avšak chceme jej jinak zobrazit. K tomu nám slouží oddělovač @
(zavináč). Podle textu před zavináčem se položka abecedně zařadí do rejstříku, ale na její místo se vytiskne text uvedený za zavináčem. Proto se může zdát, že pojem ‚xx‘ není správně podle abecedy. Tato vlastnost nám umožňuje formátovat jméno pojmu v rejstříku, například pokud bychom chtěli nějakou položku zdůraznit, pak ji můžeme zapsat příkazem \index{gnu@\textbf{gnu}}
.
To samé v bledě modrém. Pro formátování zobrazení je zde použito prostředí matematiky (uvozené a zakončené znakem $
(string)). Příkaz \alpha
vytiskne místo sebe řecké písmeno alfa. Všimněte si, jak se provedlo abecední uspořádání a jak si poradil LaTeX (ve skutečnosti program makeindex
) s tím, že má dvě stejné položky (řádek 13 a 14) pro třídění, ale s různým zobrazením.
Pro formátování čísla v rejstříku slouží oddělovač |
o kterém jsme se již zmínili ve spojitosti s příkazem \see
. Za tento oddělovač lze zapsat jméno příkazu (např. command
), který program makeindex
rozvine do podoby
\command{číslo stránky}
To je vhodné, pokud chceme v rejstříku například rozlišit, že na daném místě je pojem vysvětlen (vyznačíme skloněným písmem pomocí \textit{}
) a na jiném se vztahuje například k obrázku nebo k tabulce (což můžeme vyznačit tučným písmem příkazem \textbf{}
).
\index{pojem}
\index{pojem!vysvětlení|textit}
\index{pojem!tabulka|textbf}
Ovšem daleko vhodnější je vytvořit si vlastní příkaz, kterým bychom mohli v případě potřeby ovlivnit všechny položky, pokud bychom je potřebovali změnit. Takže si vytvoříme nové příkazy:
\newcommand{\hla}[1]{\textit{#1}} % příkaz \hla{}
pro vysvětlení pojmu
\newcommand{\obr}[1]{\textbf{#1}} % příkaz \obr{}
pro pojem v obrázku
\newcommand{\tab}[1]{\textbf{#1}} % příkaz \tab{}
pro pojem v tabulce
\newcommand{\poz}[1]{#1n} % příkaz \poz{}
pro pojem v poznámce pod čarou
K příkazu \newcommand
jsme se ještě nedostali a proto lehký úvod. V prvním parametru se definuje jméno příkazu, jakým jej chceme volat. Druhým parametrem říkáme, že náš nový příkaz bude mít jeden parametr. Posledním parametrem nastavíme, co se má provést, vlastně na co se náš příkaz má rozvinout, s tím, že na pozici #1
se umístí hodnota parametru příkazu. Například tato volání se rozvinou následovně:
\hla{abcd} => \textit{abcd} \obr{1} => \textbf{1} \pic{$\alpha$} => \textbf{$\alpha$} \poz{123} => 123n
V příkazech \index
pak naše nové příkazy použijeme následně:
\index{pojem} % normální odkaz na pojem
\index{pojem|pic} % číslo stránky bude tučně (dle příkazu \pic{})
\index{pojem|(hla} % začátek rozsáhlého hlavního pojmu
\index{pojem|)hla} % konec rozsáhlého hlavního pojmu
\index{pojem|poz} % pojem v poznámce, k číslu stránky přidá 'n'
Nyní když budeme chtít obrázky tisknout neproporcionálním písmem, tak nám stačí změnit definici příkazu \pic
a dokument znova zkompilovat.
Závěr
Jak asi správně tušíte, všechny výše uvedené vymoženosti lze používat současně. To si ukážeme v příštím dílu na rozsáhlejším příkladu. A také si povíme, jak rejstřík zkompilovat a jak jej vložit do dokumentu.