WackoWiki-Markup
Auch verfügbar in English, Español and Русский.
Dies ist ein ziemlich langer Artikel darüber, wie das "Wacko-Markup" entstand und warum es so ist, wie es jetzt ist. Wenn du nicht weißt, was ein "Markup" ist und vor allem, was ein Wiki ist, solltest du die WackoWiki-Projekt-Website besuchen und die entsprechenden Beiträge lesen, insbesondere den Artikel zum Wiki-Konzept.
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 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 folgende 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. 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.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.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.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.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.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.7. Minimale Umschaltung des Tastaturlayouts
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/Cluster Namensräume]]
-
((/Doc/Deutsch/Cluster Namensräume))
3. 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.
3.1. Einzeilige Auszeichnung
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
3.2. Mehrzeilige Auszeichnung
Hier werden mehrere Zeilen Text formatiert. Diese Regeln werden dort gestattet, wo sich die Anwendung häufig auf einen großen Textblock bezieht.
Es ist wie einDurchstreichen.ein Zitat, das den gesamten Absatz erfasst.
Oder
3.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.
3.4. Hyperlinks und Bilder
Vollständige URL's mit https:// werden automatisch erkannt und in einen Link umgewandelt. Handelt es sich dabei um ein Bild, wie zum Beispiel mit der Dateiendung .jpg
oder .png
, 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]]
-- gleich, aber weniger bequem -
((Verweis im Wiki mit Leerzeichen == Bezeichnung des Links))
Das Konzept der Wiki-Links ermöglicht es, Links "innerhalb der Website" einfacher einzufügen, und das Wakka-Markup berücksichtigt dies ebenfalls. Alle Links, die nicht "intern" sind, werden sofort als "extern" erkannt, ebenso wie E-Mail-Adressen.
Die Auszeichnungen für Bilder sind sehr ähnlich aufgebaut wie die Auszeichnungen für die Links:
-
((picture.jpg Bezeichnung))
-- setzt eine Bezeichnung zum Bild -
((URL small_picture.jpg))
-- eine Möglichkeit das Bild zu verlinken
3.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 |
|
So sind die Regeln für die Markierung von Listen im Wacko-Markup organisiert. Das Beispiel veranschaulicht gut, warum alle Aufzählungszeichen in der Liste zunächst um ein paar Zeichen nach rechts verschoben werden - dies vermeidet Verwechslungen mit fettem Text.
Der Einzug wird nach dem Prinzip der "gepaarten Zeichen" mit zwei Zeichen gewählt, die in gewöhnlichen Texten praktisch nicht vorhanden sind. Einige andere Wiki-Formate verwenden fünf bis sechs Leerzeichen - Sie können sich vorstellen, wie eine dritte Einrückungsebene in <textarea>
aussehen würde!
Das ursprüngliche Markup von c2.com verwendet ein Tabulatorsymbol, das uns sehr schlecht durchdacht erscheint: In den meisten Schnittstellen führt Tab Navigationsfunktionen aus, und in einigen Browsern ist es unmöglich, ein Tabulatorsymbol in das Eingabefeld einzugeben.
Die Nummerierung in den nummerierten Listen wird automatisch festgelegt, was es ermöglicht, Punkte leicht zu löschen, neue hinzuzufügen und sie in der Hierarchie zu verschieben. Wenn du eine nummerierte Liste brauchst, die mit einer Drei beginnt, starte sie 1.#3 So hier
.
- Genau so funktioniert es.
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.
3.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.
4. 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.
4.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.
4.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.
5. Komplexe Erweiterungen und Servicefunktionen
Die Idee der Wacko-Partitionierung, die von WakkaWiki übernommen und von den Autoren erweitert wurde, bietet zwei Möglichkeiten, die Auszeichnungsmöglichkeiten erheblich zu erweitern und verschiedene Arten komplexer Funktionen in Dokumente einzuführen.
Dies sind die beiden Methoden, die wir in erster Linie denjenigen empfehlen, die ihre Auszeichnungsregeln erweitern wollen. Unter anderem erfordert die Verwendung dieser beiden Methoden kein vollständiges Parsen der ursprünglichen Wacko-Formatter-Klasse.
5.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
5.2. Aktionen
Durch Aktionen wird es für den Entwickler möglich, eine komplexe Funktionalität zu implementieren (die vielleicht sogar einen Dialog mit dem Benutzer erfordert) und dem Benutzer den Zugriff auf diese Funktionalität an der richtigen Stelle im Dokument zu ermöglichen.
Im Textkörper des Wacko-Markup sieht die Verwendung von "Aktionen" wie folgt aus {{changes page="/Dev"}}
. Aktionen und die zugehörigen Parameter werden in geschwungenen Doppelklammern {{
aufgerufen. Ein wesentlicher Teil der Funktionalität im WackoWiki wird durch Aktionen ermöglicht.
Der Entwickler schreibt diese Funktionen auf die gleiche Weise wie die "Highlighter".
Mit den "Aktionen" in WackoWiki wird ein wichtiger Teil der Funktionalität für die Arbeit mit Seiten (Aufbau eines Verzeichnisses, Listen der letzten Änderungen/Kommentare, Suche) implementiert.
Die Idee dahinter ist es, in die einzelnen Seiten komplexe Funktionalitäten einzubauen, ohne das sich der Nutzer mit den Details beschäftigen muss.
5.3. Interwiki -- Änderung des Link Markups
Es gibt auch eine Möglichkeit, die Syntax für das Parsen von Links durch zusätzliche Regeln wie ((repository:address))
oder ((repository:address Reference Text))
zu erweitern.. In diesem Fall wird die Adresse als zwei Fragmente "Speicherung" und "Name in diesem Speicher" angegeben. Zum Beispiel für LiveJournal sieht die Adresse so aus: ((lj:mendokusee))
, und für den Bezug auf die Übersetzung eines englischen Wortes kann man ((lingvo:fascinating))
schreiben.
Dieses Konzept (wie auch ein Großteil unseres Designs) wird aus dem Wiki übernommen und sollte ursprünglich Seiten auf anderen Wikis anzeigen. Wie wir bemerkt haben, ist es auch für andere, weniger spezifische Zwecke sehr nützlich.
Es gibt jedoch noch andere Möglichkeiten, eine ähnliche Modifikation zu implementieren. Die folgenden Auszeichnungen werden auf verschiedenen Seiten verwendet:
-
[[ljuser romochka]]
(source) [[xpointUser280 Vladimir Palant]]
(source)[[php ereg_replace]]
(source)
Die Interwiki-Variante (Links durch einen Doppelpunkt) erscheint uns zumindest deshalb korrekter, weil sie in vielen Systemen verwendet wird und de facto ein Standard ist. Außerdem verursacht Interwiki keinen Konflikt mit dem üblichen [[Link Beschreibung]]]
.
6. 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 zwischenzuspeichern. 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.
7. Einwände
Dieser Artikel wurde geschrieben, um zu erklären, wie und warum die Regeln des Wacko-Markups erfunden wurden, woher die "paarigen Charaktere" kamen und warum wir auf die Zuversicht hoffen möchten, dass neue Projekte, die das Format des Wacko-Markups verwenden, den Prinzipien folgen, die ihm zugrunde liegen.
Wenn Sie Fragen haben, zögern Sie nicht, diese in Kommentaren oder persönlich an die Autoren des Artikels zu richten.
Mit Respekt, das WackoWiki-Team und die Autoren des Artikels:
8. Verweise
- WackoWiki Projekt
- Formatierer für die beschriebene Formatierung
- Visueller Editor für die beschriebene Formatierung
- WakkaWiki — der historische Ursprung von WackoWiki
- OpenWiki — noch einige historischer Wurzeln der WackoWiki-Formatierung
- Beschreibung des Wiki-Konzepts
- Syntax der WackoWiki-Formatierung
- Beispiele der klassischen Formatierung auf c2.com
- Was sind Wiki-Verweise — Konzept interner Wiki-Verweise