Podświetlanie składni markdown bloków kodu w Jekyll (bez użycia znaczników liquid)

Wygląda na to, że podświetlanie składni w Jekyll jest ograniczone do używania znaczników liquid i pigmentów w ten sposób:

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

Ale zaimportowałem mój istniejący blog z WordPressa i został napisany w markdown (używając bloków kodu markdown) i nie chcę przechodzić przez każdy post i naprawiać bloki kodu. Chcę również zachować moje posty w czystym formacie markdown na wypadek, gdybym znowu musiał przełączyć platformy blogowe.

Zamieniłem mój Parser Jekyll na redcarpet z nadzieją, że mogę użyć składnia this markdown:

```bash
cd ~
```
Ale to chyba nie działa. Po prostu zawija go w normalny code blok. Jakieś pomysły?
Author: Steven Penny, 2011-12-27

9 answers

Ogrodzone bloki zostały wprowadzone z Redcarpet 2. Jekyll Teraz obsługuje Redcarpet 2

Na marginesie używam Redcarpet z Rouge do Obsługa Kramdown jest dostępny.

DODATKOWO niektórzy wolą Nanoc za Jekylla.

 20
Author: Steven Penny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-26 14:18:26

Alternatywne rozwiązanie

Markdown pozwala na HTML, więc jeśli nie masz nic przeciwko dodaniu trochę JS, możesz to zrobić:

## A section

Here is some Ruby code.

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

Wtedy możesz użyć podświetlenia.js (documentation here) aby dodać podświetlenie na podstawie tej klasy.

Nie jest to idealne rozwiązanie, ale powinno działać z każdym parserem Markdown.

 15
Author: Nathan Long,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-04 19:16:20

Skończyło się na przełączeniu na kramdown na parse markdown, który jest dostarczany z coderay do podświetlania składni. Ma to tę zaletę, że jest czystym rozwiązaniem ruby, które działa na heroku.

 8
Author: markquezada,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-28 22:49:17

Punkt 1. Install Redcarpet .

gem install redcarpet

Punkt 2. zaktualizuj ustawienia budowania w swoim _config.yaml w ten sposób.

# Build settings
#markdown: kramdown
markdown: redcarpet
 3
Author: kjtanaka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-18 05:12:53

W najnowszych blokach kodu jekyll wsparcie, ale jeśli używasz starszej wersji, trzeba włamać.

Może poniżej? Spróbuj dodać plik poniżej jako swój _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
 1
Author: mattn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-06 00:00:52

Redcarpet jest domyślnie zintegrowany z Jekyll i podświetlanie kodu będzie działać zgodnie z oczekiwaniami.

Dla starszych blogów Jekylla:

  1. Zainstaluj klejnot redcarpet:

    gem install redcarpet

  2. Update _config.yaml

    markdown: redcarpet
    

Dla odniesienia i dalszych informacji patrz:

Zamknięty Problem Z Githubem

Zaktualizowany Kod Jekyll

 1
Author: Matt Perejda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-29 01:32:32

Opisałem 2 alternatywne rozwiązania do dodawania poprawnie sformatowanych fragmentów kodu do witryny napędzanej Jekyll. http://demisx.github.io/jekyll/2014/01/13/improve-code-highlighting-in-jekyll.html . nie polegają na wtyczkach stron 3-rd i są kompatybilne z darmowym hostingiem stron GitHub.

 0
Author: demisx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-15 18:16:36

Więc wpadłem na ten problem, jak również i po walenie głową wokół wielu miejscach w końcu zdałem sobie sprawę z oficjalnego wsparcia redcarpet2 w Jekyll jest to dość proste. Zapisz to w swoim _config.yml

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

Upewnij się, że Masz plik pygments css i jest on dołączony. TEN KROK JEST WAŻNY.

Możesz przeczytać mój wpis na bloguhttp://blog.championswimmer.in/2015/10/jekyllsyntax-highlighting-in-github-favoured-markdown-codeblocks/{[9]po szczegóły.

 0
Author: Arnav Gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-24 22:29:13

Można również użyć składni triple-tilde:

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

, który jest obsługiwany przez Kramdown (Jekyll).

 0
Author: Franklin Yu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-22 23:28:02