Hlavní navigace

Jak na LaTeX: rejstřík balíkem index

26. 6. 2003
Doba čtení: 6 minut

Sdílet

Do rozsáhlejších technických dokumentací je vhodné připravit rejstřík. V dnešním dílu si ukážeme, jak takový rejstřík začít vytvářet.

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

Tabulka č. 441
! 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 pros­tředí ind.dvi.gz . Na příkladech převzatých z této dokumentace si můžeme ukázat použití příkazu

\index:

zakladni uziti prikazu 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.

dvouurovnovy rejstrik


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.

triurovnovy rejstrik


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.

rozsah platnosti položky


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‘).

pouziti odkazu 'see'


pouziti odkazu 'viz'


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.

prejmenovani pojmu


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}}.

prejmenovani pojmu - matematika


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ě:

root_podpora

\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.

Byl pro vás článek přínosný?