gpt4 book ai didi

javascript - MathJax:无法使用 Jekyll 渲染\begin{cases}...\end{cases}

转载 作者:行者123 更新时间:2023-12-04 07:43:48 25 4
gpt4 key购买 nike

我们在 our course website 上使用 MathJax ,它在 Jekyll 中实现并托管在 GitHub 页面上。对于小而简单的方程,MathJax 工作得很好,但我从来没有能够让稍微更复杂的方程起作用。我花了很多时间进行调查和试验,所以我想我终于可以在这里问了。
例如,以下无法呈现:

$$
S_{i} =
\begin{cases}
X_{1} & \text{if i = 1}\\
\alpha \cdot X_{i} + (1 - \alpha) \cdot S_{i-1} & \text{if i $>$ 1}
\end{cases}
$$
Web 浏览器中的渲染输出实际上是空白的。
当我查看呈现的 html 时,我看到:
<p>
<span class="MathJax_Preview" style="color: inherit; display: none;"></span>
<span id="MathJax-Element-5-Frame" class="mjx-chtml MathJax_CHTML" tabindex="0" data-mathml="
<math
xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; />" role="presentation" style="font-size: 113%; position: relative;">
<span id="MJXc-Node-149" class="mjx-math" aria-hidden="true">
<span id="MJXc-Node-150" class="mjx-mrow"></span>
</span>
<span class="MJX_Assistive_MathML" role="presentation">
<math
xmlns="http://www.w3.org/1998/Math/MathML">
</math>
</span>
</span>
<script type="math/tex" id="MathJax-Element-5">%
<![CDATA[ S_{i} = \begin{cases} X_{1} & \text{if i = 1}\\ \alpha \cdot X_{i} + (1 - \alpha) \cdot S_{i-1} & \text{if i $>$ 1} \end{cases} %]]>
</script>
</p>
我不是 LaTeX 专家,所以我经常在诸如 https://www.codecogs.com/latex/eqneditor.php 之类的在线编辑器中编写方程式(或至少检查它们)。或 OverLeaf。他们在那里渲染得很好。
我首先在 tex StackExchange 上问了这个问题( link ),但他们说这是题外话。

更新:我最终在 MathJax 用户组 ( link ) 上询问了这个问题,并收到了一个有效的解决方案,详细描述了 on GitHub .感谢大家的回复!

最佳答案

看起来 Jekyll 将数学插入为 MathJax <script>标签( <script type="math/tex"> ),该标签的内容是 TeX 表达式。不幸的是,该插件正在插入一些额外的文本来将内容标记为 CDATA .这在 HTML 中不需要,但对于 XHTML 可能需要。你的页面是 XHTML(我不知道 Jekyll 生成什么)?
无论如何,该插件可能最初插入

<script type="math/tex">
% <![CDATA[
... your expression...
% ]]>
</script>
那会奏效(即使没有必要),因为 %在 TeX 中标记注释,所以 <![CDATA[将被忽略,关闭 ]]> 也将被忽略。 .
除了 GitHub 页面删除了换行符,所以你得到了
<script type="math/tex">% <![CDATA[... your expression...% ]]></script>
都在一条线上。这意味着第一个 %使整个表达式的其余部分变成注释,并且数学被有效地注释掉。这意味着您没有输出,因为数学表达式实际上是空的。
这个以前也出现过,我提供了 a work-around
对于版本 2:
<script type="text/x-mathjax-config">
MathJax.Hub.Register.StartupHook('TeX Jax Ready', function () {
MathJax.InputJax.TeX.prefilterHooks.Add(function (data) {
data.math = data.math.replace(/^% <!\[CDATA\[/, '').replace(/%\]\]>$/, '');
});
});
</script>
以及版本 3:
<script>
MathJax = {
startup: {
ready: function() {
var HTMLDomStrings = MathJax._.handlers.html.HTMLDomStrings.HTMLDomStrings;
var handleTag = HTMLDomStrings.prototype.handleTag;
HTMLDomStrings.prototype.handleTag = function (node, ignore) {
if (this.adaptor.kind(node) === '#comment') {
var text = this.adaptor.textContent(node);
if (text.match(/^\[CDATA\[(?:\n|.)*\]\]$/)) {
this.string += '<!'
this.extendString(node, text);
this.string += '>';
return this.adaptor.next(node);
}
}
return handleTag.call(this, node, ignore);
}
MathJax.startup.defaultReady();
MathJax.startup.document.inputJax[0].preFilters.add(function (data) {
data.math.math = data.math.math.replace(/^% <!\[CDATA\[/, '').replace(/%\]\]>$/, '');
});
}
}
};
</script>
在任何情况下,是(可能不必要的)CDATA“注释”以及换行符的删除导致了问题。

关于javascript - MathJax:无法使用 Jekyll 渲染\begin{cases}...\end{cases},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67302929/

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