Ответ 1
В итоге я переключился на kramdown, чтобы проанализировать разметку, которая поставляется с coderay для синтаксиса подсветка. Это имеет преимущество быть чистым рубиновым решением, которое работает на герою.
Кажется, подсветка синтаксиса в Jekyll ограничена использованием жидких меток и таких же явлений:
{% highlight bash %}
cd ~
{% endhighlight %}
Но я импортировал свой существующий блог из Wordpress, и он был написан в методе уценки (с использованием блоков кода разметки), и я не хочу проходить через каждый пост и исправлять блоки кода. Кроме того, я хочу сохранить свои сообщения в чистом формате разметки, если мне когда-либо понадобится снова переключаться на платформы для ведения блога.
Я переключил свой парсер Jekyll на redcarpet
с надеждой на то, что я могу использовать этот синтаксис уценки:
```bash
cd ~
```
Но это не работает. Он просто обертывает его в нормальный блок code
. Любые идеи?
В итоге я переключился на kramdown, чтобы проанализировать разметку, которая поставляется с coderay для синтаксиса подсветка. Это имеет преимущество быть чистым рубиновым решением, которое работает на герою.
Огороженные блоки были добавлены с Redcarpet 2. Джекилл теперь поддерживает Redcarpet 2.
В качестве сторонника я использую Redcarpet с Rouge до Поддержка Kramdown доступен.
Кроме того, некоторые люди предпочитают Nanoc к Джекилу.
Markdown позволяет HTML, поэтому, если вы не возражаете добавить немного JS, вы можете сделать это:
## A section
Here is some Ruby code.
<pre>
<code class="ruby">
puts "hello"
</code>
</pre>
Затем вы можете использовать Highlight.js (документация здесь), чтобы добавить подсветку на основе этого класса.
Это не идеальное решение, но оно должно работать с любым анализатором Markdown.
Шаг 1. Установите Redcarpet.
gem install redcarpet
Шаг 2. Обновите настройки сборки в _config.yaml
следующим образом.
# Build settings
#markdown: kramdown
markdown: redcarpet
В последних блоках кода поддержки 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}</code></pre>"
end
old_convert(content)
end
end
end
Redcarpet интегрирован в Jekyll по умолчанию, и подсветка кода будет функционировать должным образом.
Для старших блогах Джекила:
Установите драгоценный камень redcarpet:
gem install redcarpet
Обновить _config.yaml
markdown: redcarpet
Для справки и дополнительной информации см.:
Я описал 2 альтернативных решения для добавления правильно отформатированных фрагментов кода на сайт Jekyll. http://demisx.github.io/jekyll/2014/01/13/improve-code-highlighting-in-jekyll.html. Они не полагаются на плагины 3-го лица и совместимы со свободным хостингом на странице GitHub.
Таким образом, я столкнулся с этой проблемой, и после того, как я ударил головой по множеству мест, наконец, с официальной поддержкой redcarpet2 в Jekyll, это довольно просто. Напишите это в _config.yml
# Conversion
markdown: redcarpet
highlighter: pygments
redcarpet:
extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "strikethrough", "superscript"]
Удостоверьтесь, что у вас есть файл cсий pygments, и он включен. ЭТОТ ШАГ ВАЖНО.
Вы можете прочитать мое сообщение в блоге http://blog.championswimmer.in/2015/10/jekyllsyntax-highlighting-in-github-favoured-markdown-codeblocks/ для деталей.