Markdown 的段落是一个`空行`还是一个`换行`? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kouhe3
V2EX    Markdown

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

  •  
  •   kouhe3 2023-01-29 22:52:28 +08:00 4650 次点击
    这是一个创建于 985 天前的主题,其中的信息可能已经有所发展或是发生改变。

    源文件

    readme.md

    hi, welcome. 

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

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

    hi, welcome.

    这句话会变成 2 行文本

    hi,

    welcome.


    哪一种是标准?

    29 条回复    2023-02-01 22:04:37 +08:00
    LemonZest
        1
    LemonZest  
       2023-01-29 22:53:10 +08:00 via Android
    没有标准
    renmu
        2
    renmu  
       2023-01-29 22:57:03 +08:00 via Android
    两个空格换行,两个回车换行
    kouhe3
        3
    kouhe3  
    OP
       2023-01-29 23:02:06 +08:00
    what. 楼上两个更离谱了
    Pil0tXia
        4
    Pil0tXia  
       2023-01-29 23:02:09 +08:00
    看你是从纯文本的角度还是从网页渲染的角度去理解。

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

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

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

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

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

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

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

    太叛逆了
    kouhe3
        7
    kouhe3  
    OP
       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 linea line containing nothing but spaces or tabs is considered blank.) Normal paragraphs should not be indented with spaces or tabs.
    ETiV
        8
    ETiV  
       2023-01-29 23:19:28 +08:00 via iPhone
    看来你都找到原始标准了

    “叛逆”的实现是为了照顾到用户体验罢了
    非专业用户哪会去看 MD 的规范定义…
    kouhe3
        9
    kouhe3  
    OP
       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> 不是换行。
    KMpAn8Obw1QhPoEP
        10
    KMpAn8Obw1QhPoEP  
       2023-01-29 23:34:22 +08:00 via Android
    MD 本来就跟 Web 里的其他东西一样 是个松散的玩意儿 并没有多少严格规范。。不然也不会冒出来什么 GitHub Flavored Markdown 之类的东西 然后再来个 common mark 来规范一下
    所以你要想看规范 就别看原作者的了 参考下这个吧
    https://commonmark.org/
    KMpAn8Obw1QhPoEP
        11
    KMpAn8Obw1QhPoEP  
       2023-01-29 23:35:31 +08:00 via Android
    看来你自己都找到了 可以结贴了
    agagega
        12
    agagega  
       2023-01-29 23:55:54 +08:00 via iPhone
    真正的 Markdown 是一个纯文本格式能编译到 HTML 的标记语言,只有这个才有讨论标准的意义。

    像那些把 Markdown 做成所见即所得编辑器的,讨论这个没啥用,a 下面一堆等号表示<h1>,在这里压根不给你添加等号的机会。
    kouhe3
        1
    kouhe3  
    OP
       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
        14
    IvanLi127  
       2023-01-30 02:17:54 +08:00 via Android
    空行。很少有不能配置的渲染器会把一个换行直接渲染成换行,所以我写的时候都是一个句号换一行,哈哈。
    IvanLi127
        15
    IvanLi127  
       2023-01-30 02:20:20 +08:00 via Android
    对了,再补充下,即使是渲染成换行,也不会变成新的一段。
    tool2d
        16
    tool2d  
       2023-01-30 02:22:48 +08:00
    我喜欢第二种自动换行,觉得很科学。

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

    顺便推荐一下我最喜欢的离线编辑器 https://dillinger.io/ ,可以本地配置,打开默认就是第二种。
    Trim21
        17
    Trim21  
       2023-01-30 02:35:48 +08:00 via Android
    这个没有统一标准,取决于具体实现的
    Bingchunmoli
        18
    Bingchunmoli  
       2023-01-30 07:45:14 +08:00 via Android
    原始是两个空格换行,实际软件很乱
    KMpAn8Obw1QhPoEP
        19
    KMpAn8Obw1QhPoEP  
       2023-01-30 07:55:36 +08:00 via Android
    @kouhe3 哈哈 这篇之前看过 两个配图令人印象深刻
    94
        20
    94  
       2023-01-30 08:18:52 +08:00   1
    之前又困扰过这个问题,得出的结论是两个空格+回车就是 <br>;两个回车等于一个新的 p 标签。
    yfugibr
        21
    yfugibr  
       2023-01-30 08:37:15 +08:00 via Android
    markdown 没有用缩进突出段落,个人倾向于用一个空行作为分隔,不然字多的时候原文的排版会很乱。
    nothingistrue
        22
    nothingistrue  
       2023-01-30 09:17:52 +08:00
    回车、换行是对应打字机的,不是文字排版。文字排版上的概念是段落、行。

    Word 里面回车换段落,Shift+回车手动换行,段落内自动换行。

    HTML 里面<p></p>对应段落,</br>对应手动换行,段落内自动换行。

    Markdown 没有唯一标准,用得比较广泛的标准是:用一个空行来换段落,用行尾的两个或以上的空格来手动换行,段落内自动换行。
    LavaC
        23
    LavaC  
       2023-01-30 09:21:07 +08:00
    我博客用的 nuxt-content 它里面的换行也是空两格或者空行,虽然这两种方式我都觉得挺愚蠢的就是了。
    daolanfler
        24
    daolanfler  
       2023-01-30 09:31:54 +08:00
    用 vscode 写 markdown ,preview 就是两个空格换行。markit 渲染到网页默认的也是 2 个空格换行。
    zxCoder
        25
    zxCoder  
       2023-01-30 09:37:40 +08:00
    markdown 就是有标准,但是我也不知道标准是啥,大多数网站实现不完全等同标准
    weeei
        26
    weeei  
       2023-01-30 09:39:32 +08:00
    空行是段落分隔。
    换行是照顾大部分人打字的习惯。
    MD 渲染器可以设置。
    KMpAn8Obw1QhPoEP
        27
    KMpAn8Obw1QhPoEP  
       2023-01-31 10:30:49 +08:00 via Android
    @dfkjgklfdjg remarkjs 下是这样的
    94
        28
    94  
       2023-01-31 13:17:47 +08:00
    @enchilada2020 #27 ,所以其实还是看你用什么编辑器书写或者最终需要上传到什么平台为准。
    就比如说需要提交到 github 的,就肯定按照 github 的标准来,上传到 xx 社区的就是以 xx 社区为准;如果是自己本地编辑的就以自己本地编辑器为准了。
    本来使用 `markdown` 也是只是为了增强一下文本文档,可以快速的对文档进行排版。
    NiceTry
        29
    NiceTry  
       2023-02-01 22:04:37 +08:00
    两种方案,一是段落之间空一行,二是在段落的默认加两个空格。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5141 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 09:33 PVG 17:33 LAX 02:33 JFK 05:33
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86