Tikz externalize:使用外部 PDF 或通过 tikz 渲染,不创建外部 PDF

Tikz externalize:使用外部 PDF 或通过 tikz 渲染,不创建外部 PDF

我有 texlive 2012 和 tikz。是否有可能出现以下行为?

使用 tikz 的外部库时,如果可用,则使用外部图像。但是,如果不可用,则通过 tikz 渲染图片。不要创建外部 PDF。

我有一些文件外部化失败,可能是因为 tikz 代码嵌套在几个更复杂的宏中(包括将代码写入辅助 TeX 文件等)。

我们谈论的是大约 500 个文件,如果这些文件的输入发生变化(修复拼写错误、改进模板、在 PDF 中添加新类型的交互性),这些文件将在 bash 脚本中编译。我想,我可以检查具有相应名称的 pdf 文件是否存在,并从命令行打开/关闭外部化,但我想知道是否有一些仅在 TeX 中更清晰的解决方案。

PDF 文件的典型示例是http://user.mendelu.cz/marik/temp/000040.pdf


更新

以下文件无法使用 \tikzexternalize 进行编译

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\begin{document}

\def\mypic#1{
  \begin{tikzpicture}\clip (-1,-1) rectangle (1,2);
    \draw[red] plot (\x,{#1});
\end{tikzpicture}
}

\mypic{(\x)^2}
\begin{tikzpicture}\clip (-1,-1) rectangle (1,2);
\draw[red] plot (\x,{\x*\x*\x});
\end{tikzpicture}

\end{document}

我们确实需要 externalize 的原因是,我们将在特定网站上即时创建 TeX 文件并进行编译。我们希望节省计算机负载,也不想再次编辑 TeX 文件。这个想法是

  • 我们在一台快速的机器上编译,大多数 tikz 图片将被外部化,有些则不会
  • 我们将 PDF 文件移至服务器。
  • 如果需要在服务器上编译某些内容,并且有 PDF 文件,请使用此 PDF 文件。如果没有,请像使用常规 tikz 一样进行编译。我们希望拥有与 benwilfut 的答案类似的功能,但不修改 TeX 文件。

答案1

编辑:

我相信 TikZ 键external/mode=graphics if exists可以满足您的需求。(请参阅TikZ/PGF 手册 v2.10第 32.4.4 节,第 349 页。)请尝试以下操作作为示例:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\tikzset{external/mode=graphics if exists}
\begin{document}

\def\mypic#1{
  \begin{tikzpicture}\clip (-1,-1) rectangle (1,2);
    \draw[red] plot (\x,{#1});
\end{tikzpicture}
}

\mypic{(\x)^2}
\begin{tikzpicture}\clip (-1,-1) rectangle (1,2);
\draw[red] plot (\x,{\x*\x*\x});
\end{tikzpicture}

\end{document}

原始答案:

如果您知道外部图形具有特定的扩展名(如您的情况所示),则可以使用\IfFileExists{<file>}{}{},例如

\documentclass{article}

\usepackage{tikz}

\begin{document}

\IfFileExists{./logo.pdf}{%
  \includegraphics{logo}
}{%
  \begin{tikzpicture}
    \draw (0,0) rectangle (1,1);
  \end{tikzpicture}
}

\end{document}

相关内容