mathml支持
mathjax中对mathml的支持涉及两个函数:第一个函数查找 <math>
文档中的标记并将其标记为以后由mathjax处理,第二个标记将mathml转换为mathjax使用的内部格式,然后mathjax的一个输出处理器将其显示在网页中。
此外,mathjax的内部格式本质上是mathml(添加了一些内容),实现为javascript对象而不是dom元素。mathjax的各种输入处理器都将其原始格式转换为这种内部mathml格式,其输出处理器接受这种mathml并从中产生正确的输出。因为内部格式是基于mathml的,mathjax提供了转换到mathml符号和从mathml符号转换的能力。
虽然有些浏览器支持呈现mathml,但并非所有浏览器都支持,因此mathjax使在 all 浏览器。即使对于那些支持mathml的人来说,使用mathjax也是很有价值的,因为这将在所有浏览器中产生一致的输出,而mathjax实现了一些本机mathml实现中不可用的特性和功能。
HTML页面中的MathML
对于通过预处理器处理的mathml,不应使用命名的mathml实体,而应使用数字实体,如 √
或者页面本身嵌入的Unicode字符。原因是mathjax运行之前浏览器会替换实体,有些浏览器会报告未知实体的错误。对于不知道mathml的浏览器,这将导致显示mathml实体的错误。虽然这种情况可能不会出现在用于编写页面的浏览器中,但也可能出现在其他浏览器中,因此应尽可能避免使用命名实体。如果必须使用命名实体,则可能需要在 DOCTYPE 手工申报。
当在html文档中使用mathml而不是xhtml文档(mathjax将同时使用两者)时,不应该对没有内容的mathml标记使用“自动关闭”表单,而应该使用单独的打开和关闭标记。也就是说,使用
<mspace width="thinmathspace"></mspace>
而不是 <mspace width="thinmathspace" />
. 这是因为HTML没有自动关闭的标记,如果您尝试使用这些标记,某些浏览器将错误地嵌套标记。例如,使用 <mspace width="1em" />
,因为没有结束标记,其余的数学将成为 <mspace>
标记;但是自从 <mspace>
应该没有内容,其余的数学将不会显示。这是一个应该避免的常见错误。支持HTML5的现代浏览器应该能够处理自动关闭标记,但较旧的浏览器会有问题,因此,如果您希望您的数学对最广泛的受众可见,请不要在HTML文档中使用自动关闭表单。
内容MathML
版本2 content-mathml
扩展在版本3中尚不可用。
实验性mml3延伸
MathML包括许多支持小学数学的标记,例如 <mstack>
和 <mlongdiv>
。MathJax仅通过 mml3 分机。它使用XSLT转换将这些标记转换为MathJax实现的其他表示MathML标记。这对于某些构造来说是合理的,而对于其他构造来说则较差,但是它确实使得在MathJax中处理初等数学成为可能。未来计划提供更好的支持。
要激活文档中的实验特性,只需包括 [mml]/mml3
在 load
属性的数组 loader
配置的部分:
MathJax = {
loader: {load: ['[mml]/mml3']}
};
这将在MathML input JAX上安装一个过滤之前的版本,以便在处理之前执行xslt转换。
语义和注释
一些流行的注释格式,如tex、maple或content mathml,通常通过 semantics
元素。由其他软件(如编辑器或计算工具)生成的mathml尤其如此。
mathjax通过 "Show Math As"
菜单,通过 Annotations
子菜单。见 MathML Annotation Framework 以及 上下文菜单选项 有关详细信息的文档。