Formatierung

Welches Konzept steckt hinter dem Wacko-Syntax der Formatierung? Warum ist es so wie es jetzt ist? Dieses Kapitel beschreibt die Idee hinter den Formatierungsregeln.


1. Wacko Formatierung

Damit wird eine besondere Methode der Textformatierung bezeichnet, die versucht die Anzahl von Formatierungszeichen (mark-ups) und die Beeinträchtigung des originalen Textes so gering wie möglich zu halten. Die HTML-Darstellung im Web-Browser erfolgt dann automatisch.


Der Umfang der Formatierungszeichen muss ausreichend sein für eine sinnvolle Darstellung großer und kleiner Dokumente. Neben den herkömmlichen Formatierern wie kursiv, fett, unterstrichen und durchgestrichen gibt es hier Inhaltsverzeichnisse, Überschriften, Tabellen, Bilder, Zitatkennzeichnungen, Fußnoten und vieles andere mehr. Die Wacko-Formatierung, die hier in WackoWiki, in NPJ? und in anderen Wikis genutzt wird, kann auch für eigene Entwicklungen eingesetzt werden. Dazu kannst du den WackoFormatierer und optional den graphischen WikiEditor in dein Projekt einbauen.


2. Ursprung und Prinzipien

Zuerst wurden in WakkaWiki, aus dem viele Forks wie eben auch WackoWiki entstanden, klare Prinzipien zur Formatierung entwickelt. Von WakkaWiki sind diese Prinzipien geerbt, welche helfen, dass die Formatierung einigermaßen bequem und natürlich ist.


Die Prinzipien sollen diese Zwecke erfüllen:


  • verringere die Wahrscheinlichkeit von zufälligen Konflikten durch die Texteingaben des Nutzers, wenn zum Beispiel normaler Text als Formatierer interpretiert wird;
  • schaffe intuitive und einfach zu erlernende Formatierungszeichen, wie //kursiv// für kursiven Text.
  • schütze die Umgebung eines formatierten Textteils von möglichen Tippfehlern eines Autors.

2.1. Prinzipien

2.1.1. Bedeutung erkennbar aus Form und Struktur

Das Fundament aller Wikis ist WYTIWYG. Für das Verhältnis Bezeichnetes-Zeichen heißt das: Die Semantik eines Formatierungssymbols muss sich direkt aus dem Syntax dieses Zeichens ableiten/erkennen lassen. Anders herum gesagt, muss aus der Form des verwendeten Zeichens eine sinnvolle Deutung möglich sein.


Wir haben versucht mit den Zeichen auf der Tastatur solche sinnvollen Verbindungen herzustellen:

  • ** fett **
  • // kursiv //
  • __unterstrichen__
  • --durchgestrichen--
  • !! Hinweis !!
  • und viele mehr

Damit haben wir uns von der klassischen Wiki-Formatierung entfernt, die maximal fünf Formatierer-Symbole auf jeder Seite des Textes kennt.


2.1.2. Doppelzeichen-Regel

Alle Formatierungssymbole enthalten zwei Zeichen. Dadurch kann einfacher Text aus jedem beliebigen Texteditor in WackoWiki eingefügt werden (kopieren & einfügen). Du brauchst keine spezielle Vorbereitung des einzufügenden Textes, denn es ist unwahrscheinlich, dass dein Text Symbole in Doppelzeichen enthält.


Die Formatierer, die aus 3, 4 oder bis zu 6 einzelnen Zeichen bestehen, werden zur Abtrennung der Überschriften genutzt. Je länger die Zeichenkette, umso "tiefer" befindet sich eine Überschrift in der Gliederungsebene des Inhaltsverzeichnisses.


2.1.3. Verbindung von Formatierungszeichen und einfachem Text

Es gibt Menschen, die zum Beispiel einen Minus-Strich [] immer mit "zwei minus" [ -- ] schreiben und dadurch ein Wacko-Formatierer verwenden. Das Prinzip, welches hier Abhilfe schafft, ist, dass die Formatierungszeichen immer in Berührung mit dem einfachen Text kommen müssen, um wirksam zu werden. Am Beispiel siehst du, dass der erste Formatierer und der Zweite ohne eine Lücke an den Text anschließen. Dies gilt nur für die Doppelzeichen, die gelegentlich auch in dem einfachen Text vorkommen können.


  • -- dieser Text mit "Doppel-Minus" wird nicht durchgestrichen -- sondern bleibt so: — dieser Text mit "Doppel-Minus" ist nicht durchgestrichen — und

  • --dieser Text ist durchgestrichen-- wird zu dieser Text ist durchgestrichen

