为什么更改目录页的标题并将其居中会把标题往下推?

为什么更改目录页的标题并将其居中会把标题往下推?

我想将目录页的默认标题从“目录”更改为“目录”。此外,我还想将标题水平居中。

我的代码的 MWE 没有对内容页的标题进行任何更改,如下所示:

\documentclass{article}
\usepackage[margin = 2.54 cm]{geometry}
\usepackage[doublespacing]{setspace}
\usepackage{parskip}

\begin{document}

\tableofcontents

\newpage

\section{Random Variables}

\subsection{Definition}

\end{document}

然后,我尝试更改我的代码,如下所示:

\documentclass{article}
\usepackage[margin = 2.54 cm]{geometry}
\usepackage[doublespacing]{setspace}
\usepackage{parskip}

\renewcommand\contentsname{\center{Table of Contents}}

\begin{document}

\tableofcontents

\newpage

\section{Random Variables}

\subsection{Definition}

\end{document}

添加这行代码\renewcommand\contentsname{\center{Table of Contents}}确实将我的目录页标题更改为“目录”,并且也变为水平居中。但是,由于某种原因,标题现在略微向下移动(相对于原始代码)。

我有两个疑问。

首先,为什么添加该行\renewcommand\contentsname{\center{Table of Contents}}也会将标题向下推?其次,如果我希望我的新标题像默认标题一样显示,即不向下推,我应该如何调整我的代码或正确的代码应该是什么?

PS:我对 LaTeX 还很陌生,所以任何直观的解释都将不胜感激:)

答案1

\center是环境的内部实现center,永远不应用作命令(并且不接受参数)。center添加垂直空间。\centering是命令形式,(尽管\...name命令不打算有任何格式化命令)因此作为快速破解

\renewcommand\contentsname{\centering Table of Contents}

可以工作,尽管这实际上是在滥用系统。LaTeX 引入了\...name专门用于保存的命令纯文本固定字符串没有格式化,以便可以通过更改固定文本(例如,更改为另一种语言)来本地化文档,而无需重新实现格式。

格式应由文档类指定,对于文章来说,格式是

\newcommand\tableofcontents{%
    \section*{\contentsname
        \@mkboth{%
           \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
    \@starttoc{toc}%
    }

因此,如果您只希望这个标题居中,并且不改变其他内容\section*,那么您可以\centering在此处添加

\makeatletter
\renewcommand\tableofcontents{%
    \section*{\centering\contentsname
        \@mkboth{%
           \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
    \@starttoc{toc}%
    }
\makeatother

相关内容