我发现该包生成的子标题标签存在问题subfig
。标签和标题之间的距离是错误的,但只有当我更改颜色\addtokomafont
并且颜色是我更改的最后一个参数时才会出现这种情况。以下是代码:
\documentclass{scrbook}
\usepackage[colorlinks=true]{hyperref}
\usepackage{subfig}
\addtokomafont{captionlabel}{\sffamily\color{blue}}
%\addtokomafont{captionlabel}{\color{blue}\sffamily}
\begin{document}
\begin{figure}
\center
\subfloat[][Test.]{\rule{2cm}{2cm}}
\quad
\subfloat[][Test.]{\rule{3cm}{2cm}}
\caption{foo}
\end{figure}
\end{document}
结果:
(使用标准字体时,这一点并不像我的字体选择那样明显,因此仅供说明:在图片中,“(a)”和“Test.”之间缺少一个空格字符,“(b)”也是如此)由于用字体选择交换颜色选择已经是一种解决方法(请参阅代码中的注释行),我没有遇到特别的问题,但我对它为什么会这样表现很感兴趣。此外,也许其他人通过仅选择一种颜色来观察问题,而这不会导致他们找到解决方法。因此,我要求澄清一下该机制以及是否可以普遍解决它。
因为我认为这是一个错误,但涉及几个包(hyperref,KOMAscript,subfig),我应该将错误报告发送给谁?
答案1
该subfig
包加载caption
,因此最好使用该包的功能。
\documentclass{scrbook}
\usepackage{xcolor}
\usepackage{subfig}
\DeclareCaptionLabelFormat{bluesf}{\sffamily\color{blue}#1 #2}
\DeclareCaptionLabelFormat{subbluesf}{\sffamily\color{blue}(#2)}
\DeclareCaptionLabelSeparator{bluecolon}{\sffamily\color{blue}: }
\captionsetup{labelformat=bluesf,labelsep=bluecolon}
\captionsetup[subfloat]{labelformat=subbluesf}
\begin{document}
\begin{figure}
\centering
\subfloat[][Test.]{\rule{2cm}{2cm}}
\quad
\subfloat[][Test.]{\rule{3cm}{2cm}}
\caption{foo}
\end{figure}
\end{document}
请注意,这\centering
是正确的命令。
但是,subfig
的表现很糟糕hyperref
,所以您可能需要考虑subcaption
。
\documentclass{scrbook}
\usepackage{xcolor}
\usepackage{subcaption}
\DeclareCaptionLabelFormat{bluesf}{\sffamily\color{blue}#1 #2}
\DeclareCaptionLabelFormat{subbluesf}{\sffamily\color{blue}(#2)}
\DeclareCaptionLabelSeparator{bluecolon}{\sffamily\color{blue}: }
\captionsetup{labelformat=bluesf,labelsep=bluecolon}
\captionsetup[subfigure]{labelformat=subbluesf}
\begin{document}
\begin{figure}
\centering
\subcaptionbox{Test.}{\rule{2cm}{2cm}}
\quad
\subcaptionbox{Test.}{\rule{3cm}{2cm}}
\caption{foo}
\end{figure}
\end{document}
输出完全相同。
答案2
问题中已经给出了解决方法。如果颜色选择是唯一要实现的功能,则可以使用不会导致外观改变的命令。例如,\color{blue}\null
在这种情况下有效,或者可能更好\color{blue}{}
(一个空组)。