2.1.4. Zeilenumbruch und Absatzformatierung

Die Übertragung des Textflusses aus einem eingefügten einfachen Text in die WackoWiki-Formatierung erfolgt fortlaufend. Durch zwei leere Zeilen beginnt ein neuer Absatz, dass heißt zwei Zeilenumbrüche werden immer als das Ende eines Textblocks interpretiert.


Formatierungszeichen, welche die Eigenschaften von Text-Zeichen und Überschriften ändern, funktionieren nur innerhalb eines Textflusses (Zeile), der durch jeden Zeilenumbruch begrenzt wird. Damit werden vier Dinge erfüllt:


  • verringert die Wahrscheinlichkeit von zufälligen Konflikten zwischen Formatierungszeichen und Texteingaben des Nutzers
  • vereinfacht Erkennen der richtigen Formatierung, da "Anfang" und "Ende" nicht so weit auseinander liegen (wie bei HTML oder XML)
  • ermöglicht die separate Text- und Zeichentypformatierung von kleineren Textblöcken, was die Anforderungen an die Nutzer reduziert
  • es kommt zu einer besseren Vorstellung von dem zu erwartenden Ergebnis ... WYTIWYG

2.1.5. fehlertolerante Formatierung

Durch die aufgezeigten Prinzipien wird ein sehr wichtiger Aspekt berücksichtigt: Den Schutz der HTML-Ausgabe einer Textseite vor möglichen Fehlern bei der Formatierung. Wegen der Regel des Abtrennens der Textbereiche können wir den Anfang und das Ende einer Formatierung genau feststellen und sofort die HTML-Tags setzen (oder eben keine setzen). Formatierungsmöglichkeiten, die ohne diese Regeln der direkten Paarbildung funktionieren, müssen etwas aufmerksamer auf Korrektheit überprüft werden. Wie du hier in der Dokumentation sieht, ist auch das umsetzbar.


2.1.6. transparente Fehler

Ein Fehler bei der Benutzung der Formatierungszeichen wird sofort im Web-Browser sichtbar und intuitiv verständlich. Der restliche Teil der WackoWiki Installation und die Erstellung der Seite im HTML Format wird durch diese Fehler nicht beeinträchtigt.


  • ##hier ist etwas eigenartig und das !!hier ist anders

  • hier ist alles so wie gedacht auch so wie bekommen

2.1.7. Internationale Zeichensätze

Eine weitere wichtige Sache ist es, die Zeichen zur Formatierung so zu wählen, dass der Hauptteil auf der Tastatur bequem zu erreichen ist. Dabei müssen wir vor allem bedenken, dass es verschiedene Tastaturlayouts gibt; kyrillische, lateinische und so weiter. Das ist einer der Gründe warum es doppelte Syntax für die gleiche Semantik gibt.


  • [[/Doc/Deutsch/Hierarchie Wacko Cluster]]
  • ((/Doc/Deutsch/Hierarchie Wacko Cluster))

2.2. Formatierungsregeln

Ausgehend von unseren Prinzipien, haben wir die Formatierungsregeln weiterentwickelt und dabei auch die anderen Wikis beobachtet. Wir glauben, dass wir die Besten der vielen Regeln in WackoWiki integriert haben. Obwohl es viele Funktionen gibt, bleibt alles noch einfach und übersichtlich. In diesem Kapitel geht es um das Verständnis, wie wir zu den wichtigsten Formatierungsregeln gekommen sind.


2.2.1. Einzeilige Formatierung

Dazu gehören alle Regeln, die häufig zur Darstellung in einfachen Texten genutzt werden und innerhalb eines Zeilenumbruchs (Absatzes) Verwendung finden.


  • fett, kursiv, unterstrichen
  • klein, monospace Schreibmaschinentext
  • Überschriften
  • Verweise (kurze Bezeichnung für unpraktische Hyperlinks)
  • hochgestellte und tiefgestellte Wörter
  • Erläuterung

