Ok. Thanx.
I see that you are due my ignorance revealed a problem that I did not report :-)

Jaroslav


Dne 11.6.2010 11:50, Wolfgang Schuster napsal(a):
Am 11.06.10 07:45, schrieb Jaroslav Hajtmar:
Hi all.
I was surprised that when I set up (in the MKII and MKIV too) topspace
parameter to a nonzero value and the value of the bottomspace parameter
to zero value, then the size of bottomspace is the same as topspace size.
On the other side, if I set topspace to zero value and the bottomspace
to nonzero value, ConTeXt behaves as I expected.
Is this a normal behavior ConTeXt?
Ie. when bottomspace is zero, then the paper has only the tops and not
bottoms?


As told in my other mail that's not possible with a calculated text height but here is a patch:

\unprotected\def\dorecalculatelayout
  {%\the\everybeforelayout
   \setups[\layoutparameter\c!preset]%
   \global\leftmarginwidth \layoutparameter\c!leftmargin
   \global\rightmarginwidth\layoutparameter\c!rightmargin
   \global\leftedgewidth   \layoutparameter\c!leftedge
   \global\rightedgewidth  \layoutparameter\c!rightedge
   \global\headerheight    \layoutparameter\c!header
   \global\footerheight    \layoutparameter\c!footer
   \global\bottomheight    \layoutparameter\c!bottom
   \global\topheight       \layoutparameter\c!top
   \global\backspace       \layoutparameter\c!backspace
   \global\topspace        \layoutparameter\c!topspace
   \setlayoutdimensions % the rest of the `dimensions'
   \docheckgridsnapping
\doprocesslocalsetups{\layoutparameter\c!setups}% depends on gridsnapping !
   \simplesetupwhitespace
   \simplesetupblank
   \setupinterlinespace[\v!reset]% \synchronizegloballinespecs
   \global\cutspace\layoutparameter\c!cutspace
   \relax
   \doifelse{\layoutparameter\c!width}\v!middle
     {\ifdim\cutspace=\zeropoint
        \global\cutspace\backspace
      \fi
      \global\makeupwidth\dimexpr\paperwidth-\backspace-\cutspace\relax}
     {\doifelse{\layoutparameter\c!width}\v!auto
{\global\makeupwidth\dimexpr\paperwidth-\backspace-\cutspace\relax}
        {\doifelse{\layoutparameter\c!width}\v!fit
           {\ifdim\cutspace=\zeropoint
              \global\cutspace\backspace
            \fi
            \global\makeupwidth\dimexpr\paperwidth-\cutspace\relax
            \scratchdimen\dimexpr\backspace
              -\leftedgewidth  -\leftedgedistance
              -\leftmarginwidth-\leftmargindistance\relax
            \ifdim\scratchdimen<\zeropoint
              \scratchdimen\zeropoint
            \fi
            \global\advance\makeupwidth\dimexpr
              -\rightmargindistance-\rightmarginwidth
              -\rightedgedistance  -\rightedgewidth
              -\scratchdimen\relax}
           {\global\makeupwidth\layoutparameter\c!width\relax
            \ifdim\cutspace=\zeropoint

\global\cutspace\dimexpr\paperwidth-\makeupwidth-\backspace\relax
           % \else
               % A kind of inconsistent specification, but used
               % in for instance s-pre-19.tex; the cutspace is
               % used only for determining some kind of right
               % margin; don't use this in doublesided mode
            \fi}}}%
   \scratchdimen\layoutparameter\c!bottomspace\relax
  %\ifdim\scratchdimen=\zeropoint
  %  \scratchdimen\topspace
  %\fi
   \global\bottomspace\layoutparameter\c!bottomspace\relax
\global\layoutlines0\number\layoutparameter\c!lines\relax % may be empty
   \ifcase\layoutlines
     \doifelse{\layoutparameter\c!height}\v!middle
       {\ifdim\bottomspace=\zeropoint
          \global\bottomspace\topspace
        \fi

\global\makeupheight\dimexpr\paperheight-\topspace-\bottomspace\relax}
       {\doifelse{\layoutparameter\c!height}\v!auto

{\global\makeupheight\dimexpr\paperheight-\topspace-\bottomspace\relax}
          {\doifelse{\layoutparameter\c!height}\v!fit
             {\ifdim\bottomspace=\zeropoint
                \global\bottomspace\topspace
              \fi
              \global\makeupheight\dimexpr\paperheight-\bottomspace\relax
\scratchdimen\dimexpr\topspace-\topheight-\topdistance\relax
              \ifdim\scratchdimen<\zeropoint
                \scratchdimen\zeropoint
              \fi

\global\advance\makeupheight\dimexpr-\bottomdistance-\bottomheight-\scratchdimen\relax}
             {\global\makeupheight\layoutparameter\c!height\relax
              \ifdim\bottomspace=\zeropoint

\global\bottomspace\dimexpr\paperheight-\makeupheight-\topspace\relax
              \else
                % inconsistent specification
              \fi}}}%
   \else
% beware, when the bodyfont changes (switched) this will change as well; implementing % a global lineheight is tricky: should we take the bodyfont interlinespace or the one set % independent of the bodyfont (before or after a layout spec); way too fuzzy, so we % stick to the current method (after a night of experimenting ...2003/10/13)
     \global\makeupheight\dimexpr
        \layoutparameter\c!lines\lineheight-\strutheight+\topskip+
        \headerdistance+\headerheight+\footerdistance+\footerheight\relax
   \fi
   \backoffset\layoutparameter\c!horoffset
   \topoffset \layoutparameter\c!veroffset
   \global\setdimentoatleast\makeupwidth\onepoint
   \global\setdimentoatleast\makeupheight \onepoint
   % \checkcurrentlayout % here ?
   % \the\everyafterlayout
   \calculatelayoutextras
   \calculatehsizes
   \calculatevsizes
   \calculatepseudocolumns
   \recalculatebackgrounds}

\definelayout[middleheight][topspace=4cm,bottomspace=0cm,height=middle]
\definelayout[autoheight]  [topspace=4cm,bottomspace=0cm,height=auto]

\definelayout[middlewidth] [backspace=4cm,cutspace=0cm,width=middle]
\definelayout[autowidth]   [backspace=4cm,cutspace=0cm,width=auto]

\setuppapersize[A4][A3]\setuplayout[location=middle]

\showframe

\starttext

\setuplayout[middleheight]\page[empty]
\setuplayout[autoheight]  \page[empty]
\setuplayout[reset]       \page[empty]

\setuplayout[middlewidth] \page[empty]
\setuplayout[autowidth]   \page[empty]
\setuplayout[reset]       \page[empty]

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

Reply via email to