tree: 05c231faa758a0be74ccfd797c8b1a3d2c62b9a5 [path history] [tgz]
  1. kramdown_pygments.rb

Kramdown with Pygments

A Jekyll plugin that enables Pygments syntax highlighting for Kramdown-parsed fenced code blocks. Heavily based on krampygs, but refactored to make it work with Jekyll 2.*.

In the standard setup, Jekyll Kramdown only works with Pygments for syntax highlighting when you use Liquid tags. This plugin makes Kramdown also use Pygments when using fenced code blocks. That way you can use more Markdown and less Liquid. Yay!


  • Clone this project into your _plugins directory.
  • Add the following lines to your _config.yml
markdown: KramdownPygments

Fenced code blocks can now be syntax highlighted using the power of Pygments.

print "Hello World"

The same goes for inline code:

You could also do something like this: `var foo = 'bar'`{:.language-javascript}. Amazing!

Setting the default language

If you don't want to set the language for inline code blocks like that every time, you can define a global default language for the entire site in your _config.yml

  default_lang: php

If you want to override that for a single page, add the following at the top of that page, but below the front-matter

{::options kramdown_default_lang="php" /}


This plugin supports all options that the original kramdown converter supports:

  auto_ids: true
  footnote_nr: 1
  entity_output: as_char
  toc_levels: 1..6
  smart_quotes: lsquo,rsquo,ldquo,rdquo
  input: GFM

Tested with

  • kramdown 1.4.0
  • pygments.rb 0.6.0
  • jekyll 2.1.1
  • ruby 2.0.0p451


This plugin is heavily based on krampygs. Thanks to @navarroj for developing the original plugin.