Goldmark Latex
Underscores
_
won’t break LaTeX and Markdown any more
goldmarklatex
is an extension for goldmark that adds support for math blocks and inline math.
This is just a fork of litao91/goldmarkmathjax with more options for parsing and rendering. There are also some minor modifications (and I hope to modernizing that code in future commits).
(I decided to not make a direct fork because the name was misleading in referencing MathJax as the project isn’t really used anywhere concretely inside the project. The goldmark extension just parsed latex code inside markdown and doesn’t even add a CDN link to mathjax or something similar)
Installation
go get github.com/aziis98/goldmarklatex
Usage
The default config uses $...$
for inline math and $$...$$
for math blocks and renders the former to <span class="math inline">...</span>
and the latter to <div class="math block">...</span>
.
markdown := goldmark.New(
goldmark.WithExtensions(
latex.NewLatex(),
),
)
All delimiters can be customized using the following functions, for example the following uses \(...\)
and \[...\]
and preserves them as is during render.
markdown := goldmark.New(
goldmark.WithExtensions(
latex.NewLatex(
latex.WithSourceInlineDelim(`\(`, `\)`),
latex.WithSourceBlockDelim(`\[`, `\]`),
latex.WithOutputInlineDelim(`\(`, `\)`),
latex.WithOutputBlockDelim(`\[`, `\]`),
),
),
)
TODOs

I ported this directly from
goldmarkmathjax
but I read too late that it was based on old goldmark code for fenced blocks and code spans that in the meantime change a bit.Sometime I’ll update the parser code to not use the deprecated
util.DedentPosition
. 
The old
goldmarkmathjax
actually had some code that compiled latex to SVGs usingpdflatex
andpdf2svg
.Something interesting could be to use the “tex renderer” just for math blocks. Rendering inline math to SVGs has the problem that images can’t wrap along lines, for those falling back to KaTeX or MathJax might be the best option.
License
MIT