Ошибка <path>атрибут d ожидаемое число в mathjax-узле - PullRequest
0 голосов
/ 05 мая 2019

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

1 Ответ

0 голосов
/ 06 мая 2019

Я могу подтвердить, что в этом пути SVG есть ошибка.Предполагается, что команда T имеет два параметра координат.Но есть один в середине, который этого не делает.

T 381 315 T 301241 Q ...

, вероятно, должен быть:

T 381 315 T 301 241 Q ...

Либо есть ошибка в генераторе SVG mathjax, либо что-тоиначе в вашем коде случайно удаляются случайные символы.

...