忽略内容的环境

忽略内容的环境

我想定义环境,ignorethis以便

\begin{ignorethis}
This will not be shown and will  not take any space
\end{ignorethis}

定义忽略参数的命令很简单:

\newcommand{\comments}[1]{}

现在,我该如何ignorethis根据 进行定义comments?类似这样,但不知道如何}正确转义插入和`}。

\newenvironment{ignorethis}{\comments{}{}}

PS:我知道这个comment包,但我不想使用它,因为它需要fragile投影仪中的框架。

平均能量损失

\documentclass{beamer}
\newcommand{\comments}[1]{}
\newenvironment{ignorethis}{\comments{}{}}

\begin{document}
  \begin{frame}
    \comments{This text will be for sure invisible} 
    \begin{ignorethis}
      How can I ignore this? 
    \end{ignorethis}    
  \end{frame}
\end{document}

答案1

前面的答案提到了该environ软件包。我可以确认它适用于安全文本。我怀疑它是否适用于病态示例(catcode 更改、定义错误、括号不匹配),也许尤其是 how beameralso 收集所有内容并对其进行评估。无论如何,这是 MWE

\documentclass{beamer}
\usepackage{environ}
\NewEnviron{ignore}{}{}
\begin{document} 
\begin{frame}
This is a test.
\begin{ignore}
blah blah blah.

blah blah blah.
\end{ignore}
It's over.
\end{frame}
\end{document}

答案2

我还将发布一个根据使用建议创建的答案environ(我不使用etoolboxifthen打包)。

解决方案稍微详细一点:

  • 对于本地改变模式:可选[h]决定是否隐藏或显示可忽略的部分。
  • 对于全局隐藏所有内容:定义\hideallignorables隐藏所有可忽略的环境
  • 全局显示所有内容:定义\showallignorables显示所有可忽略的环境,即使已经[h]\hideallignorables已定义。

我的目的是使用环境忽略复杂的 TikZPictures 以减少编译时间。

\documentclass{beamer}
\usepackage{environ}
\usepackage{ifthen}

\newcommand{\hideallignorables}{Hides all ignorables; It has priority over classes}
%\newcommand{\showallignorables}{Shows all ignorables; It has priority over classes and hideallignorables}

\NewEnviron{ignorable}[1][]{% #2 is a mandatory class name; #1 can be 'h' for hiding
\ifthenelse{\isundefined{\showallignorables}}
    {\ifthenelse{\isundefined{\hideallignorables} \AND \NOT\equal{#1}{h}}
        {\BODY}
        {}%
    }
    {\BODY}%
}

\begin{document}

\begin{frame}

NOSPACE AFTER%
\begin{ignorable}
First text
\end{ignorable}%
NOSPACE BEFORE

\begin{ignorable}
Visible if hideallignorables is not defined
\end{ignorable}

\begin{ignorable}[h]
This is hidden unless showallignorables is defined 
\end{ignorable}

\end{frame}
\end{document}

相关内容