可以将 hyperref、subfigure 和 memoir 一起使用吗?

可以将 hyperref、subfigure 和 memoir 一起使用吗?

我问一个问题关于如何在 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}

加载包后。

相关内容