章节号和章节标题之间的空格长度

章节号和章节标题之间的空格长度

如何才能了解章节号和章节标题之间的水平距离目录 以及我使用的正文\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\numberlinelatex.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 个选择:

  1. 使用允许你修改此内容的包(例如titlesec或者tocloft或类似物);

  2. 复制整个定义并根据你的喜好进行更改(制作\newcommand-> \renewcommand);

  3. 使用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

相关内容