引用上下文影响引用功能

有些用户编辑引用语法时不够规范,导致引用功能失效。例如,当前话题中就有一个这样的例子。这是未转义的:

[quote=“CFO.Digest.Input, post:1, topic:3258”]
he suggested that I put mineral oil back in. [/quote]

问题在于,结束标签 [/quote] 在流中,而开始标签 [quote] 却独占一行。我发现两种方式都可以,但必须保持一致。例如,以下写法是可行的(添加了单引号以转义功能):

'[quote=“CFO.Digest.Input, post:1, topic:3258”]
he suggested that I put mineral oil back in.
'[/quote]

以下写法也有效:

'[quote=“CFO.Digest.Input, post:1, topic:3258”]he suggested that I put mineral oil back in.[/quote]

……但不能混用这两种模式。

我知道有人会说“那就别那样做”或者“使用引用按钮”,但我们仍然有一些用户无法正确操作。

有没有办法解析这种情况,使这两种模式可以混用?

1 个赞

这是几年前的一次有意识的变更:

3 个赞

天哪……所以我们实际上是在强制客户和用户遵守编码规范吗?

虽然我同意 Sam 对格式的分析,但“让作者难以阅读”和“让所有查看帖子的人都难以阅读”之间是有区别的。这看起来像是在惩罚读者,为作者的过错买单……

我想我打算继续在别人把帖子弄乱时进行编辑。

编辑:另一个选项是,如果 [/quote] 后面没有换行符,就强制添加一个换行符……自动编辑格式以提高可读性。

4 个赞

这听起来不算坏主意,但如果他们只是选中文字并点击引用按钮,功能是可以正常工作的。他们是不是在回去编辑引用内容时破坏了格式?

5 个赞

是的,它们确实是!真的很令人惊讶……而且他们还没意识到自己在破坏格式。我猜他们还没启用预览功能?或者可能是用手机操作的……

而做出这种事的人竟然是业内的原则性人物……幸好我没让他当编辑!:slight_smile:

6 个赞

啊哈!移动设备是个不错的选择。很难精准选择,而且当你尝试“修复”时,操作会显得笨拙,且无法预览。

3 个赞

这在我的系统中仍然是一个反复出现的问题。以下是今天出现的一条消息:

我在闭合引用标签后编辑了帖子,添加了一个回车符,但仍然令人惊讶的是,文本流并没有像 HTML 那样被解析,即换行符和回车符不会影响标签的功能。在我看来,这似乎是一个 bug…

不,标签就是这样工作的。你不能随机插入标签并以任意顺序排列,还指望它们能正常工作。

顺序并非随机,完全没问题。但与 HTML 不同,在这个系统中,换行符的位置至关重要。

修复那个损坏的帖子,只需在闭合标签后添加一个换行符(CR)即可。

我愿意在用户未遵守所需结构时手动编辑帖子,但换行符竟然会影响解析器,这仍然显得很奇怪…

请查看 Markdown 规范。与 HTML 不同,Markdown 完全依赖于位置恰当的换行符。

<h1> 元素中出现错误的换行符不会对渲染产生任何影响,但在 Markdown 世界中却会:

这里在 markdo

wn 世界中确实如此

这对许多元素都适用,额外的换行符会严重破坏 Markdown 表格的显示。而 HTML 表格则不会。

我不确定 HTML 的类比是否贴切或有用,用户并不需要编写 HTML。你能想象缺少 <p></p><br> 标签的痛苦吗?文字会形成一堵堵“墙”。

如果你从“优先使用 Markdown”(Discourse 正是如此)而非“优先使用 HTML”(Discourse 绝非如此)的角度思考,那么在不尊重结构的情况下随意插入标签所带来的挑战也就变得合情合理了。

1 个赞

作为开发者,我完全理解并愿意应对这些技术细节,但我们的用户是普通大众,他们可能会认为 Markdown 和沃尔玛的商品价格有什么关系。

正如你所说,幸运的是我们并没有要求他们编写 HTML!那么,强迫他们实现 Markdown 格式究竟带来了什么好处呢?似乎只需一点点编码上的巧妙设计,就能让他们免受我们这个世界这些现实问题的困扰。

我不确定在 [/quote] 后自动强制换行会有多复杂(只要它不在代码块或其他类似环境中……),我也明白在使用 Markdown 时需要遵循一定的结构。

但我也理解,当用户消息中出现格式错误的引用时,人们会感到多么沮丧,而这仅仅是因为一个微小的“错误”——即在 [/quote] 所在的同一行继续输入文本(我不确定这是否能称为错误)。

是否存在任何有意将文本写在 [quote] 同一行的情况?

如果不存在这样的情况,那么我认为文本出现在同一行毫无必要,而在结束引用标签后强制换行将对用户和工作人员都有益。不过,我也确信事情并没有看起来那么简单。

没错。Markdown 的基本特性是,一个换行符(或两个换行符)等同于段落标签。因此,某些标签需要在它们之前或之后添加换行符才能被正确解析。据我所知,这是规范的一部分。

6 篇帖子已拆分为新主题:在引文前后强制换行