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.
|
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> |
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:
|
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 (" "). 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:
| Parameter | HTML-Wirkung | Wirkung 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.
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:
| Name | Vorname | Alter |
| Naumann | Thomas | 41 |
| Naumann | Sabine | 37 |
| Naumann | Lisa | 12 |
| Naumann | Eva | 5 |
| Naumann | Onno | 3 |
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.