如何像Stackedit.io一样获得MathJax的HTML输出?

时间:2014-03-31 13:41:59

标签: javascript html css mathjax

我知道我可以使用

MathJax.Hub.Queue(["Typeset", MathJax.Hub, "displayArea"]);

来处理。但我不知道如何获取输出HTML(我想在Javascript中将输出保存在变量中)。

此外,我希望这个HTML独立于MathJax的样式表。独立,我的意思是像stackedit.io的HTML输出。 stackedit的输出是自包含的。它不需要任何其他CSS或JS。

请就这个问题给我一些帮助。感谢。

2 个答案:

答案 0 :(得分:3)

Stackedit的输出并不是完全独立的。它says“确保在您的出版物中包含MathJax以正确呈现数学表达式。”

  • 执行“另存为HTML”不会加载MJ并包含特定于浏览器的 mathjax渲染。例如。我用Chrome =>保存了在Chrome中看起来很好,但在FF中很乱:╬У(n)=(nтИТ1)!
  • 执行“使用模板保存”确实会加载MathJax.js并且工作正常(它仍然包含特定于浏览器的渲染,但MJ会找到带有原始数学和重新渲染的<script type="math/tex" ...标记)。

有关便携性的信息,请参阅MathJax Output Formats 不幸的是,没有一种解决方案适用于所有浏览器。我认为最好的选择是SVG输出(IE9+;相对于文本的大小可能会关闭)。

我也想知道使用彻底的CSS重置,HTML-CSS输出是否可以在页面上变得更加便携。我没有读过任何调查它的人 - 虽然我想如果它 很容易,那么MathJax开发者很久以前就已经做过了......

HTML-CSS的另一个交易破坏者是字体。如果您确实无法加载外部资源,则必须将它们嵌入为base64数据:URL。完整的字体太重了,所以你想要动态子集字体 - 可怕...(使用SVG输出嵌入字形更容易,因为我链接上面的svgtex在25行中做它并给你一个单一的SVG图像。)

答案 1 :(得分:0)

答案很简单。只需使用

MathJax.Hub.Queue(["Typeset", MathJax.Hub, "displayArea"]);

然后使用jQuery

var text = $("#displayArea").html();

完成!