KOMA 中的 TOC 定制

KOMA 中的 TOC 定制

我想自定义文档目录中章节的列表scrbook。给出以下示例:

\documentclass{scrbook}
\begin{document}
\tableofcontents
\chapter{Alpha}
\chapter{Beta}
\chapter{Gamma}
\end{document}

我的目录目前如下所示:

目录

如何从以下两个方面定制目录中打印的文本:

  • 在编号中添加前缀/后缀,例如写“第 1 章”而不是“1”
  • microtype使用's增加章节标题的字母间距textls

答案1

以下是基于示例的另一个建议本文作者:Markus Kohm,网址:www.komascript.de

\documentclass{scrbook}
\usepackage[utf8]{inputenc}
\usepackage{microtype}

\newcommand*{\SavedOriginaladdchaptertocentry}{}
\let\SavedOriginaladdchaptertocentry\addchaptertocentry
\renewcommand*{\addchaptertocentry}[2]{%
  \ifstr{#1}{}{% entry without number
    \SavedOriginaladdchaptertocentry{#1}{#2}%
  }{% entry with number
    \SavedOriginaladdchaptertocentry{}{%
      \string\expandafter\string\MakeUppercase\string\chaptername
      ~#1\string\quad\textls[500]{#2}}%
  }%
}%

\begin{document}
\tableofcontents
\addchap{Preface}
\chapter{Alpha}
\chapter{Beta}
\chapter{Gamma}
\addchap{Appendix}
\end{document}

在此处输入图片描述

我增加了字母间距来显示效果。

如果需要增加整个章节的字母间距,可以使用

\newcommand*{\SavedOriginaladdchaptertocentry}{}
\let\SavedOriginaladdchaptertocentry\addchaptertocentry
\renewcommand*{\addchaptertocentry}[2]{%
  \ifstr{#1}{}{% entry without number
    \SavedOriginaladdchaptertocentry{#1}{#2}%
  }{% entry with number
    \SavedOriginaladdchaptertocentry{}{%
      \string\expandafter\string\MakeUppercase\string\chaptername
      ~#1\string\quad{}#2}%
  }%
}%
 \addtokomafont{chapterentry}{\textls[200]}

请注意,\textls[200]必须是字体元素的最后一个命令,chapterentry因为它需要一个参数

在此处输入图片描述

答案2

该命令的\textls工作方式类似于。因此,您需要类似于的\textbf单个命令。\lsstyle\bfseries

可以通过字体元素添加前缀chapterentry

\documentclass{scrbook}
\usepackage{microtype}
\addtokomafont{chapterentry}{\lsstyle  Chapter~}
\begin{document}
\tableofcontents
\chapter{Alpha}
\chapter{Beta}
\chapter{Gamma}
\end{document}

在此处输入图片描述

相关内容