这里没有内置的API。
如果您不需要保留的标签,然后复位in the comment above可能是去了解它的最佳方式:
MathJax.Extension["TeX/AMSmath"].labels = {}
一个快速和肮脏的方式来获得的ID是利用一个事实,即他们最终在输出。所以,你可以得到所有的ID的输出,例如
const math = MathJax.Hub.getAllJax()[0];
const nodesWithIds = document.getElementById(math.root.inputID).previousSibling.querySelectorAll('[id]');
const ids = [];
for (node of nodesWithIds) ids.push(node.id);
一个更清洁,也许在概念上更简单的方法是利用MATHML(这基本上是内部格式):在\label{}
总是一个mlabeledtr
结束。麻烦的是,你必须重新解析,例如,
const temp = document.createElement('span');
temp.innerHTML = math.root.toMathML();
const nodesWithIds = temp.querySelectorAll('mlabeledtr [id]');
const ids = [];
for (node of nodesWithIds) ids.push(node.id);
这将确保该数组只有相关的ID在他们(和节点的内容应与\label{}
。
我想用帮助程序库可能会更容易直接跳入math.root
对象并递归查找ID(在其data
密钥中)。
您主要问是否存在用于此目的的内置API或者您在寻找更健壮的方式找到相关的ID? –
@PeterKrautzberger b uilt-in将是可取的,但如果这不是一个选项,一个可靠的方法是可以接受的。我目前的解决方案是使用'MathJax.Extension [“TeX/AMSmath”]。labels = {}'来简单地刷新标签列表,这似乎解决了我的问题,但我可以想象解决方案可能是有用的给别人。 –