Hyperref 包(PDF 字符串中不允许使用令牌)

Hyperref 包(PDF 字符串中不允许使用令牌)

当我启动文档的附录时总是出现hyperref带有的问题\uppercase,并且总是出现:

Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref)                removing `\uppercase' on input line 504.

怎么解决?

\begin{apendicesenv}
% Imprime uma página indicando o início dos apêndices% Imprime uma página indicando o início dos apêndices
\partapendices
% ----------------------------------------------------------
\chapter{Questinários}
% ----------------------------------------------------------
\centering
\includegraphics[trim = 1.9cm 5cm 1.1cm 11mm,clip,width= 16cm]{Selecao.pdf}
% ----------------------------------------------------------
\chapter{Diagnóstico Inicial}
% ----------------------------------------------------------
\centering
\includegraphics[trim = 1.3cm 2cm 1.1cm 8mm,clip,width= 16cm]{diag.pdf}
\includepdf[pages={2-3},trim = 1.3cm 2cm 1.0cm 8mm,clip,width= 16cm]{diag.pdf}
\end{apendicesenv}

答案1

\uppercase是不可展开的命令。因此,必须调用/执行它才能完成其工作,在 TeX 语音中,位置是胃。但是,书签是在可扩展上下文中生成的,即 TeX 的嘴巴。它类似于写入文件或控制台。尝试:

\typeout{\uppercase{hello}}

结果\uppercase出现在输出中并且hello保持小写:

\uppercase {hello}

生成书签的代码hyperref尽力避免此类命令出现在输出中,并已成功将其删除,请参阅警告文本。当然,文本不会转换为大写,因此,警告是合理的。

有两种方法可以解决没有警告的情况:

  • \pdfstringdefDisableCommands可用于删除不受支持的命令:

    \usepackage[...]{hyperref}
    \pdfstringdefDisableCommands{\let\uppercase\@firstofone}
    
  • \texorpdfstring可以用来用替换文本替换不受支持的构造,例如:

    \section{\texorpdfstring{\uppercase{hello}}{HELLO}}
    

相关内容