如何将章节标题在页面上向上移动?

如何将章节标题在页面上向上移动?

我如何才能使章节在页面上的位置更高,以便每页包含尽可能多的单词。以下是我所讨论内容的 MWE。

\documentclass[12pt]{book}
\usepackage[pass,showframe]{geometry}
\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}

在此处输入图片描述

我还希望将章节编号和章节标题放在一行中。

答案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命令发出三个不同的空格来设置章节标题:

  1. 从文本块顶部到单词的间距章节;默认为 50pt。

  2. 之间的空间章节和章节标题;默认为 20pt。

  3. 章节标题和章节正文之间的间距;默认为 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}其提升大约两行。

相关内容