Clone this wiki locally
Pandoc provides an interface for users to write programs (known as filters) which act on the intermediate AST. A tutorial about filters can be found here.
This page collects together third party filters which can be used to add functionality to pandoc.
Filters can be written in any programming language. Pandoc wrappers and interfaces are available in the following programming languages to facilitate modification of the AST:
|Python||pandocfilters||a library for writing pandoc filters in python.|
|Python||panflute||a pythonic alternative to
|PHP||pandocfilters-php||a port of the python pandocfilters module to PHP to make writing filters in PHP easier.|
|Perl||Pandoc::Elements||a CPAN module for writing pandoc filters in Perl.|
|Groovy||groovy-pandoc||a library for writing Pandoc filters in Groovy.|
- vimhl, a vim plugin that makes vim syntax highlighting engine available in pandoc.
- pandoc-jats, a Lua custom writer for Pandoc generating JATS XML.
The following is a list of some known 3rd party filters:
- Images related:
- Numbering related:
Numerical reference to sections, using a specified sign (by default
#) in internal links. Metadata can configure special sign and whether links should be preserved or converted to plain text.
- pandoc-fignos, for numbering figures and figure references.
- pandoc-eqnos, for numbering equations and equation references.
- pandoc-tablenos, for numbering tables and table references.
- pandoc-crossref, for numbering and cross-referencing figures, equations and tables
- pandoc-numbering, for numbering and cross-referencing any kinds of things such as examples, theorems, exercises and so on
- pandoc-listof, for creating lists of any kinds
- pandoc-amsthm: a pandoc amsthm package to define the use of amsthm through YAML front matter, target at HTML and LaTeX outputs. For HTML, CSS counter is used and defined in a template (by the YAML variables). For LaTeX amsthm package is used and defined in a template (by the YAML variables).
- Numerical reference to sections, using a specified sign (by default
- LaTeX related:
- Using markdown inside raw latex commands
pandoc-latex-environment, for adding LaTeX environment on specific HTML
latexdivs.py: define a syntax to turn any native pandoc Divs into a LaTeX environment: if
latex="true"is in the attribute of the Div, the first class is used to define the LaTeX environment.
pandoc-latex-tip, for decorating specific HTML
spantags by icons taken from the Font-Awesome icons collection
- asciimathml-pandocfilter: to add read support for AsciiMathML syntax through conversion into LaTeX
- pandoc-latex-barcode: insert a barcode or a QR code into a latex/PDF document.
- RAW related:
Pandoc filter to insert arbitrary raw output markup as Code/CodeBlocks with an attribute raw=.: Pandoc filter to insert arbitrary raw output markup as Code/CodeBlocks with an attribute
- Include Files: finds all the inline code blocks with attribute include, and replaces their contents with the contents of the file given
- pandoc-doc2tex-filter - a filter that converts dot notation to PGF/TikZ graphics for latex/pdf rendering.
- HTML comment to LaTeX comment: a filter that converts HTML comment to LaTeX comments
- Pandoc filter to insert arbitrary raw output markup as Code/CodeBlocks with an attribute raw=.: Pandoc filter to insert arbitrary raw output markup as Code/CodeBlocks with an attribute
- Tables related:
- pandoc-csv2table for including referenced csv files in markdown as markdown rendered tables.
pandoc-placetable lightweight implementation of the idea behind the above
pandoc-csv2table(e.g. doesn't necessarily require pandoc as a cabal dependency)
- ickc/pantable: CSV Tables in Markdown: Pandoc Filter for CSV Tables: a Python alternatives to the above 2 filters, using panflute, with some enhancements (e.g. auto-width, fractional width, etc.)
- Creating a link table at the end of your document.
Adding support for indexing with the syntax
(# term, subterm)in html and latex
- Adding non-breaking spaces inside a URL to preserve formatting
- lablinkfix updates links to the Swedish Labour Movement Archives and Library catalogues.
datemetadata to a different strftime format using python's dateutil.
- pandoc-abbreviations allows the use of arbitrary abbreviations, defined in an abbreviations file or in the source document's YAML header, which are replaced on processing. Useful for maintaining consistency of terminology etc.
- Adding support for indexing with the syntax