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.