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.