我希望整个文档中页面顶部和目录标题/章节标题之间的间距一致。但是在双列模式下,页面顶部和章节标题之间的间距似乎比页面顶部和目录标题之间的间距略小:
在单列模式下,间距始终相同。如何在双列模式下保持间距相等?
梅威瑟:
\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}
结果是
更新
如果你想在文档之间twocolumn
和onecolumn
文档内部切换,你可以使用类似
\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
使用parskip
或parskip=full
:
\newcommand*\tcchapterheadstartvskip{\vspace{\topskip}\vspace{\baselineskip}\vspace{\@tempskipa}}
与parskip=half
:
\newcommand*\tcchapterheadstartvskip{\vspace{\topskip}\vspace{.5\baselineskip}\vspace{\@tempskipa}}