如果方程式不适合宽度,如何换行?

时间:2012-04-07 13:37:54

标签: css mathml

我有一个MathML脚本,它显示了一个等式及其用法,我想要的最大宽度为600 PX。

<span style="color: red;max-width: 600px;">
    <math>
    <mn>2</mn>
    <mfenced>
    <mrow><mi>l</mi><mi>b</mi><mo>+</mo><mi>b</mi><mi>h</mi><mo>+</mo><mi>h</mi><mi>l</mi></mrow>
    </mfenced>
    <mo>=</mo>
    <mn>2</mn><mo mathvariant="sans-serif">x</mo><mfenced>
    <mrow><mn>26</mn><mtext>cm</mtext><mo mathvariant="sans-serif">x</mo><mn>32</mn><mtext>cm</mtext><mo>+</mo><mn>28</mn><mtext>cm</mtext><mo mathvariant="sans-serif">x</mo><mn>58</mn><mtext>cm</mtext><mo>+</mo><mn>69</mn><mtext>cm</mtext><mo mathvariant="sans-serif">x</mo><mn>98</mn><mtext>cm</mtext></mrow>
    </mfenced>
    </math>
</span>
如果它不适合600PX,我不想从'='符号将该行划分为新行。 并且还需要右侧的碎片 感谢名单

2 个答案:

答案 0 :(得分:1)

您可以使用

<mo linebreak="goodbreak" indentalign="right">=</mo>

使等号成为首选断点,第二行右对齐。但这是否有效将取决于您正在使用的MathML渲染器的功能(并非所有渲染器都实现MathML3的断行功能)。它应该与MathJax一起使用,但不能在Firefox的原生MathML渲染中使用。

但请注意,公式缩进仅适用于块级数学;即,您需要使用<math display="block">才能进行右对齐。

另请注意,max-width仅适用于块级元素,因此它对<span>无效。您需要使用类似<div>的内容。

您还应该使用“时间”而不是“x”的正确符号。如,

<mo>&#xD7;</mo>

应该这样做。这将获得正确的间距,并为乘法提供适当的语义。

答案 1 :(得分:0)

内联元素将忽略max-width属性。您需要在display: block元素上设置span(或者更合乎逻辑地,使用divp而不是span)来强制执行最大宽度。< / p>

如果您希望仅在等号后允许换行,则需要额外的标记。然后,您可以在不允许中断的任何元素上设置white-space: nowrap。或者,如果没有其他字符允许在它们之后换行,则可以使用不间断空格。

我认为如果你使用MathML,你也应该得到正确的数学符号;具体地说,字母“x”不是乘法符号,正确的符号“×”和“⋅”需要它们周围的空格。这与主题相关,因为当您使用空格时,您需要考虑它们是破坏还是不破坏。