Синтаксическая подсветка блоков кода уценки в Jekyll (без использования жидких тегов) - PullRequest
42 голосов
/ 27 декабря 2011

Кажется, что подсветка синтаксиса в Jekyll ограничена использованием жидких тегов и фрагментов, например:

{% highlight bash %}
cd ~
{% endhighlight %}

Но я импортировал свой существующий блог из WordPress, и он был написан в уценке (с использованием блоков кода уценки), и я не хочу проходить каждый пост и исправлять блоки кода. Кроме того, я хочу сохранить свои сообщения в чистом формате уценки на случай, если мне когда-нибудь снова понадобится переключать платформы для ведения блогов.

Я переключил свой анализатор Jekyll на redcarpet в надежде, что смогу использовать этот синтаксис уценки:

```bash
cd ~
```

Но, похоже, это не работает. Он просто оборачивается в обычный блок code. Есть идеи?

Ответы [ 9 ]

20 голосов
/ 20 февраля 2012

Огороженные блоки были введены с Redcarpet 2. Джекилл теперь поддерживает Redcarpet 2.

В качестве отступления я использую Redcarpet с Rouge до тех пор Поддержка Kramdown есть в наличии.

Кроме того, некоторые люди предпочитают Nanoc Джекиллу.

15 голосов
/ 04 августа 2012

Альтернативный раствор

Markdown разрешает HTML, поэтому, если вы не возражаете добавить немного JS, вы можете сделать это:

## A section

Here is some Ruby code.

<pre>
  <code class="ruby">
    puts "hello"
  

Тогда вы можете использовать Highlight.js (документация здесь ), чтобы добавить подсветку на основе этого класса.

Это не идеальное решение, но оно должно работать с любым анализатором Markdown.

8 голосов
/ 29 декабря 2011

В итоге я переключился на kramdown для анализа уценки, которая поставляется с coderay для подсветки синтаксиса.Преимущество этого решения в том, что он представляет собой чисто рубиновое решение, которое работает на герою.

4 голосов
/ 18 марта 2015

Шаг 1. Установка Redcarpet .

gem install redcarpet

Шаг 2. Обновите настройки сборки в _config.yaml следующим образом.

# Build settings
#markdown: kramdown
markdown: redcarpet
1 голос
/ 29 сентября 2015

Redcarpet по умолчанию интегрирован в Jekyll, и подсветка кода будет работать как положено.

Для старых блогов Jekyll:

  1. Установить gem redcarpet:

    gem install redcarpet

  2. Обновление _config.yaml

    markdown: redcarpet
    

Для справки и получения дополнительной информации см .:

Закрытый выпуск Github

Обновлена ​​база кодов Jekyll

1 голос
/ 15 октября 2012

В последних блоках кода поддержки jekyll, но если вы используете старую версию, вам нужно взломать.

Как насчет ниже? Попробуйте добавить файл ниже как ваш _plugin/triple-backtick.rb

module Jekyll
  class MarkdownConverter
    alias :old_convert :convert
    def convert(content)
      content.gsub!(/(?:^|\n)```(\w*)\n(.*\n)```\n/m) do |text|
        cls = $1.empty? ? "prettyprint" : "prettyprint lang-#{$1}"
        "<pre class=\"#{cls}\"><code>#{$2}
» конец old_convert (содержание) конец конец конец
0 голосов
/ 23 марта 2018

Вы также можете использовать синтаксис тройной тильды:

~~~ruby
class Base
  def two
    1 + 1
  end
end
~~~

, который поддерживается Kramdown (Jekyll).

0 голосов
/ 25 октября 2015

Итак, я столкнулся с этой проблемой, и после того, как я обошел многие места, наконец, понял, что с официальной поддержкой redcarpet2 в Jekyll, это довольно просто. Напишите это в своем _config.yml

# Conversion
markdown: redcarpet
highlighter: pygments
redcarpet:
  extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "strikethrough", "superscript"]

Убедитесь, что , что у вас есть файл Pygments CSS, и он включен. ЭТОТ ШАГ ВАЖЕН.

Подробнее об этом можно прочитать в моем блоге http://blog.championswimmer.in/2015/10/jekyllsyntax-highlighting-in-github-favoured-markdown-codeblocks/.

0 голосов
/ 15 января 2014

Я описал 2 альтернативных решения для добавления правильно отформатированных фрагментов кода на ваш сайт, управляемый Jekyll.http://demisx.github.io/jekyll/2014/01/13/improve-code-highlighting-in-jekyll.html. Они не используют сторонние плагины и совместимы с бесплатным хостингом GitHub Pages.

...