Я использую 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
работает нормально, так как мне решить эту проблему?