![使用 PdfLaTeX 外部化 TikZ 图片](https://linux22.com/image/342862/%E4%BD%BF%E7%94%A8%20PdfLaTeX%20%E5%A4%96%E9%83%A8%E5%8C%96%20TikZ%20%E5%9B%BE%E7%89%87.png)
这是我使用 PdfLaTeX 的 tiki 包进行外部化时遇到的问题。我对 LaTex 并不陌生,尽管如此,我从未使用过外部化来处理图形。我在 Mac(OS X El Capitan)上使用 texstudio。我正在写一个很长的文档,并尝试使用 tikz 包绘制一些实验数据。由于数字量很大,数据包含在外部源中。我尝试在同一张图中绘制多条曲线(散点数据),因为我想比较所有曲线(10 条曲线)。如果我最多绘制 3 条曲线,则没有问题,但是当我使用 3 条以上的曲线进行编译时,由于超出了最大容量,我会收到错误。因此,我通过序言中的字符串使用外部化:
\usepgfplotslibrary[external]
\tikzexternalize[prefix=TikzPictures/]
尽管如此,使用这些字符串进行编译时我收到此错误:
!Package tikz Error: Sorry, the system call 'pdflatex -shell-escape -halt-on-error -interaction=batchmode -jobname "TikzPictures/filename-figure4""\def\tikzexternalrealjob{filename}\input{filename}"' did NOT result in a usable output file 'TikzPictures/filename-figure4' (expected one of .pdf:.jpg:.jpeg:.png:). Please verify that you have enabled system calls. For pdflatex, this is 'pdflatex-shell-escape'
我确实在 PdfLaTeX 的命令行中添加了“-shell-escape”字符串,这里是字符串:/Library/TeX/texbin/pdflatex -synctex=1 -interaction=nonstopmode -shell-escape %.tex
以下是我的部分代码:
\documentclass[11pt,twoside,greek]{report}
...
\usepackage{pgfplots}
\pgfplotsset{/pgf/number format/use comma,compat=newest}
...
\usepgfplotslibrary[external]
\tikzexternalize[prefix=TikzPictures/]
...
\begin{document}
...
\begin{tikzpicture}
\footnotesize
\centering
\begin{axis}[
xlabel = {$x$},
ylabel = {$y$},
grid = major,
legend entries={a,b,c,d,e,f,g,h,i},
]
\addplot[blue] table{data_set/a.txt};
\addplot[red] table{data_set/b.txt};
\addplot[green] table{data_Set/c.txt};
\addplot[yellow] table{data_Set/d.txt};
\addplot[orange] table{data_Set/e.txt};
\addplot[brown] table{data_Set/f.txt};
\addplot[black] table{data_Set/g.txt};
\addplot[ciano] table{data_Set/h.txt};
\addplot[purple] table{data_Set/i.txt}
\end{axis}
\end{tikzpicture}
...
\end{document}
我使用 PdfLaTeX 进行编译。这是日志结果:
! tikz 软件包错误:抱歉,系统调用“pdflatex -shell-escape -halt-on-e rror -interaction=batchmode -jobname "TikzPictures/filename-figure4" "\def\tikz externalrealjob{filename}\input{filename}"”未产生可用的输出文件“TikzPictures/filename-figure4”(预期为 .pdf:.jpg:.jpeg:.png: 之一)。请确认您已启用系统调用。对于 pdflatex,这是“pdflatex -shell-escape”。有时它也被命名为“write 18”或类似名称。或者命令可能只是失败了?错误消息可以在“TikzPicture s/filename-figure4.log”中找到。如果您现在继续,我将尝试排版图片。
更新:这似乎是某些特定 txt 文件的问题。就我而言,当我使用
\addplot[red] table{data_set/N12-C05-1.txt}
\addplot[blue] table{data_set/N12-C05-2.txt}.
在其他情况下,例如
\addplot[red] table{data_set/N12-C02-1.txt}
\addplot[red] table{data_set/N12-C10-2.txt})
我没有错误!因此我尝试更改文件名,但错误仍然存在。我尝试更改文件 N12-C05-1.txt 和 N12-C05-2.txt 中的数据,但错误仍然存在。听起来真的很奇怪!
答案1
我编写了适用于我的情况的解决方案。我强烈建议使用 .csv 文件而不是 .txt 文件。此外,我建议使用指示 cvs 文件中使用的分隔符的字符串。我发布了有效的解决方案:
\usepackage{pgfplots}
\usepgfplotslibrary[external]
\usetikzlibrary{external}
\tikzexternalize[prefix=foldername/]
...
\begin{tikzpicture}
\pgfplotsset{compat=1.14}
\centering
\begin{axis}[...]
\addplot[red] table[col sep=semicolon]{data_set/filename.csv};
\end{axis}
\end{tikzpicture}
希望它能有用!