I'm trying to make a filter to transform some features of org-mode to GitLab-markdown (not supported by Pandoc out of the box), in particular, the math blocks.
The filter should work when transforming to markdown, but instead of giving the markdown format for the math blocks (enclosed by $$...$$), it should write the blocks as
``` math
a + b = c
```
The preces I have now is
In org-mode, the math blocks are simply the latex code:
\begin{equation}
a + b = c
\end{equation}
this is parsed as a pandoc AST RawBlock with format latex. I then remove the first (\begin{equation}) an last line (\end{equation}), and construct a pandoc CodeBlock with atrributes {"math"}, so the CodeBlock object displays in AST as
CodeBlock ("",["math"],[]) "a + b = c\n"
and then I let Pandoc create the markdown document, and the written result is
``` {.math}
a + b = c
```
The question:
I want the bare math, not {.math} written, without the use of CLI options.
I am aware that this can be done setting the Writer extension fenced_code_attributes to false (eg. $pandoc -w markdown-fenced_code_attributes ...), but I would much prefer this done inside the filter.
Or is it possible to set the extensions inside the filter?
Here is my atempted lua-filter:
function split(str,pat)
local tbl = {}
str:gsub(pat, function(x) tbl[#tbl+1]=x end)
return tbl
end
function RawBlock(rb)
if rb.format == "latex" then
local text = rb.text
split_text = split(text, "[^\n]*")
if split_text[1] == '\\begin{equation}' and split_text[#split_text-1] == '\\end{equation}' then
table.remove(split_text, #split_text-1)
table.remove(split_text, 1)
text = table.concat(split_text, "\n")
local cb = pandoc.CodeBlock()
cb.attr = {"",{"math"}}
cb.text = text
return cb
end
end
end