使用 if@mainmatter 在章节中设置不同的标题样式

使用 if@mainmatter 在章节中设置不同的标题样式

我对这本书、双面文档类别以及相应的第二章页面的标题有疑问。

\frontmatter我使用AbstractAcknowledgements。在\mainmatter我使用ContentsIntroduction, ...

现在,我想设置前言部分的标题(例如,不带章节编号)\thechapter和主内容部分的标题(带有章节编号)。

有没有办法这样做?

我试过

\if@mainmatter
\renewcommand\chaptermark[1]{\markboth{\textsc{\thechapter\ #1}}{}}  
\else
\renewcommand\chaptermark[1]{\markboth{\textsc{#1}}{}}
\fi

但它总是显示 else 分支。

下面是一个 MWE 来展示我的问题。

\documentclass[12pt,a4paper,twoside]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman,english]{babel}
\usepackage{blindtext}

\if@mainmatter
\renewcommand\chaptermark[1]{\markboth{\textsc{\thechapter\ #1}}{}}%
\else
\renewcommand\chaptermark[1]{\markboth{\textsc{#1}}{}}%
\fi

\begin{document}

\frontmatter
\chapter{Abstract}
\blindtext[4]
\chapter{Achknowledgements}
\blindtext[10]

\mainmatter
\tableofcontents
\chapter{Introduction}
\blindtext[15]

\end{document}

谢谢

答案1

对于我在 book.cls 中找到的 tableofcontents 样式,我使用 \newcommand\tableofcontents... 进行了重新配置\renewcommand::

\renewcommand\tableofcontents{%  
  \if@twocolumn  
    \@restonecoltrue\onecolumn  
  \else  
    \@restonecolfalse  
  \fi  

  \chapter*{\contentsname  
  \@mkboth{%  
  \scshape{\contentsname}}{\scshape{\contentsname}}}%  
  \@starttoc{toc}%  
  \if@restonecol\twocolumn\fi  
}

这将更改标题中的 CONTENTS 样式。同样,您还可以更改 listoffigures 和 listoftables。

相关内容