# Por que o markdown faz isso? (remoção de espaços em branco e outros recursos)

**URL:** https://meta.discourse.org/t/why-does-markdown-do-this-whitespace-trimming-and-other-features/279437
**Category:** Development
**Tags:** markdown
**Created:** [18 Setembro , 2023 20:34 UTC](https://meta.discourse.org/t/why-does-markdown-do-this-whitespace-trimming-and-other-features/279437 "2023-09-18T20:34:06Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![Rhababo](https://avatars.discourse-cdn.com/v4/letter/r/5fc32e/32.png) [@Rhababo](https://meta.discourse.org/u/Rhababo)
#### Post date: [18 Setembro , 2023 20:34 UTC](https://meta.discourse.org/t/why-does-markdown-do-this-whitespace-trimming-and-other-features/279437/1 "2023-09-18T20:34:06Z")

</div>

Desculpe pelo título vago,

Estou no processo de modificar algumas das funcionalidades com markdown no Discourse para melhor atender às necessidades da minha comunidade, que está vindo de um fórum myBB.

O Discourse é minha primeira exposição ao markdown, e quero adotar a abordagem de “não derrube uma cerca se você não sabe por que ela está lá”. No entanto, estou tendo dificuldade em descobrir por que o markdown realiza certas ações e adoraria alguns recursos para me ajudar a entender (especialmente se houver algumas preocupações de segurança que eu possa estar ignorando).

A resposta neste tópico forneceu algumas referências gerais boas, incluindo discussões iniciais e um plugin (agora inativo):

> [@Rich Text Formatting (WYSIWYG)](https://meta.discourse.org/t/rich-text-formatting-wysiwyg/148687):
>
> Hi all, The users of my Discourse community are sports teachers who are not very technical, therefore the enforced use of markdown in the editor has created some formatting problems in posts. Ideally, we could enable a rich text WYSIWYG editor to make posting as simple and familiar as possible. Are there any ways to enable this or, if not, plans for inclusion on the roadmap? Cheers

E esta postagem tem sido incrivelmente útil no lado do desenvolvimento:

> [@Developer's guide to Markdown extensions](https://meta.discourse.org/t/developers-guide-to-markdown-extensions/66023):
>
> Discourse uses a Markdown engine called [Markdown-it](https://github.com/markdown-it/markdown-it). Here are some dev notes that will help you either fix bugs in core or create your new plugins. The Basics Discourse only contains a few helpers on top of the engine, so the vast majority of learning that needs to be done, is understanding Markdown It. The [docs directory](https://github.com/markdown-it/markdown-it/tree/master/docs) contains the current documentation. I strongly recommend reading: The [architecture document](https://github.com/markdown-it/markdown-it/blob/master/docs/architecture.md) to understand at a top level how the engine works. [Development](https://github.com/markdown-it/markdown-it/blob/master/docs/development.md) for basic d…

Mas, novamente, estou procurando entender por que certos recursos existem - para que eu possa avaliar melhor a remoção ou o ajuste deles.

Os recursos atuais que estou analisando são:

1. Remover quebras de linha consecutivas sem `<br>` ou outro código.
2. Criação automática de blocos de código em linhas com 4 ou mais espaços iniciais.
3. Remover espaços em branco iniciais em uma nova linha.
4. Transformar qualquer sequência de números em uma lista numerada em ordem crescente consecutiva.

Qualquer orientação é apreciada! Obrigado!

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [18 Setembro , 2023 21:49 UTC](https://meta.discourse.org/t/why-does-markdown-do-this-whitespace-trimming-and-other-features/279437/2 "2023-09-18T21:49:59Z")

</div>

Estou muito interessado neste tópico, mas não tenho conhecimento para responder à maioria das suas perguntas.

No entanto,

> [@Rhababo](#):
>
> Removendo quebras de linha consecutivas sem `</br>` ou outro código.

> [@Rhababo](#):
>
> Cortando espaços em branco no início de uma nova linha.

Acho que o Discourse quer manter as postagens limpas e fáceis de ler.  
Ao remover quebras de linha extras e cortar espaços no início das linhas, ele garante que as postagens pareçam consistentes.  
Isso ajuda especialmente quando os usuários, às vezes até sem perceber (conheço alguns!), adicionam espaços ou linhas aleatórias que podem tornar o conteúdo mais difícil de ler.

> [@Rhababo](#):
>
> Transformando qualquer sequência de números em uma lista numerada em ordem crescente consecutiva.

Pode parecer estranho forçar isso, especialmente quando você realmente quer uma lacuna em sua lista, mas minha suposição é que seja para manter as listas numeradas o mais simples possível, sem a necessidade de renumerar cada elemento ao adicionar um novo à sua postagem (ou em uma postagem wiki).

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [19 Setembro , 2023 06:09 UTC](https://meta.discourse.org/t/why-does-markdown-do-this-whitespace-trimming-and-other-features/279437/3 "2023-09-19T06:09:36Z")

</div>

> [@Canapin](#):
>
> linhas que poderiam tornar o conteúdo mais difícil de ler

Na verdade, manter tudo muito apertado pode tornar as coisas mais difíceis de ler. Um parágrafo após uma imagem pode ser um exemplo.

Mas… estou usando `<br />`, então não há problema algum.

Outro porém… tenho bastante certeza de que a operação de limpeza não tem nada a ver com uma experiência de leitura mais limpa. Vem do próprio código. Algo semelhante à afirmação muito cansada de que o markdown é mais fácil de ler em “nível de código”. O usuário final nunca está nessa situação.

Bem. Isso é puro meta agora.

Mas me recuso a acreditar que limpar linhas e espaços extras realmente melhora a experiência geral para o usuário final.

---

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [19 Setembro , 2023 16:07 UTC](https://meta.discourse.org/t/why-does-markdown-do-this-whitespace-trimming-and-other-features/279437/4 "2023-09-19T16:07:12Z")

</div>

> [@Rhababo](#):
>
> Removendo quebras de linha consecutivas sem `<br>` ou outro código.

Não tenho certeza se isso resolverá um problema para você, mas o Discourse tem uma configuração de site `traditional markdown linebreaks` que está desativada por padrão. Quando ativada, são necessários dois espaços no final para criar uma quebra de linha.

Aqui está um exemplo com essa configuração ativada:

 ![image](https://global.discourse-cdn.com/meta/original/4X/2/2/a/22a1d25873efd7f52685b956f62f3ce59ee799f7.png)

Aqui está um exemplo com a configuração desativada (o valor padrão da configuração):

 ![image](https://global.discourse-cdn.com/meta/original/4X/3/f/e/3feccb80bec856892a8bbdc4939ccbb326a5380d.png)

> [@Rhababo](#):
>
> Discourse é minha primeira exposição ao markdown,

Vale a pena dar uma olhada nesta página e tentar o tutorial de markdown de 10 minutos: [Markdown Reference](https://commonmark.org/help/). O tutorial para novos usuários do Discourse vincula a essa página, mas provavelmente é ignorado por muitos usuários que fazem o tutorial:

 ![image](https://global.discourse-cdn.com/meta/original/4X/3/c/4/3c41b0258fd482e3b87c7c6a9a75aaa1bf1a6676.png)

---

<div class="post-metadata">

### Author: ![Heliosurge](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/heliosurge/32/571810_2.png) [@Heliosurge](https://meta.discourse.org/u/Heliosurge)
#### Post date: [20 Setembro , 2023 01:33 UTC](https://meta.discourse.org/t/why-does-markdown-do-this-whitespace-trimming-and-other-features/279437/5 "2023-09-20T01:33:20Z")

</div>

> [@Jagster](#):
>
> Mas me recuso a acreditar que limpar linhas e espaços extras realmente está tornando a experiência geral melhor para o usuário final.

Definitivamente torna a arte ASCII um desafio para exibir corretamente. 😉

---

<div class="post-metadata">

### Author: ![Rhababo](https://avatars.discourse-cdn.com/v4/letter/r/5fc32e/32.png) [@Rhababo](https://meta.discourse.org/u/Rhababo)
#### Post date: [20 Setembro , 2023 03:12 UTC](https://meta.discourse.org/t/why-does-markdown-do-this-whitespace-trimming-and-other-features/279437/6 "2023-09-20T03:12:31Z")

</div>

> [@Canapin](#):
>
> Eu acho que o Discourse quer manter as postagens limpas e fáceis de ler.  
> Ao remover quebras de linha extras e aparar espaços no início das linhas, ele garante que as postagens pareçam consistentes.

> [@Canapin](#):
>
> mas minha suposição é que isso serve para manter as listas numeradas o mais simples possível

Eu realmente aprecio a visão. Minha comunidade tem uma grande subcomunidade de jogos de fórum/contadores de histórias onde a liberdade de formatação tende a valer mais do que a consistência. Se a razão principal para esses recursos é realmente ajudar a manter uma aparência consistente e simplificada, provavelmente é seguro removê-los para o meu caso de uso, ou pelo menos dar a eles uma opção selecionável pelo usuário.

> [@simon](#):
>
> Pode valer a pena dar uma olhada nesta página e experimentar seu tutorial de markdown de 10 minutos: [Referência de Markdown](https://commonmark.org/help/).

Este é um tutorial muito útil, e sua ênfase em “criar textos bonitos” parece seguir as ideias de consistência mencionadas anteriormente. Obrigado por apontá-lo.

---

<div class="post-metadata">

### Author: ![Rhababo](https://avatars.discourse-cdn.com/v4/letter/r/5fc32e/32.png) [@Rhababo](https://meta.discourse.org/u/Rhababo)
#### Post date: [20 Setembro , 2023 19:16 UTC](https://meta.discourse.org/t/why-does-markdown-do-this-whitespace-trimming-and-other-features/279437/7 "2023-09-20T19:16:48Z")

</div>

Ao fazer leituras adicionais sobre markdown, achei [este site](https://daringfireball.net/projects/markdown/) particularmente esclarecedor.

Esta é, eu acho, a descrição original do markdown, conforme citado pela equipe do commonmark, e revela que um elemento central do porquê o markdown faz o que faz se deve à sua proximidade com o html.

Por exemplo, a primeira frase lá é:

> Markdown é uma ferramenta de conversão de texto para HTML para escritores da web.

E eu acho que algumas dessas peculiaridades do markdown podem ser menos devido às suas propriedades organizacionais e mais a um desejo de converter o texto de forma limpa para o código html correspondente.

Isso explica por que o espaço em branco é cortado, porque o html corta seu espaço em branco.

Também a razão para transformar qualquer sequência de números em uma lista numerada crescente se torna um pouco mais clara com:

> **[Daring Fireball: Markdown Syntax Documentation](https://daringfireball.net/projects/markdown/syntax#list)**

> [@https://daringfireball.net/projects/markdown/syntax#list](#):
>
> É importante notar que os números reais que você usa para marcar a lista não têm efeito na saída HTML que o Markdown produz. O HTML que o Markdown produz a partir da lista acima é:
> 
> ```plaintext
> <ol>
> <li>Bird</li>
> <li>McHale</li>
> <li>Parish</li>
> </ol>
> 
> ```
> 
> Se você escrevesse a lista em Markdown assim:
> 
> ```plaintext
> 1. Bird
> 1. McHale
> 1. Parish
> 
> ```
> 
> ou até mesmo:
> 
> ```plaintext
> 3. Bird
> 1. McHale
> 8. Parish
> 
> ```
> 
> você obteria exatamente a mesma saída HTML. O ponto é que, se você quiser, pode usar números ordinais em suas listas Markdown ordenadas, para que os números em sua origem correspondam aos números em seu HTML publicado. Mas se você quiser ser preguiçoso, não precisa.

Portanto, o markdown nem se preocupa em olhar para os números, porque listas ordenadas em html não se preocupam em atribuir números. (O código real em markdown-it verifica o caractere na primeira posição, mas apenas para iniciar a numeração a partir desse caractere).

Acho que pode haver mais do que isso, (como consistência de formatação em vários dispositivos), mas alguns dos aspectos mais peculiares parecem muito inspirados em html.
