隐藏对齐中的数学运算并用可变空格替换

隐藏对齐中的数学运算并用可变空格替换

我希望能够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}

该实现可能不太强大,特别是与分页符结合时。

相关内容