At 10:45 AM 10/25/2001 +0200, Jose Luis Diaz wrote:
> I want to have two kind of blocks typeset with different format, but
> disallowing a page break inbetween. For example, assume that I have
> pairs Question/Answer, and I never want a page break after the
> Question, but a page break after the answer is desirable. To be
> precise, I'm working in a multicolumn environment (3 columns) and
> what I want to allow/disallow are the column breaks.
> I tried the following:
>
> \defineblock[Question,Answer]
> \setupblock[Question]
> [before={\startitemize[2]\item},
> after={\stopitemize\page[no]},
> ]
> \setupblock[Answer]
> [before={\startframedtext[width=\textwidth]\startcolor[red]},
> after={\stopcolor\stopframedtext\page[preference]},
> ]
>
> (BTW, I need to put a comma at the end of the "after" line, why?)
> This code doesn't work. I keep getting column breaks between the
> question and the answer (surprisingly, it appears that a column break
> is indeed *prefered* in that position, since I get a lot of them)
columns are rather rigged and have their own ideas about page breaks
> What I'm doing wrong? I even tried resorting to the TeX primitive
> \penalty, instead of using \page. Are penalties ignored when
> typesetting in columns?
indeed, the kind of get lost in the balancing process (when trying not to
let the left col be shorter than the right one etc)
> Anothe question. While testing the above code, I tried the following
> main text:
>
>\starttext
>\dorecurse{10}{
> \beginQuestion
> \input tufte
> \endQuestion
> \beginAnswer
> I don't know the answer.
> \endAnswer
> }
> \stoptext
>
> But I get no text in the output.
this is because buffered material cannot be used in macros (a simple
\startbuffer
...
\stopbuffer
\dorecurse{10}{\getbuffer}
would have worked.
> And a last question. It is "philosophically" correct to use text
> blocks for the stated purpose? As far as I understand, text blocks
> are provided for "hidding" the text until an adecuate place in the
> output, but in my case I need no hidding. There is another way for
> defining start/stop pairs? (something like the LaTeX \newenvironment)
you may play with the following:
% this way you get no interference between color, spacing and penalties
\definestartstop
[Question]
[before={\startitemize[2]\item},
after={\stopitemize\page[no]}]
\defineframedtext
[Answer]
[foregroundcolor=red,
width=\textwidth,
after={\page[preference]}]
\setupcolors[state=start]
combined with column sets (work in progresss, so it has bugs)
\definecolumnset[twocolumns][n=2]
\starttext
\startcolumnset[twocolumns]
\dorecurse{10}
{\placefigure[rlbt]{}{\framed{another test}}
\startQuestion
\input tufte \par
\placefigure[here]{}{\framed{this is just a test}}
\input tufte \par
\stopQuestion
\startAnswer
I don't know the answer.
\stopAnswer}
\stopcolumnset
\stoptext
btw, "rlbt" means as much as "try to place from right to left and top to
bottom"
Hans
-------------------------------------------------------------------------
Hans Hagen | PRAGMA ADE | [EMAIL PROTECTED]
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: +31 (0)38 477 53 69 | fax: +31 (0)38 477 53 74 | www.pragma-ade.com
-------------------------------------------------------------------------