我已经使用该软件包为我的论文创建了各种图表pgfplots
。现在我想以 jpg 或 png 格式导出它们。有没有办法实现这个目的?
答案1
首先,确保你已经安装图像魔术师因为下面的代码使用了 ImageMagick 的convert
命令。
一旦有了 PDF 输出,您需要使用名为 的以下批处理文件将其转换为 PNG pdf2png.bat
。将批处理路径注册到系统变量会很方便。
rem pdf2png.bat
echo off
rem %1 PDF filename without extension
rem %2 density
rem %3 alpha, choose one of {on,off,remove}
del "%~1-*.png"
convert -compose copy -bordercolor red -border 3x3 -density %2 -alpha %3 "%~1.pdf" "%~1-%%02d.png"
笔记:
%1
是第一个强制参数,指定要转换的 PDF 的文件名(不带扩展名)。%2
是指定密度的第二个强制参数。密度越高,PNG 尺寸越大。%3
是第三个强制参数,指定是否保留透明度。on
如果要保留透明度,请使用,否则请选择remove
。我不使用,off
因为它会产生糟糕的输出。- 我添加了一个附加功能,使输出将被红色矩形包围。如果您不喜欢此功能,请
-compose copy -bordercolor red -border 3x3
从上面的代码中删除。
锻炼
这只是一个例子。您获得 PDF 的场景可能与我的不同。我的场景如下:使用 编译以下输入文件以latex->dvips->ps2pdf
获得 PDF 输出。
% myfilename.tex
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl}
\addtopsstyle{gridstyle}{gridlabels=0}
\begin{document}
\begin{pspicture}[showgrid](4,3)
\pstGeonode[
PointName=none,
PointSymbol={x,none,x},
dotscale=2]
(0,0){A}
(1,3){B}
(4,1){C}
\psline(A)(B)(C)
\end{pspicture}
\end{document}
您可以从您选择的编辑器调用批处理,但在这里我从 DOS 提示符调用批处理:
输出为:
红色矩形是 产生的边框-compose copy -bordercolor red -border 3x3
。
注意力!
对于 Windows 用户,convert
单独使用 不再有效。相反,必须在其前面加上magick
和 以及一个空格,因为convert
在 Windows 中具有特殊含义。
答案2
您可以通过修改外部化命令来自动化该过程,如下所示https://tex.stackexchange.com/a/22161或者https://tex.stackexchange.com/a/40795
以下是我个人会使用的方法:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[mode=list and make]
\tikzset{
png export/.style={
% First we call ImageMagick; change settings to requirements
external/system call/.add={}{; magick convert -density 300 -transparent white "\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}
},
}
}
\begin{document}
{
% Here we specify the figure will be converted and inserted as PNG
\tikzset{png export}
\begin{tikzpicture}
\draw (0,0) circle (1) ;
\end{tikzpicture}
}
% This figure will be inserted as PDF
\begin{tikzpicture}
\draw (0,0) circle (1) ;
\end{tikzpicture}
\end{document}
因为它允许我仅转换我想要转换的数字。如果您需要对所有数字进行转换,请参阅第一个链接。
答案3
如果你使用 Texmaker,它会在文档预览窗口中提供一个选项,右击至“将页面转换为 png 图像”。
据我所知,TeXstudio 没有此选项。您仍然可以使用 ImageMagick 的 PDF 到 PNG 转换(或任何其他图像编辑器,如 GIMP):
convert figure.pdf figure.png
示例代码:
\documentclass[preview]{standalone}
\usepackage{tkz-graph}
\begin{document}
\centering
\begin{tikzpicture}
\Vertex[x=-2,y=0]{1}
\Vertex[x=1,y=2]{2}
\Vertex[x=1,y=-2]{3}
\Edge(1)(2)
\end{tikzpicture}
\end{document}
答案4
我写了一个小脚本,将 pgf 图转换为位图。希望它对你们中的一些人也有用。该脚本创建一个临时 latex 文件,将其编译为 pdf,然后使用命令将其转换为位图convert
。