我希望能够align
通过开关关闭(即隐藏)其中的数学块并将其替换为空白。我找到了很多关于如何打开/关闭环境中的文本甚至元素的示例,align
但这些示例都不符合我的需要(或者总体上对我不起作用)。
考虑以下 MWE:
\documentclass{article}
\usepackage{amsmath}
% SWITCH MATH ON(1)/OFF(0)
\def\showmath{1}
\newcommand{\mathsolution}[1]{
\ifnum\showmath=1
#1
\fi
\ifnum\showmath=0
\vspace{2\baselineskip} \hspace{2cm}
\fi
}
\begin{document}
Some text.
\mathsolution{
\begin{align*}
y = mx+b \\
y = mx+b
\end{align*}
}
Some text.
\end{document}
我目前正在尝试使用以下代码来实现这一点:
\ifnum\showmath=0
\vspace{2\baselineskip} \hspace{2cm}
\fi
这里数学运算没有被打印出来,并且插入了一些空格。但是,我希望空格大致接近实际数学运算块所占的空间。
注意:这里无法以白色打印,因为它仍然可以被复制/粘贴。
答案1
您可以将解决方案存储在一个盒子中,并显示该盒子或该高度的 vspace:
\newif\ifshowmath % use \newif to define switches
\newenvironment{mathsolution}{
\setbox0\vbox\bgroup} % store solution in box 0
{\egroup % end of box
\ifshowmath\par\box0 % display box
\else\vskip\ht0 % whitespace of height of box
\fi
}
\begin{document}
\showmathfalse
Hidden solution:
\begin{mathsolution}
\begin{align}
x & = 12 \\
y & = 42
\end{align}
\end{mathsolution}
\showmathtrue
Shown solution:
\begin{mathsolution}
\begin{align}
x & = 12 \\
y & = 42
\end{align}
\end{mathsolution}
\end{document}
该实现可能不太强大,特别是与分页符结合时。