Kramdown + Pygments + Typogruby for Jekyll
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Unleash the power of Kramdown with Pygments and Typogruby in Jekyll.

If you want to know, read why it is such a good idea to use Kramdown with Pygments.


Add krampygs.rb to your _plugins directory, and the following lines

markdown_ext: foo
markdown: kramdown
pygments: true

to your _config.yml. The bogus foo extension is a workaround to get Jekyll ignore its own Markdown converters and use instead the custom converter provided (which explicitly looks for .md files).

Code in your pages can now be syntax highlighted using the power of Pygments.

For example fenced code

~~~ ruby
print "Hello World"

Or inline code like this: `\section{foo}`{:.language-latex}

You can also define a global default for a whole site adding

  default_lang: python

to your _config.yml; or, for a single page, by adding something like

{::options coderay_default_lang="fortran" /}

near the top of a page. (No, coderay is not being used, but that was the easiest hack I could find to get the value of the option into Kramdown.)

Github flavor markdown syntax is also supported by adding

  input: GFM

to your _config.yml. For example GFM code

print "Hello World"

Tested with

  • ruby 2.0.0p247
  • jekyll (1.1.2)
  • kramdown (1.1.0)
  • pygments.rb (0.5.2)
  • typogruby (1.0.15)


To Matthias for his initial plugin idea, and his help getting it fixed to work with Jekyll 1.x.