Geordnete Listen mit nicht-numerischen Markierungen

Anfrage: Fügen Sie das Attribut „type" für \u0026lt;ol\u0026gt; zur Whitelist hinzu. Als Vorschlag: Dasselbe für „reversed" bei \u0026lt;ol\u0026gt; und für „value" bei \u0026lt;li\u0026gt;, aus ähnlichen, wenn auch weniger häufigen Gründen.

Zweck: Diese Attribute sind für den Fall vorgesehen, dass der Marker der geordneten Listenelemente selbst eine Bedeutung für den Inhalt der Liste trägt. Typischerweise ist dies der Fall, wenn auf Listenelemente über diesen Marker verwiesen werden soll. Dies steht im Gegensatz zu CSS list-style-type, das dort verwendet wird, wo die Wahl des Markers keine wesentliche Funktion hat. (Obwohl ich es für die lokalisierung des gesamten Forums empfohlen gesehen habe, was wirklich großartig ist!)

Hintergrund: Beim Versuch, ein offizielles Referenzdokument zu zitieren, entdeckte ich eine scheinbare Einschränkung bei der Listenformatierung, die eine genaue Wiedergabe verhindert. Oft sind Listenmarker rein stilistisch. Manchmal dienen sie jedoch dazu, in dokumenten mit vielen Listen Referenzen zu erleichtern. Beispielsweise kann in offiziellen und rechtlichen Dokumenten auf ein Listenelement (oder Unterpunkt) über den Listenmarker verwiesen werden: „Offizielles Dokument Artikel I, Abschnitt 1(a)(i)".

Für Markdown gibt es in der CommonMark-Spezifikation keine Erwähnung; tatsächlich werden dort nur Ziffern von 0 bis 9 spezifiziert. Während die meisten Interpreter keine Buchstaben für Listen zulassen (einschließlich markdown-it), tun dies einige wenige:

Ich bin unsicher, ob in BBCode eine Standardmethode verfügbar ist, soweit überhaupt etwas in BBCode standardisiert ist. Ich konnte nichts finden, das über den Start bei einer beliebigen Ziffer hinausgeht. BBCode-Listentags werden von Discourse ohnehin nicht verwendet.

Sowohl HTML als auch HTML+Style liefern nicht das richtige Ergebnis:

3 „Gefällt mir“

Bei einem Blick auf GitHub wäre die Implementierung wahrscheinlich einfach eine Frage des Hinzufügens zu dieser Liste:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/pretty-text/white-lister.js#L181-L183

Ich stelle jedoch fest, dass die Einführung dieser Attribute den HTML-zu-Markdown-Konverter über diese Attribute im Unklaren lässt. Wie oben gezeigt, kann markdown-it derzeit jedoch sowieso keine Markdown-Syntax verarbeiten, die diese Attribute darstellt. Dafür könnte es wünschenswert sein, einen Schritt weiterzugehen und Listenarten in CommonMark zu implementieren…

2 „Gefällt mir“

Es gibt keine Pläne dafür.

Das Fehlen dessen macht es sehr schwierig, offizielle Dokumente, Rechtsdokumente, Softwarelizenzen oder任何其他 Dinge zu zitieren, die nicht-numerische Marker für Dokumentenreferenzen verwenden.

1 „Gefällt mir“

Füge diesen Listen einen Wrapper und etwas CSS hinzu

Verwende in Beiträgen:

[wrap="letterlist"]
1. ist die erste
2. ist die zweite.
3. ist die dritte
[/wrap]

Füge in deinem Theme hinzu:

.cooked div[data-wrap="letterlist"] {
  list-style: upper-alpha;
}
1 „Gefällt mir“

Das ist eine gute Lösung, wenn es nur um beliebige Listen-Formatierungen geht. Das HTML-Attribut type ist jedoch speziell für semantisch sinnvolle Situationen gedacht, bei denen die Unterschiede zwischen den Listenmarkierungen mehr als nur dekorativ sind. Laut https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol:

Wenn der Typ der Listennummer keine Bedeutung hat (z. B. in juristischen oder technischen Dokumenten, in denen Elemente über ihre Nummer oder ihren Buchstaben referenziert werden), verwenden Sie stattdessen die CSS-Eigenschaft list-style-type .

Da dies ein häufiges Bedürfnis ist, wurde das HTML-Attribut, obwohl es in HTML 4.01 als veraltet eingestuft wurde (mit der Begründung, es sei rein stilistisch), in HTML5 speziell für den Zweck wieder eingeführt, Referenzlisten gemäß der Beschreibung von MDN zu kodieren.

1 „Gefällt mir“

Ich habe versucht, diese Lösung zu verwenden, und sie funktioniert, indem das CSS wie folgt korrigiert wird (der ersten Zeile fehlte ein ol {):\n\n```css
.cooked div[data-wrap="letterlist"] ol {
list-style: upper-alpha;
}

1 „Gefällt mir“

Ich glaube, HTML wird jetzt unterstützt:

  1. This thing
  2. Another thing
  3. Something else
<ol type="A">
<li> This thing
<li> Another thing
<li> Something else
</ol>

Und die Typen A, a, I und i.

Auch <ol reversed> und <ol start=> ebenfalls:

  1. Bread
  2. Chips
  3. Watermelon
<ol reversed start=36>
<li> Bread
<li> Chips
<li> Watermelon
</ol>

Es scheint, dass die Verwendung von HTML auf diese Weise die Markdown-Interpretation innerhalb der <li>-Tags deaktiviert, was für mich nicht wirklich akzeptabel ist, um es Benutzern vorzuschlagen.

1 „Gefällt mir“

Um zusätzliche Formatierungen darin zu nutzen, müssten Sie wahrscheinlich auch die HTML-Version davon verwenden, da sie keine Mischung mag:

  1. Brot
  2. Chips
  3. Wassermelone
<ol reversed start=36>
<li> <b>Brot</b>
<li> <i>Chips</i>
<li> <strike>Wassermelone</strike>
</ol>

Ich weiß. Wie ich sagte, halte ich das für meine Benutzer nicht akzeptabel – es ändert die Auszeichnung komplett, nur weil Sie eine etwas andere Liste wünschen.

Es tut mir leid, dass das keine akzeptable Option für Sie ist.

Vielleicht kann Ihnen jemand helfen, wenn Sie ein #dev-Thema starten und um Hilfe bei der Anpassung Ihrer bestehenden Lösung bitten. :+1:

1 „Gefällt mir“