\subfloat
我想使用包中的命令在字幕中运行一个额外的命令subfig
。对于普通字幕,我只需重新定义\captionfont
,但这不适用于子浮点数的字幕。
我已经尝试过(我想要运行的命令是\sansmath
:
\documentclass{article}
\usepackage{caption}
\renewcommand{\captionfont}{\footnotesize\sffamily}
\usepackage{sansmath}
\usepackage[textfont=sf]{subfig}
\let\bensubfloat\subfloat
\renewcommand{\subfloat}[2][]{\bensubfloat[\sansmath #1]{#2}}
\begin{document}
\begin{figure}
\subfloat[Subcaption $1+1$]{\framebox[3cm]{First}} \hfill
\subfloat[Subcaption $1+a$]{\framebox[3cm]{Second}}
\caption{Main caption}
\end{figure}
\end{document}
这给出了所需的输出,但也有很多错误。
答案1
在我看来,你想要的是这个:
\documentclass{article}
\usepackage{sansmath,subfig}
\DeclareCaptionFont{sansmath}{\sansmath}
\captionsetup{font={footnotesize,sf,sansmath}}
\captionsetup[subfloat]{font={footnotesize,sf,sansmath}}
\begin{document}
\begin{figure}
\subfloat[Subcaption $1+a$]{\framebox[3cm]{First}} \hfill
\subfloat[Subcaption $1+b$]{\framebox[3cm]{Second}}
\caption{Main caption $1+x$}
\end{figure}
\end{document}
此代码使用了由标题包提供的 \DeclareCaptionFont,它正是为此目的而提供的 - 使用自己的命令(如 \sansmath)进行标题或子标题字体设置。
答案2
\documentclass{article}
\usepackage[textfont=sf]{subfig}
\usepackage{caption}
\renewcommand{\captionfont}{\footnotesize\sffamily}
\usepackage{sansmath}
\makeatletter
\long\def\sf@@subfloat[#1]{%
\@ifnextchar [% %] match left bracket
{\sf@@@subfloat{sub\@captype}[{\sansmath #1}]}%
{\sf@@@subfloat{sub\@captype}[\@empty{#1}][{\sansmath #1}]}}
\makeatother
\begin{document}
\begin{figure}
\subfloat[Subcaption $1+1$]{\framebox[3cm]{First}} \hfill
\subfloat[Subcaption $1+a$]{\framebox[3cm]{Second}}
\caption{Main caption}
\end{figure}
\end{document}
答案3
在移动参数中保护脆弱的命令:
\renewcommand{\subfloat}[2][]{\bensubfloat[\protect\sansmath #1]{#2}}