tikz 2.1 不再适用于预览包吗?

tikz 2.1 不再适用于预览包吗?

我曾经能够使用预览包创建使用 tikz 代码制作的图表的 png 图像,并使用 ghostscript 将 dvips 的 dvi 输出打印到 png 文件。最新版本的 tikz 似乎在某种程度上破坏了这种能力。

如果我使用以下乳胶代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,snakes,backgrounds,patterns,matrix,shapes,fit,calc,shadows,plotmarks}
\usepackage[graphics,tightpage,active]{preview}
\PreviewEnvironment{tikzpicture}

\begin{document}
\begin{tikzpicture}
    \draw (0,0) rectangle (1,1);
\end{tikzpicture}
\end{document}

然后我运行 Latex 来获取 dvi 文件,并运行 dvips 来转换为 postscript。然后我运行 ghostscript 来生成 png,命令如下:

gswin32c.exe -sDEVICE=png16m -dTextAlphaBits=4 -r300 -dGraphicsAlphaBits=4 -dSAFER -q -dNOPAUSE -sOutputFile="tikz_preview_png_problem.png" -f "tikz_preview_png_problem.ps"

在 tikz 2.1 之前,这个方法运行良好,但现在产生以下输出:

Error: /undefined in pgfo
Operand stack:

Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval-
-   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   fa
lse   1   %stopped_push   1878   1   3   %oparray_pop   1877   1   3   %oparray_
pop   1861   1   3   %oparray_pop   1755   1   3   %oparray_pop   --nostringval-
-   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringv
al--   2   %stopped_push   --nostringval--
Dictionary stack:
   --dict:1161/1684(ro)(G)--   --dict:0/20(G)--   --dict:74/200(L)--   --dict:95
/300(L)--
Current allocation mode is local
Last OS error: No such file or directory
Current file position is 9094
GPL Ghostscript 8.71: Unrecoverable error, exit code 1

有什么办法可以解决这个问题,这很麻烦,因为我喜欢能够生成高分辨率的 png 矢量图形以用于非乳胶文档或网站等。我在 Windows 上使用 Miktex,并使用 Texniccenter 作为编辑器,以防万一。

答案1

我仔细研究了一下,但还是没能找出 Postscript 管道出了什么问题。我首选的生成独立图像的方法是使用 PDF 管道和 ImageMagickconvert实用程序。工作流程相当简单:

pdflatex foo.tex
convert -density 300 foo.pdf foo.png

可以找到 Windows 二进制文件这里,但有两点需要注意:

  • 您将需要GhostScriptgswin32c.exe来从 PDF 或 PS 格式中获取图像。PATHconvert

  • convert.exe必须位于 Windows 二进制文件之前,PATH因为有一个 system32 工具也叫convert.exe这个,并且它具有相同的名称。或者您必须将其重命名convert.exe为类似 的名称imconvert.exe

快速环境编辑器是 一个 漂亮 的 工具 , 可以 帮助 您 排序 Windows PATH.


更新

看来 TikZ 2.10 确实有一个变化破坏了与 Postscript 端预览的兼容性。 先前提及此问题的错误报告以及PGF 邮件列表上的帖子把问题集中到一行上pgfsys-dvips.def


更新 2

由于问题在于 TikZ 产生损坏的 Postscript 而不是 GhostScript,因此gswin32c应该能够对 PDF 文件执行转换:

pdflatex foo.tex
gswin32c -sDEVICE=png16m -dTextAlphaBits=4 -r300 -dGraphicsAlphaBits=4 -dSAFER -q -dNOPAUSE -dBATCH -sOutputFile=foo.png foo.pdf

这将省去 ImageMagick 的安装和设置。

相关内容