forked from edemaine/tex2svg-webworker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtex2svg.coffee
39 lines (35 loc) · 1.52 KB
/
tex2svg.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
## Based roughly on preload/tex2svg from
## https://github.com/mathjax/MathJax-demos-node
global.MathJax =
tex: packages: [
'base', 'autoload', 'require', 'ams', 'newcommand', 'textmacros'
]
svg: fontCache: 'local'
startup:
# Prevent MathJax from looking at document, sometimes available to Worker
document: ''
typeset: false
require 'mathjax-full/components/src/startup/lib/startup.js'
require 'mathjax-full/components/src/core/core.js'
require 'mathjax-full/components/src/adaptors/liteDOM/liteDOM.js'
require 'mathjax-full/components/src/input/tex-base/tex-base.js'
require 'mathjax-full/components/src/input/tex/extensions/all-packages/all-packages.js'
require 'mathjax-full/components/src/input/tex/extensions/textmacros/textmacros.js'
require 'mathjax-full/components/src/output/svg/svg.js'
require 'mathjax-full/components/src/output/svg/fonts/tex/tex.js'
require 'mathjax-full/components/src/startup/startup.js'
global.MathJax.loader.preLoad 'core', 'adaptors/liteDOM', 'input/tex-base',
'[tex]/all-packages', '[tex]/textmacros', 'output/svg', 'output/svg/fonts/tex'
global.MathJax.config.startup.ready()
global.onmessage = (e) ->
{formula, display, em, ex, containerWidth} = e.data
return unless formula?
node = global.MathJax.tex2svg formula,
display: display
em: em ? 16
ex: ex ? 8
containerWidth: containerWidth ? 80 * 16
svg = global.MathJax.startup.adaptor.outerHTML node
.replace /^<mjx-container[^<>]*>/, ''
.replace /<\/mjx-container>$/, ''
postMessage Object.assign e.data, {svg}