在 Jekyll 的一个减价代码块中逃避双花括号

我正在使用 Jekyll 创建一个文档站点,在这个站点中,我试图记录一些包含类似句柄的语法的代码。例如 {{foo}}。问题是 Jekyll 使用的是液体标签,不管我怎么做,我的双卷发都会被液体处理器扯掉。

顺便说一下,我用 Kramdown 作为降价处理器。

Here is something I've tried:

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

这个函数完全删除了{{ name }部分,因为它认为它是对液体变量的引用。

我还试过这个:

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

In this case, I'm trying to escape the curly braces but the result is that the slashes get rendered into the page.

我甚至试过这个:

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

不得不承认,这个很蠢。在这种情况下,因为我已经将语法指定为 html (这是必须的) ,所以 span 标记被呈现到页面中。

那我到底该怎么解决这个问题呢?

17474 次浏览

你在找 {% raw %}标签。

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

你可以使用 {% raw %}来确保内容不被 Jekyll 修改:

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

但是,请注意,这是 not a code block。您将需要额外的代码格式化,使您的内容呈现为代码:

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

这在 jekyll中是可行的:

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

对于将来的参考: 使用普通的 {% raw %}{% endraw %}只是第二个最好的解决方案,因为如果你在普通的 github.com 上查找 Markdown,就会看到这些解决方案。

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

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

由于 HTML 注释,Github 将其视为注释。在 Github 页面中,原始标记将阻止解析标记之间的花括号。