
Я новичок в TEX и сейчас учусь создавать ссылку. Я читаю книгу "The Not So Short Introduction to LATEX2" авторов Oetiker, Partl, Hyna, Schlegl; на странице 42 раздел 2.8 Cross Reference, код написан как
A reference to this section \label{sec:this} looks like:
"see section~\ref{sec:this} on page~\pageref{sec:this}"
Я использую CTex и WinEdt, и у меня есть вопросы:
- Я сделал файл pdf из кода выше, но номера разделов и страниц не подсвечиваются, и я не могу на них нажать. Почему так?
- Я пытался сделать ссылку на другие страницы, введя номер страницы, например
{sec:37}
, но это не работает. Как это исправить? - Что на самом деле означает код
sec
? Он произвольный или предопределенный синтаксис? - Когда я набрал
\label{}
, появилось меню с названием «Метки (51)», а также выпадающее меню типаc:ISYAC
,c:UNBOUND
,c:UNIFBURN
,... и т. д... что это? Нам нужно выбирать из этого списка или мы можем написать свое собственное, например{sec:this}
?
Помощь очень ценится! Большое спасибо!
решение1
Общий механизм заключается в установке якоря в каком-либо месте вашего документа с помощью \label{<name>}
, где <name>
может быть комбинация цифр, букв :
и -
(для безопасности). Эти якоря должны быть явно установлены автором, поэтому \ref{sec:47}
не работают, если только это не определено вами. После установки якоря вы можете ссылаться на него с помощью \ref{<name>}
(указав соответствующий счетчик, например, главу, раздел, уравнение или … номер) или \pageref{<name>}
(указав соответствующий номер страницы).
Некоторые авторы используют идентификаторы вроде sec:
, и т. д. eq:
, thm:
чтобы сделать имена якорей более удобными для чтения человеком, но это не обязательно для работы механизма.
пакеты
Механизм LaTeX может быть расширен некоторыми пакетами:
hyperref
делает ссылки кликабельными гиперссылками (и имеет некоторые дополнительные функции).cleveref
находит правильные названия для этикеток и печатает\ref{anchor5}
какsection~5
вместо5
, например.varioref
сравнивает номера страниц анкора и ссылки и автоматически добавляет текст, напримерon previous page
, и т. д.on page 6
nameref
можно распечатать фактическое название якоря.
МВЭ
\documentclass[english]{article}
% langage
\usepackage{babel}
% only for \lipsum blind text
\usepackage{lipsum}
% ref packages
\usepackage{nameref}
% folowing must be in this order
\usepackage{varioref}
\usepackage{hyperref}
\usepackage{cleveref}
\begin{document}
\section{First section}
\lipsum[1-10]
\section{My section}\label{sec:mysection}
\lipsum[1-22]
\section{References}
\begin{itemize}
\item \verb+\ref{sec:mysection}+: \ref{sec:mysection}
\item \verb+\pageref{sec:mysection}+: \pageref{sec:mysection}
\item \verb+\cref{sec:mysection}+: \cref{sec:mysection}
\item \verb+\cpageref{sec:mysection}+: \cpageref{sec:mysection}
\item \verb+\vref{sec:mysection}+: \vref{sec:mysection}% already combined with \cref
\item \verb+\vpageref{sec:mysection}+: \vpageref{sec:mysection}
\item \verb+\nameref{sec:mysection}+: \nameref{sec:mysection}
\end{itemize}
\end{document}