如何防止在 tikz 中评估函数

如何防止在 tikz 中评估函数

我有一堆用于预科微积分和微积分的 TeX 代码。图片在 tikzpicture 环境中。在我们的项目中,我们想要动态创建 TeX 文件并编译三次。对于包含许多图片的文件,编译速度很慢。我想知道,当我们使用类似语法绘制图形时,是否有可能阻止对函数的求值

\draw[red,thick,samples=100,domain=-10:10] plot(\x,{.......});

我知道 gnuplot 和 externalize 方法,但是它们对我来说都不方便。

如果有一个设置可以绘制几乎整个图片并跳过绘图,那就太好了。在 tikz 中可以实现吗?

所有图片都被裁剪成某个矩形,所以我希望删除函数的图形不会改变生成的图片的大小。

非常感谢

答案1

嗯,你可以引入一些特殊的命令行开关。

可以按照如下方式进行:

\documentclass[a4paper]{article}

\usepackage{tikz}

\newif\ifomitplots
\expandafter\ifx\csname OMITPLOTS\endcsname\relax
    \omitplotsfalse
\else
    \omitplotstrue
\fi

\begin{document}
\thispagestyle{empty}
\begin{tikzpicture}
\draw (0,0) grid (2,2);

\ifomitplots
\else
\draw[red,thick,samples=100,domain=0:1] plot (\x,{(\x)^2});
\fi

\end{tikzpicture}
\end{document}

本文档有一些 TikZpicture,其边界框与图无关(由于网格语句)。

我添加了用于命令行参数处理的自定义逻辑:\expandafter\ifx....检查“\OMITPLOTS”是否是已知宏。如果是,则设置“\omitplotstrue”。

您可以在每张图片里面插入\ifomitplots \else <code> \fi

如果你通过标准方法运行编译,\OMITPLOTS则将未定义,并且一切都将照常进行。但是如果你通过以下方式运行它,比如说

pdflatex '\def\OMITPLOTS{1} \input P'

(假设您的文件是P.tex),\OMITPLOTS宏被设置(值被忽略)并且\ifomitplots开关将变为真。

或者,您可以设置一些特定样式,将绘图样本的数量减少到 2。


请注意,我有兴趣了解外部库的任何失败案例,即引入了虚假空间或移位的案例。

相关内容