MathMl

MathML 使用入门

通过 元素在 HTML 中插入公式

MathML 使用与 HTML 相同的语法来表示元素和属性的树形结构。特别地,每个数学公式都由一个 <math> 元素表示,该元素可以放置在 HTML 页面中。在下面的文档中,它位于一个段落文本中:

display 属性

请注意,在前面的示例中,公式与段落文本在一行上。然而,通常情况下,我们会将大的数学公式居中显示在独立的行上,如下所示。为了实现这一点,你需要在 <math> 元素上附加一个 display="block" 属性。
使用 元素进行分组

实际上,<math> 元素可以包含任意数量的子元素,并且将它们在一行内呈现。例如,简单的公式“1 + 2 + 3”在 MathML 中的编码如下:

<math>
  <mn>1</mn>
  <mo>+</mo>
  <mn>2</mn>
  <mo>+</mo> 
  <mn>3</mn>
</math>

<mrow> 元素是一个通用容器,可以执行类似的布局,但可以放置在 MathML 子树的任何位置。它可以将多个元素组合在一起。例如,下面的分数的分子部分(它的第一个子元素)是“一加二”。

<math>
  <mfrac>
    <mrow>
      <mn>1</mn>
      <mo>+</mo>
      <mn>2</mn>
    </mrow>
    <mn>3</mn>
  </mfrac>
</math>

MathML 文本容器

数学符号的 Unicode 字符

数学公式涉及许多特殊字符,例如希腊字母(例如 Δ)、弗拉克图尔字母(例如 𝔄)、双线字母(例如 ℂ)、二元运算符(例如 ≠)、箭头(例如 ⇒)、积分符号(例如 ∮)、求和符号(例如 ∑)、逻辑符号(例如 ∀)以及括号(例如 ⌊)等等。维基百科的文章数学运算符和符号的 Unicode 提供了这些字符的概述。

由于这些字符大多不属于基本拉丁 Unicode 块,因此建议指定你的文档字符编码,并使用适当的 Web 字体。以下是一个使用 UTF-8 编码和 Latin Modern Math (en-US) 字体的基本模板:
一些语义

我们在 MathML 使用入门文章中提到,MathML 公式中的文本被包裹在特定的容器元素中,例如 <mn> 或 <mo>。一般而言,MathML 公式中的所有文字都必须包含在这类容器元素中,这类元素被称为_标记_(token)元素。此外,MathML 提供了多种标记元素,以区分文字内容的不同含义。

  • <mi> 元素表示“标识符”,其可以是符号名称或任意文本。例如:<mi>x</mi>(变量)、<mi>cos</mi>(函数名)和 <mi>π</mi>(符号常量)。
  • <mn> 元素表示“数值文字”或其他应呈现为数值文字的数据。例如:<mn>2</mn>(整数)、<mn>0.123</mn>(小数)或 <mn>0xFFEF</mn>(十六进制值)。
  • <mo> 元素表示运算符或任何应呈现为运算符的内容。例如:<mo>+</mo>(二元运算符)、<mo>≤</mo>(二元关系符),<mo>∑</mo>(求和符号)或 <mo>[</mo>(括号)。
  • <mtext> 元素用于表示任意文本。例如公式中的短词,如 <mtext>if</mtext> 或 <mtext>映射到</mtext>

的自动斜体化

在数学中的一种排版惯例是使用斜体字母表示变量。为了帮助实现这一点,仅具有单个字符的 <mi> 元素会自动呈现为斜体。请比较以下公式中两个 <mi> 元素的渲染效果:

<math>
  <mi>sin</mi>
  <mi>x</mi>
</math>

阻止对 的自动斜体化

要想阻止 <mi> 元素的自动斜体化,可以在该元素上附加 mathvariant="normal" 属性。比较以下公式中大写伽马字母的渲染效果:

<math>
  <mi>Γ</mi>
  <mi mathvariant="normal">Γ</mi>
</math>

的运算符属性

MathML 包含一个运算符字典,其根据 <mo> 元素的内容和其在容器中的位置(前缀、中缀或后缀),定义了默认属性。

MathML 分数和根号

、 和 的子树

在 MathML 使用入门文章中,我们学习了用于描述分数的 <mfrac> 元素。现在让我们看一个基本示例,其中还添加了用于根号(<msqrt> 和 <mroot>)的新元素:

<math>
  <mfrac>
    <mtext>child1</mtext>
    <mtext>child2</mtext>
  </mfrac>
</math>
<br />
<math>
  <msqrt>
    <mtext>child1</mtext>
    <mtext>child2</mtext>
    <mtext>...</mtext>
    <mtext>childN</mtext>
  </msqrt>
</math>
<br />
<math>
  <mroot>
    <mtext>child1</mtext>
    <mtext>child2</mtext>
  </mroot>
</math>

可伸缩的根号符号

正如之前所见,<msqrt> 和 <mroot> 元素上的上横线会水平拉伸以覆盖其内容。但实际上根号符号 √ 也会拉伸以与其内容一样高。

<math display="block">
  <mroot>
    <msqrt>
      <mfrac>
        <mn>1</mn>
        <mn>2</mn>
      </mfrac>
    </msqrt>
    <mn>3</mn>
  </mroot>
</math>

无横线的分数

有些数学概念有时会使用类似分数的表示法,例如二项式系数勒让德符号。对于这种不绘制横线的类似分数的表示法,可以在 <mfrac> 元素上附加 linethickness="0" 属性进行标记:

<math display="block">
  <mrow>
    <mo>(</mo>
    <mfrac linethickness="0">
      <mn>3</mn>
      <mn>2</mn>
    </mfrac>
    <mo>)</mo>
  </mrow>
  <mo>=</mo>
  <mn>3</mn>
  <mo></mo>
  <mfrac>
    <mn>3</mn>
    <mn>2</mn>
  </mfrac>
</math>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值