再次提出以下问题之一可能会遭到攻击:
避免“Package hyperref 警告:PDF 字符串中不允许使用令牌”警告的方法
Hyperref 警告 - PDF 字符串中不允许使用令牌
Hyperref-不允许使用令牌
我决定添加 hyperref,当然我会收到这些警告,因为我有一个包含章节和目录的文档,其中我使用$...$
符号在许多章节标题中输入数学符号(我知道 pdf 正在尝试使用这些标题创建书签名称,但在数学方面存在问题)。但是,查看提交的答案,我宁愿不必进入并执行任何涉及手动修复每个章节标题的操作(例如在\texorpdfstring
每个标题中添加一个,和/或更改为\(...\)
所有地方)。此外,我不想“记住一组不同的规则”用于章节标题:我希望继续$...$
广泛地使用内联数学。
有什么方法可以在我的文档中使用超链接吗?这并不涉及改变每个部分标题内的数学?
我尝试过(但并没有真正理解)该\pdfstringdefDisableCommands
命令,但我不确定如何忽略符号$
。请注意上面的答案使用了\(...\)
。因此,如果有人能帮助解释如何做到这一点,我将不胜感激。
答案1
\alpha
您可以通过全局设置数学符号的转换(如)\pdfstringdefDisableCommands
并静默hyperref
以避免打印包含以下内容的警告信息math shift
- 表明标题中已激活数学模式。
\documentclass{article}
\usepackage{hyperref}
\makeatletter
\let\oldHyPsd@CatcodeWarning\HyPsd@CatcodeWarning% Store original catcode warning
\renewcommand{\HyPsd@CatcodeWarning}[1]{% Update to check for...
\ifnum\pdfstrcmp{#1}{math shift}=0 % ...the presence of 'math shift'. If so, do nothing.
\else % Otherwise,
\oldHyPsd@CatcodeWarning{#1}% % (if no 'math shift') just print the regular warning.
\fi
}
\makeatother
\pdfstringdefDisableCommands{%
\def\alpha{a}% Convert \alpha to a
}
\begin{document}
\tableofcontents
\section{A section}
\section{A section with $math$}
\section{A section with $\alpha$}
\end{document}
这是一种非常粗暴的方法,我宁愿建议从根本上解决问题,而不是寻找创新方法来绕过它。核心类型的修复方法是使用\texorpdfstring{<TeX>}{<PDF>}
。