用 hypcap 宏包修复图表超链接不准的问题

LaTeX 中的 hyperref 宏包是一个非常强大的宏包,它提供了和超链接的各种接口。特别地,对于 LaTeX 原生的交叉引用,hyperref 宏包能够在引用位置生成一个超链接——点击之后跳转到相关位置。

不过,如果你将 \caption 放在 \includegraphics 后面,然后在文中对图片进行引用的话,点击超链接后将跳转到图片标题位置。此时,图片本身会被挡住。这多少有点不方便。

德国的 LaTeX 大牛 Heiko Oberdiek 写了一个叫做 hypcap 的宏包,专门用来解决这个问题。加载这个宏包之后,对浮动体(包括 figure/table 等)的引用链接会跳转至浮动体开始的地方。这样一来,figure 环境里的图片就不会被挡住了。

具体用法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
\documentclass{article}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage[all]{hypcap}
\usepackage{mwe} % for dummy text
\begin{document}
\begin{figure}[!htb]
\centering
\includegraphics[width = 0.6\linewidth]{example-image.jpg}
\caption{dummy figure}\label{fig:test}
\end{figure}
\blindtext
\clearpage
\blindtext

This is the hyper-reference of Figure \ref{fig:test}.
\end{document}

注意,这里我给 hypcap 宏包加上了 all 选项,说明 hypcap 宏包会处理全部类型的浮动体(详情请阅读其说明手册);mwe 宏包(是 Minimal Working Example 的缩写)是为了产生无意义的测试文字而加载的宏包,实际使用时可以去掉。


您的鼓励是我写作最大的动力

俗话说,投资效率是最好的投资。 如果您感觉我的文章质量不错,读后收获很大,预计能为您提高 10% 的工作效率,不妨小额捐助我一下,让我有动力继续写出更多好文章。


撰写评论

写了这么多年博客,收到的优秀评论少之又少。在这个属于 SNS 的时代也并不缺少向作者反馈的渠道。因此,如果你希望撰写评论,请发邮件至我的邮箱并注明文章标题,我会挑选对读者有价值的评论附加到文章末尾。