Elenco ordinato con marcatori non numerici

Richiesta: Aggiungere l’attributo “type” di \u0026lt;ol\u0026gt; alla whitelist. Suggerimento di fare lo stesso con “reversed” per \u0026lt;ol\u0026gt; e “value” per \u0026lt;li\u0026gt;, per motivi simili ma meno comuni.

Scopo: Questi attributi sono destinati all’uso in cui il marcatore degli elementi di un elenco ordinato stesso trasmette significato al contenuto dell’elenco. Tipicamente questo avviene quando gli elementi dell’elenco sono destinati a essere riferiti tramite tale marcatore. Ciò è in contrasto con CSS list-style-type, che è destinato a casi in cui la scelta del marcatore non ha uno scopo significativo. (Tuttavia, ho visto che è stato raccomandato per la localizzazione a livello di forum, il che è davvero ottimo!)

Contesto: Mentre cercavo di citare un documento di riferimento ufficiale, ho scoperto un’apparente limitazione nella formattazione degli elenchi che impedisce di farlo con precisione. Molto spesso, i marcatori degli elenchi sono puramente stilistici. Tuttavia, vengono talvolta utilizzati per facilitare i riferimenti in documenti ricchi di elenchi. Ad esempio, nei documenti ufficiali e legali, un elemento dell’elenco (o un sottoelemento) potrebbe essere citato tramite il marcatore dell’elenco: “Documento ufficiale Articolo I, sezione 1(a)(i)”.

Per Markdown, non c’è menzione nella specifica CommonMark; anzi, essa specifica solo cifre, da 0 a 9. Ma sebbene la maggior parte degli interpreti non consenta lettere per gli elenchi (incluso markdown-it), alcuni lo fanno:

Non sono sicuro che esista un metodo standard in BBCode, nella misura in cui qualcosa è standard in BBCode. Non sono riuscito a trovare nulla di più avanzato dell’inizio da una cifra arbitraria. I tag di elenco BBCode non sembrano essere utilizzati da Discourse, comunque.

Con HTML e HTML+stile, nessuno dei due produce il risultato corretto:

3 Mi Piace

Guardando su GitHub, implementare questa funzionalità sarebbe probabilmente una semplice questione di aggiungerle a questa lista:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/pretty-text/white-lister.js#L181-L183

Tuttavia, noto che l’introduzione di queste lascerebbe il convertitore da HTML a markdown all’oscuro di questi attributi. Ma come dimostrato sopra, markdown-it attualmente non può comunque gestire la sintassi markdown che rappresenta questi elementi. Per questo, potrebbe essere desiderabile fare un passo ulteriore e implementare i tipi di elenco in CommonMark…

2 Mi Piace

Non ci sono piani per questo.

La mancanza di questa funzionalità rende molto difficile citare documenti ufficiali, documenti legali, licenze software o qualsiasi altro materiale che utilizzi marcatori non numerici per i riferimenti documentali.

1 Mi Piace

Aggiungi un wrapper a quelle liste e un po’ di CSS

Nei post usa:

[wrap="letterlist"]
1. è il primo
2. è il secondo.
3. è il terzo
[/wrap]

Nel tuo tema aggiungi:

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

Questa è una buona soluzione se l’obiettivo è decorare le liste in modo arbitrario, ma l’attributo type dell’HTML è specificamente destinato a situazioni semanticamente significative in cui la differenza tra i marcatori delle liste va oltre l’aspetto puramente decorativo. Da <ol>: The Ordered List element - HTML | MDN

A meno che il tipo di numerazione dell’elenco non sia rilevante (come nei documenti legali o tecnici in cui gli elementi sono riferiti dal loro numero o lettera), utilizza invece la proprietà CSS list-style-type .

È una necessità abbastanza comune che, sebbene l’attributo HTML sia stato deprecato nell’HTML 4.01 (con la motivazione che fosse puramente stilistico), sia stato successivamente reintrodotto nell’HTML5 con lo scopo specifico di codificare elenchi di riferimento, come descritto da MDN.

1 Mi Piace

Ho provato a usare questa soluzione e funziona, correggendo il CSS nel modo seguente (alla prima riga mancava ol {):\n\ncss\n.cooked div[data-wrap=\"letterlist\"] ol {\n list-style: upper-alpha;\n}\n\nTuttavia non riesco a farlo visualizzare nella finestra di anteprima dell’editor, il che sarà un problema per la maggior parte dei miei utenti. Ho provato a ispezionare con il browser web e sembra che il CSS personalizzato non venga caricato o applicato all’anteprima (non sono un professionista, quindi potrei sbagliarmi).\n\nC’è un modo che ti viene in mente per risolvere questo problema, @Falco?

1 Mi Piace

Credo che l’HTML sia ora supportato:

  1. Questa cosa
  2. Un'altra cosa
  3. Qualcos'altro
<ol type="A">
<li>Questa cosa
<li>Un'altra cosa
<li>Qualcos'altro
</ol>

E i tipi A, a, I e i.

Anche reversed e start= come questi:

  1. Pane
  2. Patatine
  3. Anguria
<ol reversed start=36>
<li>Pane
<li>Patatine
<li>Anguria
</ol>

Sembra che l’uso dell’HTML in quel modo disabiliti l’interpretazione di Markdown all’interno di <li>, quindi non è accettabile che io lo proponga agli utenti.

1 Mi Piace

Per fare uso di formattazione aggiuntiva al loro interno, penso che dovresti usare anche la versione HTML, poiché non ama mescolare:

  1. Pane
  2. Patatine
  3. Anguria
<ol reversed start=36>
<li> <b>Pane</b>
<li> <i>Patatine</i>
<li> <s>Anguria</s>
</ol>

Lo so. Come ho detto, non lo trovo accettabile da proporre ai miei utenti: cambia completamente il markup solo perché desideri un elenco leggermente diverso.

Mi dispiace, ma questa non è un’opzione accettabile per te.

Forse se avvii un argomento Dev chiedendo aiuto per modificare la tua soluzione esistente, qualcuno potrà assisterti. :+1:

1 Mi Piace