Hyperref 不适用于 \subbottom 内的图例标签

Hyperref 不适用于 \subbottom 内的图例标签

当我将Hyperref包与回忆录类一起使用时,并且将标签放到环境PGFPlot内部subbottom,并尝试引用它时,报告错误:

! File ended while scanning use of \Hy@setref@link.

一位 MWE 表示:

\documentclass[11pt, letterpaper, oneside, article]{memoir}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\usepackage[hyperfootnotes=true]{hyperref}
\newsubfloat{figure}

\begin{document}
A test for hyperref, subbottom of memoir class, and legend reference.
This is the legend reference:\ref{plot:firstplot}.

\begin{figure}[hbt]
\centering
\subbottom[]{
\begin{tikzpicture}
\begin{axis}
  \addplot coordinates {(0,0)(0.5,1)(1,2)};
  \label{plot:firstplot}
\end{axis}
\end{tikzpicture}
}
\end{figure}

\end{document}

如果我们不使用Hyperref,或者如果我们不把情节放进去subbottom,事情就会顺利进行。

答案1

我可以重现该问题。

原因是 memoir 和 pgfplots 都覆盖了\label(以不兼容的方式)。Pgfplots 有一些解决方法可以\label在本地恢复其自身,但该解决方法似乎与 hyperref 导致的某些操作相冲突。

解决方法是加载hyperref pgfplots,在这种情况下,一切都按预期进行。

我希望有一个在所有情况下都有效的更好的解决方案,但它可能需要深入挖掘根本原因(志愿者?)。

相关内容