javascript - 如何像 Stackedit.io 一样获取 MathJax 的 HTML 输出?

标签 javascript html css mathjax

我知道我可以用

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

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

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

请帮我解决这个问题。谢谢。

最佳答案

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

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

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

  • > https://github.com/agrbin/svgtex (及其分支)自动化服务器端 SVG 生成。在获取输出 ( getElementsByTagName("svg") ) 之后,它会执行一些操作 less trivial stuff生成独立的 SVG;如果在客户端进行,则需要同样的方法。

我还想知道是否可以使用彻底的 CSS 重置使 HTML-CSS 输出在页面上变得更加可移植。我还没有读到任何人对此进行调查——尽管我猜想如果它那么容易,MathJax 开发人员早就可以做到了......

HTML-CSS 的另一个破坏因素是字体。如果实在加载不了外部资源,就必须将它们嵌入为base64 data: URLs。完整的字体太重了,所以你会想要动态地对字体进行子集化——可怕的……(使用 SVG 输出嵌入字形要容易得多,正如我在上面链接的 svgtex 在 25 行中完成它并给你一个 SVG 图像.)

关于javascript - 如何像 Stackedit.io 一样获取 MathJax 的 HTML 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22763143/

相关文章:

javascript - 如何在包含 HTML 的变量中绑定(bind) blob?

css - 如何使用 .input-group-addon (Bootstrap3) 控制 .input-group 中输入的大小?

javascript - tmpl 未定义 jquery.slider.js

javascript - react 保持数据同步

jquery - Jekyll Github 页面帖子链接在新页面中打开吗?

javascript - OAuth.io 连接失败

javascript - 在 Javascript 中如何 var myvar = value !=1 工作?

javascript - 单击按钮刷新页面 div

jquery - 当在其上调用 jquery html() 时,内联 block div 向下移动

html - 搜索输入折叠