源文件
hi, welcome.
目前网上的 md 编辑器有 2 种渲染方式
这句话会被渲染为 1 行文本
hi, welcome.
这句话会变成 2 行文本
hi,
welcome.
哪一种是标准?
![]() | 1 LemonZest 2023-01-29 22:53:10 +08:00 via Android 没有标准 |
2 renmu 2023-01-29 22:57:03 +08:00 via Android 两个空格换行,两个回车换行 |
![]() | 3 kouhe3 OP what. 楼上两个更离谱了 |
![]() | 4 Pil0tXia 2023-01-29 23:02:09 +08:00 看你是从纯文本的角度还是从网页渲染的角度去理解。 基本上 css 用的比较勤的都是两行换行,比如 Typora, markdown-it (Hexo, Vuepress 的渲染器); 几乎不用 css 的就不在乎这一点,比如 Obsidian, VS Code, IDEA 。 推荐以 markdown-it 为准 |
![]() | 5 kouhe3 OP 根据 Markdown 的发明者约翰格鲁伯 (John Gruber) 的博客: https://daringfireball.net/projects/markdown/syntax#p MD 里,一个段落应该是 1 个或多行文本。 段落的分隔是使用 1 个或多个空格。 MD 不会把换行符转换为 <br /> |
![]() | 6 kouhe3 OP 今天用 crossnote. 发现这个东西把换行符渲染为 <br /> . 太叛逆了 |
![]() | 7 kouhe3 OP >段落的分隔是使用 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 linea line containing nothing but spaces or tabs is considered blank.) Normal paragraphs should not be indented with spaces or tabs. |
![]() | 8 ETiV 2023-01-29 23:19:28 +08:00 via iPhone 看来你都找到原始标准了 “叛逆”的实现是为了照顾到用户体验罢了 非专业用户哪会去看 MD 的规范定义… |
![]() | 9 kouhe3 OP 根据 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> 不是换行。 |
![]() | 10 KMpAn8Obw1QhPoEP 2023-01-29 23:34:22 +08:00 via Android MD 本来就跟 Web 里的其他东西一样 是个松散的玩意儿 并没有多少严格规范。。不然也不会冒出来什么 GitHub Flavored Markdown 之类的东西 然后再来个 common mark 来规范一下 所以你要想看规范 就别看原作者的了 参考下这个吧 https://commonmark.org/ |
![]() | 11 KMpAn8Obw1QhPoEP 2023-01-29 23:35:31 +08:00 via Android 看来你自己都找到了 可以结贴了 |
![]() | 12 agagega 2023-01-29 23:55:54 +08:00 via iPhone 真正的 Markdown 是一个纯文本格式能编译到 HTML 的标记语言,只有这个才有讨论标准的意义。 像那些把 Markdown 做成所见即所得编辑器的,讨论这个没啥用,a 下面一堆等号表示<h1>,在这里压根不给你添加等号的机会。 |
![]() | 1 kouhe3 OP @enchilada2020 wow. commonmark 这个网站我以前没见过。 感谢分享. 我刚刚浏览了一下,网站里面所记录的大概就是少得可怜的 MD 原版语法。 MD 原版语法真的太少了,XD. 顺便一提. 我刚刚找到了一篇文章,我认为里面的内容总结的很好。我发出来,希望你也能看看。 文章链接: https://www.zverovich.net/2016/06/16/rst-vs-markdown.html |
![]() | 14 IvanLi127 2023-01-30 02:17:54 +08:00 via Android 空行。很少有不能配置的渲染器会把一个换行直接渲染成换行,所以我写的时候都是一个句号换一行,哈哈。 |
![]() | 15 IvanLi127 2023-01-30 02:20:20 +08:00 via Android 对了,再补充下,即使是渲染成换行,也不会变成新的一段。 |
![]() | 16 tool2d 2023-01-30 02:22:48 +08:00 我喜欢第二种自动换行,觉得很科学。 但是 v2ex/github 这两个著名的网站,都自动渲染成了第一种空格,你能怎么办?只能妥协呗。 顺便推荐一下我最喜欢的离线编辑器 https://dillinger.io/ ,可以本地配置,打开默认就是第二种。 |
![]() | 17 Trim21 2023-01-30 02:35:48 +08:00 via Android 这个没有统一标准,取决于具体实现的 |
18 Bingchunmoli 2023-01-30 07:45:14 +08:00 via Android 原始是两个空格换行,实际软件很乱 |
![]() | 19 KMpAn8Obw1QhPoEP 2023-01-30 07:55:36 +08:00 via Android @kouhe3 哈哈 这篇之前看过 两个配图令人印象深刻 |
![]() | 20 94 2023-01-30 08:18:52 +08:00 ![]() 之前又困扰过这个问题,得出的结论是两个空格+回车就是 <br>;两个回车等于一个新的 p 标签。 |
21 yfugibr 2023-01-30 08:37:15 +08:00 via Android markdown 没有用缩进突出段落,个人倾向于用一个空行作为分隔,不然字多的时候原文的排版会很乱。 |
22 nothingistrue 2023-01-30 09:17:52 +08:00 回车、换行是对应打字机的,不是文字排版。文字排版上的概念是段落、行。 Word 里面回车换段落,Shift+回车手动换行,段落内自动换行。 HTML 里面<p></p>对应段落,</br>对应手动换行,段落内自动换行。 Markdown 没有唯一标准,用得比较广泛的标准是:用一个空行来换段落,用行尾的两个或以上的空格来手动换行,段落内自动换行。 |
![]() | 23 LavaC 2023-01-30 09:21:07 +08:00 我博客用的 nuxt-content 它里面的换行也是空两格或者空行,虽然这两种方式我都觉得挺愚蠢的就是了。 |
24 daolanfler 2023-01-30 09:31:54 +08:00 用 vscode 写 markdown ,preview 就是两个空格换行。markit 渲染到网页默认的也是 2 个空格换行。 |
25 zxCoder 2023-01-30 09:37:40 +08:00 markdown 就是有标准,但是我也不知道标准是啥,大多数网站实现不完全等同标准 |
![]() | 26 weeei 2023-01-30 09:39:32 +08:00 空行是段落分隔。 换行是照顾大部分人打字的习惯。 MD 渲染器可以设置。 |
![]() | 27 KMpAn8Obw1QhPoEP 2023-01-31 10:30:49 +08:00 via Android @dfkjgklfdjg remarkjs 下是这样的 |
![]() | 28 94 2023-01-31 13:17:47 +08:00 @enchilada2020 #27 ,所以其实还是看你用什么编辑器书写或者最终需要上传到什么平台为准。 就比如说需要提交到 github 的,就肯定按照 github 的标准来,上传到 xx 社区的就是以 xx 社区为准;如果是自己本地编辑的就以自己本地编辑器为准了。 本来使用 `markdown` 也是只是为了增强一下文本文档,可以快速的对文档进行排版。 |
29 NiceTry 2023-02-01 22:04:37 +08:00 两种方案,一是段落之间空一行,二是在段落的默认加两个空格。 |