在 Muse 输出的 HTML 文档里面使用 LaTeX 公式

简介

Muse 借鉴了 latex2png.el 的功能,在它的源代码里面可以找到一个 muse-latex2png.el 就是用来实现这个功能的。加载这个文件之后,就可以在 Muse 文档里面使用一个 latex 标签,标签里面可以写 LaTeX 代码,最后会 转换成 png 图片插入到输出的 HTML 文档中。

默认情况下所有图片被放到发布目录里面的 ./latex/latex2png-MuseLatex2Png_242150247.pngtex 子目录下面,文件名是对公 式内容取 sxhash 的绝对值再加上可配置的前缀而得到的,这样的好处就是对于 内容相同的公式不用生成重复的图片。

其实生成图片的功能是调用 LaTeX 系统来完成的,要使用这个功能,必须保证系 统里面正确安装并配置好了 LaTeX 系统,以及 dvipng 程序。

配置好以后可以生成像这样的漂亮公式:

This is inline euqation latex2png equation and there is a big one

latex2png equation

and a even bigger one

latex2png equation

只需要在 Muse 文档里面这样写就行了:

This is inline euqation $E=mc^2$ and there is a big one

<latex>
\[
E = mc^2
\]
</latex>

and a even bigger one

<latex scale="3">
\[
E = mc^2
\]
</latex>

配置

公式的大小

有一个变量 muse-latex2png-scale-factor 可以控制公式默认缩放的大小,但 是通常可能会需要不同大小的公式。特别是嵌入文字的公式应该和文字差不多大, 而单独显示出来的公式一般是比较大才比较漂亮。

所以我自己定义了一个函数来处理 latex 标签,先处理一下属性里面的 scale 属性再传递给 Muse 继续处理。

Inline formula

有时候需要在文本里面嵌入一些小公式,可以用

<latex inline="true" scale="1">$a^2$</latex>

这种方式来书写,但是确实太麻烦了,所以我添加了一个正则匹配,可以直接在 Muse 文档里面使用 $a^2$ 这样的方式来书写公式。

公式的颜色

默认情况下公式是黑色透明背景的,不过有时候如果把输出的 HTML 页面背景设 为深色的话,这样就极不协调了。好在 LaTeX 可以方便地使用颜色,因此我们可 以设定一下 muse-latex2png-template 这个变量的值并在里面指定前景色即可 达到这个目的。

代码

这里是我的配置代码:

修改

公式的大小

前面提到生成的图片的文件名是以公式的内容取 sxhash 而得到的,这样有一个 问题,因为我已经进行扩展,可以定制公式的大小。如果我在不同的地方出现了 相同的一个公式,那么后一次发布的文档会重新生成这个公式的图片,特别是两 个公式大小不一样的话,就会出现问题了。所以,需要修改一下 muse-latex2png.el 里面生成文件名的地方,把公式的大小也作为计算的一个因 素考虑进去就好了。这里是 patch :