Name
PARAGRAPH

Syntax
PARAGRAPH name ausrichtung,
einzug1, einzug_links, einzug_rechts,
zeilenabstand [, tabulator1 [, ...tabulatork]]
[attributdefinition1
[... attributdefinitionm]]
text1
[... texto]
[attributdefinitionm+1
[... attributdefinitionm+n]]
texto+1
[...texto+p]
[...]
ENDPARAGRAPH

Aufklappen Wertebereiche
name, Typ text
1 ≤ ausrichtung ≤ 4, Typ integer (*)
einzug1, Typ real
einzug_links, Typ real
einzug_rechts, Typ real
0 ≤ zeilenabstand, Typ real
tabulatori, Typ real
texti, Typ text
attributdefinition[i, GDL-Befehle zum setzen von Attributen (PEN, STYLE, MATERIAL)

(*) Ausrichtung des Textes ist mit ausrichtung=
=1: linksbündig
=2: zentriert
=3: rechtsbündig
=4: Blocksatz

Aufklappen Erläuterung
Setzt aus unterschiedlichen Textschnipseln einen Fließtext als Absatz zusammen, dem ein, innerhalb des Skriptes eindeutiger und möglichst signifikanter, name zugewiesen wird. Die Ausgabe des Absatzes erfolgt erst nach der Zusammensetzung zu einem TEXTBLOCK mit RICHTEXT2 oder RICHTEXT. PARAGRAPH alleine bewirkt noch kein sichtbares Ergebnis.

PARAGRAPH leitet analog zu Schleifen und ähnlichen Syntaxelementen in GDL einen Abschnitt zur Textdefinition ein. Absatzformatierungen, wie aus jeder Textverarbeitung werden zu Beginn mit PARAGRAPH gesetzt:

ausrichtung gibt die Textausrichtung an (siehe Wertebereiche).

einzug1, einzug_links und einzug_rechts geben die Randabstände zu der später in TEXTBLOCK angesetzten Textbreite an. tabulatori setzten feste Sprungmarken innerhalb einer Zeile. Ob diese Maße absolut (in mm) oder maßstäblich sind, wird erst im TEXTBLOCK mit dem Parameter größenbezug festgelegt. Werden keine Tabulatorpositionen definiert und enthält der Text dennoch Tabulatorsprünge, wird eine regelmäßige Sprungmarke alle 12.7mm angenommen.

zeilenabstand gibt den Abstand der Zeilen zueinander an und wird nicht absolut, sondern als Faktor angegeben. zeilenabstand=1 setzt demnach die Schrift direkt übereinander. Die Zeilenhöhe ist die Definitionsshöhe, die mit REQUEST ("HEIGHT_OF_STYLE", ...) abrufbar ist.

Das Besondere an PARAGRAPH ist nun, dass jeder Textschnipsel (texti) für 2D mit PEN und STYLE, für 3D mit PEN, STYLE und MATERIAL individuelle Attribute annehmen kann. Und das ohne die exakte Positionierung der Textschnipsel berechnen zu müssen. Sie werden nacheinander ohne Zwischenraum auf gleicher Grundlinie aneinandergefügt. Dabei kann zwischen jedem kleinen Textfragment ein Attribut geändert werden.

texti kann ein Ausdruck mit einem string-Ergebnis, eine Textvariable oder ein Klartext sein. Siehe auch Besonderheiten. Jede Programmzeile in GDL darf nur 255 Zeichen beinhalten. Das beschränkt auch die Eingabezeilen innerhalb von PARAGRAPH. Das stellt aber kein Hindernis dar beliebig lange Texte zu definieren, da alle Einzeltexte innerhalb eines PARAGRAPH... ENDPARAGRAPH -Konstruktes ohne Zeilenumbruch aneinandergefügt werden. Lange Texte verteilt man so auf mehrere Zeilen. Siehe Beispiel.

Werden innerhalb von PARAGRAPH keine Attribute gesetzt, gelten die bis vor PARAGRAPH gesetzten Attribute oder ggf. die Standardwerte (STYLE 0 und SYMB_VIEW_PEN).

Aufklappen Beispiel
PARAGRAPH "Titel" 4,
  5, 2, 2, 1
  PEN 1
  SET STYLE "TypA"
  "Dies ist ein Beispiel für eine Wohnungsliste, "
  "die nun einfach mit echten Exponenten in den "
  "Einheiten darstellbar ist."
  SET STYLE "TypN"
  "\nIm Fließtext, der pro Einzelstring nicht mehr "
  "als 255 Zeichen lang sein darf, können einige "
  "Sonderzeichen gesetzt werden:"
  PEN 2
  "\n\\n"
  PEN 1
  ": Zeilenumbruch"
  PEN 2
  "\n\\t"
  PEN 1
  ": Tabulator"
  PEN 2
  "\n\\"
  PEN 1
  ": Backslash"
  SET STYLE "TypA"
  "\nWie man sieht ist auch ein freier Wechsel der "
  "Farben innerhalb eines Textes kein Problem mehr."
  ENDPARAGRAPH


Ein ausführliches Beispiel findet sich unter RICHTEXT2.

Aufklappen Besonderheiten
In ArchiCAD® 9 sind 2 bugs im PARAGRAPH-Befehl:

1. Es MUSS mindestens 1 Text definiert werden. Das Konstrukt
PARAGRAPH "Absatz01" 2, 0, 0, 0, 1
 ENDPARAGRAPH

führt zum Absturz.

2. Ist in einem Objektparameter z.B. namens "ausgabetext" der Text abgelegt, kann es unter Umständen bei der Verwendung allein dieses Parameters dazu kommen, dass sämtliche Attributedefinitionen der PARAGRAPH-Befehle ignoriert werden. Tritt dies auf kann dies mit folgendem Workaround behoben werden:
PARAGRAPH "Absatz01" 2, 0, 0, 0, 1
 PEN 2
 SET STYLE "Typ02"
 ausgabetext+""
 ENDPARAGRAPH

Durch das Anfügen eines Leerstrings an den Textparameter erkennt der Interpreter offensichtlich den Text korrekt.

Generell scheint sich der GDL-Interpreter schwer zu tun innerhalb des PARAGRAPH... ENDPARAGRAPH Abschnittes Text von Befehlen oder Variablen/Parametern zu unterscheiden. Z.B. wird die Zeile STR(27.2,5,2) mit Fehler quittiert. ""+STR(27.2,5,2) umschifft das Mißverständnis.

3. Blocksatz i.V.m. Tabulatoren scheint Probleme zu Verursachen. So kommt es vor, dass der Text aus seiner in TEXTBLOCK definierten Breite ausbricht oder diese gar verbreitert. Auch die Positionierung des Textes an den erwarteten Tabulatorpositionen scheint dann verschoben. In ArchiCAD® 10 ist zumindest letzteres Phänomen behoben.

Aufklappen Attribute
PEN, STYLE, MATERIAL

Aufklappen Tipps und Tricks
In dem Text sind einige Formatierungszeichen erlaubt. Sie werden auf die maximale Textlänge von 255 Zeichen pro Programmzeile angerechnet. Sonst gibt es keine Längenbeschränkung.

"\n" : Neue Zeile/Zeilenumbruch
"\t" : Tabulator
"\\" : "\" (Backslash)

Aufklappen Kontext
2D-Skript, 3D-Skript

Aufklappen ArchiCAD
ab 9.0