2.2.2. Absatzformatierung

Hier werden mehrere Zeilen Text formatiert. Diese Regeln werden dort gestattet, wo sich die Anwendung häufig auf einen großen Textblock bezieht.


ein Textzitat, welches ein ganzen zusammen Block umfasst

oder etwa die Formatierung von CSS, diff, DTD, Javascript, mySQL, PHP, Python, SQL, XML oder ähnliches


<config>
<section name="test">
  <var>Test</var>
  <val><![CDATA[..text...]]></val>
</section>
</config>


2.2.3. Ausblenden von Formatierungsregeln

Formatierer werden auf zwei Arten ausgeblendet

  • eine ""//Menge Text mit Formatierern//"" wird durch doppelte Anführungszeichen "" ausgefiltert: //Menge Text mit Formatierern//
  • durch eine Tilde ~WikiWort wird die nächst folgende Formatierungsregel übersprungen: WikiWort

Die erste Methode ermöglicht es einen längeren Text von Formatierungen auszuschließen. Die zweite Methode ist bequemer wenn man zum Beispiel ein einziges WikiWort oder ein Formatierungszeichen ausblenden möchte. Erst die Tilde ~ ermöglicht die Darstellung der doppelten Anführungszeichen "" wie oben im Text. Wenn du den Quelltext der Dokumentation hier anschaust, siehst du, dass die Möglichkeit der Ausblendung von Wiki-Formatierern sehr häufig verwendet wird.


2.2.4. Hyperlinks und Bilder

Vollständige URL's mit http:// werden automatisch erkannt und in einen Link umgewandelt. Handelt es sich dabei um ein Bild, wie zum Beispiel mit der Dateiendung .gif .jpeg .png .svg, setzt WackoWiki diese URL in ein <img> Tag. Dadurch kann die URL eines Bildes ohne nachzudenken aus der Zwischenablage eingefügt werden und es erscheint das gewünschte Bild. Denke daran, dass du so mit jedem Aufruf deiner Seite auch Datenverkehr mit dem Server verursachst, auf dem das Bild liegt.


Zur Beschriftung einer URL gibt es drei verschiedene Möglichkeiten:


  • ((URL Beschriftung des Hyperlinks))
  • [[URL Beschriftung des Hyperlinks]] — mit dem selben Ergebnis
  • ((Verweis im Wiki mit Leerzeichen == Bezeichnung des Links))

Die Formatierung der Seitenverweise kann in der gleichen Art und Weise auch für interne Links genutzt werden. Die Beschriftung von Bilder erfolgt analog.


  • URL_kleines_bild.jpg — setzt einen externen Hyperlink zum Bild
  • ((URL bild.jpg Bildtitel)) — fügt das Bild mit Titel ein

  • ((file:bugtracker_bugs_sort_by.png lokal Titel)) — fügt ein lokal oder global verfügbares Bild mit Titel ein 
  • ((file:/bugtracker_bugs_sort_by.png lokal Titel)) — ein global verfügbares Bild mit Titel

  • file:/globales_bild_ohne_beschriftung.jpg — ein global abgelegtes Bild ohne Beschriftung

2.2.5. Aufzählungen und Listen

Die Formatierung erfolgt intuitiv mit der Möglichkeit arabische und lateinische Ziffern sowie lateinische Buchstaben und einfache Punkte zu nutzen. Für jede Ebene sind je zwei Leerzeichen einzurücken – eine Tatsache, die in normalen Texten kaum vorkommt. Die Aufzählungen können auch beliebig kombiniert werden, wobei Texte für gewöhnlich in der Reihenfolge Ziffer, Buchstabe, Punkt formatiert werden.


Eingabe Ausgabe im Browser
1. nummeriertes Hauptelement mit Arabischen Ziffern
A. Listenelement
A. nächster Punkt
1. einfache Aufzählung
1. ...

1.#2 nächstes Hauptelement

