## 6.8.3 Renderer plugin

For our final example, we build a plugin which brings a new renderer. We will use as an example a renderer targetting Markdown. This is slightly silly since markdown itself is a source code format, and much cruder that LaTeX, but this is only an example.

The ‘__init__.py’ in ‘plastex_markdown_renderer’ is empty but the one in ‘Markdown’ contains

`from plasTeX.Renderers.PageTemplate import Renderer as PTRenderer class Renderer(PTRenderer): """Renderer targetting Markdown using templates.""" fileExtension = '.md'`

which simply declares a page template based renderer which will produce files with extension ‘.md’. The various files with ‘.jinja2s’ extension contain the following code split into three files for convenience:

`name: math displaymath {{ obj.mathjax_source }} name: document {{ obj }} name: section # {{ obj.fullTitle }} {{ obj }} name: subsection ## {{ obj.fullTitle }} {{ obj }} name: par {{ obj }} name: emph em *{{ obj }}* name: itshape textit *{{ obj }}* name: bfseries textbf **{{ obj }}** name: ttfamily texttt `{{ obj }}``

and the file ‘default-layout.jinja2’ simply contains one line saying `{{ obj }}`. This will allow to run

    plastex --plugins  plastex_markdown_renderer --renderer Markdown test.tex

to render a tiny subset of LaTeX to markdown.