对于我的文档中的每个图,我都需要有相应的补充图:例如,对于图 1,我可能有图 1 - S1,图 1 - S2,等等。
我使用 renewcommand 来获取这些名称。在 \thefigure 的新定义中,我只需使用 \ref* 指向主图形即可获取第一个数字。一切顺利。
但补充图片的链接指向了错误的地方。如果我尝试重新定义 \theHfigure,我收到各种奇怪的错误。
\documentclass{article}
\usepackage{hyperref}
\usepackage{cleveref}
\begin{document}
\section*{Main text}
This is my \cref{figure}.
\begin{figure}[h!]
%...
\caption{Some figure.}
\label{figure}
\end{figure}
\section*{Supplement}
This figure concerns the \cref{figure} and is the \cref{suppfigure}.
\setcounter{figure}{0}
\renewcommand\thefigure{\ref*{figure} -- S\arabic{figure}}
\renewcommand{\theHfigure}{S{\thefigure}}
\begin{figure}[h!]
%...
\caption{Juicy details.}
\label{suppfigure}
\end{figure}
\end{document}
输出:
(...) ! \Hy@tempa 的参数有一个额外的 }。 \par l.382 }
该错误似乎是由 \thefigure 的新定义中的 \ref* 引起的,因为如果我删除它,它就可以正常工作。
有没有办法来解决这个问题?
答案1
您的定义\theHfigure
太复杂了。由于它包含 \ref 命令,因此 hyperref 无法用它构建名称。所有\theH...
定义都需要遵循两个规则:它们应该简单(可扩展)并且指向唯一的东西。因此使用例如
\renewcommand{\theHfigure}{S{\arabic{figure}}}