如何将此代码插入到hexo markdown中?

时间:2016-02-16 19:14:10

标签: markdown hexo

我无法将这段代码插入Hexo .md降价页面。

<div class="container">
  <h1>Works</h1>
  <ul class="row-fluid block-grid-4">
  {{#each model as |w index|}}
    <li>
      <h5>{{w.title}}</h5>
      <p>Owner: {{w.owner}}</p>
      <p>{{#link-to "work" w.id}}<img class="img-responsive img-rounded" src={{w.image}} alt={{w.title}}>{{/link-to}}</p>
    </li>
  {{/each}}
  </ul>
</div>

我认为缩进4个空格就够了,但我总是遇到这个错误。

INFO  Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop.
Unhandled rejection Template render error: unexpected token: #
    at Error.exports.TemplateError (/opt/www/jusfeel/node_modules/nunjucks/src/lib.js:51:19)
    at Object.extend.fail (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:64:15)
    at Object.extend.parsePrimary (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:947:18)
    at Object.extend.parseUnary (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:882:25)
    at Object.extend.parsePow (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:856:25)
    at Object.extend.parseMod (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:844:25)
    at Object.extend.parseFloorDiv (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:832:25)
    at Object.extend.parseDiv (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:820:25)
    at Object.extend.parseMul (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:808:25)
    at Object.extend.parseSub (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:796:25)
    at Object.extend.parseAdd (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:784:25)
    at Object.extend.parseCompare (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:751:25)
    at Object.extend.parseIn (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:720:23)
    at Object.extend.parseNot (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:716:21)

如果我转义哈希值(\#),我收到了新的错误:

FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
Template render error: expected variable end
    at Error.exports.TemplateError (/opt/www/jusfeel/node_modules/nunjucks/src/lib.js:51:19)
    at Object.extend.fail (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:64:15)
    at Object.extend.advanceAfterVariableEnd (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:133:18)
    at Object.extend.parseNodes (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:1159:22)
    at Object.extend.parseAsRoot (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:1177:42)
    at Object.module.exports.parse (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:1199:18)
    at Object.module.exports.compile (/opt/www/jusfeel/node_modules/nunjucks/src/compiler.js:1118:48)
    at Obj.extend._compile (/opt/www/jusfeel/node_modules/nunjucks/src/environment.js:444:35)
    at Obj.extend.compile (/opt/www/jusfeel/node_modules/nunjucks/src/environment.js:433:18)
    at null.<anonymous> (/opt/www/jusfeel/node_modules/nunjucks/src/environment.js:378:22)
    at Object.exports.withPrettyErrors (/opt/www/jusfeel/node_modules/nunjucks/src/lib.js:24:16)
    at Obj.extend.render (/opt/www/jusfeel/node_modules/nunjucks/src/environment.js:374:20)
    at Obj.extend.renderString (/opt/www/jusfeel/node_modules/nunjucks/src/environment.js:261:21)
    at /opt/www/jusfeel/node_modules/hexo/lib/extend/tag.js:56:9

这非常令人沮丧。想想如果我想将一些代码复制并粘贴到页面中,但我必须手动修复它。

另外,我无法使用{% raw %},因为我复制的代码不是原始的(&gt;相似)

1 个答案:

答案 0 :(得分:2)

两个相关错误都是TemplateError,与Markdown无关。它将appear Hexo支持在Markdown文档中使用模板标记。当然,模板标签不是Markdown的一部分。据推测,Hexo通过模板引擎运行Markdown文档,首先处理模板标签,然后通过Markdown传递模板引擎的输出。

当然,模板引擎对Markdown一无所知,或者某些文本是否在代码块中。因此,它试图解析包含一些模板标记语法的代码块,并且(正确地)引发错误,因为代码不是有效的模板。就个人而言,我个人从来不喜欢这样做的工具。它几乎不可能在Markdown代码块中包含样本模板代码。

我说几乎不可能,因为它有可能,它只是不方便。您需要转义模板语法。作为docs州:

  

如果某些内容导致帖子中出现处理问题,请使用raw标记进行包装以避免呈现错误。

{% raw %}
<div class="container">
  <h1>Works</h1>
  <ul class="row-fluid block-grid-4">
  {{#each model as |w index|}}
    <li>
      <h5>{{w.title}}</h5>
      <p>Owner: {{w.owner}}</p>
      <p>{{#link-to "work" w.id}}<img class="img-responsive img-rounded" src={{w.image}} alt={{w.title}}>{{/link-to}}</p>
    </li>
  {{/each}}
  </ul>
</div>
{% endraw %}

模板引擎现在将跳过块,忽略它,同时删除raw标记,以便Markdown解析器可以正确解析Markdown。

或者......根据#1404#1372,受防护的代码块也可以使用。而不是缩进你的代码块,将其包装在反引号中:

```
<div class="container">
  <h1>Works</h1>
  <ul class="row-fluid block-grid-4">
  {{#each model as |w index|}}
    <li>
      <h5>{{w.title}}</h5>
      <p>Owner: {{w.owner}}</p>
      <p>{{#link-to "work" w.id}}<img class="img-responsive img-rounded" src={{w.image}} alt={{w.title}}>{{/link-to}}</p>
    </li>
  {{/each}}
  </ul>
</div>
```

奇怪的是,它适用于受防护的代码块,但不适用于标准的缩进代码块。但你可能想尝试一下。如果有效,他们应该更新他们的文档。