我正在使用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选项一起使用可以正常工作,那么我该如何解决呢?
答案 0 :(得分:0)
我可以确认该SVG路径中存在错误。 T
命令应该具有两个坐标参数。但是中间有一个没有。
T 381 315 T 301241 Q ...
可能应该是:
T 381 315 T 301 241 Q ...
mathjax SVG生成器中有错误,或者代码中的其他内容意外剥离了随机字符。