使用 fcolorbox 隐藏方程式不起作用

使用 fcolorbox 隐藏方程式不起作用

我正在学习一些公式,为了使用 fcolorbox 将它们隐藏在我的 pdf 文档中(=打印白色)。我尝试创建一些宏,这是我的 mwe:

\documentclass[a4paper]{scrartcl} \nonstopmode
\usepackage{commath}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{calc}
\usepackage{mathtools}
\usepackage{xcolor}
\newcommand\f[2]{
%    \text{#1: } & #2 \\ % works fine
    \text{#1: } & \fcolorbox{white}{white}{#2} \\ % won't work
}
\begin{document}
    \begin{align*}
        \f{Pythagoras}{a^2 + b^2 &=& c^2}
        \f{Plank Equation}{E &=& \hbar\,\omega}
    \end{align*}
\end{document}

您可以看到我用注释标出了两行。为什么第一行产生了预期的输出,而第二行却产生了错误?即:缺少 $ 插入。

有没有更好的命令来给方程式上色/隐藏方程式?我试过,\phantom{}效果很好,但只在没有“&”符号的情况下……

答案1

您可以使用ifthen它来代替摆弄颜色。

\documentclass[a4paper]{article}
\usepackage{ifthen}
\usepackage{amsmath}
\begin{document}
\newboolean{showeq}
\setboolean{showeq}{true}  % <-- comment this out to hide the equations
\begin{align*}
    \text{Pythagoras:}     && \ifthenelse{\boolean{showeq}}{a^2+b^2 &=c^2}{} \\
    \text{Plank equation:} && \ifthenelse{\boolean{showeq}}{E &= \hbar\,\omega}{}
\end{align*}
\end{document}

答案2

您的代码存在两个问题\f

  1. \fcolorbox将其内容存储在一个框中,该框将模式切换回文本(从数学)。由于像 这样的元素a^2只能在数学模式下使用,因此这会导致错误(缺少$插入)。如果您使用的是\fcolorbox,则需要明确切换回数学模式:\fcolorbox{.}{.}{$..$}
  2. 由于\fcolorbox其内容是装箱的,因此它没有使用符号&/其隐藏在其预期含义中的参考 - 通常用于内部对齐tabularalign(和朋友)。所以,在这种情况下,只需将其删除即可。

虽然使用单字符宏可能很方便,但建议使用更具描述性的宏(因为某些核心宏本身可能就是单字符)。以下是您的输入的修订版本:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\newif\ifshoweq\showeqtrue
\newcommand{\showeq}[2]{%
  \text{#1: } & \ifshoweq #2\else\phantom{#2}\fi
}
\begin{document}
Equations are visible:
\begin{align*}
  \showeq{Pythagoras}{a^2 + b^2 = c^2} \\
  \showeq{Plank Equation}{E = \hbar\,\omega}
\end{align*}

\showeqfalse

Equations are invisible:
\begin{align*}
  \showeq{Pythagoras}{a^2 + b^2 = c^2} \\
  \showeq{Plank Equation}{E = \hbar\,\omega}
\end{align*}
\end{document}

\showeq{<name>}{<eqn>}以文本模式打印<name>,右对齐和左对齐<eqn>。如果布尔变量\ifshoweq设置为\showeqfalse(默认显示方程式/ \showeqtrue),则它将方程式设置为\phantom。这提供了方程式的正确间距,而无需实际打印它(也不需要使用“白色”作为颜色)。

相关内容