我希望将我的 TikZ 图像转换为 EPS 格式并保存在单独的文件中,同时 pdfLaTeX 编译我的文档,这是理想的情况。请注意,我使用的是 MikTeX 和 TeXstudio。
否则,我希望能够使用 pdfLaTeX 将 TikZ 图片从 LaTeX 文件转换为 EPS。
我试过找到的方法这里但图片无法完全正确显示。图片有部分缺失,而且以这种方式转换每个图形非常麻烦。
下面是示例代码。
测试文本
\documentclass[a4paper,10pt]{article}
\usepackage{tikz}
\usepackage{pgf}
\usetikzlibrary{arrows, calc, decorations.pathmorphing, shapes}
\pgfrealjobname{test}
\begin{document}
\beginpgfgraphicnamed{levels}
\begin{tikzpicture}[scale=1, font=\normalsize, every node/.append style={transform shape}]
\node[rectangle, draw, minimum width=1.5em, minimum height=1.5em, line width=0.05em] (n1) at (0,0) {1};
\node[rectangle, draw, minimum width=1.5em, minimum height=1.5em, line width=0.05em] (n2) at (2,0) {2};
\end{tikzpicture}
\endpgfgraphicnamed
\end{document}
在命令提示符中:
latex --jobname=levels test.tex
dvips -o levels.eps levels.dvi
有任何想法吗?
答案1
根据@Ignasi 的回答和他发布的有关使用 PdfLaTeX 编辑器的链接,解决方案如下:
从foolabs.com下载 xpdf 并解压到计算机上的某个位置。
在计算机属性去高级系统设置 -> 环境变量并添加你的特定路径xpdfbin\bin到路径。这将使 Windows 能够找到该文件夹并使用可执行文件pdftops在命令行上。
在特克斯工作室 去选项 -> 命令并将 PdfLaTeX 行更改为:
pdflatex.exe --shell-escape -synctex=1 -interaction=nonstopmode %.tex
当您点击文件的编译按钮时,这将告诉 TeXstudio 在命令行上使用上述内容。
最后,在你的LaTeX 文档,在序言部分添加以下内容:
\usetikzlibrary{external}
\tikzset{external/system call={pdflatex \tikzexternalcheckshellescape
-halt-on-error
-interaction=batchmode
-jobname "\image" "\texsource"
&& pdftops -eps "\image.pdf"}}
\tikzexternalize[shell escape=-enable-write18]
然后,您可以根据自己的心意进行编译,因为 PdfLaTeX 将生成所有 Tikz 绘图的 pdf 和 eps 版本!
有关 LaTeX 构建的其他信息以及如何针对您的特定情况进行构建,可以在 @Ignasi 建议的这两个链接中找到:
此外,此技术还可以使用 xpdf 包中的其他 PDF 转换工具,例如pdftopng。
答案2
这就是externalize
TikZ 库所做的。尝试使用命令pdflatex --shell-escape levels
(即levels
文件的名称)编译下一个代码。结果,您将获得一个pdf
包含整个文档的文件,还有另一个levels-figure0.pdf
包含该TikZ
图的文件:
实际上,您将获得与源文件levels-figureXXX.pdf
一样多的文件。下次您再次编译源文件时,所有文件都不会被处理,并会被相应的结果替换。tikzpictures
.tex
tikzpictures
.pdf
如果在此期间任何 tikzpicture 发生了变化,则会再次处理,但仅限于已更新的内容。
可以通过引入库中的命令和选项来更改此默认行为,externalize
其信息可以在“50 外部化库”一节(第 597-610 页)中找到pgfmanual
。
\documentclass[a4paper,10pt]{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\usepackage{lipsum}
\begin{document}%
\lipsum[1]
\begin{tikzpicture}[scale=1, font=\normalsize, every node/.append style={transform shape}]
\node[rectangle, draw, minimum width=1.5em, minimum height=1.5em, line width=0.05em] (n1) at (0,0) {1};
\node[rectangle, draw, minimum width=1.5em, minimum height=1.5em, line width=0.05em] (n2) at (2,0) {2};
\end{tikzpicture}
\lipsum[2]
\end{document}
答案3
作为使用方法的替代方案,\usetikzlibrary{external}
如果文档是稳定的并且您将对 进行少量修改tikzpicture
,最好将其处理为单独的文件并将它们作为图像 (或\input{test-tkz.tex}
) 包含。ltximg
您可以用脚本执行以下操作:
$ ltximg --eps --subenv --imgdir=mypics --prefix=tkz -o test-out test.tex
现在您将拥有一个test-out.tex
将tikzpicture
环境转换为图像的新文档(保留字体的一致性),并且您还将
tikzpicture
在单独的文件中拥有每个环境(以防您需要一些额外的修改)和一个test-all.tex
包含(仅)所有内容的文件tikzpicture
。
首先检查文档,查看输入文件必须满足的选项和条件。