On 13.12.2011, at 16:44, Wolfgang Schuster wrote:
Am 13.12.2011 um 16:26 schrieb Andreas Harder:
Hi all,
would someone please enlighten me. What is the correct usage of \definelayout?
\definelayout[default][width=middle,height=middle,header=0pt,footer=0pt] % \setuplayout[default] % needed? \definelayout[first] [default][header=2cm] \definelayout[unknown][default]%[reset] % \definelayout[2] [default]%[reset] \definelayout[last] [default][footer=2cm]
\starttext \showframe % \checkcurrentlayout %% Variant A: fails with \default[unknown] first\page unknown=(2)\page \page unknown=(3)\page last
%% Variant B: fails with \definelayout[2] % first\page unknown=(2)=last \stoptext
By the way the output differs with the latest beta in comparison with the latest experimental.
Hans changed part of the \setuplayout code in the last betas (there are more than you can see in the ctx suite).
When context checks the layout (happens with \starttext and when it starts a new page) it test for the following defined layouts:
• “<pagenumber>” • “-<pagenumber>” • “last” (is only used for the last page of the document) • “first” (is only used for the first page of the document) • “unknown” • “current” • “odd” and “even” (used for left and right pages)
All entries in this list are reserved names but you can also define your own layout but in this case you have to enable it with \setuplayout[<name>].
One of the new features in MkIV is that layout parameters can be inherited, e.g. when you define a layout with the name “one” {\definelayout[one][..,..=..,..]) and another one with the name two (\definelayout[two][one][..,..=..,..]) this will take the values from one of there are nothing set for a value from one and when there is also nothing set for one the global values are used (\setuplayout[..,..=..,..]).
Hi Wolfgang, I modified the example (hopefully in a meaningful manner). I get the desired output with the old beta, but it still fails with todays beta. \setuplayout [width=middle,height=middle,header=0pt,footer=0pt] \definelayout[first] [header=2cm] \definelayout[last] [footer=2cm] \definelayout[current] \starttext \showframe % \checkcurrentlayout % \dorecurse{2}{test\page} % last is wrong \dorecurse{5}{test\page} % page 2 and „last“ are wrong \stoptext Andreas