ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: "Procházka Lukáš Ing." <LPr@pontex.cz>
To: "mailing list for ConTeXt users" <ntg-context@ntg.nl>
Subject: Re: Restoring/switching paper size?
Date: Mon, 18 Jul 2016 16:59:49 +0200	[thread overview]
Message-ID: <op.yksw9zdj62epfj@lpr> (raw)
In-Reply-To: <op.ykswesq262epfj@lpr>

[-- Attachment #1: Type: text/plain, Size: 2937 bytes --]

Hello,

one more problem - paper height still 297 mm?

----
\definepapersize[A4L][A4,landscape]

\showframe

\starttext
   \setuppapersize[A4L]
   A4L
\stoptext
----

(Ctx already patched by WS' solution.)

Best regards,

Lukas


On Mon, 18 Jul 2016 16:41:06 +0200, Procházka Lukáš Ing. <LPr@pontex.cz> wrote:

> Hello,
>
> thank you for the patch.
>
> A solution which would not require named page sizes might be better as we don't necessary need to know the name of the "previous" (or "pushed") paper size (mostly we use "anonymous" page sizes, set up once in the document preamble).
>
> Thus push/pop way would be a bit more flexible (like \pushpagebackground / \poppagebackground);
> or making paper size local (enclosing paper setup into group - \start \setupppapersize ... \stop\page) would restore the previous paper size.
>
> Thank you anyway.
>
> Best regards
>
> Lukas
>
>
> On Mon, 18 Jul 2016 16:00:05 +0200, Wolfgang Schuster <schuster.wolfgang@gmail.com> wrote:
>
>>> Procházka Lukáš Ing. <mailto:LPr@pontex.cz>
>>> 18. Juli 2016 um 15:09
>>> Hello,
>>>
>>> why this code doesn't restore A4-portrait for page 3?
>>>
>>> ----
>>> \showframe
>>>
>>> \starttext
>>>   Page 1
>>>   \page
>>>   \adaptpapersize[A4,landscape]
>>>   Page 2
>>>   \page
>>>   Page 3
>>> \stoptext
>>> ----
>> page-lay.mkiv
>>
>> \unexpanded\def\adaptpapersize
>> - {\global\let\page_paper_reinstate\page_paper_reinstate_indeed
>> + {\global\let\page_paper_reinstate\page_paper_restore
>>     \setuppapersize}
>>
>> -\unexpanded\def\page_paper_reinstate_indeed
>> -  {\page_paper_reinstate
>> -   \global\let\page_paper_reinstate\relax}
>>
>> \appendtoks
>>      \page_paper_reinstate
>> +   \global\let\page_paper_reinstate\relax
>> \to \everyaftershipout
>>
>>> (I need to mix A4 portrait/landscape pages in a document...)
>>>
>>> When I need to switch to landscape for more pages (e.g. for long large
>>> tables; \adaptpapersize is not enough as it changes just one current
>>> page), is there something like:
>>>
>>> \pushpapersize
>>>   \page
>>>   \setuppapersize[A4,landscape]
>>>   ...
>>>   more pages
>>>   ...
>>> \poppapersize
>> There is no start/stop version like we have for layouts
>> (\startlayout[...] ... \stoplayout) but you can use named sizes.
>>
>> \definepapersize [main]  [A4]           [A4]
>> \definepapersize [extra] [A4,landscape] [A4,landscape]
>>
>> \starttext
>>      Page 1. \page
>>      Page 2. \page
>>      \setuppapersize[extra]
>>      Page 3. \page
>>      Page 4. \page
>>      \setuppapersize[main]
>>      Page 5. \page
>>      Page 6. \page
>> \stoptext
>>
>> Wolfgang
>>
>
>


-- 
Ing. Lukáš Procházka | mailto:LPr@pontex.cz
Pontex s. r. o.      | mailto:pontex@pontex.cz | http://www.pontex.cz
Bezová 1658
147 14 Praha 4

Tel: +420 241 096 751 (+420 720 951 172)
Fax: +420 244 461 038

[-- Attachment #2: PapSize2.mkiv --]
[-- Type: application/octet-stream, Size: 107 bytes --]

\definepapersize[A4L][A4,landscape]

\showframe

\starttext
  \setuppapersize[A4L]
  A4L
\stoptext

[-- Attachment #3: PapSize2.pdf --]
[-- Type: application/pdf, Size: 5212 bytes --]

[-- Attachment #4: page-lay.mkiv --]
[-- Type: application/octet-stream, Size: 63467 bytes --]

%D \module
%D   [       file=page-lay,
%D        version=2000.10.20, % copied from main-001
%D          title=\CONTEXT\ Page Macros,
%D       subtitle=Layout Specification,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

\writestatus{loading}{ConTeXt Page Macros / Layout Specification}

%D Before you start wondering why some of the page related
%D modules skip upward or left in order to place elements, you
%D must realize that the reference point is the top left
%D corner of the main typesetting area. One reason for this
%D choice is that it suited some viewers that displayed page
%D areas. Another reason is that margins, edges and top and
%D bottom areas are kind of virtual, while the header, text
%D and footer areas normally determine the text flow.

\unprotect

%D The dimensions related to layout areas are represented by
%D real dimensions.

\newdimen\paperheight          \paperheight          = 297mm
\newdimen\paperwidth           \paperwidth           = 210mm
\newdimen\paperoffset          \paperoffset          = \zeropoint
\newdimen\paperbleed           \paperbleed           = \zeropoint
\newdimen\spinewidth           \spinewidth           = \zeropoint

\newdimen\printpaperheight     \printpaperheight     = \paperheight
\newdimen\printpaperwidth      \printpaperwidth      = \paperwidth

\newdimen\makeupheight                               % calculated
\newdimen\makeupwidth                                % calculated

\newdimen\textheight                                 % calculated
\newdimen\textwidth                                  % calculated

\newdimen\topspace             \topspace             = 2cm
\newdimen\backspace            \backspace            = \topspace
\newdimen\cutspace             \cutspace             = \zeropoint
\newdimen\bottomspace          \bottomspace          = \zeropoint

\newdimen\headerheight         \headerheight         = 2cm
\newdimen\footerheight         \footerheight         = \headerheight

\newdimen\topoffset            \topoffset            = \zeropoint
\newdimen\backoffset           \backoffset           = \topoffset

\newdimen\leftmarginwidth      \leftmarginwidth      = 3cm
\newdimen\rightmarginwidth     \rightmarginwidth     = \leftmarginwidth

\newdimen\leftedgewidth        \leftedgewidth        = 3cm
\newdimen\rightedgewidth       \rightedgewidth       = \leftedgewidth

\newdimen\topheight            \topheight            = \zeropoint
\newdimen\bottomheight         \bottomheight         = \topheight

\newcount\layoutlines          \layoutlines          = \zerocount
\newcount\layoutcolumns        \layoutcolumns        = \zerocount
\newdimen\layoutcolumndistance \layoutcolumndistance = \zeropoint
\newdimen\layoutcolumnwidth    \layoutcolumnwidth    = \zeropoint

\newdimen\totaltextwidth

%D The next series of dimensions are complemented by left
%D and rights ones.

\newdimen\margindistance
\newdimen\edgedistance
\newdimen\marginwidth
\newdimen\edgewidth

%D Because a distance does not really makes sense when there
%D is no area, we use a zero distance in case there is no
%D area.

%D The horizontal distances are:

\newdimen\leftedgedistance
\newdimen\rightedgedistance
\newdimen\leftmargindistance
\newdimen\rightmargindistance

%D The vertical distances are:

\newdimen\topdistance
\newdimen\headerdistance
\newdimen\footerdistance
\newdimen\bottomdistance

%D We need to calculate the extra distances:

\newdimen\naturalmarginwidth
\newdimen\naturaledgewidth
\newdimen\naturalmargindistance
\newdimen\naturaledgedistance
\newdimen\naturalleftedgedistance
\newdimen\naturalrightedgedistance
\newdimen\naturalleftmargindistance
\newdimen\naturalrightmargindistance
\newdimen\naturaltopdistance
\newdimen\naturalheaderdistance
\newdimen\naturalfooterdistance
\newdimen\naturalbottomdistance

%D Now we've come to the setup and definition commands.

\installcorenamespace{layout}
\installcorenamespace{layoutlocation}
\installcorenamespace{layoutalternative}
\installcorenamespace{layoutcolumn}
\installcorenamespace{layoutmethod}

\installswitchcommandhandler \??layout {layout} \??layout

\appendtoks
    \doifnothing{\strictlayoutparameter\c!state}{\letlayoutparameter\c!state\v!start}%
\to \everydefinelayout

\appendtoks
    \ifcase\layoutsetupmode
        % can't happen
    \or % \setuplayout[name][key=value]
      \ifx\previouslayout\currentlayout
        \letlayoutparameter\c!state\v!normal % global ? still needed ?
        \let\currentlayout\currentlayout
        \page_layouts_synchronize
        \page_layouts_check_next
      \fi
    \or % \setuplayout[key=value]
      % we can inherit so we always synchronize
      \letlayoutparameter\c!state\v!normal % global ? still needed ?
      \let\currentlayout\previouslayout
      \page_layouts_synchronize
      \page_layouts_check_next
    \or % \setuplayout[name]
      \ifx\currentlayout\v!reset
        \let\currentlayout\empty
      \fi
      \letlayoutparameter\c!state\v!normal % global ? still needed ?
      \global\let\currentlayout\currentlayout % global
      \page_layouts_synchronize
      \page_layouts_check_next
    \or % \setuplayout (reverts to main layout)
      \letlayoutparameter\c!state\v!normal % global ? still needed ?
      \global\let\currentlayout\empty % global
      \page_layouts_synchronize
      \page_layouts_check_next
    \fi
\to \everysetuplayout

\def\doifelselayoutdefined#1%
  {\ifcsname\namedlayouthash{#1}\c!state\endcsname % maybe a helper
      \expandafter\firstoftwoarguments
   \else
      \expandafter\secondoftwoarguments
   \fi}

\let\doiflayoutdefinedelse\doifelselayoutdefined

\def\layoutdistance#1#2{\ifdim\zeropoint<#1#2\else\zeropoint\fi}

\def\page_layouts_set_dimensions
  {\global\naturalmarginwidth        \layoutparameter\c!margin
   \global\naturaledgewidth          \layoutparameter\c!edge
   \global\naturalmargindistance     \layoutparameter\c!margindistance
   \global\naturaledgedistance       \layoutparameter\c!edgedistance
   \global\naturalleftedgedistance   \layoutparameter\c!leftedgedistance
   \global\naturalrightedgedistance  \layoutparameter\c!rightedgedistance
   \global\naturalleftmargindistance \layoutparameter\c!leftmargindistance
   \global\naturalrightmargindistance\layoutparameter\c!rightmargindistance
   \global\naturaltopdistance        \layoutparameter\c!topdistance
   \global\naturalheaderdistance     \layoutparameter\c!headerdistance
   \global\naturalfooterdistance     \layoutparameter\c!footerdistance
   \global\naturalbottomdistance     \layoutparameter\c!bottomdistance
   %
   \global\marginwidth               \naturalmarginwidth
   \global\edgewidth                 \naturaledgewidth
   \global\margindistance            \naturalmargindistance
   \global\edgedistance              \naturaledgedistance
   %
   \global\leftedgedistance          \layoutdistance\leftedgewidth   \naturalleftedgedistance
   \global\rightedgedistance         \layoutdistance\rightedgewidth  \naturalrightedgedistance
   \global\leftmargindistance        \layoutdistance\leftmarginwidth \naturalleftmargindistance
   \global\rightmargindistance       \layoutdistance\rightmarginwidth\naturalrightmargindistance
   \global\topdistance               \layoutdistance\topheight       \naturaltopdistance
   \global\headerdistance            \layoutdistance\headerheight    \naturalheaderdistance
   \global\footerdistance            \layoutdistance\footerheight    \naturalfooterdistance
   \global\bottomdistance            \layoutdistance\bottomheight    \naturalbottomdistance
   }

\def\page_layouts_set_distances % local in \setreducedvsize
  {\headerdistance\layoutdistance\headerheight\naturalheaderdistance
   \footerdistance\layoutdistance\footerheight\naturalfooterdistance}

% these are wrong in the running text, assumes some swapping, needs a cleanup

\def\outermarginwidth   {\rightorleftpageaction\rightmarginwidth   \leftmarginwidth }
\def\innermarginwidth   {\rightorleftpageaction\leftmarginwidth    \rightmarginwidth}
\def\outermargindistance{\rightorleftpageaction\rightmargindistance\leftmargindistance }
\def\innermargindistance{\rightorleftpageaction\leftmargindistance \rightmargindistance}

\def\outeredgewidth     {\rightorleftpageaction\rightedgewidth   \leftedgewidth }
\def\inneredgewidth     {\rightorleftpageaction\leftedgewidth    \rightedgewidth}
\def\outeredgedistance  {\rightorleftpageaction\rightedgedistance\leftedgedistance }
\def\inneredgedistance  {\rightorleftpageaction\leftedgedistance \rightedgedistance}

\def\outerspacewidth    {\rightorleftpageaction\cutspace\backspace}
\def\innerspacewidth    {\rightorleftpageaction\backspace\cutspace}

\newtoks\extralayoutcalculations

\def\page_layouts_calculate_extras
  {\the\extralayoutcalculations}

\newtoks\everyswapmargins % watch the order !

\appendtoks
    \swapdimens\leftmargindistance\rightmargindistance
    \swapdimens\leftedgedistance  \rightedgedistance
    \swapdimens\leftmarginwidth   \rightmarginwidth
    \swapdimens\leftedgewidth     \rightedgewidth
    %
    \swapmacros\leftmargintotal   \rightmargintotal
    \swapmacros\leftedgetotal     \rightedgetotal
    \swapmacros\leftsidetotal     \rightsidetotal
    \swapmacros\leftcombitotal    \rightcombitotal
    \swapmacros\innermargintotal  \outermargintotal
    \swapmacros\inneredgetotal    \outeredgetotal
    \swapmacros\innercombitotal   \outercombitotal
    \swapmacros\innersidetotal    \outersidetotal
\to \everyswapmargins

%D The papersize macros have a long history and we don't want
%D to change the commands so they keep looking a bit complex.

%D \macros
%D   {definepapersize}
%D
%D Before we start calculating layout dimensions, we will
%D first take care of paper sizes. The first argument can be
%D either an assignment (for defaults) or an identifier, in
%D which case the second argument is an assignment.
%D
%D \showsetup{definepapersize}
%D
%D Yet undocumented, let's see if it gets noticed.
%D
%D \starttyping
%D \definepapersize[main] [A4]          [A4]
%D \definepapersize[extra][A4,landscape][A4,landscape]
%D
%D \starttext
%D     \setuppapersize[main]
%D     Page 1. \page
%D     Page 2. \page
%D     \setuppapersize[extra]
%D     Page 2 \page
%D     \setuppapersize[main]
%D     Page 3. \page
%D     Page 4. \page
%D     \adaptpapersize[extra]
%D     Page 5. \page
%D     Page 6. \page
%D \stoptext
%D \stoptyping
%D
%D \macros
%D   {setuppaper,setuppapersize}
%D
%D When setting up the papersize on which to typeset and
%D print, we can also determine some more characteristics.
%D
%D \showsetup{setuppapersize}
%D
%D We keep track of these features with the following
%D variables.

\installcorenamespace{layouttarget}
\installcorenamespace{layoutpaper}
\installcorenamespace{layoutprint}
\installcorenamespace{layoutcurrent}

\installcommandhandler \??layouttarget {layouttarget} \??layouttarget % so this is a sort of mix, not really a user command / maybe switch handler

\newconditional\c_page_target_paper_mirror
\newconstant   \c_page_target_paper_orientation
\newconstant   \c_page_target_paper_reverse
\newconditional\c_page_target_paper_landscape
\newconditional\c_page_target_paper_negate

\newconditional\c_page_target_print_mirror
\newconstant   \c_page_target_print_orientation
\newconstant   \c_page_target_print_reverse
\newconditional\c_page_target_print_landscape
\newconditional\c_page_target_print_negate
\newconditional\c_page_target_print_doublesided

\let\v_page_target_left_fill  \relax
\let\v_page_target_right_fill \relax
\let\v_page_target_top_fill   \relax
\let\v_page_target_bottom_fill\relax

\let\papersize     \empty
\let\printpapersize\empty

\def\v_page_target_top      {\namedlayouttargetparameter\papersize\c!top   }
\def\v_page_target_bottom   {\namedlayouttargetparameter\papersize\c!bottom}
\def\v_page_target_left     {\namedlayouttargetparameter\papersize\c!left  }
\def\v_page_target_right    {\namedlayouttargetparameter\papersize\c!right }
\def\v_page_target_method   {\rootlayouttargetparameter           \c!method}
\def\v_page_target_scale    {\rootlayouttargetparameter           \c!scale }
\def\v_page_target_nx       {\numexpr\rootlayouttargetparameter   \c!nx       \relax}
\def\v_page_target_ny       {\numexpr\rootlayouttargetparameter   \c!ny       \relax}
\def\v_page_target_dx       {\dimexpr\rootlayouttargetparameter   \c!dx       \relax}
\def\v_page_target_dy       {\dimexpr\rootlayouttargetparameter   \c!dy       \relax}
\def\v_page_target_width    {\dimexpr\rootlayouttargetparameter   \c!width    \relax}
\def\v_page_target_height   {\dimexpr\rootlayouttargetparameter   \c!height   \relax}
\def\v_page_target_topspace {\dimexpr\rootlayouttargetparameter   \c!topspace \relax}
\def\v_page_target_backspace{\dimexpr\rootlayouttargetparameter   \c!backspace\relax}
\def\v_page_target_offset   {\dimexpr\rootlayouttargetparameter   \c!offset   \relax}

\def\v_page_target_xy       {\numexpr\v_page_target_nx*\v_page_target_ny\relax}

% Normally we will not use this command directly but for now it
% works out okay. In the future we might use more of the related
% commands.

\setuplayouttarget
  [% these are rather special
   \c!nx=1,
   \c!ny=1,
   \c!dx=\zeropoint,
   \c!dy=\zeropoint,
   \c!topspace=\zeropoint,
   \c!backspace=\zeropoint,
   \c!width=\zeropoint,
   \c!height=\zeropoint,
   %
   \c!method=\v!normal,
   \c!option=\v!max,
   \c!alternative=\v!normal,
   %
   \c!scale=1,
   \c!offset=\zeropoint,
   %
   \c!top=,
   \c!bottom=,
   \c!left=,
   \c!right=,
   %
   \c!location=]

% \definepapersize[name][A4][A3]
% \definepapersize[name][settings]

\unexpanded\def\definepapersize
  {\dotripleempty\page_paper_define_size}

\def\page_paper_define_size[#1][#2][#3]%
  {\edef\currentlayouttarget{#1}%
   \ifx\currentlayouttarget\empty
     % invalid target
   \else
     \doifelseassignment{#2}
       {\definelayouttarget[#1][#2]}
       {\setevalue{\??layoutpaper#1}{#2}%
        \setevalue{\??layoutprint#1}{#3}}%
   \fi}

\appendtoks
    \letvalue{\??layoutcurrent\currentlayouttarget}\relax
\to \everydefinelayouttarget

%def\page_paper_the_paper_size#1{\ifcsname\??layoutpaper#1\endcsname\csname\??layoutpaper#1\endcsname\else#1\fi}
%def\page_paper_the_print_size#1{\ifcsname\??layoutprint#1\endcsname\csname\??layoutprint#1\endcsname\else#1\fi}

\def\page_paper_the_paper_size#1{\ifcsname\??layoutpaper#1\endcsname\lastnamedcs\else#1\fi}
\def\page_paper_the_print_size#1{\ifcsname\??layoutprint#1\endcsname\lastnamedcs\else#1\fi}

% \setuppaper    [page=A4,paper=A3] % the k/v variant, changes the current page mapping
% \setuppapersize[A4][a=b,c=d]      % the k/v variant, changes nothing, just settings
% \setuppapersize[A4][A3]           % changes the current page mapping

\let\page_paper_reinstate\relax
\let\page_paper_restore  \relax

\unexpanded\def\setuppapersize
  {\dodoubleempty\page_paper_setup_size}

\unexpanded\def\page_paper_setup_size[#1][#2]%
  {\iffirstargument
     \doifelseassignment{#1}
       {\page_paper_setup_size_settings[#1]}
       {\doifelseassignment{#2}
          {\page_paper_setup_size_settings_by_name[#1][#2]}
          {\page_paper_setup_size_change_size[#1][#2]}}%
   \else
     \page_paper_restore
   \fi}

\unexpanded\def\page_paper_setup_size_settings[#1]% sometimes used to set paper/print size
  {\let\currentlayouttarget\empty
   \edef\m_layouttarget_paper_saved{\page_paper_the_paper_size{\layouttargetparameter\c!page }}%
   \edef\m_layouttarget_print_saved{\page_paper_the_print_size{\layouttargetparameter\c!paper}}%
   \setupcurrentlayouttarget[#1]%
   \edef\m_layouttarget_paper{\page_paper_the_paper_size{\layouttargetparameter\c!page }}%
   \edef\m_layouttarget_print{\page_paper_the_print_size{\layouttargetparameter\c!paper}}%
   \ifx\m_layouttarget_paper_saved\m_layouttarget_paper
     \ifx\m_layouttarget_print_saved\m_layouttarget_print
       % we didn't change the size, maybe only sx or sy or so
     \else
       \page_paper_setup_size_settings_recalibrate
     \fi
   \else
     \page_paper_setup_size_settings_recalibrate
   \fi}

\def\page_paper_setup_size_settings_recalibrate
  {\ifx\m_layouttarget_paper\empty
     % forget about it
   \else
     \ifx\m_layouttarget_print\empty
        \let\m_layouttarget_print\m_layouttarget_paper
     \fi
     \page_paper_set_current[\m_layouttarget_paper][\m_layouttarget_print]%
   \fi
   \letlayouttargetparameter\c!page \papersize
   \letlayouttargetparameter\c!paper\printpapersize}

\unexpanded\def\page_paper_setup_size_settings_by_name[#1][#2]%
  {\def\currentlayouttarget{\page_paper_the_paper_size{#1}}%
   \setuplayouttarget[#2]}

\unexpanded\def\page_paper_setup_size_change_size[#1][#2]%
  {\doifelsenothing{#2}
     {\page_paper_set_current[#1][#1]}
     {\page_paper_set_current[#1][#2]}}

\let\setuppaper\page_paper_setup_size_settings

\unexpanded\def\adaptpapersize
%  {\global\let\page_paper_reinstate\page_paper_reinstate_indeed
  {\global\let\page_paper_reinstate\page_paper_restore
\setuppapersize}

%\unexpanded\def\page_paper_reinstate_indeed
%  {\page_paper_restore
%   \global\let\page_paper_reinstate\relax}

\appendtoks
\page_paper_reinstate
\global\let\page_paper_reinstate\relax
\to \everyaftershipout

\unexpanded\def\page_paper_set_restore#1#2%
  {\xdef\page_paper_restore{\page_paper_set_current_indeed[#1][#2]}}

\unexpanded\def\page_paper_set_current[#1][#2]%
  {\normalexpanded{\page_paper_set_current_indeed
     [\page_paper_the_paper_size{#1}]%
     [\page_paper_the_print_size{#2}]}}

\setvalue{\??layoutpaper\v!reset                  }{\global\setfalse\c_page_target_paper_landscape
                                                    \global\setfalse\c_page_target_paper_mirror
                                                    \global\setfalse\c_page_target_paper_negate
                                                    \global\c_page_target_paper_orientation\uprotationangle
                                                    \global\c_page_target_paper_reverse    \uprotationangle}
\setvalue{\??layoutpaper\v!landscape              }{\global\settrue\c_page_target_paper_landscape}
\setvalue{\??layoutpaper\v!mirrored               }{\global\settrue\c_page_target_paper_mirror}
\setvalue{\??layoutpaper\v!negative               }{\global\settrue\c_page_target_paper_negate}
\setvalue{\??layoutpaper\v!rotated                }{\global\c_page_target_paper_orientation\rightrotationangle
                                                    \global\c_page_target_paper_reverse    \leftrotationangle}
\setvalue{\??layoutpaper\number\rightrotationangle}{\global\c_page_target_paper_orientation\rightrotationangle
                                                    \global\c_page_target_paper_reverse    \leftrotationangle}
\setvalue{\??layoutpaper\number\downrotationangle }{\global\c_page_target_paper_orientation\downrotationangle
                                                    \global\c_page_target_paper_reverse    \zerocount}
\setvalue{\??layoutpaper\number\leftrotationangle }{\global\c_page_target_paper_orientation\leftrotationangle
                                                    \global\c_page_target_paper_reverse    \rightrotationangle}

\setvalue{\??layoutprint\v!reset                  }{\global\setfalse\c_page_target_print_landscape
                                                    \global\setfalse\c_page_target_print_mirror
                                                    \global\setfalse\c_page_target_print_negate
                                                    \global\c_page_target_print_orientation\uprotationangle
                                                    \global\c_page_target_print_reverse    \uprotationangle}
\setvalue{\??layoutprint\v!landscape              }{\global\settrue\c_page_target_print_landscape}
\setvalue{\??layoutprint\v!mirrored               }{\global\settrue\c_page_target_print_mirror}
\setvalue{\??layoutprint\v!negative               }{\global\settrue\c_page_target_print_negate}
\setvalue{\??layoutprint\v!rotated                }{\global\c_page_target_print_orientation\rightrotationangle
                                                    \global\c_page_target_print_reverse    \leftrotationangle}
\setvalue{\??layoutprint\number\rightrotationangle}{\global\c_page_target_print_orientation\rightrotationangle
                                                    \global\c_page_target_print_reverse    \leftrotationangle}
\setvalue{\??layoutprint\number\downrotationangle }{\global\c_page_target_print_orientation\downrotationangle
                                                    \global\c_page_target_print_reverse    \zerocount}
\setvalue{\??layoutprint\number\leftrotationangle }{\global\c_page_target_print_orientation\leftrotationangle
                                                    \global\c_page_target_print_reverse    \rightrotationangle}

%def\page_paper_handle_page_option #1{\ifcsname\??layoutpaper#1\endcsname\csname\??layoutpaper#1\endcsname\fi}
%def\page_paper_handle_print_option#1{\ifcsname\??layoutprint#1\endcsname\csname\??layoutprint#1\endcsname\fi}

\def\page_paper_handle_page_option #1{\begincsname\??layoutpaper#1\endcsname}
\def\page_paper_handle_print_option#1{\begincsname\??layoutprint#1\endcsname}

\unexpanded\def\page_paper_identify_target#1%
  {\ifcsname\??layoutcurrent#1\endcsname
     \edef\currentlayouttarget{#1}%
   \fi}

\unexpanded\def\page_paper_set_current_indeed[#1][#2]%
  {\edef\m_page_asked_paper{\v!reset,#1}% can be the restores
   \edef\m_page_asked_print{\v!reset,#2}%
   %
   \page_paper_set_restore\m_page_asked_paper\m_page_asked_print
   %
   % locate page target
   \let\currentlayouttarget\empty
   \processcommacommand[\m_page_asked_paper]\page_paper_identify_target
   \ifx\currentlayouttarget\empty
     \let\currentlayouttarget\currentpage
   \fi
   \global\let\papersize\currentlayouttarget
   \processcommacommand[\m_page_asked_paper]\page_paper_handle_page_option
   \global\paperwidth \layouttargetparameter\c!width \relax
   \global\paperheight\layouttargetparameter\c!height\relax
   \ifdim\paperwidth<\onepoint
     \global\paperwidth\onepoint
   \fi
   \ifdim\paperheight<\onepoint
     \global\paperheight\onepoint
   \fi
   \ifconditional\c_page_target_paper_landscape
     \doglobal\swapdimens\paperwidth\paperheight
   \fi
   \ifinpagebody % local freeze
     \normalexpanded{\setlayouttargetparemeter\c!height{\the\paperheight}}%
     \normalexpanded{\setlayouttargetparemeter\c!width {\the\paperwidth }}%
   \fi
   %
   \page_paper_set_offsets
   %  locate paper target
   \processcommacommand[\m_page_asked_print]\page_paper_identify_target
   \global\let\printpapersize\currentlayouttarget
   \processcommacommand[\m_page_asked_print]\page_paper_handle_print_option
   \global\printpaperwidth \layouttargetparameter\c!width \relax
   \global\printpaperheight\layouttargetparameter\c!height\relax
   \ifdim\printpaperwidth<\onepoint
     \global\printpaperwidth\paperwidth
   \fi
   \ifdim\printpaperheight<\onepoint
     \global\printpaperheight\paperheight
   \fi
   \ifconditional\c_page_target_print_landscape
     \globalswapdimens\printpaperwidth\printpaperheight
   \fi
   % this check can be confusing, so we've added the possibility
   % to bypass this test: \setuppapersize[option=fit]
   \edef\m_page_asked_option{\rootlayouttargetparameter\c!option}%
   \ifx\m_page_asked_option\v!max % \v!fit is
      \begingroup
      % we need to pre-swap else we get the wrong paper size
      \ifnum\c_page_target_paper_orientation=\rightrotationangle
        \swapdimens\paperwidth\paperheight
      \else\ifnum\c_page_target_paper_orientation=\leftrotationangle
        \swapdimens\paperwidth\paperheight
      \fi\fi
      \ifnum\c_page_target_print_orientation=\rightrotationangle
        \swapdimens\printpaperwidth\printpaperheight
      \else\ifnum\c_page_target_print_orientation=\leftrotationangle
        \swapdimens\printpaperwidth\printpaperheight
      \fi\fi
      \ifdim\paperheight>\printpaperheight
        \global\printpaperheight\paperheight
        \writestatus\m!system{print height forced to paper height}%
      \fi
      \ifdim\paperwidth>\printpaperwidth
        \global\printpaperwidth\paperwidth
        \writestatus\m!system{print width forced to paper width}%
      \fi
      \endgroup
   \fi
  %\writestatus{layout target}{(\the\paperwidth,\the\paperheight) -> (\the\printpaperwidth,\the\printpaperheight)}%
   \page_layouts_synchronize
   % new but we assume \setuplayout
   \scrn_canvas_synchronize_only}

\ifdefined\scrn_canvas_synchronize_only \else
    \let\scrn_canvas_synchronize_only\relax
\fi

\ifdefined\page_paper_set_offsets \else

  \def\page_paper_set_offsets % will move
    {\global\paperoffset\v_page_target_offset
     \global\advance\paperwidth -2\paperoffset
     \global\advance\paperheight-2\paperoffset}

\fi

\ifdefined\setups \else
    \unexpanded\def\setups[#1]{\setdefaultpenalties}  % still needed?
\fi

\ifdefined\synchronizegridsnapping \else
    \let\synchronizegridsnapping\relax
\fi

\let\p_page_layouts_width \empty
\let\p_page_layouts_height\empty

\def\page_layouts_synchronize
  {\setups[\layoutparameter\c!preset]\relax
   \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
   \page_layouts_set_dimensions
   \synchronizegridsnapping
   \usesetupsparameter\layoutparameter % depends on gridsnapping !
   \synchronizewhitespace
   \synchronizeblank
   \setupinterlinespace[\v!reset]% \synchronizegloballinespecs
   \global\cutspace\layoutparameter\c!cutspace\relax
   \edef\p_page_layouts_width{\layoutparameter\c!width}%
   \ifx\p_page_layouts_width\v!middle
     \ifdim\cutspace=\zeropoint
       \global\cutspace\backspace
     \fi
     \global\makeupwidth\dimexpr\paperwidth-\backspace-\cutspace\relax
   \else\ifx\p_page_layouts_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
   \else
     \global\makeupwidth\p_page_layouts_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
   \fi\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
     \edef\p_page_layouts_height{\layoutparameter\c!height}%
     \ifx\p_page_layouts_height\v!middle
       \ifdim\bottomspace=\zeropoint
         \global\bottomspace\topspace
       \fi
       \global\makeupheight\dimexpr\paperheight-\topspace-\bottomspace\relax
     \else\ifx\p_page_layouts_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
     \else
       \global\makeupheight\layoutparameter\c!height\relax
       \ifdim\bottomspace=\zeropoint
         \global\bottomspace\dimexpr\paperheight-\makeupheight-\topspace\relax
     % \else
         % inconsistent specification
       \fi
     \fi\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\relax
   \topoffset \layoutparameter\c!veroffset\relax
   \ifdim\makeupwidth<\onepoint
     \global\makeupwidth\onepoint
   \fi
   \ifdim\makeupheight<\onepoint
     \global\makeupheight\onepoint
   \fi
   % handy in page builder
   \global\totaltextwidth\dimexpr
      \leftedgetotal
     +\leftmargintotal
     +\makeupwidth
     +\rightmargintotal
     +\rightedgetotal
   \relax
   % \page_layouts_check_next % here ?
   \page_layouts_calculate_extras
   \page_target_check_centering
   \calculatehsizes
   \calculatevsizes
   \page_layouts_check_pseudo_columns
   \page_backgrounds_recalculate}

\def\page_layouts_check_pseudo_columns
  {\global\layoutcolumns\layoutparameter\c!columns
   \global\layoutcolumndistance\layoutparameter\c!columndistance
   \global\layoutcolumnwidth\dimexpr\makeupwidth-\layoutcolumns\layoutcolumndistance+\layoutcolumndistance\relax
   \ifnum\layoutcolumns>\plusone
     \global\divide\layoutcolumnwidth\layoutcolumns
     \dorecurse\layoutcolumns\page_layouts_check_pseudo_column
   \fi}

\def\page_layouts_check_pseudo_column
  {\setxvalue{\??layoutcolumn\recurselevel}%
     {\the\numexpr\recurselevel-\plusone\relax\dimexpr\layoutcolumnwidth+\layoutcolumndistance\relax}}

\letvalue{\??layoutcolumn0}\zeropoint

\def\layoutcolumnoffset#1% can travel around so we can't use \lastnamedcs
  {\csname\??layoutcolumn\ifcsname\??layoutcolumn#1\endcsname#1\else0\fi\endcsname}

\def\page_layouts_synchronize_at_start
  {\ifdim\makeupheight=\layoutlines\lineheight \else % weird check
     \page_layouts_synchronize
   \fi}

\appendtoks
    \page_layouts_synchronize_at_start % still needed?
\to \everystarttext

% document:
%
% \setuplayout[odd][state=stop] \setuplayout[even][state=stop] \setuplayout[page]
%
% \startstandardmakeup[page=blank] ... \stopstandardmakeup

\ifdefined\lastpage \else \let\lastpage\!!plusone \fi

\def\page_layouts_change#1%
  {%\writestatus\m!layouts{changing to layout #1}%
   \xdef\currentlayout{#1}%
   \page_layouts_synchronize}

\let\changetolayout\page_layouts_change % also public

\def\v_real_page_normal {\the\realpageno}
\def\v_real_page_reverse{-\the\numexpr\lastpage-\realpageno\relax}

\def\v_real_page_odd_or_even
  {\ifodd\pagenoshift
     \ifodd\realpageno\v!even\else\v!odd \fi
   \else
     \ifodd\realpageno\v!odd \else\v!even\fi
   \fi}

\let\v_real_page_current\v!current

\def\v_real_page_named
  {\ifnum\lastpage=\realpageno
     \v!last
   \else\ifnum\plusone=\realpageno
     \v!first
   \else
     \__unknown__
   \fi\fi}

\let\v_page_layouts_pre_check\relax

\def\page_layouts_check_default_indeed#1%
  {\edef\m_page_check{#1}
   \edef\m_page_state{\namedlayoutparameter\m_page_check\c!state}%
   \ifx\m_page_state\v!start
     \global\let\v_page_layouts_pre_check\currentlayout
     \global\let\currentlayout\m_page_check
     \page_layouts_synchronize
   \else\ifx\m_page_state\v!repeat
     \global\let\v_page_layouts_pre_check\relax
     \global\let\currentlayout\m_page_check
     \page_layouts_synchronize
   \fi\fi}

\def\page_layouts_check_revert
  {\global\let\currentlayout\v_page_layouts_pre_check
   \global\let\v_page_layouts_pre_check\relax
   \page_layouts_synchronize}

\def\page_layouts_check_default
  {\ifcsname\namedlayouthash\v_real_page_normal\c!state\endcsname
     \page_layouts_check_default_indeed\v_real_page_normal
   \else\ifcsname\namedlayouthash\v_real_page_reverse\c!state\endcsname
     \page_layouts_check_default_indeed\v_real_page_reverse
   \else\ifcsname\namedlayouthash\v_real_page_named\c!state\endcsname
     \page_layouts_check_default_indeed\v_real_page_named
   \else\ifcsname\namedlayouthash\v_real_page_current\c!state\endcsname
     \page_layouts_check_default_indeed\v_real_page_current
   \else\ifcsname\namedlayouthash\v_real_page_odd_or_even\c!state\endcsname
     \page_layouts_check_default_indeed\v_real_page_odd_or_even
   \else\ifx\v_page_layouts_pre_check\relax
     % okay
   \else
     \page_layouts_check_revert
   \fi\fi\fi\fi\fi\fi}

\unexpanded\def\installlayoutmethod#1#2%
  {\setgvalue{\??layoutmethod#1}{#2}}

\installlayoutmethod\v!default{\page_layouts_check_default}
\installlayoutmethod\v!normal {\page_layouts_check_default}

% \def\page_layouts_check_next
%   {\csname\??layoutmethod\ifcsname\??layoutmethod\layoutparameter\c!method\endcsname
%      \layoutparameter\c!method
%    \else
%      \v!normal
%    \fi\endcsname}

\def\page_layouts_check_next
  {\ifcsname\??layoutmethod\layoutparameter\c!method\endcsname
     \lastnamedcs
   \else
     \page_layouts_check_default
   \fi}

\let\checkcurrentlayout\page_layouts_check_next % public and used in naw, so this synonym will stay

% inheritance
%
% \definelayout
%   [test]
%   [width=12cm,
%    height=10cm]
%
% \definelayout
%   [more]
%   [test]
%   [height=12cm]
%
% testcase
%
% \setuppagenumbering[alternative=doublesided]
%
% \setuplayout         [width=11cm]
% \definelayout [odd]  [backspace=1cm]
% \definelayout [even] [backspace=4cm]
% \definelayout [5]    [backspace=5cm]
% \definelayout [6]    [backspace=5cm]
% \definelayout [-2]   [backspace=0cm,cutspace=0cm]
% \definelayout [last] [backspace=0cm,cutspace=0cm]
%
% \checkcurrentlayout \showframe
%
% \starttext
%     \dorecurse{20} {\input knuth \endgraf \input tufte \endgraf}
% \stoptext

% Because we want to keep the set parameters as they are we use some
% helpers to communicate between the several page building related
% mechanism.

\appendtoks \page_layouts_check_next \to \everystarttext
\appendtoks \page_layouts_check_next \to \everyaftershipout

\newconditional\c_page_layouts_location_is_set
\newconditional\c_page_layouts_location_is_middle

\def\page_layouts_location_reset % we start in the left top and mirror right pages
  {\setfalse\c_page_layouts_location_is_set
   \setfalse\c_page_layouts_location_is_middle
   \let\v_page_target_left_fill  \relax
   \let\v_page_target_right_fill \hss % ? \relax
   \let\v_page_target_top_fill   \relax
   \let\v_page_target_bottom_fill\vss} % \relax}

\setvalue{\??layoutlocation\v!right      }{\settrue\c_page_layouts_location_is_set
                                           \setfalse\c_page_layouts_location_is_middle
                                           \let\v_page_target_left_fill  \hss
                                           \let\v_page_target_right_fill \relax}
\setvalue{\??layoutlocation\v!left       }{\settrue\c_page_layouts_location_is_set
                                           \setfalse\c_page_layouts_location_is_middle
                                           \let\v_page_target_left_fill  \relax
                                           \let\v_page_target_right_fill \hss}
\setvalue{\??layoutlocation\v!bottom     }{\settrue\c_page_layouts_location_is_set
                                           \setfalse\c_page_layouts_location_is_middle
                                           \let\v_page_target_top_fill   \vss
                                           \let\v_page_target_bottom_fill\relax}
\setvalue{\??layoutlocation\v!top        }{\settrue\c_page_layouts_location_is_set
                                           \setfalse\c_page_layouts_location_is_middle
                                           \let\v_page_target_top_fill   \relax
                                           \let\v_page_target_bottom_fill\vss}
\setvalue{\??layoutlocation\v!middle     }{\settrue\c_page_layouts_location_is_set
                                           \settrue\c_page_layouts_location_is_middle
                                           \let\v_page_target_left_fill  \hss
                                           \let\v_page_target_right_fill \hss
                                           \let\v_page_target_top_fill   \vss
                                           \let\v_page_target_bottom_fill\vss}
\setvalue{\??layoutlocation\empty        }{\setfalse\c_page_layouts_location_is_set % default also signal to scrn_
                                           \setfalse\c_page_layouts_location_is_middle
                                           \let\v_page_target_right_fill \hss
                                           \let\v_page_target_bottom_fill\hss}
\setvalue{\??layoutlocation\v!doublesided}{\settrue \c_page_target_print_doublesided}
\setvalue{\??layoutlocation\v!singlesided}{\setfalse\c_page_target_print_doublesided}

\def\page_target_check_centering_indeed#1%
 % {\ifcsname\??layoutlocation#1\endcsname\csname\??layoutlocation#1\endcsname\fi}
  {\begincsname\??layoutlocation#1\endcsname}

\unexpanded\def\page_target_check_centering
  {\setfalse\c_page_target_print_doublesided
   \page_layouts_location_reset
   \processcommacommand[\layoutparameter\c!location]\page_target_check_centering_indeed}

% installers

\def\installlayoutalternative#1#2%
  {\setgvalue{\??layoutalternative#1}{#2}}

\def\page_boxes_construct_content_default#1#2#3% targetbox flusher box
  {\setbox#1\vbox
     {\offinterlineskip
      \begingroup % needed ?
      \uselayoutstyleandcolor\c!style\c!color
      \offinterlineskip
      \page_layouts_insert_elements % zero size
      \endgroup
      \page_insert_body#2#3}}% including footnotes

\installlayoutalternative\v!default{\page_boxes_construct_content_default}
\installlayoutalternative\v!normal {\page_boxes_construct_content_default}

% \def\page_boxes_construct_content % targetbox flusher box
%   {\csname\??layoutalternative\ifcsname\??layoutalternative\layoutparameter\c!alternative\endcsname
%      \layoutparameter\c!alternative
%    \else
%      \v!normal
%    \fi\endcsname}

\def\page_boxes_construct_content % targetbox flusher box
  {\ifcsname\??layoutalternative\layoutparameter\c!alternative\endcsname
     \expandafter\lastnamedcs
   \else
     \expandafter\page_boxes_construct_content_default
   \fi}

%D \macros
%D   {adaptlayout}

\installcorenamespace{adaptlayout}
\installcorenamespace{pageadaptations}

\installsetuponlycommandhandler \??adaptlayout {adaptlayout}

\newdimen\d_page_adepts_pushed_text_height
\newdimen\d_page_adepts_pushed_footer_height
\newdimen\d_page_adepts_height

\unexpanded\def\adaptlayout
  {\dodoubleempty\page_adapts_layout}

\def\page_adapts_layout[#1][#2]%
  {\ifsecondargument
     \processcommalist[#1]{\page_adapts_layout_register{#2}}%
     \page_adapts_check
   \else
     \page_adapts_layout_indeed{#1}%
   \fi}

\def\page_adapts_layout_register#1#2%
  {\setgvalue{\??pageadaptations#2}{\page_adapts_layout_indeed{#1}}}

\let\p_adapts_height\zeropoint
\let\p_adapts_lines \zerocount

\def\page_adapts_layout_indeed#1%
  {\setupcurrentadaptlayout[\c!height=\zeropoint,\c!lines=\zerocount,#1]%
   \page_adepts_push
   \edef\p_adapts_height{\adaptlayoutparameter\c!height}%
   \edef\p_adapts_lines {\adaptlayoutparameter\c!lines}%
   \ifx\p_adapts_height\v!max
     \global\d_page_adepts_height\footerheight
   \else
     \global\d_page_adepts_height\dimexpr
        \ifnum\p_adapts_lines=\zerocount
          \p_adapts_height
        \else
          \p_adapts_lines\openlineheight
        \fi
      \relax
      \ifdim\d_page_adepts_height>\footerheight
        \global\d_page_adepts_height\footerheight
      \fi
   \fi
   \global\advance\textheight   \d_page_adepts_height
   \global\advance\footerheight-\d_page_adepts_height
   \showmessage\m!layouts1{\the\d_page_adepts_height,\the\realpageno}%
   % this will become a better one (do we need insert correction?)
   \page_otr_command_set_vsize
   %
   \page_backgrounds_recalculate
   \global\let\page_adepts_push\relax
   \global\let\page_adepts_pop\page_adepts_pop_indeed}

% \def\page_adapts_check
%   {\csname\??pageadaptations\the\ifcsname\??pageadaptations\the\realpageno\endcsname\realpageno\else\zerocount\fi\endcsname}
%
% \def\page_adapts_reset
%   {\ifcsname\??pageadaptations\the\realpageno\endcsname
%      \global\undefinevalue{\??pageadaptations\the\realpageno}%
%    \fi}

\def\page_adapts_check
  {\begincsname\??pageadaptations\the\realpageno\endcsname}

\def\page_adapts_reset
  {\ifcsname\??pageadaptations\the\realpageno\endcsname
     \expandafter\glet\csname\??pageadaptations\the\realpageno\endcsname\relax
   \fi}

\def\page_adepts_push_indeed
  {\global\d_page_adepts_pushed_text_height  \textheight
   \global\d_page_adepts_pushed_footer_height\footerheight}

\def\page_adepts_pop_indeed
  {\global\textheight  \d_page_adepts_pushed_text_height
   \global\footerheight\d_page_adepts_pushed_footer_height
   \page_layouts_synchronize
   \global\let\page_adepts_push\page_adepts_push_indeed
   \global\let\page_adepts_pop\relax}

\appendtoks \page_adapts_check \to \everystarttext
\appendtoks \page_adapts_reset \to \everyshipout

\let\page_adepts_pop \relax
\let\page_adepts_push\page_adepts_push_indeed

\unexpanded\def\page_adapts_synchronize % used elsewhere
  {\page_adepts_pop
   \page_adapts_check}

\def\page_adapts_status_info % used elsewhere
  {\ifx\page_adepts_pop\relax \else
     \space(adept: \the\d_page_adepts_height)\space
   \fi
   \the\realpageno}

%D \macros
%D   {startlayout,stoplayout}

\unexpanded\def\startlayout[#1]%
  {\page
   \globalpushmacro\currentlayout
   \doifelselayoutdefined{#1}{\setuplayout[#1]}\donothing} % {\setuplayout[\currentlayout]}}

\unexpanded\def\stoplayout
  {\page
   \globalpopmacro\currentlayout
   \setuplayout[\currentlayout]}

% NOG EENS NAGAAN WANNEER NU GLOBAL EN WANNEER NIET

\ifx\doifelselayoutsomeline\undefined % defined in page-txt
    \let\doifelselayoutsomeline\secondofthreearguments
\fi

\def\compensatevsizeheader             {\advance\textheight-\dimexpr\headerheight+\headerdistance\relax}
\def\compensatevsizefooter             {\advance\textheight-\dimexpr\footerheight+\footerdistance\relax}
\def\globalcompensatevsizeheader{\global\advance\textheight-\dimexpr\headerheight+\headerdistance\relax}
\def\globalcompensatevsizefooter{\global\advance\textheight-\dimexpr\footerheight+\footerdistance\relax}

\def\compensatevsizeheaderzero{\headerheight\zeropoint\page_layouts_set_distances}
\def\compensatevsizefooterzero{\footerheight\zeropoint\page_layouts_set_distances}

\def\page_layouts_set_modes
  {\ifzeropt\headerheight
     \resetsystemmode\v!header
   \else
     \setsystemmode\v!header
   \fi
   \ifzeropt\footerheight
     \resetsystemmode\v!footer
   \else
     \setsystemmode\v!footer
   \fi}

\def\calculatevsizes % name will change
  {\textheight\makeupheight
   \doifelselayoutsomeline\v!header\compensatevsizeheader\donothing
   \doifelselayoutsomeline\v!footer\compensatevsizefooter\donothing
   \page_layouts_set_modes
   \resetglobal
   \page_otr_command_set_vsize}

\def\calculateglobalvsizes % name will change
  {\global\textheight\makeupheight
   \doifelselayoutsomeline\v!header\globalcompensatevsizeheader\donothing
   \doifelselayoutsomeline\v!footer\globalcompensatevsizefooter\donothing
   \page_layouts_set_modes
   \page_otr_command_set_vsize}

\def\calculatereducedvsizes % name will change
  {\textheight\makeupheight
   \doifelselayoutsomeline\v!header\compensatevsizeheader\compensatevsizeheaderzero
   \doifelselayoutsomeline\v!footer\compensatevsizefooter\compensatevsizefooterzero}

\newdimen\innermakeupwidth  % special purpose
\newdimen\innermakeupmargin % special purpose

\newconditional\innermakeupcompensation \settrue\innermakeupcompensation

\def\compensatedinnermakeupmargin
  {\dimexpr\ifconditional\innermakeupcompensation+\innermakeupmargin\else\zeropoint\fi\relax}

\def\freezetextwidth % name will change      % \makeupwidth may be set to \textwidth
  {\textwidth\makeupwidth                    % which is a tricky but valid value
   \edef\m_currentlayout_text_width {\layoutparameter\c!textwidth }%
   \edef\m_currentlayout_text_margin{\layoutparameter\c!textmargin}%
   \ifx\m_currentlayout_text_width\empty \else
     \textwidth\m_currentlayout_text_width % local
   \fi
   \global\innermakeupwidth\textwidth
   \ifx\m_currentlayout_text_margin\empty
     \global\innermakeupmargin\zeropoint
   \else
     \global\innermakeupmargin\m_currentlayout_text_margin\relax
   \fi
   \scratchdimen\dimexpr\innermakeupmargin+\innermakeupmargin\relax
   \global\advance\innermakeupwidth-\scratchdimen
   \advance\textwidth-\scratchdimen}   % local

\def\calculatehsizes % name will change
  {\freezetextwidth
   \page_otr_command_set_hsize}

% The next few are better off in page-ini.mkiv

%D When we start at an even page, we need to swap the layout
%D differently. We cannot adapt the real page number, since
%D it is used in cross referencing. The next switch is set
%D when we start at an even page.

% We could use nested if here plus some \@EAEAEA's but but the
% next variant has less expansion which is nicer in tracing.

% #single #left #right

\def\doifelseoddpage
  {\ifodd\pagenoshift
     \expandafter\page_layouts_if_odd_else_yes
   \else
     \expandafter\page_layouts_if_odd_else_nop
   \fi}

\let\doifoddpageelse\doifelseoddpage

\def\page_layouts_if_odd_else_yes
  {\ifodd\realpageno
     \expandafter\secondoftwoarguments
   \else
     \expandafter\firstoftwoarguments
   \fi}

\def\page_layouts_if_odd_else_nop
  {\ifodd\realpageno
     \expandafter\firstoftwoarguments
   \else
     \expandafter\secondoftwoarguments
   \fi}

\def\page_layouts_if_odd_else_again#1{\doifelseoddpage}

\def\doifbothsidesoverruled
  {\ifdoublesided
     \expandafter\page_layouts_if_odd_else_again
   \else
     \expandafter\firstofthreearguments
   \fi}

\def\doifbothsides% #1 #2 #3
  {\ifdoublesided
     \expandafter\page_layouts_if_both_sides
   \else
     \expandafter\firstofthreearguments
   \fi}

\def\page_layouts_if_both_sides
  {\ifsinglesided
     \expandafter\firstofthreearguments
   \else
     \expandafter\page_layouts_if_odd_else_again
   \fi}

\newdimen\texthoffset

\def\settexthoffset % name will change
  {\texthoffset\doifbothsides\backspace\backspace{\dimexpr\paperwidth-\backspace-\makeupwidth\relax}}

% The next hack is too tricky as we may shipout more pages:
%
% \def\freezepagestatechecks
%   {\the\everyfreezepagestatechecks}
%
% \newtoks \everyfreezepagestatechecks
%
% \appendtoks
%     \doifbothsides
%       {\let\doifbothsides\firstofthreearguments}%
%       {\let\doifbothsides\secondofthreearguments}%
%       {\let\doifbothsides\thirdofthreearguments}%
%     \rightorleftpageaction
%       {\let\rightorleftpageaction\firstoftwoarguments}%
%       {\let\rightorleftpageaction\secondoftwoarguments}%
%     \doifmarginswapelse
%       {\let\doifmarginswapelse\firstoftwoarguments}%
%       {\let\doifmarginswapelse\secondoftwoarguments}%
% \to \everyfreezepagestatechecks
%
% \prependtoks
%     \freezepagestatechecks
% \to \everybeforeshipout

\def\goleftonpage % name will change (we could cache)
  {\hskip-\dimexpr\leftmargindistance+\leftmarginwidth+\leftedgedistance+\leftedgewidth\relax}

\def\doifelsemarginswap#1#2%
  {\doifbothsides{#1}{#1}{#2}}

\let\doifmarginswapelse\doifelsemarginswap

\def\swapmargins % name will change
  {\doifelsemarginswap\relax\doswapmargins}

\def\doswapmargins % name will change
  {\let\swapmargins  \relax % to prevent local swapping
   \let\doswapmargins\relax % to prevent local swapping
   \the\everyswapmargins}

\def\rightorleftpageaction
  {\ifdoublesided
     \expandafter\page_layouts_right_or_left_page_action
   \else
     \expandafter\firstoftwoarguments
   \fi}

\def\page_layouts_right_or_left_page_action
  {\ifsinglesided
     \expandafter\firstoftwoarguments
   \else
     \expandafter\doifelseoddpage
   \fi}

\def\outermarginwidth   {\rightorleftpageaction\rightmarginwidth   \leftmarginwidth }
\def\innermarginwidth   {\rightorleftpageaction\leftmarginwidth    \rightmarginwidth}
\def\outermargindistance{\rightorleftpageaction\rightmargindistance\leftmargindistance }
\def\innermargindistance{\rightorleftpageaction\leftmargindistance \rightmargindistance}

\def\outeredgewidth     {\rightorleftpageaction\rightedgewidth   \leftedgewidth }
\def\inneredgewidth     {\rightorleftpageaction\leftedgewidth    \rightedgewidth}
\def\outeredgedistance  {\rightorleftpageaction\rightedgedistance\leftedgedistance }
\def\inneredgedistance  {\rightorleftpageaction\leftedgedistance \rightedgedistance}

\def\outerspacewidth    {\rightorleftpageaction\cutspace \backspace}
\def\innerspacewidth    {\rightorleftpageaction\backspace\cutspace }

\def\leftmargintotal    {\dimexpr\leftmarginwidth +\leftmargindistance \relax}
\def\rightmargintotal   {\dimexpr\rightmarginwidth+\rightmargindistance\relax}
\def\leftedgetotal      {\dimexpr\leftedgewidth   +\leftedgedistance   \relax}
\def\rightedgetotal     {\dimexpr\rightedgewidth  +\rightedgedistance  \relax}

\def\leftsidetotal      {\dimexpr\leftmarginwidth +\leftedgetotal \relax}
\def\rightsidetotal     {\dimexpr\rightmarginwidth+\rightedgetotal\relax}
\def\leftcombitotal     {\dimexpr\leftmargintotal +\leftedgetotal \relax}
\def\rightcombitotal    {\dimexpr\rightmargintotal+\rightedgetotal\relax}

\def\innermargintotal   {\dimexpr\innermarginwidth+\innermargindistance\relax}
\def\outermargintotal   {\dimexpr\outermarginwidth+\outermargindistance\relax}
\def\inneredgetotal     {\dimexpr\inneredgewidth  +\inneredgedistance  \relax}
\def\outeredgetotal     {\dimexpr\outeredgewidth  +\outeredgedistance  \relax}

\def\innercombitotal    {\dimexpr\innermargintotal+\inneredgetotal\relax}
\def\outercombitotal    {\dimexpr\outermargintotal+\outeredgetotal\relax}
\def\innersidetotal     {\dimexpr\innermarginwidth+\inneredgetotal\relax}
\def\outersidetotal     {\dimexpr\outermarginwidth+\outeredgetotal\relax}

%D \macros
%D   {startlocallayout}
%D
%D These macros should be used with care. They permit local
%D layouts (as used in fitting pages, see \type {page-app.tex}).

%D This is kind of obsolete now that we have \type
%D {\definelayout}, so this hack will disappear in future
%D versions.

\unexpanded\def\startlocallayout
  {\globalpushmacro\page_paper_restore
   \globalpushmacro\currentlayout}

\unexpanded\def\stoplocallayout
  {\globalpopmacro\currentlayout
   \globalpopmacro\page_paper_restore
   \page_paper_restore
   \setuplayout[\currentlayout]\relax} % explicit !

%D \macros
%D   {showprint, showframe, showlayout, showsetups}
%D
%D We predefine a couple of tracing macros.
%D
%D \showsetup{showprint}
%D \showsetup{showframe}
%D \showsetup{showlayout}
%D \showsetup{showsetups}
%D %showsetup{showmargins}

\fetchruntimecommand \showprint   {page-run}
\fetchruntimecommand \showframe   {page-run}
\fetchruntimecommand \showlayout  {page-run}
\fetchruntimecommand \showsetups  {page-run}
\fetchruntimecommand \showmargins {page-run}

%D The default dimensions are quite old and will not change.
%D The funny fractions were introduced when we went from fixed
%D dimensions to relative ones. Since \CONTEXT\ is a dutch
%D package, the dimensions are based on the metric system. The
%D asymmetrical layout is kind of handy for short
%D quick||and||dirty stapled documents.
%D
%D Although valid, it is not a real good idea to use
%D dimensions based on the \type {em} unit. First of all,
%D since there are no fonts loaded yet, this dimension makes
%D no sense, and second, you would loose track of values,
%D since they could change while going to a new page,
%D depending on the current font setting.

\setuplayout
  [             \c!topspace=.08417508418\paperheight,  %  2.5cm
                     \c!top=\zeropoint,
             \c!topdistance=\zeropoint,
                  \c!header=.06734006734\paperheight,  %  2.0cm
          \c!headerdistance=\zeropoint,
                  \c!height=.84175084175\paperheight,  % 25.0cm
          \c!footerdistance=\layoutparameter\c!headerdistance,
                  \c!footer=.06734006734\paperheight,  %  2.0cm
          \c!bottomdistance=\layoutparameter\c!topdistance,
                  \c!bottom=\zeropoint,
               \c!backspace=.11904761905\paperwidth, %  2.5cm
                    \c!edge=\zeropoint,
            \c!edgedistance=\layoutparameter\c!margindistance,
                  \c!margin=.12649983170\paperwidth, %  snijwit-2*afstand
          \c!margindistance=.02008341748\paperwidth, %  12.0pt
                \c!leftedge=\layoutparameter\c!edge,
        \c!leftedgedistance=\layoutparameter\c!edgedistance,
              \c!leftmargin=\layoutparameter\c!margin,
      \c!leftmargindistance=\layoutparameter\c!margindistance,
                   \c!width=.71428571429\paperwidth, %  15.0cm \dimexpr\
     \c!rightmargindistance=\layoutparameter\c!margindistance,
             \c!rightmargin=\layoutparameter\c!margin,
       \c!rightedgedistance=\layoutparameter\c!edgedistance,
               \c!rightedge=\layoutparameter\c!edge,
               \c!veroffset=\zeropoint,
             \c!bottomspace=\zeropoint,
               \c!horoffset=\zeropoint,
                \c!cutspace=\zeropoint,
               \c!textwidth=, % dangerous option -> centered / local
              \c!textmargin=, % dangerous option -> both sides
            \c!textdistance=\zeropoint, % shift down on grid
                   \c!style=,
                   \c!color=,
                 \c!marking=\v!off,
                \c!location=,% \v!singlesided, but unset is signal (no other default, spoils arrange)
                   \c!state=\v!start,
                   \c!scale=1,
                      \c!sx=1,
                      \c!sy=1,
                      \c!nx=1,
                      \c!ny=1,
                      \c!dx=\zeropoint,
                      \c!dy=\zeropoint,
                    \c!grid=\v!no,
                  \c!preset=,
                  \c!setups=\systemsetupsprefix\s!default,
              \c!clipoffset=\zeropoint,
                   \c!lines=0,
                   \c!paper=, % for foxet
                    \c!page=, % for foxet
                 \c!columns=\plusone,
          \c!columndistance=\zeropoint]

%D First we define a whole range of (DIN) papersizes,
%D of which the A-series makes most sense. We enable checking.

\definepapersize [A0]  [\c!width=841mm,\c!height=1189mm]
\definepapersize [A1]  [\c!width=594mm,\c!height=841mm]
\definepapersize [A2]  [\c!width=420mm,\c!height=594mm]
\definepapersize [A3]  [\c!width=297mm,\c!height=420mm]
\definepapersize [A4]  [\c!width=210mm,\c!height=297mm]
\definepapersize [A5]  [\c!width=148mm,\c!height=210mm]
\definepapersize [A6]  [\c!width=105mm,\c!height=148mm]
\definepapersize [A7]  [\c!width=74mm,\c!height=105mm]
\definepapersize [A8]  [\c!width=52mm,\c!height=74mm]
\definepapersize [A9]  [\c!width=37mm,\c!height=52mm]
\definepapersize [A10] [\c!width=26mm,\c!height=37mm]

\definepapersize [A4/2][\c!width=\dimexpr297mm/2\relax,\c!height=210mm] % 148.5mm
%definepapersize [2A5] [\c!width=296mm,\c!height=210mm] % doublewide

\definepapersize [B0]  [\c!width=1000mm,\c!height=1414mm]
\definepapersize [B1]  [\c!width=707mm,\c!height=1000mm]
\definepapersize [B2]  [\c!width=500mm,\c!height=707mm]
\definepapersize [B3]  [\c!width=353mm,\c!height=500mm] % [\c!width=354mm,\c!height=500mm]
\definepapersize [B4]  [\c!width=250mm,\c!height=353mm] % [\c!width=250mm,\c!height=354mm]
\definepapersize [B5]  [\c!width=176mm,\c!height=250mm] % [\c!width=177mm,\c!height=250mm]
\definepapersize [B6]  [\c!width=125mm,\c!height=176mm] % [\c!width=125mm,\c!height=177mm]
\definepapersize [B7]  [\c!width=88mm,\c!height=125mm]
\definepapersize [B8]  [\c!width=62mm,\c!height=88mm]   % [\c!width=63mm,\c!height=88mm]
\definepapersize [B9]  [\c!width=44mm,\c!height=62mm]   % [\c!width=44mm,\c!height=63mm]
\definepapersize [B10] [\c!width=31mm,\c!height=44mm]

\definepapersize [C0]  [\c!width=917mm,\c!height=1297mm]
\definepapersize [C1]  [\c!width=648mm,\c!height=917mm] % [\c!width=649mm,\c!height=917mm]
\definepapersize [C2]  [\c!width=458mm,\c!height=648mm] % [\c!width=459mm,\c!height=649mm]
\definepapersize [C3]  [\c!width=324mm,\c!height=458mm] % [\c!width=324mm,\c!height=459mm]
\definepapersize [C4]  [\c!width=229mm,\c!height=324mm]
\definepapersize [C5]  [\c!width=162mm,\c!height=229mm]
\definepapersize [C6]  [\c!width=114mm,\c!height=162mm] % [\c!width=115mm,\c!height=162mm]
\definepapersize [C7]  [\c!width=81mm,\c!height=114mm]  % [\c!width=81mm,\c!height=115mm]
\definepapersize [C8]  [\c!width=57mm,\c!height=81mm]
\definepapersize [C9]  [\c!width=40mm,\c!height=57mm]
\definepapersize [C10] [\c!width=28mm,\c!height=40mm]

%D Per August 2004 the rounding of some (seldom used) sizes
%D were corrected top the latest DIN specifications. Peter
%D Rolf came up with these and a few more missing sizes.
%D Watch out: spaces and slashes!

\definepapersize [4 A0]  [\c!width=1682mm,\c!height=2378mm]
\definepapersize [2 A0]  [\c!width=1189mm,\c!height=1682mm]
\definepapersize [C6/C5] [\c!width=114mm,\c!height=229mm]

%D Because there are no standardized screen sizes, we define
%D a bunch of sizes with $4:3$ ratios. The \type {S6} size is
%D nearly as wide as a sheet of \type {A4} paper.

\definepapersize [S3]  [\c!width=300pt,\c!height=225pt]
\definepapersize [S4]  [\c!width=400pt,\c!height=300pt]
\definepapersize [S5]  [\c!width=500pt,\c!height=375pt]
\definepapersize [S6]  [\c!width=600pt,\c!height=450pt]
\definepapersize [S8]  [\c!width=800pt,\c!height=600pt]
\definepapersize [SL]  [\c!width=640pt,\c!height=400pt] % low
\definepapersize [SM]  [\c!width=720pt,\c!height=450pt] % medium
\definepapersize [SW]  [\c!width=800pt,\c!height=450pt] % wide
\definepapersize [HD]  [\c!width=1920pt,\c!height=1080pt]
\definepapersize [HD+] [\c!width=1920pt,\c!height=1200pt]
\definepapersize [HD-] [\c!width=960pt,\c!height=540pt]

%D These are handy too:

\definepapersize [S33] [\c!width=300pt,\c!height=300pt]
\definepapersize [S44] [\c!width=400pt,\c!height=400pt]
\definepapersize [S55] [\c!width=500pt,\c!height=500pt]
\definepapersize [S66] [\c!width=600pt,\c!height=600pt]

%D One may wonder if \TEX\ should be used for typesetting
%D \CDROM\ covers, but it does not hurt to have the paper size
%D ready.

\definepapersize [CD] [\c!width=120mm,\c!height=120mm]

%D The next series is for our English speaking friends who
%D decided to stick to non metric values. Thanks to Nelson
%D Beebe for completing the inch based list.

\definepapersize [letter]    [\c!width=8.5in,\c!height=11in]
\definepapersize [ledger]    [\c!width=11in,\c!height=17in]
\definepapersize [tabloid]   [\c!width=17in,\c!height=11in]

\definepapersize [legal]     [\c!width=8.5in,\c!height=14in]
\definepapersize [folio]     [\c!width=8.5in,\c!height=13in]
\definepapersize [executive] [\c!width=7.25in,\c!height=10.5in]

\definepapersize [A] [\c!width=8.5in,\c!height=11in] % 1 sheet
\definepapersize [B] [\c!width=11in,\c!height=17in]  % 2 sheets
\definepapersize [C] [\c!width=17in,\c!height=22in]  % 4 sheets

%D The next set is for Tobias Burnus, who gave me the sizes.

\definepapersize [envelope 9]  [\c!width=8.88in,\c!height=3.88in]
\definepapersize [envelope 10] [\c!width=9.5in,\c!height=4.13in]
\definepapersize [envelope 11] [\c!width=10.38in,\c!height=4.5in]
\definepapersize [envelope 12] [\c!width=11.0in,\c!height=4.75in]
\definepapersize [envelope 14] [\c!width=11.5in,\c!height=5.0in]
\definepapersize [monarch]     [\c!width=7.5in,\c!height=3.88in]
\definepapersize [check]       [\c!width=8.58in,\c!height=3.88in]
\definepapersize [DL]          [\c!width=110mm,\c!height=220mm] % [\c!width=220mm,\c!height=110mm]
\definepapersize [E4]          [\c!width=280mm,\c!height=400mm]

%D The next three sets are supplied by Taco:

\definepapersize [RA0]  [\c!width=860mm,\c!height=1220mm]
\definepapersize [RA1]  [\c!width=610mm,\c!height=860mm]
\definepapersize [RA2]  [\c!width=430mm,\c!height=610mm]
\definepapersize [RA3]  [\c!width=305mm,\c!height=430mm]
\definepapersize [RA4]  [\c!width=215mm,\c!height=305mm]

%D ISO SRA (supplementary raw A) sizes:

\definepapersize [SRA0]  [\c!width=900mm,\c!height=1280mm]
\definepapersize [SRA1]  [\c!width=640mm,\c!height=900mm]
\definepapersize [SRA2]  [\c!width=450mm,\c!height=640mm]
\definepapersize [SRA3]  [\c!width=320mm,\c!height=450mm]
\definepapersize [SRA4]  [\c!width=225mm,\c!height=320mm]

%D Swedish thesis formats:

\definepapersize [G5]  [\c!width=169mm,\c!height=239mm]
\definepapersize [E5]  [\c!width=155mm,\c!height=220mm]

%D Industry invention:

\definepapersize [A3plus] [\c!width=329mm,\c!height=483mm]

%D For Alan:

\definepapersize [business]   [\c!width=85mm,\c!height=55mm]
\definepapersize [businessUS] [\c!width=3.5in,\c!height=2in]

%D We can now default to a reasonable size. We match the print
%D paper size with the typeset paper size. This setting should
%D come after the first layout specification (already done).

% \definepapersize
%   [\v!default]
%   [ \c!width=\paperwidth,
%    \c!height=\paperheight]

% \definepapersize
%   [samesized]
%   [ \c!width=\paperwidth,
%    \c!height=\paperheight]

\setuppapersize
  [\c!distance=1.5cm] % offset is already taken

\definepapersize
  [oversized]
  [ \c!width=\dimexpr\paperwidth +\layouttargetparameter\c!distance\relax,
   \c!height=\dimexpr\paperheight+\layouttargetparameter\c!distance\relax]

\definepapersize
  [undersized]
  [ \c!width=\dimexpr\paperwidth -\layouttargetparameter\c!distance\relax,
   \c!height=\dimexpr\paperheight-\layouttargetparameter\c!distance\relax]

\definepapersize
  [doublesized]
  [ \c!width=\dimexpr \paperwidth \relax,
   \c!height=\dimexpr2\paperheight\relax]

\definepapersize
  [doubleoversized]
  [ \c!width=\dimexpr \paperheight+\layouttargetparameter\c!distance\relax,
   \c!height=\dimexpr2\paperwidth +\layouttargetparameter\c!distance\relax]

\definepapersize
  [doublewide]
  [ \c!width=\dimexpr2\paperwidth \relax,
   \c!height=\dimexpr \paperheight\relax]

% \setuppapersize
%   [A4][A4]

\setuppapersize
  [A4] % [samesized]

%D A few goodies:

\definelayout
  [\v!page]

\setuplayout
  [\v!page]
  [\c!backspace=\zeropoint,
   \c!cutspace=\zeropoint,
   \c!topspace=\zeropoint,
   \c!bottomspace=\zeropoint,
   \c!margin=\zeropoint,
   \c!edge=\zeropoint,
   \c!header=\zeropoint,
   \c!footer=\zeropoint,
   \c!top=\zeropoint,
   \c!bottom=\zeropoint,
   \c!leftmargin=\zeropoint,
   \c!rightmargin=\zeropoint,
   \c!leftedge=\zeropoint,
   \c!rightedge=\zeropoint,
   \c!textdistance=\zeropoint,
   \c!width=\v!middle,
   \c!height=\v!middle,
   \c!lines=0,
   \c!grid=\v!no]

\definelayout
  [\v!middle]
  [\c!width=\v!middle,
   \c!height=\v!middle]

\protect \endinput

[-- Attachment #5: Type: text/plain, Size: 485 bytes --]

___________________________________________________________________________________
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	other threads:[~2016-07-18 14:59 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-18 13:09 Procházka Lukáš Ing.
2016-07-18 13:27 ` Henri Menke
2016-07-18 14:04   ` Hans Hagen
2016-07-18 14:09   ` Pablo Rodriguez
2016-07-18 14:00 ` Wolfgang Schuster
2016-07-18 14:41   ` Procházka Lukáš Ing.
2016-07-18 14:59     ` Procházka Lukáš Ing. [this message]
2016-07-18 15:08       ` Wolfgang Schuster
2016-07-18 15:00     ` Procházka Lukáš Ing.
2016-07-18 15:12     ` Wolfgang Schuster
2016-07-20  6:44       ` Procházka Lukáš Ing.

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=op.yksw9zdj62epfj@lpr \
    --to=lpr@pontex.cz \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).