【问题标题】:markdown escape setext h1降价转义 settext h1
【发布时间】:2016-04-16 22:08:27
【问题描述】:

以下几行是 markdown setext 标头,以单个前导 backslash 转义,此帖子被解析为 markdown,因此它是一个很好的展示,它适用于 h2 级别标头,但对于 @987654324 失败@级别标题。

markdown 解析之前的文本,换行符没有尾随空格:

This is an H1
\=============

This is an H2
\-------------

markdown 解析的文本输出:

这是一个 H1 \==============

这是一个 H2 -------------

我知道 Markdown 的风格问题,以及缺乏规范和实施的原件产生了它们。不过,如果可能的话,在 Markdown 中转义 h1 级别 setext 标头的正确方法是什么?

【问题讨论】:

    标签: escaping markdown


    【解决方案1】:

    这里有很多事情要做。

    首先,由于多余的字符,这两行都不被识别为 setext 标题。换句话说,您可以使用不是=- 的任何字符,这会导致解析器将文本视为段落而不是标题。

    其次,连字符 (-) 是 escapable character,而等号 (=) 不是。但是,此处理很可能作为内联标记完成,而不是在块级别(在解析标题与段落时)。发生的情况是字符串\- 在所有其他处理完成后被- 替换。换句话说,它适用于 2 级标头是一种侥幸。

    如果你想要horizontal rules,那么你需要在行之前有一个空行,这样就不需要转义任何东西(或者当然转义也会导致解析器无法将该行识别为水平规则)。顺便说一句,水平线只能使用连字符(下划线和星号),而不能使用等号,这就是为什么等号不能转义的原因。

    如果您只想在段落中显示原始字符,请避免使用换行符,因为换行符无论如何都不会显示在浏览器中。像这样:

    This is an H1 =============
    
    This is an H2 -------------
    

    如果您希望该行实际出现在单独的行上,那么您可以使用一些原始 HTML 插入一个 <br> 标记:

    This is an H1<br>=============
    
    This is an H2<br>-------------
    

    甚至可能:

    This is an H1
    <br>=============
    
    This is an H2
    <br>-------------
    

    请注意,在最后一种情况下,您可以轻松阅读 Markdown 并且 &lt;br&gt; 标签完成与反斜杠相同的事情。它会导致解析器不将其视为 setext 标头。但它也提供了跨级别的一致结果,甚至保留了输出中的换行符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-26
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多