我有很多短章节,所以我想让章节位于页面顶部,文本紧随其后。换句话说,不要留太多空白。其次,我想定义一个实验室宏,将 Lab 一词放在章节名称前面。
例如:
\lab {Blink}
应该变成:
\Chapter{Lab: Blink}
因此我写了一个命令:
\newcommand{\lab}[1]{\chapter{Lab: {#1}}}
我只是想了解这是否应该有效。它不起作用,这可能是由于一些微妙的原因。我有一个之前定义的实验室命令并试图将其注释掉。如果上述命令确实正确,那么我将为此目的用 MWE 开始另一个问题。
答案1
您的宏可能已损坏,因为\chapter
这是一个“脆弱”命令。添加\protected
它应该可以工作(请注意,我必须将其更改\newcommand
为普通的\def
):
\protected\def\lab#1{\chapter{Lab: {#1}}}
对于间距,我建议使用titlesec
包。以下内容将删除章节标题前的所有垂直间距:
\titleformat{\chapter}[display]
{\sffamily\bfseries}% formatting applied to all chapters
{\chaptertitlename\ \thechapter} % Used for numbered chapters only
{\baselineskip} % Vertical space between ``Chapter N'' and name of chapter
{}
\titlespacing*{\chapter}{0pt}{0pt}{\baselineskip}
请注意,该display
选项会在章节标签(“第 1 章”)和标题(“Foo”)之间留出垂直空间。如果您希望它们在同一行,请将其删除并更改\baselineskip
为(或其他水平尺寸)。1em
梅威瑟:
\documentclass{book}
\usepackage{titlesec}
\protected\def\lab#1{\chapter{Lab: {#1}}}
\titleformat{\chapter}[display]
{\sffamily\bfseries}% format
{\chaptertitlename\ \thechapter} % Sans-serif, bold
{\baselineskip} % Vertical space between ``Chapter N'' and name of chapter
{}
\titlespacing*{\chapter}{0pt}{0pt}{\baselineskip}
\begin{document}
\tableofcontents
\chapter{Foo}
XXX.
\lab{FooBar}
ZZZ.
\chapter{Baz}
QQQ.
\end{document}
得出(与实验室):
且不包含:
注意,我根本没有改变页边距,所以看起来章节上方仍有很多垂直空间。使用the fullpage
或geometry
包也可以恢复该空间。