Markup: Syntax Highlighting

Syntax highlighting is a feature that displays source code, in different colors and fonts according to the category of terms. This feature facilitates writing in a structured language such as a programming language or a markup language as both structures and syntax errors are visually distinct. Highlighting does not affect the meaning of the text itself; it is intended only for human readers.1

GFM Code Blocks

GitHub Flavored Markdown fenced code blocks are supported by default with Jekyll. You may need to update your _config.yml file to enable them if you’re using an older version.

  input: GFM

Here’s an example of a CSS code snippet written in GFM:

#container {
  float: left;
  margin: 0 -240px 0 0;
  width: 100%;

Yet another code snippet for demonstration purposes:

module Jekyll
  class TagIndex < Page
    def initialize(site, base, dir, tag)
      @site = site
      @base = base
      @dir = dir
      @name = 'index.html'
      self.read_yaml(File.join(base, '_layouts'), 'tag_index.html')['tag'] = tag
      tag_title_prefix = site.config['tag_title_prefix'] || 'Tagged: '
      tag_title_suffix = site.config['tag_title_suffix'] || '&#8211;'['title'] = "#{tag_title_prefix}#{tag}"['description'] = "An archive of posts tagged #{tag}."

Jekyll Highlight Liquid Tag

Jekyll also has built-in support for syntax highlighting of code snippets using either Rouge or Pygments, using a dedicated Liquid tag as follows:

{% highlight scss %}
.highlight {
  margin: 0;
  padding: 1em;
  font-family: $monospace;
  font-size: $type-size-7;
  line-height: 1.8;
{% endhighlight %}

And the output will look like this:

.highlight {
  margin: 0;
  padding: 1em;
  font-family: $monospace;
  font-size: $type-size-7;
  line-height: 1.8;

Here’s an example of a code snippet using the Liquid tag and linenos enabled.

<nav class="pagination" role="navigation">
  {% if page.previous %}
    <a href="{{ site.url }}{{ page.previous.url }}" class="btn" title="{{ page.previous.title }}">Previous article</a>
  {% endif %}
  {% if %}
    <a href="{{ site.url }}{{ }}" class="btn" title="{{ }}">Next article</a>
  {% endif %}
</nav><!-- /.pagination -->

Code Blocks in Lists

Indentation matters. Be sure the indent of the code block aligns with the first non-space character after the list item marker (e.g., 1.). Usually this will mean indenting 3 spaces instead of 4.

  1. Do step 1.
  2. Now do this:

    def print_hi(name)
      puts "Hi, #{name}"
    #=> prints 'Hi, Tom' to STDOUT.
  3. Now you can do this.

GitHub Gist Embed

GitHub Gist embeds can also be used:

<script src=""></script>

Which outputs as: