gpt4 book ai didi

javascript - 如何在 MathJax 中左对齐某些方程式

转载 作者:行者123 更新时间:2023-11-30 12:24:08 25 4
gpt4 key购买 nike

因此,默认情况下 MathJax 方程居中,但我想左对齐某些方程。我知道如何使所有方程与 MathJax.Hub.Config 左对齐,但这不是我想要的。

我尝试过在网络上找到的其他代码,例如:

<script type="text/javascript">
MathJax.Hub.Queue(function () {
MathJax.Hub.Config({displayAlign:"left"});
MathJax.Hub.Typeset(["leqn"]);
});
</script>

然后用一个 id 为 leqn 的 div 围绕方程式,如下所示:

<div id="leqn">$$e^{\pi i} - 1 = 0$$</div>

这是行不通的,我对 MathJax 甚至 JS 的了解都不够,无法知道我做错了什么。有什么想法吗?

最佳答案

您原来的方法不起作用的原因是方程式在 MathJax 执行的初始排版过程中已经排版,并且您对 MathJax.Hub.Typeset() 的调用没有t 重新排版现有数学,但仅排版自上次排版调用以来的 数学。所以数学保持原样。

相反,您可以使用 MathJax.Hub.Rerender(["leqn"]) 使用新的 displayAlign 设置重新呈现数学。

话虽如此,Peter 的方法更好,因为它不需要对数学进行两次排版。我在下面对他的方法进行了细微的改进。不必使用 tex2jax_ignore 并且必须返回并从所有具有该类的元素中删除它,您可以将 leqn 添加到被忽略的类中,然后在之前再次删除它第二道排版。这是代码:

MathJax = {
tex2jax: {ignoreClass: "tex2jax_ignore|leqn"},
AuthorInit: function() {
MathJax.Hub.Register.StartupHook("End",function () {
MathJax.Hub.Queue(function () {
MathJax.Hub.Config({
tex2jax: {ignoreClass: "tex2jax_ignore"},
displayAlign: "left"
});
return MathJax.Hub.Typeset();
});
});
}
};

(function(d, script) {
script = d.createElement('script');
script.type = 'text/javascript';
script.src = 'https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML-full';
d.getElementsByTagName('head')[0].appendChild(script);
}(document));
$$e^{\pi i} - 1 = 0$$
<span class="leqn">$$e^{\pi i} - 1 = 0$$</span>
$$e^{\pi i} - 1 = 0$$

编辑:这是另一种方法,它为 TeX 输入 jax 使用后过滤器,它根据父类设置底层 MathML 的 indentalign 属性元素(您也可以使用 ID,但请记住 ID 必须是唯一的,因此您必须为每个方程使用不同的 ID,这就是类更好的原因)。

MathJax = {
AuthorInit: function() {
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
MathJax.InputJax.TeX.postfilterHooks.Add(function (data) {
if (data.script.parentNode.className === "leqn")
data.math.root.indentalign = "left";
});
});
}
};

(function(d, script) {
script = d.createElement('script');
script.type = 'text/javascript';
script.src = 'https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML-full';
d.getElementsByTagName('head')[0].appendChild(script);
}(document));
$$e^{\pi i} - 1 = 0$$
<span class="leqn">$$e^{\pi i} - 1 = 0$$</span>
$$e^{\pi i} - 1 = 0$$

也可以向 TeX 输入 jax 添加一个宏,允许您指定 indentalign 属性,但这会多一些工作。

关于javascript - 如何在 MathJax 中左对齐某些方程式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30077862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com