我收到大量警告,例如“pdf 字符串中不允许使用令牌”,因为我的大多数章节标题都包含数学(请参阅此处的帖子:Hyperref-不允许使用令牌或者这里:Hyperref 警告 - PDF 字符串中不允许使用令牌)。
我想将提供的解决方案应用于前面的问题,即写入 \texorpdfstring{\(math\)}{Lg}
。但是,我更希望这能自动完成。是否可以将数学环境(在章节标题内)更改为自动添加\textorpdfstring
。
梅威瑟:
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\section{\(I\) cast warnings but I wish I wouldnt}
\section{\texorpdfstring{\(I\)}{I} dont}
\section{Of course me neither}
\end{document}
答案1
一个简单的解决方案就是用以下方式吞噬数学\pdfstringdefDisableCommands
:
\documentclass{article}
\usepackage{hyperref}
\makeatletter
\pdfstringdefDisableCommands{\let\(\fake@math}
\newcommand\fake@math{}% just for safety
\def\fake@math#1\){[math]}
\makeatother
\begin{document}
\section{\(I\) cast warnings but I wish I wouldnt}
\section{\texorpdfstring{\(I\)}{I} dont}
\section{Of course me neither}
\end{document}
\(...\)
这将用替换 所有数学公式[math]
。
进行选择性替换需要实现一个完整的解析器。