我想定义环境,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 beamer
also 收集所有内容并对其进行评估。无论如何,这是 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
(我不使用etoolbox
但ifthen
打包)。
解决方案稍微详细一点:
- 对于本地改变模式:可选
[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}