LaTeX (carte)/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 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:
|
și să activați comenzile speciale de indexare punând comanda
|
î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
|
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
|
poate fi rescris sub forma
|
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
|
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,
|
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
|
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
|
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
|
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
|
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 . 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:
|
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.
|
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ă:
|
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:
|
pentru a obține intrarea Lin după LAN și înainte de LZA, în schimb, e suficient să scrieți
|
Î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ă