![如何在章节标题前添加一些负垂直空间?](https://linux22.com/image/344984/%E5%A6%82%E4%BD%95%E5%9C%A8%E7%AB%A0%E8%8A%82%E6%A0%87%E9%A2%98%E5%89%8D%E6%B7%BB%E5%8A%A0%E4%B8%80%E4%BA%9B%E8%B4%9F%E5%9E%82%E7%9B%B4%E7%A9%BA%E9%97%B4%EF%BC%9F.png)
如果我所想要做的只是调整某个特定章节标题之前的垂直空间,我是否可以以某种方式快速完成此操作而不需要重新定义?
我尝试了以下操作,但没有效果:
\documentclass{report}
\begin{document}
\vspace*{-3cm}
\chapter{My chapter}
\end{document}
答案1
\chapter
发出一个\clearpage
开始新页面的命令,并插入一个\vspace*
,虽然是必要的,但会插入内容足以实现\clearpage
。我们可以通过\clearpage
手动发出并从常规中删除此功能来避免这种情况\chapter
命令中删除此功能来避免这种情况暂时地:
\documentclass{report}
\begin{document}
\chapter{First chapter}
\begingroup
\clearpage% Manually insert \clearpage
\let\clearpage\relax% Remove \clearpage functionality
\vspace*{-2cm}% Insert needed vertical retraction
\chapter{Second chapter}% Regular \chapter
\endgroup
\chapter{Third chapter}
\end{document}
的定义\clearpage
在之后恢复,\endgroup
因为它遵守组内重新定义的范围规则。
答案2
如果您想要重新定义章节标题的整个布局,可以使用titlesec
及其\titlespacing
命令。如果您只想更改垂直间距,则使用 很容易xpatch
:
\documentclass{report}
\usepackage[showframe]{geometry}
\usepackage{xpatch}%
\begin{document}
{ %
\makeatletter
\xpatchcmd{\@makechapterhead}{%
\vspace*{50\p@}}{%
\vspace*{50\p@}
\vspace*{-3cm}}
{}{}
\chapter{A higher chapter}
}%
\noindent
\chapter{A lower chapter}
\end{document}