> Am 18.02.2015 um 11:45 schrieb Procházka Lukáš Ing. - Pontex s. r. o. > <l...@pontex.cz>: > > Hello, > > how to more easily achieve this?: > > ---- > Some text on line Text in box > Longer text in the box > Shorter text in box > > |<------------------>| > Width of the box is > that of the longest > text in it > > |<---->| > Some space between the preceeding > text and the box > |<------------------------------------------>| > Text width available (\textwidth) > ---- > > The solution should have the following features: > > - Text in the box to be written "at once" with a token (be "\\" or "\par" or > another) to go to the next line; > - The box (wrapping "Text in box", "Longer text in the box", "Shorter text in > box") should have no width specified - > it should get it from the longest member (line) in it (in our case: > width of "Longer text in the box"); > - Text in the box should be "alignleft"; > - Base line of first text the box to be vertically aligned to the base of the > preceding text, i.e. > "Some text on line" to have the same basement as "Text in box"; > - A horizontal filler may be placed between "Some text on line" and the box > to fit "text width available". > > Two ways that don't go to the goal, just to demonstrate my trials and fails: > > ---- > \starttext > > % 1 > > Some text on line\hfill Text in box\par > \hfill Longer text in the box\par > \hfill Shorter text in box\par > > % 2 > > Some text on line\hfill\framed[width=5cm,align=flushleft,frame=off] > {Text in box\\ > Longer text in the box\\ > Shorter text in box} > > \stoptext > ---- > > Way 1 - problems: > > - The text to be boxed is not written in a "box environment"; > - the text to be boxed is not left-aligned in the box (as it actually is not > in a box). > > Way 2 - problems: > > - The text in the box (\framed) must have width specified; > - the text in the box "goes over" the line where it is placed, not with first > line basement aligned. > > So - how to achieve the layout desired? > > (Hint: > > The situation may be imagined as the top of a letter page: > > write "some text to the left", fill with the "maximum space" till you reach > the "box for an address" on the right of the current line; > write address lines left-aligned inside the box.)
Method 1 (frame based): \starttext Some text on line \hfill \startframed[width=fit,align=flushleft,frame=off,location=top] Text in box\\ Longer text in the box\\ Shorter text in box \stopframed \stoptext Method 2 (layer based): \definelayer[letterhead][width=\textwidth] \setupbackgrounds[text][background=letterhead] \starttext \setlayerframed [letterhead] [preset=lefttop] [offset=0pt,frame=off] {Some text on line} \setlayerframed [letterhead] [preset=righttop] [offset=0pt,width=fit,align=flushleft,frame=off,location=top] {Text in box\\ Longer text in the box\\ Shorter text in box} \blank[force,4*line] \input knuth \stoptext Wolfgang ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________