it-swarm.com.de

Syntaxhervorhebung von Markdown-Codeblöcken in Jekyll (ohne Verwendung von Liquid Tags)

Es scheint, dass die Syntaxhervorhebung in Jekyll auf die Verwendung von flüssigen Tags und Pygmenten wie folgt beschränkt ist:

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

Aber ich habe mein bestehendes Blog aus wordpress) importiert und es wurde in Markdown geschrieben (mit Markdown-Codeblöcken) und ich möchte nicht jeden Beitrag durchgehen und die Codeblöcke reparieren müssen. Außerdem möchte ich meine Posts im reinen Markdown-Format behalten, falls ich jemals wieder die Blogging-Plattform wechseln muss.

Ich habe meinen Jekyll-Parser auf redcarpet umgestellt, in der Hoffnung, dass ich diese Abschriftensyntax verwenden kann:

```bash
cd ~
```

Aber es scheint nicht zu funktionieren. Es wird einfach in einen normalen code -Block eingeschlossen. Irgendwelche Ideen?

43
markquezada

Am Ende habe ich auf kramdown umgeschaltet, um das mit coderay gelieferte Markdown für die Syntaxhervorhebung zu analysieren. Dies hat den Vorteil, dass es eine reine Ruby Lösung ist, die auf Heroku funktioniert.

9
markquezada

Eingezäunte Blöcke wurden mit Redcarpet 2 eingeführt . Jekyll unterstützt jetzt Redcarpet 2.

Nebenbei benutze ich Redcarpet mit Rouge , bis Kramdown-Unterstützung verfügbar ist .

Außerdem bevorzugen einige Leute Nanoc gegenüber Jekyll.

20
Steven Penny

Alternative Lösung

Markdown erlaubt HTML. Wenn es Ihnen also nichts ausmacht, ein bisschen JS hinzuzufügen, können Sie dies tun:

## A section

Here is some Ruby code.

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

Dann können Sie Highlight.js (documentation here ) verwenden, um Hervorhebungen basierend auf dieser Klasse hinzuzufügen.

Es ist keine ideale Lösung, sollte aber mit jedem Markdown-Parser funktionieren.

16
Nathan Long

Schritt 1. Installieren Sie Redcarpet .

gem install redcarpet

Schritt 2. Aktualisieren Sie die Build-Einstellungen in Ihrem _config.yaml so was.

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

In den neuesten Jekyll-Support-Code-Blöcken, aber wenn Sie eine ältere Version verwenden, müssen Sie hacken.

Wie wäre es unten? Versuchen Sie, die folgende Datei als _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 ist standardmäßig in Jekyll integriert und die Code-Hervorhebung funktioniert wie erwartet.

Für ältere Jekyll-Blogs:

  1. Installieren Sie redcarpet gem:

    gem install redcarpet

  2. Aktualisieren Sie _config.yaml

    markdown: redcarpet
    

Referenz und weitere Informationen finden Sie unter:

Closed Github Issue

Aktualisierte Jekyll-Codebasis

1
Matt Perejda

Also bin ich auch auf dieses Problem gestoßen und nachdem ich meinen Kopf durch viele Stellen geschlagen habe, die ich mit der offiziellen Unterstützung von redcarpet2 in Jekyll endlich erkannt habe, ist das ziemlich einfach. Schreiben Sie dies in Ihre _config.yml

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

Vergewissern Sie sich , dass Sie eine pygments css-Datei haben und diese enthalten ist. DIESER SCHRITT IS WICHTIG.

Sie können meinen Blog-Beitrag lesen http://blog.championswimmer.in/2015/10/jekyllsyntax-highlighting-in-github-favoured-markdown-codeblocks/ für Details.

0
Arnav Gupta

Sie können auch die Triple-Tilde-Syntax verwenden:

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

was von Kramdown (Jekyll) unterstützt wird.

0
Franklin Yu

Ich habe 2 alternative Lösungen zum Hinzufügen von richtig formatierten Code-Snippets zu Ihrer Jekyll-gesteuerten Site beschrieben. http://demisx.github.io/jekyll/2014/01/13/improve-code-highlighting-in-jekyll.html . Sie sind nicht auf Plugins von Drittanbietern angewiesen und mit dem kostenlosen Hosting von GitHub Pages kompatibel.

0
demisx