Jekyll'de bir markdown kod bloğu içinde çift küme parantezinden kaçış


89

Gidon benzeri sözdizimi içeren bazı kodları belgelemeye çalıştığım bir dokümantasyon sitesi oluşturmak için Jekyll kullanıyorum. Örneğin {{foo}}. Sorun şu ki, Jekyll sıvı etiketler kullanıyor ve ne yaparsam yapayım, çift kıvrımlarım sıvı işlemci tarafından koparılıyor.

Bu arada, markdown işlemcisi olarak kramdown kullanıyorum.

İşte denediğim bir şey:

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

Bu, {{isim}} bölümünü tamamen kaldırır çünkü bunun bir likit değişkene referans olduğunu düşünür.

Bunu da denedim:

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

Bu durumda, küme parantezlerinden kaçmaya çalışıyorum, ancak sonuç olarak eğik çizgiler sayfaya işleniyor.

Bunu bile denedim:

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

Kuşkusuz bu oldukça aptalcaydı. Bu durumda, sözdizimini html (olması gereken) olarak belirlediğim için, span etiketi sayfada işleniyor.

Peki bunu nasıl çözebilirim?

Yanıtlar:


184

{% raw %}Etiketi arıyorsunuz .

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

6
Ah HAH! Sen benim yeni en iyi arkadaşımsın
— rescuecreative

Teşekkürler, bu tam olarak istediğim şey.
— wukong

Teşekkürler ... bu beni deli ediyordu.
— learningMachine

Ya kaçmak istediğiniz kod, {% raw %} {{...}} {% endraw %}bu konuyu tartışan bir blog gönderisinde bulabileceğiniz gibiyse ?
— starfry

3
@starfry: Sorman gereken komik ... blog.slaks.net/2013-06-10/jekyll-endraw-in-code
— SLaks

33

{% raw %}İçeriğin Jekyll tarafından değiştirilmediğinden emin olmak için kullanabilirsiniz :

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

Ancak, bunun bir kod bloğu olmadığını unutmayın . İçeriğinizin kod olarak işlenmesini sağlamak için ek kod biçimlendirmesine ihtiyacınız olacak:

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

Eklediğiniz için teşekkürler. {% raw %}{{ foo }}{% endraw %}Her olayda olduğu gibi bundan biraz daha çirkin bir şey yaptım, bu yüzden burada ne yaptığına bir göz atacağım.
— rescuecreative

Bu, kod bloğunu ve sözdizimini korumaya izin verdiği için daha esnek bir çözümdür.
— Kiddo

20

Jekyll ile kod:

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

Kesin çözüm budur. Teşekkürler!
— Jerad Rutnam

kayda değer: Yukarıdakiler Rouge fosforlu kalemle de çalışır. (Üç lider backticks html ... `` `gibi) kod vurgulama için çit sözdizimi kullanılarak Ancak çiğ ancak değil çalışır
— Frank Nocke

5

Gelecekteki referanslar için: normal github.com'da Markdown'a bakarsanız gösterildiğinden, sade {% raw %}ve {% endraw %}yalnızca ikinci en iyi çözümdür.

En iyi yol, HTML yorumları koymak {% raw %}ve {% endraw %}eklemektir:

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

HTML yorumları nedeniyle Github tarafından yorum olarak görülür. Github sayfalarında ham etiketler, etiketler arasındaki süslü parantezlerin ayrıştırılmasını önleyecektir.


3

Bu jekyll'de çalışır :

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

Bilginize, Jekyll içindeki bir kod bloğunun çalışacağını göstermek için üçlü geri alıntıyı ekledim.
— Lisa Sinclair
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.