Почему svg, сгенерированный MathJax.js, отличается от svg, сгенерированного MathJax-узлом - PullRequest
0 голосов
/ 04 июня 2018

Я пишу веб-приложение, которое сохраняет HTML в onenote.Чтобы сохранить математические формулы, я планирую преобразовать математические формулы в svg с помощью MathJax.js, а затем преобразовать svg в png, поскольку html / css, поддерживаемый в onenote api, ограничен.

Но, похоже, сгенерированный svgMathJax.js в браузере не является действительным SVG.Я протестировал его с простой математической формулой: $$a^2 + b^2 = c^2$$ ( демонстрационный код ) и скопировал svg в jsfiddle , и он ничего не отображает.

Затем я попытался написатьдемонстрацию MathJax-узла и снова скопируйте svg в jsfiddle , это выглядит хорошо.Вот мой демонстрационный код, он почти такой же, как демонстрационный репозиторий GitHub :

// a simple TeX-input example
const fs = require('fs')
var mjAPI = require("mathjax-node");
mjAPI.config({
  MathJax: {
    // traditional MathJax configuration
  }
});
mjAPI.start();

var yourMath = String.raw`a^2 + b^2 = c^2`

mjAPI.typeset({
  math: yourMath,
  format: "TeX", // or "inline-TeX", "MathML"
  svg: true,      // or svg:true, or html:true
}, function (data) {
  if (!data.errors) {console.log(data.svg)}
  // will produce:
  // <math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  //   <mi>E</mi>
  //   <mo>=</mo>
  //   <mi>m</mi>
  //   <msup>
  //     <mi>c</mi>
  //     <mn>2</mn>
  //   </msup>
  // </math>

  fs.writeFile('math.txt', data.svg, (error) => {
      console.log(error)
  })
});

Я также протестировал два svg с cloudconvert , это тот же результат.Почему два SVG разные?Я что-то пропустил?

1 Ответ

0 голосов
/ 04 июня 2018

Разница вызвана определенной настройкой: useGlobalCache

По умолчанию MathJax ( документы ) устанавливает это значение на true, тогда как узел mathjax ( документы *)1008 *) устанавливает значение false.

На сервере MathJax-узел не имеет контекста документа и создает автономные SVG.На клиенте MathJax имеет полный контекст документа и, таким образом, может повторно использовать пути SVG в уравнениях.

...