如何才能了解章节号和章节标题之间的水平距离目录 以及我使用的正文\documentclass[12pt,reqno]{book}
。哪些键保存这些值?
答案1
book
(喜欢report
) 使用 设置章节的 ToC 条目\l@chapter
。它看起来是这样的:
\newcommand*\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\vskip 1.0em \@plus\p@
\setlength\@tempdima{1.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\penalty\@highpenalty
\endgroup
\fi}
这里需要特别注意的是 的值\@tempdima
,设置为。 (或)1.5em
的第一个参数使用,它在内核中定义\l@chapter
#1
\numberline
latex.ltx
作为:
\def\numberline#1{\hb@xt@\@tempdima{#1\hfil}}
创建一个宽度为的框\@tempdima
,并使其内容左对齐。请注意,这1.5em
是基于设置时流行的字体(\normalsize\bfseries
默认情况下)。
book
(和)中的 (编号) 章节标题report
通过宏设置\@makechapterhead
。以下是对此的看法:
\def\@makechapterhead#1{%
\vspace*{50\p@}%
{\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 40\p@
}}
单词Chapter
(\@chapapp
上述定义中的或)和数字(\thechapter
上述定义中的)之间的空格是常规的\space
或\
。
在这两种情况下,如果您想更改这些默认设置,您至少有 3 个选择:
复制整个定义并根据你的喜好进行更改(制作
\newcommand
->\renewcommand
);使用
etoolbox
修补命令。例如,\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox \makeatletter \patchcmd{\l@chapter}% <cmd> {1.5em}% <search> {5.5em}% <replace> {}{}% <success><failure> \makeatother
将使用
5.5em
宽框来设置目录中的章节编号,从而增加编号和标题之间的间隙。此外\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox \makeatletter \patchcmd{\@makechapterhead}% <cmd> {\space}% <search> {\hspace*{100pt}\ignorespaces}% <replace> {}{}% <success><failure> \makeatother
100pt
会在单词Chapter
(或其他\@chapapp
内容)和数字之间插入一个间隙。\ignorespaces
只会删除原始定义中留下的任何尾随空格\@makechapterhead
。