В каждой культурной среде существуют свои определённые традиции. Например, хаскеллисты традиционно пишут туториалы по использованию монад. А пользователи jekyll традиционно пишут пост “Как включить подсветку кода”. Внесу же и я свою скромную лепту в общий культурно-гумусный слой.

По-умолчанию, jekyll уже поддерживает pygments, однако всё равно требуется проделать ряд телодвижений, чтобы код действительно стал подсвечиваться. Вот последовательность, которая помогла мне.

Сначала ставим pygments (если их ещё нет). Например, через кошерный pip:

$ pip install pygments

Не забываем также обновить свои гемы - старый liquid может работать некорректно ;)

$ yum update

Проверяем, что конфиг _config.yml содержит указание использовать pygments:

pygments: true

Создаём css-файл, который отвечает за стиль подсветки:

$ pygmentize -S trac -f html > stylesheets/pygments.css

Мне понравился стиль trac, и вы тоже можете поиграть с расцветкой кода:

$ ls /usr/share/pyshared/pygments/styles
__init__.py
autumn.py
borland.py
bw.py
colorful.py
default.py
emacs.py
friendly.py
fruity.py
manni.py
monokai.py
murphy.py
native.py
pastie.py
perldoc.py
tango.py
trac.py
vim.py
vs.py

Добавляем ссылку на созданный нами файл в свой лэйаут. Я не стал мудрить, и тупо вписал одну строку в _includes/themes/twitter/default.html туда же, где указаны прочие стили:

<link href="/stylesheets/pygments.css" rel="stylesheet">

На всякий случай исправляем дефолтный стиль в файле bootstrap.min.css, если у вас используется тема Twitter Bootstrap. Так рекомендуют здесь.

-code{padding:3px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;}
+code{padding:3px 4px;color:#d14;border:1px solid #e1e1e8;}

После этого всё должно работать.

Пример

Для подсветки надо использовать liquid-теги. Пишем в markdown-исходник страницы что-нибудь вида:

{% highlight c linenos %}
int main() {
    printf(“Hello\n”);
    return 0;
}
{% endhighlight %}

И получаем симпатичный кусок кода:

1
2
3
4
int main() {
    printf("Hello\n");
    return 0;
}

Если нам не нужна нумерация строк, то убираем слово linenos.

Ссылки

Главная ссылка: How to get Pygments to work with Jekyll



Published

09 August 2012

Tags