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
___________________________________________________________________________________