From 78fb509d0d9e3d4b8cf72fd54bed1f09b9481b0e Mon Sep 17 00:00:00 2001 From: hanyujie2002 <84226578+hanyujie2002@users.noreply.github.com> Date: Sun, 5 Nov 2023 20:41:30 +0800 Subject: [PATCH] zh-cn: init the translation of mathml fraction root --- .../first_steps/fractions_and_roots/index.md | 299 ++++++++++++++++++ 1 file changed, 299 insertions(+) create mode 100644 files/zh-cn/learn/mathml/first_steps/fractions_and_roots/index.md diff --git a/files/zh-cn/learn/mathml/first_steps/fractions_and_roots/index.md b/files/zh-cn/learn/mathml/first_steps/fractions_and_roots/index.md new file mode 100644 index 00000000000000..c6b2c61c9b0431 --- /dev/null +++ b/files/zh-cn/learn/mathml/first_steps/fractions_and_roots/index.md @@ -0,0 +1,299 @@ +--- +title: MathML 分数和根号 +slug: Learn/MathML/First_steps/Fractions_and_roots +--- + +{{LearnSidebar}}{{PreviousMenuNext("Learn/MathML/First_steps/Text_containers", "Learn/MathML/First_steps/Scripts", "Learn/MathML/First_steps")}} + +本文在前文对文本容器介绍的基础上,介绍了如何通过嵌套分数和根号构建更复杂的 MathML 表达式。 + + + + + + + + + + + + +
前提: + 基本的计算机操作能力,已安装基本软件,基本的文件操作知识,以及 HTML 基础知识(学习过 HTML 简介。) +
目标: + 熟悉用于编写分数和平方根的 MathML 元素。 +
+ +## \、\ 和 \ 的子树 + +在 [MathML 使用入门](/zh-CN/docs/Learn/MathML/First_steps/Getting_started)文章中,我们学习了用于描述分数的 `` 元素。现在让我们看一个基本示例,其中还添加了用于根号(`` 和 ``)的新元素: + +```html + + + child1 + child2 + + +
+ + + child1 + child2 + ... + childN + + +
+ + + child1 + child2 + + +``` + +下面是浏览器渲染的屏幕截图: + +![mfrac、msqrt 和 mroot 的屏幕截图](mfrac-msqrt-mroot.png) + +- 我们知道 `` 元素被渲染为一个分数:第一个子元素(分子)被绘制于第二个子元素(分母)的上方,并由一条水平线分隔。 +- `` 被渲染为一个平方根:其子元素呈现为一个 [``](/zh-CN/docs/Learn/MathML/First_steps/Getting_started#使用_mrow_元素进行分组),前缀为根号√,并完全被一条横线覆盖。 +- 最后,`` 元素被渲染为一个 n 次方根:第一个元素被根号符号覆盖,而第二个元素被用作根的次数,并作为前缀上标呈现。 + +### 主动练习:内嵌不同元素 + +这是一个简单的练习,旨在验证你是否理解了 MathML 子树与其可视化呈现之间的关系。该文档包含一个 MathML 公式,你需要标记所有与该 MathML 公式中的子树相对应的子树。完成后,你可以查看 MathML 公式的源代码,以验证它是否符合你的预期。 + +```html hidden + + + + + 带数学字符的页面 + + + +

+ + + + 2 + + + 4 + 3 + + + + + + 5 + + 6 + 7 + + + + + + 8 + + 9 + +

+ +
    +
  1. + + 一个将 mroot 作为第一个子元素,将 msqrt 作为第二个子元素的 mfrac。 +
  2. +
  3. + + 一个将 mn 作为第一个子元素,将 mfrac 作为第二个子元素的 mroot。 +
  4. +
  5. + + 一个包含 mfrac 元素的 msqrt。 +
  6. +
  7. + + 一个具有一个 mn 子元素的 msqrt。 +
  8. +
  9. + + 一个将 mfrac 作为第一个子元素,将 mn 作为第二个子元素的 mroot。 +
  10. +
  11. + + 一个具有以下子元素列表的 msqrt:mn,mo,mn。 +
  12. +
  13. + + 一个将 msqrt 作为第一个子元素,将 mroot 作为第二个子元素的 mfrac。 +
  14. +
  15. + + 一个具有以下子元素列表的 mfrac:msqrt,mn,msqrt。 +
  16. +
  17. + + 一个具有一个 mn 子元素的 mroot。 +
  18. +
  19. + + 一个具有两个 mn 子元素的 mfrac。 +
  20. +
  21. + + 一个具有五个 mn 子元素的 msqrt。 +
  22. +
  23. + + 一个具有两个 mn 子元素的 mroot。 +
  24. +
