Millisecond Forums

Radiobuttons option text wrap problem and solution

https://forums.millisecond.com/Topic27641.aspx

By AKrishna - 8/22/2019

Hi all,

I just found a problem in my script which was causing issues with radiobutton options wrapping around unnecessarily and being difficult to read. The following code produces an example of what I mean:


<radiobuttons BIF_step01>
/ caption = "Avocado zerdrücken und mit Zitronen-/Limettensaft mischen."
/ options = ("Guacamole zum Snacken vorbereiten.","Mit einer Gabel wiederholt auf die Avocadostücke drücken.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,10)
</radiobuttons>

<radiobuttons BIF_step02>
/ caption = "Gurkenstücke/-raspeln mit Knoblauch und Joghurt mischen."
/ options = ("Tzatziki-Soße für den Beilagensalat machen.","Gurken mit einer Gabel unter Joghurt rühren.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,30)
</radiobuttons>

<radiobuttons BIF_step03>
/ caption = "Gemüsestücke mit Brühe einkochen."
/ options = ("Für ein vegetarisches Hauptgericht sorgen.","Süßkartoffeln, Schalotten und Bohnen in einen Topf mit Brühe geben und zum Kochen bringen.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,50)
</radiobuttons>

<radiobuttons BIF_step04>
/ caption = "Obazdamischung mit Zwiebeln und Paprikapulver verfeinern."
/ options = ("Den Obazda servierfertig machen.","Zwiebeln unter Butter-Camembert-Masse mischen und dann mit Paprikapulver bestreuen.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,70)
</radiobuttons>


<surveypage BIF01>
/ questions = [1=BIF_step01; 2=BIF_step02; 3=BIF_step03; 4=BIF_step04]
/ finishlabel = "Weiter"
/ nextbuttonposition = (48, 90)
/ showbackbutton = false
/ showpagenumbers = false
/ showmousecursor = true
/ fontstyle = ("Arial", 2%)
</surveypage>


It ends up looking like this:


I tried several possible solutions, some suggested by older queries in the forum, including:
- inserting tabs (~t) in the text to make the shorter options as long as the longer ones
- inserting spaces to roughly even out the lengths of the options
- adding line breaks (~n) to force more spacing
- experimenting with "/itemspacing" in the surveypage element
- changing the order from random (as it was originally) to sequence (as it is in the example code) and randomizing manually using /onblockbegin to set option values

Nothing worked. Interestingly, the line breaks and tabs did nothing at all to the displayed text, but the spaces did, sometimes forcing shorter options to break in the same way longer options were already doing.

While tinkering, though, I stumbled upon a solution: when I changed the responsefontstyle's size from 2.3% to 2%, it all worked! Line breaks suddenly started showing up, randomizing option order worked and so on. I thought this was probably a bug worth reporting.

I played around with the sizes a little. On my system (1680 x 1050 resolution), the wraparound problem occurs in the following ranges of responsefontstyle sizes (using Arial as a font):
[1.2381% - 1.3333%]
[2.2381% - 2.3333%]
[3.2381% - 3.3333%]
and presumably so on (didn't test further).

So if you are having the same problem as me, try checking whether it occurs for other responsefontsizes in steps of about .1% - it may help!
By Dave - 8/23/2019

AKrishna - 8/23/2019
Hi all,

I just found a problem in my script which was causing issues with radiobutton options wrapping around unnecessarily and being difficult to read. The following code produces an example of what I mean:


<radiobuttons BIF_step01>
/ caption = "Avocado zerdrücken und mit Zitronen-/Limettensaft mischen."
/ options = ("Guacamole zum Snacken vorbereiten.","Mit einer Gabel wiederholt auf die Avocadostücke drücken.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,10)
</radiobuttons>

<radiobuttons BIF_step02>
/ caption = "Gurkenstücke/-raspeln mit Knoblauch und Joghurt mischen."
/ options = ("Tzatziki-Soße für den Beilagensalat machen.","Gurken mit einer Gabel unter Joghurt rühren.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,30)
</radiobuttons>

<radiobuttons BIF_step03>
/ caption = "Gemüsestücke mit Brühe einkochen."
/ options = ("Für ein vegetarisches Hauptgericht sorgen.","Süßkartoffeln, Schalotten und Bohnen in einen Topf mit Brühe geben und zum Kochen bringen.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,50)
</radiobuttons>

<radiobuttons BIF_step04>
/ caption = "Obazdamischung mit Zwiebeln und Paprikapulver verfeinern."
/ options = ("Den Obazda servierfertig machen.","Zwiebeln unter Butter-Camembert-Masse mischen und dann mit Paprikapulver bestreuen.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,70)
</radiobuttons>


<surveypage BIF01>
/ questions = [1=BIF_step01; 2=BIF_step02; 3=BIF_step03; 4=BIF_step04]
/ finishlabel = "Weiter"
/ nextbuttonposition = (48, 90)
/ showbackbutton = false
/ showpagenumbers = false
/ showmousecursor = true
/ fontstyle = ("Arial", 2%)
</surveypage>


It ends up looking like this:


I tried several possible solutions, some suggested by older queries in the forum, including:
- inserting tabs (~t) in the text to make the shorter options as long as the longer ones
- inserting spaces to roughly even out the lengths of the options
- adding line breaks (~n) to force more spacing
- experimenting with "/itemspacing" in the surveypage element
- changing the order from random (as it was originally) to sequence (as it is in the example code) and randomizing manually using /onblockbegin to set option values

Nothing worked. Interestingly, the line breaks and tabs did nothing at all to the displayed text, but the spaces did, sometimes forcing shorter options to break in the same way longer options were already doing.

While tinkering, though, I stumbled upon a solution: when I changed the responsefontstyle's size from 2.3% to 2%, it all worked! Line breaks suddenly started showing up, randomizing option order worked and so on. I thought this was probably a bug worth reporting.

I played around with the sizes a little. On my system (1680 x 1050 resolution), the wraparound problem occurs in the following ranges of responsefontstyle sizes (using Arial as a font):
[1.2381% - 1.3333%]
[2.2381% - 2.3333%]
[3.2381% - 3.3333%]
and presumably so on (didn't test further).

So if you are having the same problem as me, try checking whether it occurs for other responsefontsizes in steps of about .1% - it may help!

Line breaks should work as well, code below and before/after screenshots:

<radiobuttons BIF_step01>
/ caption = "Avocado zerdrücken und mit Zitronen-/Limettensaft mischen."
/ options = ("Guacamole zum Snacken vorbereiten.","Mit einer Gabel wiederholt auf die Avocadostücke drücken.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,10)
</radiobuttons>

<radiobuttons BIF_step02>
/ caption = "Gurkenstücke/-raspeln mit Knoblauch und Joghurt mischen."
/ options = ("Tzatziki-Soße für den Beilagensalat machen.","Gurken mit einer Gabel unter Joghurt rühren.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,30)
</radiobuttons>

<radiobuttons BIF_step03>
/ caption = "Gemüsestücke mit Brühe einkochen."
/ options = ("Für ein vegetarisches Hauptgericht sorgen.","~nSüßkartoffeln, Schalotten und Bohnen in einen Topf mit Brühe geben und zum Kochen bringen.~n")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,50)
</radiobuttons>

<radiobuttons BIF_step04>
/ caption = "Obazdamischung mit Zwiebeln und Paprikapulver verfeinern."
/ options = ("Den Obazda servierfertig machen.","~nZwiebeln unter Butter-Camembert-Masse mischen und dann mit Paprikapulver bestreuen.~n")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,70)
</radiobuttons>


<surveypage BIF01>
/ questions = [1=BIF_step01; 2=BIF_step02; 3=BIF_step03; 4=BIF_step04]
/ finishlabel = "Weiter"
/ nextbuttonposition = (48, 90)
/ showbackbutton = false
/ showpagenumbers = false
/ showmousecursor = true
/ fontstyle = ("Arial", 2%)
</surveypage>

<defaults>
/ canvassize = (1680px,1050px)
</defaults>

Before:


After:



By AKrishna - 8/23/2019

Hi Dave,

thanks for your response. It's an interesting issue - I tried using line breaks in my original (more elaborate) code, as I mentioned in my first post, and they didn't work, even though they were placed exactly as yours. This seems to be a combination of causes. For example, the following code is identical to my intially posted code, with the following differences:
- some of the option strings have been made a little longer
- line breaks are included for all long options
- the second question is set to random option order instead of sequential

Here, the problem occurs in question 2 consistently IF the long option is selected as the first, regardless of the presence of line breaks, which makes me fear that line breaks are not a consistent solution to the problem. It's also worth noting that when the problem occurs, it also seems to cut off the usage of the right side of the screen to some extent - the wrap happens earlier than I would expect given the screen size.

My earlier solution of reducing the responsefontstyle size solves the issue in this code, but (apparently) only because the lower font size makes the line wrap unnecessary. Increasing the fontstyle to 2.34% somehow does the same, but going up to 3% causes the issue again.


<radiobuttons BIF_step01>
/ caption = "Avocado zerdrücken und mit Zitronen-/Limettensaft mischen."
/ options = ("Guacamole zum Snacken vorbereiten.","Sesampasste, Zitronensaft.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,10)
</radiobuttons>

<radiobuttons BIF_step02>
/ caption = "Gurkenstücke/-raspeln mit Knoblauch und Joghurt mischen."
/ options = ("Tzatziki-Soße für den Beilagensalat machen.","~nSchnitzel erst in einem flachen Teller mit Ei und dann in einem flachen Teller mit Paniermehl wenden.~n")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,30)
</radiobuttons>

<radiobuttons BIF_step03>
/ caption = "Gemüsestücke mit Brühe einkochen."
/ options = ("~nSüßkartoffeln, Schalotten und Bohnen in einen Topf mit Brühe geben und zum Kochen bringen.~n","Für ein vegetarisches Hauptgericht sorgen.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,50)
</radiobuttons>

<radiobuttons BIF_step04>
/ caption = "Obazdamischung mit Zwiebeln und Paprikapulver verfeinern."
/ options = ("Den Obazda servierfertig machen.","~nZwiebeln unter Butter-Camembert-Masse mischen und dann mit Paprikapulver bestreuen.~n")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,70)
</radiobuttons>


<surveypage BIF01>
/ questions = [1=BIF_step01; 2=BIF_step02; 3=BIF_step03; 4=BIF_step04]
/ finishlabel = "Weiter"
/ nextbuttonposition = (48, 90)
/ showbackbutton = false
/ showpagenumbers = false
/ showmousecursor = true
/ fontstyle = ("Arial", 2%)
</surveypage>




Now if I look at my actual study, these issues present more of a challenge. In the experiment, items and options for the radiobuttons are drawn from lists across several blocks and the options must be presented randomly. Here's an example:


<expt Tester>
/ blocks = [1-3 = BIF_A]
</expt>

***********************************************************************************************************
Lists
***********************************************************************************************************


<list Masterlist>
/ items = ("Guacamole",
"Tzatziki",
"Eintopf",
"Obadzda",
"Crème brûlée",
"Gnocchi",
"Obstkuchen",
"Porridge",
"Hummus",
"Sushi",
"Frikadelle",
"Pizza Margherita",
"Eis",
"Risotto",
"Tiramisu",
"Gemüse-Lasagne",
"Sandwich",
"OMLETT",
"Schnitzel",
"Marmelade",
"Pfannkuchen",
"Smoothie",
"Antipasti",
"Blattsalat")
/ selectionmode = random
/ selectionrate = always
</list>


********************************************************************************************************************************
BIF
********************************************************************************************************************************

<values>
/ FoodValue0 = ""
/ FoodValue1 = ""
/ FoodValue2 = ""
/ FoodValue3 = ""
/ FoodValue4 = ""
/ FoodValue5 = ""
/ FoodValue6 = ""
/ FoodValue7 = ""
/ FoodValue8 = ""
</values>

<block BIF_A>
/ trials = [1=BIF01; 2=BIF02]
/ onblockbegin = [values.FoodValue1 = list.Masterlist.nextindex;
values.FoodValue2 = list.Masterlist.nextindex;
values.FoodValue3 = list.Masterlist.nextindex;
values.FoodValue4 = list.Masterlist.nextindex;
values.FoodValue5 = list.Masterlist.nextindex;
values.FoodValue6 = list.Masterlist.nextindex;
values.FoodValue7 = list.Masterlist.nextindex;
values.FoodValue8 = list.Masterlist.nextindex]
</block>

<surveypage BIF01>
/ questions = [1=BIF_step01; 2=BIF_step02; 3=BIF_step03; 4=BIF_step04]
/ finishlabel = "Weiter"
/ nextbuttonposition = (48, 90)
/ showbackbutton = false
/ showpagenumbers = false
/ showmousecursor = true
/ fontstyle = ("Arial", 2%)
</surveypage>

<surveypage BIF02>
/ questions = [1=BIF_step05; 2=BIF_step06; 3=BIF_step07; 4=BIF_step08]
/ finishlabel = "Weiter"
/ nextbuttonposition = (48,90)
/ showbackbutton = false
/ showpagenumbers = false
/ showquestionnumbers = true
/ showmousecursor = true
/ fontstyle = ("Arial", 2%)
</surveypage>


**********************************
BIF radiobuttons
**********************************

<radiobuttons BIF_step01>
/ caption = "<%list.FoodBIF.item(values.FoodValue1)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue1)%>","<%list.FoodBIFItem2.item(values.FoodValue1)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,10)
/ required = false
</radiobuttons>

<radiobuttons BIF_step02>
/ caption = "<%list.FoodBIF.item(values.FoodValue2)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue2)%>","<%list.FoodBIFItem2.item(values.FoodValue2)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,30)
/ required = false
</radiobuttons>

<radiobuttons BIF_step03>
/ caption = "<%list.FoodBIF.item(values.FoodValue3)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue3)%>","<%list.FoodBIFItem2.item(values.FoodValue3)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,50)
/ required = false
</radiobuttons>

<radiobuttons BIF_step04>
/ caption = "<%list.FoodBIF.item(values.FoodValue4)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue4)%>","<%list.FoodBIFItem2.item(values.FoodValue4)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,70)
/ required = false
</radiobuttons>

<radiobuttons BIF_step05>
/ caption = "<%list.FoodBIF.item(values.FoodValue5)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue5)%>","<%list.FoodBIFItem2.item(values.FoodValue5)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,10)
/ required = false
</radiobuttons>

<radiobuttons BIF_step06>
/ caption = "<%list.FoodBIF.item(values.FoodValue6)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue6)%>","<%list.FoodBIFItem2.item(values.FoodValue6)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,30)
/ required = false
</radiobuttons>

<radiobuttons BIF_step07>
/ caption = "<%list.FoodBIF.item(values.FoodValue7)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue7)%>","<%list.FoodBIFItem2.item(values.FoodValue7)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,50)
/ required = false
</radiobuttons>

<radiobuttons BIF_step08>
/ caption = "<%list.FoodBIF.item(values.FoodValue8)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue8)%>","<%list.FoodBIFItem2.item(values.FoodValue8)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,70)
/ required = false
</radiobuttons>



**********************************
BIF lists
**********************************

<list FoodBIF>
/ items = (
"Avocado zerdrücken und mit Zitronen-/Limettensaft mischen.",
"Gurkenstücke/-raspeln mit Knoblauch und Joghurt mischen.",
"Gemüsestücke mit Brühe einkochen.",
"Obazdamischung mit Zwiebeln und Paprikapulver verfeinern.",
"Ei-Sahne-Masse herstellen",
"Gnocchi-Teig machen.",
"Äpfel vorbereiten.",
"Haferbrei anrichten.",
"Hummus fertigstellen.",
"Sushi vorbereiten.",
"Frikadellenteig herstellen.",
"Pizza vorbereiten.",
"Eismischung einfrieren.",
"Reis anbraten.",
"Tiramisu herstellen.",
"Gemüse anbraten.",
"Sandwiches vorbereiten.",
"Omlett zubereiten.",
"Schnitzel panieren.",
"Obst klein schneiden.",
"Pfannkuchen zubreiten.",
"Obst vorbereiten.",
"Antipasti vorbereiten.",
"Salat machen.")
</list>


<list FoodBIFItem1>
/ items = (
"Guacamole zum Snacken vorbereiten.",
"Tzatziki-Soße für den Beilagensalat machen.",
"Für ein vegetarisches Hauptgericht sorgen.",
"Den Obazda servierfertig machen.",
"Crème brûlée zubereiten.",
"Eine Beilage vorbereiten.",
"Apfelkuchen zubereiten.",
"Einen gesunden Nachtisch bereitstellen.",
"Einen herzhafen Aufstrich machen.",
"Für ein Fischgericht sorgen.",
"Für einen fleischigen Snack sorgen.",
"Ein Gericht, das jedem schmeckt, bereitstellen.",
"Eis zubereiten.",
"Risotto zubereiten",
"Einen beliebten Nachtisch fertigstellen.",
"Gemüselasagne vorbereiten.",
"Dafür sorgen, dass jeder satt wird.",
"Ein proteinreiches Gericht bereitstellen.",
"Für ein Fleisch-Hauptgericht sorgen.",
"Einen süßen Aufstrich zubereiten.",
"Für eine schöne Feier sorgen.",
"Smoothies machen.",
"Gemüsefans glücklich machen.",
"Für eine frische Beilage sorgen.")
</list>


<list FoodBIFItem2>
/ items = (
"Mit einer Gabel wiederholt auf die Avocadostücke drücken.",
"Gurken mit einer Gabel unter Joghurt rühren.",
"Süßkartoffeln, Schalotten und Bohnen in einen Topf mit Brühe geben und zum Kochen bringen.",
"Zwiebeln unter Butter-Camembert-Masse mischen und dann mit Paprikapulver bestreuen.",
"Eigelb, Sahne und Zucker mit Rührgerät verquirlen.",
"Gekochte Kartoffeln stampfen und mit Grieß verkneten.",
"Äpfel schälen und in mundgerechte Stücke schneiden.",
"Bananen kleinschneiden und zusammen mit Nüssen in den Haferbrei geben.",
"Sesampasste, Zitronensaft, Olivenöl und Gewürze unter Kichererbesenmasse mischen.",
"Algenblatt mit Sushireis belegen und Lachsstreifen mittig auf dem Reis platzieren.",
"Zwiebelstücke und Hackfleisch mit den Händen verkneten.",
"Teig auf ein Blech geben und mit einem Nudelholz ausrollen.",
"Mischung ins Gefrierfach geben und abwarten.",
"Reis mit Olivenöl in einen Topf geben. Topf erhitzen.",
"Löffelbiskuit & Mascarponecreme schichten und mit Kakao bestreuen.",
"Aubergine und Pilze in eine Pfanne geben und erhitzen.",
"Toastbrot mit Mayonaise bestreichen und belegen.",
"Eier aufschlagen und zu Zucchini-Stücken in die erhitzte Pfanne geben.",
"Schnitzel erst in einem flachen Teller mit Ei und dann in einem flachen Teller mit Paniermehl wenden.",
"Obst mit einem scharfen Messer in kleine Stücke schneiden.",
"Teigzutaten verrühren und Teig braten.",
"Obst waschen, schälen und zerkleinern.",
"Auberginen waschen und Champignons putzen.",
"Das Dressing abschmecken.")
</list>


For some reason, the radiobuttons in this code seem to have the text wrap at about 50% of the screen's width instead of using the full width, even though they seem identical to the radiobuttons in my first example, where this does not happen to the same extreme extent. Furthermore, adding line breaks to the options (à la "~n<%list.FoodBIFItem1.item(values.FoodValue8)%>~n") is impractical here, as it makes the short options appear almost unmoored from their question. Replacing the FoodBIF2Items list above with one that adds line breaks to only the longer options still causes the problem, even though this should be functionally identical:


FoodBIFItem2>
/ items = (
"~nMit einer Gabel wiederholt auf die Avocadostücke drücken.~n",
"Gurken mit einer Gabel unter Joghurt rühren.",
"~nSüßkartoffeln, Schalotten und Bohnen in einen Topf mit Brühe geben und zum Kochen bringen.~n",
"~nZwiebeln unter Butter-Camembert-Masse mischen und dann mit Paprikapulver bestreuen.~n",
"Eigelb, Sahne und Zucker mit Rührgerät verquirlen.",
"Gekochte Kartoffeln stampfen und mit Grieß verkneten.",
"Äpfel schälen und in mundgerechte Stücke schneiden.",
"~nBananen kleinschneiden und zusammen mit Nüssen in den Haferbrei geben.~n",
"~nSesampaste, Zitronensaft, Olivenöl und Gewürze unter Kichererbesenmasse mischen.~n",
"~nAlgenblatt mit Sushireis belegen und Lachsstreifen mittig auf dem Reis platzieren.~n",
"Zwiebelstücke und Hackfleisch mit den Händen verkneten.",
"Teig auf ein Blech geben und mit einem Nudelholz ausrollen.",
"Mischung ins Gefrierfach geben und abwarten.",
"Reis mit Olivenöl in einen Topf geben. Topf erhitzen.",
"~nLöffelbiskuit & Mascarponecreme schichten und mit Kakao bestreuen.~n",
"Aubergine und Pilze in eine Pfanne geben und erhitzen.",
"Toastbrot mit Mayonaise bestreichen und belegen.",
"~nEier aufschlagen und zu Zucchini-Stücken in die erhitzte Pfanne geben.~n",
"~nSchnitzel erst in einem flachen Teller mit Ei und dann in einem flachen Teller mit Paniermehl wenden.~n",
"~nObst mit einem scharfen Messer in kleine Stücke schneiden.~n",
"Teigzutaten verrühren und Teig braten.",
"Obst waschen, schälen und zerkleinern.",
"Auberginen waschen und Champignons putzen.",
"Das Dressing abschmecken.")
</list>



Changing the font size here doesn't help, although larger fonts do seem to make the options use more of the screen's width.


In the end, we'll use the line break workaround to get this done and rearrange the items on the screen, but it's still a pretty puzzle what is happening here, at least to me.
By Dave - 8/23/2019

AKrishna - 8/23/2019
Hi Dave,

thanks for your response. It's an interesting issue - I tried using line breaks in my original (more elaborate) code, as I mentioned in my first post, and they didn't work, even though they were placed exactly as yours. This seems to be a combination of causes. For example, the following code is identical to my intially posted code, with the following differences:
- some of the option strings have been made a little longer
- line breaks are included for all long options
- the second question is set to random option order instead of sequential

Here, the problem occurs in question 2 consistently IF the long option is selected as the first, regardless of the presence of line breaks, which makes me fear that line breaks are not a consistent solution to the problem. It's also worth noting that when the problem occurs, it also seems to cut off the usage of the right side of the screen to some extent - the wrap happens earlier than I would expect given the screen size.

My earlier solution of reducing the responsefontstyle size solves the issue in this code, but (apparently) only because the lower font size makes the line wrap unnecessary. Increasing the fontstyle to 2.34% somehow does the same, but going up to 3% causes the issue again.


<radiobuttons BIF_step01>
/ caption = "Avocado zerdrücken und mit Zitronen-/Limettensaft mischen."
/ options = ("Guacamole zum Snacken vorbereiten.","Sesampasste, Zitronensaft.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,10)
</radiobuttons>

<radiobuttons BIF_step02>
/ caption = "Gurkenstücke/-raspeln mit Knoblauch und Joghurt mischen."
/ options = ("Tzatziki-Soße für den Beilagensalat machen.","~nSchnitzel erst in einem flachen Teller mit Ei und dann in einem flachen Teller mit Paniermehl wenden.~n")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,30)
</radiobuttons>

<radiobuttons BIF_step03>
/ caption = "Gemüsestücke mit Brühe einkochen."
/ options = ("~nSüßkartoffeln, Schalotten und Bohnen in einen Topf mit Brühe geben und zum Kochen bringen.~n","Für ein vegetarisches Hauptgericht sorgen.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,50)
</radiobuttons>

<radiobuttons BIF_step04>
/ caption = "Obazdamischung mit Zwiebeln und Paprikapulver verfeinern."
/ options = ("Den Obazda servierfertig machen.","~nZwiebeln unter Butter-Camembert-Masse mischen und dann mit Paprikapulver bestreuen.~n")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,70)
</radiobuttons>


<surveypage BIF01>
/ questions = [1=BIF_step01; 2=BIF_step02; 3=BIF_step03; 4=BIF_step04]
/ finishlabel = "Weiter"
/ nextbuttonposition = (48, 90)
/ showbackbutton = false
/ showpagenumbers = false
/ showmousecursor = true
/ fontstyle = ("Arial", 2%)
</surveypage>




Now if I look at my actual study, these issues present more of a challenge. In the experiment, items and options for the radiobuttons are drawn from lists across several blocks and the options must be presented randomly. Here's an example:


<expt Tester>
/ blocks = [1-3 = BIF_A]
</expt>

***********************************************************************************************************
Lists
***********************************************************************************************************


<list Masterlist>
/ items = ("Guacamole",
"Tzatziki",
"Eintopf",
"Obadzda",
"Crème brûlée",
"Gnocchi",
"Obstkuchen",
"Porridge",
"Hummus",
"Sushi",
"Frikadelle",
"Pizza Margherita",
"Eis",
"Risotto",
"Tiramisu",
"Gemüse-Lasagne",
"Sandwich",
"OMLETT",
"Schnitzel",
"Marmelade",
"Pfannkuchen",
"Smoothie",
"Antipasti",
"Blattsalat")
/ selectionmode = random
/ selectionrate = always
</list>


********************************************************************************************************************************
BIF
********************************************************************************************************************************

<values>
/ FoodValue0 = ""
/ FoodValue1 = ""
/ FoodValue2 = ""
/ FoodValue3 = ""
/ FoodValue4 = ""
/ FoodValue5 = ""
/ FoodValue6 = ""
/ FoodValue7 = ""
/ FoodValue8 = ""
</values>

<block BIF_A>
/ trials = [1=BIF01; 2=BIF02]
/ onblockbegin = [values.FoodValue1 = list.Masterlist.nextindex;
values.FoodValue2 = list.Masterlist.nextindex;
values.FoodValue3 = list.Masterlist.nextindex;
values.FoodValue4 = list.Masterlist.nextindex;
values.FoodValue5 = list.Masterlist.nextindex;
values.FoodValue6 = list.Masterlist.nextindex;
values.FoodValue7 = list.Masterlist.nextindex;
values.FoodValue8 = list.Masterlist.nextindex]
</block>

<surveypage BIF01>
/ questions = [1=BIF_step01; 2=BIF_step02; 3=BIF_step03; 4=BIF_step04]
/ finishlabel = "Weiter"
/ nextbuttonposition = (48, 90)
/ showbackbutton = false
/ showpagenumbers = false
/ showmousecursor = true
/ fontstyle = ("Arial", 2%)
</surveypage>

<surveypage BIF02>
/ questions = [1=BIF_step05; 2=BIF_step06; 3=BIF_step07; 4=BIF_step08]
/ finishlabel = "Weiter"
/ nextbuttonposition = (48,90)
/ showbackbutton = false
/ showpagenumbers = false
/ showquestionnumbers = true
/ showmousecursor = true
/ fontstyle = ("Arial", 2%)
</surveypage>


**********************************
BIF radiobuttons
**********************************

<radiobuttons BIF_step01>
/ caption = "<%list.FoodBIF.item(values.FoodValue1)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue1)%>","<%list.FoodBIFItem2.item(values.FoodValue1)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,10)
/ required = false
</radiobuttons>

<radiobuttons BIF_step02>
/ caption = "<%list.FoodBIF.item(values.FoodValue2)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue2)%>","<%list.FoodBIFItem2.item(values.FoodValue2)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,30)
/ required = false
</radiobuttons>

<radiobuttons BIF_step03>
/ caption = "<%list.FoodBIF.item(values.FoodValue3)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue3)%>","<%list.FoodBIFItem2.item(values.FoodValue3)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,50)
/ required = false
</radiobuttons>

<radiobuttons BIF_step04>
/ caption = "<%list.FoodBIF.item(values.FoodValue4)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue4)%>","<%list.FoodBIFItem2.item(values.FoodValue4)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,70)
/ required = false
</radiobuttons>

<radiobuttons BIF_step05>
/ caption = "<%list.FoodBIF.item(values.FoodValue5)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue5)%>","<%list.FoodBIFItem2.item(values.FoodValue5)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,10)
/ required = false
</radiobuttons>

<radiobuttons BIF_step06>
/ caption = "<%list.FoodBIF.item(values.FoodValue6)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue6)%>","<%list.FoodBIFItem2.item(values.FoodValue6)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,30)
/ required = false
</radiobuttons>

<radiobuttons BIF_step07>
/ caption = "<%list.FoodBIF.item(values.FoodValue7)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue7)%>","<%list.FoodBIFItem2.item(values.FoodValue7)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,50)
/ required = false
</radiobuttons>

<radiobuttons BIF_step08>
/ caption = "<%list.FoodBIF.item(values.FoodValue8)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue8)%>","<%list.FoodBIFItem2.item(values.FoodValue8)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,70)
/ required = false
</radiobuttons>



**********************************
BIF lists
**********************************

<list FoodBIF>
/ items = (
"Avocado zerdrücken und mit Zitronen-/Limettensaft mischen.",
"Gurkenstücke/-raspeln mit Knoblauch und Joghurt mischen.",
"Gemüsestücke mit Brühe einkochen.",
"Obazdamischung mit Zwiebeln und Paprikapulver verfeinern.",
"Ei-Sahne-Masse herstellen",
"Gnocchi-Teig machen.",
"Äpfel vorbereiten.",
"Haferbrei anrichten.",
"Hummus fertigstellen.",
"Sushi vorbereiten.",
"Frikadellenteig herstellen.",
"Pizza vorbereiten.",
"Eismischung einfrieren.",
"Reis anbraten.",
"Tiramisu herstellen.",
"Gemüse anbraten.",
"Sandwiches vorbereiten.",
"Omlett zubereiten.",
"Schnitzel panieren.",
"Obst klein schneiden.",
"Pfannkuchen zubreiten.",
"Obst vorbereiten.",
"Antipasti vorbereiten.",
"Salat machen.")
</list>


<list FoodBIFItem1>
/ items = (
"Guacamole zum Snacken vorbereiten.",
"Tzatziki-Soße für den Beilagensalat machen.",
"Für ein vegetarisches Hauptgericht sorgen.",
"Den Obazda servierfertig machen.",
"Crème brûlée zubereiten.",
"Eine Beilage vorbereiten.",
"Apfelkuchen zubereiten.",
"Einen gesunden Nachtisch bereitstellen.",
"Einen herzhafen Aufstrich machen.",
"Für ein Fischgericht sorgen.",
"Für einen fleischigen Snack sorgen.",
"Ein Gericht, das jedem schmeckt, bereitstellen.",
"Eis zubereiten.",
"Risotto zubereiten",
"Einen beliebten Nachtisch fertigstellen.",
"Gemüselasagne vorbereiten.",
"Dafür sorgen, dass jeder satt wird.",
"Ein proteinreiches Gericht bereitstellen.",
"Für ein Fleisch-Hauptgericht sorgen.",
"Einen süßen Aufstrich zubereiten.",
"Für eine schöne Feier sorgen.",
"Smoothies machen.",
"Gemüsefans glücklich machen.",
"Für eine frische Beilage sorgen.")
</list>


<list FoodBIFItem2>
/ items = (
"Mit einer Gabel wiederholt auf die Avocadostücke drücken.",
"Gurken mit einer Gabel unter Joghurt rühren.",
"Süßkartoffeln, Schalotten und Bohnen in einen Topf mit Brühe geben und zum Kochen bringen.",
"Zwiebeln unter Butter-Camembert-Masse mischen und dann mit Paprikapulver bestreuen.",
"Eigelb, Sahne und Zucker mit Rührgerät verquirlen.",
"Gekochte Kartoffeln stampfen und mit Grieß verkneten.",
"Äpfel schälen und in mundgerechte Stücke schneiden.",
"Bananen kleinschneiden und zusammen mit Nüssen in den Haferbrei geben.",
"Sesampasste, Zitronensaft, Olivenöl und Gewürze unter Kichererbesenmasse mischen.",
"Algenblatt mit Sushireis belegen und Lachsstreifen mittig auf dem Reis platzieren.",
"Zwiebelstücke und Hackfleisch mit den Händen verkneten.",
"Teig auf ein Blech geben und mit einem Nudelholz ausrollen.",
"Mischung ins Gefrierfach geben und abwarten.",
"Reis mit Olivenöl in einen Topf geben. Topf erhitzen.",
"Löffelbiskuit & Mascarponecreme schichten und mit Kakao bestreuen.",
"Aubergine und Pilze in eine Pfanne geben und erhitzen.",
"Toastbrot mit Mayonaise bestreichen und belegen.",
"Eier aufschlagen und zu Zucchini-Stücken in die erhitzte Pfanne geben.",
"Schnitzel erst in einem flachen Teller mit Ei und dann in einem flachen Teller mit Paniermehl wenden.",
"Obst mit einem scharfen Messer in kleine Stücke schneiden.",
"Teigzutaten verrühren und Teig braten.",
"Obst waschen, schälen und zerkleinern.",
"Auberginen waschen und Champignons putzen.",
"Das Dressing abschmecken.")
</list>


For some reason, the radiobuttons in this code seem to have the text wrap at about 50% of the screen's width instead of using the full width, even though they seem identical to the radiobuttons in my first example, where this does not happen to the same extreme extent. Furthermore, adding line breaks to the options (à la "~n<%list.FoodBIFItem1.item(values.FoodValue8)%>~n") is impractical here, as it makes the short options appear almost unmoored from their question. Replacing the FoodBIF2Items list above with one that adds line breaks to only the longer options still causes the problem, even though this should be functionally identical:


FoodBIFItem2>
/ items = (
"~nMit einer Gabel wiederholt auf die Avocadostücke drücken.~n",
"Gurken mit einer Gabel unter Joghurt rühren.",
"~nSüßkartoffeln, Schalotten und Bohnen in einen Topf mit Brühe geben und zum Kochen bringen.~n",
"~nZwiebeln unter Butter-Camembert-Masse mischen und dann mit Paprikapulver bestreuen.~n",
"Eigelb, Sahne und Zucker mit Rührgerät verquirlen.",
"Gekochte Kartoffeln stampfen und mit Grieß verkneten.",
"Äpfel schälen und in mundgerechte Stücke schneiden.",
"~nBananen kleinschneiden und zusammen mit Nüssen in den Haferbrei geben.~n",
"~nSesampaste, Zitronensaft, Olivenöl und Gewürze unter Kichererbesenmasse mischen.~n",
"~nAlgenblatt mit Sushireis belegen und Lachsstreifen mittig auf dem Reis platzieren.~n",
"Zwiebelstücke und Hackfleisch mit den Händen verkneten.",
"Teig auf ein Blech geben und mit einem Nudelholz ausrollen.",
"Mischung ins Gefrierfach geben und abwarten.",
"Reis mit Olivenöl in einen Topf geben. Topf erhitzen.",
"~nLöffelbiskuit & Mascarponecreme schichten und mit Kakao bestreuen.~n",
"Aubergine und Pilze in eine Pfanne geben und erhitzen.",
"Toastbrot mit Mayonaise bestreichen und belegen.",
"~nEier aufschlagen und zu Zucchini-Stücken in die erhitzte Pfanne geben.~n",
"~nSchnitzel erst in einem flachen Teller mit Ei und dann in einem flachen Teller mit Paniermehl wenden.~n",
"~nObst mit einem scharfen Messer in kleine Stücke schneiden.~n",
"Teigzutaten verrühren und Teig braten.",
"Obst waschen, schälen und zerkleinern.",
"Auberginen waschen und Champignons putzen.",
"Das Dressing abschmecken.")
</list>



Changing the font size here doesn't help, although larger fonts do seem to make the options use more of the screen's width.


In the end, we'll use the line break workaround to get this done and rearrange the items on the screen, but it's still a pretty puzzle what is happening here, at least to me.

With respect to you first, origjnal example with static response options, I'm not sure where exactly the assumptions Inquisit makes to allocate space for the options breaks down.

With the later example, however, part of the story is that the options are set dynamically, i.e. Inquisit cannot (try to) figure out in advance how much space it needs to allocate to fit an option.
By AKrishna - 8/25/2019

Dave - 8/23/2019
AKrishna - 8/23/2019
Hi Dave,

thanks for your response. It's an interesting issue - I tried using line breaks in my original (more elaborate) code, as I mentioned in my first post, and they didn't work, even though they were placed exactly as yours. This seems to be a combination of causes. For example, the following code is identical to my intially posted code, with the following differences:
- some of the option strings have been made a little longer
- line breaks are included for all long options
- the second question is set to random option order instead of sequential

Here, the problem occurs in question 2 consistently IF the long option is selected as the first, regardless of the presence of line breaks, which makes me fear that line breaks are not a consistent solution to the problem. It's also worth noting that when the problem occurs, it also seems to cut off the usage of the right side of the screen to some extent - the wrap happens earlier than I would expect given the screen size.

My earlier solution of reducing the responsefontstyle size solves the issue in this code, but (apparently) only because the lower font size makes the line wrap unnecessary. Increasing the fontstyle to 2.34% somehow does the same, but going up to 3% causes the issue again.


<radiobuttons BIF_step01>
/ caption = "Avocado zerdrücken und mit Zitronen-/Limettensaft mischen."
/ options = ("Guacamole zum Snacken vorbereiten.","Sesampasste, Zitronensaft.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,10)
</radiobuttons>

<radiobuttons BIF_step02>
/ caption = "Gurkenstücke/-raspeln mit Knoblauch und Joghurt mischen."
/ options = ("Tzatziki-Soße für den Beilagensalat machen.","~nSchnitzel erst in einem flachen Teller mit Ei und dann in einem flachen Teller mit Paniermehl wenden.~n")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,30)
</radiobuttons>

<radiobuttons BIF_step03>
/ caption = "Gemüsestücke mit Brühe einkochen."
/ options = ("~nSüßkartoffeln, Schalotten und Bohnen in einen Topf mit Brühe geben und zum Kochen bringen.~n","Für ein vegetarisches Hauptgericht sorgen.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,50)
</radiobuttons>

<radiobuttons BIF_step04>
/ caption = "Obazdamischung mit Zwiebeln und Paprikapulver verfeinern."
/ options = ("Den Obazda servierfertig machen.","~nZwiebeln unter Butter-Camembert-Masse mischen und dann mit Paprikapulver bestreuen.~n")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,70)
</radiobuttons>


<surveypage BIF01>
/ questions = [1=BIF_step01; 2=BIF_step02; 3=BIF_step03; 4=BIF_step04]
/ finishlabel = "Weiter"
/ nextbuttonposition = (48, 90)
/ showbackbutton = false
/ showpagenumbers = false
/ showmousecursor = true
/ fontstyle = ("Arial", 2%)
</surveypage>




Now if I look at my actual study, these issues present more of a challenge. In the experiment, items and options for the radiobuttons are drawn from lists across several blocks and the options must be presented randomly. Here's an example:


<expt Tester>
/ blocks = [1-3 = BIF_A]
</expt>

***********************************************************************************************************
Lists
***********************************************************************************************************


<list Masterlist>
/ items = ("Guacamole",
"Tzatziki",
"Eintopf",
"Obadzda",
"Crème brûlée",
"Gnocchi",
"Obstkuchen",
"Porridge",
"Hummus",
"Sushi",
"Frikadelle",
"Pizza Margherita",
"Eis",
"Risotto",
"Tiramisu",
"Gemüse-Lasagne",
"Sandwich",
"OMLETT",
"Schnitzel",
"Marmelade",
"Pfannkuchen",
"Smoothie",
"Antipasti",
"Blattsalat")
/ selectionmode = random
/ selectionrate = always
</list>


********************************************************************************************************************************
BIF
********************************************************************************************************************************

<values>
/ FoodValue0 = ""
/ FoodValue1 = ""
/ FoodValue2 = ""
/ FoodValue3 = ""
/ FoodValue4 = ""
/ FoodValue5 = ""
/ FoodValue6 = ""
/ FoodValue7 = ""
/ FoodValue8 = ""
</values>

<block BIF_A>
/ trials = [1=BIF01; 2=BIF02]
/ onblockbegin = [values.FoodValue1 = list.Masterlist.nextindex;
values.FoodValue2 = list.Masterlist.nextindex;
values.FoodValue3 = list.Masterlist.nextindex;
values.FoodValue4 = list.Masterlist.nextindex;
values.FoodValue5 = list.Masterlist.nextindex;
values.FoodValue6 = list.Masterlist.nextindex;
values.FoodValue7 = list.Masterlist.nextindex;
values.FoodValue8 = list.Masterlist.nextindex]
</block>

<surveypage BIF01>
/ questions = [1=BIF_step01; 2=BIF_step02; 3=BIF_step03; 4=BIF_step04]
/ finishlabel = "Weiter"
/ nextbuttonposition = (48, 90)
/ showbackbutton = false
/ showpagenumbers = false
/ showmousecursor = true
/ fontstyle = ("Arial", 2%)
</surveypage>

<surveypage BIF02>
/ questions = [1=BIF_step05; 2=BIF_step06; 3=BIF_step07; 4=BIF_step08]
/ finishlabel = "Weiter"
/ nextbuttonposition = (48,90)
/ showbackbutton = false
/ showpagenumbers = false
/ showquestionnumbers = true
/ showmousecursor = true
/ fontstyle = ("Arial", 2%)
</surveypage>


**********************************
BIF radiobuttons
**********************************

<radiobuttons BIF_step01>
/ caption = "<%list.FoodBIF.item(values.FoodValue1)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue1)%>","<%list.FoodBIFItem2.item(values.FoodValue1)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,10)
/ required = false
</radiobuttons>

<radiobuttons BIF_step02>
/ caption = "<%list.FoodBIF.item(values.FoodValue2)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue2)%>","<%list.FoodBIFItem2.item(values.FoodValue2)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,30)
/ required = false
</radiobuttons>

<radiobuttons BIF_step03>
/ caption = "<%list.FoodBIF.item(values.FoodValue3)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue3)%>","<%list.FoodBIFItem2.item(values.FoodValue3)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,50)
/ required = false
</radiobuttons>

<radiobuttons BIF_step04>
/ caption = "<%list.FoodBIF.item(values.FoodValue4)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue4)%>","<%list.FoodBIFItem2.item(values.FoodValue4)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,70)
/ required = false
</radiobuttons>

<radiobuttons BIF_step05>
/ caption = "<%list.FoodBIF.item(values.FoodValue5)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue5)%>","<%list.FoodBIFItem2.item(values.FoodValue5)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,10)
/ required = false
</radiobuttons>

<radiobuttons BIF_step06>
/ caption = "<%list.FoodBIF.item(values.FoodValue6)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue6)%>","<%list.FoodBIFItem2.item(values.FoodValue6)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,30)
/ required = false
</radiobuttons>

<radiobuttons BIF_step07>
/ caption = "<%list.FoodBIF.item(values.FoodValue7)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue7)%>","<%list.FoodBIFItem2.item(values.FoodValue7)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,50)
/ required = false
</radiobuttons>

<radiobuttons BIF_step08>
/ caption = "<%list.FoodBIF.item(values.FoodValue8)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue8)%>","<%list.FoodBIFItem2.item(values.FoodValue8)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,70)
/ required = false
</radiobuttons>



**********************************
BIF lists
**********************************

<list FoodBIF>
/ items = (
"Avocado zerdrücken und mit Zitronen-/Limettensaft mischen.",
"Gurkenstücke/-raspeln mit Knoblauch und Joghurt mischen.",
"Gemüsestücke mit Brühe einkochen.",
"Obazdamischung mit Zwiebeln und Paprikapulver verfeinern.",
"Ei-Sahne-Masse herstellen",
"Gnocchi-Teig machen.",
"Äpfel vorbereiten.",
"Haferbrei anrichten.",
"Hummus fertigstellen.",
"Sushi vorbereiten.",
"Frikadellenteig herstellen.",
"Pizza vorbereiten.",
"Eismischung einfrieren.",
"Reis anbraten.",
"Tiramisu herstellen.",
"Gemüse anbraten.",
"Sandwiches vorbereiten.",
"Omlett zubereiten.",
"Schnitzel panieren.",
"Obst klein schneiden.",
"Pfannkuchen zubreiten.",
"Obst vorbereiten.",
"Antipasti vorbereiten.",
"Salat machen.")
</list>


<list FoodBIFItem1>
/ items = (
"Guacamole zum Snacken vorbereiten.",
"Tzatziki-Soße für den Beilagensalat machen.",
"Für ein vegetarisches Hauptgericht sorgen.",
"Den Obazda servierfertig machen.",
"Crème brûlée zubereiten.",
"Eine Beilage vorbereiten.",
"Apfelkuchen zubereiten.",
"Einen gesunden Nachtisch bereitstellen.",
"Einen herzhafen Aufstrich machen.",
"Für ein Fischgericht sorgen.",
"Für einen fleischigen Snack sorgen.",
"Ein Gericht, das jedem schmeckt, bereitstellen.",
"Eis zubereiten.",
"Risotto zubereiten",
"Einen beliebten Nachtisch fertigstellen.",
"Gemüselasagne vorbereiten.",
"Dafür sorgen, dass jeder satt wird.",
"Ein proteinreiches Gericht bereitstellen.",
"Für ein Fleisch-Hauptgericht sorgen.",
"Einen süßen Aufstrich zubereiten.",
"Für eine schöne Feier sorgen.",
"Smoothies machen.",
"Gemüsefans glücklich machen.",
"Für eine frische Beilage sorgen.")
</list>


<list FoodBIFItem2>
/ items = (
"Mit einer Gabel wiederholt auf die Avocadostücke drücken.",
"Gurken mit einer Gabel unter Joghurt rühren.",
"Süßkartoffeln, Schalotten und Bohnen in einen Topf mit Brühe geben und zum Kochen bringen.",
"Zwiebeln unter Butter-Camembert-Masse mischen und dann mit Paprikapulver bestreuen.",
"Eigelb, Sahne und Zucker mit Rührgerät verquirlen.",
"Gekochte Kartoffeln stampfen und mit Grieß verkneten.",
"Äpfel schälen und in mundgerechte Stücke schneiden.",
"Bananen kleinschneiden und zusammen mit Nüssen in den Haferbrei geben.",
"Sesampasste, Zitronensaft, Olivenöl und Gewürze unter Kichererbesenmasse mischen.",
"Algenblatt mit Sushireis belegen und Lachsstreifen mittig auf dem Reis platzieren.",
"Zwiebelstücke und Hackfleisch mit den Händen verkneten.",
"Teig auf ein Blech geben und mit einem Nudelholz ausrollen.",
"Mischung ins Gefrierfach geben und abwarten.",
"Reis mit Olivenöl in einen Topf geben. Topf erhitzen.",
"Löffelbiskuit & Mascarponecreme schichten und mit Kakao bestreuen.",
"Aubergine und Pilze in eine Pfanne geben und erhitzen.",
"Toastbrot mit Mayonaise bestreichen und belegen.",
"Eier aufschlagen und zu Zucchini-Stücken in die erhitzte Pfanne geben.",
"Schnitzel erst in einem flachen Teller mit Ei und dann in einem flachen Teller mit Paniermehl wenden.",
"Obst mit einem scharfen Messer in kleine Stücke schneiden.",
"Teigzutaten verrühren und Teig braten.",
"Obst waschen, schälen und zerkleinern.",
"Auberginen waschen und Champignons putzen.",
"Das Dressing abschmecken.")
</list>


For some reason, the radiobuttons in this code seem to have the text wrap at about 50% of the screen's width instead of using the full width, even though they seem identical to the radiobuttons in my first example, where this does not happen to the same extreme extent. Furthermore, adding line breaks to the options (à la "~n<%list.FoodBIFItem1.item(values.FoodValue8)%>~n") is impractical here, as it makes the short options appear almost unmoored from their question. Replacing the FoodBIF2Items list above with one that adds line breaks to only the longer options still causes the problem, even though this should be functionally identical:


FoodBIFItem2>
/ items = (
"~nMit einer Gabel wiederholt auf die Avocadostücke drücken.~n",
"Gurken mit einer Gabel unter Joghurt rühren.",
"~nSüßkartoffeln, Schalotten und Bohnen in einen Topf mit Brühe geben und zum Kochen bringen.~n",
"~nZwiebeln unter Butter-Camembert-Masse mischen und dann mit Paprikapulver bestreuen.~n",
"Eigelb, Sahne und Zucker mit Rührgerät verquirlen.",
"Gekochte Kartoffeln stampfen und mit Grieß verkneten.",
"Äpfel schälen und in mundgerechte Stücke schneiden.",
"~nBananen kleinschneiden und zusammen mit Nüssen in den Haferbrei geben.~n",
"~nSesampaste, Zitronensaft, Olivenöl und Gewürze unter Kichererbesenmasse mischen.~n",
"~nAlgenblatt mit Sushireis belegen und Lachsstreifen mittig auf dem Reis platzieren.~n",
"Zwiebelstücke und Hackfleisch mit den Händen verkneten.",
"Teig auf ein Blech geben und mit einem Nudelholz ausrollen.",
"Mischung ins Gefrierfach geben und abwarten.",
"Reis mit Olivenöl in einen Topf geben. Topf erhitzen.",
"~nLöffelbiskuit & Mascarponecreme schichten und mit Kakao bestreuen.~n",
"Aubergine und Pilze in eine Pfanne geben und erhitzen.",
"Toastbrot mit Mayonaise bestreichen und belegen.",
"~nEier aufschlagen und zu Zucchini-Stücken in die erhitzte Pfanne geben.~n",
"~nSchnitzel erst in einem flachen Teller mit Ei und dann in einem flachen Teller mit Paniermehl wenden.~n",
"~nObst mit einem scharfen Messer in kleine Stücke schneiden.~n",
"Teigzutaten verrühren und Teig braten.",
"Obst waschen, schälen und zerkleinern.",
"Auberginen waschen und Champignons putzen.",
"Das Dressing abschmecken.")
</list>



Changing the font size here doesn't help, although larger fonts do seem to make the options use more of the screen's width.


In the end, we'll use the line break workaround to get this done and rearrange the items on the screen, but it's still a pretty puzzle what is happening here, at least to me.

With respect to you first, origjnal example with static response options, I'm not sure where exactly the assumptions Inquisit makes to allocate space for the options breaks down.

With the later example, however, part of the story is that the options are set dynamically, i.e. Inquisit cannot (try to) figure out in advance how much space it needs to allocate to fit an option.

One thing I noted here was that even when I randomized the options "by hand" (i.e. by setting the option.1 and option.2 values using /onblockbegin and using /order = sequence), the issue remained exactly the same. So the dynamism of the /order = random might not be at fault here, more the dynamism of using <%values%> as content - or it may all reduce to the issue that is affecting my static example. If my further tests turn up anything of interest on this issue, I'll post it here.

By Dave - 8/25/2019

AKrishna - 8/26/2019
Dave - 8/23/2019
AKrishna - 8/23/2019
Hi Dave,

thanks for your response. It's an interesting issue - I tried using line breaks in my original (more elaborate) code, as I mentioned in my first post, and they didn't work, even though they were placed exactly as yours. This seems to be a combination of causes. For example, the following code is identical to my intially posted code, with the following differences:
- some of the option strings have been made a little longer
- line breaks are included for all long options
- the second question is set to random option order instead of sequential

Here, the problem occurs in question 2 consistently IF the long option is selected as the first, regardless of the presence of line breaks, which makes me fear that line breaks are not a consistent solution to the problem. It's also worth noting that when the problem occurs, it also seems to cut off the usage of the right side of the screen to some extent - the wrap happens earlier than I would expect given the screen size.

My earlier solution of reducing the responsefontstyle size solves the issue in this code, but (apparently) only because the lower font size makes the line wrap unnecessary. Increasing the fontstyle to 2.34% somehow does the same, but going up to 3% causes the issue again.


<radiobuttons BIF_step01>
/ caption = "Avocado zerdrücken und mit Zitronen-/Limettensaft mischen."
/ options = ("Guacamole zum Snacken vorbereiten.","Sesampasste, Zitronensaft.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,10)
</radiobuttons>

<radiobuttons BIF_step02>
/ caption = "Gurkenstücke/-raspeln mit Knoblauch und Joghurt mischen."
/ options = ("Tzatziki-Soße für den Beilagensalat machen.","~nSchnitzel erst in einem flachen Teller mit Ei und dann in einem flachen Teller mit Paniermehl wenden.~n")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,30)
</radiobuttons>

<radiobuttons BIF_step03>
/ caption = "Gemüsestücke mit Brühe einkochen."
/ options = ("~nSüßkartoffeln, Schalotten und Bohnen in einen Topf mit Brühe geben und zum Kochen bringen.~n","Für ein vegetarisches Hauptgericht sorgen.")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,50)
</radiobuttons>

<radiobuttons BIF_step04>
/ caption = "Obazdamischung mit Zwiebeln und Paprikapulver verfeinern."
/ options = ("Den Obazda servierfertig machen.","~nZwiebeln unter Butter-Camembert-Masse mischen und dann mit Paprikapulver bestreuen.~n")
/ order = sequence
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,70)
</radiobuttons>


<surveypage BIF01>
/ questions = [1=BIF_step01; 2=BIF_step02; 3=BIF_step03; 4=BIF_step04]
/ finishlabel = "Weiter"
/ nextbuttonposition = (48, 90)
/ showbackbutton = false
/ showpagenumbers = false
/ showmousecursor = true
/ fontstyle = ("Arial", 2%)
</surveypage>




Now if I look at my actual study, these issues present more of a challenge. In the experiment, items and options for the radiobuttons are drawn from lists across several blocks and the options must be presented randomly. Here's an example:


<expt Tester>
/ blocks = [1-3 = BIF_A]
</expt>

***********************************************************************************************************
Lists
***********************************************************************************************************


<list Masterlist>
/ items = ("Guacamole",
"Tzatziki",
"Eintopf",
"Obadzda",
"Crème brûlée",
"Gnocchi",
"Obstkuchen",
"Porridge",
"Hummus",
"Sushi",
"Frikadelle",
"Pizza Margherita",
"Eis",
"Risotto",
"Tiramisu",
"Gemüse-Lasagne",
"Sandwich",
"OMLETT",
"Schnitzel",
"Marmelade",
"Pfannkuchen",
"Smoothie",
"Antipasti",
"Blattsalat")
/ selectionmode = random
/ selectionrate = always
</list>


********************************************************************************************************************************
BIF
********************************************************************************************************************************

<values>
/ FoodValue0 = ""
/ FoodValue1 = ""
/ FoodValue2 = ""
/ FoodValue3 = ""
/ FoodValue4 = ""
/ FoodValue5 = ""
/ FoodValue6 = ""
/ FoodValue7 = ""
/ FoodValue8 = ""
</values>

<block BIF_A>
/ trials = [1=BIF01; 2=BIF02]
/ onblockbegin = [values.FoodValue1 = list.Masterlist.nextindex;
values.FoodValue2 = list.Masterlist.nextindex;
values.FoodValue3 = list.Masterlist.nextindex;
values.FoodValue4 = list.Masterlist.nextindex;
values.FoodValue5 = list.Masterlist.nextindex;
values.FoodValue6 = list.Masterlist.nextindex;
values.FoodValue7 = list.Masterlist.nextindex;
values.FoodValue8 = list.Masterlist.nextindex]
</block>

<surveypage BIF01>
/ questions = [1=BIF_step01; 2=BIF_step02; 3=BIF_step03; 4=BIF_step04]
/ finishlabel = "Weiter"
/ nextbuttonposition = (48, 90)
/ showbackbutton = false
/ showpagenumbers = false
/ showmousecursor = true
/ fontstyle = ("Arial", 2%)
</surveypage>

<surveypage BIF02>
/ questions = [1=BIF_step05; 2=BIF_step06; 3=BIF_step07; 4=BIF_step08]
/ finishlabel = "Weiter"
/ nextbuttonposition = (48,90)
/ showbackbutton = false
/ showpagenumbers = false
/ showquestionnumbers = true
/ showmousecursor = true
/ fontstyle = ("Arial", 2%)
</surveypage>


**********************************
BIF radiobuttons
**********************************

<radiobuttons BIF_step01>
/ caption = "<%list.FoodBIF.item(values.FoodValue1)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue1)%>","<%list.FoodBIFItem2.item(values.FoodValue1)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,10)
/ required = false
</radiobuttons>

<radiobuttons BIF_step02>
/ caption = "<%list.FoodBIF.item(values.FoodValue2)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue2)%>","<%list.FoodBIFItem2.item(values.FoodValue2)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,30)
/ required = false
</radiobuttons>

<radiobuttons BIF_step03>
/ caption = "<%list.FoodBIF.item(values.FoodValue3)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue3)%>","<%list.FoodBIFItem2.item(values.FoodValue3)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,50)
/ required = false
</radiobuttons>

<radiobuttons BIF_step04>
/ caption = "<%list.FoodBIF.item(values.FoodValue4)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue4)%>","<%list.FoodBIFItem2.item(values.FoodValue4)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,70)
/ required = false
</radiobuttons>

<radiobuttons BIF_step05>
/ caption = "<%list.FoodBIF.item(values.FoodValue5)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue5)%>","<%list.FoodBIFItem2.item(values.FoodValue5)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,10)
/ required = false
</radiobuttons>

<radiobuttons BIF_step06>
/ caption = "<%list.FoodBIF.item(values.FoodValue6)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue6)%>","<%list.FoodBIFItem2.item(values.FoodValue6)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,30)
/ required = false
</radiobuttons>

<radiobuttons BIF_step07>
/ caption = "<%list.FoodBIF.item(values.FoodValue7)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue7)%>","<%list.FoodBIFItem2.item(values.FoodValue7)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,50)
/ required = false
</radiobuttons>

<radiobuttons BIF_step08>
/ caption = "<%list.FoodBIF.item(values.FoodValue8)%>"
/ options = ("<%list.FoodBIFItem1.item(values.FoodValue8)%>","<%list.FoodBIFItem2.item(values.FoodValue8)%>")
/ order = random
/ responsefontstyle = ("Arial", 2.3%)
/ position = (10,70)
/ required = false
</radiobuttons>



**********************************
BIF lists
**********************************

<list FoodBIF>
/ items = (
"Avocado zerdrücken und mit Zitronen-/Limettensaft mischen.",
"Gurkenstücke/-raspeln mit Knoblauch und Joghurt mischen.",
"Gemüsestücke mit Brühe einkochen.",
"Obazdamischung mit Zwiebeln und Paprikapulver verfeinern.",
"Ei-Sahne-Masse herstellen",
"Gnocchi-Teig machen.",
"Äpfel vorbereiten.",
"Haferbrei anrichten.",
"Hummus fertigstellen.",
"Sushi vorbereiten.",
"Frikadellenteig herstellen.",
"Pizza vorbereiten.",
"Eismischung einfrieren.",
"Reis anbraten.",
"Tiramisu herstellen.",
"Gemüse anbraten.",
"Sandwiches vorbereiten.",
"Omlett zubereiten.",
"Schnitzel panieren.",
"Obst klein schneiden.",
"Pfannkuchen zubreiten.",
"Obst vorbereiten.",
"Antipasti vorbereiten.",
"Salat machen.")
</list>


<list FoodBIFItem1>
/ items = (
"Guacamole zum Snacken vorbereiten.",
"Tzatziki-Soße für den Beilagensalat machen.",
"Für ein vegetarisches Hauptgericht sorgen.",
"Den Obazda servierfertig machen.",
"Crème brûlée zubereiten.",
"Eine Beilage vorbereiten.",
"Apfelkuchen zubereiten.",
"Einen gesunden Nachtisch bereitstellen.",
"Einen herzhafen Aufstrich machen.",
"Für ein Fischgericht sorgen.",
"Für einen fleischigen Snack sorgen.",
"Ein Gericht, das jedem schmeckt, bereitstellen.",
"Eis zubereiten.",
"Risotto zubereiten",
"Einen beliebten Nachtisch fertigstellen.",
"Gemüselasagne vorbereiten.",
"Dafür sorgen, dass jeder satt wird.",
"Ein proteinreiches Gericht bereitstellen.",
"Für ein Fleisch-Hauptgericht sorgen.",
"Einen süßen Aufstrich zubereiten.",
"Für eine schöne Feier sorgen.",
"Smoothies machen.",
"Gemüsefans glücklich machen.",
"Für eine frische Beilage sorgen.")
</list>


<list FoodBIFItem2>
/ items = (
"Mit einer Gabel wiederholt auf die Avocadostücke drücken.",
"Gurken mit einer Gabel unter Joghurt rühren.",
"Süßkartoffeln, Schalotten und Bohnen in einen Topf mit Brühe geben und zum Kochen bringen.",
"Zwiebeln unter Butter-Camembert-Masse mischen und dann mit Paprikapulver bestreuen.",
"Eigelb, Sahne und Zucker mit Rührgerät verquirlen.",
"Gekochte Kartoffeln stampfen und mit Grieß verkneten.",
"Äpfel schälen und in mundgerechte Stücke schneiden.",
"Bananen kleinschneiden und zusammen mit Nüssen in den Haferbrei geben.",
"Sesampasste, Zitronensaft, Olivenöl und Gewürze unter Kichererbesenmasse mischen.",
"Algenblatt mit Sushireis belegen und Lachsstreifen mittig auf dem Reis platzieren.",
"Zwiebelstücke und Hackfleisch mit den Händen verkneten.",
"Teig auf ein Blech geben und mit einem Nudelholz ausrollen.",
"Mischung ins Gefrierfach geben und abwarten.",
"Reis mit Olivenöl in einen Topf geben. Topf erhitzen.",
"Löffelbiskuit & Mascarponecreme schichten und mit Kakao bestreuen.",
"Aubergine und Pilze in eine Pfanne geben und erhitzen.",
"Toastbrot mit Mayonaise bestreichen und belegen.",
"Eier aufschlagen und zu Zucchini-Stücken in die erhitzte Pfanne geben.",
"Schnitzel erst in einem flachen Teller mit Ei und dann in einem flachen Teller mit Paniermehl wenden.",
"Obst mit einem scharfen Messer in kleine Stücke schneiden.",
"Teigzutaten verrühren und Teig braten.",
"Obst waschen, schälen und zerkleinern.",
"Auberginen waschen und Champignons putzen.",
"Das Dressing abschmecken.")
</list>


For some reason, the radiobuttons in this code seem to have the text wrap at about 50% of the screen's width instead of using the full width, even though they seem identical to the radiobuttons in my first example, where this does not happen to the same extreme extent. Furthermore, adding line breaks to the options (à la "~n<%list.FoodBIFItem1.item(values.FoodValue8)%>~n") is impractical here, as it makes the short options appear almost unmoored from their question. Replacing the FoodBIF2Items list above with one that adds line breaks to only the longer options still causes the problem, even though this should be functionally identical:


FoodBIFItem2>
/ items = (
"~nMit einer Gabel wiederholt auf die Avocadostücke drücken.~n",
"Gurken mit einer Gabel unter Joghurt rühren.",
"~nSüßkartoffeln, Schalotten und Bohnen in einen Topf mit Brühe geben und zum Kochen bringen.~n",
"~nZwiebeln unter Butter-Camembert-Masse mischen und dann mit Paprikapulver bestreuen.~n",
"Eigelb, Sahne und Zucker mit Rührgerät verquirlen.",
"Gekochte Kartoffeln stampfen und mit Grieß verkneten.",
"Äpfel schälen und in mundgerechte Stücke schneiden.",
"~nBananen kleinschneiden und zusammen mit Nüssen in den Haferbrei geben.~n",
"~nSesampaste, Zitronensaft, Olivenöl und Gewürze unter Kichererbesenmasse mischen.~n",
"~nAlgenblatt mit Sushireis belegen und Lachsstreifen mittig auf dem Reis platzieren.~n",
"Zwiebelstücke und Hackfleisch mit den Händen verkneten.",
"Teig auf ein Blech geben und mit einem Nudelholz ausrollen.",
"Mischung ins Gefrierfach geben und abwarten.",
"Reis mit Olivenöl in einen Topf geben. Topf erhitzen.",
"~nLöffelbiskuit & Mascarponecreme schichten und mit Kakao bestreuen.~n",
"Aubergine und Pilze in eine Pfanne geben und erhitzen.",
"Toastbrot mit Mayonaise bestreichen und belegen.",
"~nEier aufschlagen und zu Zucchini-Stücken in die erhitzte Pfanne geben.~n",
"~nSchnitzel erst in einem flachen Teller mit Ei und dann in einem flachen Teller mit Paniermehl wenden.~n",
"~nObst mit einem scharfen Messer in kleine Stücke schneiden.~n",
"Teigzutaten verrühren und Teig braten.",
"Obst waschen, schälen und zerkleinern.",
"Auberginen waschen und Champignons putzen.",
"Das Dressing abschmecken.")
</list>



Changing the font size here doesn't help, although larger fonts do seem to make the options use more of the screen's width.


In the end, we'll use the line break workaround to get this done and rearrange the items on the screen, but it's still a pretty puzzle what is happening here, at least to me.

With respect to you first, origjnal example with static response options, I'm not sure where exactly the assumptions Inquisit makes to allocate space for the options breaks down.

With the later example, however, part of the story is that the options are set dynamically, i.e. Inquisit cannot (try to) figure out in advance how much space it needs to allocate to fit an option.

One thing I noted here was that even when I randomized the options "by hand" (i.e. by setting the option.1 and option.2 values using /onblockbegin and using /order = sequence), the issue remained exactly the same. So the dynamism of the /order = random might not be at fault here, more the dynamism of using <%values%> as content - or it may all reduce to the issue that is affecting my static example. If my further tests turn up anything of interest on this issue, I'll post it here.


> more the dynamism of using <%values%> as content

Yes, that is what I meant. Sorry for being unclear. Because the options are variables (values in Inquisit parlance), Inquisit does not know how much space it needs to allocate. This is not the case when the options are static, even if you randomize the order of those static options per /order.