我正在尝试将 latex 公式渲染为 png。我尝试过很多不同的方法:首先我使用 SymPy 预览功能生成 png,但在处理 tikz 图片时出现错误。因此,我转向 ImageMagick 并将 pdflatex 与 ImageMagick 的转换功能结合使用(从 pdf 转换为 png)。但是,我喜欢-T tight
dvipng 选项,因为它可以提供更好的裁剪图像,所以我尝试了它。不幸的是,我发现您不能将 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 图像: