2016-09-22 04:13:25 +02:00
---
title: "Markup: Syntax Highlighting"
excerpt: "Post displaying the various ways of highlighting code in Markdown."
2018-01-03 15:45:21 +01:00
last_modified_at: 2018-01-03T09:45:06-05:00
2016-09-22 04:13:25 +02:00
header:
2016-09-22 05:14:01 +02:00
teaser: "assets/images/markup-syntax-highlighting-teaser.jpg"
2016-09-22 04:13:25 +02:00
tags:
- code
- syntax highlighting
2017-10-20 20:54:06 +02:00
toc: true
2016-09-22 04:13:25 +02:00
---
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]
[^1]: < http: / / en . wikipedia . org / wiki / Syntax_highlighting >
### GFM Code Blocks
GitHub Flavored Markdown [fenced code blocks ](https://help.github.com/articles/creating-and-highlighting-code-blocks/ ) are supported. To modify styling and highlight colors edit `/_sass/syntax.scss` .
```css
#container {
float: left;
margin: 0 -240px 0 0;
width: 100%;
}
```
{% highlight scss %}
.highlight {
margin: 0;
padding: 1em;
font-family: $monospace;
font-size: $type-size-7;
line-height: 1.8;
}
{% endhighlight %}
```html
{% raw %}< 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 page.next %}
< a href = "{{ site.url }}{{ page.next.url }}" class = "btn" title = "{{ page.next.title }}" > Next article< / a >
{% endif %}
< / nav > <!-- /.pagination --> {% endraw %}
```
```ruby
module Jekyll
class TagIndex < Page
def initialize(site, base, dir, tag)
@site = site
@base = base
@dir = dir
@name = 'index.html'
self.process(@name)
self.read_yaml(File.join(base, '_layouts'), 'tag_index.html')
self.data['tag'] = tag
tag_title_prefix = site.config['tag_title_prefix'] || 'Tagged: '
tag_title_suffix = site.config['tag_title_suffix'] || '– '
self.data['title'] = "#{tag_title_prefix}#{tag}"
self.data['description'] = "An archive of posts tagged #{tag}."
end
end
end
```
### 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:
```ruby
def print_hi(name)
puts "Hi, #{name}"
end
print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.
```
3. Now you can do this.
2018-01-03 15:45:21 +01:00
### Jekyll Highlight Tag
An example of a code blocking using Jekyll's [`{% raw %}{% highlight %}{% endraw %}` tag ](https://jekyllrb.com/docs/templates/#code-snippet-highlighting ).
2018-01-05 02:46:10 +01:00
{% highlight javascript linenos %}
// 'gulp html' -- does nothing
// 'gulp html --prod' -- minifies and gzips HTML files for production
gulp.task('html', () => {
return gulp.src(paths.siteFolderName + paths.htmlPattern)
.pipe(when(argv.prod, htmlmin({
removeComments: true,
collapseWhitespace: true,
collapseBooleanAttributes: false,
removeAttributeQuotes: false,
removeRedundantAttributes: false,
minifyJS: true,
minifyCSS: true
})))
.pipe(when(argv.prod, size({title: 'optimized HTML'})))
.pipe(when(argv.prod, gulp.dest(paths.siteFolderName)))
.pipe(when(argv.prod, gzip({append: true})))
.pipe(when(argv.prod, size({
title: 'gzipped HTML',
gzip: true
})))
.pipe(when(argv.prod, gulp.dest(paths.siteFolderName)))
});
2018-01-03 15:45:21 +01:00
{% endhighlight %}
{% highlight wl linenos %}
Module[{},
Sqrt[2]
4
]
{% endhighlight %}
2016-09-22 04:13:25 +02:00
### GitHub Gist Embed
An example of a Gist embed below.
2017-07-07 21:33:19 +02:00
< script src = "https://gist.github.com/mmistakes/77c68fbb07731a456805a7b473f47841.js" > < / script >