我正在使用 Sphinx 构建文档。我的第一个文件中有以下内容:
.. math::
{{a^{{p_1}{p_2}}_{{p_3}{p_4}}}{a^{␣\,{p_5}}_{{p_6}{p_7}}}}
在构建时,这会产生“数学输入错误”。如果我删除
␣
,它就会起作用。
关于如何解决这个问题有什么想法吗?
在
conf.py
:
extensions = [
'sphinx.ext.mathjax',
]
Sphinx版本:7.1.2,Python版本:3.8.19
这是预期的输出:
该问题已在 v4 中修复(现已发布测试版)。 但对于 v3,您可以尝试使用
\unicode{x2423}
而不是显式的 unicode 字符,因为这样应该可以避免错误。
如果必须使用漏洞利用 unicode 字符,可以使用以下 MathJax 配置来修补问题:
MathJax = {
tex: {
packages: {'[+]': ['fix-unicode']}
},
startup: {
ready() {
const {Configuration} = MathJax._.input.tex.Configuration;
const {MapHandler} = MathJax._.input.tex.MapHandler;
const NodeUtil = MathJax._.input.tex.NodeUtil.default;
const {getRange} = MathJax._.core.MmlTree.OperatorDictionary;
function Other(parser, char) {
const font = parser.stack.env['font'];
let def = font ? {mathvariant: parser.stack.env['font']} : {};
const remap = (MapHandler.getMap('remap')).lookup(char);
const range = getRange(char);
const type = range?.[3] || 'mo';
let mo = parser.create('token', type, def, (remap ? remap.char : char));
range?.[4] && mo.attributes.set('mathvariant', range[4]);
if (type === 'mo') {
NodeUtil.setProperty(mo, 'fixStretchy', true);
parser.configuration.addNode('fixStretchy', mo);
}
parser.Push(mo);
}
Configuration.create('fix-unicode', {fallback: {character: Other}});
MathJax.startup.defaultReady();
}
}
};