我正在尝试使用 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
),而主编译器无需执行任何额外操作。