使用 \autoref 命令生成子图超链接的格式调整
\(\qquad\!\!\)今日在写近代物理实验报告时发现的一个小问题,遂记录之。
\(\qquad\!\!\)在需要插入带有层级性的子图(e.g.
图1(a))时,使用非常简单的 subfig
宏包中的
subfloat
命令进行排版,与此同时还希望使用
hyperref
宏包中的 \autoref
命令进行便捷的超链接。这时发现,超链接形式近为 1a、1b 比较简单且与子图的
caption 中的带括号的 caption 不符,遂尝试对于 \autoref
命令生成超链接的格式进行调整。
\(\qquad\!\!\)首先因为 mpltx
文档类基于 revtex4-2
文档类,subfig
宏包默认调用了 caption
,本不能在本文档类下使用,但是我们可以把 subfig
的
caption
选项关闭即可使用:
1 | \usepackage[caption=false]{subfig} |
\(\qquad\!\!\)根据
mpltx
文档类的 \autoref
本地化,子图也是图,自然在超链接时也应该加上相应的前缀:
1 | \def\subfigureautorefname{图} |
因为超链接关于子图的后缀由 \thesubfigure
提供,所以直接将 \thesubfigure
定义为由小括号包裹的小写字母的计数器即可:
1 | \renewcommand\thesubfigure{(\alph{subfigure})} |
但是此时因为生成子图的标签样式本身就已经带有一对小括号,直接进行以上修改会导致子图的 caption 中带上两层括号(e.g. ((1))、((2))),所以需要先采用简单的标签格式:
1 | \captionsetup[subfloat]{labelformat=simple} |
\(\qquad\!\!\)综上所述,我们对于
\autoref
命令生成子图的超链接格式进行了符合
mpltx
的本地化调整,下面给出一个可以完整运行的
MWE(图片除外):
1 | \documentclass{ctexart} |
效果: