如何删除 \vspace*{0em} 和 \section 之间的多余空格?

如何删除 \vspace*{0em} 和 \section 之间的多余空格?

我想在类型区域和部分之间添加精确数量的空间:

\documentclass{scrbook}

\KOMAoptions{fontsize=10pt, paper=14cm:21cm, DIV=calc, pagesize=auto, BCOR=5mm,     twoside=true, titlepage=true}

\usepackage{lmodern}
\usepackage[utf8]{inputenc}

% shows frames of type area (good for debugging)
\usepackage{showframe}

\begin{document}

%\vspace*{-\topskip}  % removes \topskip space
\vspace*{0em}  % space amout is 0em for testing purpose; remove or comment to get absolutely no space
\section{Test}

\end{document}

我认为该命令\vspace*{0em}会扩展节的粘连,对吗?如果我删除\vspace*{0em}节,它位于类型区域的顶部。不知何故\vspace*{0em}应该做同样的事情。背景是我想在类型区域和节之间添加一个精确的空间,但空间总是太大。有什么想法可以解决这个问题吗?

答案1

我自己的解决方案并不完美:

\documentclass{scrbook}

\KOMAoptions{fontsize=10pt, paper=14cm:21cm, DIV=calc, pagesize=auto, BCOR=5mm, twoside=true, titlepage=true}

\usepackage{lmodern}
\usepackage[utf8]{inputenc}
% shows frames of type area (good for debugging)
\usepackage{showframe}

\makeatletter
% change definition of \section; remove space before
\renewcommand{\section}{\@startsection{section}{1}{\z@}%
  {-0.01ex}%
  {2.3ex \@plus.2ex}%
  {\ifnum \scr@compatibility>\@nameuse{scr@[email protected]}\relax
    \setlength{\parfillskip}{\z@ plus 1fil}\fi
    \raggedsection\normalfont\sectfont\nobreak\size@section}%
}
\makeatother


\begin{document}

\vspace*{-\topskip}
\section{Test}

Test

\end{document}

代码重新定义了\section命令,将之前的空格设置为-0.01ex(必须为负数以避免段落缩进)。只剩下一点点空间。删除或注释掉\vspace*{-\topskip}以进行测试。

相关内容