web-dev-qa-db-fra.com

Syntaxe surlignant les blocs de code de démarque dans Jekyll (sans utiliser de tags liquides)

Il semble que la mise en évidence de la syntaxe dans Jekyll se limite à l'utilisation de balises liquides et de pygments comme ceci:

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

Mais j'ai importé mon blog existant de wordpress et il a été écrit en markdown (en utilisant des blocs de code de markdown) et je ne veux pas avoir à parcourir chaque publication et corriger les blocs de code. En outre, je souhaite conserver mes publications au format de démarque pure au cas où j'aurais besoin de changer de plate-forme de blogage à nouveau.

J'ai changé mon analyseur Jekyll sur redcarpet dans l'espoir de pouvoir utiliser cette syntaxe de démarque:

```bash
cd ~
```

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

43
markquezada

J'ai fini par passer à kramdown pour analyser le markdown qui vient avec coderay pour la coloration syntaxique. Cela a l'avantage d'être une pure solution Ruby qui fonctionne sur heroku.

9
markquezada

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

En passant, j'utilise Redcarpet avec Rouge jusqu'à ce que support Kramdown soit disponible.

De plus, certaines personnes préfèrent Nanoc à Jekyll.

20
Steven Penny

Solution alternative

Markdown autorise 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 Highlight.js (documentation ici ) pour ajouter une surbrillance basée sur cette classe.

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

16
Nathan Long

Étape 1. Installer Redcarpet .

gem install redcarpet

Étape 2. Mettez à jour les paramètres de build dans votre _config.yaml comme ça.

# Build settings
#markdown: kramdown
markdown: redcarpet
4
kjtanaka

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 votre _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
mattn

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

Pour les blogs Jekyll plus anciens:

  1. Installez le joyau du tapis rouge:

    gem install redcarpet

  2. Mettre à jour _config.yaml

    markdown: redcarpet
    

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

Problème Github fermé

Base de code Jekyll mise à jour

1
Matt Perejda

J'ai donc rencontré ce problème également et après m'être cogné la tête dans de nombreux endroits, finalement réalisé avec le support officiel de redcarpet2 dans Jekyll, 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 IS IMPORTANT.

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

0
Arnav Gupta

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
Franklin Yu

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 reposent pas sur des plugins tiers et compatibles avec l'hébergement gratuit des pages GitHub.

0
demisx