将 hyperref 的 autoref 函数与 todonotes 一起使用会弄乱引用名称

将 hyperref 的 autoref 函数与 todonotes 一起使用会弄乱引用名称

我在整个论文中都使用了 \autoref,当进行更正并需要使用 todonotes 包跟踪它们时,我注意到 \autoref 函数生成了错误的标签。

为了说明我的意思,这里是 MWE:

\documentclass{article}
\usepackage{hyperref}
\usepackage{todonotes}

\begin{document}
\section{ABC}
\section{DEF}
\section{EFG}
\section{HIJ}

\begin{figure}
\centering
XXX
\caption{Three Xs}
\label{fig:XXX}
\end{figure}

\begin{figure}
\centering
YYY
\caption{Three Y's \todo[inline]{remove the apostrophe}}
\label{fig:YYY}
\end{figure}

Should be Figure 1: \autoref{fig:XXX}


Should be Figure 2: \autoref{fig:YYY}

\end{document}

它生成的内容如下: 关于 autoref 的 MWE 问题

我读了一下,似乎它之所以这样做,是因为只要你在标题中插入任何 todonotes,它就会认为这是主体,然后后面的标签就会引用该部分(但不知何故保留了图表的计数器)。这显然是错误的。

将标签放在 \caption 之前是行不通的。将所有待办事项放在 \caption 之后是不合适的,因为更正都在标题内。

有人可以提出一个解决方案吗?

非常感谢,尼古拉。

答案1

这里有一个建议,它不是问题的直接解决方案\autoref,而是一个强有力的选择使用\autoref

加载聪明人使用选项noabbrevnameinlink和进行打包capitalizecapitalise也可以……),并发出指令

\cref{fig:YYY}

代替\autoref{fig:YYY}

(选项noabbrevnameinlinkcapitalize使 的输出\cref看起来像 的输出\autoref。)

在此处输入图片描述

\documentclass{article}
\usepackage[colorlinks]{hyperref}
\usepackage{todonotes}
\usepackage[noabbrev,nameinlink,capitalize]{cleveref}
\begin{document}
\begin{figure}
\centering
XXX
\caption{Three Xs}
\label{fig:XXX}
\end{figure}

\begin{figure}
\centering
YYY
\caption{Three Y's \todo[inline]{remove the apostrophe}}
\label{fig:YYY}
\end{figure}
Should be Figure 1: \autoref{fig:XXX}, \cref{fig:XXX}

Should be Figure 2: \autoref{fig:YYY}, \cref{fig:YYY}
\end{document}

相关内容