我想将子图引用的样式设置为Fig. 1(a)
连续文本和(Fig. 1a)
括号中的样式。子图标签是使用以下方式创建的:此代码.(我更喜欢subcaption
使用在这个答案中,但它会导致我所坚持的严重过时的日记类别发出警告。)
使用第一种格式很容易获得\renewcommand{\thesubfigure}{\thefigure(\alph{subfigure})}
,我尝试遵循这个答案对于第二步,但无论我怎么尝试,它似乎都没有作用。
\documentclass{article}
\usepackage{hyperref}
\usepackage{cleveref}
% Sub-figure references b/c class is broken. See link above.
\makeatletter
\newcounter{subfigure}[figure]
\renewcommand{\thesubfigure}{\thefigure(\alph{subfigure})}
\newcommand{\subfigure}{%
\H@refstepcounter{subfigure}%
\ifHy@hypertexnames%
\hyper@makecurrent\@captype%
\else%
\global\let\@currentHref\hc@currentHref%
\fi%
}
\makeatother
% Special format when within enclosing parentheses
\newcommand{\crefp}[1]{%
\begingroup%
\renewcommand{\thesubfigure}{\thefigure\alph{subfigure}}%
(\cref{#1})%
\endgroup%
}
\begin{document}
\begin{figure}
\framebox[\textwidth]{Something}
\caption{Caption}
\label{fig:example}
\subfigure\label{fig:example-1}
\end{figure}
Some text referencing the figure: \cref{fig:example},
and in parentheses: \crefp{fig:example}.
Some text referencing the subfigure: \cref{fig:example-1},
and in parentheses: \crefp{fig:example-1}.
\end{document}
结果是:
Some text referencing the figure: fig. 1, and in parentheses: (fig. 1). Some
text referencing the subfigure: fig. 1(a), and in parentheses: (fig. 1(a)).
我也尝试过弄乱\p@subfigure
或添加额外的宏,但到目前为止还没有成功。
(注意:我也可以将 hyperref 或 cleveref 排除在 MWE 之外,但由于它们对引用有神奇的作用,而且我无论如何都要使用它们,所以我将它们保留了下来。)