Doppelte geschweifte Klammern in einem Markdown-Codeblock in Jekyll

86

Ich verwende Jekyll, um eine Dokumentationssite zu erstellen, auf der ich versuche, Code zu dokumentieren, der eine Lenker-ähnliche Syntax enthält. Zum Beispiel {{foo}}. Das Problem ist, dass Jekyll flüssige Tags verwendet und egal was ich mache, meine doppelten Locken werden vom flüssigen Prozessor herausgerissen.

Übrigens verwende ich kramdown als Markdown-Prozessor.

Folgendes habe ich versucht:

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

Dieser entfernt den Abschnitt {{name}} vollständig, da er einen Verweis auf eine flüssige Variable darstellt.

Ich habe es auch versucht:

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

In diesem Fall versuche ich, den geschweiften Klammern zu entkommen, aber das Ergebnis ist, dass die Schrägstriche auf der Seite gerendert werden.

Ich habe es sogar versucht:

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

Zugegeben, dieser war ziemlich dumm. In diesem Fall wird das span-Tag auf der Seite gerendert, da ich die Syntax als HTML angegeben habe (was es sein muss).

Wie in aller Welt kann ich das lösen?

Rettungskreativ
quelle

Antworten:

181

Sie suchen nach dem {% raw %}Tag.

{% raw %}
Hello, my name is {{name}}.
{% endraw %}
SLaks
quelle
6
Ah HAH! Du bist mein neuer bester Freund.
Rettungskreativ
Danke, genau das will ich.
Wukong
Danke ... das hat mich verrückt gemacht.
learningMachine
Was ist, wenn der Code, dem Sie entkommen möchten, so ist, {% raw %} {{...}} {% endraw %}wie man ihn in einem Blog-Beitrag findet , der genau dieses Thema behandelt?
Sternenhimmel
3
@starfry: Lustig sollten Sie fragen ... blog.slaks.net/2013-06-10/jekyll-endraw-in-code
SLaks
32

Sie können verwenden, {% raw %}um sicherzustellen, dass der Inhalt von Jekyll nicht geändert wird:

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

Beachten Sie jedoch, dass dies kein Codeblock ist . Sie benötigen eine zusätzliche Code-Formatierung, damit Ihre Inhalte als Code gerendert werden:

{% 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 %}
Wilfred Hughes
quelle
Danke für diesen Zusatz. {% raw %}{{ foo }}{% endraw %}Am Ende habe ich für jedes Ereignis etwas Hässlicheres getan, also werde ich mir ansehen, was Sie hier getan haben.
Rettungskreativ
Dies ist eine flexiblere Lösung, da der Codeblock und seine Syntax beibehalten werden können.
Kiddo
19

Mit Jekyll lautet der Code:

{% highlight html%}
{% raw %}
     <h2> {{ user.name.first | uppercase }}</h2>
     <p> {{ user.email }}</p>
{% endraw %}
{% endhighlight %}
Nicolas Molina
quelle
Dies ist die genaue Lösung. Vielen Dank!
Jerad Rutnam
Bemerkenswert: Das oben genannte funktioniert auch mit Rouge Textmarker. Raw funktioniert jedoch nicht, wenn die eingezäunte Syntax zum Hervorheben von Code verwendet wird (drei führende Backticks wie `` `html…)
Frank Nocke
5

Für zukünftige Referenzen: Verwenden von plain {% raw %}und {% endraw %}ist nur die zweitbeste Lösung, da diese angezeigt werden, wenn Sie den Markdown auf normalem github.com nachschlagen.

Der beste Weg ist , zu setzen {% raw %}und {% endraw %}in HTML - Kommentaren:

<!-- {% raw %} -->
something with curlky brackets like { this } and { that }
<!-- {% endraw %} -->

Aufgrund der HTML-Kommentare wird es von Github als Kommentar angesehen. Auf Github-Seiten verhindern die unformatierten Tags das Parsen der geschweiften Klammern zwischen den Tags.

liquidat
quelle
2

Dies funktioniert in Jekyll :

{%raw%}{{thing}}{%endraw%}
Lisa Sinclair
quelle
Zu Ihrer Information, ich habe das Triple-Back-Zitat eingefügt, um zu demonstrieren, dass ein Codeblock in Jekyll funktionieren würde. Es war nicht beabsichtigt, einen Codeblock in der Antwort zu erstellen :)
Lisa Sinclair