[英]How to left align certain equations in MathJax
因此,默认情况下 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()
调用不会重新排版现有数学,而只是排版自上次排版调用以来的新数学。 所以数学保持原样。
相反,您可以使用MathJax.Hub.Rerender(["leqn"])
来使用新的displayAlign
设置重新渲染数学。
话虽如此,彼得的方法更好,因为它不需要将数学排版两次。 我在下面对他的方法稍作改进。 您可以将leqn
添加到被忽略的类,然后在第二次排版之前再次将其删除,而不是使用tex2jax_ignore
并且必须返回并从具有该类的所有元素中删除它。 这是代码:
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$$
编辑:这是另一种方法, indentalign
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
属性,但这需要做更多的工作。
没有使用 TeX 输入执行此操作的优雅方法。 该方法将因用例而异。 在这里,您似乎可以将 HTML 包裹在您想要向左对齐的方程周围。 为此,您通常走在正确的轨道上。 这是需要修复的内容:
class="tex2jax_ignore"
让 MathJax 在第一轮排版时忽略相关方程下面是一种方法。
window.MathJax
部分并在加载MathJax.js
之前加载它MathJax.js
。 window.MathJax = { AuthorInit: function() { MathJax.Hub.Register.StartupHook("Begin", function() { MathJax.Hub.Queue(function() { var elements = document.getElementsByClassName('tex2jax_ignore'); for (var i = 0; i < elements.length; i++) { elements[i].classList.remove('tex2jax_ignore'); } MathJax.Hub.Config({ displayAlign: "left" }); MathJax.Hub.Queue(["Typeset", MathJax.Hub]); }); }); } }; (function(d, script) { script = d.createElement('script'); script.type = 'text/javascript'; script.src = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML-full'; d.getElementsByTagName('head')[0].appendChild(script); }(document));
$$e^{\\pi i} - 1 = 0$$ <span class="tex2jax_ignore">$$e^{\\pi i} - 1 = 0$$</span> $$e^{\\pi i} - 1 = 0$$
覆盖 css 样式可能会起作用:
<style>
mjx-container {text-align: left !important;}
</style>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.