subfig 包中的额外命令

subfig 包中的额外命令

\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}}

相关内容