重新定义方程环境:自动标记

重新定义方程环境:自动标记

你好,我想用数字 ( \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相应地编辑参数以避免多次定义标签。

相关内容