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