加载 hyperref 时,在 *numbered* 章节标题中使用 \bm 时出错

加载 hyperref 时,在 *numbered* 章节标题中使用 \bm 时出错

\bm当我在已编号的节标题中使用命令时,在hyperref加载包时出现错误。错误如下:

错误:TeX 容量超出,抱歉 [输入堆栈大小=5000]。

--- TeX 说 --- 需要再次阅读>
{ l.10 ...ction{$p,\bm{w}$ 中凸性的证明}

这是 MWE

\documentclass{article}
\usepackage{bm}  
\usepackage[bookmarks]{hyperref}

\begin{document}
\section{A proof of convexity in  $p,\bm{w}$}
\end{document}

请注意,如果我执行以下任何操作,都可以避免该错误

  • \section*代替\section(这真的让我很感兴趣!)
  • \bm{}从标题中删除
  • 删除包hyperref

我注意到有一个问题与我的问题类似(例如),但解决方案似乎与我的问题无关。

有人知道如何解决这个问题吗?

答案1

PDF 书签不能有格式,因此您可以

  1. \texorpdfstring在命令中使用\section来提供用于书签的替代文本:

    \section{A proof of convexity in  \texorpdfstring{$p,\bm{w}$}{$p,w$}}
    
  2. 或者使用\pdfstringdefDisableCommands禁用宏(感谢史蒂芬莱姆克指出这一点):

    \pdfstringdefDisableCommands{%
        \renewcommand*{\bm}[1]{#1}%
        % any other necessary redefinitions 
    }
    

    我更喜欢这种方法,因为它不会使您的正文变得混乱。


代码:\texorpdfstring

\documentclass{article}
\usepackage{bm}  
\usepackage[bookmarks]{hyperref}

\begin{document}
  \section{A proof of convexity in  \texorpdfstring{$p,\bm{w}$}{$p,w$}}
\end{document}

代码:\pdfstringdefDisableCommands

\documentclass{article}
\usepackage{bm}  
\usepackage[bookmarks]{hyperref}

\pdfstringdefDisableCommands{%
    \renewcommand*{\bm}[1]{#1}%
    % any other necessary redefinitions 
}

\begin{document}
  \section{A proof of convexity in  $p,\bm{w}$}
\end{document}

相关内容