![目录中的颜色变化 \addcontentsline 显示在 pdf 书签中](https://linux22.com/image/374373/%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E9%A2%9C%E8%89%B2%E5%8F%98%E5%8C%96%20%5Caddcontentsline%20%E6%98%BE%E7%A4%BA%E5%9C%A8%20pdf%20%E4%B9%A6%E7%AD%BE%E4%B8%AD.png)
答案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
。)