A. Teilelement
A. Teilelement
*oberstes Listenelement
*Listenelement der nächsten Ebene

  1. nummeriertes Hauptelement mit Arabischen Ziffern
    1. Listenelement
    2. nächster Punkt
      1. einfache Aufzählung
      2. ...

  1. nächstes Hauptelement
    1. Teilelement
    2. Teilelement
    • oberstes Listenelement
      • Listenelement der nächsten Ebene

Damit ist es möglich nummerierte Listen zu erstellen, sowie die Nummerierung über Absätze hinweg fortzuführen; 1.#n wobei n für die gewünschte Folgeziffer steht. Aufzählungen mit Ziffern schreibt man bequemer Weise immer mit 1. erstes Element, 1. zweites Element, u.s.w. wie im Beispiel oben. Dadurch kann jederzeit die Reihenfolge der Elemente geändert werden und man spart sich die aufwendige Korrektur für die richtige Ziffernfolge.


2.2.6. Tabellenformatierung

Die Tabelle – das ist der wunde Punkt jeder Formatierung. Als beste Lösung hat es sich herausgestellt, die vertikalen Linien des Rasterfeldes einer Tabelle nachzuahmen. Dieses ist einfacher als durch Bindestriche, Plus und vertikale Linien das gesamte Rasterfeld zu skizzieren, und es gibt gleichzeitig die Möglichkeit den Ausgangstext vollständig in der Tabelle zu lesen. Details dazu liest du in der Formatierungs-Übersicht.


Leider können die Tabellen in bestimmten Fällen den WackoWiki Syntax verletzen. Die tatsächliche Ansicht des Dokuments ist dann nicht so wie du das erwartet hast. Vergisst man bereits eine der vertikalen Linien, so werden die darauf folgenden Formatierer nicht korrekt interpretiert. Jedoch merkst du das sofort und kannst es schnell korrigieren. Das ist der Preis, den wir bereit waren zu zahlen, für die Klarheit des Syntax und zugunsten der Geschwindigkeit von WackoWiki im Vergleich mit seinen Vorgängern.


2.3. Entwicklung zusätzlicher Formatierer

Die bisher vorgestellten Formatierer sind bei weitem nicht alle die es gibt – nur die Grundlegenden. Falls diese für dich nicht ausreichend sind, schaue im Kapitel über die Textformatierung nach. Sollte anschließend klar werden, dass die bestehenden Regeln nicht weiterhelfen, dann lohnt es möglicherweise die Formatierungsregeln zu erweitern.


2.3.1. Wann lohnt es sich die bestehende Formatierung zu verändern?

Niemals.


Die Veränderung der bestehenden Formatierungsregeln macht für dich Sinn, kann aber ein großer Einschnitt für Leute sein, die sich an die bestehenden Formatierungen gewöhnt haben. Stell dir vor wie die Seiten aussehen, wenn nach einer Aktualisierung von Wacko, die Formatierungszeichen plötzlich etwas ganz anderes tun, als das ursprünglich geplant war.


Zweifellos, wenn irgendeine Regel dein konkretes Projekt wesentlich behindert, dann kann man über einen Austausch nachdenken.


2.3.2. Wann lohnt es sich neue Formatierungen einzuführen?

So selten wie möglich.


Die WackoWiki Formatierung ist eine auf das Wesentliche reduzierte "Mark-up"-Methode, die schnell und einfach funktionieren muss, ohne sich mit den grundlegenden Funktionen zur Formatierung beschäftigen zu müssen.


Wenn etwas einfach ist, ohne dass man einen Moment zögert, dann kann man ein neue Formatierung einführen. Dazu musst du dich in die Lage deiner Nutzer versetzen. Sie müssen die Formatierung ohne zögern nutzen können und das wird nur dann möglich, wenn die Entwickler jede neue Regel sorgfältig auf die möglichen Konsequenzen untersuchen.


Falls du die WackoWiki Formatierung erweitern möchtest, ist es das Beste sich mit den Entwicklern von WackoWiki in Verbindung zu setzen. Vielleicht gibt es deine Idee schon, was dir dann viel Zeit spart.


2.4. Indirekte Formatierungen und Service-Funktionen

Die folgenden zwei Methoden erweitern die Möglichkeiten der Formatierung und ermöglichen damit verschiedene komplexe Darstellungen. Wer die Möglichkeiten der Formatierung ausschöpfen möchte, dem Empfehlen wir zuallererst die folgenden Erweiterungen.


