tex2png
Latest update:
What do you do when you need to add a formula to a epub? Most epub
readers don't support MathML yet, hence you resort to making SVGs via
mathjax-node-cli. Then you test the epub on several über popular
readers to discover that only Kindle & Google Play Books render such
SVGs correctly, the rest either loses all the characters in equations
(KOReader) or just draws sad little boxes in place of the images
(Moon+ Reader).
How do you produce PNGs then? In the past, mathjax-node had an option
of a png export, but it has been deprecated.
There's a way to do it w/ pdflatex: (1) generate a pdf w/ the help of
texlive-standalone package, (2) convert the pdf to a png.
This doesn't sound complicated & it's not complicated, but there's no
helpful wrappers available and if you want to integrate the tex→png
process into your build pipeline, prepare to deal w/ the usual aux/log
rubbish that any TeX program leaves around.
Here's a makefile that does the conversion:
#!/usr/bin/make -f
$(if $(f),,$(error "Usage: tex2img f='E=mc^2' output.png"))
dpi := 600
devnull := $(if $(findstring s,$(word 1, $(MAKEFLAGS))),> /dev/null)
inkscape = inkscape --pdf-poppler -Tlp $< -o $@
%.pdf:
pdflatex -jobname "$(basename $@)" -interaction=batchmode '\nofiles\documentclass[border=0.2pt]{standalone}\usepackage{amsmath}\usepackage{varwidth}\begin{document}\begin{varwidth}{\linewidth}\[ '$(call se,$(f))' \]\end{varwidth}\end{document}' $(devnull)
@rm -f "$(basename $@).log"
%.png: %.pdf; $(inkscape) -d $(dpi)
%.svg: %.pdf; $(inkscape)
se = '$(subst ','\'',$1)'
It automatically removes all intermidiate files; iff you mistype a
formula it saves a .log file to peruse.
For example, render Parkinson's coefficient of inefficiency (published
in ~1957):
$ ./tex2png -s output.png f='x = \frac{m^{o}(a-d)}{y + p\sqrt{b}}'
(x = the number of members effectively present at the moment when
the efficient working of a committee has become manifestly impossible;
m = the average number of members actually present; o = the
number of members influenced by outside pressure groups; a = the
average age of the members; d = the distance in cm between the two
members who are seated farthest from each other; y = the number of
years since the cabinet or committee was first formed; p = the
patience of the chairman, as measured on the Peabody scale; b = the
average blood pressure of the three oldest members, taken shortly
before the time of meeting.)
Tags: ойті
Authors: ag