1

我有以下数组(给定的 LaTeX 代码),我想通过 SVG、MathML 或(更有可能)某种组合使 HTML5 友好:

\开始{数组}{ccccccc}
0 &&&& \\ \rule[.6cm]{0pt}{0pt}
a_1 & a_2 & a_3 & a_4 & \cdots \\ \rule[.75cm]{0pt}{0pt}
b_1 & b_2 & b_3 & b_4 & \cdots \\ \rule[.75cm]{0pt}{0pt}
\结束{数组}

我可以(几乎)用 MathML 做到这一点,但下一个愿望变得有问题:用(静态)蛇形箭头覆盖数组,向读者展示如何枚举无限数组以表明它是可数的。

如果我可以在 SVG 中嵌入 MathML,我可以制作这个图表。但似乎这是不可能的。(SVG 对象中的 HTML 标记失败。)canvas 元素中的 MathML 可以工作吗?任何指针将不胜感激。

我的最终目标是创建 ePUB 格式的数学文本。这些是我现在最大的症结所在。

4

2 回答 2

0

混合 MathML 和 SVG 是很有可能的。关键是将您的 MathML 放在 foreignObject 元素中。

我不读乳胶,所以我不知道你的蛇形箭头应该是什么样子,所以我决定在方程周围放一个框。希望这足以证明这是可能的。请注意,此时似乎只有 Firefox 5 能很好地显示 MathML。

<!DOCTYPE html>
<html>
    <body>
        <svg id="svg1" width="300" height="300" xmlns="http://www.w3.org/2000/svg">
            <rect x="40" y="40" height="100" width="100" style="stroke:black; fill:lightblue"/>
            <foreignObject x="50" y="50" width="100" height="100">
                <math xmlns="http://www.w3.org/1998/Math/MathML">
                    <mrow>
                        <mi>A</mi>
                        <mo>=</mo>
                        <mfenced open="[" close="]">
                            <mtable>
                                <mtr>
                                    <mtd><mi>x</mi></mtd>
                                    <mtd><mi>y</mi></mtd>
                                </mtr>
                                <mtr>
                                    <mtd><mi>z</mi></mtd>
                                    <mtd><mi>w</mi></mtd>
                                </mtr>
                            </mtable>
                        </mfenced>
                    </mrow>
                </math>
            </foreignObject>
        </svg>
    </body>
</html>
于 2011-07-27T18:09:10.763 回答
0

我建议使用 HTML 作为容器,在文档中内联 MathML 和 SVG。这样就可以很容易地使用 CSS 以您想要的方式重新定位和堆叠图形/方程式/文本。

我能想到的另一个选项是svg 中的foreignObject 元素,它可以包含例如HTML 或MathML。

于 2010-07-15T14:43:37.587 回答