如何让特定环境消失?

如何让特定环境消失?

我有几个 Tikz 图片,编译它们需要花费很多时间。更一般地说,我想知道是否有一个开关可以让特定的环境foo消失,就好像代码不存在一样,效果类似于环境comment

基本上,鉴于

\begin{foo}
Whatever happens here
\end{foo}

我想要一个开关,让这个环境完全无效,就好像它不在 Latex 代码中一样。

答案1

如果您已经拥有大量相同环境的代码实例,则可以重新定义并引入开关。因此,扩展 Jasper Habicht 的评论,您可以执行以下操作:

  • 创建一个开关
  • 重新定义相关环境
  • 在重新定义的环境中,将常规环境括在 if 子句中(基于开关),因此它依赖于该开关。

LaTeX 已经有一个内置机制来创建自定义如果's。看看这个帖子

既然您在问题中提到了tikz,我以 为例tikzpicture。下面介绍如何将所有内容组合在一起。每次使用时,\tikzpicsfalse您都会关闭tikz,而\tikzpicstrue则会将其恢复。

\documentclass{article}
\usepackage{tikz}

\newif\iftikzpics
\tikzpicsfalse   % \tikzpicstrue to turn pictures on

\NewEnvironmentCopy{oldtikzpicture}{tikzpicture}
\RenewDocumentEnvironment{tikzpicture}{O{}+b}{%
  \iftikzpics
    \begin{oldtikzpicture}[#1]
      #2
    \end{oldtikzpicture}\fi}{}


\begin{document}
X
\begin{tikzpicture}
  \node {A};
\end{tikzpicture}
\begin{tikzpicture}[
    scale=2,
    baseline,
    every node/.style = {draw},
  ]
  \node [transform shape] {B};
\end{tikzpicture}
\end{document}

相关内容