kdlijian
V2EX  ›  问与答

关于Markdown的手动断行(hard-wrap)

  •  
  •   kdlijian · Oct 19, 2013 · 7132 views
    This topic created in 4771 days ago, the information mentioned may be changed or developed.
    Markdown规定,一个换行(hard-wrap,在编辑器里按下Enter)不会引入<br>。举例来说:

    这是第一行[Enter]
    这是第二行[Enter]
    这是第三行。

    生成HTML会变成:(A)

    这是第一行这是第二行这是第三行。

    如果要想引入<br>就要在断行处按两次以上[Space]再按一个[Enter]:

    这是第一行[Space][Space][Enter]
    这是第二行[Space][Space][Enter]
    这是第三行。

    生成HTML会变成:(B)

    这是第一行
    这是第二行
    这是第三行。

    这我可以理解,也觉得可以接受。我也知道Github Flavored Markdown改进了这个做法,每一个换行(hard-wrap)都会引进一个<br>,举例:

    这是第一行[Enter]
    这是第二行[Enter]
    这是第三行。

    生成HTML会变成:(C)

    这是第一行
    这是第二行
    这是第三行。

    我觉得这是个进步。不过我的问题是:

    1. 传到GitHub仓库的markdown文件查看时会被自动转为HTML,但我觉得转换引擎不像是GitHub Flavored Markdown, 因为我发现hard-wrap并没有引入<br>. 那么GitHub这里使用的引擎是rdiscount吗?GFM在哪里使用?

    2. 我用Python的markdown或者Ruby的rdiscount以及Github默认引擎解析markdown文件,hard-wrap的确没有引入<br>, 可是也不简单连接,也就是说实际上得不到上边(A)的结果,而是在连接出多出一个半角空白符,如下:(D)

    这是第一行 这是第二行 这是第三行。 /*注意这里中间的空白符*/

    我用Linux下的Firefox和Chrome以及elinks查看都是这样。我的编辑器是VIM。不知你们是否有这个情况?
    9 replies  •  1970-01-01 08:00:00 +08:00
    kdlijian
    kdlijian
    OP
    Oct 19, 2013
    1
    解决一个,GFM用于GitHub的message, issues and comments.
    chloerei
    chloerei
    Oct 19, 2013
    2
    简单和兼容的方法是要换行的时候手打 <br> 行了。
    kdlijian
    kdlijian
    OP
    Oct 19, 2013
    3
    @chloerei 恩。我纠结的不是怎么换行,实际上段内我很少换行,一般一行一个段落。让我难受的是hard-wrap连接出为什么会凭空多出一个半角占位符?

    p.s. 我还搜到了你对Markdown的吐槽:http://blog.chloerei.com/articles/4-why-I-dont-choose-markdown
    chloerei
    chloerei
    Oct 19, 2013
    4
    @kdlijian 我现在又用回 Markdown 了,小问题妥协一下,总体还是比其他方案好。

    Markdown 的

    line
    line

    用 redcarpet(Github 用那个)会处理成

    <p>line
    line</p>

    多出的空格就是 HTML 代码两行之间的空白。
    kdlijian
    kdlijian
    OP
    Oct 19, 2013
    5
    @chloerei 你清晰地解答了我的问题。我还真不知道“HTML代码两行之间的空白”,它能被去掉吗?

    p.s. 你的新博客很赞。
    chloerei
    chloerei
    Oct 19, 2013❤️1
    6
    @kdlijian 如果换行就一定有吧,要去掉的话不换行就行啦
    kfll
    kfll
    Oct 19, 2013
    7
    说点题外话... Markdown 里面除 <br> 外是有额外的 hard wrap 机制的:

    如果一行有 >= 2 个的 trailing whitespace 的话,会视作 <br /> 的

    可以看官方文档

    http://daringfireball.net/projects/markdown/syntax#p
    kfll
    kfll
    Oct 19, 2013
    8
    @kfll 请无视我..没仔细看帖子
    imcj
    imcj
    Oct 19, 2013 via iPhone
    9
    习惯80个字符以后换行
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4489 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 06:43 · PVG 14:43 · LAX 22:43 · JFK 01:43
    ♥ Do have faith in what you're doing.