当我这样做时,它说(我的文件名为 Test.tex):
./Test.tex:397: TeX capacity exceeded, sorry [input stack size=5000].
<to be read again>
\HyPsd@@LetCommand
l.397 \subsection{Here the error occurs $\bm{p}$}
./Test.tex:397: ==> Fatal error occurred, no output PDF file produced!
Transcript written on Test.log.
\mathbf{p}
并且可以\vec{p}
正常工作,并且在代替上述内容写入时不会产生错误\bm
。
一些小信息:我希望标题中的 p 为粗体,因为在我的例子中它代表一个向量.p 有一个下标,我不想将其加粗。
答案1
问题不在于移动论证中的脆弱命令,因为\bm
是稳健的。这里的罪魁祸首是hyperref
。
您可以通过两种方式解决您的问题:
类型
\section{A vector \texorpdfstring{$\bm{p}$}{p}}
添加
\bm
到创建书签时要取消的命令列表
第二种策略也许更好:
\documentclass{article}
\usepackage{bm}
\usepackage{hyperref,bookmark}
\DeclareRobustCommand{\vect}[1]{\bm{#1}}
\pdfstringdefDisableCommands{%
\renewcommand{\vect}[1]{#1}%
}
\begin{document}
\section{A vector $\vect{p}$}
\end{document}
你必须接受这个警告
Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref) removing `math shift' on input line 12.
尽管。
定义\vect
比直接使用更好\bm
,因为它为命令添加了语义。