Meloloskan diri dari tanda kurung kurawal ganda di dalam blok kode penurunan harga di Jekyll

89

Saya menggunakan Jekyll untuk membuat situs dokumentasi dimana saya mencoba mendokumentasikan beberapa kode yang berisi sintaks seperti setang. Misalnya {{foo}}. Masalahnya adalah Jekyll menggunakan tag cair dan apa pun yang saya lakukan, ikal ganda saya akan dicabut oleh prosesor cair.

Omong-omong, saya menggunakan kramdown sebagai pemroses penurunan harga.

Inilah yang saya coba:

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

Yang ini menghapus bagian {{name}} sepenuhnya karena dianggap sebagai referensi ke variabel cair.

Saya juga mencoba ini:

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

Dalam kasus ini, saya mencoba untuk melepaskan diri dari kurung kurawal tetapi hasilnya adalah garis miring dirender ke halaman.

Saya bahkan mencoba ini:

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

Memang yang satu ini cukup bodoh. Dalam kasus ini, karena saya telah menetapkan sintaks sebagai html (yang memang diperlukan), tag span dirender ke halaman.

Jadi bagaimana saya bisa menyelesaikan ini?

penyelamatan
sumber

Jawaban:

184

Anda sedang mencari {% raw %}tag.

{% raw %}
Hello, my name is {{name}}.
{% endraw %}
SLaks
sumber
6
Ah HAH! Anda adalah sahabat baru saya.
rescuecreative
Terima kasih, inilah yang saya inginkan.
wukong
Terima kasih ... ini membuatku gila.
learningMachine
Bagaimana jika kode yang ingin Anda esacape adalah {% raw %} {{...}} {% endraw %}seperti yang mungkin ditemukan dalam posting blog yang membahas subjek ini?
starfry
3
@starfry: Lucu kamu harus bertanya ... blog.slaks.net/2013-06-10/jekyll-endraw-in-code
SLaks
33

Anda dapat menggunakan {% raw %}untuk memastikan konten tidak dimodifikasi oleh Jekyll:

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

Namun, perhatikan bahwa ini bukan blok kode . Anda akan membutuhkan pemformatan kode tambahan untuk membuat konten Anda dirender sebagai kode:

{% 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
sumber
Terima kasih atas tambahan itu. Saya akhirnya melakukan sesuatu yang sedikit lebih buruk dari itu seperti {% raw %}{{ foo }}{% endraw %}untuk setiap kejadian jadi saya akan melihat apa yang Anda lakukan di sini.
penyelamatan
Ini adalah solusi yang lebih fleksibel, karena memungkinkan untuk mempertahankan blok kode dan sintaksnya.
Kiddo
20

Dengan jekyll kodenya adalah:

{% highlight html%}
{% raw %}
     <h2> {{ user.name.first | uppercase }}</h2>
     <p> {{ user.email }}</p>
{% endraw %}
{% endhighlight %}
Nicolas Molina
sumber
Ini adalah solusi yang tepat. Terima kasih!
Jerad Rutnam
perlu diperhatikan: Karya di atas, juga dengan penyorot Rouge. Namun mentah tidak berfungsi jika menggunakan sintaks berpagar untuk menyorot kode (tiga backticks utama seperti `` html ...)
Frank Nocke
5

Untuk referensi di masa mendatang: menggunakan biasa {% raw %}dan {% endraw %}hanya solusi terbaik kedua karena yang ditampilkan jika Anda mencari Penurunan Harga di github.com normal.

Cara terbaik adalah dengan meletakkan {% raw %}dan {% endraw %}di komentar HTML:

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

Karena komentar HTML itu dilihat oleh Github sebagai komentar. Di halaman Github, tag mentah akan mencegah penguraian tanda kurung kurawal di antara tag.

liquidat
sumber
3

Ini bekerja di jekyll :

{%raw%}{{thing}}{%endraw%}
Lisa Sinclair
sumber
FYI, saya menyertakan kutipan tiga belakang untuk menunjukkan bahwa blok kode dalam Jekyll akan berfungsi. Itu tidak dimaksudkan untuk membuat blok kode di balasan :)
Lisa Sinclair