我正在使用memoir
文档类。我想减少章节标题前的空格,并且我想单独执行此操作,因为我不想减少其他标题(目录、词汇表等)前的空格。
在我的这个中写入完美有效main.tex
:
\frontmatter
% ToC...
\makeatletter
\let\savedchap\@makechapterhead
\def\@makechapterhead{\vspace*{-3cm}\savedchap}
\mainmatter
\input{chapter1.tex}
\input{chapter2.tex}
\input{chapter3.tex}
\let\@makechapterhead\savedchap
\makeatother
\backmatter
% glossary...
但我想避免使用这种解决方案,因为强烈建议这样做,\makeatletter
并且\makeatother
应该在序言中。什么才是可靠的解决方案?
答案1
在memoir
,\@makechapterhead
以 开头\chapterheadstart
,其默认含义是
\vspace*{\beforechapskip}
\beforechapskip
因此,您所需要做的就是根据自己的喜好进行更改\mainmatter
。
默认值是50pt,3cm大约是85pt。
\documentclass[oneside]{memoir}
\AddToHook{cmd/mainmatter/after}{\setlength{\beforechapskip}{-35pt}}
\AddToHook{cmd/backmatter/after}{\setlength{\beforechapskip}{50pt}}
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\chapter{Test}
\backmatter
\chapter{Another test}
\end{document}
我使用oneside
只是为了避免下图中出现空白页。
答案2
我会使用\vspace{-1.0cm}
。显然,您可以根据要减少的空间量将 1.0 更改为任意数字。