常规的交叉引用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| \documentclass{ctexart} \usepackage{graphicx}
\begin{document} \section{第一章} \begin{figure} [htbp] \centering \includegraphics{example-image-duck} \caption{This is a duck image} \label{duck} \end{figure} 这是一段正文,这里需要交叉引用这张图片。由\ref{duck}可知,图片当中是一只鸭子。 \end{document}
|
从输出的图片可以看出,通过标签的形式实现图片的交叉引用,交叉引用中只会出现交叉引用的序号 “1”,而不是输出 “图 1”,如果要实现输出 “图 1” 的效果,需要在 tex 中手动添加,如:
1
| 由图 \ref{duck}可知,图片当中是一只鸭子。
|
那么每次交叉引用图、表、公式等都需要手动去敲这个 “前缀”,有没有更人性化一些的工具或宏包呢?
引出今天的主角:hyperref 宏包
hyperref 宏包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| \documentclass{ctexart} \usepackage{graphicx} \usepackage{hyperref} \def\figureautorefname{图} \def\tableautorefname{表}
\begin{document} \section{第一章} \begin{figure} [htbp] \centering \includegraphics{example-image-duck} \caption{This is a duck image} \label{duck} \end{figure} 这是一段正文,这里需要交叉引用这张图片。由\autoref{duck}可知,图片当中是一只鸭子。 \end{document}
|
简要步骤如下
- 使用 hyperref 宏包(可修改引用时的 “前缀”)
- 需要交叉引用的位置打上标签
- 正文中通过使用
\autoref{mylabel}
实现交叉引用
但是,也引出了一个新问题,存在交叉引用的地方有红色的边框
如何去除 hyperref 带来的红边框
解决方案 1
1
| \usepackage[hidelinks]{hyperref}
|
解决方案 2
1 2 3 4
| \hypersetup{ colorlinks=true, linkcolor=black }
|
推荐解决方案 1,也就是 hyperref 宏包提供的参数设置中的可选参数 hidelinks
hyperref 宏包提供的更多参数设置可查阅 Latex 的官方入门手册:一份(不太)简短的 LaTeX2ε 介绍
拓展
1 2 3 4 5 6
| \usepackage{hyperref} \def\figureautorefname{图} \def\tableautorefname{表}
|
除了图和表之外,对于其他如定理环境的交叉引用汇总如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| \def\equationautorefname{式} \def\footnoteautorefname{脚注} \def\itemautorefname{项} \def\figureautorefname{图} \def\tableautorefname{表} \def\partautorefname{篇} \def\appendixautorefname{附录} \def\chapterautorefname{章} \def\sectionautorefname{节} \def\subsectionautorefname{小小节} \def\subsubsectionautorefname{subsubsection} \def\paragraphautorefname{段落} \def\subparagraphautorefname{子段落} \def\FancyVerbLineautorefname{行} \def\theoremautorefname{定理}
|
参考资料