diff --git a/tools/tex-to-svg.js b/tools/tex-to-svg.js index f42936e0..e9d5bdef 100644 --- a/tools/tex-to-svg.js +++ b/tools/tex-to-svg.js @@ -45,19 +45,11 @@ dir = path.join(dir, "source"); fs.ensureDirSync(dir); var TeXfilename = path.join(dir, hash + ".tex"); +// form the LaTeX block that will be injected into the .tex file var latexSourceCode = cleanUp(latex); -var aligned = latexSourceCode.indexOf("\\begin{aligned}") !== -1; +latexSourceCode = ['\\[', latexSourceCode, '\\]'].join('\n'); -//if (aligned) { - latexSourceCode = [ - '\\[', - latexSourceCode, - '\\]' - ].join('\n'); -//} - -// Convert the passed LaTeX to SVG form -// write the .tex source +// Convert the passed LaTeX to SVG form and write the .tex source var filedata = [ '\\documentclass[12pt]{article}', '\\usepackage[paperwidth=12in, paperheight=12in]{geometry}', // pdfcrop will remove the unused bits later @@ -67,6 +59,8 @@ var filedata = [ '\\usepackage{unicode-math}' ] +// For Chinese, we need the xeCJK package because there might be Chinese +// in maths context, which base XeLaTeX can't quite deal with. if (process.env.LOCALE === 'zh-CN') { filedata = filedata.concat([ '\\usepackage{xeCJK}', @@ -75,6 +69,8 @@ if (process.env.LOCALE === 'zh-CN') { ]); } +// The same goes for Japanese, although we obviously want a different +// font than Chinese, as they are different languages entirely. if (process.env.LOCALE === 'ja-JP') { filedata = filedata.concat([ '\\usepackage{xeCJK}', @@ -83,6 +79,7 @@ if (process.env.LOCALE === 'ja-JP') { ]); } +// Form the final .tex source code, including the latexSourceCode we formed already: filedata = filedata.concat([ '\\setmainfont[Ligatures=TeX]{TeX Gyre Pagella}', '\\setmathfont{TeX Gyre Pagella Math}', @@ -91,17 +88,20 @@ filedata = filedata.concat([ '\\end{document}' ]); +// Then we write the .tex file to disk filedata = filedata.join('\n'); fs.writeFileSync(TeXfilename, filedata); +// Chronicle the filenames that we'll be working through as we run +// through the .tex to pdf to svg conversion process: var PDFfilename = TeXfilename.replace(".tex",".pdf"); var PDFfilenameCropped = TeXfilename.replace(".tex","-crop.pdf"); var SVGfilename = TeXfilename.replace(".tex",".svg"); -// set the SVGfilename one dir higher +// and make sure the SVGfilename points to one dir higher than the .tex file SVGfilename = path.resolve(path.join(path.dirname(TeXfilename), '..', hash + ".svg")); -// run xelatex on this file +// Finally: run the conversion try { var cmd = `npm run xelatex -- -output-directory "${path.dirname(TeXfilename)}" "${TeXfilename}"`; console.log("- running xelatex on " + hash + ".tex");