Skip to content

Commit

Permalink
Apply suggestions from code review
Browse files Browse the repository at this point in the history
Co-authored-by: A1lo <[email protected]>
  • Loading branch information
hanyujie2002 and yin1999 authored Oct 31, 2023
1 parent d354dff commit 7cf5635
Showing 1 changed file with 24 additions and 22 deletions.
46 changes: 24 additions & 22 deletions files/zh-cn/learn/mathml/first_steps/text_containers/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,10 @@ slug: Learn/MathML/First_steps/Text_containers
href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML"
>HTML 入门</a
>),并对文本样式方面的 CSS 有一定的了解(阅读<a
href="/zh-CN/docs/Learn/CSS/Styling_text/Fundamentals">文本和字体样式基础</a>和<a
href="/zh-CN/docs/Learn/CSS/Styling_text/Web_fonts">网络字体</a>)。
href="/zh-CN/docs/Learn/CSS/Styling_text/Fundamentals"
>文本和字体样式基础</a>和
<a href="/zh-CN/docs/Learn/CSS/Styling_text/Web_fonts"
>Web 字体</a>)。
</td>
</tr>
<tr>
Expand All @@ -39,7 +41,7 @@ slug: Learn/MathML/First_steps/Text_containers

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

由于这些字符大多不属于基本拉丁 Unicode 块,因此建议指定你的[文档字符编码](/zh-CN/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML#指定文档中的字符编码),并使用适当的[网络字体](/zh-CN/docs/Learn/CSS/Styling_text/Web_fonts)。以下是一个使用 UTF-8 编码和 [Latin Modern Math](/zh-CN/docs/Web/MathML/Fonts#带有数学表的字体) 字体的基本模板:
由于这些字符大多不属于基本拉丁 Unicode 块,因此建议指定你的[文档字符编码](/zh-CN/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML#指定文档中的字符编码),并使用适当的 [Web 字体](/zh-CN/docs/Learn/CSS/Styling_text/Web_fonts)。以下是一个使用 UTF-8 编码和 [Latin Modern Math](/zh-CN/docs/Web/MathML/Fonts#带有数学表的字体) 字体的基本模板:

```html
<!doctype html>
Expand All @@ -59,13 +61,13 @@ slug: Learn/MathML/First_steps/Text_containers

{{ EmbedLiveSample('数学 Unicode 字符', 700, 100, "", "") }}

## 一些语义化
## 一些语义

我们在 [MathML 使用入门](/zh-CN/docs/Learn/MathML/First_steps/Getting_started)文章中提到,MathML 公式中的文本被包裹在特定的容器元素中,例如 `<mn>``<mo>`。一般而言,MathML 公式中的所有文字都必须包含在这类容器元素中,这类元素被称为 _token_ 元素。此外,MathML 提供了多种 token 元素,以区分文字内容的不同含义。
我们在 [MathML 使用入门](/zh-CN/docs/Learn/MathML/First_steps/Getting_started)文章中提到,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>`(括号)。
- `<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>`

### 主动学习:识别标记元素
Expand Down Expand Up @@ -100,7 +102,7 @@ slug: Learn/MathML/First_steps/Text_containers
<mn>0</mn>
</mrow>
</math>
<input type="button" id="clearOutput" value="Reset" />
<input type="button" id="clearOutput" value="重置" />
<div id="output"></div>
</body>
</html>
Expand Down Expand Up @@ -141,7 +143,7 @@ document.getElementById("clearOutput").addEventListener("click", () => {
});
```

{{ EmbedLiveSample('Active_learning_recognize_token_elements', 700, 400, "", "") }}
{{ EmbedLiveSample('主动学习:识别标记元素', 700, 400) }}

最后,阅读 MathML 源代码以验证其是否符合你的期望:

Expand All @@ -167,7 +169,7 @@ document.getElementById("clearOutput").addEventListener("click", () => {

> **备注:** 对于给定的文本内容,有时很难确定要使用哪个标记元素。在实践中,选择错误的元素通常不会导致重大问题,因为所有的标记元素在浏览器实现中通常都会以相同的方式呈现(用于视觉显示和辅助技术)。然而,`<mi>``<mo>` 元素具有特殊的区别特征,需要注意。下面的小节将对它们进行解释。
## `<mi>` 的自动斜体化
## \<mi> 的自动斜体化

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

Expand All @@ -184,7 +186,7 @@ document.getElementById("clearOutput").addEventListener("click", () => {
## 阻止对 \<mi> 的自动斜体化

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

```html
<math>
Expand Down Expand Up @@ -238,7 +240,7 @@ MathML 包含一个[运算符字典](https://w3c.github.io/mathml-core/#operator

![具有不同运算符间距的 MathML 公式的屏幕截图](operator-spacing.png)

运算符还有许多其他属性,我们将在后面的内容中详细了解。现在,请记住在运算符字典中使用 `<mo>` 容器来包含字符,并使用 `<mrow>` 元素正确分组子表达式,以利于 MathML 渲染器工作
运算符还有许多其他属性,我们将在后面的内容中详细了解。现在,请记住在运算符字典中使用 `<mo>` 容器来包含字符,并使用 `<mrow>` 元素正确分组子表达式,以利于 MathML 的渲染

### 主动学习:发现不同点

Expand Down Expand Up @@ -284,7 +286,7 @@ MathML 包含一个[运算符字典](https://w3c.github.io/mathml-core/#operator
</mrow>
</math>
</p>
<input id="showSolution" type="button" value="Show solution" />
<input id="showSolution" type="button" value="显示结果" />
<div id="solution"></div>
</body>
</html>
Expand All @@ -304,21 +306,21 @@ document.getElementById("showSolution").addEventListener(
"beforeEnd",
`<ul>
<li><strong>包裹“A”和“n”变量的<code>&lt;mi&gt;</code>元素以斜体渲染</strong>。但是,具有包含多个字符的“𝔰𝔩”或字符为“𝔽”的<code>&lt;mi&gt;</code>元素仍然以直立的方式渲染。</li>
<li><strong>在文本为“∀”“∊”“=”或逗号的<code>&lt;mo&gt;</code>元素周围自动添加间距</strong>。但是,其中一些元素之前没有添加间距,而括号周围也没有间距。</li>
<li><strong>在文本为“∀”“∊”“=”或逗号的<code>&lt;mo&gt;</code>元素周围自动添加间距</strong>。但是,其中一些元素之前没有添加间距,而括号周围也没有间距。</li>
</ul>`,
);
},
{ once: true },
);
```

{{ EmbedLiveSample('active_learning_spot_the_difference', 700, 500, "", "") }}
{{ EmbedLiveSample('主动学习:发现不同点', 700, 500) }}

> **备注:** 一个明显的区别是,使用 MathML 的源代码会变得更加冗长。请记住,本教程是关于学习语言本身,但在实践中,MathML 内容通常不会手动编写。要查看更多信息,请参阅[创作 MathML](/zh-CN/docs/Web/MathML/Authoring) 页面。
> **备注:** 一个明显的区别是,使用 MathML 的源代码会变得更加冗长。请记住,本教程是关于学习语言本身,但在实践中,MathML 内容通常不会手动编写。要查看更多信息,请参阅[编写 MathML](/zh-CN/docs/Web/MathML/Authoring) 页面。
### 主动学习:可伸缩运算符

操作符词典定义了一些操作符的默认*可伸缩*属性以及相应的*伸缩轴*。例如,操作符可以默认垂直伸展,以覆盖其 `<mrow>` 容器中非可伸缩兄弟节点的最大高度。通过稍微调整[之前的练习](#主动学习_识别标记元素),你可以使操作符在垂直方向上伸展。你能找到它们吗?
操作符词典定义了一些操作符的默认*可伸缩*属性以及相应的*伸缩轴*。例如,操作符可以默认垂直伸展,以覆盖其 `<mrow>` 容器中非可伸缩兄弟节点的最大高度。通过稍微调整[之前的练习](#主动学习:识别标记元素),你可以使操作符在垂直方向上伸展。你能找到它们吗?

```html hidden
<!doctype html>
Expand Down Expand Up @@ -363,7 +365,7 @@ document.getElementById("showSolution").addEventListener(
<mn>0</mn>
</mrow>
</math>
<input type="button" id="clearOutput" value="Reset" />
<input type="button" id="clearOutput" value="重置" />
<div id="output"></div>
</body>
</html>
Expand Down Expand Up @@ -414,7 +416,7 @@ document.getElementById("clearOutput").addEventListener("click", () => {
});
```

{{ EmbedLiveSample('Active_learning_stretchy_fences', 700, 400, "", "") }}
{{ EmbedLiveSample('主动学习:可伸缩运算符', 700, 400) }}

一如往常,请你在完成后阅读源码:

Expand Down Expand Up @@ -453,11 +455,11 @@ document.getElementById("clearOutput").addEventListener("click", () => {
</math>
```

> **警告:** 通常需要特殊的[数学字体](/zh-CN/docs/Web/MathML/Fonts)才能实现文本的拉伸效果,前面的示例依赖于[网络字体](/zh-CN/docs/Learn/CSS/Styling_text/Web_fonts)
> **警告:** 通常需要特殊的[数学字体](/zh-CN/docs/Web/MathML/Fonts)才能实现文本的拉伸效果,前面的示例依赖于 [Web 字体](/zh-CN/docs/Learn/CSS/Styling_text/Web_fonts)
## 总结

在本文中,我们学习了一些用作文本容器的 _token_ 元素及其不同的语义,即 `<mi>`(标识符)、`<mn>`(数字)、`<mo>`(运算符)、`<mtext>`(通用文本)。我们介绍了在数学公式中常见的特殊 Unicode 字符,并概述了 `<mi>``<mo>` 元素的一些可观察表现。在下一篇文章中,我们将学习如何借助 _token_ 元素构建更复杂的表达式,例如[分数和根号](/zh-CN/docs/Learn/MathML/First_steps/Fractions_and_roots)
在本文中,我们学习了一些用作文本容器的*标记*元素及其不同的语义,即 `<mi>`(标识符)、`<mn>`(数字)、`<mo>`(运算符)、`<mtext>`(通用文本)。我们介绍了在数学公式中常见的特殊 Unicode 字符,并概述了 `<mi>``<mo>` 元素的一些可观察表现。在下一篇文章中,我们将学习如何借助*标记*元素构建更复杂的表达式,例如[分数和根号](/zh-CN/docs/Learn/MathML/First_steps/Fractions_and_roots)

{{LearnSidebar}}{{PreviousMenuNext("Learn/MathML/First_steps/Getting_started", "Learn/MathML/First_steps/Fractions_and_roots", "Learn/MathML/First_steps")}}

Expand Down

0 comments on commit 7cf5635

Please sign in to comment.