如何将内容\etocname
与字符串进行比较?例如根据部分名称选择颜色。
\documentclass{article}
\usepackage{xcolor}
\usepackage{xstring}
\usepackage{etoc}
\etocsetstyle{section}
{}
{}
{\IfStrEq{bla}{\etocname}{\color{blue}\etocname}{\color{red}\etocname}}
{}
\begin{document}
\tableofcontents
\section{bla}
\section{blub}
\end{document}
答案1
扩展 @egreg 的评论,使用 更简单\etocthename
。它仅包含文件中存在的节名称作为宏.toc
。当然,您可以在其中使用格式化宏。\etocname
是一个强大的宏,还包含超链接内容。\etocthename
一步即可扩展到文件中的名称.toc
(可能包含框、\color
或\textbf
任何其他内容......)
更新:
OP 的代码已修改为使用\etocthename
。另外,我还添加了\noindent
和\par
,因为这可能无论如何都会用到。
\documentclass{article}
\usepackage{xcolor}
\usepackage{xstring}
\usepackage{etoc}
\etocsetstyle{section}
{}
{\noindent}
{\IfStrEq{bla}{\etocthename}{\color{blue}\etocname}{\color{red}\etocname}\par}
{}
\begin{document}
\tableofcontents
\section{bla}
\section{blub}
\end{document}
注意:总是由组内\tableofcontents
排版,这限制了命令的范围,但在实际应用中,您可能需要添加括号以更本地地限制 的使用(例如,如果页码通过 合并到目录中,则不会污染它们。)etoc
\color
\color
\etocpage
注意:测试\etocthenumber
可能\etocthename
会更容易。