+

+ +

+

+ +

+ +``` + +```css hidden +math { + font-family: + Latin Modern Math, + STIX Two Math; + font-size: 200%; +} +math .highlight { + background: pink; +} +math [id] .highlight { + background: lightblue; +} +p { + padding: 0.5em; +} +``` + +```js hidden +const options = document.getElementById("options"); +const comment = document.getElementById("comment"); +const checkboxes = Array.from(options.getElementsByTagName("input")); +const status = document.getElementById("status"); +function verifyOption(checkbox) { + let mathml = checkbox.dataset.highlight; + if (mathml) { + mathml = document.getElementById(mathml); + } + if (checkbox.checked) { + comment.textContent = checkbox.dataset.comment; + if (mathml) { + mathml.classList.add("highlight"); + } else { + checkbox.checked = false; + } + } else { + comment.textContent = ""; + if (mathml) { + mathml.classList.remove("highlight"); + } + } + const finished = checkboxes.every( + (checkbox) => !!checkbox.checked === !!checkbox.dataset.highlight, + ); + status.textContent = finished ? "恭喜,你选中了所有正确选项!" : ""; +} +checkboxes.forEach((checkbox) => { + checkbox.addEventListener("change", () => { + verifyOption(checkbox); + }); +}); +``` + +{{ EmbedLiveSample('主动练习:内嵌不同元素', 700, 600, "", "") }} + +## 可伸缩的根号符号 + +正如之前所见,`` 和 `` 元素上的上横线会水平拉伸以覆盖其内容。但实际上根号符号 √ 也会拉伸以与其内容一样高。 + +```html hidden + +``` + +```html + + + + + 1 + 2 + + + 3 + + +``` + +{{ EmbedLiveSample('可伸缩的根号符号', 700, 200, "", "") }} + +> **警告:** 通常需要特殊的[数学字体](/zh-CN/docs/Web/MathML/Fonts)才能实现该拉伸效果,上面的示例依赖于[网络字体](/zh-CN/docs/Learn/CSS/Styling_text/Web_fonts)。 + +## 无横线的分数 + +有些数学概念有时会使用类似分数的表示法,例如[二项式系数](https://zh.wikipedia.org/wiki/组合)或[勒让德符号](https://zh.wikipedia.org/wiki/勒让德符号)。对于这种不绘制横线的类似分数的表示法,可以在 `` 元素上附加 `linethickness="0"` 属性进行标记: + +```html hidden + +``` + +```html + + + ( + + 3 + 2 + + ) + + = + 3 + + + 3 + 2 + + +``` + +{{ EmbedLiveSample('无横线分式', 700, 200, "", "") }} + +> **备注:** 虽然 `linethickness` 属性可以用于指定任意的线条粗细,但最好保持默认值,该值是根据数学字体中指定的参数计算得出的。 + +## 总结 + +在本文中,我们学习了如何使用 ``、`` 和 `` 元素来构建分数和根式。我们注意到了这些元素的一些特殊功能,即分数和根号符号。我们还学习了如何使用 `linethickness` 属性绘制无横线的分数。在下一篇文章中,我们将继续介绍基本的数学符号,并学习[上下标记](/zh-CN/docs/Learn/MathML/First_steps/Scripts)的使用。 + +{{LearnSidebar}}{{PreviousMenuNext("Learn/MathML/First_steps/Text_containers", "Learn/MathML/First_steps/Scripts", "Learn/MathML/First_steps")}} + +## 参见 + +- [`` 元素](/zh-CN/docs/Web/MathML/Element/mfrac) +- [`` 元素](/zh-CN/docs/Web/MathML/Element/msqrt) +- [`` 元素](/zh-CN/docs/Web/MathML/Element/mroot)