2022-11-27 09:17:29AM
This commit is contained in:
parent
93adc4f474
commit
b90ca0a166
6 changed files with 3402 additions and 0 deletions
43
d2renderers/d2latex/latex.go
Normal file
43
d2renderers/d2latex/latex.go
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
package d2latex
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "embed"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
v8 "rogchap.com/v8go"
|
||||||
|
)
|
||||||
|
|
||||||
|
//go:embed polyfills.js
|
||||||
|
var polyfillsJS string
|
||||||
|
|
||||||
|
//go:embed setup.js
|
||||||
|
var setupJS string
|
||||||
|
|
||||||
|
//go:embed mathjax.js
|
||||||
|
var mathjaxJS string
|
||||||
|
|
||||||
|
func SVG(s string) (string, error) {
|
||||||
|
v8ctx := v8.NewContext()
|
||||||
|
|
||||||
|
if _, err := v8ctx.RunScript(polyfillsJS, "polyfills.js"); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := v8ctx.RunScript(mathjaxJS, "mathjax.js"); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := v8ctx.RunScript(setupJS, "setup.js"); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
val, err := v8ctx.RunScript(fmt.Sprintf(`adaptor.innerHTML(html.convert("%s", {
|
||||||
|
em: 16,
|
||||||
|
ex: 8,
|
||||||
|
}))`, s), "value.js")
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return val.String(), nil
|
||||||
|
}
|
||||||
17
d2renderers/d2latex/latex_test.go
Normal file
17
d2renderers/d2latex/latex_test.go
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
package d2latex
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/xml"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSVG(t *testing.T) {
|
||||||
|
svg, err := SVG("$$a + b = c$$")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
var xmlParsed interface{}
|
||||||
|
if err := xml.Unmarshal([]byte(svg), &xmlParsed); err != nil {
|
||||||
|
t.Fatalf("invalid SVG: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
1
d2renderers/d2latex/mathjax.js
Normal file
1
d2renderers/d2latex/mathjax.js
Normal file
File diff suppressed because one or more lines are too long
3334
d2renderers/d2latex/polyfills.js
Normal file
3334
d2renderers/d2latex/polyfills.js
Normal file
File diff suppressed because it is too large
Load diff
6
d2renderers/d2latex/setup.js
Normal file
6
d2renderers/d2latex/setup.js
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
const adaptor = MathJax._.adaptors.liteAdaptor.liteAdaptor();
|
||||||
|
MathJax._.handlers.html_ts.RegisterHTMLHandler(adaptor)
|
||||||
|
const html = MathJax._.mathjax.mathjax.document('', {
|
||||||
|
InputJax: new MathJax._.input.tex_ts.TeX(),
|
||||||
|
OutputJax: new MathJax._.output.svg_ts.SVG({ fontCache: "none" }),
|
||||||
|
});
|
||||||
1
d2renderers/d2latex/tex-svg.js
Normal file
1
d2renderers/d2latex/tex-svg.js
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue