\addtokomafont 的意外行为

\addtokomafont 的意外行为

关于以下两个例子,我的问题是:它是一个错误还是一个功能(或者我错过了什么)?

\documentclass{scrbook}
\usepackage{xcolor}
% \addtokomafont{sectioning}{\color{green}}
 \addtokomafont{chapter}{\color{green}}
 \addtokomafont{section}{\color{green}}
 \addtokomafont{subsection}{\color{green}}
 \addtokomafont{subsubsection}{\color{green}}

\setlength{\textheight}{13\baselineskip}
\begin{document}
\chapter{test}

AAA

\section{test}

\subsection{subtest}

AAA
\end{document}

请比较示例的结果[抱歉,我无法上传图片]。

\documentclass{scrbook}
\usepackage{xcolor}
 \addtokomafont{sectioning}{\color{green}}
% \addtokomafont{chapter}{\color{green}}
% \addtokomafont{section}{\color{green}}
% \addtokomafont{subsection}{\color{green}}
% \addtokomafont{subsubsection}{\color{green}}

\setlength{\textheight}{13\baselineskip}
\begin{document}
\chapter{test}

AAA

\section{test}

\subsection{subtest}

AAA
\end{document}

前者显示\section和之间的分页符\subsection

答案1

使用最新的 KOMA-Script(至少版本 3.21,当前版本为 3.22),我没有在\section和之间获得分页符\subsection

即使我用

\addtokomafont{section}{\color{blue}}
\addtokomafont{subsection}{\color{red}}

结果是

在此处输入图片描述

所以你必须更新你的KOMA-Script 版本。


针对 3.20 或更早版本的解决方法:

您可以在命令\nobreak后添加\color

\documentclass{scrbook}
\usepackage{xcolor}
\addtokomafont{sectioning}{\color{green}\nobreak}
\addtokomafont{section}{\color{blue}\nobreak}
\addtokomafont{subsection}{\color{red}\nobreak}

\setlength{\textheight}{13\baselineskip}
\begin{document}
\chapter{test}
\KOMAScriptVersion
\section{test}
\subsection{subtest}
AAA
\end{document}

\leavevmode之前\color(另见这个问题):

\documentclass{scrbook}
\usepackage{xcolor}
\addtokomafont{sectioning}{\leavevmode\color{green}}% see https://tex.stackexchange.com/a/314243/43317
\addtokomafont{section}{\leavevmode\color{blue}}
\addtokomafont{subsection}{\leavevmode\color{red}}

\setlength{\textheight}{13\baselineskip}
\begin{document}
\chapter{test}
\KOMAScriptVersion
\section{test}
\subsection{subtest}
AAA
\end{document}

两者均导致

在此处输入图片描述

相关内容