简介

在用 Word 编辑文档时,遇见的最为烦恼的问题莫过于,在文中用到“如图 x-x 所示”的表示时,当修改文章时,换掉了整篇文章图表的编号,再去修改文中引用到的编号不胜其烦。在 LaTeX 中可以通过交叉引用十分方便的解决该问题(ps: Word 里面也有交叉引用的功能,但用起来不是 那么方便)。在 LaTeX 中几乎可以实现对所有的自动编号内容引用的自动化管理。本篇文章是对 LaTeX 中的交叉引用做一个简要的介绍。在 LaTeX 中的交叉引用可以通过下面一对命令实现,顾名思义,简单的意思就是在引用之前先标记。 \label{marker} ??

引用章节

首先来做一个简单的章节应用示例:
    \section{交叉引用}
    \subsection{引用章节}\label{subsection1}
    \subsection{引用图表}
    在 \ref{subsection1} 小节中我们介绍了如何在\LaTeX 中引用章节,这节我们给出一个引用图表的示例。
 示例结果:chapter

引用图表

引用图表示例:

在 \ref{subsection1} 节中我们介绍了如何在 LaTeX 中引用章节,这节我们给出一个引用图表的示例。
\begin{figure}[h]
\centering
\includegraphics[width=0.3\linewidth]{logo.png}
\caption{ElegantLaTeX Logo}
\label{fig:logo}
\end{figure}
图 \ref{fig:logo} 是 ElegantLaTeX 的 Logo。

引用数学式

\begin{equation}
E = mc^{2}
\label{eq:1}
\end{equation}
在式\ref{eq:1}的质能方程中$m$表示物体的质量。

引用页

引用页示例:

通过\pageref{subsection1}页节\ref{subsection1}的介绍,能基本了解在\LaTeX中交叉引用的用法了。
 以上三个示例结果如图: equation

相关宏包

交叉引用作为\LaTeX中最为实用的功能之一,不少的宏包都对其进行了扩展其中最为常用的是amsmath, varioref, cleveref以及hyperref。在amsmath宏包中通过命令eref来实现引用varioref中有vref命令,cleveref中有cref命令,在hyperref则叫autoref,通过下面的例子可以简单比较不同宏包中引用命令在格式上的差异。

\begin{equation}\label{eq:2}
\sum_{i=0}^{\infty} a_i x^i
\end{equation}
首先通过vref命令来引用等式\vref{eq:2},eref也可以引用式\eqref{eq:2}, cref命令自然也行\cref{eq:2},最后我们再来试试autoref吧,召唤等式\autoref{eq:2}。
difference 在这里需要简要的提一下几个命令之间的不同:varioref宏包的vref命令可以通过宏包提供的 labelformat 命令来定义引用的格式,但是vref命令不能根据上下文来决定引用的格式,如通常在句子开头需要用“Equation 1”但在中间或者末尾用”eq.1″即可,autoref命令可以实现引用之间的跳转,但该命令使用的默认超链接格式有个红框,个人认为比较丑,cref命令在自定义格式方面功能更加强大,eqref只能用于数学式子。下面是从stackflow上面引用的一个例子,自定义cref不等式引用。
\cref{ab,cd} and \cref{ab,cd,ef}
\begin{equation}
\label[ineqs]{ab} 
a>b 
\end{equation}
and
\begin{equation}
\label[ineqs]{cd} 
c>b 
\end{equation}
and
\begin{equation}
\label[ineqs]{ef} 
e>f 
\end{equation}
运行结果如下图所示:Ineqs

文件之间的交叉引用

通过上面的例子基本上能完成文章的交叉引用需要了,但在我们撰写长篇文章时,需要将tex文件分成好几个文件,此时,可以通过zr宏包来实现不同文件之间的交叉引用,示例:文件example.tex

\documentclass{article}
\usepackage{xr}
\externaldocument{chapterI}
\begin{document}
this is section \ref{conclusion}
\end{document}
 文件chapterI.tex
\section{Conclusion}\label{conclusion}
difile需要注意的是在使用中文测试时,编译完后生成的引用会是??,但是在英文中没有问题,具体解释有待进一步探索。 选自:http://elegantlatex.org/2015/02/06/latex-cross-reference/

点赞(22)

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部