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

res*_*ive 73 markdown liquid jekyll kramdown

我正在使用Jekyll创建一个文档站点,其中我试图记录一些包含句柄式语法的代码.例如{{foo}}.问题是Jekyll使用液体标签,无论我做什么,我的双层玻璃都会被液体处理器撕掉.

顺便说一句,我使用kramdown作为降价处理器.

这是我尝试过的东西:

{% highlight html linenos %}
  Hello, my name is {{name}}.
{% endhighlight %}
Run Code Online (Sandbox Code Playgroud)

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

我也试过这个:

{% highlight html linenos %}
  Hello, my name is \{\{name\}\}.
{% endhighlight %}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我试图逃避花括号,但结果是斜杠被渲染到页面中.

我甚至试过这个:

{% highlight html linenos %}
  Hello, my name is <span>{</span>{name}}.
{% endhighlight %}
Run Code Online (Sandbox Code Playgroud)

不可否认,这个非常愚蠢.在这种情况下,因为我已将语法指定为html(它需要),所以span标记将呈现到页面中.

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

SLa*_*aks 155

你正在寻找{% raw %}标签.

{% raw %}
Hello, my name is {{name}}.
{% endraw %}
Run Code Online (Sandbox Code Playgroud)

  • 啊哈哈!你是我最好的朋友. (4认同)
  • @starfry:有趣的你应该问... http://blog.slaks.net/2013-06-10/jekyll-endraw-in-code/ (3认同)

Wil*_*hes 26

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

{% raw %}
This is inserted literally: {{foo}}
{% endraw %}
Run Code Online (Sandbox Code Playgroud)

但请注意,这不是代码块.您需要额外的代码格式才能使您的内容呈现为代码:

{% raw %}
    I'm a code block, because I'm indented by 4 spaces
{% endraw %}
Run Code Online (Sandbox Code Playgroud)
{% raw %}
```handlebars
I'm a code block that contains {{handlebars}}
with highlighting.
```
{% endraw %}
Run Code Online (Sandbox Code Playgroud)


小智 16

使用jekyll代码是:

{% highlight html%}
{% raw %}
     <h2> {{ user.name.first | uppercase }}</h2>
     <p> {{ user.email }}</p>
{% endraw %}
{% endhighlight %}
Run Code Online (Sandbox Code Playgroud)


小智 16

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

最好的方法是在 HTML 注释中添加{% raw %}and :{% endraw %}

<!-- {% raw %} -->
something with curlky brackets like { this } and { that }
<!-- {% endraw %} -->
Run Code Online (Sandbox Code Playgroud)

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


小智 8

这在jekyll中有效:

{%raw%}{{thing}}{%endraw%}
Run Code Online (Sandbox Code Playgroud)