LaTeX/Ознаке и референцирање

Извор: Викикњиге

LaTeX

Почетак
  1. Увод100% завршен  Dec 13, 2015
  2. Инсталација100% завршен  Dec 13, 2015
  3. Инсталација додатних пакета 100% завршен  Dec 13, 2015
  4. Основе 100% завршен  Dec 13, 2015
  5. Како пронаћи помоћ 100% завршен  Dec 13, 2015

Заједнички елементи

  1. Структура документа 100% завршен  Dec 28, 2015
  2. Форматирање текста 100% завршен  Dec 27, 2015
  3. Форматирање параграфа 100% завршен  Јан 02, 2016
  4. Боје 100% завршен  Jan 10, 2016
  5. Слова100% завршен  Jan 10, 2016
  6. Структура листи 100% завршен  Jan 10, 2016
  7. Посебни знакови 100% завршен  Jan 10, 2016
  8. Интернационализација 100% завршен  Jan 10, 2016
  9. Ротација 100% завршен  Jan 10, 2016
  10. Табеле 100% завршен  Jan 10, 2016
  11. Стварање наслова 100% завршен  Jan 10, 2016
  12. Распоред стране 100% завршен  Jan 10, 2016
  13. Увоз графике 100% завршен  Jan 10, 2016
  14. Фигуре и натписи100% завршен  Jan 10, 2016
  15. Фусноте и Маргине100% завршен  Jan 10, 2016
  16. Хиперлинкови 100% завршен  Jan 10, 2016
  17. Ознаке и референцирање100% завршен  Jan 10, 2016

Механика

  1. Грешке и упозорења 75% завршен  Јан 02, 2016
  2. Дужине 100% завршен  Јан 02, 2016
  3. Бројачи 100% завршен  Јан 02, 2016
  4. Кутије 100% завршен  Јан 02, 2016
  5. Правила и носачи 100% завршен  Јан 02, 2016

Технички текстови

  1. Математика100% завршен  Jan 10, 2016
  2. Напреднија математика 75% завршен  Jan 10, 2016
  3. Теореме
  4. Хемијска графика 75% завршен  Јан 02, 2016
  5. Алгоритми 75% завршен  Јан 02, 2016
  6. Листирање изворног кода 100% завршен  Јан 02, 2016
  7. Лингвистика 75% завршен  Јан 02, 2016

Посебне стране

  1. Индексирање 75% завршен  Јан 02, 2016
  2. Речник 75% завршен  Јан 02, 2016
  3. Управљање библиографијом‎ 75% завршен  Jan 10, 2016
  4. Више библиографије

Посебни документи

  1. Писма 50% завршен  Јан 02, 2016
  2. Презентације 75% завршен  Јан 02, 2016
  3. Учитељски део 75% завршен  Jan 10, 2016
  4. Кратка биографија 50% завршен  Јан 02, 2016

Креирање графика

  1. Представљање процедуралних графика 100% завршен  Јан 02, 2016
  2. МетаПостови 0% завршен  Јан 02, 2016
  3. Слика 50% завршен  Јан 02, 2016
  4. PGF/TikZ 25% завршен  Јан 02, 2016
  5. PSTricks 50% завршен  Јан 02, 2016
  6. Xy-pic 25% завршен  Јан 02, 2016
  7. Прављење 3D графикa 75% завршен  Јан 02, 2016

Програмирање

  1. Макрои 100% завршен  Jan 10, 2016
  2. Обичан ТеХ‎ 100% завршен  Jan 10, 2016
  3. Креирање пакета 100% завршен  Jan 10, 2016
  4. Теме 75% завршен  Jan 10, 2016

Разно

  1. Модуларни Документи 100% завршен  Jan 10, 2016
  2. Заједничко писање LaTeX докумената 75% завршен  Jan 10, 2016
  3. Отпремање у друге формате 100% завршен  Jan 10, 2016

Помоћ и препоруке

  1. Најчешће постављана питања 100% завршен  Jan 10, 2016
  2. Савети и трикови 75% завршен  Jan 10, 2016

Додаци

  1. Аутори 0% завршен  Jan 10, 2016
  2. Линкови 0% завршен  Jan 10, 2016
  3. Ознаке пакета 0% завршен  Jan 10, 2016
  4. Примери LaTeX докумената 0% завршен  Jan 10, 2016
  5. Индекс 0% завршен  Jan 10, 2016
  6. Речник наредби 0% завршен  Jan 10, 2016

Увод[уреди]

У 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[уреди]

У случају да користите пакет 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{} командом, онда ће их сортирати и груписати аутоматски.

Формат може бити наведен у преамбули.

Види још[уреди]

Референце[уреди]


Претходно: Хиперлинкови Индекс Следеће: Грешке и упозорења