我想隐藏一些给学生的讲义的证明。我定义了一个新的证明环境,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
环境(和align
和gather
)并相应地增加方程计数器?或者也许有另一种方法来隐藏一些证明,这样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