2014-06-08 14 views
57

Sto usando Jekyll per creare un sito di documentazione in cui sto cercando di documentare un codice che contiene la sintassi simile al manubrio. Ad esempio {{foo}}. Il problema è che Jekyll usa tag liquidi e non importa quello che faccio, i miei doppi polimeri vengono strappati dal processore liquido.Escaping di doppie parentesi graffe all'interno di un blocco di codice markdown in Jekyll

A proposito, sto usando kramdown come processore di markdown.

Ecco qualcosa che ho provato:

{% highlight html linenos %} 
    Hello, my name is {{name}}. 
{% endhighlight %} 

Questo rimuove completamente il {} {nome} sezione perché pensa che sia un riferimento a una variabile di liquido.

Ho anche provato questo:

{% highlight html linenos %} 
    Hello, my name is \{\{name\}\}. 
{% endhighlight %} 

In questo caso, sto cercando di sfuggire alla parentesi graffe, ma il risultato è che le barre vengono resi nella pagina.

Ho provato anche questo:

{% highlight html linenos %} 
    Hello, my name is <span>{</span>{name}}. 
{% endhighlight %} 

Certo questo era abbastanza stupida. In questo caso, poiché ho specificato la sintassi come html (che deve essere), il tag span viene sottoposto a rendering nella pagina.

Quindi come diavolo posso risolvere questo?

risposta

118

Stai cercando il tag {% raw %}.

{% raw %} 
Hello, my name is {{name}}. 
{% endraw %} 
+1

Ah HAH! Sei il mio nuovo migliore amico. – rescuecreative

+0

Grazie, questo è esattamente quello che voglio. – wukong

+0

Grazie ... mi stava facendo impazzire. – learningMachine

19

È possibile utilizzare {% raw %} per garantire un contenuto non è stato modificato da Jekyll:

{% raw %} 
This is inserted literally: {{foo}} 
{% endraw %} 

Si noti tuttavia che non si tratta di un blocco di codice . Avrete bisogno di formattazione del codice aggiuntivo per rendere i contenuti di rendering come codice:

{% raw %} 
    I'm a code block, because I'm indented by 4 spaces 
{% endraw %} 
{% raw %} 
```handlebars 
I'm a code block that contains {{handlebars}} 
with highlighting. 
``` 
{% endraw %} 
+0

Grazie per l'aggiunta. Ho finito per fare qualcosa di un po 'più brutto di quello come '{% raw%} {{foo}} {% endraw%}' per ogni occorrenza, quindi darò un'occhiata a quello che hai fatto qui. – rescuecreative

+0

si! grazie!! – bordeltabernacle

+0

Questa è una soluzione più flessibile, in quanto consente di mantenere il blocco di codice e la sua sintassi. – Kiddo

12

Con Jekyll il codice è:

{% highlight html%} 
{% raw %} 
    <h2> {{ user.name.first | uppercase }}</h2> 
    <p> {{ user.email }}</p> 
{% endraw %} 
{% endhighlight %} 
+0

Questa è la soluzione esatta. Grazie! –