我已经成功地将 tikz 与 externalization 和 pdflatex 结合使用了一段时间。但现在我需要切换到 latex->dvi->ps。我遵循了 tikz 文档中的说明并阅读了大量用户帖子。
我可以编译最小示例(见下文)而不会出现任何错误,但 dvi2ps 生成的外部图像(ps)的大小与 a4 纸相当。因此 latex 将图形放在“文本在图像之前”和“文本在图像之后”之后。
边界框是否可能未正确确定?
几个月前我在 Mac OS X 系统上尝试过类似的方案,并且成功了。现在,我正在运行装有最新版 MikTeX 的 Windows 系统(我更新了所有软件包)。
有人知道这是 dvips 还是 tikz 中的错误吗?或者我可能做错了什么。谢谢你的帮助!
PS:我还尝试了许多其他系统调用(pdflatex -> pdftops)以及这里的所有内容: 从 TikZ 导出 eps 图形 但没有成功。
\documentclass[a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error
-interaction=batchmode -jobname "\image" "\texsource" &&
dvips -o "\image".ps "\image".dvi }}
\tikzexternalize
\begin{document}
Text before image.
\begin{figure}[h]
\centering
\begin{tikzpicture}
\clip (0,0) rectangle (1,1);
\draw[red] (0,0) -- (1,1);
\draw[red] (1,0) -- (0,1);
\draw[blue] (0,0) rectangle (1,1);
\end{tikzpicture}
\end{figure}
Text after image.
\end{document}
编辑:我在另一个 Windows 系统上尝试了最小示例,得到了相同的 a4paper 框。调用
dvips -E* -o "\image".ps "\image".dvi
上面的代码会导致没有任何边界框的图形。因此 latex 将图像插入到文本顶部。也可以将格式作为 dvips 的参数进行更改,但我无意将固定边界框指定为一般情况。
答案1
这是(曾经是) PGF CVS 中的一个错误。显然,它是在 PGF 3.0.0 中出现的,并且可以与较早的 PGF 版本配合使用。
我几周前就修复了这个问题;它将随着下一个版本的external
发布而消失。
您的选择是
- 等待下一个稳定的 PGF 版本(漫长)
- 等待下一个稳定的 pgfplots 版本 1.11 并使用
\usepgfplotslibrary{external}
(未来几周内) - 安装 PGF 不稳定版本http://pgf.sourceforge.net/
- 修改系统调用,使其用作
pstoeps
最后一项(在 Windows 中可能不可用)