kdlijian
V2EX  ›  问与答

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

  •  
  •   kdlijian · Oct 19, 2013 · 6711 views
    This topic created in 4596 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
        1
    kdlijian  
    OP
       Oct 19, 2013
    解决一个,GFM用于GitHub的message, issues and comments.
    chloerei
        2
    chloerei  
       Oct 19, 2013
    简单和兼容的方法是要换行的时候手打 <br> 行了。
    kdlijian
        3
    kdlijian  
    OP
       Oct 19, 2013
    @chloerei 恩。我纠结的不是怎么换行,实际上段内我很少换行,一般一行一个段落。让我难受的是hard-wrap连接出为什么会凭空多出一个半角占位符?

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

    Markdown 的

    line
    line

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

    <p>line
    line</p>

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

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

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

    可以看官方文档

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