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?

Jawaban:


184

Anda sedang mencari {% raw %}tag.

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

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

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

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.


3

Ini bekerja di jekyll :

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.