使用 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引入了两个新键\RedeclareSectionCommands
:runin
and afterindent
。这两个键的可能值分别是bysign
、true
和false
。
runin
:
此键仅针对带有的分段命令定义style=section
,例如 section
、subsection
、subsubsection
、paragraph
。subparagraph
默认情况下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
和\RedeclareSectionCommands
KOMA-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}