使用 memoir 和 hyperref,我可以在图形标题中获得“\subref”吗?

使用 memoir 和 hyperref,我可以在图形标题中获得“\subref”吗?

我正在使用该类编写文档memoir。我想创建一个包含两个子图的图形,并显示一个标题,例如“Y 与 X 的图,其中 z=1 (a) 和 z=2 (b)”,其中“(a)”和“(b)”是对子图的引用。

我读如何在标题中引用子图自定义“回忆录”中子标题的引用?。以下基于 Werner 代码的示例解决了我的问题。

\documentclass{memoir}
\newsubfloat{figure}
\usepackage[demo]{graphicx}
\usepackage{xstring}
\usepackage{xspace}

\newcommand*{\subfigref}[1]{(\StrBetween{\ref{#1}}{(}{)})\xspace}%

\begin{document}

\begin{figure}[ht]
\centering
\subbottom[This is a subfigure\label{fig:label:a}]{\includegraphics{figure1}} \qquad
\subbottom[This is a subfigure\label{fig:label:b}]{\includegraphics{figure2}}
\caption{These are some awesome figures: \protect\subfigref{fig:label:a} and \protect\subfigref{fig:label:b} }
\label{fig:label1}
\end{figure}

\end{document}

我怎样才能使前面的例子工作hyperref? 在自定义“回忆录”中子标题的引用?,egreg 似乎知道如何做到这一点,但我对他的答案了解不够,无法将其用于这个特定问题。

编辑

请注意,我还想将诸如“在图 0.1(a) 中”之类的引用保留在图之外。

答案1

您可以重新定义\p@subfigure哪些控件将添加到subfigure计数器的前缀:

\documentclass{memoir}
\newsubfloat{figure}
\usepackage[demo]{graphicx}
\usepackage{hyperref}

\makeatletter
\renewcommand\p@subfigure{}
\makeatother

\begin{document}

\begin{figure}[ht]
\centering
\subbottom[This is a subfigure\label{fig:label:a}]{\includegraphics{figure1}} \qquad
\subbottom[This is a subfigure\label{fig:label:b}]{\includegraphics{figure2}}
\caption{These are some awesome figures:~\protect\ref{fig:label:a} and~\protect\ref{fig:label:b} }
\label{fig:label1}
\end{figure}

\end{document}

在此处输入图片描述

相关内容