В LaTeX можно создать ссылку почти на любой объект имеющий номер --- на раздел, рисунок, формулу, пункт списка и т. п. При этом LaTeX сам позаботится о нумерации ссылок и ее обновлении по мере необходимости.
Команд для работы со ссылками всего три: \label
, \ref
и \pageref
, и они не зависят от того, на какой объект вы ссылаетесь.
С помощью \label{имя}
вы даете имя объекту, на который хотите сослаться --- помечаете его. В качестве примера создадим формулу
\begin{equation}
ax^2+bx+c=0
\label{eq:sample}
\end{equation}
и присвоим ей имя eq:sample
. В готовом документе это будет выглядеть так:
Чтобы сослаться на отмеченный объект используется команда \ref{имя}
. На ее месте в тексте документа будет напечатан номер, присвоенный объекту LaTeX'ом. Так, поставив ссылку на указанную выше формулу мы увидим: (1), хотя в исходном тексте документа стояло: \ref{eq:sample}
.
Наконец, команда \pageref{имя}
печатает номер страницы, на которой расположен объект с данным именем.
Если вы сошлетесь на объект, имя которого не было предварительно задано командой \label
, LaTeX скомпилирует документ, но выдаст предупреждение:
LaTeX Warning: There were undefined references.
и заменит команды \ref{неизвестное_имя}
на '??', так что неопределенную ссылку легко будет обнаружить.
Обработка документа, содержащего ссылки, происходит в два этапа: сначала компилятор сохраняет имена объектов (метки) и рассчитывает соответствующие им номера, затем он заменяет команды \ref
этими номерами. Поэтому документ со ссылками необходимо транслировать дважды. Если вы сделаете это только один раз, то LaTeX будет использовать информацию, которую он собрал во время предыдущей трансляции, и которая могла устареть. Однако LaTeX предупредит вас об этом:
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
С помощью команды \pageref
вы можете указать читателю номер страницы, на которой находится интересующий его объект. Например, указав в файле .tex
:
См. формулу~(\ref{eq:sample}) на с.~\pageref{eq:sample}.
получим в готовом документе:
Поскольку одни и те же команды используются для ссылок на разные виды объектов, то в больших документах может возникнуть путаница, связанная с дублированием имен меток.
Допустим, мы хотим создать рисунок:
\begin{figure}[h]
\centering
Пример рисунка
\caption{Подпись}
\label{fig:sample}
\end{figure}
Так как рисунок создан для примера, то использование метки sample
для него, как и для указанной выше формулы, выглядело бы логично. В результате возникло бы дублирование меток;
LaTeX Warning: Label 'sample' multiply defined.
Мы избежали этой проблемы, добавив к метке префикс, указывающий на тип объекта. Префикс может быть произвольной строкой, но существуют общепринятые соглашения. Они перечислены в таблице.
Префикс: | Объект |
---|---|
chap: | глава (chapter) |
sec: | раздел (section) |
fig: | рисунок (figure) |
tab: | таблица (table) |
eq: | уравнение (equation) |
lst: | исходный код (listing) |
itm: | пункт нумерованного списка (item) |
Следуя этим соглашениям, обозначим ссылку на рисунок как \label{fig:sample}
.
Текст этого совета в файле labels.tex.
Все, о чем мы здесь до сих пор говорили, касалось встроенных возможностей LaTeX. Существенно расширить их можно, подключив пакет hyperref. Например, если, сославшись на уравнение, вы хотите указать вместо его номера какой-то текст, это можно сделать с помощью команды \hyperref
:
\hyperref[метка]{поясняющий текст}
Для приведенного выше уравнения это может выглядеть так:
См. \hyperref[eq:sample]{формулу}
Комментарии
comments powered by Disqus