注意力!

注意力!

我已经使用该软件包为我的论文创建了各种图表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

在这里能找到它:https://github.com/helgehr/pgf2bitmap

相关内容