如何使用 arara 获取图形文件?

如何使用 arara 获取图形文件?

在标准 TeX Live 发行版中Ghostscript据我所知是存在的;它是隐藏的,但它就在那里。

编辑:是的,它位于

\Texlive\2013\tlpkg\tlgs 

我的问题是:

我如何使用arara,以激活内部的Ghostscript 可以获取图形文件作为输出吗?例如mydocument.png (除了mydocument.pdf)。

请注意,我并不是问如何将 PDF 转换为 PNG(我们知道有数千种可能性),我感兴趣的只是使用内部 TeX Live 工具(这意味着无需额外的软件)并让它arara完成这项工作。

答案1

无需使用standalone,您可以创建特定arara规则。

灵感来自规则animate由 cmhughes 提供,我创建了一条convertgs.yaml规则并输入...\MiKTeX 2.9\scripts\arara\rules(路径根据您使用的操作系统和 TeX 发行版而有所不同,我有 MiKTeX):

请注意,我使用了mgs因为mgs.exe它是 MikTeX 2.9 安装附带的 Ghostscript 可执行文件,我发现它这里,也许你必须用你的可执行文件名称来改变它。

此外,我只在 Windows 10 上测试了此规则,即使我认为这也适用于其他操作系统。

!config
# Convert .pdf to any format file allowed by Ghostscript (the default is png)
# author: CarLaTeX
# last edited by: CarLaTeX, November 16th 2016
# requires arara 3.0+
#
# Sample usage: 
# - these both create a .png file:
# % arara: convertgs
# % arara: convertgs: {format: png}
#
# - this creates a .ps file:
# % arara: convertgs: {device: ps2write, format: ps}
#
# This rule is really just a shortcut for commands like the following:
#
#  mgs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m -r300 -sOutputFile=myfile.png myfile.pdf
#
# which will output myfile.png
#
# Attention: 1. I have used `mgs` because `mgs.exe` is then Ghostscript executable which came with the MikTeX 2.9
#                installation, maybe you have to change it with your executable name.
#            2. I have tested this rule only with Windows 10.
#
identifier: convertgs
name: convertgs
commands: 
- <arara> @{ isWindows( "cmd /c mgs", "mgs" ) } -dSAFER -dBATCH -dNOPAUSE -sDEVICE=@{device} -r@{density} -sOutputFile="@{ getBasename(file) }.@{format}" "@{ getBasename(file) }.pdf"
arguments:
- identifier: device
  flag: <arara> @{parameters.device}
  default: png16m
- identifier: density
  flag: <arara> @{parameters.density}
  default: 600
- identifier: format
  flag: <arara> @{parameters.format}
  default: png

(也请考虑到我不是专家,也许可以做得更好)。

当然,你必须一次性完成这个操作,然后只需输入:

% arara: pdflatex               (or any other command you are using to compile)
% arara: ...                    (possible other commands)
% arara: convertgs

在文档的开头并用 进行编译arara

例如,如果你有这个myfile.tex

% arara: pdflatex
% arara: convertgs
\documentclass{article}
\begin{document}
    Quack!
\end{document}

然后你跑arara myfile.tex,你会得到 amyfile.pdf和 a myfile.png

convert有关使用ImageMagick 命令的类似解决方案,请参阅我的这个答案

答案2

这是一个获取您需要的简单方法standalone

% arara: pdflatex: { shell: yes }
\documentclass[
  convert,
  outext=.png,
  tikz,
]{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\filldraw [red] (0,0) circle [radius=2pt]
(1,1) circle [radius=2pt] (2,1) circle [radius=2pt] (2,0) circle [radius=2pt];
  \draw (0,0) .. controls (1,1) and (2,1) .. (2,0);
\end{tikzpicture}
\end{document}

这将使用convert并且需要 ImageMagick,它可以轻松安装。ghostscript可以使用 进行转换,但您需要调整参数。使用默认参数,使用 的转换效果convert很好,使用ghostscript(通过 获得的convert=ghostscript)的转换效果相当差。

转换ghostscript是通过

% arara: pdflatex: { shell: yes }
\documentclass[
  convert=ghostscript,
  tikz,
]{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\filldraw [red] (0,0) circle [radius=2pt]
(1,1) circle [radius=2pt] (2,1) circle [radius=2pt] (2,0) circle [radius=2pt];
  \draw (0,0) .. controls (1,1) and (2,1) .. (2,0);
\end{tikzpicture}
\end{document}

检查.log我看到的文件

runsystem(gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m -r300 -sOutputFile=gsconv-%d.png gsconv.pdf)...executed.

这表明ghostscript被调用了。您可能需要对内部参数进行一些调整,特别是帮助standalone找到 ghostscript 可执行文件。我无法更精确,因为我没有 Windows(并且永远不会有)。

相关内容