仅对局部方程编号引用的方程进行编号

仅对局部方程编号引用的方程进行编号

在此问题我要求对出现的方程进行局部方程编号仅有的证明内部的方程式,以及证明外部方程式的全局计数器。我更喜欢用星号对证明内部的方程式进行编号的样式,即 (1*)、(2*) 或 (3*a) 等等。这可以通过以下方式进行管理:

%
% Local equation numbering inside proofs
%

\newcounter{equationstore}
\AtBeginEnvironment{proof}{\setcounter{equationstore}{\value{equation}}
\setcounter{equation}{0}\renewcommand{\theequation}{\arabic{equation}${}^\ast$}}
\AtEndEnvironment{proof}{\setcounter{equation}{\value{equationstore}}}

如你所见,存在两个方程计数器。在进入证明环境之前,全球的计数器被存储,然后切换到另一个当地的计数器,每个证明环境从零开始。退出证明环境后全球的方程计数器已加载。

我想知道是否可以只显示证明中引用的那些方程式。证明中的方程式将仅从同一证明中引用。解决方案应该尊重我的使用hyperrefcleveref对我来说不再需要。

答案1

我给出的另一个问题的解决方案hyperref适用于mathtools'选项showonlyrefs提供你放弃' cleveref,这是此选项的标准警告mathtools

示例输出

\documentclass{article}

\usepackage{mathtools,amsthm,etoolbox}
\usepackage{hyperref}

\mathtoolsset{showonlyrefs}

\newtheorem{theorem}{Theorem}

\newcounter{equationstore}
\newcounter{proofnum}

\AtBeginEnvironment{proof}{\setcounter{equationstore}{\value{equation}}
\refstepcounter{proofnum}
\setcounter{equation}{0}\renewcommand{\theequation}{\arabic{equation}$^*$}
\renewcommand{\theHequation}{\arabic{proofnum}.\arabic{equation}$^*$}}
\AtEndEnvironment{proof}{\setcounter{equation}{\value{equationstore}}}

\begin{document}

\begin{equation}
  \label{eq:one}
  x = 1
\end{equation}

\begin{theorem}
  A theorem.
\end{theorem}

\begin{proof}
  Proof
  \begin{equation}
    \label{eq:p}
    a = b
  \end{equation}
  refers to \eqref{eq:one}, \eqref{eq:two} and \eqref{eq:p} and gives
  \begin{equation}
    \label{eq:q}
    c = d
  \end{equation}
  as required.
\end{proof}

\begin{equation}
  \label{eq:two}
  z = 2
\end{equation}
Refer to \eqref{eq:one}, \eqref{eq:two} and \eqref{eq:p}.


\begin{theorem}
  A second theorem.
\end{theorem}

\begin{proof}
  Proof
  \begin{equation}
    \label{eq:p2}
    a = b
  \end{equation}
  refers to \eqref{eq:one}, \eqref{eq:two} and gives
  \begin{equation}
    \label{eq:q2}
    c = d.
  \end{equation}
  \eqref{eq:q2} is the required result.
\end{proof}

\end{document}

对于您仅将引用使用检查应用于证明中的方程式的新请求,您可以将上述代码调整为

\newcounter{equationstore}
\newcounter{proofnum}

\AtBeginEnvironment{proof}{\mathtoolsset{showonlyrefs}%
\setcounter{equationstore}{\value{equation}}
\refstepcounter{proofnum}
\setcounter{equation}{0}\renewcommand{\theequation}{\arabic{equation}$^*$}
\renewcommand{\theHequation}{\arabic{proofnum}.\arabic{equation}$^*$}}
\AtEndEnvironment{proof}{\setcounter{equation}{\value{equationstore}}%
\mathtoolsset{showonlyrefs=false}}

相关内容