La coloration syntaxique des blocs de code markdown dans Jekyll (sans utiliser de balises liquid)

Il semble que la coloration syntaxique dans Jekyll soit limitée à l'utilisation de balises liquides et de pygments comme ceci:

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

Mais j'ai importé mon blog existant à partir de wordpress et il a été écrit en markdown (en utilisant des blocs de code markdown) et je ne veux pas avoir à passer par chaque poste et réparer les blocs de code. En outre, je veux garder mes messages au format markdown pur au cas où j'aurais besoin de changer de plate-forme de blogging à nouveau.

J'ai changé mon analyseur Jekyll à redcarpet avec l'espoir que je pourrais utiliser cette syntaxe markdown:

```bash
cd ~
```

Mais ça ne semble pas marcher. Il l'enveloppe simplement dans un bloc code normal. Des idées?

40
demandé sur Steven Penny 2011-12-27 23:21:41

9 réponses

Blocs clôturés ont été introduits avec Redcarpet 2. Jekyll prend désormais en charge Redcarpet 2.

En aparté, J'utilise Redcarpet avec Rouge jusqu' Kramdown soutien est disponible.

En outre, certaines personnes préfèrent Nanoc à Jekyll.

20
répondu Steven Penny 2014-05-26 14:18:26

Solution alternative

Markdown permet le HTML, donc si cela ne vous dérange pas d'ajouter un peu de JS, vous pouvez le faire:

## A section

Here is some Ruby code.

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

Ensuite, vous pouvez utiliser mettre en Évidence.js (documentation ici ) pour ajouter une mise en surbrillance basée sur cette classe.

Ce n'est pas une solution idéale, mais cela devrait fonctionner avec n'importe quel analyseur Markdown.

15
répondu Nathan Long 2012-08-04 19:16:20

J'ai fini par commutation de kramdown pour analyser markdown qui est livré avec coderay pour la coloration syntaxique. Cela a l'avantage d'être une solution ruby pure qui fonctionne sur heroku.

8
répondu markquezada 2011-12-28 22:49:17

Étape 1. Installer Redcarpet.

gem install redcarpet

Étape 2. Mettez à jour les paramètres de construction dans votre _config.yaml comme ceci.

# Build settings
#markdown: kramdown
markdown: redcarpet
3
répondu kjtanaka 2015-03-18 05:12:53

Dans les derniers blocs de code de support Jekyll, mais si vous utilisez une version plus ancienne, vous devez pirater.

Que diriez-vous ci-dessous? Essayez d'ajouter le fichier ci-dessous en tant que _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
répondu mattn 2013-08-06 00:00:52

Redcarpet est intégré intégré dans Jekyll par défaut et la mise en surbrillance du code fonctionnera comme prévu.

Pour les anciens blogs Jekyll:

  1. Installer redcarpet gem:

    gem install redcarpet

  2. Mettre à jour _config.yaml

    markdown: redcarpet
    

Pour référence et plus d'informations, voir:

Problème Github Fermé

Mise À Jour Jekyll Code

1
répondu Matt Perejda 2015-09-29 01:32:32

J'ai décrit 2 solutions alternatives pour ajouter des extraits de code correctement formatés à votre site piloté par Jekyll. http://demisx.github.io/jekyll/2014/01/13/improve-code-highlighting-in-jekyll.html . ils ne comptent pas sur les plugins 3-ème partie et compatibles avec L'hébergement gratuit de Pages GitHub.

0
répondu demisx 2014-01-15 18:16:36

J'ai donc également rencontré ce problème et après m'être cogné la tête dans de nombreux endroits, j'ai finalement réalisé avec le support officiel de redcarpet2 à Jekyll que c'est assez simple. Écrivez ceci dans votre _config.yml

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

Assurez-vous que vous avez un fichier CSS pygments et qu'il est inclus. CETTE ÉTAPE EST IMPORTANTE.

Vous pouvez lire mon billet de bloghttp://blog.championswimmer.in/2015/10/jekyllsyntax-highlighting-in-github-favoured-markdown-codeblocks/ pour plus de détails.

0
répondu Arnav Gupta 2015-10-24 22:29:13

Vous pouvez également utiliser la syntaxe Triple-tilde:

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

Qui est pris en charge par Kramdown (Jekyll).

0
répondu Franklin Yu 2018-03-22 23:28:02