Piecewise Readable Filter
This is a pandoc lua filter that manipulates fenced_divs in pandoc markdown.
Inspired by this joke(in chinese).
Example: example/What is a group.pdf
Useful refs:
- https://pandoc.org/lua-filters.html
- https://hackage-content.haskell.org/package/pandoc-types-1.23.1/docs/Text-Pandoc-Definition.html
How does this work?
filter.lua walks the AST. There are some special leaf nodes with a include attr which is a string containing labels of some other divs to be included here.
For each of include node i, we maintain a list fa[i] containing nodes with labels on the path i -> root. Then for each label l in i's include list, one can see that every node in fa[i] depends on l. Thus we build a digraph G on labels. If G is a DAG, then we can use topological sort to rank its vertices and thus decide the order of substitution; Otherwise, G contains a directed cycle, the filter reports an error.
Languages
Lua
82.6%
HTML
14.6%
Makefile
2.8%