考虑以下 MWE:
\documentclass{article}
\usepackage{mathtools}
\usepackage{amsmath}
\newtagform{brackets}{[}{]}
\usetagform{brackets}
\AtBeginDocument{\let\latexlabel\label}
\usepackage{hyperref}
\hypersetup{
colorlinks=true,
linkcolor=black,
filecolor=black,
urlcolor=black,
}
\urlstyle{same}
\begin{document}
\begin{equation*}
\refstepcounter{equation}\latexlabel{a}
\refstepcounter{equation}\latexlabel{c}
\refstepcounter{equation}\latexlabel{e}
a=b\quad c=d\quad e=f
\tag{\ref*{a},$,$ \ref*{c},$,$ \ref*{e}}
\end{equation*}
\end{document}
当我编译它时,它没有显示第三个标签并给了我两个错误:
paragraph ended before @firstoffive was complete
argument of @firstoffive has an extra }
我认为问题出在hyperref
包上,因为删除包并\tag*
用\tag
包替换不会给我带来任何错误。此外,在使用时,hyperref
我必须在数学环境中手动插入逗号才能显示它们。
这些错误是什么?我怎样才能消除它们并让文件正确编译?
谢谢您抽出时间,我们非常感激。
编辑:
为了更清楚起见,代码错误地编译为:
这就是我希望它编译的方式,以及如何在不使用hyperref
包的情况下正确编译:
答案1
为了使代码能够正确编译,\AtBeginDocument{\let\latexlabel\label}
必须在hyperref
包之后加载。这样做,不仅代码可以正确编译,而且数学环境中的逗号也可以且应该被删除。