摆脱“包 hyperref 警告:PDF 字符串(Unicode)中不允许使用令牌”的更简便方法?

摆脱“包 hyperref 警告:PDF 字符串(Unicode)中不允许使用令牌”的更简便方法?

\foreignlanguage{russian}{#1}我在我的文档中反复使用命令,为此我创建了一个新命令\NewDocumentCommand {\ru}{+m}{\foreignlanguage{russian}{#1}}

现在,只要我\ru在类似的地方使用它\section,XeLaTeX 就会抛出(臭名昭著)的错误

Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref)                removing `\ru' on input line XXX.

为了解决这个问题,我们当然有办法\texorpdfstring,但问题是我必须输入很多次,而且这么大的文本会让整个文档都无法阅读。例如,为了消除这个警告,我必须在\texorpdfstring{\ru{ъ}}{ъ}一个简单的\ru{ъ}就可以解决问题的地方输入。

为了解决这个问题,我创建了另一个命令:

\NewDocumentCommand {\sru}{+m}{\texorpdfstring{\foreignlanguage{russian}{#1}}{#1}}

这条命令应该可以消除错误。但是,现在我得到了错误:

Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref)                removing `\sru' on input line XXX.

有什么办法可以缩短整个结构吗?去掉上面的警告吗?

答案1

您可以使用\NewExpandableDocumentCommand它来扩展它,并在正确的时间看到 texorpdf 开关。

相关内容