不知道如何关闭MD文件中的变量

时间:2018-11-06 21:24:33

标签: github build markdown github-pages readme

我的GitHub项目有问题。我正尝试在trustworthy.netlify.com上使其联机,但是存在页面构建错误:

  

您的站点在构建时遇到问题:函数/node_modules/balanced-match/README.md中第50行的变量{{a}未使用}}关闭。有关更多信息,请参见https://help.github.com/articles/page-build-failed-tag-not-properly-terminated/

我认为我可以在{a}之后添加“}}”,但这是它所指的代码行:

If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`.

我对Markdown语言或GitHub的了解不足,甚至不知道在哪里添加“}}”,而且我也不想在我的网站上无意中造成大问题。我该怎么办?

1 个答案:

答案 0 :(得分:2)

您需要使用{% raw %}{% endraw %}来转义模板语法。

Jekyll通过passes模板系统{@ 3}}将您的Markdown解析为Markdown。这使您可以在文档中定义变量,Liquid会将这些变量换成内容。然后,将现在完整的文档传递给Markdown解析器,以将其转换为HTML。

虽然当您想在文档中包括变量时很有用,但是当您想要在Markdown中包括诸如语法之类的模板作为代码样本时,这可能会很烦人。很容易假设由于模板语法在代码块或跨度中,因此将被忽略。但是,Liquid不了解Markdown语法,也无法说出实际模板变量和代码样本之间的区别。

在您的特定情况下,Liquid提出了一个错误,坚持要求{{a}应该是{{a}}。当然,这是不正确的。 {{a}只是Markdown中的代码示例。但是Jekyll从来没有去过Markdown解析器,因为它挂在Liquid视为模板语法错误的东西上了。因此,您需要使用Liquid的Liquid来告诉Liquid忽略代码示例:

{% raw %}
If the `str` contains more `a` than `b` / there are unmatched pairs, 
the first match that was closed will be used. For example, `{{a}` 
will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`.
{% endraw %}

通过将完整的段落包装在{% raw %}{% endraw %}标记中,我们告诉Liquid忽略内容,并将其原样传递。 Liquid将删除原始标签,Markdown解析器将收到您想要的内容。