Warum macht Markdown das? (Leerzeichen-Beschneidung und andere Funktionen)

Entschuldigen Sie den vagen Titel,

Ich bin dabei, einige der Funktionen in Markdown auf Discourse zu modifizieren, um sie besser an die Bedürfnisse meiner Community anzupassen, die von einem MyBB-Forum kommt.

Discourse ist meine erste Begegnung mit Markdown, und ich möchte den Ansatz verfolgen: „Reißen Sie keinen Zaun nieder, wenn Sie nicht wissen, warum er da ist.“ Es fällt mir jedoch schwer herauszufinden, warum Markdown bestimmte Aktionen ausführt, und ich hätte gerne einige Ressourcen, die mir helfen, dies zu verstehen (insbesondere wenn es Sicherheitsbedenken gibt, die ich übersehen könnte).

Die Antwort in diesem Thema enthielt einige gute allgemeine Referenzen, darunter frühe Diskussionen und ein (jetzt veraltetes) Plugin:

Und dieser Beitrag war auf der Entwicklerseite äußerst hilfreich:

Aber auch hier möchte ich verstehen, warum bestimmte Funktionen existieren – damit ich sie am besten bewerten, entfernen oder anpassen kann.

Die aktuellen Funktionen, die ich im Visier habe, sind:

  1. Entfernen von aufeinanderfolgenden Zeilenumbrüchen ohne <br> oder anderen Code.
  2. Automatisches Erstellen von Codeblöcken in Zeilen mit 4 oder mehr führenden Leerzeichen.
  3. Entfernen von führenden Leerzeichen in einer neuen Zeile.
  4. Umwandlung jeder Zahlenfolge in eine nummerierte Liste in aufsteigender Reihenfolge.

Jeder Hinweis ist willkommen! Danke!

4 „Gefällt mir“

Ich bin sehr an diesem Thema interessiert, aber ich habe nicht das Wissen, um die meisten Ihrer Fragen zu beantworten.

Jedoch,

Ich denke, Discourse möchte Beiträge sauber und leicht lesbar halten.
Durch das Entfernen von zusätzlichen Zeilenumbrüchen und das Kürzen von Leerzeichen am Anfang von Zeilen wird sichergestellt, dass Beiträge konsistent aussehen.
Dies hilft besonders, wenn Benutzer, manchmal sogar ohne es zu merken (ich kenne einige!), zufällige Leerzeichen oder Zeilen hinzufügen, die ihren Inhalt schwerer lesbar machen könnten.

Es mag seltsam erscheinen, dies zu erzwingen, besonders wenn Sie tatsächlich eine Lücke in Ihrer Liste haben möchten, aber ich vermute, es geht darum, nummerierte Listen so einfach wie möglich zu halten, ohne dass jedes Element neu nummeriert werden muss, wenn Sie einen neuen Beitrag hinzufügen (oder in einem Wiki-Beitrag).

5 „Gefällt mir“

Tatsächlich kann es die Lesbarkeit erschweren, wenn alles sehr eng gehalten wird. Ein Absatz nach einem Bild kann ein Beispiel sein.

Aber… ich benutze \u003cbr /\u003e, also kein großes Problem.

Ein weiteres Aber… ich bin mir ziemlich sicher, dass die Bereinigungsoperation nichts mit einem besseren Leseerlebnis zu tun hat. Sie kommt vom Code selbst. Ähnlich wie die sehr müde Aussage, dass Markdown auf der „Code-Ebene“ besser lesbar ist. Der Endbenutzer befindet sich nie in dieser Situation.

Nun. Das ist reine Meta-Diskussion.

Aber ich weigere mich zu glauben, dass das Entfernen von Zeilen und Leerzeichen die Gesamterfahrung für den Endbenutzer tatsächlich verbessert.

2 „Gefällt mir“

Ich bin mir nicht sicher, ob dies ein Problem für Sie löst, aber Discourse verfügt über eine Site-Einstellung traditional markdown linebreaks, die standardmäßig deaktiviert ist. Wenn sie aktiviert ist, sind zwei nachgestellte Leerzeichen erforderlich, um einen Zeilenumbruch zu erzeugen.

Hier ist ein Beispiel mit aktivierter Einstellung:

Hier ist ein Beispiel mit deaktivierter Einstellung (dem Standardwert der Einstellung):

Es lohnt sich vielleicht, diese Seite anzusehen und das 10-minütige Markdown-Tutorial auszuprobieren: Markdown Reference. Das Discourse-Tutorial für neue Benutzer verlinkt auf diese Seite, aber es wird wahrscheinlich von vielen Benutzern übersehen, die das Tutorial absolvieren:

5 „Gefällt mir“

Das macht ASCII-Art definitiv zu einer Herausforderung, um sie richtig darzustellen. :wink:

Ich weiß die Einsicht wirklich zu schätzen. Meine Community hat eine große Sub-Community für Forenspiele/Geschichtenerzählen, in der Formatierungsfreiheit oft wichtiger ist als Konsistenz. Wenn der Hauptgrund für diese Funktionen wirklich darin besteht, ein konsistentes und vereinfachtes Erscheinungsbild beizubehalten, ist es wahrscheinlich sicher, sie für meinen Anwendungsfall zu entfernen oder ihnen zumindest eine vom Benutzer wählbare Umschaltmöglichkeit zu geben.

Dies ist ein sehr hilfreiches Tutorial, und seine Betonung auf “schönen Text machen” scheint den zuvor erwähnten Ideen der Konsistenz zu folgen. Danke, dass du darauf hingewiesen hast.

5 „Gefällt mir“

Beim Lesen von Markdown bin ich auf diese Seite gestoßen, die ich besonders erhellend fand.

Dies ist, wie ich glaube, die ursprüngliche Beschreibung von Markdown, wie sie vom Commonmark-Team zitiert wird, und sie zeigt, dass ein Kernelement dessen, warum Markdown das tut, was es tut, auf seiner Nähe zu HTML beruht.

Zum Beispiel ist der erste Satz dort:

Markdown ist ein Text-zu-HTML-Konvertierungstool für Webautoren.

Und ich denke, einige dieser Eigenheiten von Markdown sind vielleicht weniger auf ihre organisatorischen Eigenschaften zurückzuführen und mehr auf den Wunsch, den Text sauber in den entsprechenden HTML-Code zu konvertieren.

Dies erklärt, warum Leerzeichen getrimmt werden, da HTML seine Leerzeichen trimmt.

Auch der Grund, warum jede Zahlenfolge in eine aufsteigende nummerierte Liste umgewandelt wird, wird mit folgendem etwas klarer:

Markdown kümmert sich also nicht einmal um die Zahlen, weil geordnete Listen in HTML keine Zahlen zuweisen. (Der eigentliche Code in markdown-it prüft zwar das Zeichen an der ersten Position, aber nur, um die Nummerierung von diesem Zeichen aus zu starten).

Ich denke, es gibt noch mehr als das (wie z. B. Konsistenz der Formatierung über mehrere Geräte hinweg), aber einige der eigenwilligeren Aspekte scheinen sehr von HTML inspiriert zu sein.

2 „Gefällt mir“