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?

Antworten:


181

Sie suchen nach dem {% raw %}Tag.

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

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

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

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.


2

Dies funktioniert in Jekyll :

{%raw%}{{thing}}{%endraw%}

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.