使用 ImageMagick 将 .tex 转换为 .png 的最佳方法,包括裁剪和从 PS 到 PNG 的转换错误

使用 ImageMagick 将 .tex 转换为 .png 的最佳方法,包括裁剪和从 PS 到 PNG 的转换错误

我正在尝试将 latex 公式渲染为 png。我尝试过很多不同的方法:首先我使用 SymPy 预览功能生成 png,但在处理 tikz 图片时出现错误。因此,我转向 ImageMagick 并将 pdflatex 与 ImageMagick 的转换功能结合使用(从 pdf 转换为 png)。但是,我喜欢-T tightdvipng 选项,因为它可以提供更好的裁剪图像,所以我尝试了它。不幸的是,我发现您不能将 dvipng 与 tikz 图片一起使用,因为 tikz 在 dvi 文件中嵌入了 PostScript 片段,而 dvipng 无法解释它们,从而出现错误(这就是 SymPy 停止工作的原因......它使用 dvipng)。因此,为了捕获所有这些错误,我找到了 dvips,目前正在将 .tex 转换为 .dvi(使用 latex),再转换为 .ps(使用 dvips),再转换为 .png(使用 ImageMagick)。但是,现在当我尝试将 .ps 转换为 .png 时,ImageMagick 又报错。我使用以下命令:convert -density 1200 file.ps -quality 90 image.png但报错:convert-im6.q16: no images defined 'image.png' @ error/convert.c/ConvertImageCommand/3258.此外,这种转换为如此多不同文件类型的方法非常慢。

首先,我该如何修复上述错误?其次,有没有更好的方法可以用-T tight一个包将 latex 转换为 png,并进行良好的裁剪(类似于使用 dvipng 和 ),同时还允许使用 tikz 图片?

答案1

我建议采用以下工作流程:

  • 使用preview带有公式的 LaTeX 文件选项的包tightpage,将每个文件放入单独的preview环境中。
  • 使用pdflatex(实际上任何编译器都可以);
  • 用于convert将发出的 PDF 转换成一堆 PNG 图像。

以下是示例代码:

\documentclass[11pt]{article}
\usepackage[active,tightpage]{preview}
\usepackage{tikz}

\begin{document}
\begin{preview}
$\displaystyle\int_{-\infty}^{+\infty}e^{-x^2}dx=\sqrt{\pi}$
\end{preview}

\begin{preview}
\begin{tikzpicture}
  \draw (0,0) rectangle (1,1);
  \node (A) at (0.5,0.5) {A};
\end{tikzpicture}
\end{preview}
\end{document}

它输出两页 PDF,页面大小与对象大小相匹配。之后

转换-密度 1200 测试.pdf 测试%d.png

我得到了两个没有任何额外边距的 PNG 图像:

在此处输入图片描述

在此处输入图片描述

相关内容