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?
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.
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.
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.
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
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:
-
Installer redcarpet gem:
gem install redcarpet
-
Mettre à jour _config.yaml
markdown: redcarpet
Pour référence et plus d'informations, voir:
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.
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.
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).