Sari la conținut

LaTeX (carte)/Indexare

De la Wikimanuale, o colecţie de manuale libere !


O trăsătură utilă în multe cărți, indexul este o listă alfabetică de cuvinte și expresii cu numerele paginilor din carte unde se găsesc. LaTeX suportă crearea de indici cu ajutorul pachetului makeidx și programul makeindex, denumit în unele sisteme makeidx.

Utilizarea makeidx

[modificare]

Pentru a activa indexarea în LaTeX, trebuie mai întâi să încărcați pachetul makeidx în preambul:

\usepackage{makeidx}

și să activați comenzile speciale de indexare punând comanda

\makeindex

în preambulul fișierului de intrare. Aceste lucruri trebuie făcute în preambul, întrucât în felul acesta permit sistemului LaTeX să creeze fișierele necesare pentru indexare. Pentru a spune LaTeX ce să indexeze, utilizați comanda

\index{cheie}

unde cheie este intrarea din index, care nu apare în documentul final. Introduceți comenzile de indexare în locul din text către care vreți să se facă trimitere în index, identificat prin cheie. Spre exemplu, textul

Pentru a rezolva diverse probleme în fizică, poate fi indicat să exprimați orice funcție arbitrară continuă pe porțiuni ca o serie Fourier compusă din funcții multiple sinus și cosinus.

poate fi rescris sub forma

Pentru a rezolva diverse probleme în fizică, poate fi indicat să exprimați orice funcție arbitrară continuă pe porțiuni ca o serie Fourier\index{serie Fourier} compusă din funcții multiple sinus și cosinus.

pentru a crea o intrare numită 'serie Fourier' cu o referință la pagina țintă. Mai multe utilizări ale comenzii \index cu aceeași cheie pe pagini diferite vor adăuga aceste pagini țintă la aceeași intrare în index.

Pentru a afișa indexul în document, folosiți comanda

\printindex

Se obișnuiește ca aceasta să se plaseze la sfârșitul documentului. Formatul implicit al indexului este cu două coloane.

Pachetul showidx care face parte din sistemul LaTeX afișează toate intrările din index în partea stângă a textului. Acest lucru este foarte util pentru corectarea unui document și verificarea indexului.

Compilarea indexului

[modificare]

Când fișierul de intrare este procesat de LaTeX, fiecare comandă \index scrie o intrare corespunzătoare în index, împreună cu numărul paginii curente, într-un fișier special. Fișierul are același nume ca și fișierul de intrare LaTeX, însă cu altă extensie (.idx). Acest fișier .idx poate fi apoi procesat cu programul makeindex. Scrieți în linia de comandă:

makeindex nume_fișier

Notați că nume_fișier se scrie fără extensie: programul va căuta fișierul nume_fișier.idx. Puteți pasa direct fișierul nume_fișier.idx programului ca argument. Programul makeindex generează un index sortat cu același nume de bază, însă de data aceasta cu extensia .ind. Dacă fișierul de intrare LaTeX este procesat din nou, acest index sortat este inclus în document în punctul unde LaTeX întâlnește comanda \printindex.

Indexul creat de LaTeX cu opțiunile implicite poate să nu arate așa cum doriți. Puteți personaliza aspectul indexului cu un set de fișiere de stil ce însoțesc programul makeindex, aflate de obicei undeva în structura de directoare a sistemului TeX, în general în subdirectorul makeindex. Pentru a transmite makeindex să folosească un anumit fișier de stil, rulați programul cu opțiunea:

 makeindex -s <fișier de stil> nume_fișier

Dacă folosiți un program cu grafică pentru a compila fișierele sursă LaTeX și cu indexul, s-ar putea să trebuiască să setați opțiunile acestuia. Iată câteva sfaturi legate de configurație pentru programele tipice:

Setările MakeIndex în WinEdit

[modificare]

Să zicem că vreți să adaugați un fișier de stil pentru index numit simplu_idx.ist

  • Texify/PDFTexify: Options→Execution Modes→Accessories→PDFTeXify, adăugați la Switches: --mkidx-option="-s simplu_idx.ist"
  • Doar MakeIndex: Options->Execution Modes→Accessories→MakeIndex, adăugați în linia de comandă: -s simplu_idx.ist

Indexare complexă

[modificare]

Iată câteva exemple de intrări \index:

