hexo-renderer-pandoc
Yet another markdown renderer plugin for Hexo. It can converts Pandoc's markdown to HTML. If you want, it can also be a renderer for textile, reStructedText, etc.
- Firstly, make sure you have installed pandoc.
- Secondly,
cd
into your hexo root folder and execute the following command:
$ npm install hexo-renderer-pandoc --save
This will install hexo-renderer-pandoc.
hexo-renderer-pandoc can not only render markdown, but also supports textile, reStructedText and many other formats, due to the strong capability of pandoc.
By default, it only renders Pandoc-markdown. But if you want to make it be a textile renderer instead of a markdown renderer, simply modify the args from the index.js as:
var args = [ '-f', 'textile', '-t', 'html', '--mathjax', '--smart'];
and change the register line as:
hexo.extend.renderer.register('textile', 'html', pandoc);
You can pass additional arguments to pandoc through _config.yml
. The default configuration is:
pandoc:
filters:
extra:
template:
meta:
mathEngine:
filters
is a list of any pandoc filter installed on your path.extra
is a list of mappings:
extra:
- key: value
passed to pandoc as --key value
.
template
is a template file you wish to use when pandoc generates your posts:
template: dir/.../template.html
will be passed to pandoc as --template=dir/../template.html
The path of the template should be relative to the root of your blog.
For example, the very simple template
$if(toc)$
<div id="$idprefix$TOC">
$toc$
</div>
$endif$
$body$
prepends table of contents to all your posts if variable --toc
is also passed. To enable TOC, add to your _config.yml
:
pandoc:
# other options
extra:
- toc: # will be passed as `--toc`. Note the colon
template: dir/../template.html
meta
is a list of anything you wish to be sent to pandoc as meta:
meta:
- key: value1
- value2
would be passed as -M key=value1 -M value2
.
pandoc-citeproc
for example can be configured as:
pandoc:
filters:
- pandoc-citeproc
extra:
bibliography: "/path/to/bibfile.bib"
meta:
- suppress-bibliography
mathEngine
is an option for choosing math engine. By default, mathEngine is mathjax.
For example, if you want to use KaTeX, you can pass katex
to the mathEngine option:
pandoc:
mathEngine: katex
Then, the args of pandoc is this: [..., "--katex", ...]
.
I'd like to thank John MacFarlane for creating Pandoc and John Gruber for developing Markdown. Also, this work is based on @pvorb (Paul Vorbach) 's node-pdc wrapper for pandoc.