簡體   English   中英

在 Jekyll 中的 Markdown 代碼塊中轉義雙花括號

[英]Escaping double curly braces inside a markdown code block in Jekyll

我正在使用 Jekyll 創建一個文檔站點,我試圖在其中記錄一些包含類似把手語法的代碼。 例如{{foo}} 問題是 Jekyll 使用液體標簽,無論我做什么,我的雙卷發都會被液體處理器撕掉。

順便說一下,我使用 kramdown 作為降價處理器。

這是我嘗試過的東西:

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

這個完全刪除了 {{name}} 部分,因為它認為它是對液體變量的引用。

我也試過這個:

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

在這種情況下,我試圖轉義花括號,但結果是斜線被渲染到頁面中。

我什至試過這個:

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

不可否認,這個人非常愚蠢。 在這種情況下,因為我已將語法指定為 html(它需要如此),所以 span 標記會呈現到頁面中。

那么我到底該如何解決這個問題呢?

您正在尋找{% raw %}標簽。

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

你可以使用{% raw %}來確保內容不被 Jekyll 修改:

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

但是,請注意,這不是代碼塊 您將需要額外的代碼格式來使您的內容呈現為代碼:

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

使用 jekyll 的代碼是:

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

供將來參考:使用普通的{% raw %}{% endraw %}只是第二好的解決方案,因為如果您在正常的 github.com 上查找 Markdown,則會顯示這些。

最好的方法是將{% raw %}{% endraw %}放在 HTML 注釋中:

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

由於 HTML 注釋,Github 將其視為注釋。 在 Github 頁面中,原始標簽將阻止解析標簽之間的大括號。

這適用於jekyll

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM