1

我需要扩展TeXtoGIF以便能够处理 XeTeX、ConTeXt 和其他更现代的 TeX 实现(重点是它们可以处理多种字体)。不幸的是,XeTeX 特别不支持 DVI 作为其输入的输出格式,我的修改中断了。

请参阅GitHub 上的更改差异。我对代码库的更改如下:

  • 引入一个变量$cmdTeX来保存 TeX 引擎(LaTeX、XeLaTeX 等)
  • 添加选项(或任何以,真的-xetex开头的东西)以指定为引擎xxelatex
  • latex用变量替换硬编码的调用$cmdTeX

我看到解决此问题的两个选项:

  1. 强制 XeLaTeX 生成标准 DVI 输出,而 IIRC 是不可能的。
  2. 找到另一个命令序列(可能是 GS 的不同用法,这就是我包含标签的原因,但就这样吧)直接使用 PDF 输出而不是 DVI

所以,我想问题归结为:
如何在不使用图形软件的情况下将 PDF 转换为 GIF?
恕我直言,这可能不再适合 SO。

4

3 回答 3

2

听起来你所拥有的是一个你想提交给作者的补丁。你联系过他吗?不幸的是,他的软件(似乎)没有包含许可证,因此从法律角度来看可能很难继续进行。大多数时候在开源世界中,如果你遇到一个不响应(或不愿意)的作者,你可以像你已经做过的那样做,fork 和 patch。此时,您可以选择发布新版本,可能使用新名称,并符合作者的许可。

从软件的角度来看,代码相当古老,是为 Perl 4 编写的。因为 Perl 具有出色的向后兼容性,它可能仍然可以工作,但问题是,你真的想要吗?这可能取决于您的用例。原作者正在制作用于网页的 gif。如果这是您正在做的事情,您可能想看看MathJaX,它可以让您直接在浏览器/HTML 中使用 LaTeX。

于 2013-06-23T12:03:20.883 回答
2

事实证明,这不是添加到我的 Q 中,而是对我的整体问题的有效解决方案,因此应该记录下来。

我还应该注意到,TeX.SX 的某个人向我指出了该standalone课程,该课程提供了一个选项convert,使用该选项-shell-escape可以完成我需要的所有操作。因此,

\documentclass[convert={density=6000,
                           size=1920x1600,
                         outext=.png},
                border=1cm]{standalone}

\usepackage{fontspec}
\setmainfont{Zapfino}

\pagestyle{empty}

\begin{document}
it's all text
\end{document}

%%% Local Variables: 
%%% mode: latex
%%% TeX-engine: xetex
%%% TeX-master: t
%%% End: 
于 2013-06-23T13:08:14.890 回答
0

ConTeXt 不是现代的 TeX 实现(例如 LuaTeX)。它是多个引擎的宏包。

由于您想支持特定的引擎(例如 XeTeX)和特定的宏包(例如 ConTeXt),MathJax 不是一个选项。您必须运行 TeX 引擎,创建 PDF 并对该 PDF 进行后期处理。我不知道你为什么选择 GIF 作为格式,矢量格式 SVG 会产生更漂亮的结果,PNG 将是我的第二选择。

由于您对输入不是很具体,我假设您处理多页输入文件。您可以使用 ghostscript 将 PDF 转换为一系列图像。

正如你所说,你需要 GIF。根据gs -hghostscript不支持GIF输出,所以我们先转换成PNG:

gs                  \
  -sDEVICE=png256   \
  -dNOPAUSE         \
  -dBATCH           \
  -dSAFER           \
  -dTextAlphaBits=4 \
  -q                \
  -r300x300         \
  -sOutputFile=output-%02d.png input.pdf

然后使用 graphicsmagick 或 imagemagick 将 PNG 转换为 GIF:

mogrify --format gif -- output-*.png
于 2013-07-17T11:54:18.290 回答