我在整个论文中都使用了 \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}
它生成的内容如下:
我读了一下,似乎它之所以这样做,是因为只要你在标题中插入任何 todonotes,它就会认为这是主体,然后后面的标签就会引用该部分(但不知何故保留了图表的计数器)。这显然是错误的。
将标签放在 \caption 之前是行不通的。将所有待办事项放在 \caption 之后是不合适的,因为更正都在标题内。
有人可以提出一个解决方案吗?
非常感谢,尼古拉。
答案1
这里有一个建议,它不是问题的直接解决方案\autoref
,而是一个强有力的选择使用\autoref
。
加载聪明人使用选项noabbrev
、nameinlink
和进行打包capitalize
(capitalise
也可以……),并发出指令
\cref{fig:YYY}
代替\autoref{fig:YYY}
。
(选项noabbrev
、nameinlink
和capitalize
使 的输出\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}