hyperref 警告:pdf 字符串中不允许使用标记(章节标题中的数学)

hyperref 警告:pdf 字符串中不允许使用标记(章节标题中的数学)

再次提出以下问题之一可能会遭到攻击:
避免“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>}

相关内容