这是该文件的(几乎)最小示例,它给出了错误。
\documentclass{article}
\usepackage{amsmath}
\usepackage[english]{babel}
\begin{document}
\section{Section name with varinjlim: $\varinjlim$}
\end{document}
运行 pdflatex 会出现 4 个相同的错误,形式如下
minimal.tex:5: Illegal parameter number in definition of \reserved@a. [...{Section name with varinjlim: $\varinjlim$}]
添加\tableofcontents
会产生 12 个额外的错误,形式为
\minimal.toc:2: Only one # is allowed per tab. [...m \p@ \kern -\ex@ }\cr }}}}\nmlimits@ $}{1}]
有没有办法避免这些问题,并且仍然输入\varinjlim
部分名称?
答案1
有必要使用\protect
或来增强该命令。
hyperref
但是,如果使用,则可能会出现其他问题,因为pdftex
书签中将出现无效字符串。在这种情况下,请使用\texorpdfstring
第二个版本中所示的方法。
\documentclass{article}
\usepackage{amsmath}
\usepackage[english]{babel}
\usepackage{hyperref} % Not needed
\begin{document}
\section{Section name with varinjlim: $\protect\varinjlim$}
\section{Section name with varinjlim: \texorpdfstring{$\protect\varinjlm$}{limits}}
\end{document}
另一种方法是在序言中使用以下代码:
\usepackage{etoolbox}
\robustify\varinjlim%
这样就\protect
不需要了,但是,它并不妨碍所需的\texorpdfstring
。