有没有办法配置对 memoir 内置子浮点数的引用样式,即使用\subcaptionref
、 和时\ref
?例如,是否可以删除括号?
来自回忆录的记录:
Figure \ref{fig:twosubfig} has two subfigures,
namely \ref{sf:1}, \subcaptionref{sf:2}.
\begin{figure}
\centering
\subbottom[Subfigure 1]{\fbox{SUBFIGURE ONE}\label{sf:1}}
\hfill
\subbottom[Subfigure 2]{\fbox{SUBFIGURE TWO}\label{sf:2}}
\caption{Figure with two subfigures} \label{fig:twosubfig}
\end{figure}
生产
图10.19有两个子图,分别是10.19(a)、(b)。
这可以改为例如
图10.19有两个子图,分别是10.19a,b。
需要明确的是,更改最好仅适用于参考,而不是子标题本身。
答案1
下面更新了将子标题引用写入的方式.aux
,使\subcaptionref
pull 成为适当的非括号引用:
\documentclass{memoir}
\usepackage{etoolbox}
\newsubfloat{figure}
\newcommand{\thesubfigureref}{\alph{subfigure}}
\makeatletter
\AtBeginDocument{
\patchcmd{\sf@@memsub@label}% <cmd>
{\@nameuse{@@thesub\@captype}}% <search>
{\@nameuse{thesub\@captype ref}}% <replace>
{}{}% <success><failure>
}
\makeatother
\begin{document}
\setcounter{chapter}{9}% Just for this example
\chapter{A chapter}
\setcounter{figure}{18}% Just for this example
Figure \ref{fig:twosubfig} has two subfigures,
namely \ref{fig:twosubfig}\subcaptionref{sf:1}, \subcaptionref{sf:2}.
\begin{figure}[ht]
\centering
\subbottom[Subfigure 1]{\fbox{SUBFIGURE ONE}\label{sf:1}}
\subbottom[Subfigure 2]{\fbox{SUBFIGURE TWO}\label{sf:2}}
\caption{Figure with two subfigures} \label{fig:twosubfig}
\end{figure}
\end{document}
如果您正在加载hyperref
包裹(或者nameref
包裹) 也是如此。
答案2
根据 Werner 的回答以及一番挖掘memoir.cls
,可以很容易地将计数器更改subfigure
为所需的样式(例如,没有括号),然后使用宏修复子标题标签\@thesubfigure
。
\documentclass[oneside]{memoir}
% works with and without hyperref
%\usepackage{hyperref}
% create a figure subfloat
\newsubfloat{figure}
% change style
\makeatletter
\def\thesubfigure{\alph{subfigure}}
\def\@thesubfigure{(\alph{subfigure})%
\if@tightsubcap\hskip\subfloatlabelskip\else\space\fi}
\makeatother
\begin{document}
Figure \ref{fig:twosubfig} has two subfigures,
namely \ref{sf:1}, \subcaptionref{sf:2}.
\begin{figure}[h]
\centering
\subbottom[Subfigure 1]{\fbox{SUBFIGURE ONE}\label{sf:1}}
\hfill
\subbottom[Subfigure 2]{\fbox{SUBFIGURE TWO}\label{sf:2}}
\caption{Figure with two subfigures} \label{fig:twosubfig}
\end{figure}
\end{document}