Mein Node-Skript importiert ein XHTML-Dokument und exportiert es mit dem Calibre-Dienstprogramm ebook-convert in E-Book-Formate. All das funktioniert gut.JavaScript: Wie wirkt sich die Außenwelt auf einen Rückruf aus?
Einige meiner Quelldokumente enthalten MathML-Markup zusätzlich zu anderen XHTML-Inhalten. Ich versuche MathJax-node zusammen mit mathjax-node-svg2png zu verwenden, um die MathML durch Bilder zu ersetzen.
Hier einige meiner stummen Code:
let einstein = `
<blockquote class='eqtn'>
<p>We will now prove the Pythogorian theorem: <mml:math> <mrow> <msup><mi> a </mi><mn>2</mn></msup> <mo> + </mo> <msup><mi> b </mi><mn>2</mn></msup> <mo> = </mo> <msup><mi> c </mi><mn>2</mn></msup> </mrow> </mml:math></p>
</blockquote>
<blockquote>
<p><mml:math><mrow><mi>e</mi><mo>=</mo><mi>m</mi><msup><mi>c</mi><mn>2</mn></msup></mrow></mml:math></p>
</blockquote>
`;
const re = /(\<mml:math.*?\<\/mml:math\>)/g;
var equations = einstein.match(re);
equations.forEach(equation => {
mjAPI.typeset({
math: equation,
format: 'MathML',
png: true,
scale: 2
}, function(data) {
if(!data.errors) {
const imageTag = `<img alt="${data.speakText}" src="${data.png}" width="80%"/>`;
console.log(einstein.replace(equation, imageTag)); // This logs the string
// twice, each time with a different **single** equation replaced with
// an image tag.
}
});
});
Ich verstehe, warum dies die Ausgabe zweimal protokolliert, und ohne den Inhalt zu aktualisieren, aber ich bin nicht sicher, wie sie alle zusammen ziehen alle zu ersetzen die Gleichungen mit Bildern, vorausgesetzt, es ist asynchron. Gibt es Unterlagen, die mich in die richtige Richtung weisen könnten?