Sphinx 中带有 ␣ 符号的 MathJax 渲染问题

问题描述 投票:0回答:1

我正在使用 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

这是预期的输出:

This is the expected output

python-sphinx mathjax restructuredtext
1个回答
0
投票

该问题已在 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();
      }
    }
  };
© www.soinside.com 2019 - 2024. All rights reserved.