为什么 tikz 既不绘制也不外部化我的图片?

为什么 tikz 既不绘制也不外部化我的图片?

我正在尝试使用 tikz 的库从 tikz 图片生成 gif external。最终,我的计划是

  • 将图片转换为 gif
  • 编写一个节点样式,将节点的坐标转换为地图文件中的像素偏移
  • 在网页上一起使用它们。

如果有人以前做过这件事,我很高兴得到指点。

但是,我改编了 tikz 文档中用于系统调用的示例convert。与原始示例的唯一区别是我没有添加代码,include external并且我将所需的输出格式更改为gif

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{external}

\tikzset{
  gif export/.style={
    external/system call/.add=
    {}
    {; convert -density 300 -transparent white "\image.pdf" "\image.gif" },
    %
    /pgf/images/external info,
  }
}
\tikzexternalize
\tikzset{gif export}

\begin{document}
  \begin{tikzpicture}
    \draw (0,0) node[draw,minimum width=1in] {TestNode};
  \end{tikzpicture}
\end{document}
  • 生成的 main.pdf 是空的,
  • 外部化库创建一个空的 main-figure0.pdf 和 main-figure0.dpth
  • 创建了一个名为的附加文件},但我不知道可以用它做什么。

我感觉结尾的}after"\image.gif"造成了问题。当我把那一行改成以

"\image.gif"},

gif(和之间没有空格}),转换后的文件名为main-figure0.gif}并且也是空的。

但我不知道如何解决这个问题。

答案1

首先:不要将standalone类与external库一起使用!使用其中一个即可。两者都试图以不同的方式做类似的事情,将它们结合起来只会带来麻烦。

命令中不允许;明确禁止您正在做的事情,即执行两个命令。

开发版本standalone支持使用类选项转换为 GIF convert。这应该已经可以工作了,但这个版本尚未完全测试,并且仍然有一点问题(例如,自从更改为 PGF 键以来,其他类选项不再传递给底层类)。

在此期间,您可以按照我的问题的答案中所述进行操作PDF完成并关闭后是否进行Shell逃逸?。这适用于 PDF,但对于 GIF 应该相同。

\documentclass[border=0pt]{standalone}

\usepackage{tikz}

\ifx\conditionmacro\undefined
  \immediate\write18{%
    pdflatex --jobname='\jobname' '\gdef\string\conditionmacro{1}\string\input\space\jobname'
  }%
  \immediate\write18{%
    convert -density 300 -transparent white '\jobname.pdf' '\jobname.gif'
  }%
   \expandafter\stop
\fi


\begin{document}
  \begin{tikzpicture}
    \draw (0,0) node[draw,minimum width=1in] {TestNode};
  \end{tikzpicture}
\end{document}

用 运行pdflatex -shell-escape <file>

这里的诀窍是,文档pdflatex在前言中再次调用(在创建或覆盖 PDF 之前),在此子调用中自行编译(!),然后convert在文档构建后启动命令。之后,它会停止主编译器运行(\stop),而主编译器无需执行任何额外操作。

相关内容