2014-06-08 8 views
57

Ich benutze Jekyll, um eine Dokumentationsseite zu erstellen, in der ich versuche, Code zu schreiben, der lenkerähnliche Syntax enthält. Zum Beispiel {{foo}}. Das Problem ist, dass Jekyll flüssige Etiketten verwendet und egal, was ich mache, werden meine doppelten Curlies vom Liquid-Prozessor herausgerissen.Zwei geschweifte Klammern in einem Markdown-Codeblock in Jekyll verschwinden

Übrigens verwende ich kramdown als Markdown-Prozessor.

Hier ist etwas, was ich versucht habe:

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

Dieses man die entfernt {{name}} Abschnitt vollständig, weil sie es ist ein Verweis auf eine Flüssigkeit Variable denkt.

Ich habe auch versucht dies:

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

In diesem Fall, ich versuche, die geschweiften Klammern zu entkommen, aber das Ergebnis ist, dass die Schrägstriche in die Seite gerendert bekommen.

ich dies auch versucht:

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

Zugegeben dies ein ziemlich dumm war. In diesem Fall, weil ich die Syntax als html angegeben habe (was es sein muss), wird das span-Tag in die Seite gerendert.

Also wie in der Welt kann ich das auflösen?

Antwort

118

Sie suchen nach dem {% raw %} Tag.

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

Ah HAH! Du bist mein neuer bester Freund. – rescuecreative

+0

Danke, das ist genau das, was ich will. – wukong

+0

Danke ... das hat mich verrückt gemacht. – learningMachine

19

können Sie {% raw %} verwenden unmodifizierten Gehalt von Jekyll zu gewährleisten:

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

Beachten Sie jedoch, dass dies kein Codeblock. Sie werden zusätzliche Code-Formatierung benötigen, um Ihre Inhalte als Code machen zu machen:

{% 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

Danke für diesen Zusatz. Am Ende habe ich etwas hässlicheres gemacht als '' {% row%} {{foo}} {% endraw%} 'für jedes Vorkommen, also werde ich mir ansehen, was du hier gemacht hast. – rescuecreative

+0

ja! Danke!! – bordeltabernacle

+0

Dies ist eine flexiblere Lösung, da der Codeblock und seine Syntax beibehalten werden können. – Kiddo

12

Mit jekyll der Code:

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

Dies ist die genaue Lösung. Vielen Dank! –