错误<path>属性d mathjax-node中的预期数量

时间:2019-05-05 13:48:06

标签: python node.js svg mathjax

我正在使用mathjax-node尝试将mathjax代码转换为SVG。目前,我在这里设置的代码是这样的:

const mathjax = require("mathjax-node");

process.stdin.on("data", data => {
  mathjax.typeset({
    math: data.slice(1),
    format: [...data][0] == "Y" ? "inline-TeX" : "TeX",
    svg: true
  }).then(data => {
    process.stdout.write(data.svg + String.fromCodePoint(0));
  });
});

哪个输入,第一个字符确定它是否内联,其他所有代码。像这样的python文件使用了它:

# -*- coding: utf-8 -*-

from subprocess import *

from pathlib import Path

cdir = "/".join(str(Path(__file__)).split("/")[:-1])
if cdir:
  cdir += "/"

converter = Popen(["node", cdir + "mathjax-converter.js"], stdin = PIPE, stdout = PIPE)

def convert_mathjax(mathjax, inline = True):
  converter.stdin.write(bytes(("Y" if inline else "N") + mathjax, "utf-8"))
  converter.stdin.flush()
  result = ""
  while True:
    char = converter.stdout.read(1)
    if not char: return ""
    if ord(char) == 0:
      return result
    result += char.decode("utf-8")

因此convert_markdown是接受代码并将其转换为SVG的函数。但是,当我尝试仅使用data:text/html,<svg>...</svg>渲染输出时,会在控制台中显示此错误:

Error: <path> attribute d: Expected number, "…3T381 315T301241Q265 210 201 149…".

将MathJax客户端与_SVG config选项一起使用可以正常工作,那么我该如何解决呢?

1 个答案:

答案 0 :(得分:0)

我可以确认该SVG路径中存在错误。 T命令应该具有两个坐标参数。但是中间有一个没有。

T 381 315 T 301241 Q ...

可能应该是:

T 381 315 T 301 241 Q ...

mathjax SVG生成器中有错误,或者代码中的其他内容意外剥离了随机字符。