我有默认情况下包含dvipng方程式的emacs org生成的HTML。没关系,我想为那些禁用JS的人提供一个好的后备。生成的图片和生成的<img>
标记在其alt
属性中具有完整的LaTeX源。我还调整了代码以将特定类应用于所有这些图像,因此它在JS端变得更简单,这不是我的强项。
MathJax文档列出了几种不同的配置以及自己定制配置的方法;我没有看到选择器功能或任何应用Mathjax以满足我的需要。我知道我可以编写自己的DOM-munging JS然后调用Mathjax但是Mathjax肯定会自己弯曲到这种功能吗?
这是生成的HTML中的一个示例。
<img class="dvipng" src="upload/blog_ff4e604.png"
alt="$\frac{1}{2\pi{}i}\int_C\frac{f'(z)}{f(z)}{\rm d}z = N_0(f)$">
答案 0 :(得分:2)
MathJax不直接包含此内容,但您可以执行以下操作:
<script type="text/x-mathjax-config">
MathJax.Extension.myImg2jax = {
version: "1.0",
PreProcess: function (element) {
var images = element.getElementsByTagName("img");
for (var i = images.length - 1; i >= 0; i--) {
var img = images[i];
if (img.className === "dvipng") {
var script = document.createElement("script"); script.type = "math/tex";
var match = img.alt.match(/^(\$\$?)(.*)\1/);
if (match[1] === "$$") {script.type += ";mode=display"}
MathJax.HTML.setScript(script,match[2]);
img.parentNode.replaceChild(script,img);
}
}
}
};
MathJax.Hub.Register.PreProcessor(["PreProcess",MathJax.Extension.myImg2jax]);
</script>
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>
定义了一个新的预处理器,用于查找图像并从ALT标记中提取数学。这假定您使用$...$
进行内联数学运算,使用$$...$$
进行显示数学运算。
此代码在将图像转换为MathJax <script>
标记时删除了该图像。可以将图像移动到预览范围,直到MathJax处理TeX代码。这有点复杂,但可以用更多的工作来完成。我会把它留给感兴趣的读者。 : - )