答案1
文本页面顶部边距和章节标题之间的垂直跳跃由 控制\vspace*{50\p@}
。\@makechapterhead
(\p@
是 的内部表示pt
)
要么完全重新定义该命令,要么用其他更容易更改的长度进行\xpatchcmd
替换,例如在特殊的长度寄存器中。\vspace*{50\p@}
\chaptertopskip
\documentclass[12pt]{book}
\usepackage[pass,showframe]{geometry}
\usepackage{xpatch}
\newlength{\chaptertopskip}
\setlength{\chaptertopskip}{10pt}
\makeatletter
\xpatchcmd{\@makechapterhead}{\vspace*{50\p@}}{\vspace*{\chaptertopskip}}{\typeout{Success}}{\typeout{Failure!!!}}
\makeatother
\begin{document}
\chapter{example}
How do I get chapter to go higher on the page. In order to get as many words per page.
\end{document}
更新
更换包裹和底部跳过:
\documentclass[12pt]{book}
\usepackage[pass,showframe]{geometry}
\usepackage{xpatch}
\newlength{\chaptertopskip}
\newlength{\chapterbottomskip}
\setlength{\chaptertopskip}{10pt}
\setlength{\chapterbottomskip}{10pt}
\makeatletter
\def\@makechapterhead#1{%
\vspace*{\chaptertopskip}%
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\huge\bfseries \@chapapp\space \thechapter\
% \par\nobreak
% \vskip 20\p@
\fi
\fi
\interlinepenalty\@M
\Huge \bfseries #1\par\nobreak
\vskip \chapterbottomskip
}}
\makeatother
\begin{document}
\chapter{example}
How do I get chapter to go higher on the page. In order to get as many words per page.
\end{document}
答案2
默认\chapter
命令发出三个不同的空格来设置章节标题:
从文本块顶部到单词的间距章节;默认为 50pt。
之间的空间章节和章节标题;默认为 20pt。
章节标题和章节正文之间的间距;默认为 40pt。
所有这些都是由宏实现的\@makechapterhead
(来自book.cls
;重点补充):
\def\@makechapterhead#1{%
\vspace*{50\p@}% <------------------------------------ (1)
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\huge\bfseries \@chapapp\space \thechapter
\par\nobreak
\vskip 20\p@% <--------------------------------- (2)
\fi
\fi
\interlinepenalty\@M
\Huge \bfseries #1\par\nobreak
\vskip 40\p@% <------------------------------------- (3)
}}
对于未编号的章节,上面仍有两个空格(1)和(3),作为以下内容的一部分\@makeschapterhead
:
\def\@makeschapterhead#1{%
\vspace*{50\p@}% <------------------------------------ (1)
{\parindent \z@ \raggedright
\normalfont
\interlinepenalty\@M
\Huge \bfseries #1\par\nobreak
\vskip 40\p@% <------------------------------------- (3)
}}
你可以使用etoolbox
补丁,但最好只编写自己的\@makechapterhead
宏:
\documentclass{book}
\makeatletter
\renewcommand{\@makechapterhead}[1]{%
{\noindent\raggedright\normalfont% Alignment and font reset
\huge\bfseries \@chapapp\space\thechapter~~#1\par\nobreak}% Formatting
\vspace{\baselineskip}% ...just a little space
}
\makeatother
\usepackage{showframe}% Just to show the frame
\begin{document}
\chapter{Example}
How do I get chapter to go higher on the page. In order to get as many words per page.
\end{document}
您可以对 做类似的事情\@makeschapterhead
。
答案3
如果您只需要在某一章中使用一次,您可能会使用非常肮脏的解决方法(这可能会让您陷入 Latex 监狱)。您可以将\chapter{\vspace*{-2em} Chapter 1}
其提升大约两行。