![如何使用 arara 获取图形文件?](https://linux22.com/image/290332/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20arara%20%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%BD%A2%E6%96%87%E4%BB%B6%EF%BC%9F.png)
在标准 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(并且永远不会有)。