在Jekyll的markdown代码块中转换双花括号

时间:2014-06-08 02:33:58

标签: markdown jekyll liquid kramdown

我正在使用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标记会被渲染到页面中。

那么我可以如何解决这个问题?

5 个答案:

答案 0 :(得分:140)

您正在寻找{% raw %}代码。

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

答案 1 :(得分:23)

您可以使用{% 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 %}

答案 2 :(得分:15)

使用jekyll代码是:

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

答案 3 :(得分:1)

这在 jekyll 中有效:

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

答案 4 :(得分:0)

供以后参考:使用普通的{% raw %}{% endraw %}只是第二好的解决方案,因为如果您在普通的github.com上查看Markdown,则会显示这些解决方案。

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

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

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