修改目录标题的格式

修改目录标题的格式

我正在完成我的硕士论文,需要修改标题目录 (TOC)。我所在大学的指导方针要求“目录”必须全部大写,并位于页面顶部中央。

我正在使用 ucthesis.cls 模板的修改版本。原始模板将目录定义为:

[代码A]

\def\tableofcontents{\@restonecolfalse
  \if@twocolumn\@restonecoltrue\onecolumn\fi
  \chapter*{\contentsname
       \@mkboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}
  }%
  {\ssp\@starttoc{toc}}\if@restonecol\twocolumn\fi}

为了使“目录”正确显示,我的解决方法是将模板的这一部分重写为:

[代码 B]

\def\tableofcontents{\@restonecolfalse
  \if@twocolumn\@restonecoltrue\onecolumn\fi
  \clearpage
  \begin{center}   
        \MakeUppercase{\contentsname}
  \end{center}
  {\ssp\@starttoc{toc}}\if@restonecol\twocolumn\fi}

这会按预期工作,但删除该\chapter*{}行会产生副作用,即删除目录中章节和小节编号之前的缩进,如 ucthesis.cls 模板中包含的以下代码行所定义

\def\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
\def\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}}

以下分别是代码片段 A 和 B 的输出。

目录标题不正确,缩进正确

正确的目录标题,错误的缩进

我对 LaTeX 模板或宏没有太多经验,很难找到关于这些东西的文档\@mkboth。如果有人能解释一下为什么目录需要作为章节包含在内,以及我如何能够更改标题的外观,我将不胜感激——谢谢!

答案1

快速解决:

重新定义\contentsname

\renewcommand{\contentsname}{TABLE OF CONTENTS}

并仅对 ToC 进行本地补丁应用\@makeschapterhead,这意味着,当您必须发出时\tableofcontents,请写下以下行:

{\makeatletter
\patchcmd{\@makeschapterhead}
  {\raggedright}
  {\centering}
  {}
  {}
\tableofcontents
\makeatother}

梅威瑟:

\documentclass{ucthesis}

\usepackage{etoolbox}

\renewcommand{\contentsname}{TABLE OF CONTENTS}

\begin{document}

{\makeatletter
\patchcmd{\@makeschapterhead}
  {\raggedright}
  {\centering}
  {}
  {}
\tableofcontents
\makeatother}

\listoffigures
\listoftables
\chapter{Test}
\section{A section}

\end{document} 

输出:

在此处输入图片描述

答案2

以下重新定义对我有用:

\def\tableofcontents{\@restonecolfalse
  \if@twocolumn\@restonecoltrue\onecolumn\fi
  %\chapter*{\,%\contentsname
  %     \@mkboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}
  %    }%
  %\clearpage
  \begin{center}
        \MakeUppercase{\contentsname}
  \end{center} \par
  %
  {\ssp\@starttoc{toc}}\if@restonecol\twocolumn\fi}

我认为\par环境末尾的这个方法\center起了作用。我很感谢 karlkoeller 的回答,但我对这种方法的理解更深入一些,它保留了\normalsize我需要的目录标题的字体。

相关内容