隐藏环境但保留方程标签及其数字

隐藏环境但保留方程标签及其数字

我想隐藏一些给学生的讲义的证明。我定义了一个新的证明环境,hiddenproof因为我只想隐藏一些证明。然后我可以通过包隐藏这个环境(实际上我用文本“将在讲座中介绍”替换其内容)environ。一切都运行良好。但是我使用了许多方程式,并且还对它们进行了编号,这是一个 MWE:

\documentclass{scrartcl}

\usepackage{amsmath,amsthm,amssymb}

\renewenvironment{proof}{\noindent\textbf{Beweis.}\hspace*{1em}}{\qed\\}
\newenvironment{hiddenproof}{\noindent\textbf{Beweis.}\hspace*{1em}}{\qed\\}

\newif\ifhideproofs%
%\hideproofstrue%uncomment to hide proofs

\ifhideproofs%
  \usepackage{environ}
  \NewEnviron{hide}{\noindent\textbf{Beweis.}\hspace*{1em} In der Vorlesung.\hfill $\qed$\\[.5ex]}
  \let\hiddenproof\hide%
  \let\endhiddenproof\endhide%
\fi

\begin{document}

\begin{hiddenproof}
  Some proof.
  \begin{equation}%
    \label{eq:eq1}
    Ax = b
  \end{equation}
\end{hiddenproof} 

\begin{equation}
  \label{eq:eq2}
  Ax = c
\end{equation}

\end{document}

由于在讲座中引用了方程编号,因此我想保持它们不变 - 无论证明是可见的还是隐藏的。hiddenproof不是隐藏后,一切都很好:eq:eq1将被标记为(1)eq:eq2将被标记为(2)。但是,如果我隐藏证明(通过取消注释\hideproofstrue),第一个equation环境甚至不再存在,第二个方程将获得标签(1)

有没有办法“计算”所有equation环境(和aligngather)并相应地增加方程计数器?或者也许有另一种方法来隐藏一些证明,这样equation环境就不会被删除,而是变得不可见。

答案1

您可以将环境的内容输入到从未使用的框中。因此,环境内的每个宏都会被展开(包括计数器),但永远不会被打印:

\ifhideproofs%
  \usepackage{environ}%
  \NewEnviron{hide}{\noindent\textbf{Beweis.}\hspace*{1em} In der Vorlesung.\hfill $\qed$\\[.5ex]%
    \setbox0\vbox{\BODY}% execute env without printing anything
  }
  \let\hiddenproof\hide%
  \let\endhiddenproof\endhide%
\fi

相关内容