我是 TEX 初学者,现在正在学习如何创建引用。我正在阅读 Oetiker、Partl、Hyna、Schlegl 所著的《The Not So Short Introduction to LATEX2》一书;在第 42 页第 2.8 节“交叉引用”中,代码写为
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}