Markdown 的段落是一个`空行`还是一个`换行`?

2023-01-29 22:52:28 +08:00
 kouhe3

源文件

readme.md

hi,
welcome.

目前网上的 md 编辑器有 2 种渲染方式

这句话会被渲染为 1 行文本

hi, welcome.

这句话会变成 2 行文本

hi,

welcome.


哪一种是标准?

3991 次点击
所在节点    Markdown
29 条回复
sunshower
2023-01-29 22:53:10 +08:00
没有标准
renmu
2023-01-29 22:57:03 +08:00
两个空格换行,两个回车换行
kouhe3
2023-01-29 23:02:06 +08:00
what. 楼上两个更离谱了
Pil0tXia
2023-01-29 23:02:09 +08:00
看你是从纯文本的角度还是从网页渲染的角度去理解。

基本上 css 用的比较勤的都是两行换行,比如 Typora, markdown-it (Hexo, Vuepress 的渲染器);

几乎不用 css 的就不在乎这一点,比如 Obsidian, VS Code, IDEA 。

推荐以 markdown-it 为准
kouhe3
2023-01-29 23:07:51 +08:00
根据 Markdown 的发明者约翰·格鲁伯 (John Gruber) 的博客:

https://daringfireball.net/projects/markdown/syntax#p

MD 里,一个段落应该是 1 个或多行文本。

段落的分隔是使用 1 个或多个空格。

MD 不会把换行符转换为 <br />
kouhe3
2023-01-29 23:08:58 +08:00
今天用 crossnote. 发现这个东西把换行符渲染为 <br /> .

太叛逆了
kouhe3
2023-01-29 23:11:13 +08:00
>段落的分隔是使用 1 个或多个空格。

5 楼码错字了, 应该是 段落的分隔是使用 1 个或多个空行.

原文:

A paragraph is simply one or more consecutive lines of text, separated by one or more blank lines. (A blank line is any line that looks like a blank line — a line containing nothing but spaces or tabs is considered blank.) Normal paragraphs should not be indented with spaces or tabs.
ETiV
2023-01-29 23:19:28 +08:00
看来你都找到原始标准了

“叛逆”的实现是为了照顾到用户体验罢了
非专业用户哪会去看 MD 的规范定义…😂
kouhe3
2023-01-29 23:27:48 +08:00
根据 https://github.com/commonmark/commonmark-spec/wiki/Markdown-Flavors

MD 有 30+ 风格. (真乱)

2 楼的发言
> 两个空格换行,两个回车换行

其实说对了一半。
MD 里确实可以用句尾两个空格代替 <br />
根据 https://stackoverflow.com/a/26626346/19114751
MD 编辑器应该把 2 个空格渲染为 <br />

2 个回车,也就是 1 个空行应该渲染为 <p>

但是 <p> 不是换行。
enchilada2020
2023-01-29 23:34:22 +08:00
MD 本来就跟 Web 里的其他东西一样 是个松散的玩意儿 并没有多少严格规范。。不然也不会冒出来什么 GitHub Flavored Markdown 之类的东西 然后再来个 common mark 来规范一下😅
所以你要想看规范 就别看原作者的了 参考下这个吧
https://commonmark.org/
enchilada2020
2023-01-29 23:35:31 +08:00
看来你自己都找到了 可以结贴了🤣
agagega
2023-01-29 23:55:54 +08:00
真正的 Markdown 是一个纯文本格式能编译到 HTML 的标记语言,只有这个才有讨论标准的意义。

像那些把 Markdown 做成所见即所得编辑器的,讨论这个没啥用,a 下面一堆等号表示<h1>,在这里压根不给你添加等号的机会。
kouhe3
2023-01-30 00:07:56 +08:00
@enchilada2020

wow. commonmark 这个网站我以前没见过。 感谢分享.

我刚刚浏览了一下,网站里面所记录的大概就是少得可怜的 MD 原版语法。
MD 原版语法真的太少了,XD.

顺便一提. 我刚刚找到了一篇文章,我认为里面的内容总结的很好。我发出来,希望你也能看看。

文章链接: https://www.zverovich.net/2016/06/16/rst-vs-markdown.html
IvanLi127
2023-01-30 02:17:54 +08:00
空行。很少有不能配置的渲染器会把一个换行直接渲染成换行,所以我写的时候都是一个句号换一行,哈哈。
IvanLi127
2023-01-30 02:20:20 +08:00
对了,再补充下,即使是渲染成换行,也不会变成新的一段。
tool2d
2023-01-30 02:22:48 +08:00
我喜欢第二种自动换行,觉得很科学。

但是 v2ex/github 这两个著名的网站,都自动渲染成了第一种空格,你能怎么办?只能妥协呗。

顺便推荐一下我最喜欢的离线编辑器 https://dillinger.io/ ,可以本地配置,打开默认就是第二种。
Trim21
2023-01-30 02:35:48 +08:00
这个没有统一标准,取决于具体实现的
Bingchunmoli
2023-01-30 07:45:14 +08:00
原始是两个空格换行,实际软件很乱
enchilada2020
2023-01-30 07:55:36 +08:00
@kouhe3 哈哈 这篇之前看过 两个配图令人印象深刻
dfkjgklfdjg
2023-01-30 08:18:52 +08:00
之前又困扰过这个问题,得出的结论是两个空格+回车就是 <br>;两个回车等于一个新的 p 标签。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/911466

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX