Listas ordenadas con marcadores no numéricos

Solicitud: Agregar el atributo “type” de \u0026lt;ol\u0026gt; a la lista permitida. Se sugiere hacer lo mismo con “reversed” para \u0026lt;ol\u0026gt; y “value” para \u0026lt;li\u0026gt;, por razones similares pero menos comunes.

Propósito: Estos atributos están destinados a su uso cuando el marcador de los elementos de una lista ordenada transmite significado al contenido de la lista. Típicamente, esto ocurre cuando los elementos de la lista están destinados a ser referenciados mediante dicho marcador. Esto contrasta con list-style-type de CSS, que está destinado a casos donde la elección del marcador no tiene un propósito significativo. (¡Aunque vi que se recomendó para la localización a nivel de foro, lo cual es excelente!).

Antecedentes: Al intentar citar un documento de referencia oficial, descubrí una limitación aparente en el formato de listas que impide hacerlo con precisión. Con frecuencia, los marcadores de lista son puramente estilísticos. Sin embargo, ocasionalmente se utilizan para facilitar la referencia en documentos con muchas listas. Por ejemplo, en documentos oficiales y legales, un elemento de lista (o subelemento) puede referenciarse por su marcador: “Documento Oficial Artículo I, sección 1(a)(i)”.

Para Markdown, no hay mención en la especificación CommonMark, y de hecho solo especifica dígitos del 0 al 9. Pero aunque la mayoría de los intérpretes no permiten letras para listas (incluido markdown-it), algunos sí lo hacen:

No estoy seguro de si existe un método estándar en BBCode, hasta donde algo es estándar en BBCode. No pude encontrar nada más avanzado que comenzar en un dígito arbitrario. Por otro lado, las etiquetas de lista de BBCode no parecen ser utilizadas por Discourse.

Con HTML y HTML+estilo, ninguno produce el resultado correcto:

3 Me gusta

Al observar GitHub, implementar esto probablemente sería simplemente cuestión de agregarlos a esta lista:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/pretty-text/white-lister.js#L181-L183

Aunque noto que introducirlos dejaría al convertidor de HTML a markdown sin conocimiento de estos atributos. Pero como se demostró anteriormente, markdown-it actualmente no puede manejar la sintaxis de markdown que representa esto de todos modos. Para ello, podría ser deseable dar un paso más e implementar tipos de lista en CommonMark…

2 Me gusta

No hay planes para esto.

La falta de esto hace muy difícil citar documentos oficiales, documentos legales, licencias de software o cualquier otra cosa que utilice marcadores no numéricos para referencias documentales.

1 me gusta

Añade un envoltorio a esas listas y algo de CSS

En las publicaciones usa:

[wrap="letterlist"]
1. es el primero
2. es el segundo.
3. es el tercero
[/wrap]

En tu tema añade:

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

Esa es una buena solución si el objetivo son decoraciones arbitrarias de listas, pero el atributo type del HTML está específicamente pensado para situaciones semánticamente significativas donde la diferencia entre los marcadores de lista va más allá de lo decorativo. Según https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol:

A menos que el tipo de número de la lista sea relevante (como en documentos legales o técnicos donde los elementos se referencian por su número o letra), utiliza en su lugar la propiedad de CSS list-style-type .

Es una necesidad lo suficientemente común que, aunque el atributo HTML fue obsoleto en HTML 4.01 (con la justificación de que era puramente estilístico), posteriormente fue reintroducido en HTML5 con el propósito específico de codificar listas de referencia como describe MDN.

1 me gusta

Intenté usar esta solución y funciona, corrigiendo el CSS a lo siguiente (a la primera línea le faltaba un ol {):

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

Sin embargo, no puedo hacer que se muestre en la ventana de vista previa del editor, lo que será un problema para la mayoría de mis usuarios. He intentado inspeccionar con el navegador web y parece que el CSS personalizado no se carga ni se aplica a la vista previa (no soy un profesional en esto, así que podría estar equivocado).

¿Se te ocurre alguna manera de resolver este problema, @Falco?

1 me gusta

Creo que ahora se admite html:

  1. Esto
  2. Otra cosa
  3. Algo más
<ol type="A">
<li> Esto
<li> Otra cosa
<li> Algo más
</ol>

Y los tipos A, a, I, e i.

También reversed y start= de <ol>:

  1. Pan
  2. Patatas fritas
  3. Sandía
<ol reversed start="36">
<li> Pan
<li> Patatas fritas
<li> Sandía
</ol>

Parece que usar HTML de esa manera está deshabilitando la interpretación de Markdown dentro de <li>, por lo que no es realmente aceptable que lo proponga a los usuarios.

1 me gusta

Para hacer uso de formato adicional dentro de ellos, creo que también tendrías que usar la versión HTML, ya que no le gusta mezclar:

  1. Pan
  2. Patatas fritas
  3. Sandía
<ol reversed start=36>
<li> <b>Pan</b>
<li> <i>Patatas fritas</i>
<li> <strike>Sandía</strike>
</ol>

Lo sé. Como dije, no me parece aceptable proponer eso a mis usuarios; cambia completamente el marcado solo porque quieres una lista ligeramente diferente.

Ah, lamento que esa no sea una opción aceptable para ti.

Quizás si inicias un tema de Dev pidiendo ayuda para ajustar tu solución existente, alguien podrá ayudarte. :+1:

1 me gusta