【问题标题】:Why does not overflow="linebreak" not work with MathML?为什么溢出 =“linebreak”不适用于 MathML?
【发布时间】:2014-05-30 23:00:39
【问题描述】:

在以下使用 MathML 的情况下,我无法进行换行。特别是,我希望在 <mtext> 元素内的 <mrow> 元素内的 <mtable> 内工作。

但是,从以下最小(不工作)示例可以看出,它不工作(on JSFiddle):

HTML:

<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

<div id="test">
    <math overflow="linebreak">
        <mtable>
            <mrow><mtext>Lorem ipusm lorem ipsum Lorem ipsum lorem ipsum Lorem ipsum lorem ipsum</mtext></mrow>
        </mtable>
    </math>
</div>

<div id="test">
    Lorem ipusm lorem ipsum Lorem ipsum lorem ipsum Lorem ipsum lorem ipsum
</div>

还有 CSS:

#test{
    border: 2px solid black;
    width: 11em;
    padding: 1em;
}

我怎样才能使换行工作,使第一个 &lt;div&gt; 看起来像第二个 &lt;div&gt;

【问题讨论】:

  • 来自未来的注意事项:cdn.mathjax.org 即将结束生命周期,请查看mathjax.org/cdn-shutting-down 以获取迁移提示(也许为未来的读者更新您的帖子)。

标签: line-breaks mathjax mathml


【解决方案1】:

MathJax 线制动通过 MathJax 配置进行控制(有关详细信息,请参阅documentation)。 MathJax 目前没有为&lt;math&gt; 元素实现overflow 属性(这在待办事项列表中)。

然而,即使打开了换行,MathJax 也只会在元素之间换行,因此不会包装 &lt;mtext&gt; 元素的内容(这也在待办事项列表中)。 MathJax 旨在用于数学排版,而不是文本排版,因此在您的示例中将其用于包装段落超出了其范围。

请注意,您的 MathML 无效,因为 &lt;mrow&gt; 应该是 &lt;mtr&gt; 并且 &lt;mtr&gt; 允许的唯一子元素是 &lt;mtd&gt; 元素。因此,您的 &lt;mtext&gt; 需要包含在 &lt;mtd&gt; 中。

最后,您的 HTML 也是无效的,因为一个 ID 只允许在 HTML 文件中出现一次,因此 id="test" 不应出现在两个单独的 &lt;div&gt; 元素上。对于这种情况,您应该使用类,而不是 ID。

【讨论】:

  • 补充:这是 @Adam 的 jsfiddle 的一个分支,带有一个示例方程和有效的换行 jsfiddle.net/4c4ut/1
猜你喜欢
  • 2015-07-20
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 2019-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-26
相关资源
最近更新 更多