答案1
要么使用\textcolor
jfbu 的回答或者\color
在书签中禁用:
\usepackage{hyperref}
\pdfstringdefDisableCommands{%
\def\color#1#{\@gobble}%
}
#1
捕获到下一个左花括号为止的所有内容,即 的可选参数\color
。然后\@gobble
删除 的强制参数\color
。
答案2
您可以检查日志来确认是否出了问题:
Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref) removing `\@ifnextchar' on input line 7.
(行号表明您在源代码中)
正确的宏是\textcolor
,不是\color
。
\documentclass{article}
\usepackage{color, hyperref}
\definecolor{Red}{RGB}{238, 50, 36}
\begin{document}
\tableofcontents
\section{foo}
\addcontentsline{toc}{section}{\textcolor{Red}{United States}}
\section{bar}
\end{document}
(写入文件时它会经历一些扩展.toc
,但这在这里并不重要;您可以使用它, \protect\color
但它可以在不着色的情况下工作,其他材料与其他宏添加的额外组有关,这是运气问题。并且 OP 代码中的括号United States
没有任何作用,因为它不是\color
命令的参数。最好使用\textcolor
。)