Pandoc Lua filter to convert math block type
I’ve been using Markdown for writing text, and converting it to different formats such as HTML and PDF. As a result, I am having to learn to live with differences between different converters such as Pandoc, which I use to render HTML and PDF, and Kramdown, which is used by Jekyll to render this page.
One particular difference is related to how you insert math using . Whereas Pandoc expects you to insert inline math between
$ signs, Kramdown expects you to use
$$. Pandoc understands math between
$$ as block math syntax and it will add a line break before and after the math. The math still gets rendered nicely but messes with the vertical flow of the text.
Since all the math I use is inline, I wrote a simple Pandoc filter in Lua to force any math block to be inline
function Math(meta) --print(meta.mathtype.." "..meta.text) -- force InlineMath meta.mathtype = "InlineMath" return meta end
Assuming the code above is saved to a file called
filter.lua, you can tell Pandoc to use the filter by adding
--lua-filter filter.lua to its command line.
If you do want to display math in its own block, you can create a paragraph containing just the math
Pandoc filters to the rescue!