Redcarpet 的 Markdown 为什么需要敲两次回车才能换行? thx。
Markdown 基本的规则就是这样的:
段落和换行
一个 Markdown 段落是由一个或多个连续的文本行组成,它的前后要有一个以上的空行(空行的定义是显示上看起来像是空的,便会被视为空行。比方说,若某一行只包含空格和制表符,则该行也会被视为空行)。普通段落不该用空格或制表符来缩进。
「由一个或多个连续的文本行组成」这句话其实暗示了 Markdown 允许段落内的强迫换行(插入换行符),这个特性和其他大部分的 text-to-HTML 格式不一样(包括 Movable Type 的「Convert Line Breaks」选项),其它的格式会把每个换行符都转成
标签。 如果你确实想要依赖 Markdown 来插入
标签的话,在插入处先按入两个以上的空格然后回车。的确,需要多费点事(多加空格)来产生
,但是简单地「每个换行都转换为
」的方法在 Markdown 中并不适合,Markdown 中 email 式的 区块引用 和多段落的 列表 在使用换行来排版的时候,不但更好用,还更方便阅读。
哦,我记错了,不是特别修改的,只是一个参数而已,应该是这个: https://github.com/ruby-china/ruby-china/blob/master/config/initializers/markdown.rb#L10
我一直以為那是因為我們用瀏覽器看所以才沒有換行…
在 HTML 裡面直接按回車並不會出現換行,如你所知,要有 <br>
才行。而 Markdown 則是直接把段落裡面的字元一個一個放進 <p>
裡面,所以才會看起來沒有換行,實際上輸出的 HTML 是有換行的。
測試的檔案內容:
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat.
沒有 hard_wrap:
as = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new)
puts as.render(File.open("test.md", "r").read)
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </p>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. </p>
有 hard_wrap:
as = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(:hard_wrap => true))
puts as.render(File.open("test.md", "r").read)
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, <br>
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </p>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris <br>
nisi ut aliquip ex ea commodo consequat. </p>
#3 楼 @hlcfan 你应该试试这个 http://github.github.com/github-flavored-markdown/
markdown 有很多不同的 fork,很多就取消掉了这个换行。。github 这个比较流行