【问题标题】:Escaping double curly braces inside a markdown code block in Jekyll在 Jekyll 的 Markdown 代码块中转义双花括号
【发布时间】:2014-07-28 22:39:08
【问题描述】:

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

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

【问题讨论】:

    标签: markdown jekyll liquid kramdown


    【解决方案1】:

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

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

    【讨论】:

    • 如果您想转义的代码是 {% raw %} {{...}} {% endraw %},正如人们在讨论这个主题的博文中可能发现的那样,该怎么办?
    • @starfry:有趣的是你应该问...blog.slaks.net/2013-06-10/jekyll-endraw-in-code
    【解决方案2】:

    您可以使用{% 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 %} 更丑的事情,所以我会看看你在这里做了什么。
    • 这是一个更灵活的解决方案,因为它允许保留代码块及其语法。
    【解决方案3】:

    使用 jekyll 的代码是:

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

    【讨论】:

    • 值得注意的是:上述作品,也适用于胭脂荧光笔。但是,如果使用防护语法来突出显示代码(三个前导反引号,如 ```html ...),则 raw 不起作用
    【解决方案4】:

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

    最好的办法是把{% raw %}{% endraw %}放在HTML cmets中:

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

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

    【讨论】:

      【解决方案5】:

      这适用于 jekyll

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

      【讨论】:

      • 仅供参考,我包含了三重反引号来证明 Jekyll 中的代码块可以工作。并不是要在回复中创建代码块 :)
      猜你喜欢
      • 2015-11-23
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多