luk*_*ups 5 markdown haml codeblocks pre nanoc
今天我在nanoc(haml模板)中实现我的页面,我想在markdown中写一些帖子,但是当它转到多行代码块时会出现一些奇怪的事情 - 代码块中的第二行有其他标签.我尝试了多种markdown语法,例如:
//double tab wrapping
line 1 is fine
line 2 is wrapping (don't know why!)
Run Code Online (Sandbox Code Playgroud)
和
~~~
//tilde code wrapping
line 1 is fine
line 2 is wrapping
~~~
Run Code Online (Sandbox Code Playgroud)
两种解决方案都给我这样的结果:
line 1 is fine
line 2 is wrapping
Run Code Online (Sandbox Code Playgroud)
通过浏览器检查元素显示没有额外的填充 - 这个空格是用标签确定的.
有人可以帮我弄这个吗?也许我做错了什么?
当你=在Haml中使用包含脚本的结果时,Haml将重新缩进插入的文本,使其与包含它的位置的缩进相匹配.例如,如果你有Haml看起来像这样:
%html
%body
.foo
= insert_something
Run Code Online (Sandbox Code Playgroud)
并insert_something返回一些像这样的HTML:
<p>
This is possily generated from Markdown.
</p>
Run Code Online (Sandbox Code Playgroud)
然后生成的HTML将如下所示:
<html>
<body>
<div class='foo'>
<p>
This is possily generated from Markdown.
</p>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
请注意p元素如何缩进以匹配其在文档中的位置.通常这没关系,因为HTML中的空格是折叠的.然而,特别是有空格很重要的HTML元素pre.
这里发生的事情就是你的Markdown正在产生类似的东西
<pre><code>line 1 is fine
line 2 is wrapping
</code></pre>
Run Code Online (Sandbox Code Playgroud)
当它被包含在你的Haml文件中时(我猜你正在使用Haml布局= yield来包含Markdown)它正在缩进,当你查看页面时会出现空白.注意第一行是如何在开始标记之后,因此没有额外的空格.
有几种方法可以解决这个问题.如果你设置了:ugly选项,那么Haml将不会重新缩进这样的块(对不起,我不知道你如何在Nanoc中设置Haml选项).
您也可以使用find_and_preserve辅助方法.这将使用HTML实体替换空白敏感标记中的所有换行符
,以便缩进时它们不会受到额外空格的影响:
= find_and_preserve(yield)
Run Code Online (Sandbox Code Playgroud)
Haml提供了一种简单易用的方法find_and_preserve; 除了它在结果上运行之外,它~的作用相同=find_and_preserve,所以你可以这样做:
~ yield
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1952 次 |
| 最近记录: |