在引用块中,Markdown是否应该保留换行符?

33
我目前正在处理一个用户投诉,但我无法确定这个投诉是否是一个实际的错误。基本上,用户表示网站存在问题,因为引用块无法保留他的换行。这听起来很合理,但在我尝试的每个在线markdown测试工具上,引用块的渲染结果与我的一样。例如:
> hi
> what's up?
> this is my multiline blockquote.

嗨,最近怎么样?这是我的多行引用。
尽管我将其输入为多行引用,但换行符仍然在渲染中丢失(即使在StackOverflow上也是如此)。所以我猜我的真正问题有两个方面:
1. 我已经99%确定引用块不应该保留换行符,但为了以防万一,我还是想知道是否有不同的意见。你们中有人认为它们应该保留吗?
2. 如果它们不应该保留,那么在Markdown中保留换行符的正确方法是使用pre和code吗?

啊,好的。这个问题可能更适合在http://ux.stackexchange.com/上问。这更多是用户偏好的问题,而不是一个直接的编程问题。 - Paul Sasik
我想这就是我不确定的地方,也是我在这里提出问题的原因。我以为Markdown有应该遵循的规范。难道没有吗? - Eli
5
把这称作“用户偏好问题”有些奇怪,因为显然不应该是这样,除非你的想法是每个应用程序和站点都应根据实现程序员随机思考出的东西来开发自己的拙劣“轻量级标记语言”。需要的是广泛理解某种共同的东西,否则将浪费用户的脑力,并且通常会导致能够容忍轻量级标记的用户逃离您的软件。 - applicative
将其称为“用户偏好”的问题是忘记了用户试图与其他人沟通,这些人有自己的“偏好”。因此,迎合他或她的偏好就是让他或她失去能力。 - applicative
2个回答

27

原始的Markdown“规范”非常模糊且未得到维护。当然有perl脚本markdown.pl,这是“参考实现”,但它有很多常见的怪异之处。

您可以加入列表http://six.pairlist.net/pipermail/markdown-discuss/,该列表永远在抱怨Gruber的腐败导致这种矛盾的情况。也许列表用户会有意识地处理此事,尽管不同实现之间的微妙差异和不同扩展之间的明显差异使此事变得困难。-特别是在Gruber不放弃有关此事的所有权利但同时不推动任何规范的情况下。如果组建委员会,则无法将任何规范视为Markdown的规范。

原则上,块引用受与非块引用相同的原则支配-例如,您可以在块引用中使用块引用-因此您的朋友肯定是错误的。您可以通过在其文本上运行markdown.pl来向用户证明这一点。任何其他原则都将是完全混乱。请注意:

带有行末额外空格的制作换行符的规则
块引用中也是如此-因此您可以向他或她解释这一点

完全明确
无论内部还是

外部
块引用,所以你可能需要向他或她解释这一点。

请注意,stackoverflow的markdown解析器在这里很好(尽管我注意到了您退出嵌套块引用以返回主块引用方式存在问题)。但css的作者错误地使块引用与周围文本之间的间距大于段落之间的间距。这是荒谬的,其中段落分隔通过额外的空格进行通信。块引用是段落的一部分,实际上通常是句子的一部分。它类似于一个非常长的单词,就像您在写作中使用的任何其他引语一样。

请注意,“GitHub™ flavored markdown”中所谓的可爱、过于甜腻的行话将所有换行符(在代码块之外等)视为段落分隔符,这基本上使得markdown概念不存在。也许您的用户对这种东西有所了解--尽管它至少没有破坏块引用内外一致的规则。GitHub公司已经...嗯...“说服”Gruber这是一个合法的markdown“适用于他们的用例”。其依据是未受训练的人可能自然而然地认为换行符表示段落分隔符。Gruber大概意识到GitHub™的用户群体是由程序员构成的,所以这表明标准或规范对他有多少价值。当然,这对GitHub上复杂文档产生了彻底的混乱。(为什么不应该有“Internet Explorer使用情况的合法html”?很多人只是在IE中测试一些东西,因此他们有某些合法的期望吗?当然,GitHub的决定比任何类似事情都要糟糕得多。)
我已经有一段时间没有考虑这个问题了,所以这些评论可能不是最新的,但我怀疑自从我决定不再考虑它以来,情况并没有发生变化。缺乏并将没有规范表明您每花费一分钟思考此事都是浪费人力资源。由于Gruber的浮华,Markdown现在已经引起了相当多的注意。

45
当我在Stack Overflow上尝试了解如何在块引用中进行换行时,Google把我带到了这里。点击您回答中的“编辑”链接后,我仍然无法看到您是如何实现它的而我没有。或许在您的回答中值得指出:在一行的结尾处放置两个空格可以创建一个换行符。详情请见此链接 - dumbledad
3
哇,那真烦人。两个空格……你能不能尊重我的实际换行呢?:( - Josh M.
没错!但至少有同样问题的人现在应该能找到这个了。 - dumbledad
@dumbledad 我刚刚在GitLab上成功使用了两个空格来创建换行,所以给你点赞! - Nils Guillermin
@dumbledad - 四年过去了,你的评论仍在帮助人们。另外……Markdown 真是让人烦恼啊。 - JonathanZ supports MonicaC

18

在引用块中想要换行,可以在需要的地方添加<br>标签。

通常情况下,后面添加两个空格也会达到同样的效果,但大多数 IDE 会去除结尾的空格,这其实是个好习惯!

> 嗨,最近怎么样?<br>这是我的多行引用。

嗨,最近怎么样?
这是我的多行引用。


在什么上下文中?使用什么渲染器?我尝试在 markdown-it 中使用 <br>,但它被字面呈现,没有换行。 - Ian
1
它适用于Github标记和Kramdown,以及普通的标记。看起来对你不起作用。 - Izana
@Ian 只是为了向其他使用 markdown-it 的用户提供信息,如果您在他们的网站 mardown-it.github.io 上激活 "html" 选项(2022 年 6 月起,在选项复选框的最左侧),它将正确渲染新行! - Philippe Boulanger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接