Kapitel 6. Textersatz

Inhaltsverzeichnis

Textersatz mit @insert

Textersatz mit @insert

Oft ist es notwendig, dass der Text von Fragen oder Labels die Antworten von vorhergehenden Fragen enthält, bzw. in irgendeiner Weise von diesen abhängt. Dafür gibt es die Möglichkeit, Labels anderer Fragen in beliebige Textbereiche einer Umfrage einzubinden. Sehr nützlich ist hierbei auch die Funktion der Group („Group“). Um Textersatz überhaupt nutzen zu können, muss der Skriptparameter enableTextReplace auf yes gesetzt werden, siehe hierzu auch „Skriptparameter“.

Der eigentliche Textersatz findet mit dem Befehl @insert statt.

@insert

Wenn Textersatz mit enableTextReplace=yes eingeschaltet ist, kann der Inhalt einer Variablen VAR mit @insert an beliebigen Stellen in Textbereichen eingefügt werden.

@insert(VAR)     // auch @insert[VAR] oder @insert{VAR}
 
SingleQ geschlecht;
text="Sind Sie... ?";
labels=
1 "männlich"
2 "weiblich"
;

TextQ text_test;
text="Sie sind @insert(geschlecht).";
        

Alle Variablen in Q. werden beim Textersatz in einer bestimmten Art und Weise repräsentiert. Während 1-aus-N Variablen, sofern möglich, den zu ihrem Wert gehörigen Labeltext einblenden, listen N-aus-M Variablen ihre enthaltenen Werte auf. Um auch Mehrfachnennungen ansprechend und nach Wunsch einzublenden, gibt es MultiQTextInsert.

MultiQTextInsert

bildet eine neue Textvariable NAME. Greift die Werte einer N-aus-M Variablen VAR auf und ersetzt diese durch ihre zugehörigen Labeltexte. Dafür muss definiert werden, durch welches Zeichen der Labeltext eingeleitet (BEF = before) sowie durch welches Zeichen der Labeltext abgeschlossen (AFT = after) wird. Als letztes wird angegeben, durch welches Zeichen die Labeltexte voneinander getrennt werden sollen (DEL = delimiter).

      MultiQTextInsert NAME = (VAR, BEF, AFT, DEL);
        
MultiQTextInsert ti_q9=(q9, "[", "]", ", ");

multiq q9;
text = "Fragetext...";
labels=
1 "A"
2 "B"
3 "C"
4 "D"
;

// Anzeige bei @insert(ti_q9) z.B.:
// [A], [B], [D]

// Sollen die Labeltexte nicht von Zeichen umschlossen werden, 
// können die ersten zwei Anführungszeichen leer gelassen werden:
// MultiQTextInsert ti_q9=(q9, " ", " ", ", ");
        

Der Textersatz mit @insert kann auch für dynamische Inhalte und Darstellungen eingesetzt werden. In Kombination mit group lässt sich, abhängig von vorherigen Informationen, unterschiedlicher Content darstellen. Das folgende Beispiel verdeutlicht, wie ein Bild abhängig von einer vorherigen Auswahl eingebunden werden könnte.

singleq auswahl;
text="Bitte wählen Sie aus:";
labels=
1 "Auswahl A"
2 "Auswahl B"
;

group img_auswahl;
labels=
1 "bild_A.jpg" (auswahl eq 1)
2 "bild_B.jpg" (auswahl eq 2)
;

textq image;
text="Bitte betrachten Sie das Bild:
title="<img src=./media/@insert(_surveyname)/@insert(img_auswahl)>";
  
DecimalFormat

Alle Zahlenwerte sind in Q. Fließkommazahlen mit Nachkommastelle. Um Zahlen formatiert anzuzeigen, gibt es DecimalFormat, das eine neue Variable NAME anlegt und die Variable VAR im alternativen Format FORMAT [1] speichert.

DecimalFormat NAME = (VAR, FORMAT);

// min. 1 Vorkommastelle und fix 2 Nachkommastellen
DecimalFormat meinDF = (euro, "0.00");