使用 koma-script 调整章节/小节标题周围的间距

使用 koma-script 调整章节/小节标题周围的间距

使用 KOMA-scriptscrreprt类可以按以下方式调整章节标题前后的垂直间距:

\renewcommand*{\chapterheadstartvskip}{\vspace*{0cm}}
\renewcommand*{\chapterheadendvskip}{\vspace*{70.9pt}}

但是,我找不到对章节、小节(以及可能的子小节)标题执行相同操作的方法。我知道有一个titlesec包含命令的包

\titlespacing*{\section}{0pt}{28.35pt}{0pt}

但使用带有 titlesec 的 KOMA-Script 时,系统会给出警告“不建议将包 `titlesec' 与 KOMA-Script 类一起使用”。有没有其他方法可以调整与 KOMA-Script 类兼容的节标题周围的垂直间距?

答案1

更新

KOMA-Script 版本 3.26\RedeclareSectionCommand为and引入了两个新键\RedeclareSectionCommandsruninand afterindent。这两个键的可能值分别是bysigntruefalse

runin

此键仅针对带有的分段命令定义style=section,例如 sectionsubsectionsubsubsectionparagraphsubparagraph

默认情况下runin=bysign已设置。然后的符号afterskip决定航向是否为连续航向(负号)或不是(正值),并且的绝对值afterskip用于航向后的水平或垂直跳跃。这与下面原始答案中解释的行为相同。

runin=true它是一个连续的航向,并且 的符号afterskip不再有意义。请注意, 的绝对值afterskip用作水平跳跃。因此,即使 为负值afterskip也会导致正水平跳跃。

runin=false它是一个独立航向, 的值afterskip用作垂直跳跃。请注意,runin=false的负值afterskip会导致负垂直跳跃。

afterindent

默认情况下

  • afterindent=bysign设置为style=section并且style=chapter
  • afterindent=true设置为style=part和类scrartcl
  • afterindent=false设置为style=part和类scrbook

afterindent=bysign的符号beforeskip决定标题后的第一行是否使用段落缩进。afterskip=bysign的绝对值beforeskip用作标题上方的垂直跳过。这与下面原始答案中解释的行为相同。

afterindent=true段落缩进用于独立标题后的第一行。afterindent=false第一行没有缩进。如果同时使用afterindent=true或,则afterindent=false的值beforeskip将用作标题上方的跳过。因此,beforeskip即使对于连续标题,负值也会导致负跳过。

例子:

\documentclass{scrreprt}

\RedeclareSectionCommand[
  %runin=false,
  afterindent=false,
  beforeskip=0pt,
  afterskip=2\baselineskip]{chapter}
\RedeclareSectionCommand[
  %runin=false,
  afterindent=false,
  beforeskip=\baselineskip,
  afterskip=.5\baselineskip]{section}
\RedeclareSectionCommand[
  %runin=false,
  afterindent=false,
  beforeskip=.75\baselineskip,
  afterskip=.5\baselineskip]{subsection}
\RedeclareSectionCommand[
  %runin=false,
  afterindent=false,
  beforeskip=.5\baselineskip,
  afterskip=.25\baselineskip]{subsubsection}
\RedeclareSectionCommand[
  runin=true,
  %afterindent=false,
  beforeskip=.5\baselineskip,
  afterskip=1em]{paragraph}
\RedeclareSectionCommand[
  runin=true,
  %afterindent=false,
  beforeskip=.5\baselineskip,
  afterskip=1em]{subparagraph}

\begin{document}
\chapter{Erde}
Der eigentliche Text.\par
Test
\section{Europa}
Der eigentliche Text.
\subsection{Italien}
Der eigentliche Text.
\subsubsection{Toskana}
Der eigentliche Text.
\paragraph{Florenz}
Der eigentliche Text.
\subparagraph{Dom}
Der eigentliche Text
\end{document}

原始答案

使用新的宏\RedeclareSectionCommand\RedeclareSectionCommandsKOMA-Script 版本 3.15

\documentclass{scrreprt}

\RedeclareSectionCommand[
  beforeskip=-1sp,
  afterskip=2\baselineskip]{chapter}
\RedeclareSectionCommand[
  beforeskip=-\baselineskip,
  afterskip=.5\baselineskip]{section}
\RedeclareSectionCommand[
  beforeskip=-.75\baselineskip,
  afterskip=.5\baselineskip]{subsection}
\RedeclareSectionCommand[
  beforeskip=-.5\baselineskip,
  afterskip=.25\baselineskip]{subsubsection}
\RedeclareSectionCommand[
  beforeskip=.5\baselineskip,
  afterskip=-1em]{paragraph}
\RedeclareSectionCommand[
  beforeskip=-.5\baselineskip,
  afterskip=-1em]{subparagraph}

\usepackage{blindtext}
\begin{document}
\chapter{Erde}
Der eigentliche Text.\par
Test
\section{Europa}
Der eigentliche Text.
\subsection{Italien}
Der eigentliche Text.
\subsubsection{Toskana}
Der eigentliche Text.
\paragraph{Florenz}
Der eigentliche Text.
\subparagraph{Dom}
Der eigentliche Text
\end{document}

在此处输入图片描述

beforeskip:绝对值是标题前的垂直空间。如果值为负数,则抑制此标题后面的文本的段落缩进。

afterskip:正值表示在标题下方垂直跳跃。负值表示激活跑入标题。绝对值表示水平跳跃。

还有一个命令\RedeclareSectionCommands可以一次更改多个类似部分的命令:

\documentclass{scrreprt}

\renewcommand*{\chapterheadstartvskip}{\vspace*{0cm}}
\renewcommand*{\chapterheadendvskip}{\vspace*{2\baselineskip}}

\RedeclareSectionCommands[
  beforeskip=-.5\baselineskip,
  afterskip=.25\baselineskip
]{section,subsection,subsubsection}
\RedeclareSectionCommands[
  beforeskip=.5\baselineskip,
  afterskip=-1em]{paragraph,subparagraph}

\begin{document}
\chapter{Erde}
Der eigentliche Text.\par
Test
\section{Europa}
Der eigentliche Text.
\subsection{Italien}
Der eigentliche Text.
\subsubsection{Toskana}
Der eigentliche Text.
\paragraph{Florenz}
Der eigentliche Text.
\subparagraph{Dom}
Der eigentliche Text
\end{document}

在此处输入图片描述

结果和原答案相同。

KOMA-Script 版本 3.14你必须重新定义原始命令(基于Markus Kohm 的建议)。请注意,这些命令的原始定义在不同的 KOMA-Script 版本中有所不同。

\documentclass[headings=small]{scrreprt}

\renewcommand*{\chapterheadstartvskip}{\vspace*{0cm}}
\renewcommand*{\chapterheadendvskip}{\vspace*{2\baselineskip}}

\makeatletter
 %% check if this are the original definitions
\CheckCommand\section{%
  \scr@startsection{section}{\sectionnumdepth}{\z@}%
  {-3.5ex \@plus -1ex \@minus -.2ex}%
  {2.3ex \@plus.2ex}%
  {\ifnum \scr@compatibility>\@nameuse{scr@[email protected]}\relax
    \setlength{\parfillskip}{\z@ plus 1fil}\fi
    \raggedsection\normalfont\sectfont\nobreak\size@section}%
}
\CheckCommand\subsection{%
  \scr@startsection{subsection}{\subsectionnumdepth}{\z@}%
  {-3.25ex\@plus -1ex \@minus -.2ex}%
  {1.5ex \@plus .2ex}%
  {\ifnum \scr@compatibility>\@nameuse{scr@[email protected]}\relax
    \setlength{\parfillskip}{\z@ plus 1fil}\fi
    \raggedsection\normalfont\sectfont\nobreak\size@subsection
  }%
}
\CheckCommand\subsubsection{%
  \scr@startsection{subsubsection}{\subsubsectionnumdepth}{\z@}%
  {-3.25ex\@plus -1ex \@minus -.2ex}%
  {1.5ex \@plus .2ex}%
  {\ifnum \scr@compatibility>\@nameuse{scr@[email protected]}\relax
    \setlength{\parfillskip}{\z@ plus 1fil}\fi
    \raggedsection\normalfont\sectfont\nobreak\size@subsubsection
  }%
}
 %% redefine
\renewcommand\section{%
  \scr@startsection{section}{\sectionnumdepth}{\z@}%
  {-.5\baselineskip}%
  {.25\baselineskip}%
  {\ifnum \scr@compatibility>\@nameuse{scr@[email protected]}\relax
    \setlength{\parfillskip}{\z@ plus 1fil}\fi
    \raggedsection\normalfont\sectfont\nobreak\size@section}%
}
\renewcommand\subsection{%
  \scr@startsection{subsection}{\subsectionnumdepth}{\z@}%
  {-.5\baselineskip}%
  {.25\baselineskip}%
  {\ifnum \scr@compatibility>\@nameuse{scr@[email protected]}\relax
    \setlength{\parfillskip}{\z@ plus 1fil}\fi
    \raggedsection\normalfont\sectfont\nobreak\size@subsection
  }%
}
\renewcommand\subsubsection{%
  \scr@startsection{subsubsection}{\subsubsectionnumdepth}{\z@}%
  {-.5\baselineskip}%
  {.25\baselineskip}%
  {\ifnum \scr@compatibility>\@nameuse{scr@[email protected]}\relax
    \setlength{\parfillskip}{\z@ plus 1fil}\fi
    \raggedsection\normalfont\sectfont\nobreak\size@subsubsection
  }%
}
\makeatother

\begin{document}
\chapter{Erde}
Der eigentliche Text.\par
Test
\section{Europa}
Der eigentliche Text.
\subsection{Italien}
Der eigentliche Text.
\subsubsection{Toskana}
Der eigentliche Text.
\paragraph{Florenz}
Der eigentliche Text.
\subparagraph{Dom}
Der eigentliche Text

\end{document}

相关内容