Formatier-Konstrukte

Dieser Abschnitt enthält einige wichtige Anmerkungen über Formatier-Konstrukte, die nicht wirklich Teil der Stil-Definitions-Sprache sind, aber damit in einem engen Zusammenhang stehen.

Erstens gehören fast alle TeXmacs-Makro-Befehle, die die Darstellung von Text betreffen, in eine von zwei Klassen. Es handelt sich entweder um Fließtext-Konstrukte oder um Block-Konstrukte, deren Argument also Fließtext oder ein Block ist. Der Unterschied wird in Basis-Konstrukte genauer erklärt. Ein Block ist dabei ein Textelement, dass aus mehreren Absätzen bestehenden Text, Multi-Absatz-Text, enthält. Dagegen kann Fließtext zwar aus mehreren Textelementen bestehen, enhält selbst aber keine weiteren Absätze. Beispielsweise ist frac ein typisches Fließtext-Konstrukt, wohingegen Satz ein typisches Blockkonstrukt ist. Einige Konstrukte richten sich nach ihren Argumenten, sie sind Fließtext-Konstrukte, wenn ihr Argument Fließtext oder Fließtext-Konstrukte sind bzw. Blockkonstrukte, wenn ihr Argument ein Block oder ein Blockkonstrukt ist. Ein Beipiel dafür ist stark. Wenn man Makros schreibt, ist es sehr wichtig, dass man sich darüber im Klaren ist, ob ein Konstrukt ein Fließtext– oder ein Blockkonstrukt ist, denn Blockkonstrukte innerhalb einer horizontalen Verkettung werden nicht richtig dargestellt. Wenn man ein Blockkonstrukt mit Fließtext umgeben muß, dann muß man das surround-Konstrukt einsetzen:

<assign|mein-theorem|<macro|Rumpf|<surround|<no-indent><with|font-series|bold|Satz>|<right-flush>|Rumpf>>>

In diesem Beispiel wurde der Rumpf mit dem fett dargestellten Text „Satz” links und einem „rigth-flush” rechts umgeben (surround). Dieser Flushing „rigth-flush” dient zur besseren Darstellung der blauen Hilfslinien, wenn der Cursor sich innerhalb des Wirkungsbereichs eines Kontextes befindet. Eer dehnt den Wirkungsbereich (für die Hilfslinien) bis an den rechten Rand aus.

In den meisten Fällen findet TeXmacs selbständig heraus, welche Befehle Zeilen-Befehle und welche Block-Befehle sind. Manchmal möchte man aber einen Befehl zwangsweise zum Block-Befehl erklären. Beispielsweise kann ein Konstrukt sehr-wichtig, das folgendermaßen definiert ist:

<assign|sehr-wichtig|<macro|body|<with|font-series|bold|color|red|body>>>

sowohl als Block-Befehl als auch als Zeile-Befehl dienen. Wenn Sie nun den Cursor genau vor den with-Tag plazieren und Wagenrücklauf mit nachfolgender Rücktaste eingeben, dann erhalten Sie:

<assign|sehr-wichtig|<macro|body|<document|<with|font-series|bold|color|red|body>>>>

Weil der Rumpf, body nun ein Block ist, wird das Makro sehr-wichtig automatisch zu einem Block-Befehl. In Zukunft wird sich mit dem drd-props-Konstrukt noch besser steuern lassen, welche Befehle Zeilen-Befehle und welche Block-Befehle sind.

Eine weitere wichtige Eigenschaft von Tags ist es, ob sie normalen Text als Inhalt haben, oder ob der Inhalt tabellarisch ist. Nehmen wir einmal die folgende Definition eines Standard-Formel-Blocks, eqnarray*, allerdings ohne einen Teil der Darstellungs-Tags:

<assign|eqnarray*|<macro|body|<with|par-mode|center|mode|math|math-display|true|par-sep|0.45fn|<surround|<no-page-break*><vspace*|0.5fn>|<vspace|0.5fn><no-indent*>|<tformat|<twith|table-hyphen|y>|<twith|table-width|1par>|<twith|table-min-cols|3>|<twith|table-max-cols|3>|<cwith|1|-1|1|1|cell-hpart|1>|<cwith|1|-1|-1|-1|cell-hpart|1>|body>>>>>

Die Verwendung von surround zeigt, dass eqnarray* ein Block-Befehl ist und die Verwendung von tformat spezifiziert ein Tabellen-Konstrukt. Außerdem wurden twith und cwith benutzt, um zusätzliche Formatierinformationen festzulegen. Weil es sich um einen Block-Kontext handelt, ermöglichen wir Zeilenumbruch und lassen für die Tabelle die gesamte Absatzbreite zu (freier Leerraum wird auf die erste und letzte Spalte gleich verteilt). Außerdem haben wir festgelegt, dass es genau drei Spalten gibt.

Schließlich sollte man daran denken, dass Stildefinitionen nicht nur die Darstellung des fertigen Dokuments festlegen, sonder dass sie auch die Darstellung während der Erstellung regeln. Oben haben wir bereits den right-flush-Befehl erwähnt, der die Darstellung von sichtbaren Hinweisen von sichtbaren Inhalten verbessert. Ganz ähnlich kann auf unsichtbarere Inhalte durch Flags hingewiesen werden:

< assign | labeled-theorem | < macro | id | body |

<\surround|

<\concat|

<no-indent>

|

<flag|Id: id|blue|id>

|

<with|font-series|bold|Theorem. >

>

|

<right-flush>

|

body

>

> >

ganz allgemein kann mit dem specific-Befehl, dem als erstes Argument „screen” übergeben wird, ein sichtbarer Hinweis eingefügt werden, der im Druck nicht erscheint.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".