如何格式化目录中的单个条目?
例如,如何添加一些水平空间来缩进某些特定行,包括章节编号?
附言:我知道我可以编辑该toc
文件但是任何时候这样做都很无聊。
答案1
快速定义一个新包以保持前言简洁。现在,命令\emphchapter
带有一个强制参数,如果需要,还可以带有目录的可选参数。还有一个带星号的变体,用于设置一个未编号的章节,并缩进目录。加载包后,您可以使用\setkomafont{emphfont}
或格式化目录条目。可以使用通常的to lengthaddtokomafont{emphfont}
来更改缩进。setlength
emphindent
在宏中修补参数可能会很麻烦,您可以使用 packageetoolbox
和 package regexpatch
。示例可以在以下位置找到修补宏内的参数
使用将颜色设置为蓝色addtokomafont
会产生如下效果:
\begin{filecontents}{emphchapter.sty}
\ProvidesPackage{emphchapter}[2014/10/29 TeX.SX demo package]
\RequirePackage{regexpatch}
\tracingxpatches
\PassOptionsToPackage{x11names}{xcolor}
\RequirePackage{xcolor}
\RequirePackage{scrkbase}
\RequirePackage{xparse}
\newlength{\emphindent}
\newlength{\starredemphindent}
\setlength{\emphindent}{1cm}
\let\starredemphindent\emphindent
\newkomafont{emphfont}{\normalfont\scshape}
\DeclareDocumentCommand{\numemphfontswitch}{}{\protect\usekomafont{emphfont}\protect\hspace{\emphindent}}
\DeclareDocumentCommand{\starredemphfontswitch}{}{\protect\usekomafont{emphfont}\hspace{\starredemphindent}}
\DeclareDocumentCommand{\patchchapter}{}{
\makeatletter
\xpatchcmd{\@chapter}{%
{\protect\numberline{\thechapter}##1}%
}{%
{\numemphfontswitch\protect\numberline{\thechapter}##1}%
}{}{}
\makeatother
}
\NewDocumentCommand{\emphchapter}{ s o m }{
\IfBooleanTF{#1}{
\begingroup
\typeout{starred emphchapter}
\chapter*{#3}
\IfNoValueTF{#2}{
\addcontentsline{toc}{chapter}{\starredemphfontswitch#3}
}{
\addcontentsline{toc}{chapter}{\starredemphfontswitch#2}
}
\endgroup
}
{
\typeout{numbered emphchapter}
\begingroup
\patchchapter
\IfNoValueTF{#2}{
\chapter{#3}
}{
\chapter[#2]{#3}
}
\endgroup
}
}
\endinput
\end{filecontents}
\documentclass{report}
\usepackage{emphchapter}
\usepackage{blindtext}
\addtokomafont{emphfont}{\color{blue}}
\begin{document}
\tableofcontents
\chapter{tester}
\blindtext
\emphchapter{emphchapter}
\emphchapter[optional numbered emph]{emphchapter}
\blindtext
\chapter{behind emphchapter}
\blindtext
\chapter{before starred}
\blindtext
\emphchapter*{starred emphchapter}
\blindtext
\emphchapter*[optional starred entry]{starred emphchapter with optional}
\blindtext
\chapter{tester}
\end{document}