2.4.1. Textmarkierer (Highlighter)

Einen solchen Markierer kann man verwenden, wenn die Kernaussagen von komplexen Vorgängen verdeutlicht werden soll. Für den Leser ist es dann sehr einfach zu erkennen.


Die Hervorhebung wird durch doppelte Prozentzeichen %% eingeschlossen, zum Beispiel so %%(.html)<.div class=".test">.testdiv</.div>... %%


Als Markierungsregel wird der Syntax an verschiedenen Stellen genutzt, zur Hervorhebung von Code, zur Gestaltung von Chat- und E-Mailunterhaltungen


2.4.2. Aktionen

Durch Aktionen wird es für den Entwickler möglich komplexe Funktionen zu erstellen, die auch einen Dialog mit dem Nutzer ermöglichen. Aktionen und die zugehörigen Parameter werden in geschwungenen Doppelklammern {{ aufgerufen. Ein wesentlicher Teil der Funktionalität im Wackowiki wird durch Aktionen ermöglicht.


Die Idee dahinter ist es, in die einzelnen Seiten komplexe Funktionalitäten einzubauen, ohne das sich der Nutzer mit den Details beschäftigen muss.


2.5. Technische Details des WackoFormatierers

Es ist hier nicht die geeignete Stelle um die technischen Details des WackoFormatierers zu erklären. Die Grundlagen sind allerdings erwähnenswert.


Erstens, der Formatierer selbst beruht auf Standardsprachen (namentlich perl-kompatiblen Standards) und funktioniert entsprechend den Prinzipien "rekursiver Auswahl". Es bedeutet, dass er versucht den Text in die größtmöglichen Fragmente zu unterteilen und dann die Formatierungsregeln ausführt. Folglich ist es nicht möglich einzelne Formatierungsregeln in sich selbst (direkt) darzustellen, etwa ein Beispiel über die genutzte Formatierung zu geben indem man die Regel doppelt benutzt. Das ist auch nicht notwendig. Will man die Regel für eine spezielle Formatierung erkennen, öffnet man die entsprechende Seite und sieht den Syntax der Formatierung.


Zweitens, arbeitet der Formatierer in mehreren Stufen um vor gelegentlichen Fehlern ("random wear and tear") zu schützen. Im ersten Schritt verarbeitet er eine reduzierte Anzahl an Regeln, die es möglich macht die Textfragemente zu scannen nachdem in diesen Fragmenten Formatierungen untersagt wurden. Im Textfragment werden alle Highlighter separiert, was vor Überlappung der Highlighter mit anderen Textformatierern schützt. Im Anschluss werden die restlichen Formatierungsregeln verarbeitet.


Drittens, ermöglicht es der Formatierer den formatierten Code zu cachen. Der Cache enthält ein "halbfertiges Produkt", da die Textformatierung Funktionen beinhalten, die eine Interaktion mit dem Nutzer erfordern, als auch Referenzen zu Seiten erzeugen, die für verschiedene Nutzer unterschiedlich verarbeitet werden können. Die endgültige Formatierung – die schnellste Variante, ohne rekursive Verfahren zu benötigen – wird bewerkstelligt durch das Zusammensetzen von der "halbfertigen Version", die Erstellung von Seitenverweisen (Hyperlinks) und dem Einfügen von Aktionen.


Falls du dich für die Technik in allen Einzelheiten interessierst, schaue dir den Quelltext des Wacko-Formatierers an.

3. Verweise

  1. WackoWiki Projekt
  2. Formatierer für die beschriebene Formatierung
  3. Visueller Editor für die beschriebene Formatierung
  4. WakkaWiki — der historische Ursprung von WackoWiki (warscheinlich nicht erreichbar)
  5. OpenWiki — the still some historical roots of the WackoWiki-Formatierung
  6. Beschreibung des Wiki-Konzepts
  7. Syntax der WackoWiki-Formatierung
  8. Beispiele der klassischen Formatierung auf c2.com
  9. Was sind Wiki-Verweise — Konzept interner Wiki-Verweise

Read comment (1 comment)