当前一节为空时,不使用 KOMA-script 的 beforeskip

当前一节为空时,不使用 KOMA-script 的 beforeskip

你好,我发帖是因为我真的束手无策了。以下 MWE 说明了我的挑战。我希望在节之间有一致的间距,无论节中有无文本。我如何才能强制对每个节和小节使用 \beforeskip ?有什么想法吗?

在此处输入图片描述

% Created 2022-03-03 Thu 18:07
% Intended LaTeX compiler: pdflatex
\documentclass[a5paper,BCOR=0mm,DIV=30,10pt]{scrartcl}
\RedeclareSectionCommand[beforeskip=10.0pt,afterskip=1pt]{section} 
\RedeclareSectionCommand[beforeskip=5.0pt,afterskip=1pt]{subsection}
\setlength{\parindent}{0pt}

\begin{document}
\section*{Section}
\subsection*{Subsection does not follow beforeskip} 
\subsection*{Subsection does not follow beforeskip} 
\subsection*{Subsection does not follow beforeskip}  
test

\subsection*{Subsection  follows beforeskip} 
test

\subsection*{Subsection  follows beforeskip} 
test

\section*{Section follows beforeskip}
\subsection*{Subsection does not follow beforeskip} 
\subsection*{Subsection does not follow beforeskip} 
\section*{Section does not follows beforeskip}
\subsection*{Subsection does not follow beforeskip} 
test

\subsection*{Subsection  follows beforeskip} 
test

\end{document}

答案1

beforeskip仅当开关\if@nobreak为假时使用:(我使用更大的值来使差异更加明显):

\documentclass[a5paper,10pt]{scrartcl}
\RedeclareSectionCommand[beforeskip=30.0pt,afterskip=1pt]{section}
\RedeclareSectionCommand[beforeskip=25.0pt,afterskip=1pt]{subsection}
\begin{document}
\section{A}
\subsection{B}
\subsection{B}

\section{A}
\makeatletter \@nobreakfalse\makeatother
\subsection{B}
\makeatletter \@nobreakfalse\makeatother
\subsection{B}
\end{document}

在此处输入图片描述

这与标准类中的处理没有什么不同。

通常情况下,这就是您想要的行为,如果两个直接相连的分段命令之间没有太多空间,效果会更好。如果您确实想要均匀的间距,请将 beforeskip 设置为零,并使用 strut 代替(但请注意,它也将在页面顶部使用):

\documentclass[a5paper,10pt]{scrartcl}
\RedeclareSectionCommand[beforeskip=10.0pt,afterskip=1pt]{section}
\RedeclareSectionCommand[beforeskip=-1sp,afterskip=1pt]{subsection}
\addtokomafont{subsection}{\rule{0pt}{25pt}}
\begin{document}
\section{A}
\subsection{B}
\subsection{B}
text
\subsection{B}

\结束{文档}

在此处输入图片描述

相关内容