Работа в системе LaTeX
de301fb4

Автоматическая генерация ссылок


Система LaTeX предоставляет возможность организовать ссылки на отдельные страницы или разделы документа таким образом, чтобы программа сама определяла номера страниц или разделов в этих ссылках. Объясним это на примере.

Представим себе, что вам нужно сослаться на какое-то место в вашем тексте. Проще всего было бы указать страницу, на которой это место находится, написав "... как мы уже отмечали на с. 99" или что-то в этом роде, но как угадать, на какую страницу печатного текста попадет это место? Вместо того, чтобы гадать, можно сделать следующее:

  • пометить то место, на которое вы хотите сослаться в дальнейшем (или предшествующем) тексте;
  • в том месте текста, где вы хотите поместить ссылку, поставить команду-ссылку на вашу метку.

Конкретно это реализуется так. Помечается любое место текста с помощью команды \label. Эта команда имеет один обязательный аргумент (помещаемый, стало быть, в фигурных скобках) - " метку". В качестве метки можно использовать любую последовательность букв и цифр (не содержащую пробелов). Например, эта команда может иметь вид

\label{wash}

Ссылка на страницу, на которой расположена метка, производится с помощью команды \pageref. У нее также один обязательный аргумент — та самая метка, на которую вы хотите сослаться. Пример:

Обязательно мойте руки\label{wash} перед едой, чтобы не заболеть. Как известно (см. с.~\pageref{wash}), руки надо мыть.

Обратите внимание, что мы поставили команду \label. рядом с ключевым словом "руки" без пробела, чтобы гарантировать, что будет помечена именно та страница, на которую попало это слово.

В этом примере мы использовали еще значок "~ " (" неразрывный пробел"), чтобы при печати сокращение " с." попало на ту же строку, что и номер страницы. Подробности см. в разд."Неразрывный пробел" лекции 3.

После того как вы впервые вставите в свой файл команды \label и \pageref, при трансляции вы получите сообщение о том, что ваша ссылка не определена, а на печати или при просмотре увидите на месте своих ссылок вопросительные знаки.
Дело в том, что в этот момент LaTeX еще не знает значения ваших меток: он только записывает информацию о них в специальный файл (с тем же именем, что у обрабатываемого файла, и расширением aux при следующем запуске он прочтет эту информацию и подставит ссылки. Если в промежутке между двумя запусками в файл были внесены изменения, это может привести к сдвигу нумерации страниц. Если такие изменения действительно произошли, LaTeX сообщит вам об этом и попросит запустить программу еще раз, чтобы получить корректные ссылки. (На практике иногда нужно и больше запусков программы LaTeX — если в книге есть оглавление, предметный указатель и др.)

Если вы после двух запусков подряд получите сообщение о неопределенной ссылке, значит, в исходном тексте присутствует ошибка (вероятнее всего, опечатка в аргументе команды\pageref; возможно, вы забыли включить в текст команду \label).

На место, помеченное с помощью команды \label, можно сослаться с помощью команды \ref, а не \pageref — тогда на печати получится не номер страницы, а номер раздела документа, в котором находится метка, или номер рисунка, или номер элемента в нумерованном перечне и т.п. — пометить с возможностью ссылки можно почти любой элемент документа. Об этом мы будем подробно говорить в разд. "Еще о метках и ссылках" лекции 4.


Содержание раздела