Подсветка с помощью Jekyll и pygments не работает

Я хочу использовать фрагменты с Джекилом

У меня есть следующий код:

{% highlight java %}
NullPointerException at org.springframework.core.GenericTypeResolver.getTypeVariableMap
{% endhighlight %}

Когда я создаю свой сайт с jekyll --pygments, результат HTML:

<div>
  <pre><code class="java">NullPointerException at org.springframework.core.GenericTypeResolver.getTypeVariableMap</code>
  </pre>
</div>

В этом html-выводе нет ожидаемого <span class="n"> или же <span class="s2"> теги, а код не подсвечивается.

Я делаю что-то неправильно?

2 ответа

Решение

Вам нужно сгенерировать CSS, чтобы выделить.

$ pygmentize -S default -f html > css/pygments/default.css

В качестве альтернативы отдельной установке фрагментов и генерации CSS, вы можете напрямую извлечь CSS из документации Jekyllrb здесь

Прямая ссылка, извлеченная из упомянутой выше документации, находится здесь: https://github.com/mojombo/tpw/blob/master/css/syntax.css

(Это официальная версия авторов на GitHub)

Файл называется syntax.css, поместите его в папку css и создайте относительную ссылку на таблицу стилей в заголовке любого / всех файлов, чтобы включить подсветку синтаксиса.

Это можно сделать как таковой, например, я поместил его в head.html или же css.html где у меня есть все относительные ссылки, это в _include папка, поэтому она включается во все макеты, которые ее используют:

<link rel="stylesheet" href="/css/syntax.css">

Вам также может понадобиться добавить это к вашему _config.yml:

highlighter: pygments

Протестировано для работы на Jekyll, а также на страницах GitHub (что является особенным, поскольку допускает только очень ограниченный набор плагинов)

Соответствующий вопрос SO, который также помог мне найти правильное решение, находится здесь. Я также был озадачен, почему мой код до сих пор не выделен в шаблоне, который я переношу, даже после добавления строки в _config.yml, Причина, по которой он работает на автоматически сгенерированном сайте Jekyll при выполнении jekyll new test-site потому что сгенерированный шаблон уже включает SASS (.scss) для подсветки синтаксиса (в _sass каталог), который помогает сгенерировать все это в один main.css,

Другие вопросы по тегам