我正在寻找一种方法来更改目录中属于前言的章节的样式。下面我发布了一个最小的示例代码来说明我的目标:
\documentclass{scrbook}
\begin{document}
\frontmatter
\chapter{Preface}
\chapter{Acknowledgements}
\tableofcontents
\mainmatter
\chapter{First Chapter}
\chapter{Second Chapter}
\end{document}
在这里,我希望将前言和致谢两章前言部分以非粗体斜体形式写在目录中,包括页码。我设法以所需的样式写出它们的名称,只需使用例如
\chapter[\itshape\textmd{Preface}]{Preface}
但这不会改变页码的格式。
答案1
我定义了一个新的 cs\matter@switch
并将其附加到chapterentry
KOMA 字体。然后我添加了宏\frontmatter
和,\mainmatter
将的重新定义\matter@switch
写入 toc 文件。(我确信下面的代码可以优化)
\documentclass{scrbook}
\makeatletter
\newcommand\matter@switch{}
\addtokomafont{chapterentry}{\matter@switch}
\g@addto@macro\frontmatter{%
\addtocontents{toc}{%
\protect\renewcommand\protect\matter@switch{\normalfont\itshape}%
}%
}
\g@addto@macro\mainmatter{%
\addtocontents{toc}{%
\protect\renewcommand\protect\matter@switch{}%
}%
}
\begin{document}
\frontmatter
\tableofcontents
\chapter{Preface}
\chapter{Acknowledgements}
\mainmatter
\chapter{First Chapter}
\chapter{Second Chapter}
\end{document}
答案2
tocloft
这可以通过使用包及其各种命令和来更改章节标题字体/页面字体来实现。\cftchapterfont
但是\cftchapterpagefont
,这些命令会一直存在,直到在处理目录时明确更改。因此,有必要使用 将切换回命令直接写入目录\addtocontents
。
\documentclass{book}
\usepackage{tocloft}%
\begin{document}
\let\cftchapfontorig\cftchapfont
\let\cftchappagefontorig\cftchappagefont
\renewcommand{\cftchapfont}{\itshape}
\renewcommand{\cftchappagefont}{\itshape}%
\frontmatter
\chapter{Preface}
\chapter{Acknowledgements}
\tableofcontents
\addtocontents{toc}{\protect\renewcommand{\cftchapfont}{\cftchapfontorig}}
\addtocontents{toc}{\protect\renewcommand{\cftchappagefont}{\cftchappagefontorig}}
\mainmatter
\chapter{First Chapter}
\chapter{Second Chapter}
\end{document}