我需要外化我的 Ti钾Z 图片到.png
文件并将它们包含到我的最终文档中。事实上,我将生成两个文档,一个包含矢量图形,一个包含位图。在网络上搜索自动生成位图的方法时,我发现了这个解决方案,它甚至记录在 PGF/Ti 中钾Z 文档。(第 618 页文档版本 3.0.1a)
此方法的要求是正在运行安装ImageMagick
。
\tikzset{
% Defines a custom style which generates BOTH, .pdf and .png export
% but prefers the .png on inclusion.
%
% This style is not pre-defined, you may need to copy-paste and
% adjust it.
png export/.style={
external/system call/.add=
{}
{; convert -density 300 -transparent white "\image.pdf" "\image.png"},
%
/pgf/images/external info,
/pgf/images/include external/.code={%
\includegraphics
[width=\pgfexternalwidth,height=\pgfexternalheight]
{##1.png}%
},
}
}
要自动激活脚本以将其应用于整个文档,可以添加png export
到\tikzset
命令中。
我确实重新编译了我的文档,在序言中加入了这段代码,然后等了一段时间,然后我就被错误信息淹没了。每个图表都会出现这个错误信息。
[8] (./img/graphs/foobar.tex ====='mode=convert with system call': 调用'xelatex -shell-escape -halt-on-error -interaction=batchmode -jobname "img/build/foobar" "\def\tikzexternalrealjob{main}\input{main}"; convert -density 300 "img/build/foobar.pdf" "img/build/foobar.png"' ======== \openout5 = `main.auxlock'。
runsystem(xelatex -shell-escape -halt-on-error -interaction=batchmode -jobname "img/build/foobar" "\def\tikzexternalrealjob{main}\input{main}"; convert -density 300 "img/build/foobar.pdf" "img/build/foobar.png")...已执行。
\openout5 = `main.auxlock'。
LaTeX 警告:在输入行 66 中未找到文件“.png”。
./img/graphs/foobar.tex:66: 无法加载图片或 PDF 文件“.png”。
<待重读>
}
l.66 \end{tikzpicture}
无法读取所请求的图像,因为它不是可识别的图像格式。
./img/graphs/foobar.tex:66:包图形错误:除以 0。
请注意,和.png
都已.pdf
正确生成,并且位于./img/graphs
目录中。我还检查了.dpth
文件。这些都包括相应图像的宽度和高度。
为什么 LaTeX 会graphics
抱怨找不到.png
图像(如果图像确实存在)?
任何想法都将不胜感激。
麦当劳
\documentclass[11pt]{article}
% %%%%%%%%
% Preamble
% %%%%%%%%
% Drawing Packages
\usepackage{graphicx, tikz, pgfplots}
% pgfplots
\pgfplotsset{compat=1.15}
% TikZ
\usetikzlibrary{external}
\tikzexternalize
\newcommand\usepng{
\tikzset{external/force remake} % otherwise will use external pdf if it exists
\tikzset{
png export/.style = {
% First we call ImageMagick
external/system call/.add = {}{; convert -density 300 "\image.pdf" "\image.png"},
% Now we force the PNG figure to be used instead of the PDF
/pgf/images/external info,
/pgf/images/include external/.code = {%
\includegraphics
[width=\pgfexternalwidth,height=\pgfexternalheight]
{##1.png}%
},
},
% Activate the script
png export,
}
}
% Use bitmap images in this document
\usepng
% %%%%%%%%%%%%%%%%%%
% Begin the document
% %%%%%%%%%%%%%%%%%%
\begin{document}
\tikzsetnextfilename{foobar}
\begin{tikzpicture}[baseline]
\begin{axis}[
xlabel = {x},
ylabel = {y},
]
\addplot+[mark=none] coordinates {
(2,-2.8559703)
(3,-3.5301677)
(4,-4.3050655)
(5,-5.1413136)
(6,-6.0322865)
(7,-6.9675052)
(8,-7.9377747)
};
\end{axis}
\end{tikzpicture}
\end{document}