ЛаТеX/Ознаке и референцирање
Увод
уредиУ LaTeX-у можете лако референцирати готово све што је нумерисано (наслове, симболе, формуле), а LaTeX ће се побринути око нумерисања, тако што ће да ажурира кад год то буде потребно. Команде које се користе за лакше референцирање су:
\label{marker}
- дајете објекту који желите да референцирате маркер, тако да га можете видети као име.
\ref{marker}
- позивате се на објекат који сте претходно означили. Ово штампа број који је додељен објекту.
\pageref{marker}
- Ово ће исписати број странице на којој се објекат налази.
LaTeX ће обавити прецизно нумерисање објеката у документу; маркер који сте користили за обележавање објекта, неће бити нигде приказан у документу. Потом ће LaTeX заменити "\ref{marker}
" са тачним бројем који је додељен објекту. Ако референцирате маркер који не постоји, компилација документа ће бити успешна, али ће LaTeX избацити упозорење:
LaTeX Warning: There were undefined references.
и замениће "\ref{unknown-marker}
" са "??" (тако да ће бити лако пронаћи га у документу).
Као што сте можда приметили како ради читање, то је процес који се састоји из два корака: прво компалјер мора да чува ознаке које се користе за референцирање, а потом их мења the \ref
са одговарајућим бројем. То је разлог зашто када референцирате, морате двапут компајловати документ да бисте видели жељену излазну вредност. Ако само једном компајлујете, LaTeX ће искористити старије податке које је прикупио у претходним компајловањима (што је можда застарело), али компајлер ће вас обавестити на крају компилације са својим обавештењем:
- LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
Користећи команду \pageref{}
можете помићи читачу да пронађе референцирани објекат пружајући број странице где се може наћи. Можете написати нешто слично овом:
Погледајте фигуру~\ref{fig:test} на страни~\pageref{fig:test}.
Пошто можете користити потпуно исте команде за референцирање готово ничег, можете бити мало збуњени након што сте увели пуно референци. То је уобичајена пракса међу LaTeX корисницима, да додају неко упутство на ознаци како би описали шта референцирају. Неки пакети, као што је fancyref
, се ослањају на ове информације. Ево један пример:
ch: | поглавље |
sec: | наслов |
subsec: | поднаслов |
fig: | фигуре |
tab: | табела |
eq: | једначина |
lst: | листа кодова |
itm: | нумерисана листа |
alg: | алгоритам |
app: | додатак подглавља |
Након овог рапспореда, ознака фигуре ће изгледати \label{fig:моја_фигура}
, итд. Нисте у обавези да користе ове префиксе. Можете користити било који стринг као аргумент \label{...}
, али како ваш документ постаје већи, ови префикси постају све више корисни.
Још једна сугестија: покушајте да избегнете коришћење бројева у ознакама. Можете боље описати шта је ваш објекат. На овај начин, ако промените редослед објеката, нећете морати да мењате називе свих својих ознака и њихових референци.
Ако желите да видите маркере којњ користите у излазном документу, можете користити showkeys
пакет; ово може бити веома корисно за израду документа. За више информација погледајте Ознаке пакета поглавље.
Примери
уредиЕво неколико практичних примера, али ћете приметити да су сви исти, јер сви користе исте команде.
Наслови
уреди\section{Поздрав}
\label{sec:greetings}
Здраво!
\section{Референце}
Поздрав у поглављу~\ref{sec:greetings}.
Можете да поставите ознаку било где у наслову; како год, како би се избегла забуна, боље је да се одмах стави на почетку секције. Приметите да маркер почиње са sec:, као што је сугерисано. Ознака се затим референцира у другом одељку. Тилда (~) служи за означавање без размака.
Слике
уредиМожете референцирати слику убацивањем у figure окружење.
\begin{figure}
\centering
\includegraphics[width=0.5\textwidth]{галеб}
\caption{Слика галеба}
\label{fig:галеб}
\end{figure}
Фигура \ref{fig:галеб} приказује слику галеба.
Када је ознака постављена унутар овог окружења, \ref{...}
враћа респективно fig/table број, али се мора појавити након натписа. Када се појави излазни документ, то ће дати број секције. Да бисте били потпуно сигурни, ознака за било коју слику или табелу може ићи уз \caption{}
команду, као ово:
\caption{Close-up of a gull\label{fig:gull}}
Погледајте поглавље Фигуре и натписи за остале figure
и сродна окружења.
Поправка лоших ознака
уредиКоманда \label
мора се појавити после (или унутар) \caption
. Иначе ће покупити тренутни број секције или листе уместо оног што сте намеравали.
\begin{figure}
\centering
\includegraphics[width=0.5\textwidth]{галеб}
\caption{Слика галеба} \label{fig:галеб}
\end{figure}
У случају да користите пакет hyperref
за прављење PDF-а, линкови за табеле или фигуре ће указати на натпис табеле или фигуре, који је увек испод саме табеле или фигуре[1]. Зато табела или фигура неће бити видљива, ако је изнад показивача и мора да се скрола да би се видело. Ако желите линк тачку на врху слике можете користити опцију hypcap
у caption
пакету:
\usepackage[hypcap]{caption}
Формуле
уредиЕво примера који показује како се референцирају формуле:
\begin{equation} \label{eq:solve}
x^2 - 5 x + 6 = 0
\end{equation}
\begin{equation}
x_1 = \frac{5 + \sqrt{25 - 4 \times 6}}{2} = 3
\end{equation}
\begin{equation}
x_2 = \frac{5 - \sqrt{25 - 4 \times 6}}{2} = 2
\end{equation}
И решили смо једначину~\ref{eq:solve}
Као што можете видети, ознака је постављена након почетка мода математике. У циљу референцирања формула, морате да користите окружење које додаје бројеве. Углавном ћете користити equation
окружење; то је најбољи избор за једно-линијске једначине, без обзира да ли користите amsmath
или не. Приметите да је eq: префикс у ознаци.
eqref
уредиПакет amsmath
има нову команду за референцирање формула; То је \eqref{}
. Ради исто као \ref{}
, али додаје заграде тако да уместо штампања обичног броја као што је 5, одштампаће (5). Ово може да помогне читаоцу да разликује формулу од других ствари, без потребе да се понавља реч "формула" пре сваке референце. Његова излазна вредност се може мењати по жељи; за више информација погледатје amsmath
документ.
tag
уредиКоманда \tag{eqnno}
се користи за ручно постављање бројева једначина где је eqnno произвољан текст који желите да се појави у документу. Боље је користити ознаке, али понекад тешко кодиране бројеви једначина могу понудити лакшу опцију. Ово може бити косирно, на пример ако желите да поновите једначину која већ била коришћена, нпр. \tag{\ref{eqn:before}}
.
numberwithin
уредиПакет amsmath
додаје \numberwithin{countera}{counterb}
команду који замењује једноставан countera
са софистициранијиим
counterb.countera
. На пример \numberwithin{equation}{section}
у преамбули ће се број сектора одосити на све бројеве једначина.
cases
уредиПакет cases
додаје \numcases
и \subnumcases
команде, које производе више случајева са посебном бројем једначина и једначина са ознакама, респективно, за сваки случај.
Пакет varioref
уредиОвај varioref
пакет уводи нову команду под називом \vref{}
. Ова команда се управо користи као основна \ref
, али има другачију излаз у зависности од контекста. ако је објекат који треба да се референцира на истој страни, онда ради исто као \ref
; ако је објекат удаљен, онда ће исписати нешто попут "5 on page 25", односно аутоматски ће додати број странице. Ако је објекат у близини, може да користи неке префињене реченице попут "on the next page" или "on the facing page" аутоматски, према околностима и класи документа.
Ова команда се мора користити веома пажљиво. Она штампа више од једне речи, тако да се може десити да грешком одштампа на две различите стране. У том случају, алгоритам може збунити и довести до петље. Ево један пример. Ви означите објекат на страни 23 и деси се да \vref
излаз остане између страница 23 и 24. Ако би био на страни 23, онда би штампао као основни ref
, а ако би остао на страни 24, штампао би "on the previous page", али у оба случаја то може изазвати неке чудне грешке које би захтевале доста времена за поправку. Помислили бисте да се то дешава веома ретко; нажалост, ако сте написали дуг документ није неуобичајено да имате на стотине референци, тако да је оваква ситуација веома могућа. Један од начина да се избегне проблем током рада је да се користи стандардни ref
све време и да се конвертује у vref
када је документ у фази финалне верзије, а затим поправка евентуалних проблема.
Пакет hyperref
уредиautoref
уредиПакет hyperref
уводи још једну корисну команду; \autoref{}
. Ова команда креира референцу са додатним текстовима која одговара потребном типу, што ће бити хиперлинк. На пример, команда \autoref{sec:intro}
би створила линк до \label{sec:intro}
команде, где год да је. Под претпоставком да је ова ознака показује на секцију, хиперлинк ће садржати текст "section 3.4", или нешто слично (комплетан списак стандардних имена може се наћи овде). Имајте на уму да, док је \autoref*
команда, ствараће нелинковане префиксе (корисно ако је ознака на истој страни као и референца), без алтернативне \Autoref
команде која је дефинисана за производњу верзије која се плаћа (корисни, на пример, када се почиње реченице); али од капитализације autoref имена су изабрана од стране аутора пакета, можете прилагодити редефинисањем текст префикса \typeautorefname
у префикс који желите, као што је:
\def\sectionautorefname{Section}
Овај трик преименовања се може сасвим добро користи и у друге сврхе.
- Ако бисте желели да хиперлинкујете референцу, али не желите унапред дефинисани текст који
\autoref{}
пружа, то можете да урадите са командом, као што је\hyperref[sec:intro]{Appendix~\ref*{sec:intro}}
. Имајте на уму да можете онемогућити стварање хиперлинка уhyperref
и само користити ове команде за аутоматски текст.
- Имајте на уму да \label мора бити постављен унутар окружења са бројачем, као што је табела или фиура. У супротном, не само број ће се односити на тренутни одељак, као што је поменуто горе, али име ће се односити на претходно окружење са бројачем. На пример, ако ставите ознаку након затварања фигуре, у ознаци ће и даље писати "figure n", где је n тренутни број секције.
nameref
уредиПакет hyperref
такође аутоматски укључује nameref
пакет и команду са сличним називом. Слично је \autoref{}
, али инсерти текст одговара називу одељка, на пример.
Унос:
\section{MyFirstSection} \label{sec:marker}
\section{MySecondSection}
In section~\nameref{sec:marker} we defined...
Излаз:
In section MyFirstSection we defined...
Ручно позиционирање
уредиКада дефинишете \label
ван фигуре, табела или неки други објекат, штампа ознаку у тренутној секцији. У неким случајевима, ово понашање
није оно што желите и радије би генерисани линк искористили за указивање на линију где је \label
дефинисана. Ово се може постићи командом
\phantomsection
као у овом примеру:
%Локација линка ће бити постављена на линији испод.
\phantomsection
\label{the_label}
Пакет cleveref
уредиПакет cleveref
уводи нову команду \cref{}
који обухвата тип референцираног објекта као што \autoref{}
ради. Алтернативна \labelcref{}
команда ради више као стандардна \ref{}
. Референце на страницама се обрађују од стране \cpageref{}
команде.
Команде \crefrange{}{}
и \cpagerefrange{}
очекују почетну и крајњу ознаку у било ком редоследу као и обезбеђивање широког спектра (babel
је омогућен) језика. Ако су ознаке наведене као листа раздвојена зарезима са уобичајеном \cref{}
командом, онда ће их сортирати и груписати аутоматски.
Формат може бити наведен у преамбули.
Види још
уредиРеференце
уреди