将 LaTeX 文档编译为尽可能短的 PNG 图像

将 LaTeX 文档编译为尽可能短的 PNG 图像

我需要将我的 LaTeX 文档转换为 PNG。问题是,我还需要生成的图像尽可能短(高度方面)。我尝试过,latex然后是dvipng,但结果总是页面大小。例如,获取.tex包含以下内容的文件:

\documentclass{article}  
\begin{document}  
Hello. This is a test.
\begin{equation}
  L = 2                                                                     
\end{equation}  
\end{document}

如果我使用 编译它latex,然后运行dvipng​​,我会得到一个大小与整页相当的 PNG 文件。我需要的是 PNG 文件的高度刚好足以容纳所有内容。因此图像会在等式之后立即结束。图像仍然需要具有全宽(因为等式编号)。

有办法实现这个吗?

答案1

您可以standalone为此使用该类。它会preview自动加载包以将生成的 PDF 裁剪为内容。这使得使用变得pdfcrop不必要。

只需将article类替换为即可standalone。(它article在内部使用,但可以使用选项指定另一个类class。)请注意,自 v1.0 以来,默认选项已从 更改为previewcrop后者更适合图片等,但不支持换行符。请preview手动选择或使用varwidth选项。

\documentclass[preview]{standalone}
\begin{document}
Hello. This is a test.
\begin{equation}
L = 2
\end{equation}
\end{document}

有一个border类选项用于设置内容周围的边框(默认值为 0.5bp)。此选项接受一个(所有边的边框)、两个(左/右、上/下)或四个值(左、下、右、上)。

要将其转换为 PNG,我建议使用convert命令图像魔法

pdflatex file
convert -density 300 file.pdf -quality 90 file.png

这里的密度是 300 DPI,可以根据您的需要进行调整。质量设置选择压缩级别和其他内容,据我所知 90 是最佳值。

您还可以分别选择 X 和 Y 的 DPI 分辨率并调整生成的图像的大小,例如:

convert -density 600x600 file.pdf -quality 90 -resize 1080x800 file.png

更新2011/12/21:

新版本 1.0standalone现在可以自动调用上述命令行(及其他命令行),例如:

\documentclass[convert={density=300,size=1080x800,outext=.png}]{standalone}

或者简单来说(使用默认设置 300dpi,不调整大小,PNG):

\documentclass[convert]{standalone}

这需要-shell-escape编译器选项来允许在 LaTeX 文档中执行转换程序。

答案2

很容易忽略的一件事是页码。页码限制了最终图像的高度,因此最好将其省略。一种简单的方法是使用empty页面样式。

当我为这个地方制作图像时,我会制作一个类似这样的文档:

\documentclass{article}
\thispagestyle{empty}
\begin{document}
Hello. This is a test.
\begin{equation}
L = 2
\end{equation}
\end{document}

然后运行pdflatex它以获取 PDF;下次运行pdfcrop(附带 TeXLive)使其尽可能小;最后使用 NetPBM 库工具将其转换为 PNG。(这是在 Unix 机器上。)所以我的工作流程是:

pdflatex document.tex
pdfcrop document.pdf
pdftoppm document-crop.pdf|pnmtopng > document.png

瞧:

小 png

答案3

如果您有 dvi 文件file.dvi,则运行dvipng -T tight file.dvi将生成一个 png,其中图像会自动尽可能地裁剪。(您可能还想使用标志设置输出分辨率-D,例如dvipng -T tight -D 150 file.dvi每英寸 150 点。)

正如安德鲁在他的回答中指出的那样,去掉页码是一个好主意。

答案4

如果你使用的是 Linux,你可以尝试pnglatex。这很简单;要生成公式,你可以这样写

$ pnglatex -f "E=mc^2"

如果图像是使用创建的,pnglatex您也可以逆转该过程。

$ pnglatex -r formula.png
E=mc^2

它支持管道。因此,假设formula.tex有一个包含公式的文本文件,您可以使用一行代码生成并打开图像。

cat formula.tex | pnglatex | xargs eog

它有多个选项:

-b <color>       Set the background color
-B <color>       Set the border color
-d <dpi>         Set the output resolution to the specified dpi
-e <environment> Set the environment for the formula (i.e. displaymath or eqnarray)
-f <formula>     The LaTeX formula
-F <color>       Set the foreground color
-h               Print the help message
-H <header>      Input file in header
-l <file>        Log file
-m <margin>      Set the margin
-M               Strip meta information
-o <file>        Specify the output file name
-O               Optimize the image
-p <packages>    A colon separated list of LaTeX package names
-P <padding>     Set the padding
-r <file>        Read an image and print the LaTeX formula
-s <size>        Set the font size
-S               Don't print image file name
-v               Show version

相关内容