隐藏环境中的内容但保留空白

隐藏环境中的内容但保留空白

我有一个自定义环境\newenvironment{mathsolution},其中包含我想根据开关\showmathtrue和隐藏的内容\showmathfalse。我针对此条件编写的代码如下:

\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
}

我试图在内容隐藏时保留框的精确空白,但这并没有发生。

问题示例

请注意,在下图中,第一个数学解决方案间距很接近,但并不完全精确。在第二个问题中,我使用了adjustboxminipage所有空白都会被忽略

在此处输入图片描述

我需要的

在此处输入图片描述

平均能量损失

\documentclass{book}
\usepackage[margin=1.00in,showframe]{geometry}
\usepackage{amsmath,amssymb,amsfonts}    % Equations
\usepackage{adjustbox}

% LONG (MATH) SOLUTIONS
\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
}

%\showmathtrue
\showmathfalse

\begin{document}

Some math problem stated here.
\begin{mathsolution}
$$ 1.0\times 10^{1} \left ( \dfrac{1}{10^{1}} \right ) = 1 $$
\end{mathsolution}

Some other math problem stated here.
\begin{mathsolution}
\adjustbox{valign=t}{\begin{minipage}{0.43\linewidth}
\begin{align*}
x_1 &= 1.000  \\
y_1 &= \left ( \dfrac{1}{2}\right )   \left ( a - b \right ) \\
    &= 2.000 \\
x_2 &=~? \\
y_2 &= \left ( \dfrac{1}{2}\right )   \left ( b - a \right ) \\
    &= 2.000 \\
\end{align*}
\end{minipage}
}
\hfill
\adjustbox{valign=t}{\begin{minipage}{0.55\linewidth}
\begin{align*}
\dfrac{c}{d} = \dfrac{e}{f}  \longrightarrow
c   &= \dfrac{d\times e}{f} \\
    &= 3.000
\end{align*}
\end{minipage}
}
\end{mathsolution}

Some text.

\end{document}

注意:将文本更改为白色不是一个选项。

答案1

对 MWE 的这一修改解决了该问题:

\usepackage{environ}
\newif\ifshowmath     % use \newif to define switches
\newsavebox{\mybox}
\NewEnviron{mathsolution}{%
\sbox{\mybox}{\begin{minipage}{\textwidth}\BODY\end{minipage}}%
}[\ifshowmath\par\usebox{\mybox}%
\else\par\begin{minipage}{\textwidth}\vspace*{\dimexpr\ht\mybox+\dp\mybox\relax}\end{minipage}\fi]

如你看到的:

  • 我使用了这个environ包,它使这类工作变得更容易
  • 我没有用过adjustbox,我认为这里不需要
  • 我把你对 TeX 原语的使用改成了 LaTeX 命令 在此处输入图片描述

相关内容