InnerDeindent
Syntax
SHORTCODE.InnerDeindent
Returns
template.HTML
与 Inner
方法类似, InnerDeindent
返回起始和结束短代码标记之间的内容。但是,使用 InnerDeindent
会删除内容之前的缩进。
这允许我们有效地绕过 CommonMark 规范中提供的关于 缩进 的规则。
考虑以下 Markdown,一个无序列表,每个列表项内包含一个小图库的缩略图图像:
content/about.md
- Gallery one
{{< gallery >}}


{{< /gallery >}}
- Gallery two
{{< gallery >}}


{{< /gallery >}}
在上面的示例中,请注意起始和结束短代码标记之间的内容缩进了四个空格。根据 CommonMark 规范,这被视为缩进的代码块。
使用此短代码,调用 Inner
而不是 InnerDeindent
:
layouts/shortcodes/gallery.html
<div class="gallery">
{{ .Inner | strings.TrimSpace | .Page.RenderString }}
</div>
Hugo 将 Markdown 渲染为:
<ul>
<li>
<p>Gallery one</p>
<div class="gallery">
<pre><code>

</code></pre>
</div>
</li>
<li>
<p>Gallery two</p>
<div class="gallery">
<pre><code>

</code></pre>
</div>
</li>
</ul>
虽然根据 CommonMark 规范在技术上是正确的,但这并非我们想要的结果。如果我们使用 InnerDeindent
方法删除缩进:
layouts/shortcodes/gallery.html
<div class="gallery">
{{ .InnerDeindent | strings.TrimSpace | .Page.RenderString }}
</div>
Hugo 将 Markdown 渲染为:
<ul>
<li>
<p>Gallery one</p>
<div class="gallery">
<img src="images/a.jpg" alt="kitten a">
<img src="images/b.jpg" alt="kitten b">
</div>
</li>
<li>
<p>Gallery two</p>
<div class="gallery">
<img src="images/c.jpg" alt="kitten c">
<img src="images/d.jpg" alt="kitten d">
</div>
</li>
</ul>