Listas ordenadas com marcadores não numéricos

Solicitação: Adicionar o atributo “type” do \u0026lt;ol\u0026gt; à lista de permissões. Sugiro fazer o mesmo com “reversed” para \u0026lt;ol\u0026gt; e “value” para \u0026lt;li\u0026gt;, por razões semelhantes, embora menos comuns.

Finalidade: Esses atributos destinam-se a situações em que o marcador dos itens de uma lista ordenada transmite significado ao conteúdo da lista. Geralmente, isso ocorre quando os itens da lista são destinados a ser referenciados por meio desse marcador. Isso contrasta com o list-style-type do CSS, que é utilizado quando a escolha do marcador não tem propósito significativo. (Embora eu tenha visto que foi recomendado para localização em todo o fórum, o que é excelente!)

Contexto: Ao tentar citar um documento de referência oficial, descobri uma limitação aparente na formatação de listas que impede a precisão nesse processo. Muitas vezes, os marcadores de lista são puramente estilísticos. No entanto, ocasionalmente são usados para facilitar referências em documentos com muitas listas. Por exemplo, em documentos oficiais e legais, um item de lista (ou subitem) pode ser referenciado pelo marcador: “Artigo I do Documento Oficial, seção 1(a)(i)”.

Para Markdown, não há menção na especificação CommonMark e, de fato, ela especifica apenas dígitos de 0 a 9. Mas embora a maioria dos interpretadores não permita letras para listas (incluindo markdown-it), alguns permitem:

Não tenho certeza se existe um método padrão em BBCode, na medida em que algo seja padrão em BBCode. Não consegui encontrar nada mais avançado do que começar a partir de um dígito arbitrário. De qualquer forma, as tags de lista do BBCode não parecem ser usadas pelo Discourse.

Com HTML e HTML+estilo, nenhum dos dois produz o resultado correto:

3 curtidas

Olhando para o GitHub, implementar isso provavelmente seria apenas uma questão de adicioná-los a esta lista:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/pretty-text/white-lister.js#L181-L183

Embora eu note que introduzi-los deixará o conversor de HTML para markdown desconhecendo esses atributos. Mas, como demonstrado acima, o markdown-it atualmente não consegue lidar com a sintaxe markdown que representa esses atributos de qualquer forma. Para isso, pode ser desejável dar um passo adiante e implementar tipos de lista no CommonMark…

2 curtidas

Não há planos para isso.

A falta disso torna muito difícil citar documentos oficiais, documentos legais, licenças de software ou qualquer outra coisa que utilize marcadores não numéricos para referências documentais.

1 curtida

Adicione um wrapper a essas listas e um pouco de CSS

Nos posts, use:

[wrap="letterlist"]
1. é o primeiro
2. é o segundo.
3. é o terceiro
[/wrap]

No seu tema, adicione:

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

Essa é uma boa solução se o objetivo for apenas decorar listas de forma arbitrária, mas o atributo type do HTML é especificamente destinado a situações semanticamente significativas, onde a diferença entre os marcadores da lista vai além da mera decoração. De <ol>: The Ordered List element - HTML | MDN

A menos que o tipo do número da lista seja relevante (como em documentos jurídicos ou técnicos onde os itens são referenciados por seu número ou letra), use a propriedade CSS list-style-type em vez disso.

É uma necessidade tão comum que, embora o atributo HTML tenha sido descontinuado no HTML 4.01 (com a justificativa de ser puramente estilístico), ele foi posteriormente reintroduzido no HTML5 com o propósito específico de codificar listas de referência, conforme descrito pelo MDN.

1 curtida

Tentei usar esta solução e ela funciona, corrigindo o CSS para o seguinte (a primeira linha estava faltando um ol {):\n\ncss\n.cooked div[data-wrap=\"letterlist\"] ol {\n list-style: upper-alpha;\n}\n\nNo entanto, não consigo exibi-lo na janela de visualização do editor, o que será um problema para a maioria dos meus usuários. Tentei inspecionar com o navegador da web, e parece que o CSS personalizado não é carregado ou aplicado à visualização (não sou um profissional nisso, então posso estar errado).\n\nAlguma maneira que você possa pensar para resolver este problema, @Falco?

1 curtida

Acredito que o html é suportado agora:

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

E os tipos A, a, I, e i.

Também <ol reversed> e <ol start=> também:

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

Parece que o uso de HTML dessa forma está desabilitando a interpretação de Markdown dentro de \u003cli\u003e, então isso não é realmente aceitável para eu propor aos usuários.

1 curtida

Para fazer uso de formatação adicional dentro deles, acho que você também teria que usar a versão HTML, pois não gosta de misturar:

  1. Pão
  2. Batatas fritas
  3. Melancia
<ol reversed start=36>
<li> <b>Pão</b>
<li> <i>Batatas fritas</i>
<li> <strike>Melancia</strike>
</ol>

Eu sei. Como eu disse, não acho aceitável propor isso aos meus usuários—muda completamente a marcação apenas porque você quer uma lista ligeiramente diferente.

Ah, sinto muito que essa não seja uma opção aceitável para você.

Talvez se você iniciar um tópico de Dev pedindo ajuda para ajustar sua solução existente, alguém possa ajudá-lo. :+1:

1 curtida