LaTeX standalone 环境输出图片格式文件

我们经常会遇到在Markdown中插入数学公式的情况, 一种方法是利用MathJax渲染, 另外一种方法就是插入公式图片. 而怎么让 latex 编译输出图片格式(比如 png)呢?

Prerequisites

Windows

  1. GhostScript 下载网址: https://www.ghostscript.com/download/gsdnld.html
  2. ImageMagick 下载网址: http://www.imagemagick.org/script/download.php#windows
    安装时勾选 Install Legacy utilities(eg. convert) 选项.
  3. 由于ImageMagick中的convert命令与MS中用于磁盘格式转换的convert命令冲突了, 所以我们需要将 ImageMagick 中的convert.exe 重命名为 imgconvert.exe

ImageMagick 可以将pdf的图片转化为各个图片格式, 而它需要调用的底层库是 GhostScript.

Archlinux

1
2
3
sudo pacman -Syu ghostscipt imagemagick
pdflatex name.tex
convert -density 300 name.pdf -quality 90 name.png

If you are facing a problem when pdf cannot convert to png saying

convert: attempt to perform an operation not allowed by the security policy gs' @ error/delegate.c/ExternalDelegateCommand/378. convert: no images definedFig4-2.png’ @ error/convert.c/ConvertImageCommand/3273.

Just comment out all policy fields inside <policymap> in file /etc/ImageMagick-7/policy.xml and it should work then.

Or you can directly use pdflatex -shell-escape name.tex if you put convert options inside documentclass.

使用方法

英文文档 pdflatex

对于英文文档,使用 pdflatex 编译,可以直接转化png图片。
standalone.tex 文件格式举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
\documentclass[
convert={
density=300,
outext=.png
}
]{standalone}
\usepackage{amsmath}
\usepackage{amssymb}

\begin{document}
$
\hat{x}_l(t)=y_l(t)-\displaystyle\sum^{\Delta+K_l-1}_{\tau=\Delta}\hat{G}_l^*(\tau)y_l(t-\tau)\quad\forall t\in\mathcal{T}$
\end{document}

当前文件夹下打开一个 Terminal:

1
pdflatex -shell-escape standalone.tex

结果会产生一个透明的standalone.png文件.

中文文档 xelatex

中文文档使用 xelatex 编译,转化分两步:
第一步,产生pdf文件;
第二步,将pdf转化成 png 或 svg。
standalone.tex 文件示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
\documentclass{standalone}
\usepackage{ctex}
\usepackage[ruled]{algorithm2e}
\begin{document}
\setcounter{algocf}{2}
\begin{algorithm}[H]
\SetAlgoLined
\KwData{一些数据}
\KwResult{how to write algorithm with \LaTeXe}
初始化\;
\While{not at end of this document}{
read current\;
\eIf{understand}{
go to next section\;
current section becomes this one\;
}{
go back to the beginning of current section\;
}
}
\caption{How to write algorithms}
\end{algorithm}
\end{document}

转 svg 命令:

1
dvisvgm -P standalone.pdf

转 png 命令:

1
convert -density 300 standalone.pdf -quality 120 standalone.png

png 文件解码

将文件拖拽到 Chrome 中, 打开开发者工具 > Sources, 点击文件, 全选复制显示的base64编码.
sample

在Markdown中插入方法举例

1
2
3
![title][alt-text]

[alt-text]:data:image/png;base64,粘贴base64编码到这

References

https://tex.stackexchange.com/questions/11866/compile-a-latex-document-into-a-png-image-thats-as-short-as-possible

TeX 拾遗 统计与概率 | 协方差矩阵

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×