Exemplu Intrare în index Comentariu
\index{Salut} Salut, 1 Intrare simplă
\index{Salut!Petre}   Petre, 3 Subelement al intrării 'Salut'
\index{Sam@\textsl{Sam}} Sam, 2 Intrare formatată
\index{Lin@\textbf{Lin}} Lin, 7 La fel ca mai sus
\index{Jenny|textbf} Jenny, 3 Număr formatat al paginii
\index{Joe|textit} Joe, 5 Tot ca mai sus
\index{ecole@\'ecole} école, 4 Accente
\index{Petre|see{Salut}} Petre, see Salut Trimiteri
\index{Jen|seealso{Jenny}} Jen, see also Jenny Ca mai sus

Subelemente ale intrărilor

[modificare]

Dacă o anumită intrare are subsecțiuni, acestea pot fi marcate cu !. Spre exemplu,

\index{codificări!input!cp850}

creează o intrare în index, unde 'cp850' face parte din categoria 'input' (care face parte la rândul ei din categoria 'codificări'). Acestea sunt denumite subsubintrări și subintrări în terminologia makeidx.

Controlul sortării

[modificare]

Pentru a determina cum urmează să se sorteze indexul după o cheie, plasați o valoare ce va fi folosită pentru sortare înaintea cheii, cu @ ca separator. Acest lucru este util dacă există un mod de formatare sau matematic, așa că un exemplu ar putea fi

\index{F@$\vec{F}$}

astfel încât intrarea din index va arăta în felul următor: '', dar va fi sortată ca 'F'.

Schimbarea stilului pentru numărul paginii

[modificare]

Pentru a schimba formatarea numărului unei pagini, adăugați un | și numele unei comenzi ce realizează formatarea. Această comandă ar trebui să accepte doar un argument.

Spre exemplu, dacă la pagina 3 a unei cărți scrieți 'buldogi' și comanda

\index{buldog}

iar la pagina 10 din aceeași carte vreți să afișați secțiunea principală despre buldogi cu un număr aldin al numărului paginii, dați comanda

\index{buldog|textbf}

Asta va apare în index sub forma

buldog, 3, 10

Dacă utilizați programul texindy în loc de makeindex, intrările clasificate vor fi și ele sortate, astfel încât toate intrările aldine vor fi așezate înaintea tuturor celorlalte în mod implicit.

Pagini multiple

[modificare]

Pentru a face o indexare pe mai multe pagini, adăugați |( și |) la sfârșitul comenzii \index, ca în

\index{Mecanică cuantică!Istorie|(} În 1901, Max Planck a lansat teoria radiației dependente de energia cuantificată. Deși asta a explicat catastrofa ultravioletă în spectrul radiației corpului negru, a avut consecințe mult mai importante la începutul mecanicii cuantice. ... \index{Mecanică cuantică!Istorie|)}

Intrarea din index pentru subelementul 'Istorie' va fi intervalul paginilor dintre cele două comenzi \index.

Utilizarea unor caractere speciale

[modificare]

Pentru a plasa valori cu !, @, sau | în comanda \index, trebuie să citați aceste caractere folosind ghilimele (") și puteți afișa " doar citând ghilimelele: o cheie pentru " ar fi \index{""}.

Această regulă nu merge pentru \", astfel că pentru a pune ä în index, încă mai puteți folosi \index{a@\"{a}}.

Avertismente

[modificare]

Comanda \index poate afecta aranjarea în pagină dacă nu este folosită cu atenție. Iată un exemplu:

Un cuvânt \index{cuvânt}. Spre deosebire de cuvânt\index{cuvânt}. Notați poziția punctului ce marchează sfârșitul frazei.

Un cuvânt . Spre deosebire de cuvânt. Notați poziția punctului ce marchează sfârșitul frazei.

Listă de abrevieri

[modificare]

Puteți face o listă de abrevieri cu ajutorul pachetului nomencl. Ar putea să vă intereseze și pachetul glossaries descris în capitolul Glosar.

Pentru a activa trăsătura de clasificare (nomenclature) din LaTeX, scrieți în preambul:

\usepackage[opțiuni]{nomencl} \makenomenclature

Dați comanda \nomenclature[prefix]{simbol}{descriere} pentru fiecare simbol pe care vreți să-l includeți în lista de clasificări. Locul cel mai bun pentru această comandă este imediat după ce introduceți simbolul prima dată. Scrieți \printnomenclature în locul în care vreți să apară lista de clasificări.

Rulați comanda de compilare LaTeX de două ori, apoi

makeindex nume_fișier.nlo -s nomencl.ist -o nume_fișier.nls

iar apoi rulați comanda LaTeX încă o dată.

Indecși multipli

[modificare]

Dacă vă trebuie mai mulți indecși, puteți utiliza pachetul multind.

Acest pachet oferă aceleași comenzi ca și makeidx, însă acum trebuie de asemenea să pasați un nume ca prim argument al fiecărei comenzi.

\usepackage{multind} \makeindex{cărți} \makeindex{autori} ... \index{cărți}{O carte de indexat} \index{autori}{Pune acest autor în index} ... \printindex{cărți}{Indexul cărților} \printindex{autori}{Indexul autorilor}

Adăugarea indexului la Cuprins

[modificare]

Implicit, indexul nu este afișat la Cuprins, așadar trebuie să-l adăugați manual.

Pentru a adăuga indexul sub forma unui capitol, folosiți această comandă:

\clearpage \addcontentsline{toc}{chapter}{Index} \printindex

Dacă utilizați clasa carte (book), probabil veți dori ca indexul să înceapă pe o pagină impară. Pentru a obține acest efect, folosiți comanda \cleardoublepage.

Indecși internaționali

[modificare]

Dacă vreți să sortați intrările ce au caractere internaționale (cum sunt ő, ą, ó, ç, etc.), veți observa că sortarea "nu este tocmai potrivită". În cele mai multe cazuri, caracterele sunt tratate ca niște caractere speciale și sfârșesc prin a fi în același grup cu @, ¶ sau µ. În cele mai multe limbi ce folosesc alfabetul Latin, acest comportament nu este cel corect.

Generarea indexului

[modificare]

Din păcate, versiunile curente ale xindy și hyperref sunt incompatibile. Când utilizați modificatorii textbf sau textit, texindy va tipări un mesaj de eroare:unknown cross-reference-class `hyperindexformat'! (ignored) și va adăuga paginile la index. O soluție posibilă este descrisă pe pagina de discuție.

Pentru a genera un fișier cu un index internațional, trebuie să folosiți texindy în locul makeindex.

xindy este un sistem de indexare mult mai extensibil și mai robust decât makeindex.

Spre exemplu, nu trebuie să scrieți:

\index{Lin@\textbf{Lin}}

pentru a obține intrarea Lin după LAN și înainte de LZA, în schimb, e suficient să scrieți

\index{\textbf{Lin}}

Însă ce e mult mai important, poate sorta în mod corespunzător fișierele de indexare în numeroase limbi, nu doar engleză.

Din păcate, generarea de indecși gata de utilizat de către sistemul LaTeX cu ajutorul xindy este ceva mai complicat decât cu makeindex.

Mai întâi, trebuie să știm în ce tip de codificare (encoding) a fost salvat fișierul .tex. În cele mai multe cazuri, acesta va fi UTF-8 sau ISO-8859-1, deși dacă locuiți, spre exemplu, în Polonia, ar putea fi ISO-8859-2 sau CP-1250. Verificați parametrul pachetului inputenc.

Apoi, trebuie să știm care limbă este predominant utilizată în document. xindy poate sorta nativ indecși în albaneză, olandeză, ebraică, latină, norvegiană, slovacă, bielorusă, engleză, georgiană, maghiară, letonă, poloneză, slovenă, vietnameză, bulgară, esperanto, germană, islandeză, lituaniană, portugheză, spaniolă, croată, estonă, greacă, italiană, română, sorabă, suedeză, cehă, finlandeză, romă, klingoniană, macedoneană, rusă, turcă, daneză, franceză, hausă, curdă, mongolă, sârbă și ucraineană.

Nu știu dacă alte limbi au probleme similare, însă cu limba poloneză, facă fișierul .tex este salvat în formatul UTF-8, fișierul .ind produs de texindy va fi codificat cu ISO-8859-2 dacă utilizați doar opțiunea -L polish. Deși nu este o problemă pentru intrări ce conțin litere poloneze, de vreme ce LaTeX codifică intern toate literele în plain ASCII, constituie o problemă pentru literele cu accente de la începutul cuvintelor. La crearea de noi grupuri de intrări în index, dacă aveți, spre exemplu, o intrare "średnia", veți obține un "Ś" codificat în ISO-8859-2 în fișierul de ieșire .ind. LaTeX nu agreează ca o parte a fișierului să fie scrisă în UTF-8 și altă parte în IS-8859-2. Soluția evidentă (adăugarea -C utf8) nu merge, texindy se oprește cu eroarea

ERROR: Could not find file "tex/inputenc/utf8.xdy"

Pentru a rezolva această problemă, trebuie să încărcați stilul de definiție pentru antete cu -M switch:

-M lang/polish/utf8

La sfârșit trebuie să rulăm o comandă de genul:

texindy -L polish -M lang/polish/utf8 nume_fișier.idx

xindy în Kile

[modificare]

Pentru a utiliza programul texindy în locul makeindex în Kile, trebuie fie să redefiniți programul ajutător MakeIndex în Settings → Configure Kile... → Tools → Build, fie să definiți noul program și să redefiniți alte programe auxiliare să-l folosească.

Definiția xindy ar trebui să arate cam așa:

General:
 Comandă: texindy
 Opțiuni: -L polish -M lang/polish/utf8 -I latex '%S.idx'
Avansat:
 Tip: Run Outside of Kile
 Clasă: Compile
 Extensia sursei: idx
 Extensia fișierului de ieșire: ind
 Fișierul de ieșire: <empty>
 Director relativ: <empty>
 Stare: Editor
Menu:
 Adaugă program auxiliar la meniul Build: Compile
 Icoană: imaginea preferată



Anterior: Etichete și referințe LaTeX Următor: Glosar