请求:将 <ol> 的“type”属性添加到白名单中。建议对 <ol> 的“reversed”属性以及 <li> 的“value”属性也进行同样的处理,原因类似但较少见。
目的:这些属性旨在用于有序列表项的标记本身对列表内容具有意义的场景。通常,当列表项需要通过这些标记进行引用时,就会出现这种情况。这与 CSS 的 list-style-type 不同,后者适用于标记的选择不具有重要目的的情况。(不过,我确实看到有人 推荐将其用于整个论坛的本地化,这非常棒!)
背景:在尝试引用官方参考文件时,我发现列表格式存在一个明显的限制,导致无法准确实现。通常,列表标记纯粹是样式化的。然而,在列表密集的文件中,它们偶尔会被用来辅助引用。例如,在官方和法律文件中,列表项(或子项)可能会通过列表标记来引用:“官方文件第一条,第 1(a)(i) 款”。
对于 Markdown,CommonMark 规范中并未提及,而且该规范仅指定了数字 0-9。但 虽然大多数解释器(包括 markdown-it)不允许在列表中使用字母,但也有少数允许:
我不确定 BBCode 中是否存在标准方法,至少在 BBCode 有任何标准的前提下。我未能找到比从任意数字开始更高级的功能。无论如何,Discourse 似乎并未使用 BBCode 列表标签。
使用 HTML 和 HTML+ 样式,两者都无法产生正确的结果:
3 个赞
查看 GitHub,实现这一点可能只需将它们添加到以下列表中:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/pretty-text/white-lister.js#L181-L183
不过我注意到,引入这些属性会导致 HTML 到 Markdown 的转换器无法识别这些属性。但如上所示,markdown-it 目前也无法处理表示这些属性的 Markdown 语法。为此,或许可以更进一步,在 CommonMark 中实现列表类型…
2 个赞
缺少这一点,使得引用官方文件、法律文件、软件许可证或其他使用非数字标记进行文档引用的内容变得非常困难。
1 个赞
Falco
(Falco)
5
为这些列表添加一个包装器以及一些 CSS
在帖子中使用:
[wrap="letterlist"]
1. 是第一个
2. 是第二个。
3. 是第三个
[/wrap]
在你的主题中添加:
.cooked div[data-wrap="letterlist"] {
list-style: upper-alpha;
}
1 个赞
如果目标是实现任意的列表样式装饰,那确实是一个不错的解决方案。但 HTML 的 type 属性专门用于具有语义意义的情形,即列表标记之间的差异不仅仅是装饰性的。来自 https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/ol:
除非列表编号的类型很重要(例如在法律或技术文档中,项目通过其编号或字母进行引用),否则请使用 CSS list-style-type 属性。
由于这种需求相当普遍,尽管 HTML 属性在 HTML 4.01 中已被弃用(理由是它仅用于样式),但随后在 HTML5 中又被重新引入,专门用于按照 MDN 所述的方式对参考列表进行编码。
1 个赞
我尝试使用此解决方案,它有效,将 CSS 修正为以下内容(第一行缺少 ol {):
.cooked div[data-wrap="letterlist"] ol {
list-style: upper-alpha;
}
但是,我无法在编辑器预览窗口中显示它,这对我的大多数用户来说将是一个问题。我尝试使用网络浏览器进行检查,似乎自定义 CSS 未加载或未应用于预览(我不是这方面的专业人士,所以可能错了)。
您能想到任何解决此问题的方法吗,@Falco?
1 个赞
我相信现在已支持 HTML:
- This thing
- Another thing
- Something else
<ol type="A">
<li>This thing
<li>Another thing
<li>Something else
</ol>
以及类型 A、a、I 和 i。
还有 reversed 和 start=:
- Bread
- Chips
- Watermelon
<ol reversed start=36>
<li>Bread
<li>Chips
<li>Watermelon
</ol>
看起来像这样使用 HTML 会禁用 <li> 中的 Markdown 解析,所以我不能真正将其提供给用户。
1 个赞
为了在其中使用其他格式,我认为您也必须使用 HTML 版本,因为它不喜欢混合使用:
- Bread
- Chips
-
Watermelon
<ol reversed start=36>
<li> <b>Bread</b>
<li> <i>Chips</i>
<li> <strike>Watermelon</strike>
</ol>
我知道。正如我所说,我认为向我的用户提出这个建议是不可接受的——这完全改变了标记,仅仅因为你想要一个略有不同的列表。
抱歉,这对您来说不是一个可行的选项。
也许您可以在 Dev 主题中发帖求助,询问如何调整现有解决方案,或许有人能帮到您。 
1 个赞