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
-------------------------------------------------------------------------

Reply via email to