在Jekyll的markdown代码块中转义双大括号


86

我正在使用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标签将呈现到页面中。

那么,我该如何解决这个问题?

Answers:


181

您正在寻找{% raw %}标签。

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

6
啊哈!你是我的新好朋友。

谢谢,这正是我想要的。
wu14 2014年

谢谢...这让我发疯。
learningMachine

如果您想要使代码变得{% raw %} {{...}} {% endraw %}像在讨论此主题的博客文章中可能找到的那样,该怎么办?
starfry

3
@starfry:有趣的是,你应该问... blog.slaks.net/2013-06-10/jekyll-endraw-in-code
SLaks

33

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

感谢您的补充。最终,我{% raw %}{{ foo }}{% endraw %}每次都做了比这更丑的事情,所以我来看看你在这里做了什么。
救援creativecreative'6

这是一种更灵活的解决方案,因为它允许保留代码块及其语法。
Kiddo

19

使用jekyll的代码是:

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

这是确切的解决方案。谢谢!
杰拉德·鲁特南

值得注意的是:以上作品,同样带有胭脂荧光笔。但是,如果使用围栏语法突出显示代码,则raw无法正常工作(三个前导反引号,例如```html…)
Frank Nocke

5

供将来参考:使用plain{% raw %}{% endraw %}仅是第二好的解决方案,因为如果您在普通的github.com上查找Markdown,则会显示出最佳解决方案。

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

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

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


2

这在jekyll中起作用:

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

仅供参考,我在三引号后面加了引号,以说明Jekyll中的代码块可以工作。并不是要在回复中创建代码块:)
Lisa Sinclair,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.