将 MathJax 与 kramdown 一起使用,无需在 div 中进行保护(如广告所示!)
Use MathJax with kramdown, without protecting in div's (as advertised!)
我正在尝试设置 Jekyll 以正确显示数学。
如果我不在 div 标签内嵌套方程式,问题是什么都不会呈现
保护它们免受降价解析器的影响:(
---
layout: default
math: true
---
# Using Mathjax
along markdown parsers is a real pain...
$$ a + b = c $$
doesn't show, though the following does:
<div>
$$ x + y + c $$
</div>
布局测试通过包含 {% if page.math %}
:
包含以下 mathjax 脚本
<script async src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_CHTML"></script>
我很困惑,因为:
关于这个主题已经有很多,但是很多已经过时了!
任何对顺利和简单配置的帮助将不胜感激。
问题是 kramdown 的输出不再与 mathjax v3 兼容。
您可以检查 kramdown 是否在将 $$ a + b = c$$
嵌套在推荐的脚本标签内:
<script type="tex/math"> a = b + c </script>
但是 mathjax 不再使用这些脚本标签,如前所述 here(最后一个项目符号)。
所以让 kramdown 与 mathjax 一起工作需要:
- 包括 mathjax 2 的可靠来源:我的尝试失败了
- 在 mathjax 脚本之前包含这个复杂的 mathjax 3 配置对象,向它传递一个函数来查找那些标签
MathJax = {
options: {
renderActions: {
find: [10, function (doc) {
for (const node of document.querySelectorAll('script[type^="math/tex"]')) {
const display = !!node.type.match(/; *mode=display/);
const math = new doc.options.MathItem(node.textContent, doc.inputJax[0], display);
const text = document.createTextNode('');
node.parentNode.replaceChild(text, node);
math.start = {node: text, delim: '', n: 0};
math.end = {node: text, delim: '', n: 0};
doc.math.push(math);
}
}, '']
}
}
};
无法理解为什么这种向后可战斗性而不是简单的选项开关...
我正在尝试设置 Jekyll 以正确显示数学。
如果我不在 div 标签内嵌套方程式,问题是什么都不会呈现 保护它们免受降价解析器的影响:(
---
layout: default
math: true
---
# Using Mathjax
along markdown parsers is a real pain...
$$ a + b = c $$
doesn't show, though the following does:
<div>
$$ x + y + c $$
</div>
布局测试通过包含 {% if page.math %}
:
<script async src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_CHTML"></script>
我很困惑,因为:
关于这个主题已经有很多,但是很多已经过时了! 任何对顺利和简单配置的帮助将不胜感激。
问题是 kramdown 的输出不再与 mathjax v3 兼容。
您可以检查 kramdown 是否在将 $$ a + b = c$$
嵌套在推荐的脚本标签内:
<script type="tex/math"> a = b + c </script>
但是 mathjax 不再使用这些脚本标签,如前所述 here(最后一个项目符号)。
所以让 kramdown 与 mathjax 一起工作需要:
- 包括 mathjax 2 的可靠来源:我的尝试失败了
- 在 mathjax 脚本之前包含这个复杂的 mathjax 3 配置对象,向它传递一个函数来查找那些标签
MathJax = {
options: {
renderActions: {
find: [10, function (doc) {
for (const node of document.querySelectorAll('script[type^="math/tex"]')) {
const display = !!node.type.match(/; *mode=display/);
const math = new doc.options.MathItem(node.textContent, doc.inputJax[0], display);
const text = document.createTextNode('');
node.parentNode.replaceChild(text, node);
math.start = {node: text, delim: '', n: 0};
math.end = {node: text, delim: '', n: 0};
doc.math.push(math);
}
}, '']
}
}
};
无法理解为什么这种向后可战斗性而不是简单的选项开关...