你好,我想用数字 ( \theequation
) 自动标记每个方程式,我找到了一个简单的解决方案(以避免手动环境重新定义),但我不明白我遗漏了什么。为什么它不能识别引用?
\documentclass{report}
\usepackage{etoolbox}
\usepackage{mathtools}
\AtBeginEnvironment{equation}{\label{\theequation}}
\begin{document}
\begin{equation}
x = y
\end{equation}
Reference to the first equation: \eqref{1} (\theequation)
\end{document}
答案1
它不起作用,因为您用来\AtBeginEnvironment
设置标签,而equation
计数器尚未步进,这意味着1
当您尝试使用它时标签尚未定义,只有标签0
是。
来自文档:
\AtBeginEnvironment{<environment>}{<code<}
:将任意内容附加<code>
到由 执行的钩子中,该钩子位于 给\begin
定命令的开头<environment>
,紧接着该命令之前\<environment>
,在 由 打开的组内\begin
。
如果你确实想使用这种标记方案,你可以改用\AtEndEnvironment{<environment>}{<code>}
。如文档中所述etoolbox
,<code>
在之前执行\end<environment>
:
\documentclass{report}
\usepackage{etoolbox}
\usepackage{mathtools}
\AtEndEnvironment{equation}{\label{\theequation}}
\begin{document}
\begin{equation}
x = y
\end{equation}
Reference to the first equation: \eqref{1} (\theequation)
\end{document}
笔记:这仅当您的公式编号在整个文档中是连续的(并且不包含“父”计数器,例如(2.1)
)时才有效。如果不是,您将必须\label
相应地编辑参数以避免多次定义标签。