我正在学习一些公式,为了使用 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
:
\fcolorbox
将其内容存储在一个框中,该框将模式切换回文本(从数学)。由于像 这样的元素a^2
只能在数学模式下使用,因此这会导致错误(缺少$
插入)。如果您使用的是\fcolorbox
,则需要明确切换回数学模式:\fcolorbox{.}{.}{$..$}
。- 由于
\fcolorbox
其内容是装箱的,因此它没有使用符号&
/其隐藏在其预期含义中的参考 - 通常用于内部对齐tabular
或align
(和朋友)。所以,在这种情况下,只需将其删除即可。
虽然使用单字符宏可能很方便,但建议使用更具描述性的宏(因为某些核心宏本身可能就是单字符)。以下是您的输入的修订版本:
\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
。这提供了方程式的正确间距,而无需实际打印它(也不需要使用“白色”作为颜色)。