我有以下工作示例
\documentclass{article}
\usepackage[subrefformat=parens,labelformat=parens]{subfig}
\begin{document}
\textbf{Error} This should say Fig. 1\textbf{a}, not \ref{sf1}
\begin{figure}
\centering
\subfloat[Subfig 1]{\label{sf1} Contents of the sub-figure}
\qquad
\subfloat[Subfig 2]{\label{sf2} Contents of the sub-figure}
\caption{\textbf{Error} This should only say \textbf{b}, not \ref{sf2}}
\label{fig}
\end{figure}
\end{document}
基本上我的问题就在上面的 MWE 中进行了说明。
- 当我在图片标题中引用子图时,我希望它只引用粗体信
- 当我引用图形标题之外的子图时,我希望它引用图形编号+粗体信
答案1
您可以使用命令
\subref
代替\ref
。请注意,命令subref
很脆弱,因此您必须在内部进行保护caption
或使命令变得坚固。使用
\subref*
。
\documentclass{article}
\usepackage[labelformat=parens]{subfig}
\DeclareSubrefFormat{subbold}{#1\textbf{#2}}%for \subref*
\DeclareCaptionListOfFormat{subbold}{\textbf{#2}}%for subref
\captionsetup[subfloat]{labelfont={bf},listofformat=subbold,subrefformat=subbold}
\usepackage{etoolbox}
\robustify\subref
\begin{document}
\textbf{Error} This should say Fig. 1\textbf{a}, not \subref*{sf1}
\begin{figure}[!ht]
\centering
\subfloat[Subfig 1]{\label{sf1} Contents of the sub-figure}
\qquad
\subfloat[Subfig 2]{\label{sf2} Contents of the sub-figure}
\caption{\textbf{Error} This should only say \textbf{b}, not \subref{sf2}}
\label{fig}
\end{figure}
\end{document}