我问一个问题关于如何在 memoir 中使用 subfigure。我得到了一些很棒的提示,但现在 pdflatex 让所有 subfigure 超引用都指向前几个子图。它还给了我这个错误:
destination with the same identifier (name{subfigure.3}) has been already used, duplicate ignored
对于每个子图(除了任何索引处的第一个子图,即,第一个 {subfigure.n} 对于每个 n 都不会出现错误。)
我被指出对此,但 hyperref 是最后加载的包。
有谁让这个工作正常吗?
解决方案:
确保
\newsubfloat{figure}
关注
\usepackage{hyperref}
答案1
请提供一个不起作用的例子?这对我来说似乎有效:
\documentclass{memoir}
\usepackage{hyperref}
\newsubfloat{figure}
\begin{document}
\begin{figure}
\centering
\subtop[Sub~a.]{Foo\label{subfig:a}}\qquad
\subtop[Sub~b.]{Bar\label{subfig:b}}
\caption{First.}
\end{figure}
\clearpage
\begin{figure}
\centering
\subtop[Sub~c.]{Baz\label{subfig:c}}\qquad
\subtop[Sub~d.]{Foobar\label{subfig:d}}
\caption{Second.}
\end{figure}
\clearpage
\noindent
Main: \ref{subfig:a} Sub: \subcaptionref{subfig:a}\\
Main: \ref{subfig:b} Sub: \subcaptionref{subfig:b}\\
Main: \ref{subfig:c} Sub: \subcaptionref{subfig:c}\\
Main: \ref{subfig:d} Sub: \subcaptionref{subfig:d}
\end{document}
如果愿意的话,您甚至可以使用 hypreref 中的 \autoref。
\documentclass{memoir}
\usepackage{hyperref}
\newsubfloat{figure}
\providecommand*{\subfigureautorefname}{Subfig.}
\begin{document}
\noindent
\autoref{fig:1} on page \pageref{fig:1} contains two subfigures,
\autoref{subfig:a} \& \subcaptionref{subfig:b}.
\clearpage
\begin{figure}
\centering
\subtop[Sub~a.]{Foo\label{subfig:a}}\qquad
\subtop[Sub~b.]{Bar\label{subfig:b}}
\caption{First.}\label{fig:1}
\end{figure}
\end{document}
答案2
该选项hypertexnames
可能会修复此问题。在加载包时或在 \hypersetup 中指定它,即
\usepackage[hypertexnames=true]{hyperref}
或者
\hypersetup{hypertexnames=true}
加载包后。