双列模式下垂直间距错误

双列模式下垂直间距错误

我希望整个文档中页面顶部和目录标题/章节标题之间的间距一致。但是在双列模式下,页面顶部和章节标题之间的间距似乎比页面顶部和目录标题之间的间距略小:

在此处输入图片描述

在单列模式下,间距始终相同。如何在双列模式下保持间距相等?

梅威瑟:

\documentclass[11pt, openany]{scrbook}
\usepackage{lipsum}

\begin{document}
\tableofcontents

\twocolumn % Comment this out and the spaces become right again

\chapter{Test Chapter}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 

\end{document}

答案1

章节标题前缺少一个垂直空格。但标准类也存在同样的问题,请参见LaTeX 错误数据库中的条目

作为 KOMA-Script 版本 3.16 或更新版本(3.17a 是 CTAN 上的当前版本)的解决方法,您可以使用

\makeatletter
\renewcommand*{\chapterheadstartvskip}{\vspace{\topskip}\vspace{\@tempskipa}}
\BeforeTOCHead{\renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}}
\makeatother

在此处输入图片描述

代码(不含网格):

\documentclass[open=any,
  twocolumn
]{scrbook}[2015/02/07]
\usepackage{showframe}
\makeatletter
\renewcommand*{\chapterheadstartvskip}{\vspace{\topskip}\vspace{\@tempskipa}}
\BeforeTOCHead{\renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}}
\makeatother
\begin{document}
\tableofcontents
\chapter{Test Chapter}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
\KOMAScriptVersion
\end{document}

并作为参考:没有 twocolumn 和没有解决方法的相同代码

\documentclass[open=any,
  %twocolumn
]{scrbook}[2015/02/07]
\usepackage{showframe}
%\makeatletter
%\renewcommand*{\chapterheadstartvskip}{\vspace{\topskip}\vspace{\@tempskipa}}
%\BeforeTOCHead{\renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}}
%\makeatother
\begin{document}
\tableofcontents
\chapter{Test Chapter}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
\KOMAScriptVersion
\end{document}

结果是

在此处输入图片描述


更新

如果你想在文档之间twocolumnonecolumn文档内部切换,你可以使用类似

\documentclass[open=any,
  twocolumn
]{scrbook}[2015/02/07]
\usepackage{showframe}

\makeatletter
\newcommand*\tcchapterheadstartvskip{\vspace{\topskip}\vspace{\@tempskipa}}
\newcommand*\occhapterheadstartvskip{\vspace{\@tempskipa}}
\makeatother
\renewcommand*{\chapterheadstartvskip}{\tcchapterheadstartvskip}
\BeforeTOCHead{\renewcommand*{\chapterheadstartvskip}{\occhapterheadstartvskip}}

\newcommand\mytwocolumn{%
  \KOMAoptions{twocolumn=true}%
  \renewcommand*{\chapterheadstartvskip}{\tcchapterheadstartvskip}%
}
\newcommand\myonecolumn{%
  \KOMAoptions{twocolumn=false}%
  \renewcommand*{\chapterheadstartvskip}{\occhapterheadstartvskip}%
}

\begin{document}
\tableofcontents
\chapter{Test Chapter}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
\KOMAScriptVersion

\clearpage
\myonecolumn
\chapter{Test Chapter}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 

\clearpage
\mytwocolumn
\chapter{Test Chapter}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
\end{document}

在此处输入图片描述

注意,如果使用该选项,则的定义\tcchapterheadstartvskip必须改变。parskip

使用parskipparskip=full

\newcommand*\tcchapterheadstartvskip{\vspace{\topskip}\vspace{\baselineskip}\vspace{\@tempskipa}}

parskip=half

\newcommand*\tcchapterheadstartvskip{\vspace{\topskip}\vspace{.5\baselineskip}\vspace{\@tempskipa}}

相关内容