\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 开关。