Ork und sein Umgang mit Textformaten


Stand: 08. 01. 2004

1. Allgemeines
2. Steuerzeichen
3. HTML-Klammern
4. Punktkommandos
5. Tabellen
6. Verschiedenes

1. Allgemeines

Die folgenden Informationen sind für Spielleiter gedacht, die sich nicht damit zufriedengeben, einfach ein paar Spiele zu leiten, sondern wissen wollen, wie Ork intern funktioniert. Es ist nicht erforderlich, diese Informationen zu lesen oder sie gar zu verstehen.

Es geht in diesem Dokument darum zu schildern, wie Ork Texte erzeugt und sie in verschiedene Formate konvertiert - und wie man die Fähigkeiten von Ork dabei bis auf das Letzte ausreizt.

Für die Texte in den Auswertungen gibt es im wesentlichen drei Quellen: die Steuerdatei, die während der Verarbeitung angelegte Meldungsdatei (*.MLD) und der Datensatz selbst (*.ORK-Datei). Die Meldungsdatei und der Datensatz sind vom Spielleiter im Prinzip unbeeinflußbar. Es handelt sich zwar um Textdateien, aber ihr Aufbau ist kryptisch und soll hier nicht weiter behandelt werden.

Die Steuerdatei hingegen ist der Platz für Spieler und Spielleiter, um dort Texte einzugeben, die dann in den Auswertungen an verschiedenen Stellen erscheinen können.

Ork ist in der Lage, Auswertungen im HTML-Format und in verschiedenen Zeichenformaten anzubieten. Im einzelnen sind das Text ohne Umlaute, mit OEM-Umlauten, mit ANSI-Umlauten, mit KS-DOS-Formatierzeichen und mit Sym-Formatierzeichen. Um dies zu schaffen, stellt Ork zunächst einen Text in einem Präformat her. Text, der in der Steuerdatei für die Auswertung zur Verfügung gestellt wird, muß bereits in diesem Präformat vorliegen.

Bei dem Präformat handelt es sich grundsätzlich um normalen Text mit Windows-Umlauten. Eine besondere Rolle spielen die geschweiften Klammern ("{" und "}") sowie Zeilen, die mit einem Punkt, gefolgt von zwei Buchstaben, beginnen. Bei der Abfassung von Texten sollten diese Elemente nicht vorkommen, wenn damit nicht die speziellen Wirkungen, die hier beschrieben werden, erzielt werden sollen.

2. Steuerzeichen

Für Schriftauszeichnungen werden folgende Steuerzeichen im Präformat verwendet:

{F+}, {F+}:Fettschrift ein bzw. aus
{K+}, {K-}:Kursivschrift ein bzw. aus
{U+}, {U-}:Unterstrichen ein bzw. aus
{S+}, {S-}:Kleine Schrift ein bzw. aus
{B+}, {B-}:Große Schrift ein bzw. aus
{T+}, {T-}: Diese Steuerzeichen wirken sich nur auf die Wiedergabe in HTML aus. Es wird das "<pre>"-Tag bzw. das "</pre>"-Tag eingefügt. Dadurch wird Festbreitenschrift und Übernahme des Originalformates eingestellt bzw. ausgeschaltet.

Beispiel:

Gleich, nämlich {F+}hier beginnt fetter Text, und hier{F-} endet er.

3. HTML-Klammern

a) Freie HTML-Klammern

Mit einem Paar aus "{*" und "*}" (HTML-Klammern) werden HTML-Anweisungen eingeschlossen. Alles, was zwischen diesen beiden HTML-Klammern steht, wird bei einer Konvertierung in HTML direkt übernommen. Die HTML-Klammern müssen in der gleichen Zeile stehen. Eine Zeile, die mit einer HTML-Klammer beginnt und schließt, in der also nichts anderes steht, als Anweisungen für eine eventuelle HTML-Konvertierung, wird beim Umwandeln in ein Zeichenformat ausgelassen. Ansonsten wird nur der Zeilenteil von der öffnenden bis zur schließenden HTML-Klammer einschließlich der Klammern selbst gelöscht.

Beispielsweise kann man so einen Link in eine Meldung des Spielleiters einbauen. Das könnte so aussehen:

Hallo, liebe Mitspieler. Kuckt doch mal unter 
{*<a href="http://khurrad.de">*}http://khurrad.de{*</a>*}
nach den neuesten Änderungen.

b) Pseudo-HTML-Klammern

Es gibt zur Vereinfachung Möglichkeiten, HTML-Kommandos verkürzt im Text darzustellen. Dies geschieht durch einen Ausdruck der Form:

{H...}

