抱歉,标题有些模糊,
我正在修改 Discourse 上的一些 Markdown 功能,以更好地满足我的社区(他们将从 myBB 论坛迁移过来)的需求。
Discourse 是我第一次接触 Markdown,我想采取“如果你不知道篱笆为什么在那里,就不要把它拆掉”的方法。但是,我很难弄清楚 Markdown 为什么会采取某些行动,我很想获得一些资源来帮助我理解(尤其是如果我可能忽略了某些安全问题)。
此主题中的回复提供了一些很好的通用参考,包括一些早期讨论和一个(现已失效的)插件:
并且这篇帖子在开发方面非常有帮助:
但是,我再次想了解某些功能存在的原因——以便我能最好地评估移除或调整它们。
我目前正在关注的功能是:
- 移除连续的换行符,不使用
<br> 或其他代码。
- 在行首有 4 个或更多空格时自动创建代码块。
- 移除新行开头的空格。
- 将任何连续的数字序列变成按递增顺序排列的编号列表。
任何指导都将不胜感激!谢谢!
4 个赞
Canapin
(Coin-coin le Canapin)
2
我对这个话题很感兴趣,但我没有知识来回答您的大部分问题。
但是,
我认为 Discourse 希望保持帖子干净易读。
通过删除多余的换行符和修剪行首的空格,可以确保帖子看起来一致。
这尤其有助于用户(有时甚至在他们没有意识到的情况下(我知道一些!))添加可能使他们的内容难以阅读的随机空格或换行符。
强制执行此操作可能看起来很奇怪,尤其是当您实际上想要列表中有一个间隙时,但我的猜测是,这是为了使编号列表尽可能简单,无需在向帖子(或维基帖子)添加新元素时重新编号每个元素。
5 个赞
Jagster
(Jakke Lehtonen)
3
实际上,保持一切紧凑也会使内容更难阅读。图片后的段落就是一个例子。
但是……我正在使用<br />,所以没什么大不了的。
但还有一点……我非常确定清理操作与更清晰的阅读体验无关。它来自代码本身。与非常疲惫的说法类似,即 Markdown 在“代码层面”更容易阅读。最终用户永远不会处于那种情况。
嗯。这纯粹是元讨论了。
但我拒绝相信清理行和额外的空格实际上能为最终用户带来更好的整体体验。
2 个赞
simon
4
我不确定这是否能解决您的问题,但 Discourse 有一个默认禁用的 traditional markdown linebreaks 站点设置。启用后,需要两个尾随空格才能创建换行。
这是启用该设置的示例:
这是禁用该设置(该设置的默认值)的示例:
或许值得查看此页面并尝试其 10 分钟的 markdown 教程:https://commonmark.org/help/。Discourse 新用户教程链接到该页面,但可能被很多完成教程的用户所忽略:
5 个赞
我真的很感激你的见解。我的社区有一个大型的论坛游戏/故事讲述子社区,那里的格式自由比一致性更有价值。如果这些功能的核心原因确实是为了帮助保持一致和简化的外观,那么对于我的用例来说,很可能可以安全地删除它们,或者至少给它们一个用户可选的开关。
这是一个非常有用的教程,它强调“制作漂亮的文本”确实似乎遵循了前面提到的关于一致性的想法。感谢你指出它。
5 个赞
在对 Markdown 进行一些额外阅读时,我发现这个网站特别有启发性。
我认为,这是 commonmark 团队引用的 Markdown 的原始描述,它揭示了 Markdown 之所以能做到它所做的事情,核心要素在于它与 HTML 的接近程度。
例如,那里的第一句话是:
Markdown 是一个面向网络作者的文本到 HTML 的转换工具。
我认为 Markdown 的一些怪癖可能与其组织特性关系不大,而更多地是出于将文本干净地转换为相应 HTML 代码的愿望。
这解释了为什么会去除空格,因为 HTML 会去除其空格。
另外,通过以下链接可以更清楚地理解为什么任何数字序列都会变成递增的编号列表:
所以 Markdown 甚至不关心数字,因为 HTML 中的有序列表也不关心分配数字。(markdown-it 中的实际代码确实会检查第一个位置的字符,但仅用于从该字符开始编号)。
我认为这背后还有更多原因(例如跨多个设备的格式一致性),但其中一些更怪异的方面确实看起来非常受 HTML 启发。
2 个赞