Paul Tremblay wrote:
There is, of course, \parshape. And I know that Hans does a lot of
paragraph trickery (see for example coloumns).

If you can get pages with different widths to work, please let me know!
Like I said, I posted the problematic code in the wiki. It would be
great to get this to work.

for controlled situations it's doable by setting the parshape

so, for novels you can use:

\startsetups [grid] [*default]
  \nopenalties
\stopsetups

\setuppagenumbering
  [alternative=doublesided]

\setuplayout
  [grid=yes]

\definelayout
  [odd]
  [width=10cm,
   lines=40]

\definelayout
  [even]
  [width=8cm,
   lines=40]

\setuplayout
  [odd]

\setuptolerance
  [verytolerant]

\showframe

\def\SetLineWidths
  {\scratchtoks \emptytoks
   \ifdim\pagegoal=\maxdimen
     \scratchdimen\textheight
     \ifodd\realpageno
       \noflines\namedlayoutparameter{odd}{lines}%
     \else
       \noflines\namedlayoutparameter{even}{lines}%
     \fi
   \else
     \scratchdimen\dimexpr\pagegoal-\pagetotal\relax
     \advance\scratchdimen-\topskipgap
     \getnoflines\scratchdimen
   \fi
   \ifdim\scratchdimen<\lineheight
     \page
   \else
     \scratchcounter\noflines\relax
     \ifodd\realpageno
       \doSetLineWidths{odd}{even}%
     \else
       \doSetLineWidths{even}{odd}%
     \fi
     \parshape \scratchcounter \the\scratchtoks \relax \ignorespaces
   \fi}

\def\doSetLineWidths#1#2%
  {\dorecurse\noflines
     {\appendetoks 0cm \namedlayoutparameter{#1}{width} \to\scratchtoks}%
   \dorecurse{2}
     {\advance\scratchcounter\namedlayoutparameter{#2}{lines}\relax
      \dorecurse{\namedlayoutparameter{#2}{lines}}
        {\appendetoks 0cm \namedlayoutparameter{#2}{width} \to\scratchtoks}%
      \advance\scratchcounter\namedlayoutparameter{#1}{lines}\relax
      \dorecurse{\namedlayoutparameter{#1}{lines}}
        {\appendetoks 0cm \namedlayoutparameter{#1}{width} \to\scratchtoks}}}

\dontcomplain

\EveryPar{\SetLineWidths}

\starttext

\dorecurse{25}{\dorecurse{4}{\input tufte }\par}

\stoptext

no guarantees, no kernel stuff either, maybe some fun module

hans


----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------

_______________________________________________
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context

Reply via email to