/hexo-renderer-pandoc

A pandoc-markdown-flavor renderer for hexo.

Primary LanguageJavaScriptMIT LicenseMIT

hexo-renderer-pandoc

npm npm

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.

Installation

  1. Firstly, make sure you have installed pandoc.
  2. Secondly, cd into your hexo root folder and execute the following command:
$ npm install hexo-renderer-pandoc --save

This will install hexo-renderer-pandoc.

Customization

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", ...] .

Credits

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.