我正在使用该类编写文档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}