Two framed texts on the same line
Hello, I would like to achieve this kind of typographical effect: two text blocks, one of them aligned to the left margin, the other with left-aligned text but with the right margin at the right margin of the page. I can obtain each of them with for example the following: \defineframedtext[lepi][align=raggedright,width=fit,offset=0pt,frame=off,location=left] \defineframedtext[repi][align=raggedright,width=fit,offset=0pt,frame=off,location=right] Now, I want them to be "at the same height". However, using things like placesidebyside or even just \startlepi ... \stoplepi \startrepi ... \stoprepi doesn't work. Any suggestions? -- Giuseppe "Oblomov" Bilotta
Giuseppe Bilotta wrote:
Hello, I would like to achieve this kind of typographical effect: two text blocks, one of them aligned to the left margin, the other with left-aligned text but with the right margin at the right margin of the page.
I can obtain each of them with for example the following:
\defineframedtext[lepi][align=raggedright,width=fit,offset=0pt,frame=off,location=left] \defineframedtext[repi][align=raggedright,width=fit,offset=0pt,frame=off,location=right]
Now, I want them to be "at the same height". However, using things like placesidebyside or even just \startlepi ... \stoplepi \startrepi ... \stoprepi doesn't work.
Any suggestions?
depends a bit on the usage; the following shows you a few tricks \defineframedtext [gb] [align=raggedright, width=.5\textwidth, offset=0pt, frame=off, before=, after=] \startbuffer[left] \startgb[none] \input tufte \stopgb \stopbuffer \startbuffer[right] \startgb[none] \input zapf \stopgb \stopbuffer \starttext \input tufte \definepairedbox[gb][location={right,top}] \startbaselinecorrection \placepairedbox[gb] {\getbuffer[left]} {\getbuffer[right]} \stopbaselinecorrection \input zapf \stoptext
Friday, November 25, 2005 Hans Hagen wrote:
depends a bit on the usage; the following shows you a few tricks
\defineframedtext [gb] [align=raggedright, width=.5\textwidth, offset=0pt, frame=off, before=, after=]
\startbuffer[left] \startgb[none] \input tufte \stopgb \stopbuffer
\startbuffer[right] \startgb[none] \input zapf \stopgb \stopbuffer
\starttext
\input tufte
\definepairedbox[gb][location={right,top}]
\startbaselinecorrection \placepairedbox[gb] {\getbuffer[left]} {\getbuffer[right]} \stopbaselinecorrection
\input zapf
\stoptext
Oh, interesting this pairedbox thing (it's undocumented, though). I was hoping to be able to do it like this: \defineframedtext[lepi][align=raggedright,width=fit,offset=0pt,frame=off,location=left] \defineframedtext[repi][align=raggedright,width=fit,offset=0pt,frame=off,location=right] \definepairedbox[epi][location={right,top}] \placepairedbox[epi] {\startlepi {\bf Coordinatore}\par prof. F.~Nicolosi \stoplepi} {\startrepi {\bf Tutor}\par prof. G.~Russo \stoprepi} But it won't work because the second box (repi) gets placed with its LEFT margin on the right margin of the page, whereas I needed to be with its right margin at the right margin of the page. I think the problem is that, from what I get by reading the source, in paired boxes are not treated equally. Basically, the rpbolem seems to be that the width of the lepi framed text is not the 'natural width' of the text, despite the width=fit command ... why is this so? -- Giuseppe "Oblomov" Bilotta
Giuseppe Bilotta wrote:
Friday, November 25, 2005 Hans Hagen wrote:
depends a bit on the usage; the following shows you a few tricks
\defineframedtext [gb] [align=raggedright, width=.5\textwidth, offset=0pt, frame=off, before=, after=]
\startbuffer[left] \startgb[none] \input tufte \stopgb \stopbuffer
\startbuffer[right] \startgb[none] \input zapf \stopgb \stopbuffer
\starttext
\input tufte
\definepairedbox[gb][location={right,top}]
\startbaselinecorrection \placepairedbox[gb] {\getbuffer[left]} {\getbuffer[right]} \stopbaselinecorrection
\input zapf
\stoptext
Oh, interesting this pairedbox thing (it's undocumented, though). I was hoping to be able to do it like this:
\defineframedtext[lepi][align=raggedright,width=fit,offset=0pt,frame=off,location=left] \defineframedtext[repi][align=raggedright,width=fit,offset=0pt,frame=off,location=right] \definepairedbox[epi][location={right,top}]
\placepairedbox[epi] {\startlepi {\bf Coordinatore}\par prof. F.~Nicolosi \stoplepi} {\startrepi {\bf Tutor}\par prof. G.~Russo \stoprepi}
But it won't work because the second box (repi) gets placed with its LEFT margin on the right margin of the page, whereas I needed to be with its right margin at the right margin of the page. I think the problem is that, from what I get by reading the source, in paired boxes are not treated equally.
no, you need to bypass the location handling in framed texts so, replacing left and right by none should do the trick, however, i found out that this demands an extra line of code in core-rul.tex (see 'newer' below) \def\dodostopframedtext#1#2% % no \baselinecorrection, see faq docs {\endgraf \removelastskip \doifvalue{\??kd#1\c!depthcorrection}\v!on % local and global {\forgetall \vskip-\struttotal \verticalstrut \egroup \forgetall \vskip-\lineheight % will be an option, not default % \setbaselinecorrections % \donegbotbaselinecorrection \verticalstrut} \stopboxedcontent \stopcolor \egroup \doif{#2}\v!none\insidefloattrue % new \doif{\framedtextparameter{#1}\c!location}\v!none\insidefloattrue % newer \ifinsidefloat \box\framebox \else \doplacement[\??kd#1][\c!depthcorrection=\v!off]{\box\framebox}% \fi \egroup}
Basically, the rpbolem seems to be that the width of the lepi framed text is not the 'natural width' of the text, despite the width=fit command ... why is this so?
see \doplacement in the previous code, you need to have the then branch; placement is for placemen tin the running text (and looks at the text width) Hans
Friday, November 25, 2005 Hans Hagen wrote:
\def\dodostopframedtext#1#2% % no \baselinecorrection, see faq docs {\endgraf \removelastskip \doifvalue{\??kd#1\c!depthcorrection}\v!on % local and global {\forgetall \vskip-\struttotal \verticalstrut \egroup \forgetall \vskip-\lineheight % will be an option, not default % \setbaselinecorrections % \donegbotbaselinecorrection \verticalstrut} \stopboxedcontent \stopcolor \egroup \doif{#2}\v!none\insidefloattrue % new
\doif{\framedtextparameter{#1}\c!location}\v!none\insidefloattrue % newer \ifinsidefloat \box\framebox \else
\doplacement[\??kd#1][\c!depthcorrection=\v!off]{\box\framebox}% \fi \egroup}
Hm, strange, I patched core-rul and redumped the format, but location=none still doesn't work. However, \startlepi[none] does, so I'll go by this for the time being, thanks. -- Giuseppe "Oblomov" Bilotta
For what it's worth, I'm now using the following: \defineframedtext[lepi][align=raggedright,width=fit,offset=0pt,frame=off,location=none] \defineframedtext[repi][align=raggedright,width=fit,offset=0pt,frame=off,location=none] \definepairedbox[lrepi][location={right,top}] \noindent \startlepi[none] \obeylines {\bf Coordinatore} prof. F.~Nicolosi \stoplepi\hfill\startrepi[none] \obeylines {\bf Tutor} prof. G.~Russo \stoprepi The [none] spec is required until the location=none specification is fixed :) TeX does complain about underfull boxes, but the output is just what I need. -- Giuseppe "Oblomov" Bilotta
Giuseppe Bilotta wrote:
For what it's worth, I'm now using the following:
\defineframedtext[lepi][align=raggedright,width=fit,offset=0pt,frame=off,location=none] \defineframedtext[repi][align=raggedright,width=fit,offset=0pt,frame=off,location=none] \definepairedbox[lrepi][location={right,top}]
\noindent \startlepi[none] \obeylines {\bf Coordinatore} prof. F.~Nicolosi \stoplepi\hfill\startrepi[none] \obeylines {\bf Tutor} prof. G.~Russo \stoprepi
The [none] spec is required until the location=none specification is fixed :)
TeX does complain about underfull boxes, but the output is just what I need.
ok. to get rid of messages, say \dontcomplain Hans
participants (2)
-
Giuseppe Bilotta
-
Hans Hagen