Ordered lists with non-number markers

Request: Add “type” attribute of <ol> to whitelist. Suggestion to do the same with “reversed” for <ol>, and “value” for <li>, for similar but less common reasons.

Purpose: These attributes are intended for use where the marker of ordered list items itself conveys meaning to the content of the list. Typically this is the case when list items are intended to be referred to via this marker. This is in contrast to CSS list-style-type which is intended where the choice of marker carries no significant purpose. (Though I did see it recommended for forum-wide localization, which is pretty great!)

Background: While attempting to quote an official reference document, I discovered an apparent limitation in list formatting which prevents doing so accurately. Quite often, list markers are purely stylistic. However, they are occasionally used to facilitate reference in list-heavy documents. For example, in official and legal documents, a list item (or sub-item) might be referred to by list marker: “Official Document Article I, section 1(a)(i)”

For Markdown, there’s no mention in the CommonMark specification, and indeed it specifies only digits, 0-9. But while most interpreters don’t permit letters for lists(including markdown-it), a couple do:

I’m uncertain of whether a standard method is available in BBCode, to the extent anything is standard in BBCode. I was unable to find anything more advanced than starting at an arbitrary digit. BBCode list tags don’t appear used by Discourse, anyway.

With HTML and HTML+style, neither produce the correct result:

3 إعجابات

Looking at GitHub, implementing this would likely be simply a matter of adding them to this list:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/pretty-text/white-lister.js#L181-L183

Though I do notice that introducing these will leave the HTML-to-markdown converter unaware of these attributes. But as demonstrated above, markdown-it currently can’t handle markdown syntax representing these anyway. For that, it may be desirable to go a step further and implement list types in CommonMark…

إعجابَين (2)

There are no plans for this.

The lack of this makes it very difficult to quote official documents, legal documents, software licenses, or anything else which use non-number markers for document references.

إعجاب واحد (1)

Add a wrapper to those lists and some CSS

In posts use:

[wrap="letterlist"]
1. is the first
2. is the second.
3. is the third
[/wrap]

IN your theme add:

.cooked div[data-wrap="letterlist"]
  list-style: upper-alpha;
}
إعجاب واحد (1)

That’s a good solution if the goal is arbitrary list decorations, but the HTML type attribute is specifically meant for semantically-meaningful situations where the difference between list markers are more than decorative. From <ol>: The Ordered List element - HTML: HyperText Markup Language | MDN

Unless the type of the list number matters (like legal or technical documents where items are referenced by their number/letter), use the CSS list-style-type property instead.

It’s a common enough need that although the HTML attribute was deprecated in HTML 4.01 (with justification of it being purely stylistic), it was subsequently re-introduced in HTML5 for the specific purpose of encoding reference lists as described by MDN.

إعجاب واحد (1)

لقد جربت استخدام هذا الحل وهو يعمل، حيث تم تصحيح CSS إلى ما يلي (كان السطر الأول يفتقد ol {):

.cooked div[data-wrap="letterlist"] ol {
  list-style: upper-alpha;
}

لكنني لا أستطيع جعله يظهر في نافذة معاينة المحرر، وهذا سيكون مشكلة كبيرة لمعظم المستخدمين. لقد حاولت الفحص باستخدام متصفح الويب، ويبدو أن CSS المخصص لم يتم تحميله أو تطبيقه على المعاينة (أنا لست محترفًا في هذا، لذا قد أكون مخطئًا).

هل هناك أي طريقة يمكنك التفكير فيها لحل هذه المشكلة، @Falco؟

إعجاب واحد (1)

أعتقد أن ترميز HTML مدعوم الآن:

  1. هذا الشيء
  2. شيء آخر
  3. شيء آخر
<ol type="A">
<li> هذا الشيء
<li> شيء آخر
<li> شيء آخر
</ol>

والأنواع A و a و I و i.

أيضًا reversed<ol> و start=<ol> أيضًا:

  1. خبز
  2. رقائق
  3. بطيخ
<ol reversed start=36>
<li> خبز
<li> رقائق
<li> بطيخ
</ol>

يبدو أن استخدام HTML بهذه الطريقة يعطل تفسير Markdown داخل <li>، لذلك هذا غير مقبول بالنسبة لي لاقتراحه على المستخدمين.

إعجاب واحد (1)

للاستفادة من التنسيق الإضافي بداخلها، أعتقد أنه سيتعين عليك استخدام الإصدار HTML منها أيضًا لأنها لا تحب المزج:

  1. خبز
  2. رقائق
  3. بطيخ
<ol reversed start=36>
<li> <b>خبز</b>
<li> <i>رقائق</i>
<li> <s>بطيخ</s>
</ol>

أعلم. كما قلت، لا أجد ذلك مقبولاً لأقترحه على مستخدمي—إنه يغير تمامًا الترميز لمجرد أنك تريد قائمة مختلفة قليلاً.

آه، أنا آسف لأن هذا ليس خيارًا مقبولاً بالنسبة لك.

ربما إذا بدأت موضوع Dev تطلب المساعدة في تعديل حلك الحالي، فقد يتمكن شخص ما من مساعدتك. :+1:

إعجاب واحد (1)