cross-posting of https://stackoverflow.com/questions/67109880/is-it-posible-to-enable-extensions-on-pandoc-filters
The lua split function is this
```lua
function split(str,pat)
local tbl = {}
str:gsub(pat, function(x) tbl[#tbl+1]=x end)
return tbl
end
```El jueves, 15 de abril de 2021 a las 16:08:23 UTC+2, Angel Joaniquet escribió:
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:
``` lua
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
```
Kind regards,
Angel