LaTeX/Речник
Многи технички документи користе термине или акрониме који су непознати општој јавности. Честа је пракса да се дода речник да се таква документа начине приступачнијим.
glossaries пакет со може кориситти за прављење речника. Он подржава више речника, акронима, и симбола. Овај пакет замењује glossary пакет и он се може користити уместо nomencl пакета.[1] Корисници којима је потребно лакше решење требало би да размисле о томе да ручно кодирају уносе коришћењем описног окружења, или longtabu окружења омогућеног од стране tabu пакета.
Почетак
уредиСтавите \usepackage{glossaries}
и \makeglossaries
у вашу преамбулу (после \usepackage{hyperref}
ако постоји).
Онда дефинишите било који број \newglossaryentry
и \newacronym
уноса речника и акронима у вашу преамбулу (препоручено) или пре прве праве употреба увашем документ.
Коначно додајте \printglossaries
позив да пронађете листу речника унутар ваше структуре докумената.
Онда исправите ваше писање са \gls{mylabel}
макроима (и сличним стварима) да бисте истовремено унели ваш предефинисан текст и направили асоциони речник.
Процесуирање датотеке сада мора укључивати позив за makeglossaries
за којим следи најмање једно даље позивање latex
-а или pdflatex-
-а.
Употреба glossaries
уредиДа бисте користили glossaries пакет, морате га посебно учитати:
\usepackage{glossaries}
|
ако желите да користите xindy (препоручено) за индексирање фразе, насупрот makeindex (по нормали), морате да прецизирате xindy опцију:
\usepackage[xindy]{glossaries}
|
Да би вам се речник појавио у вашем садржају, морате да прецизирате toc опцију:
\usepackage[toc]{glossaries}
|
Погледајте још и прилагођено име на дну ове стране.
Коначно, унесите следећу команду у преамбули вашег документа да бисте генерисали речник:
\makeglossaries
|
Било које везе у резултујућем речнику неће бити "реактивне" ако не учитате glossaries пакет после hyperref пакета.
Додатно, корисници који желе да искористе makeglossaries ће морати да имају Перл инсталиран — ово обично по нормали није присутно на мајкрософт виндоус платформама. Ово речено, makeglossaries просто обезбеђује погодан интерфејс да makeindex и xindy и није од кључне важности.
Дефинисање уноса у речник
уредиДа бисте користили унос из речника прво морате да га дефинишете. Постоје неколико начина за дефинисање уноса, у зависности од тога шта дефинишете и како ће то што дефинишете бити употребљено.
Приметите да дефинисан унос неће неће бити укључен у штампани речник ако није коришћен у документу.
Ово вам омогућује да направите речник општих појмова само ставите \include
у свим вашим документима.
Дефинисање термина
уредиДа бисте дефинисали појам у речнику користите \newglossaryentry
макро:
\newglossaryentry{<ознака>}{<settings>}
|
<ознака> је посебна ознака која се користи за идентификацију уноса у речнику, <settings> су парови раздвојени зарезом key=value који се користе за дефиницију уноса.
На пример, да бисте дефинисали рачунарски унос:
\newglossaryentry{computer}
{
name=рачунар,
description={је програмирана машина која прихвата улазне информације,
чува и манипулише подацима, обезбеђује
излазне информације у корисном формату}
}
|
Пример изнад дефинише унос који има исту ознаку као и име уноса. Ово није увек случај што ће и следећи унос показати:
\newglossaryentry{naiive}
{
name=na\"{\i}ve,
description={је француска позајмица (придев, од naïf)
који указује на немањље или показује недостатак искуства,
разумевања и софистицираности}
}
|
Када дефинишете термине, морате да запамтите да ће њих сачувати или makeindex или xindy.
Док је xindy мало више свестан LaTeX-а, он ради тако што изоставља latex макрое (\"{\i}
) и самим тим нетачно сортира пример изнад као nave.
makeindex се неће показати много боље, зато што не разуме TeX макрое, он ће интерпретирати реч онако како је дефинисана, стављајући је унутар класе симбола, пре речи које починњу са naa.
Зато је потребно проширити наш пример и прецизирати како ће се речи сортирати:
\newglossaryentry{naiive}
{
name=na\"{\i}ve,
description={is a French loanword (adjective, form of naïf)
indicating having or showing a lack of experience,
understanding or sophistication},
sort=naive
}
|
Такође можете прецизирати форме множине, ако се оне не промирају додавањем лсова “s” (научићемо како да их користимо у следећем делу):
\newglossaryentry{Linux}
{
name=Linux,
description={is a generic term referring to the family of Unix-like
computer operating systems that use the Linux kernel},
plural=Linuces
}
|
Или, за акрониме:
\newacronym[longplural={Frames per Second}]{fpsLabel}{FPS}{Frame per Second}
|
Ово ће избегавати погрешне дугачке множине: Frame per Seconds.
До сада, уноси у речник су били дефинисани као листе кључних-вредности. Понекад, је опис много комплекснији од само једног параграфа. На пример, можда ћете пожелети да иамте више параграфа, детаљне листе, фигуре, табеле, итд. За талве речничке уносе користите команду longnewglossaryentry у којој опис прати листу кључних-вредности. РАчунарски унос онда изгледа овако:
\longnewglossaryentry{рачунар}
{
name=рачунар
description={је програмирана машина која прима улазне информације,
чува и манипулише подацима, и обезбеђује
излазне информације у корисном формату}
|
Дефинисање симбола
уредиДефинисани уноси такође могу бити симболи:
\newglossaryentry{pi}
{
name={\ensuremath{\pi}},
description={однос обима круга и његовог
пречника},
sort=pi
}
|
Такође ,можете дефинисати и име и симбол:
\newglossaryentry{реалан број}
{
name={реалан број},
description={укључује и рационалне бројеве, као што су $42$ и
$\frac{-23}{129}$, и иарционалне бројеве,
као што су $\pi$ и квадратни корен од два; или,
реалан број може иамти бескрајно децимално
представљање, као што је $2.4871773339\ldots$ где
где бројеви настављају на неки начин; или,на реални
бројеви се може мислити као тачке на бесконачно
дугачкој бројевној линији},
symbol={\ensuremath{\mathbb{R}}}
}
|
Приметите да не сви стилови речника приказују дефинисане симболе.
Дефинисање акронима
уредиДа бисте дефинисали нови акроним можете да користите \newacronym
макро:
\newacronym{<ознака>}{<abbrv>}{<full>}
|
где је <ознака> посебна ознака која дефинише акроним, <abbrv> је скраћени облик акронима и <full> проширен текст. На пример:
\newacronym{lvm}{LVM}{Logical Volume Manager}
|
Дефинисање акронима се може ставити у посебну листу ако користите acronym опцију пакета:
\usepackage[acronym]{glossaries}
|
Употреба дефинисаних термина
уредиКада сте дефинисали термин, можете га користите у документу. Постоје многе различите команде које се користе за референцирање термина из речника.
Опште референце
уредиОпшта референца се користи са \gls
командом.
Ако, на пример, ако имате уносе у речник дефинисане као ови изнад, можете их користити на овај начин:
\Gls{naiive} people don't know about
alternative \gls{computer} operating systems:
\glspl{Linux}, BSDs and GNU/Hurd.
|
Naïve people don't know about alternative computer opera- |
Опис команде употребљене у примеру изнад:
\gls{<ознака>}
|
Ова команда штампа термин који је у асоцијацији са <ознаком> која је прошла као аргумент. Ако је hyperref пакет очитан пре glossaries он ће аутоматски бити хиперлинкован у унос из речника.
\glspl{<ознака>}
|
Ова команда штампа множину описаног термина, осим тога она се понаша исто као и gls
.
\Gls{<ознака>}
|
Ова команда штампа форму једнине термина са првим словом промењеним у велико слово.
\Glspl{<ознака>}
|
Ова команда штампа форму множине са првим словом термина промењеним у велико слово.
\glslink{<ознака>}{<алтернативни текст>}
|
Ова команда као по обичају прави везу, али поставља тим текста као алтернативни текст. Она може да прими неколико опција које мењају њено уобичајено понашање (погледајте документацију).
\glssymbol{<ознака>}
|
Ова команда штампа шта год је дефинисано у \newglossaryentry{<ознака>}{симбол={Излаз од glssymbol}, ...}
\glsdesc{<ознака>}
|
Ова команда штампа шта год је дефинисано у \newglossaryentry{<ознака>}{опис={Излаз од glsdesc}, ...}
Позивајући акрониме
уредиАкроними се понашају мало другачије од обичних речничких термина.
При првој употреби \gls
команда ће показати "<full> (<abbrv>)".
На каснијим употребама само ће скраћеница бити приказана.
За ресетовање прве употребе акронима користите:
\glsreset{<ознака>}
|
или, или ако желите да ресетујете употребни статус свих акронима користите:
\glsresetall
|
Ако само желите да одштампате дугачку верзију акронима без скраћенице "<full>", користите :
\acrlong{<ознака>}
|
Ако само желите да одштампате дугачку верзију акронима са скраћеницом "<full> (<abbrv>)", користите :
\acrfull{<ознака>}
|
Ако само желите да штампате скраћеницу "<abbrv>", користите :
\acrshort{<ознака>}
|
Приказивање речника
уредиДА бисте приказали сортирану листу термина морате да додате:
\printglossaries
|
на место где желите да се речник и листа акронима појаве.
Ако сви уноси треба да сеодштампају команда
\glsaddall
|
се може убацити пре \printglossaries
.
Можда ћете такође пожелети да употребите \usepackage[nonumberlist]{glossaries
} да угушите листу локација унутар речника.
Одвојен речник и листа акронима
уреди\printglossaries
ће приказати све речнике у реду по којем су били дефинисани.[2] Ако ниједан пролагођен речник није дефинисан, уобичајен речник и листа акронима ће бити приказани.
Речник и листа акронима могу бити приказани одвојено на различитим местима[3]:
\usepackage[acronym]{glossaries}
\printglossary[type=\acronymtype] % штампа само листу акронима
Неки текст између листе акронима и речника.
\printglossary % ако није уведена никаква друга опција уобичајени речник ће бити одштампан.
|
Дупли уноси са референцом ка уносом у речнику из акронима
уредиМоже бити корисно да имате и акроним и унос у речник за исти термин. Да бисте повезали ова два, дефинишие акроним са референцом ка уносу у речнику на овај начин:
\newglossaryentry{gls-OWD} {
name={One-Way Delay},
description={Време које пакет користи да прође кроз мрежу од једног домаћина до другог},
}
\newacronym[see={[Glossary:]{gls-OWD}}]{OWD}{OWD}{One-Way Delay\glsadd{gls-OWD}}
|
Реферисање до акронима се врши са \gls{OWD} а до речника са \gls{gls-OWD}
Да бисмо ово начинили лакшим, можемо да користимо ову команду (модификовану од примера у званичним документима):
Синтакса: \newdualentry[glossary options][acronym options]{label}{abbrv}{long}{description}
\usepackage{xparse}
\DeclareDocumentCommand{\newdualentry}{ O{} O{} m m m m } {
\newglossaryentry{gls-#3}{name={#5},text={#5\glsadd{#3}},
description={#6},#1
}
\makeglossaries
\newacronym[see={[Glossary:]{gls-#3}},#2]{#3}{#4}{#5\glsadd{gls-#3}}
}
|
онда, дефинишите нове (дупле) уносе за речник и листе акронима на овај начин:
\newdualentry{OWD} % ознака
{OWD} % скраћеница
{One-Way Delay} % дужи облик
{Време које пакет користи да прође кроз мрежу од једног домаћина до другог} % опис
|
Прилагођено име
уредиИме речничког дела се може заменити са прилагођеним именом или превести на различит језик. Додајте опцију title у \printglossary
да би прецизирали наслов речника. Додајте опцију toctitle да бисте прецизирали наслов коришћен у садржају (ако није искоришћен, title се користи по нормали). [4]
\printglossary[title=Листа термина,toctitle=Термини и скраћенице]
|
Уклањање тачке
уредиДа изоставите тачку на крају сваког описа, користите овај код:
\usepackage[nopostdot]{glossaries}
|
Мењање презентације уноса речника употребом стилова речника
уредиВелики број већ направљених стилова је доступан, и могу се лапо променити коришћењем
% Мора се написати пре \printglossaries
\glossarystyle{<newstyle>}
|
Често коришћени стилови укључују листу
Мој термин има веома дугачак опис 7, 9
altlist (убацује нов ред после термина и увученог описа)
Мој термин има веома дугачак опис 7, 9
altlistgroup или listgroup (група додаје груписање базирано на првим словима термина)
M мој први термин Има веома дугачак опис 7, 9 Мој други термин Има дугачак опис 7, 9
altlisthypergroup или listhypergroup (hyper додаје хиперлинкован 'индекс' на врху сваког речника да се пребаци на групу)
A|B|C|D|F|G|I|M|O|R|S|C|D|G|M|P A A First term Has some long description 7, 9 B Barely missed first Has some long description 7, 9
Стварање вашег документа
уредиСтварање вашег документа и његовог речника сахтева три корака:
- направите ваш LaTeX документ — ово ће такође генерисати датотеке потребне за makeglossaries
- призовите makeglossaries — скрипту која бира тачно кодирање знакова и језичке опције и која ће такође покренути xindy или makeindex ако су оне прецизиране у вашој документној датотеци
- направите ваш LaTeX документ поново — да бисте произвели документ са речничким уносима
Према томе:
latex doc makeglossaries doc latex doc
где је latex ваш уобичајени позив за прављење (можда pdflatex) и doc је име ваше LaTeX главне датотеке.
Ако су ваши уноси међусобно повезани (уноси су међусобно повезани са другим уносима које \gls
позива), мораћете да одрадите кораке 1 и 2 два пута, то јест, по следећем редоследу: 1, 2, 1, 2, 3.
Ако се сусретнете са проблемима, погледајте doc.log и doc.glg датотеке у текстуалном едитору за трагове.
Пример за употребу у виндоусу са Texmaker-ом
уредиКомпајлирајте речник са xindy - У виндоусу са Texmaker
уредиУ TeX Live и од јуна 2015 у MikTeX xindy је већ укључен.
Постоји само један проблем са путем директоријума инсталације за MikTeX садржајне просторе. Може се решити преко следеће измене: http://tex.stackexchange.com/questions/251221/miktex-and-xindy-problems/251801#251801
Морате да поново покренете Texmaker после инсталције xindy, да бисте ажурирали PATH референце ка xindy и перл бинарима.
Онда, у Texmaker-у, идите на User -> User Commands -> Edit User Commands.
Изаберите команду 1
- Ставкаизменија = makeglossaries
- Команда = makeglossaries %
Сада притисните Alt+Shift+F1а затим ->F1
Приметите, за употребу са "користите направљен директоријум" опцијом Texmaker-а: makeglossaries мора да пронађе aux датотеку. Срећом, док Texmaker овде не помаже, опција -d <dir> од стране makeglossaries обезбеђује за поддиректоријумски случај. Зато би команда у овом случају требала бити:
Команда = makeglossaries -d build % уместо тога.
Преамбула документа
уредиУ преамбули треба бити укључено (приметите, hyperref треба бити учитано пре речника):
\usepackage[nomain,acronym,xindy,toc]{glossaries} % nomain, ако дефинишете речнике у датотеци, и употребите \include{INP-00-glossary} \makeglossaries \usepackage[xindy]{imakeidx} \makeindex
Дефиниције речника
уредиНапишите све ваше речнике/акрониме у датотеку: Нпр: INP-00-glossary.tex
\newacronym{ddye}{D$_{\text{dye}}$}{donor dye, ex. Alexa 488} \newacronym[description={\glslink{r0}{F\"{o}rster distance}}]{R0}{$R_{0}$}{F\"{o}rster distance} \newglossaryentry{r0}{name=\glslink{R0}{\ensuremath{R_{0}}},text=F\"{o}rster distance,description={F\"{o}rster distance, where 50\% ...}, sort=R} \newglossaryentry{kdeac}{name=\glslink{R0}{\ensuremath{k_{DEAC}}},text=$k_{DEAC}$, description={is the rate of deactivation from ... and emission)}, sort=k}
Укључите дефиниције речника и штампајте речник
уредиУкључите дефиниције речника у преамбули (Пре "\begin{document}")
\loadglsentries[main]{INP-00-glossary} % или коришћењем \input: %\input{INP-00-glossary} \begin{document}
Штампај речнике, близу смо краја
\appendix \bibliographystyle{plainnat} \bibliography{bibtex} \printindex \printglossaries \end{document}
Референце
уреди- ↑ http://www.ctan.org/pkg/nomencl
- ↑ http://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/glossaries/glossaries-user.html#dx1-35001
- ↑ http://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/glossaries/glossaries-user.html#dx1-43001
- ↑ Упутство за речнике.sty v4.02 as of 2014.01.13 http://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/glossaries/glossaries-user.html#sec:printglossary
- glossaries документација, http://tug.ctan.org/tex-archive/macros/latex/contrib/glossaries/
- Коришћење LaTeX-а за писање докторских дизертација, Nicola L.C. Talbot, [1]
- Речници FAQ, Nicola L. C. Talbot, речници FAQ
- Glossaries, Nomenclature, Lists of Symbols and Acronyms, Nicola L. C. Talbot, link