我使用 MiKTeX 2.9 和tikz
TeXworks 打包并制作简单的图形,这些图形通过 pdfLaTeX 保存在 pdf 文件中。我希望将它们保存为 EPS 文件。我在这里阅读:
从 TikZ 导出 eps 图形
我使用一个简单的例子
\documentclass{article}
\usepackage{tikz}
% set up externalization
\usetikzlibrary{external}
\tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error
-interaction=batchmode -jobname "\image" "\texsource" &&
dvips -o "\image".ps "\image".dvi &&
ps2eps "\image.ps"}}
\tikzexternalize[shell escape=-enable-write18] % MikTeX uses a -enable-write18 instead of --shell-escape.
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle (1cm);
\end{tikzpicture}
\end{document}
并出现以下错误:
===== 'mode=convert with system call': Invoking 'latex -halt-on-error -interact
ion=batchmode -jobname "untitled-1-figure0" "\def\tikzexternalrealjob{untitled-
1}\input{untitled-1}" && dvips -o "untitled-1-figure0".ps "untitled-1-figure0".
dvi && ps2eps "untitled-1-figure0.ps"' ========
! Package tikz Error: Sorry, the system call 'latex -halt-on-error -interaction
=batchmode -jobname "untitled-1-figure0" "\def\tikzexternalrealjob{untitled-1} input{untitled-1}" && dvips -o "untitled-1-figure0".ps "untitled-1-figure0".dvi
&& ps2eps "untitled-1-figure0.ps"' did NOT result in a usable output file 'unt
itled-1-figure0' (expected one of .pdf:.jpg:.jpeg:.png:). Please verify that yo
u have enabled system calls. For pdflatex, this is 'pdflatex -shell-escape'. So
metimes it is also named 'write 18' or something like that. Or maybe the comman
d simply failed? Error messages can be found in 'untitled-1-figure0.log'. If yo
u continue now, I'll try to typeset the picture.
See the tikz package documentation for explanation.
Type H <return> for immediate help.
...
l.15 \end{tikzpicture}
我发现很多人都遇到了同样的错误。我不知道该怎么办。有人能帮忙吗?
答案1
有时,在命令窗口中手动输入有用的命令似乎比执行支持 LaTeX 的文本编辑器的无休止的配置步骤更容易。考虑以下内容myfile.tex
:
\documentclass[11pt]{book}
\usepackage{tikz}
\pgfrealjobname{myfile}
\begin{document}
\beginpgfgraphicnamed{myfile-f1}%
\begin{tikzpicture}
\fill(0,0) rectangle (4,4);
\end{tikzpicture}
\endpgfgraphicnamed
\end{document}
在你的文件所在的工作文件夹中打开这样的命令窗口myfile.tex
,并进行如下编译:
latex --jobname=myfile-f1 myfile.tex
然后
dvips myfile-f1.dvi
您将获得所需的正确裁剪的myfile-f1.eps
文件。
答案2
以下是 MiKTeX 用户的两条路线。第一条类似于这个帖子,但有附加说明。
使用pdflatex+pdftops使用 TeXworks
下载
pdftops
自foolabs.com(PDF 到 PS/EPS 转换器)。您可以在以下位置找到适用于 Windows 的 32 位和 64 位二进制文件xpdfbin-win-3.03.zip。要安装它,请pdftops.exe
从此文件中提取并将其复制到安装目录C:\Program Files\Xpdf\bin
。请记住添加C:\Program Files\Xpdf\bin
到系统变量Path
(开始菜单-> 右键单击电脑->特性->高级系统设置->环境变量在下面先进的tab -> 查找系统变量Path
并编辑其值)。在 TeXworks 中,转到优先->排版选项卡,并添加
--shell escape
到传递给编译器的参数列表中pdflatex
,如下所示。
现在pdflatex
运行
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external} % set up externalization
\tikzexternalize[shell escape=-enable-write18] % activate externalisation
\tikzset{external/system call={pdflatex \tikzexternalcheckshellescape -halt-on-error
-interaction=batchmode -jobname "\image" "\texsource" &&
pdftops -eps "\image.pdf"}}
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle (1cm);
\end{tikzpicture}
\end{document}
在 TeXworks 中您将获得 EPS 格式的图形。
使用乳胶+ps2eps与 TeXnicCenter
你还需要Ghostscript以及 Perl 解释器(一个选项是免费的 ActivePerl“社区版”,可从 activestate.com/activeperl)。
(该
ps2eps
脚本假定您已安装 Ghostscript 的 32 位 Windows。如果您安装 64 位版本,则ps2eps.pl
必须按照本答案末尾的说明更改文件。)在技术中心,添加到
-enable-write18
传递给编译器的参数列表中latex
(转到建造,然后点击定义输出配置文件),如下图所示。
现在你可以继续latex
运行
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external} % set up externalization
\tikzexternalize[shell escape=-enable-write18] % activate externalisation
\tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error
-interaction=batchmode -jobname "\image" "\texsource" &&
dvips -o "\image".ps "\image".dvi &&
ps2eps -l "\image.ps"}}
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle (1cm);
\end{tikzpicture}
\end{document}
在 TeXnicCenter 中您将获得 EPS 格式的图形。
如果您安装了 64 位版本的 Ghostscript,则需要ps2eps.pl
使用文本编辑器打开并将两次出现的 替换gswin32c
为gswin64c
。
答案3
另一种回应是ltximg
脚本自动化此过程,单独的图像文件将它们作为图像(或使用\input{test-tkz-1.tex}
)包含在内。ltximg
脚本可以执行以下操作:
$ ltximg --eps --subenv --imgdir=mypics --prefix=tkz -o test-out test.tex
现在您将拥有一个test-out.tex
将tikzpicture
环境转换为图像的新文档(保留字体的一致性),并且您还将
tikzpicture
在单独的文件中拥有每个环境(以防您需要一些额外的修改)和一个test-all.tex
包含(仅)所有内容的文件tikzpicture
。
首先检查文档,查看输入文件必须满足的选项和条件。