Alles, was mit "{H" beginnt und bis zur nächsten Klammer "}" folgt, versucht KS, in ein sinnvolles HTML-Kommando zu übersetzen. Bislang gibt es folgende Möglichkeiten:
{H:Bezeichner} <name="Bezeichner"></a>
{H#Bezeichner} <a href="#Bezeichner">
{H-Bezeichner} <a href="Bezeichner">
{H} </a>

4. Punktkommandos

Folgende Punktkommandos werden im Präformat verwendet:

.ba, .be Schließt einen Block von Text ein, der beim Drucken nicht getrennt werden soll.
.za, .ze Schließt einen Block von Text ein, bei dem auch bei Umsetzung in HTML bei einem Zeilenende im Präformattext auch ein Zeilenende im HTML-Text eingefügt wird.
.pa Seitenvorschub.
.pa <Zahl> Seitenvorschub, wenn die nächsten <Zahl> Zeilen nicht mehr auf die Seite passen.
.rc <Text> Der angegebene Text wird mehrfach wiederholt, so daß er eine Zeile ausfüllt.
.hg <Parameter> Mit diesem Punktkommando kann eine Tabelle mit nur einer Datenzelle eingefügt werden, deren Funktion es ist, einem Text eine andere Hintergrundfarbe zu verleihen. Die Tabelle wird beendet mit ".hg ende". Sie wird eingeleitet mit ".hg <Farbausdruck>", wobei "Farbausdruck" eine gültige HTML-Farbangabe sein muß (zum Beispiel "#ffeedd"). Es kann auch das Wort "grau" verwendet werden; dies entspricht "#eeeeee".

Beispiel:
.hg grau
Dies ist ein Text mit grauem Hintergrund.
Das liegt an dem schönen neuen Punktkommando.
.hg ende

Die Punktkommandos, die das Druckverhalten steuern, haben nur im Zeichenformat Wirkung, und werden auch nur von "Khurrads Sekretär" interpretiert. Irgendwann einmal werde ich möglicherweise in CSS fit genug sein, um auch die HTML-Entsprechungen programmieren zu können.

5. Tabellen

Eine Tabelle beginnt mit einer Zeile mit einem ".tb"-Punktkommando. Darauf folgen beliebig viele Zeilen, die jeweils mindestens ein Zeilentrenn-Steuerzeichen ("{Z}") enthalten müssen. Die Tabelle wird mit ".et" abgeschlossen. Innerhalb einer Tabelle hat der Unterstrich eine besondere Funktion. Er wird bei der HTML-Ausgabe in ein hartes Leerzeichen umgewandelt ("&nbsp;"). Bei Ausgabe in einem Zeichenformat wird er in ein normales Leerzeichen umgewandelt. Es ist also nicht möglich, in der Tabelle das Zeichen "_" darzustellen.

.tb <Parameter>

Leitet eine Tabelle ein und macht Vorgaben für deren Gestaltung. Ork versucht, die Tabellen sowohl im Zeichenformat als auch im HTML-Format "semantisch" ähnlich aussehen zu lassen.

Die Parameter des ".tb"-Kommandos werden durch ";" getrennt. Mögliche Parameter:

ParameterHTML-WirkungWirkung im Zeichenformat
s=<Spaltenfolge> Die unter "Zeichenformat" dargestellten Formatierungen für Fettdruck einer Spalte und Ausrichtung des Textes werden übernommen, nicht jedoch die Spaltentrenner und die Breitenangaben. Die Spaltenfolge gibt die Breite der einzelnen Zellen an (in Zeichen). Die Zahlen werden durch Leerzeichen getrennt. Wenn die Spalten durch besondere Zeichen getrennt werden, werden diese zwischen die Spaltenbreiten eingefügt. Dabei steht ein Unterstrich ("_") für ein Leerzeichen. Die Spaltenbreite "0" steht für eine Spalte, deren Breite vom Programm bestimmt wird. Wird der Spaltenbreite der Buchstabe "R" vorgesetzt, wird die Spalte rechtsbündig formatiert, bei "Z" zentriert und bei "L" linksbündig. Wird der Spaltenbreite ein "F" vorgesetzt, wird die Spalte fett gedruckt. Wird der Spaltenbreite ein "K" vorgesetzt, wird die Spalte kursiv gedruckt. Wird ein "N" vorgesetzt, wird der Spalteninhalt nicht umgebrochen.

Beispiel:

s=10 20 30 20

Die Tabelle hat 4 Spalten, die durch Leerzeichen getrennt werden. Die Spalten sind 10, 20, 30 und 20 Zeichen breit.

s=10 | 20 || 0 | RF20

Die Tabelle hat 4 Spalten. Die Spalten 1 und 2 sowie 3 und 4 werden durch einen senkrechten Strich getrennt. Die Spalten 2 und 3 werden voneinander durch zwei senkrechte Striche getrennt. Die Spalten 1, 2, und 4 sind 10, 20 und 20 Zeichen breit. Die dritte Spalte ist so breit, daß der breiteste Zelleninhalt, der für diese Spalte bestimmt ist, gerade noch reinpaßt. Bei der vierten Spalte wird der Inhalt rechtsbündig angeordnet und fett gedruckt.

bc=<Farbwert> Damit wird die Hintergrundfarbe der HTML-Tabelle gesetzt. Der <Farbwert> wird unverändert übernommen. Beispiele: bc=red, bc=#ffeedd. Keine Wirkung.
csp=<Zahl> Setzt den Parameter "cellspacing". Keine Wirkung.
cpd=<Zahl> Setzt den Parameter "cellpadding". Keine Wirkung.
rsg=<Zahl> Setzt für die gesamte Tabelle die Schriftgröße. Dabei gibt <Zahl> die Schriftgröße in Prozent relativ zur normalen Schriftgröße an. Keine Wirkung.
indent=<Zahl> Keine Wirkung. Die ganze Tabelle wird um <Zahl> Zeichen eingerückt.
blind Die Tabelle hat weder Rahmen noch Zelltrennlinien. Die Tabelle hat keinen Rahmen.
offen Die Tabelle hat keinen Rahmen, aber Zelltrennlinien. Die Tabelle hat keinen Rahmen.
Gruppen Entspricht "rules=groups". Die Tabelle hat einen Rahmen.
Spalten Entspricht "rules=cols". Die Tabelle hat einen Rahmen.
geschlossen Die Tabelle hat Rahmen und Zelltrennlinien. Die Tabelle hat einen Rahmen.
Kopf Die erste Zeile der Tabelle ist eine Kopfzeile (<thead>...</thead>). Nach der ersten Zeile wird eine tabellenbreite Linie eingefügt.
Fetterkopf Wie Kopf, aber der Text wird außerdem fett geschrieben. Wie Kopf, und der Text der ersten Zeile wird fett geschrieben, wenn das Zeichenformat grundsätzlich eine Formatierung zuläßt.
FUKopf Wie Fetterkopf, aber nicht nur fett, sondern auch unterstrichen. Wie Fetterkopf, aber nicht nur fett, sondern auch unterstrichen.
Fuss Die letzte Zeile einer Tabelle ist eine Fußzeile (<tfoot>...</tfoot>). Vor der letzten Zeile wird eine tabellenbreite Linie eingefügt.
Festbreite Für den Tabellentext wird eine Festbreitenschrift verwendet. Keine Auswirkung.
Proportional Für den Tabellentext wird die Standardschrift verwendet. Keine Auswirkung.

{Z}

Trennt Zellen voneinander.

Zeichenformat: Steht {Z} allein in einer Zeile, wird bei ASCII-Formaten eine waagerechte Linie von "-" tabellenbreit eingefügt.

{R}

Am Anfang einer Zeile stehend sorgt es dafür, daß die Zeile fettgedruckt wird.

.et

Beendet eine HTML-Tabelle.

Hinweise und Beispiele zu den Tabellen

Man kann auf das ".tb"-Kommando und notfalls auch auf das ".et"-Kommando verzichten. Dann wird eine blinde Tabelle erzeugt (ohne Rahmen und Gitternetzlinien). Sie beginnt mit der ersten Zeile, die "{Z}"-Steuerzeichen enthält und endet, sobald Ork entweder auf ".et" oder eine Zeile ohne "{Z}" trifft. Zur Zeit ist es aber noch erforderlich, ".et" zu verwenden, wenn die Tabelle am Textende steht. Ork würde andernfalls die Tabelle nicht ausgeben.

Beispiel für eine Tabelle:

.tb spalten; fukopf; s=L | L | R
Name{Z}Vorname{Z}Alter
Naumann{Z}Thomas{Z}41
Naumann{Z}Sabine{Z}37
Naumann{Z}Lisa{Z}12
Naumann{Z}Eva{Z}5
Naumann{Z}Onno{Z}3
.et

Dies ergibt im Format "ANSI-Umlaute":

+---------------------+
|Name   |Vorname|Alter|
+---------------------+
|Naumann|Thomas |   41|
|Naumann|Sabine |   37|
|Naumann|Lisa   |   12|
|Naumann|Eva    |    5|
|Naumann|Onno   |    3|
+---------------------+

So sieht die Tabelle im HTML-Format aus:
NameVornameAlter
NaumannThomas41
NaumannSabine37
NaumannLisa12
NaumannEva5
NaumannOnno3

6. Verschiedenes

Was ist das KS-DOS-Format?

"KS" steht für "Khurrads Sekretär". KS ist ein Texteditor. Es gab ihn bereits früher als DOS-Programm. Inzwischen gibt es ihn nur noch als Programm für Windows.

KS für DOS verwendet Steuerzeichen, die aus drei Zeichen bestehen: dem ASCII-Zeichen 28 (dezimal) und genau zwei Buchstaben. Wenn man einen Text ausdruckt, wird diese Zeichenfolge durch eine vordefinierte Steuerzeichenfolge ersetzt, die den Drucker zu irgendeinem interessanten Verhalten veranlaßt. Beispielsweise erzeugt *FT (* steht für das ASCII-Zeichen 28) eine Steuerzeichenfolge, die den Drucker dazu bringt, fett zu drucken.

Da es immer noch Leute gibt, die KS für DOS verwenden und die DOS-Ork-Versionen dies auch als Standardausgabeformat verwenden, unterstützt Ork für Windows dieses alte KS-Format ebenfalls. Die Steuerzeichen im Präformat werden dabei in die entsprechenden KS-Steuerzeichen umgesetzt (beispielsweise "{F+}" in "*FT").

Auch das KS-DOS-Format kennt Punktkommandos. Die meisten heutigen Punktkommandos versteht auch KS für DOS (und Ork für DOS). Daher bleiben die Punktkommandos des Präformats erhalten, wenn in das KS-DOS-Format konvertiert wird.

Was ist das Sym-Format?

Das Sym-Format ist im wesentlichen deckungsgleich mit dem Präformat. Der einzige Unterschied ist, daß Tabellen aufgelöst sind. Statt der ".tb"-Punktkommandos und der Zeilen mit dem Trennzeichen "{Z}" sieht man im Sym-Format also die tatsächliche Tabelle.

Khurrads Sekretär für Windows interpretiert das Sym-Format beim Ausdrucken, ebenso wie Ork für Windows.

Wie genau behandelt die Konvertierroutine geschweifte Klammern?

Sobald die Routine auf eine geschweifte öffnende Klammer trifft (also "{"), wird zunächst geprüft, ob die nächsten drei Zeichen eine der möglichen Schriftauszeichnungen sind. Ist das so, hat die Konvertierroutine ein Steuerzeichen festgestellt und konvertiert entsprechend. Sie entfernt die Steuerzeichen, wenn Text ohne Umlaute, ANSI-Umlaute oder OEM-Umlaute das Ziel ist, wandelt sie um, wenn es KS-DOS-Steuerzeichen werden sollen oder das Zielformat "HTML" ist, und behält sie ohne Konvertierung, wenn das Zielformat "Sym" ist.

Wenn dies nicht der Fall ist, wird geprüft, ob der nächste Buchstabe entweder ein "Z" oder ein "R" ist. Ist dies so, wird weiter geprüft, ob das nächste Zeichen eine schließende geschweifte Klammer oder ein Leerzeichen ist. Wenn es ein Leerzeichen ist, wird gesucht, ob sich in der gleichen Zeile eine schließende geschweifte Klammer ("}") befindet. Wenn auch diese Prüfung erfolgreich ist, handelt es sich nach Auffassung der Konvertierroutine um ein Steuerzeichen, und es wird entsprechend interpretiert bzw. entfernt (je nach Zielformat).

Wenn die obigen Prüfungen fehlschlagen, so daß die Konvertierroutine zum Ergebnis kommt, daß kein mögliches Steuerzeichen vorliegt, bleiben die geschweiften Klammern und der dazwischenstehende Text erhalten. Man kann also geschweifte Klammern verwenden, wenn man vorsichtig ist, aber ich empfehle das nicht.

Bei allen geschilderten Prüfungen kommt es nicht darauf an, ob Buchstaben groß oder klein geschrieben werden.

Wie genau behandelt die Konvertierroutine Zeilen, die mit einem Punkt anfangen?

Zeilen, die als erstes Zeichen einen Punkt (".") enthalten, stehen im Verdacht, ein Punktkommando zu sein. Die Konvertierroutine trennt probehalber den links neben dem ersten vorkommenden Leerzeichen stehenden Teil dieser Zeile ab (gibt es kein Leerzeichen, wird die ganze Zeile genommen) und bildet daraus einen Prüfstring. Dann wird getestet, ob der Prüfstring eines der folgenden Punktkommandos ist (wobei Großbuchstaben und Kleinbuchstaben keine Rolle spielen):

.BA .BE .PA .DT .FA .FE .RC .HE .FT .TA .TE .ZA .ZE .AA .AE .HG

Ist der Test erfolgreich, handelt es sich um ein Punktkommando, das je nach Zielformat interpretiert bzw. gelöscht wird. Wenn der Test nicht erfolgreich ist, geht die Konvertierroutine von einer normalen Textzeile aus.

Man kann also Zeilen mit einem Punkt beginnen lassen, wenn man genügend vorsichtig ist. Ich rate aber davon ab.

Zurück zum Seitenanfang