在 Jekyll 的 Markdown 代码块中转义双花括号
Posted
技术标签:
【中文标题】在 Jekyll 的 Markdown 代码块中转义双花括号【英文标题】:Escaping double curly braces inside a markdown code block in Jekyll 【发布时间】: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 标签会呈现到页面中。
那么我到底该如何解决这个问题呢?
【问题讨论】:
【参考方案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 中的代码块可以工作。并不是要在回复中创建代码块 :)以上是关于在 Jekyll 的 Markdown 代码块中转义双花括号的主要内容,如果未能解决你的问题,请参考以下文章
Jekyll Markdown 处理器类似于 GitHub 风格的 Markdown
为具有嵌套标签的自定义标签编写 jekyll 插件时出现问题