- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 mathdox,在我的网页中插入方程。我已经实现了所需的所有符号和数学表达式,将它们作为 openmath 插入并将它们转换为 MathML(下标除外)。我知道它应该像这样工作:
<OMOBJ xmlns='http://www.openmath.org/OpenMath' version='2.0' cdbase='http://www.openmath.org/cd'>
<OMA style='sub'>
<OMV name='x'/>
<OMI>2</OMI>
</OMA>
</OMOBJ>
应该转换为
<math xmlns="http://www.w3.org/1998/Math/MathML">
<msub>
<mi>X</mi>
<mn>2</mn>
</msub>
</math>
但我找不到在 javascript 中实现它的方法,也找不到它在 mathdox 中的现有实现。
最佳答案
对我来说,这只适用于 Firefox。这项工作的主要工具是 createElementNS
和 getElementsByTagNameNS
。另外,我不确定你从哪里得到你的 openmath
文档,但我将通过 AJAX
检索它.
因此,假设您的文件结构是:
/root
+-/js
| +-convert.js
|
+-/xml
| +-openmath.xml
|
+-index.html
您的文件如下:
index.html
唯一需要注意的是index.html
就是我们设置一个id
关于<math>
我们想要将转换后的标签放在下面的元素。我们还包括convert.js
JavaScript 文件。
<html>
<head>
<title>Convert</title>
<script src="js/convert.js"></script>
</head>
<body>
<main>
<math xmlns="http://www.w3.org/1998/Math/MathML" id="target"></math>
</main>
</body>
</html>
openmath.xml
此文件只是您在问题中发布的 XML,我们将转换为数学命名空间。
<OMOBJ xmlns='http://www.openmath.org/OpenMath' version='2.0' cdbase='http://www.openmath.org/cd'>
<OMA style='sub'>
<OMV name='x' />
<OMI>2</OMI>
</OMA>
</OMOBJ>
convert.js
这样convert.js
工作原理是它通过 xhr 加载 openmath 文档,然后使用 DOMParser()
创建一个包含文档文本的新 XML 文档。和parseFromString()
。然后我们将该文档提供给 mathSubscriptConverter()
它拉动所有 OMA
标签,从中获取相关数据,然后将其转换为 msub
标签。一旦我们有了msub
标签,我们将它们添加为 <math>
下的子级存在于我们的 index.html
中的标签.
(function () {
"use strict";
var mathNS = "http://www.w3.org/1998/Math/MathML",
openMathNS = "http://www.openmath.org/OpenMath",
xhr = new XMLHttpRequest();
function mathSubscriptConverter(openmathDoc) {
var target = document.getElementById("target"),
omas = openmathDoc.getElementsByTagNameNS(openMathNS, "OMA");
// Make sure we have a math element to put this under
if (target) {
// Iterate each OMA tag
Array.prototype.forEach.call(omas, function (oma) {
var omv, omi, msub, mi, mn;
// Get the first OMV
omv = oma.getElementsByTagNameNS(openMathNS, "OMV")[0];
// Get the first OMV
omi = oma.getElementsByTagNameNS(openMathNS, "OMI")[0];
// Create a subscript tag in the math namespace
msub = document.createElementNS(mathNS, "msub");
// Create an mi tag in the math namespace
mi = document.createElementNS(mathNS, "mi");
// Create an mn tag in the math namespace
mn = document.createElementNS(mathNS, "mn");
// Set our math attributes
mi.innerHTML = omv.getAttribute("name");
mn.innerHTML = omi.innerHTML;
// Add our new elements to the target
msub.appendChild(mi);
msub.appendChild(mn);
target.appendChild(msub);
});
}
}
// Wait for document load
document.addEventListener("DOMContentLoaded", function () {
// Load our openmath document
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
var parser = new DOMParser(),
mdoc = parser.parseFromString(xhr.responseText, "application/xml");
mathSubscriptConverter(mdoc);
}
};
xhr.open("GET", "xml/openmath.xml", true);
xhr.send();
});
}());
关于javascript - 将下标从 OpenMath 转换为 MathML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32743826/
我有一个 MATHML 公式(由 http://www.mathtoweb.com/cgi-bin/mathtoweb_online.pl 生成)。我想将其粘贴到 Libreoffice 中。我怎样才
我不明白什么? 下面的代码工作正常: from sympy.printing.mathml import print_mathml s = "x**2 + 8*x + 16" print_mathml
我有一些网页大量使用 MathJax(或 MathML?),我想将其转换成电子书并显示在我的 kindle 上,它不支持足够的 javascript,也不支持 MathML。所以我想预处理 .html
我的浏览器 Firefox 3.6 似乎可以很好地显示 W3C 测试套件中的 Mathml 方程。但是,如果我将代码复制到我的网页中,例如 here ,所有 Firefox 生成的都是类似于 x y
我今天发现 Windows 7 带有一个非常令人印象深刻的 MathPanel 实用程序,用于执行方程的手写识别: 这很好。 (这里我已经输入了 sRGB 颜色空间 Gamma 转换部分的公式) 但现
我们很快就会开始开发 TeX 到 MathML 的转换器。所以,我想知道哪些浏览器(从哪个版本开始)正式支持 MathML?谢谢 最佳答案 几乎没有,只有 Firefox 和 Safari 可以处理
我试图显示一个简单的方程式,但它不起作用。我的代码如下(html5): a i =
我有一个包含文本区域的页面。用户将在其中输入 mathML,当用户单击输出按钮时,MathML 应呈现并显示在文本区域下方。但是渲染没有发生。 Textarea 可能包含多个用于渲染的 mathml
我正在尝试构建与 this site 相同的功能用户将在文本区域中输入数学表达式并将其呈现为 MathML 格式。 例子: Input expression string: cos(x^3) Then
快速了解 MathML 及其在世界范围内的使用的最佳方法是什么? 我的意思是: 你用什么来渲染/编辑它 它是否用于您可以向我指出的任何商业/开源应用程序 它是否流行并被大量使用? 是否有可以在 C#、
我在使用我们的学习管理系统 (LMS) 中内置的 MathML 编辑器时发现了一些奇怪的东西。当我输入 float 时,它用 包裹小数点标签。 例如,我期望 1.2输出为: 1.2 但是,编辑器输出
我一直在努力为 ckeditor 添加 mathml 支持。我浏览了几个链接,但似乎没有一个起作用。我什至尝试过 ckeditor 的 WIRIS 插件,但它没有给我任何结果。对于WIRIS,我关注了
我在使用我们的学习管理系统 (LMS) 中内置的 MathML 编辑器时发现了一些奇怪的东西。当我输入 float 时,它用 包裹小数点标签。 例如,我期望 1.2输出为: 1.2 但是,编辑器输出
我使用 MathML 创建一些数据 block ,我需要通过 OpenXML SDK 将其插入到 docx 文件中。我听说这是可能的,但我没有做到。有人可以帮我解决这个问题吗? 最佳答案 据我所知,O
我正在使用 MathDox用于生成 MathML 的公式编辑器。现在我想将 MathDox 生成的 MathML 转换为表达式,稍后我可以使用它来评估以找到答案。 For eg: MathML:
我想像这样转换表达式: “a*x^2+b*x^2+c+d”…… “对数((a*x)/sin(x))”... “1/x”... 使用 JavaScript 进入 MathML。有什么建议么?我找到的最接
我有一个 PHP 脚本输出:((5^2x^2)^2+3)/(sqrt(sqrt(81))) 我希望它像您编写的那样正确格式化。 在哪里可以找到这样的 ASCII 到 MathML 转换器:http:/
我正在尝试为用户实现一种输入简化数学符号的方法,而不是传统的 LaTex 符号。然后将使用 MathJax 呈现表达式的结果。但我似乎找不到“简化的数学符号”或 ad-hoc ASCII 到 late
具体来说(MathJax 不是我要找的)我有一个网页,里面有一些 MathML。“FireFox”浏览器可以很好地解析它,但是当我尝试通过 javascript 添加相同的代码时,它没有'解析它。如何
MathML是一种编写数学的网络标准,可以轻松缩放而无需像素化(就像 SVG)、复制和粘贴以及屏幕阅读器阅读。 Chrome 拒绝在存在 JavaScript polyfill 的基础上实现它。 (I
我是一名优秀的程序员,十分优秀!