MathjaxNode中的错误<path>属性d预期数

2024-10-02 02:38:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

使用带有_SVGconfig选项的MathJax客户端可以很好地工作,那么如何解决这个问题呢


Tags: 代码svgnodedataifstdinstdoutinline
1条回答
网友
1楼 · 发布于 2024-10-02 02:38:56

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

T 381 315 T 301241 Q ...

可能应该是:

T 381 315 T 301 241 Q ...

要么mathjax SVG生成器中存在错误,要么代码中的其他内容意外地剥离了随机字符

相关问题 更多 >

    热门问题