我正在尝试找到一种方法来隐藏数学环境中的表达式。我找到了一个解决方案,由 Steven B. Segletes 提供,网址为
但是,当我添加 amsmath 包时,它就崩溃了,并显示错误“缺少 $ 插入”。我在下面提供了一个 MWE 示例。如果我删除\usepackage{amsmath}
,它会编译。如果我删除\frac
命令,它会编译。
\documentclass{article}
\usepackage{amsmath}
\usepackage{censor}
\usepackage{stackengine}
\usepackage{scalerel}
\censorruleheight=0ex
\makeatletter
\long\def\blackout#1{%
\def~{-}%
\protected@edef\save@arg{#1}%
\expandafter\censor@Block\save@arg\stringend\let~\sv@tilde}
\let\sv@cenword\@cenword
\newcommand\m@cenword[1]{\ThisStyle{%
\stackengine{\mcensorruledepth}{$\SavedStyle\phantom{#1}$}%
{\rule{\widthof{$\SavedStyle#1$}}{\the\censorruleheight}}{U}{c}{F}{T}{L}}}
\newcommand\mblackout[2][\dp\strutbox]{%
\let\@cenword\m@cenword%
\def\mcensorruledepth{#1}%
\blackout{{#2}}%
\let\@cenword\sv@cenword%
}
\makeatother
\begin{document}
\[\mblackout{\frac{a}{b}} \]
\end{document}
答案1
随着该软件包 4.2 版本的censor
推出,数学文本在某种程度上是自动处理的。例如:
\documentclass{article}
\usepackage{amsmath}
\usepackage{censor}
%\censorruleheight=0ex
\begin{document}
\[y = \blackout{x = \frac{a_{1}}{b_{2}}} \cdot \frac{1}{2} \]
\[y = x = \frac{a_1}{b_2} \cdot \frac{1}{2} \]
$\beta / \blackout{\alpha} \times 3$
$\beta / \alpha \times 3$
\end{document}
产量
请注意以下几点:1)非文本宏\frac
本身不受审查,只有分子和分母不受审查文本受到审查(因此连字符显示),并且 2)即使是单个标记,也必须包含受到审查的下标和上标。
因此,对于当前问题,其中\censorruleheight
可以将设置为0pt
,联结保持不变:
原始答案
您可以在自己的组中设置有问题的宏(通过括号),然后无论有没有,它们都可以设置得很好amsmath
:
\documentclass{article}
\usepackage{amsmath}
\usepackage{censor}
\usepackage{stackengine}
\usepackage{scalerel}
\censorruleheight=0ex
\makeatletter
\long\def\blackout#1{%
\def~{-}%
\protected@edef\save@arg{#1}%
\expandafter\censor@Block\save@arg\stringend\let~\sv@tilde}
\let\sv@cenword\@cenword
\newcommand\m@cenword[1]{\ThisStyle{%
\stackengine{\mcensorruledepth}{$\SavedStyle\phantom{#1}$}%
{\rule{\widthof{$\SavedStyle#1$}}{\the\censorruleheight}}{U}{c}{F}{T}{L}}}
\newcommand\mblackout[2][\dp\strutbox]{%
\let\@cenword\m@cenword%
\def\mcensorruledepth{#1}%
\blackout{{#2}}%
\let\@cenword\sv@cenword%
}
\makeatother
\begin{document}
\[y = \mblackout{x = {\frac{a}{b}}} \cdot \frac{1}{2} \]
\[y = x = \frac{a}{b} \cdot \frac{1}{2} \]
$\beta / \mblackout{{\alpha}} \times 3$
$\beta / \alpha \times 3$
\end{document}
答案2
为什么不直接使用\phantom{...}
?
\phantom
它只会在页面上放置(精确测量的)空间。
当然,您必须小心保持&
和其他格式指令的正确同步,但如何做到这一点应该是相当明显的。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[ abc\phantom{def}ghi \]
first, the example without \verb+\phantom+s:
\begin{align*}
abc &= def\\
ghi &= \frac{1}{m}jklmnopq\\
rst &> \frac{1}{2}
\end{align*}
this even works in $abc\tfrac{1}{1+n}de$ in-line text.
now, apply \verb+\phantom+ to selected elements:
\begin{align*}
abc &= def\\
g\phantom{h}i &= \phantom{\frac{1}{m}}jk\phantom{lmn}opq\\
rs\phantom{t} &> \frac{1}{2}
\end{align*}
this even works in $ab\phantom{c\tfrac{1}{1+n}}de$ in-line text.
\end{document}