MathML 脚本元素
我们继续回顾基本的数学符号,并重点关注使用脚本构建 MathML 元素。
下标和上标
与我们在 上一篇文章 中看到的类似,<msub>
、<msup>
和 <msubsup>
具有特殊的结构,期望恰好有两个元素(对于 <msub>
、<msup>
)或三个元素(对于 <msubsup>
)。
<p>
msub:
<math>
<msub>
<mtext>child1</mtext>
<mtext>child2</mtext>
</msub>
</math>
</p>
<p>
msup:
<math>
<msup>
<mtext>child1</mtext>
<mtext>child2</mtext>
</msup>
</math>
</p>
<p>
msubsup:
<math>
<msubsup>
<mtext>child1</mtext>
<mtext>child2</mtext>
<mtext>child3</mtext>
</msubsup>
</math>
</p>
以下是上述示例在浏览器中的渲染效果。
您应该注意到
<msub>
元素的第二个子元素作为其第一个子元素的下标附加。<msup>
元素的第二个子元素作为其第一个子元素的上标附加。<msubsup>
元素的第二个和第三个子元素分别作为其第一个子元素的下标和上标附加。- 脚本内的文本会缩小。
下划线和上划线
<munder>
、<mover>
和 <munderover>
元素非常相似,只是它们用于附加下划线和上划线。为了避免赘述,我们将让您自己通过以下练习来弄清楚它们的定义。
主动学习:识别下/上划线脚本
在以下示例中,尝试猜测神秘元素(用问号表示)的名称,然后单击按钮以显示解决方案。
主动学习:识别脚本元素
以下 MathML 公式包含更复杂的表达式,嵌套了分数、根和脚本。尝试猜测使用脚本元素 <msub>
、<msup>
、<msubsup>
、<munder>
、<mover>
、<munderover>
布局的元素。每次单击此类元素时,它都会突出显示并显示确认消息。最后,阅读 MathML 源代码以验证它是否符合您的预期。
更多运算符属性
我们之前已经看到了一些 <mo>
元素的属性,即垂直方向上的拉伸和间距。现在脚本元素可用,我们可以扩展该列表。我们将通过调整我们的 前面的示例 来做到这一点。
水平方向上的拉伸
让我们首先执行替换和:
现在我们意识到,底部括号“⎵”和向右箭头“→”会水平拉伸以覆盖替换值的宽度。回想一下,某些垂直运算符可以拉伸以覆盖 <mrow>
内非拉伸同级元素的高度。类似地,某些水平运算符可以拉伸以覆盖 <munder>
、<mover>
或 <munderover>
元素中非拉伸同级元素的宽度。
注意:拉伸可以发生在 <munder>
、<mover>
或 <munderover>
元素的任何子元素上,而不仅仅是下划线或上划线。
大型运算符和极限
到目前为止,我们的示例实际上已使用 display="block"
属性进行渲染。让我们看看同一个示例,在没有该属性的情况下进行渲染。
正如预期的那样,公式不再居中,渲染被修改以最小化高度。专注于求和符号,可以注意到 sigma 绘制得更小,并且 <munderover>
元素的脚本现在被附加为下标和上标!这是由于“∑”运算符的两个属性。
- largeop:如果
<math>
标签具有display="block"
属性,则运算符将使用更大的字形绘制。 - movablelimits:如果
<math>
标签不具有display="block"
属性,则附加到运算符的下划线和上划线将分别渲染为下标和上标。
注意:largeop 属性实际上与脚本无关,即使具有此属性的运算符通常是脚本化的。movablelimits 属性也适用于 <munder>
和 <mover>
元素。
总结
在本文中,我们完成了对基本布局的回顾,介绍了 <msub>
、<msup>
、<msubsup>
、<munder>
、<mover>
、<munderover>
元素用于下标、上标、下划线和上划线。使用这些元素,我们能够简要介绍 <mo>
元素的新属性。在下一篇文章中,我们将继续关注 表格布局。