腹水支持

mathjax中对ascimath的支持涉及两个函数:第一个函数在您的web页面中查找数学(由诸如 `... )并将数学标记为稍后由mathjax处理,第二个是将ascimath符号转换为mathjax的内部格式,然后mathjax的一个输出处理器将其显示在网页中。在mathjax版本2中,它们被分成不同的组件( ``asciimath2jax` 预处理器和ascimath输入jax),但在版本3中, asciimath2jax 函数已折叠到ascimath输入jax中。

ascimath输入jax实际上包含 ASCIIMathML.js itself (see the AsciiMath home page 有关详细信息)。这意味着mathjax的ascimath处理结果应该与使用实际的 ASCIIMathML.js 包(至少就它生成的mathml而言)。感谢david lippman编写了ascimath预处理器和input jax的初始版本,并感谢ascimath社区正在进行的改进。

asciimath输入jax只处理原始的asciimathml表示法(来自asciimathml v1.4.7),而不处理asciimathml版本2.0中添加的扩展latexmathml表示法,尽管asciimath输入jax确实公开了定义asciimath处理的符号的表,因此它将是pos可以将它们扩展为包含其他符号。一般来说,最好使用mathjax的 TeX input jax 处理 Latex 标记。

可以将ascimath配置为查找要用于数学分隔符的任何标记。见 AsciiMath configuration options 有关如何自定义asciimath输入jax的操作的详细信息。

加载asciimath组件

ascimath输入jax尚未完全移植到版本3。相反,ascimath组件使用版本2 ascimath input jax和一些修补到版本3框架中的旧版本2代码。这比纯版本3的解决方案效率低,而且要大一些,而且会使配置过程复杂化。Asciimath的完整版本3端口计划在将来发布。

因为ascimath还没有完全移植到版本3,所以没有一个组合的组件包含它。因此,为了使用ascimath表示法,您需要配置mathjax,通过添加 input/asciimathload 数组中 loader mathjax配置的块。例如,

<script>
MathJax = {
  loader: {load: ['input/asciimath', 'output/chtml', 'ui/menu']},
};
</script>
<script type="text/javascript" id="MathJax-script" async
  src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/startup.js">
</script>

将加载ascimath输入jax、commonhtml输出jax和上下文菜单组件。

ascimath分隔符

默认情况下,ascimath处理器定义back tick (` )作为asciimath格式的数学分隔符。它确实 not 定义 $...$ 作为数学分隔符。这是因为美元符号经常出现在非数学环境中,这可能会导致一些文本意外地被视为数学。例如,使用单美元分隔符“……第一个的成本是2.50美元,每增加一个成本是2.00美元……”这将导致“第一个成本是2.50美元,而“由于介于美元符号之间,因此被视为数学”。因此,如果要将单个美元用于ascimath表示法,则必须在配置中显式启用它:

window.MathJax = {
  loader: {
    load: ['input/asciimath']
  },
  asciimath: {
    delimiters: [['$','$'], ['`','`']]
  }
});

注意,美元符号经常用作tex格式的数学分隔符,并且不能同时启用美元符号分隔符。最好留下美元符号作为特克斯符号。

Ascimath输入处理器选项 页,以获取可以为Asciimath输入处理器指定的其他配置参数。

html文档中的ascimath

ascimath语法在官方 AsciiMath homepage .

请记住,您的数学是HTML文档的一部分,因此您需要知道HTML在其标记中使用的特殊字符。数学分隔符中不能有HTML标记(除了 <br><wbr> ,和html注释)作为ascimath格式的数学不包括html标记。另外,由于数学最初是以文本形式在页面中给出的,所以您需要注意,您的数学在浏览器中看起来不像html标记,浏览器在mathjax看到页面之前解析页面。特别是,这意味着你必须小心那些小于或大于符号的东西 (<> )和与号 (& ,对web浏览器有特殊意义。例如,

... when `x<y` we have ...

会引起问题,因为浏览器会认为 <y 是名为 y (即使在html中没有这样的标记)。当这种情况发生时,浏览器会认为标记会一直延续到下一个 > 在文档中(通常是html文件中下一个实际标记的末尾),您可能会注意到缺少文档文本的一部分。在上面的示例中,将不会显示“<y”和“we have…`”,因为浏览器认为它是从 ``<y . 这是一个可以用来发现这个问题的指示;这是一个常见的错误,应该避免。

通常,只要在这些符号周围加上空格就足够了,这样浏览器就可以避开它们了,所以

... when `x < y` we have ...

应该有用。或者,可以使用html实体 &lt;&gt;&amp; 对这些字符进行编码,以便浏览器不会解释它们,但mathjax会解释它们。例如。,

... when `x &lt; y` we have ...

请记住,浏览器在mathjax之前解释文本。