更改与页面标题相关的目录字体样式时出现的细微问题

更改与页面标题相关的目录字体样式时出现的细微问题

我正在使用该类amsbook并使用命令更改目录 (toc) 标题的字体样式

\renewcommand{\contentsname}{\textbf{\textsf{Contents}}}

所以我希望它采用\sf样式和粗体字体。目录有两页,第二页上出现一个标题行,其中的 CONTENTS 用小写字母书写,也是\sf粗体字体。但是我不希望在这里采用粗体字体。有没有简单的解决方案来改变这种情况?如果很复杂,我想我只能使用默认设置了amsbook style。无论如何,感谢您的任何建议!

答案1

直接更改格式\contentsname并不是一个好主意,因为更改也会影响标题和(最终)目录中的条目。鉴于\@starttoc在中定义了方式amsbook,您需要重新定义\@starttoc;以下示例显示了产生所需效果的必要重新定义(它还会将格式应用于 LoF 和 LoT 的标题):

\documentclass{amsbook}

\makeatletter
\def\@starttoc#1#2{%
  \begingroup
  \let\secdef\@gobbletwo \chapter
  \let\@secnumber\@empty % for \@tocwrite and \chaptermark
  \ifx\contentsname#2%
  \else \@tocwrite{chapter}{#2}\fi
  \typeout{#2}\@xp\chaptermark\@xp{#2}%
  \@makeschapterhead{\sffamily#2}\@afterheading
  \makeatletter
  \@input{\jobname.#1}%
  \if@filesw
    \@xp\newwrite\csname tf@#1\endcsname
    \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
  \fi
  \global\@nobreakfalse \endgroup
  \newpage
}
\makeatother

\begin{document}

\tableofcontents
\listoftables
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}

\end{document}

目录第一页和第二页的上部:

在此处输入图片描述

在此处输入图片描述

答案2

您不应破坏目录\contentsname以更改格式,它仅用于保存目录的实际名称,并且您会发现它不止用在一处。您在第二页看到的是页眉。

目录标题和其他类似列表的格式由名为 的内部命令控制\@makeschapterhead。您可以按如下方式重新定义,以使所有这些列表的标题都使用粗体无衬线字体:

\documentclass{amsbook}

\makeatletter
\def\@makeschapterhead#1{\global\topskip 7.5pc\relax
  \begingroup
  \fontsize{\@xivpt}{18}\bfseries\sffamily\centering
  #1\par \endgroup
  \skip@34\p@ \advance\skip@-\normalbaselineskip
  \vskip\skip@ }
\makeatother

\begin{document}
\tableofcontents

\chapter{Test}

\end{document}

如果您只是希望更改目录的格式,那么您可以使用以下命令将\tableofcontents命令切换到自定义样式:

\documentclass{amsbook}

\makeatletter
\def\@maketochead#1{\global\topskip 7.5pc\relax
  \begingroup
  \fontsize{\@xivpt}{18}\bfseries\sffamily\centering
  #1\par \endgroup
  \skip@34\p@ \advance\skip@-\normalbaselineskip
  \vskip\skip@ }
\def\tableofcontents{{\let\@makeschapterhead\@maketochead\@starttoc{toc}\contentsname}}
\makeatother

\begin{document}
\tableofcontents
\listoffigures

\chapter{Test}

\end{document}

样本内容页面

图表示例

相关内容