2011-12-27 8 views
40

Sembra che l'evidenziazione della sintassi in Jekyll è limitato a usare i tag liquidi e pygments in questo modo:sintassi blocchi evidenziando codice Markdown a Jekyll (senza utilizzare i tag liquidi)

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

Ma ho importato il mio blog esistente da wordpress ed è stato scritto in markdown (usando blocchi di codice markdown) e non voglio dover passare per ogni post e correggere i blocchi di codice. Inoltre, voglio mantenere i miei post in puro formato di markdown nel caso in cui sia necessario cambiare di nuovo le piattaforme di blogging.

ho acceso il mio parser Jekyll al redcarpet con la speranza che ho potuto usare questa sintassi Markdown:

```bash 
cd ~ 
``` 

Ma non sembra funzionare. Lo avvolge semplicemente in un normale blocco code. Qualche idea?

+4

Ho appena notato questo biglietto aperto: https://github.com/mojombo/jekyll/issues/427 – markquezada

+0

Documentazione ufficiale: http://jekyllrb.com/docs/posts/#highlighting-code-snippets –

risposta

8

Ho finito per passare a kramdown per analizzare markdown che viene fornito con coderay per l'evidenziazione della sintassi. Questo ha il vantaggio di essere una soluzione di rubino puro che funziona su heroku.

+2

fa questo funziona con gh-pages di github? – cboettig

+5

Grazie. Sembra che kramdown non riconosca '' 'r, anche se riconosce blocchi recintati con tilde, ~~~. – cboettig

+0

@mirthlab sembra funzionare molto bene per matematica e codice, grazie –

20

Recintato blocchi were introduced con RedCarpet 2. Jekyll now supports RedCarpet 2.

Per inciso io sto usando RedCarpet con Rouge fino Kramdown support è disponibile.

Inoltre alcune persone preferiscono Nanoc a Jekyll.

+1

Ultimamente sto usando Nanoc e mi piace molto. –

15

soluzione alternativa

Markdown consente HTML, quindi se non ti dispiace l'aggiunta di un po 'di JS, si potrebbe fare questo:

## A section 

Here is some Ruby code. 

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

allora si potrebbe utilizzare Highlight.js (documentazione here) per aggiungere evidenziazione basata su quella classe.

Non è una soluzione ideale, ma dovrebbe funzionare con qualsiasi parser Markdown.

1

Negli ultimi blocchi di codice di supporto di jekyll, ma se si utilizza la versione precedente, è necessario eseguire l'hacking.

Che ne dici di seguito? Tenta di aggiungere sotto c'è file come _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 
3

Passaggio 1. Installazione Redcarpet.

gem install redcarpet 

Fase 2. Aggiornare le impostazioni di generazione nel _config.yaml come questo.

# Build settings 
#markdown: kramdown 
markdown: redcarpet 
1

RedCarpet è integrato integrato in Jekyll dalla funzione predefinita e il codice evidenziando come previsto.

Per anziani blog Jekyll:

  1. Installare gemma redcarpet:

    gem install redcarpet

  2. Aggiornamento _config.yaml

    markdown: redcarpet 
    

Per referenc E e ulteriori informazioni si veda:

Closed Github Issue

Updated Jekyll Codebase

0

così mi sono imbattuto in questo problema come bene e dopo sbattere la testa in giro un sacco di posti, infine, realizzati con il supporto ufficiale redcarpet2 a Jekyll questo è abbastanza semplice . Scrivi questo nella vostra _config.yml

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

Assicurarsi di avere pygments file CSS ed è incluso. QUESTO PASSO È IMPORTANTE.

Puoi leggere il mio post sul blog http://blog.championswimmer.in/2015/10/jekyllsyntax-highlighting-in-github-favoured-markdown-codeblocks/ per i dettagli.

+2

collegamento al post del blog è rotto – sieste