我有几个 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}