LaTeX/Indexare
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 Format:LaTeX/Pachet și programul makeindex, denumit în unele sisteme makeidx.
Utilizarea makeidx
Pentru a activa indexarea în LaTeX, trebuie mai întâi să încărcați pachetul Format:LaTeX/Pachet în preambul: Format:LaTeX/Utilizare
și să activați comenzile speciale de indexare punând comanda Format:LaTeX/Utilizare
î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 Format:LaTeX/Utilizare
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 Format:LaTeX/Utilizare poate fi rescris sub forma Format:LaTeX/Utilizare 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 Format:LaTeX/Utilizare Se obișnuiește ca aceasta să se plaseze la sfârșitul documentului. Formatul implicit al indexului este cu două coloane.
Pachetul Format:LaTeX/Pachet 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
Când fișierul de intrare este procesat de LaTeX, fiecare comandă Format:LaTeX/LaTeX 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 Format:LaTeX/LaTeX.
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
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ă
Iată câteva exemple de intrări Format:LaTeX/LaTeX:
| Exemplu | Intrare în index | Comentariu |
|---|---|---|
| Format:LaTeX/LaTeX | Salut, 1 | Intrare simplă |
| Format:LaTeX/LaTeX | Petre, 3 | Subelement al intrării 'Salut' |
| Format:LaTeX/LaTeX | Sam, 2 | Intrare formatată |
| Format:LaTeX/LaTeX | Lin, 7 | La fel ca mai sus |
| Format:LaTeX/LaTeX | Jenny, 3 | Număr formatat al paginii |
| Format:LaTeX/LaTeX | Joe, 5 | Tot ca mai sus |
| Format:LaTeX/LaTeX | école, 4 | Accente |
| Format:LaTeX/LaTeX | Petre, see Salut | Trimiteri |
| Format:LaTeX/LaTeX | Jen, see also Jenny | Ca mai sus |
Subelemente ale intrărilor
Dacă o anumită intrare are subsecțiuni, acestea pot fi marcate cu !. Spre exemplu,
Format:LaTeX/Utilizare
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
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
Format:LaTeX/Utilizare
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
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 Format:LaTeX/Utilizare 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 Format:LaTeX/Utilizare 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
Pentru a face o indexare pe mai multe pagini, adăugați |( și |) la sfârșitul comenzii Format:LaTeX/LaTeX, ca în
Format:LaTeX/Utilizare
Intrarea din index pentru subelementul 'Istorie' va fi intervalul paginilor dintre cele două comenzi Format:LaTeX/LaTeX.
Utilizarea unor caractere speciale
Pentru a plasa valori cu !, @, sau | în comanda Format:LaTeX/LaTeX, trebuie să citați aceste caractere folosind ghilimele (") și puteți afișa " doar citând ghilimelele: o cheie pentru " ar fi Format:LaTeX/LaTeX.
Această regulă nu merge pentru \", astfel că pentru a pune ä în index, încă mai puteți folosi Format:LaTeX/LaTeX.
Avertismente
Comanda Format:LaTeX/LaTeX poate afecta aranjarea în pagină dacă nu este folosită cu atenție. Iată un exemplu:
|
|
Un cuvânt . Spre deosebire de cuvânt. Notați poziția punctului ce marchează sfârșitul frazei. |
Listă de abrevieri
Puteți face o listă de abrevieri cu ajutorul pachetului nomencl. Ar putea să vă intereseze și pachetul Format:LaTeX/Pachet descris în capitolul Glosar.
Pentru a activa trăsătura de clasificare (nomenclature) din LaTeX, scrieți în preambul: Format:LaTeX/Utilizare
Dați comanda Format:LaTeX/LaTeX 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 Format:LaTeX/LaTeX î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
Dacă vă trebuie mai mulți indecși, puteți utiliza pachetul multind.
Acest pachet oferă aceleași comenzi ca și Format:LaTeX/Pachet, însă acum trebuie de asemenea să pasați un nume ca prim argument al fiecărei comenzi. Format:LaTeX/Utilizare
Adăugarea indexului la Cuprins
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ă: Format:LaTeX/Utilizare
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 Format:LaTeX/LaTeX.
Indecși internaționali
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
Din păcate, versiunile curente ale xindy și Format:LaTeX/Pachet sunt incompatibile. Când utilizați modificatorii Format:LaTeX/Parametru sau Format:LaTeX/Parametru, 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: Format:LaTeX/Utilizare pentru a obține intrarea Lin după LAN și înainte de LZA, în schimb, e suficient să scrieți Format:LaTeX/Utilizare
Î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 Format:LaTeX/Pachet.
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
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ă