比较 \etocname 与字符串

比较 \etocname 与字符串

如何将内容\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会更容易。

相关内容