MathJax是一个JavaScript库,用于在浏览器中显示交互式的LaTeX、AsciiMath和MathML表达式。Asciidoctor HTML转换器与MathJax集成,以便为https://docs.mathjax.org/en/latest/input/asciimath.html[AsciiMath]和https://docs.mathjax.org/en/latest/input/tex/index.html[TeX和LaTeX]提供STEM内容处理,这些都是在AsciiDoc文档中使用的符号表示。这种集成为转换为HTML时的STEM内容提供了简单的开箱即用支持。
它是如何工作的
如果你使用HTML转换器将文档转换为HTML,并且在你的文档中设置了`stem`文档属性,那么HTML将被配置为自动从CDN加载MathJax到页面中。你无需安装任何东西。具体来说,它加载的MathJax包括对TeX和AsciiMath的支持,如下所示:
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/MathJax.js?config=TeX-MML-AM_HTMLorMML"></script>
网页加载后,MathJax会扫描特殊分隔符内的表达式,并将它们转换为可显示的格式。在这个过程中,你可能会短暂地看到源形式的表达式闪现。
这是一个用AsciiMath写的科学技术工程数学(STEM)表达式,并由MathJax渲染的例子。
如果你在渲染后的表达式上点击右键,你会注意到它是可以交互的。其中一个选项甚至允许你查看原始的AsciiMath输入。
自定义分隔符
HTML转换器在表达式周围放置的定界符,用于告诉MathJax处理哪些内容,并不与MathJax默认寻找的定界符相同。这些自定义定界符被选用是为了避免与AsciiDoc语言中的其他语法冲突。
转换器配置了MathJax以查找它发出的自定义定界符。如果你查看HTML源代码,你会看到定义它们的text/x-mathjax-config区域,以及一些其他设置。
替代方案
MathJax集成目前仅支持HTML输出。在转换到其他后端格式时,需要附加的库。一个好的替代方案是mathematical.html。