Github ароматизированный Markdown и пигменты, выделенные в Jekyll
Я развернул блог Jekyll на VPS. Теперь я хотел бы добавить к нему ярлык Github, используя подсветку Pygments, но я не знаю, какие файлы мне нужно редактировать и как.
Пока единственный файл, который я настроил, _config.yml
выглядит следующим образом:
1 safe: false
2 auto: false
3 server: false
4 server_port: 4000
5 baseurl: /
6 url: http://localhost:4000
7
8 source: .
9 destination: ./_site
10 plugins: ./_plugins
11
12 future: true
13 lsi: false
14 pygments: false
15 markdown: maruku
16 permalink: date
17
18 maruku:
19 use_tex: false
20 use_divs: false
21 png_engine: blahtex
22 png_dir: images/latex
23 png_url: /images/latex
24
25 rdiscount:
26 extensions: []
27
28 kramdown:
29 auto_ids: true,
30 footnote_nr: 1
31 entity_output: as_char
32 toc_levels: 1..6
33 use_coderay: false
34
35 coderay:
36 coderay_wrap: div
37 coderay_line_numbers: inline
38 coderay_line_numbers_start: 1
39 coderay_tab_width: 4
40 coderay_bold_every: 10
41 coderay_css: style
Как правильно настроить Jekyll для использования выделяемых Github Markdown и Pyigs?
Ответы
Ответ 1
Изменить: теперь проще
as от Jekyll >= 0.12.1 redcarpet2 поддерживается на основе Jekyll, поэтому вы можете просто установить свою конфигурацию на markdown: redcarpet
, и вам хорошо пойти с блоками кода GFM/fenced без остальной части этого mumbojumbo...
Оригинальный ответ
Вы явно запрашиваете уценку Github, поэтому я предполагаю, что вы не ищете ответы, которые создают кодовые блоки с немаркированным жидкостным форматом:
{% highlight python %}
def yourfunction():
print "Hello World!"
{% endhighlight %}
но скорее мог бы написать что-то с огороженными кодовыми блоками:
```python
def yourfunction():
print "Hello World!"
```
и т.д.. Для этого вам понадобится использовать синтаксический анализатор redcarpet.
Уценка Github-ароматизатора использует парсер разметки, называемый "Redcarpet" 1. По иронии судьбы, хотя уценка Github пригоняет redcarpet2, этот парсер по умолчанию не поддерживается Jekyll по умолчанию. Вместо этого вы можете добавить это как плагин, установив этот рубиновый камень
gem install redcarpet
а затем добавив redcarpet2 Jekyll plugin. (Установка плагина в Jekyll сводится к размещению .rb
ruby script, указанному в этом репозитории, в вашем каталоге _plugins
. Также может быть в подкаталоге _plugins
).
Затем, как описано в документации, отредактируйте свой _config.yml
, чтобы использовать redcarpet2:
markdown: redcarpet2
redcarpet:
extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "strikethrough", "superscript"]
который добавляет общие расширения, предоставляемые github-flavored-markdown aka redcarpet2 (ну, почти. Это не будет делать специфические уценки github, например, идентифицировать проблемы по числу или комментировать хеш, поэтому они не являются технически одинаковыми).
Наличие плагина означает, что на данный момент вам нужно будет создать свой сайт локально и скопировать _site
в github, если вы размещаете свой сайт там, так как redcarpet2 недоступен в версии Jythyl engine от Github (см. эту открытую проблему на Jekyll)
Примечание. Вам, кстати, не нужны все редакторы уценки, которые вы указали в своем _config.yml
. Для базового примера с использованием redcarpet2 вы можете увидеть этот config и связанный с ним каталог jekyll.
Ответ 2
Лучшие части Jekyll, как сказано здесь,
... Он принимает каталог шаблонов (представляющий необработанную форму веб-сайта), запускает его через Textile или Markdown и Liquid converters и выдает полный статический веб-сайт...
Это означает, что вы по умолчанию выделяете Markdown и pygments.
Вы можете отменить или использовать по умолчанию _config.yaml для этой настройки. С существующей конфигурацией вам может потребоваться установить pygments в true: pygments: true
.
Вот что вы делаете для
-
Markdown:
просто укажите свой файл как *.markdown, например 2012-12-01-my-post.markdown
и поместите его в корневую директорию. Обычно вы помещаете его в _posts.
Когда jekyll анализирует этот файл, он пройдет через фильтр разметки.
В качестве дополнительного бонуса вы можете сохранить как *.textile, и он анализирует с помощью textile. И, конечно, вы можете сохранить его .html, поэтому для уценки не выполняется синтаксический анализ.
-
pygments: просто сделайте это с помощью своего кода:
{% highlight python %}
def yourfunction():
print "Hello World!"
{% endhighlight %}
Вы также получаете простыни:
{% highlight python linenos %}
{% endhighlight %}
Изменить: а также Вам нужно создать таблицу стилей синтаксиса, используя команду
pygmentize -S default -f html > style.css
как упоминалось здесь и @joshuahornby10. Включите style.css в свой html, очевидно. Затем ваш код будет синтаксически выделен с помощью pygments.
О, и вам не нужно изменять какие-либо настройки в _config.yaml, чтобы это работало.
Просто запустите свой сайт с помощью jekyll --server --auto
и посмотрите, хорошо ли он выглядит.
Обратите внимание: при редактировании файла _config вам необходимо остановить автоматический запуск и повторить запуск jekyll для любых изменений.
Ответ 3
При изменении файла конфигурации
pygments: false
to
pygments: true
Это будет означать, что при написании разделов кода в файле уценки (отличный ресурс http://daringfireball.net/projects/markdown/) они будут использовать стиль пигментов. Убедитесь, что вы установили, это ошибка, которую я сделал. Также после его установки вам нужно будет создать файл css для стилизации (звучит очевидно, но я сделал эту ошибку)
pygmentize -S default -f html > stylesheets/pygments.css
Вы можете изменить значение по умолчанию для любой из тем, найденных здесь:
http://pygments.org/demo/35195/
Что касается уценки, я прочитал, что для того, чтобы заставить пигменты работать, вам нужно пометить, чтобы быть maruku, который вы уже настроили в файле конфигурации.
Надеюсь, что это поможет, я обнаружил, что Jekyll - это платформа для блогов, но очень документирована.