gpt4 book ai didi

haml - Markdown 中的多行代码块添加了不需要的选项卡

转载 作者:行者123 更新时间:2023-12-04 19:09:30 25 4
gpt4 key购买 nike

今天我在 nanoc(haml 模板)中实现我的页面,我想在 markdown 中写一些帖子,但是当它进入多行代码块时,发生了一些奇怪的事情 - 代码块中的第二行有额外的选项卡。我尝试了多种 Markdown 语法,例如:

//double tab wrapping
line 1 is fine
line 2 is wrapping (don't know why!)


~~~
//tilde code wrapping
line 1 is fine
line 2 is wrapping
~~~

这两种解决方案都给了我这样的结果:
line 1 is fine
line 2 is wrapping

通过浏览器检查元素表明没有额外的填充 - 这个空格肯定是用制表符组成的。
有人可以帮我弄这个吗?也许我做错了什么?

最佳答案

当您使用 =在 Haml 中包含脚本的结果,Haml 将重新缩进插入的文本,以便它与包含它的位置的缩进匹配。例如,如果您的 Haml 看起来像这样:

%html
%body
.foo
= insert_something

insert_something返回一些像这样的 HTML:

<p>
This is possily generated from Markdown.
</p>

那么生成的 HTML 将如下所示:

<html>
<body>
<div class='foo'>
<p>
This is possily generated from Markdown.
</p>
</div>
</body>
</html>

注意 p元素缩进以匹配它在文档中的位置。
通常这无关紧要,因为 HTML 中的空格是折叠的。然而,有些 HTML 元素的空格很重要,尤其是 pre。 .

这里发生的情况是您的 Markdown 正在生成类似

<pre><code>line 1 is fine
line 2 is wrapping
</code></pre>

当它包含在您的 Haml 文件中时(我猜您正在使用带有 = yield 的 Haml 布局来包含 Markdown)它会被缩进并且当您查看页面时会出现空白。请注意第一行是如何紧跟在开始标签之后的,因此没有多余的空格。

有几种方法可以解决这个问题。如果您设置 :ugly option那么 Haml 不会像这样重新缩进 block (对不起,我不知道你如何在 Nanoc 中设置 Haml 选项)。

您也可以使用 find_and_preserve helper method .这会将空格敏感标签中的所有换行符替换为 HTML 实体 &#x000A; , 这样它们在缩进时就不会受到额外空格的影响:
= find_and_preserve(yield)

Haml 提供了一种简单的使用方法 find_and_preserve ; ~ works the same as = , except that it runs find_and_preserve on the result ,所以你可以这样做:
~ yield

关于haml - Markdown 中的多行代码块添加了不需要的选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16605840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com