问题描述
我们需要将 LaTeX 文档转换为 PNG 图片(我们需要使用 LaTeX 的 bytefield 包绘制“字节序列图”,以在 Zim 中显示)
该笔记将记录:如何使用 .tex 文件,生成 PNG 图片。
方案一、latex => dvi => png
# 导出图片 latex /path/to/file.tex dvipng file.dvi # 显示图片 display file1.png
关于 graphicx\rotatebox 问题
DVI to PDF Converter - TeX - LaTeX Stack Exchange
Which DVI viewer on linux? - TeX - LaTeX Stack Exchange
该方法无法很好的处理 graphicx\rotatebox 命令,如图 D/B 与 AVL 偏移(本应该旋转 90 度,以垂直显示):
经过测试,应该是 dvipng 命令的问题:
1)进行 latex => dvi 转换,然后使用 xdvi 打开 DVI 文件,将如上图显示
这也引出我们的「方案二、使用 standalone 处理」(我们的需求本就是:只需要生成的图片,而不是整个文档)
方案二、使用 standalone 处理
使用 stadalone 包,可以直接将 LaTeX 文档导出 PNG 图片(在内部,依旧使用 Shell 命令进行转换)。
对于如下代码:
% example.tex \documentclass[convert={density=120,outext=.png}]{standalone} \usepackage{bytefield} \usepackage{graphicx} \begin{document} \begin{bytefield}[bitwidth=1.5em, bitheight=\widthof{~AVL~}, endianness=big]{32} \bitheader{0-24,31} \\ & \bitbox{8}{Base (31-24)} & \bitbox{1}{G} & \bitbox{1}{\rotatebox{90}{D/B}} & \bitbox{1}{L} & \bitbox{1}{\rotatebox{90}{AVL}} & \bitbox{4}{Limit (19-16)} & \bitbox{1}{P} & \bitbox{2}{DPL} & \bitbox{1}{S} & \bitbox{4}{TYPE} & \bitbox{8}{Base (23-16)} \end{bytefield} \end{document}
执行 latex -shell-escape -halt-on-error example.tex 命令,将直接输出 example.png 图片:
下面是更复杂的例子(参考 CTAN: Package standalone 文档),演示如何修改用于转换图片的命令:
\documentclass[ convert={ convertexe={convert}, command=\unexpanded{{ \convertexe \space -density \density \space \infile \space -resize \size \space \outfile}}, density=800,size=800x600,outext=.png }, border={.5 .5 .5 2mm}, ]{standalone} \usepackage{bytefield} \usepackage{graphicx} \begin{document} \begin{bytefield}[bitwidth=1.5em, bitheight=\widthof{~AVL~}, endianness=big]{32} \bitheader{0-24,31} \\ & \bitbox{8}{Base (31-24)} & \bitbox{1}{G} & \bitbox{1}{\rotatebox{90}{D/B}} & \bitbox{1}{L} & \bitbox{1}{\rotatebox{90}{AVL}} & \bitbox{4}{Limit (19-16)} & \bitbox{1}{P} & \bitbox{2}{DPL} & \bitbox{1}{S} & \bitbox{4}{TYPE} & \bitbox{8}{Base (23-16)} \end{bytefield} \end{document}
这将生成更加清晰的图片(依旧模糊,需要更好的控制 convert 命令参数):
参考文献
pdf - Including graphics for both DVI and PNG - TeX - LaTeX Stack Exchange
graphics - Compile a LaTeX document into a PNG image that's as short as possible - TeX - LaTeX Stack Exchange