LaTeX/Индексирање
Посебно корисно код штампаних књига, индекс је азбучна листа речи и израза са странама књиге на којима се оне могу наћи. LaTeX подржава стварање индекса са његовим пакетом makeidx, и његовим програмом подршке makeindex
, који се на неким системима називају makeidx
.
Употреба makeidx
[уреди]Да бисте оспособили функцију индексирања LaTeX-а, makeidx пакет мора бити учитан у преамбули са:
\usepackage{makeidx}
|
и посебне конанде за индексирање се морају оспособити тако што ће се ставити
\makeindex
|
команда у преамбулу улазне датотеке. Ово би требало урадити унутар преамбуле, пошто она говори LaTeX да направи датотеке потребне за индексирање. ДА би рекли LaTeX шта да индексира, користите
\index{кључ}
|
где је кључ унос индекса и он се не појављује у коначном изгледу. Унесете конаде индексирања на местима у тексту на које ви желите да се индекс реферише, вероватно близу разлога за кључ. На пример, текст
Да бисте решили разне проблеме у физици, може бити од користи
да изразите било коју произвољну функцију која је глатка по сви деловима као
Фуријову серију која се састоји од више синусних и косинусних функција.
|
може се поновно написати као
Да бисте решили разне проблеме у физици, може бити од користи
да изразите било коју произвољну функцију која је глатка по сви деловима као Фуријову серију
\index{Фуријова серија}
која се састоји од више синусних и косинусних функција.
|
да бисте направили било који унос који се зове 'Фуријова срија' са референцом на циљану страну. Више употреба \index са истим кључем на различитим странама ће додати те циљане стране на тај исти приступ индексу.
ДА бисте показали индекс унутар документа, само користите команду
\printindex
|
Уобичајено је да се стави на крају документа. Уобичајени формат индекса је две колоне.
Showidx пакет који долази са LaTeX-ом штампа све приступе индекса у десну маргину текста. Ово је поприлично корисно за корекцију документа и верификацију индекса.
Компилација индекса
[уреди]Када је улазна датотека процесуирана са LaTeX-ом, свака \index
команда пише одговарајући индекс приступ, заједно са тренутним бројем стране, на специјалну датотеку. Ова датотека има исто име као и LaTeX улазна датотека, али различит наставак (.idx
). Ова .idx
датотека се може обрадити унутар makeindex
програма. Укуцајте у командној линији:
makeindex имедатотеке
Приметите да је имедатотеке без наставка: програм ће тражити имедатотеке.idx да би користио команду. Опционо можете додати имедатоетеке.idx директно програму као аргумент. Програм makeindex
генерише сортирани индекс са истим основним именом датотеке, али овај пут с наставком .ind
. Ако је сада LaTeX улазна датотека обрађена поново, овај сортирани индекс се укључује у документ на месту где LaTeX пронађе \printindex
.
Индекс направљен од стране latex-а са уобичајеним опцијама тако добро или или тако одговарајуће како би ви желели. ДА бисте побољшали изглед индекса makeindex
долази са комплетом стилова датотека, обично лоцираних негде у tex структури директоријума, обично испод makeindex
поддиректоријума. Да бисте рекли makeindex да користи одређени стила датотека, покрените га са опцијом командне линије:
makeindex -s [style file] имедатотеке
Ако користите GUI за компилацију latex и индекс датотека, можда ћете морати да подесите ово у опцијама. Ево неколико савета око конфигурације за тишичне алате:
MakeIndex опција у WinEdt
[уреди]Ако ви рецимо желите дадодате стил индексирања датотека именован простдекс.ist
- Texify/PDFTexify: Options→Execution Modes→Accessories→PDFTeXify, додај у Switches:
--mkidx-option="-s simpleidx.ist"
- MakeIndex сама: Options→Execution Modes→Accessories→MakeIndex, додај у командној линији:
-s simpleidx.ist
Софистицирано индексирање
[уреди]Испод су примери \index
приступа:
Пример | Унос индекса | Коментар |
---|---|---|
\index{hello}
|
hello, 1 | Обичан унос |
\index{hello!Peter}
|
Peter, 3 | Подунос после 'hello' |
\index{hello!Sam@\textsl{Sam}}
|
Sam, 2 | Подунос форматиран и сортиран |
\index{Sam@\textsl{Sam}}
|
Sam, 2 | Формиран унос |
\index{Lin@\textbf{Lin}}
|
Lin, 7 | Исто као и изнад |
\index{Jenny|textbf}
|
Jenny, 3 | Форматирани број стране |
\index{Joe|textit}
|
Joe, 5 | Исто као и изнад |
\index{ecole@\'ecole}
|
école, 4 | Руковање акцентима |
\index{Peter|see {hello}}
|
Peter, see hello | Упућивање |
\index{Jen|seealso{Jenny}}
|
Jen, see also Jenny | Исто као и изнад |
Подуноси
[уреди]Ако неки унос има подсекције, оне могу бити обелењене са !
. На пример,
\index{encodings!input!cp850}
|
би креирало унос индекса са 'cp850' категоризано под 'улаз' (који је и сам категоризован у 'кодирања'). Они се називају подподуноси и подуноси у makeidx терминологији.
Контрола сортирања
[уреди]У циљу одређивања како је кључ индексирања сортиран, поставите вредност да сортира по вредности пре кључа са @
као сепаратором. Ово је корисно ако постоји било које форматирање или математички режим, тако да би један пример могао бити
\index{F@$\vec{F}$}
|
тако да ће се унос у индексу показати као '' али ће бити сортиран као 'F'.
Да бисте комбинолаи са функцијом изнад са подуносима, требате стилизовати одговарајуће компоненете:
\index{bug reports!In re code@\emph{In re} code}
\index{LaTeX@\LaTeX!Typesetting engine}
|
Промена стила броја стране
[уреди]Да се промени форматирање броја стране, доделите |
и име неке команде која врши форматирање. Ова команда би требало да прихвата само један аргумент.
На пример, ако на страни 3 књиге уведете булдоге и укључите команду
\index{булдог}
|
и на страни 10 исте књиге пожелите да покажете главни део о булдозима са подебљаним бројем стране, употребите
\index{булдог|textbf}
|
Ово ће се појавити у индексу као булдог, 3, 10
Ако користите texindy
уместо makeindex
, сврстани уноси ће бити такође сортирани, тако да ће сви подебљани уноси бити постављени пре свих осталих по нормали.
Више страница
[уреди]Да бисте извршили индексирање више страница, додајте |(
и |)
на крају \index
команде, као у
\index{Квантан механика!Историја|(}
У 1901 години, Max Planck објавио своју теорију зрачења која зависи од квантизиране енергије.
Док је ово објаснило ултраљубичасту катастрофу у спектру
црног зрачења, ово је имало далеко веће последице као почетак квантне механике.
...
\index{Квантан механика!Историја|)}
|
Унос у индексу за подунос 'History' ће бити у распону страна између \index
команди.
Употреба специјалних знакова
[уреди]ДА би ставили вредности са !
, @
, или |
, који су иначе знакови прекида, у индексу, морате цитирати оце знакове у \index
команди тако што ћете ставити дупле наводнике ("
) испред њих, само можете ставити "
унутар индекса тако што ћете га цитирати (т.ј., кључ за " би био \index{""}
).
Ово правило не важи за \", зато ставите слова ä у индекс, можете и даље користити \index{a@\"{a}}
.
Листа скраћеница
[уреди]Можете да направите листу скраћеница са пакетом nomencl [1]. Можда ћете такође бити заинтересовани за употребу glossaries пакета описаног у Речник поглављу. Друга опција је пакет acronym [2].
Да бисте оспособили функцију номенкалтуре LaTeX-а, nomencl пакет мора бити учитан у преамбули са:
\usepackage[⟨options ⟩]{nomencl}
\makenomenclature
|
Издајте \nomenclature[⟨prefix⟩]{⟨симбол⟩}{⟨опис⟩}
команду за сваки симбол који желите да буде укључен у листу номенклатуре. Најбоље место за ову команду је одмах пошто уведете симпол по први пут. Ставите \printnomenclature
на место где желите да имате вашу листу неменклатуре.
Затим покрените LaTeX два пута
makeindex имедатотеке.nlo -s nomencl.ist -o имедатотеке.nls
после чега ћете покренути LaTeX још једном.
ДА би додали листу скраћеница у садржај, intoc опциај се може користити када се декалрише nomencl пакет, т.ј.
\usepackage[intoc]{nomencl}
|
уместо употребе кода у Adding Index to Table Of Contents секцији.
Наслов листе се може променити коришћењем следеће команде:
\renewcommand{\nomname}{Листа скараћеница}
|
Више индекса
[уреди]Ако вам је потребно више индекса можете да користите пакет multind [3].
Овај пакет обезбеђује исте команде као makeidx, али сада такође морате пропустити име као први аргумент сваке команде.
\usepackage{multind}
\makeindex{књиге}
\makeindex{аутори}
...
\index{књиге}{књига за индексирање}
\index{аутори}{Стави овог аутора у индекс}
...
\printindex{књиге}{Индекс књига}
\printindex{аутори}{Индекс аутора}
|
Додавање индекса садржају
[уреди]По нормали, индекс се неће појављивати у садржају, тако да га морате додати ручно.
Да бисте додали индекс поглављу, употребите ове команде:
\clearpage
\addcontentsline{toc}{поглавље}{Индекс}
\printindex
|
Ако користите класу књига, можда ћете желети да га стартујете на непарној страници коришћењем \cleardoublepage
.
Интернационални индекси
[уреди]Ако желите да сортирате уносе које имају интернационалне знакове (као што су ő, ą, ó, ç, итд.) можете открити да сортирање "није баш добро". У већини случајева ови знакови се третирају као посебни знакови и заврше у истој групи као и @, ¶ или µ. У већини језика које користе латинично писмо то није тачно.
Генерисање индекса
[уреди]На жалост, тренутна верзија xindy
и hyperref су неспојиви. Када користите textbf или textit модификаторе, texindy
ће штампати поруку грешке:unknown cross-reference-class `hyperindexformat'! (ignored)
и неће додати те странице у индекс. Решење за ову грешку описану на разговору.
Да бисте генерисали датотеку интернационалног индекса морате да користите texindy
уместо makeindex
.
xindy је много прошириви и и развијени систем индексирања него makeindex
систем.
На пример, није потребно написати:
\index{Lin@\textbf{Lin}}
|
да бисте добили Lin унос после LAN и пре LZA, довољно је написати
\index{\textbf{Lin}}
|
Али што је много важније, она може правилно сортирати датотеке индекса на многим језицима, не само на енгелском.
На жалост, генерисање индекса који су спремни за употребу од стране LaTeX употребом xindy
је мало компликованије него са makeindex
.
Прво, морамо да знамо у ком кодирању .tex је пројектна датотека сачувана. У већини случајева биће сачувана као UTF-8 или ISO-8859-1, мада ако живите, на пример у Пољској може бити ISO-8859-2 или CP-1250. Проверите параметар inputenc
пакета.
Друго, морамо да занмо који језик је углавном коришћен у нашем документу. xindy може природно сортирати индексе на албанском, белоруском, бугарском, хрватском, чешшком, данском, хоалндском, енглеском, ,естонском, финском, француском, грузијском, немачком, грчком, циганском, хауса, хебрејском, мађарском, исландском, италијанском, клингон, курдијском, латинском, летонијском, литванском, македонском, монголском, норвешком, пољском, потугалском, румунском, руском, српском, словачком, словенском, лужичносрпском, шпанском, шведком, турском, украјинском и вијетнамском језику,
Ја не знам да ли други језици имају сличне проблеме, али са пољским, ако је ваша .tex
сачувана коришћењем UTF-8, .ind
произведен од стране texindy ће бити кодиран у ISO-8859-2 ако користите само -L polish
.
Док није проблем са уносима који садрже пољска слова, како LaTeX намерно кодира сва слова у обичан ASCII, јесте за акцентована слова на почетку речи, оне стварају нове групе уноса индекса, ако имате, на пример "średnia" унос, добићете "Ś" кодирану у ISO-8859-2 .ind
датотеци.
LaTeX не воли ако је део датотеке у UTF-8 а други део у IS-8859-2.
Очигледно решење (додавање -C utf8
) не ради, texindy
престаје са радо са
ERROR: Could not find file "tex/inputenc/utf8.xdy"
грешком.
Да би се во поправило, морате да учитате стил дефиниција за наслове користећи -M switch
:
-M lang/polish/utf8
На крају ми морамо да покренемо такву команду:
texindy -L polish -M lang/polish/utf8 имедатотеке.idx
Још један начин да сереши овај порблем је да користите "iconv" да направите utf8.xdy од latin2.xdy
iconv -f latin2 -t utf8 latin2.xdy >utf8.xdy
у фасцикли
/usr/share/xindy/tex/inputenc
(Морате имати рут привилегије)
Xindy у kile
[уреди]Дa бисте користили texindy
уместо makeindex
у kile, морате или да редефинишете MakeIndex алатку у Settings → Configure Kile... → Tools → Build, или да дефинишете нову алтку и редефинишете остале алатке да бисте је коритили (на пример тако што ћете је додати у QuickBuild).
xindy
дефиниција би требало да изгледа налик на ово:
General: Command: texindy Options: -L polish -M lang/polish/utf8 -I latex '%S.idx' Advanced: Type: Run Outside of Kile Class: Compile Source extension: idx Target extension: ind Target file: <empty> Relative dir: <empty> State: Editor Menu: Add tool to Build menu: Compile Icon: the one you like