在以下 MWE 中
\documentclass{article}
\usepackage{amsmath, environ}
\NewEnviron{hidden}{}
\def\hide#1{}
\begin{document}
\begin{align*}
X &= Y \\
% \begin{hidden} % DOES NOT WORK
&=Y_{1}%
\\ &\leq Y_{2}\\%
% \end{hidden}
\hide{&=Y_{3}\\&=Y_{4}}
&\le Z
\end{align*}
\begin{hidden}
Some more tests
\end{hidden}
\end{document}
我定义了一个命令和一个环境来隐藏文档的某个部分(这是一个简化,我的用例有点复杂)。该命令适用于所有情况,包括环境align
。但是,我的新环境在内部或类似命令中不起作用align
。这可能是因为\begin{hidden}
\end{hidden}
打开和关闭一个组aligned
会产生问题。有没有办法创建一个不创建组的虚拟环境,就像命令似乎不创建组一样。
答案1
你确实想要添加一个组,这样当您跳过时&
就不会结束对齐单元,从而结束您开始隐藏的组。
此版本不能处理嵌套环境,但可以在此处工作并显示基本方案。
\documentclass{article}
\usepackage{amsmath, environ}
\def\hidden{{\ifnum0=`}\fi
\xhidden}
\def\xhidden#1\end#2{\ifnum0=`{\fi}\end{hidden}}% probably ought to check that #2 is "hidden"
\def\hide#1{}
\begin{document}
\begin{align*}
X &= Y \\
\begin{hidden} % DOES NOT WORK
&=Y_{1}%
\\ &\leq Y_{2}\\%
\end{hidden}
\hide{&=Y_{3}\\&=Y_{4}}
&\le Z
\end{align*}
\begin{hidden}
Some more tests
\end{hidden}
\end{document}
答案2
根据 David 的回答。这是我尝试让事情在嵌套环境中发挥作用。
\documentclass{article}
\usepackage{amsmath, etoolbox}
\def\hide#1{} % or \def\hide#1{#1} to not hide it.
% Essentially flips "\begin{hidden}#1\end{hidden}" to "\begin{hidden}\end{hidden} \hide{#1}"
\def\hidden{{\ifnum0=`}\fi\xhidden\argend}%
\def\xhidden#1\argend#2\end#3{%
\expandafter\ifstrequal\expandafter{#3}{hidden}%
{\ifnum0=`{\fi}\end{hidden}\hide{#1#2}}{\xhidden#1#2\end{#3}\argend}}
\begin{document}
\begin{align*}
X &= Y \\
\begin{hidden}
&=Y_{1}%
\\ &\leq Y_{2}\\%
\begin{matrix}
A & BC
\end{matrix}\\
\end{hidden}
\hide{&=Y_{3}\\&=Y_{4}}
&\le Z
\end{align*}
\begin{hidden}
\begin{center}
Hello
\end{center}
Some more tests
\end{hidden}
\end{document}