V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kdlijian
V2EX  ›  问与答

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

  •  
  •   kdlijian · 2013-10-19 19:56:51 +08:00 · 6015 次点击
    这是一个创建于 4058 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 条回复    1970-01-01 08:00:00 +08:00
    kdlijian
        1
    kdlijian  
    OP
       2013-10-19 20:04:39 +08:00
    解决一个,GFM用于GitHub的message, issues and comments.
    chloerei
        2
    chloerei  
       2013-10-19 20:07:05 +08:00
    简单和兼容的方法是要换行的时候手打 <br> 行了。
    kdlijian
        3
    kdlijian  
    OP
       2013-10-19 20:13:08 +08:00
    @chloerei 恩。我纠结的不是怎么换行,实际上段内我很少换行,一般一行一个段落。让我难受的是hard-wrap连接出为什么会凭空多出一个半角占位符?

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

    Markdown 的

    line
    line

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

    <p>line
    line</p>

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

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

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

    可以看官方文档

    http://daringfireball.net/projects/markdown/syntax#p
    kfll
        8
    kfll  
       2013-10-19 23:03:33 +08:00
    @kfll 请无视我..没仔细看帖子
    imcj
        9
    imcj  
       2013-10-19 23:05:19 +08:00 via iPhone
    习惯80个字符以后换行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3147 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:36 · PVG 08:36 · LAX 16:36 · JFK 19:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.