Подтвердить что ты не робот

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?

4b9b3361

Ответ 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 - это платформа для блогов, но очень документирована.