减少 Scrbook 的章节和节间距

减少 Scrbook 的章节和节间距

我正在使用scrbook文档类并使用章节和节。章节和节之间的间距很大,对我来说太大了(在章节和节之前和之后)。所以我的问题是如何减少这个间距?(看到了一些非 KOMA 文档类的变体,但这些变体似乎不适用于此类)。

\documentclass[11pt,a4paper,BCOR10mm,DIV11,toc=listof,parskip=full]{scrbook}

\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{booktabs}            
\usepackage{multicol}      

\twocolumn
\raggedright
\Chapter{chap1}
\Section{sec1}
blaahblah
\Section{sec2}
Blah
\Chapter{chap2}
BlahBlah
\Chapter{chap3}
Blah

编辑:应用 Werner 提到的更改后,我出现了以下现象(代码摘录和屏幕截图是为了展示我在评论中试图描述的内容):

“种类”为一章,“应用”为一节,优点和缺点各为小节。

缺点的代码摘录(1 个输入位于小节之前和之后):

all perception rolls.

\subsection{Disadvantages}

\noindent\textbf{Bestial psychology and territorial instincts}: Dragons despite their intellect are part beast. This means that they have strong territo

章节部分的代码摘录:

\chapter{Species template}

\section{Applying the template}

\subsection{Advantages}

\noindent\textbf{Dragons bodies}: +5.....

在此处输入图片描述

答案1

scrbook/中scrreport,章节前/章节末尾的跳过定义为

\renewcommand*{\chapterheadstartvskip}{%
  \vspace*{2.3\baselineskip}%
}%
\renewcommand*{\chapterheadendvskip}{%
  \vspace{1.725\baselineskip
    \@plus .115\baselineskip \@minus .192\baselineskip}%
}%

根据你的喜好进行调整。就\sections 而言,KOMA 脚本bundle 仍然使用\@startsection(参见在哪里可以找到类似\@startsectionLaTeX 的命令的帮助文件或文档?)的定义如下\section

\newcommand\section{%
  \@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}%
}

调整两个橡胶长度(参数#4#5\@startsection)以满足您的需要。

这是一个最小的例子,其中提到的长度已经调整:

在此处输入图片描述

\documentclass[11pt,a4paper,BCOR10mm,DIV11,toc=listof,parskip=full,twocolumn]{scrbook}
\usepackage{etoolbox}
\makeatletter
\renewcommand{\chapterheadstartvskip}{\vspace{0pt}}
\renewcommand{\chapterheadendvskip}{\vspace{\baselineskip}}
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\section}{-3.5ex \@plus -1ex \@minus -.2ex}{-\baselineskip}{}{}
\patchcmd{\section}{2.3ex \@plus .2ex}{.5\baselineskip}{}{}
\makeatother
\begin{document}

\raggedright
\chapter{chap1}
\section{sec1}
blaahblah
\section{sec2}
Blah
\chapter{chap2}
BlahBlah
\chapter{chap3}
Blah

\end{document}

当然,以上仅提及对\chapter和 的更改\section。您必须以类似的方式调整较低级别的分段单元。例如,这里有一个选项可以删除分段单元周围的更多间距,这次包括 的间距\subsection

\usepackage{etoolbox}
\makeatletter
\renewcommand{\chapterheadstartvskip}{\vspace{0pt}}
\renewcommand{\chapterheadendvskip}{\vspace{\baselineskip}}
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\section}{-3.5ex \@plus -1ex \@minus -.2ex}{-\z@}{}{}
\patchcmd{\section}{2.3ex \@plus .2ex}{1sp}{}{}
\patchcmd{\subsection}{-3.25ex\@plus -1ex \@minus -.2ex}{-\z@}{}{}
\patchcmd{\subsection}{1.5ex \@plus .2ex}{1sp}{}{}
\patchcmd{\@xsect}{\ignorespaces}{\vspace*{-.5\baselineskip}\ignorespaces}{}{}
\makeatother

相关内容