summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/page-lay.mkxl
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/page-lay.mkxl')
-rw-r--r--tex/context/base/mkiv/page-lay.mkxl1623
1 files changed, 0 insertions, 1623 deletions
diff --git a/tex/context/base/mkiv/page-lay.mkxl b/tex/context/base/mkiv/page-lay.mkxl
deleted file mode 100644
index 063268527..000000000
--- a/tex/context/base/mkiv/page-lay.mkxl
+++ /dev/null
@@ -1,1623 +0,0 @@
-%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 modules skip upward or
-%D left in order to place elements, you must realize that the reference point is the
-%D top left corner of the main typesetting area. One reason for this choice is that
-%D it suited some viewers that displayed page areas. Another reason is that margins,
-%D edges and top and bottom areas are kind of virtual, while the header, text and
-%D footer areas normally determine the text flow.
-
-\unprotect
-
-%D The dimensions related to layout areas are represented by 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 and rights ones.
-
-\newdimen\margindistance
-\newdimen\edgedistance
-\newdimen\marginwidth
-\newdimen\edgewidth
-
-%D Because a distance does not really makes sense when there is no area, we use a
-%D zero distance in case there is no area.
-
-%D The horizontal distances are:
-
-\newdimen\leftedgedistance
-\newdimen\rightedgedistance
-\newdimen\leftmargindistance
-\newdimen\rightmargindistance
-
-%D The vertical distances are:
-
-\newdimen\topdistance
-\newdimen\headerdistance
-\newdimen\textdistance
-\newdimen\footerdistance
-\newdimen\bottomdistance
-
-\newdimen\textovershoot % available in pagebuilder
-
-%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\naturaltextdistance
-\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{\directlayoutparameter\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 ?
- \glet\currentlayout\currentlayout % global
- \page_layouts_synchronize
- \page_layouts_check_next
- \or % \setuplayout (reverts to main layout)
- \letlayoutparameter\c!state\v!normal % global ? still needed ?
- \glet\currentlayout\empty % global
- \page_layouts_synchronize
- \page_layouts_check_next
- \fi
-\to \everysetuplayout
-
-\permanent\def\doifelselayoutdefined#1%
- {\ifcsname\namedlayouthash{#1}\c!state\endcsname % maybe a helper
- \expandafter\firstoftwoarguments
- \else
- \expandafter\secondoftwoarguments
- \fi}
-
-\aliased\let\doiflayoutdefinedelse\doifelselayoutdefined
-
-\permanent\def\layoutdistance#1#2{\ifdim\zeropoint<#1#2\else\zeropoint\fi}
-
-% \newconditional\reverselayout
-
-\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\naturaltextdistance \layoutparameter\c!textdistance
- \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\textdistance \naturaltextdistance
- \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
-
-\newtoks\extralayoutcalculations
-
-\def\page_layouts_calculate_extras
- {\the\extralayoutcalculations}
-
-\newtoks\everyswapmargins % watch the order !
-
-\appendtoks
- \enforced\swapcsvalues\leftmargindistance\rightmargindistance
- \enforced\swapcsvalues\leftedgedistance \rightedgedistance
- \enforced\swapcsvalues\leftmarginwidth \rightmarginwidth
- \enforced\swapcsvalues\leftedgewidth \rightedgewidth
- %
- \enforced\swapcsvalues\leftmargintotal \rightmargintotal
- \enforced\swapcsvalues\leftedgetotal \rightedgetotal
- \enforced\swapcsvalues\leftsidetotal \rightsidetotal
- \enforced\swapcsvalues\leftcombitotal \rightcombitotal
- \enforced\swapcsvalues\innermargintotal \outermargintotal
- \enforced\swapcsvalues\inneredgetotal \outeredgetotal
- \enforced\swapcsvalues\innercombitotal \outercombitotal
- \enforced\swapcsvalues\innersidetotal \outersidetotal
-\to \everyswapmargins
-
-%D The papersize macros have a long history and we don't want to change the commands
-%D so they keep looking a bit complex.
-
-%D \macros
-%D {definepapersize}
-%D
-%D Before we start calculating layout dimensions, we will first take care of paper
-%D sizes. The first argument can be either an assignment (for defaults) or an
-%D identifier, in 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 print, we can also
-%D 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}
-
-%D Normally we will not use this command directly but for now it works out okay. In
-%D 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]
-
-\permanent\tolerant\protected\def\definepapersize[#1]#*[#2]#*[#3]%
- {\edef\currentlayouttarget{#1}%
- \ifempty\currentlayouttarget
- % invalid target
- \orelse\ifhastok={#2}%
- \definelayouttarget[#1][#2]%
- \else
- \setevalue{\??layoutpaper#1}{#2}%
- \ifparameter#3\or
- \setevalue{\??layoutprint#1}{#3}%
- \else
- \setevalue{\??layoutprint#1}{#2}%
- \fi
- \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
-
-\permanent\tolerant\protected\def\setuppapersize[#1]#*[#2]%
- {\ifarguments
- \page_paper_restore
- \orelse\ifhastok={#1}%
- \page_paper_setup_size_settings[#1]%
- \orelse\ifhastok={#2}%
- \page_paper_setup_size_settings_by_name[#1][#2]%
- \else
- \page_paper_setup_size_change_size[#1][#2]%
- \fi}
-
-\protected\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
- {\ifempty\m_layouttarget_paper
- % forget about it
- \else
- \ifempty\m_layouttarget_print
- \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}
-
-\protected\def\page_paper_setup_size_settings_by_name[#1][#2]%
- {\def\currentlayouttarget{\page_paper_the_paper_size{#1}}%
- \setuplayouttarget[#2]}
-
-\protected\def\page_paper_setup_size_change_size[#1][#2]%
- {\doifelsenothing{#2}
- {\page_paper_set_current[#1][#1]}
- {\page_paper_set_current[#1][#2]}}
-
-\permanent\let\setuppaper\page_paper_setup_size_settings
-
-\permanent\protected\def\adaptpapersize
- {\glet\page_paper_reinstate\page_paper_restore
- \setuppapersize}
-
-\appendtoks
- \page_paper_reinstate
- \glet\page_paper_reinstate\relax
-\to \everyaftershipout
-
-\protected\def\page_paper_set_restore#1#2%
- {\xdef\page_paper_restore{\page_paper_set_current_indeed[#1][#2]}}
-
-\protected\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}]}}
-
-\protected\def\page_paper_reset_paper
- {\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}
-
-\protected\def\page_paper_reset_print
- {\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}
-
-\letvalue{\??layoutpaper\v!reset}\page_paper_reset_paper
-\letvalue{\??layoutprint\v!reset}\page_paper_reset_print
-
-\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!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}
-
-\protected\def\page_paper_identify_target#1%
- {\ifcsname\??layoutcurrent#1\endcsname
- \edef\currentlayouttarget{#1}%
- \fi}
-
-\newdimen\d_page_minimum_paper_size \d_page_minimum_paper_size\luaexpr{math.pi}\onebasepoint
-
-\protected\def\page_paper_set_current_indeed[#1][#2]%
- {\edef\m_page_asked_paper{#1}% can be the restores
- \edef\m_page_asked_print{#2}%
- %
- \page_paper_set_restore\m_page_asked_paper\m_page_asked_print
- %
- % locate page target
- \let\currentlayouttarget\empty
- \page_paper_reset_paper
- \processcommacommand[\m_page_asked_paper]\page_paper_identify_target
- \ifempty\currentlayouttarget
- \let\currentlayouttarget\currentpage
- \fi
- \glet\papersize\currentlayouttarget
- \page_paper_reset_paper
- \processcommacommand[\m_page_asked_paper]\page_paper_handle_page_option
- \global\paperwidth \layouttargetparameter\c!width \relax
- \global\paperheight\layouttargetparameter\c!height\relax
- \ifdim\paperwidth<\d_page_minimum_paper_size
- \global\paperwidth\d_page_minimum_paper_size
- \fi
- \ifdim\paperheight<\d_page_minimum_paper_size
- \global\paperheight\d_page_minimum_paper_size
- \fi
- \ifconditional\c_page_target_paper_landscape
- \enforced\global\swapcsvalues\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
- \page_paper_reset_print
- \processcommacommand[\m_page_asked_print]\page_paper_identify_target
- \glet\printpapersize\currentlayouttarget
- \page_paper_reset_print
- \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
- \enforced\global\swapcsvalues\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
- \enforced\swapcsvalues\paperwidth\paperheight
- \orelse\ifnum\c_page_target_paper_orientation=\leftrotationangle
- \enforced\swapcsvalues\paperwidth\paperheight
- \fi
- \ifnum\c_page_target_print_orientation=\rightrotationangle
- \enforced\swapcsvalues\printpaperwidth\printpaperheight
- \orelse\ifnum\c_page_target_print_orientation=\leftrotationangle
- \enforced\swapcsvalues\printpaperwidth\printpaperheight
- \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\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
- \ifzeropt\cutspace
- \global\cutspace\backspace
- \fi
- \global\makeupwidth\dimexpr\paperwidth-\backspace-\cutspace\relax
- \orelse\ifx\p_page_layouts_width\v!fit
- \ifzeropt\cutspace
- \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
- \ifzeropt\cutspace
- \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
- \scratchdimen\layoutparameter\c!bottomspace\relax
- %\ifzeropt\scratchdimen
- % \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
- \ifzeropt\bottomspace
- \global\bottomspace\topspace
- \fi
- \global\makeupheight\dimexpr\paperheight-\topspace-\bottomspace\relax
- \orelse\ifx\p_page_layouts_height\v!fit
- \ifzeropt\bottomspace
- \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
- \ifzeropt\bottomspace
- \global\bottomspace\dimexpr\paperheight-\makeupheight-\topspace\relax
- % \else
- % inconsistent specification
- \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_check_direction
- \page_layouts_calculate_extras
- \page_target_check_centering
- \calculatehsizes
- \calculatevsizes
- \page_layouts_check_pseudo_columns
- \page_backgrounds_recalculate}
-
-\def\page_layouts_check_direction
- {\edef\p_direction{\layoutparameter\c!direction}%
- \ifx\p_direction\v!reverse
- \enforced\global\swapcsvalues\naturalleftedgedistance \naturalrightedgedistance
- \enforced\global\swapcsvalues\naturalleftmargindistance\naturalrightmargindistance
- \enforced\global\swapcsvalues\leftedgedistance \rightedgedistance
- \enforced\global\swapcsvalues\leftmargindistance \rightmargindistance
- \enforced\global\swapcsvalues\leftmarginwidth \rightmarginwidth
- \enforced\global\swapcsvalues\leftedgewidth \rightedgewidth
- \enforced\global\swapcsvalues\backspace \cutspace
- \expandafter\setsystemmode
- \else
- \expandafter\resetsystemmode
- \fi{reverselayout}}
-
-\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
- \orelse\ifnum\plusone=\realpageno
- \v!first
- \else
- \__unknown__
- \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
- \glet\v_page_layouts_pre_check\currentlayout
- \glet\currentlayout\m_page_check
- \page_layouts_synchronize
- \orelse\ifx\m_page_state\v!repeat
- \glet\v_page_layouts_pre_check\relax
- \glet\currentlayout\m_page_check
- \page_layouts_synchronize
- \fi}
-
-\def\page_layouts_check_revert
- {\glet\currentlayout\v_page_layouts_pre_check
- \glet\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
- \orelse\ifcsname\namedlayouthash\v_real_page_reverse\c!state\endcsname
- \page_layouts_check_default_indeed\v_real_page_reverse
- \orelse\ifcsname\namedlayouthash\v_real_page_named\c!state\endcsname
- \page_layouts_check_default_indeed\v_real_page_named
- \orelse\ifcsname\namedlayouthash\v_real_page_current\c!state\endcsname
- \page_layouts_check_default_indeed\v_real_page_current
- \orelse\ifcsname\namedlayouthash\v_real_page_odd_or_even\c!state\endcsname
- \page_layouts_check_default_indeed\v_real_page_odd_or_even
- \orelse\ifx\v_page_layouts_pre_check\relax
- % okay
- \else
- \page_layouts_check_revert
- \fi}
-
-\permanent\protected\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}
-
-\protected\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
-
-\permanent\protected\def\installlayoutalternative#1#2%
- {\setgvalue{\??layoutalternative#1}{#2}}
-
-\def\page_boxes_construct_content_default#1#2#3% targetbox flusher box
- {\setbox#1\vpack % was \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
-\newdimen\d_page_adapts_delta
-
-\permanent\protected\tolerant\def\adaptlayout[#1]#*[#2]%
- {\ifparameter#2\or
- \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
- \glet\page_adepts_push\relax
- \glet\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
- \global\letcsname\??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
- \glet\page_adepts_push\page_adepts_push_indeed
- \glet\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
-
-\protected\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}
-
-\permanent\protected\def\startlayout[#1]%
- {\page
- \globalpushmacro\currentlayout
- \doifelselayoutdefined{#1}{\setuplayout[#1]}\donothing} % {\setuplayout[\currentlayout]}}
-
-\permanent\protected\def\stoplayout
- {\page
- \globalpopmacro\currentlayout
- \setuplayout[\currentlayout]}
-
-% NOG EENS NAGAAN WANNEER NU GLOBAL EN WANNEER NIET
-
-\ifx\doifelselayoutsomeline\undefined % eventually defined in page-txt
- \let\doifelselayoutsomeline\secondofthreearguments
-\fi
-
-\permanent\def\compensatevsizeheader {\advance\textheight-\dimexpr\headerheight+\headerdistance\relax}
-\permanent\def\compensatevsizefooter {\advance\textheight-\dimexpr\footerheight+\footerdistance\relax}
-\permanent\def\globalcompensatevsizeheader{\global\advance\textheight-\dimexpr\headerheight+\headerdistance\relax}
-\permanent\def\globalcompensatevsizefooter{\global\advance\textheight-\dimexpr\footerheight+\footerdistance\relax}
-
-\permanent\def\compensatevsizeheaderzero{\headerheight\zeropoint\page_layouts_set_distances}
-\permanent\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}
-
-\permanent\protected\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}
-
-\permanent\protected\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}
-
-\permanent\protected\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
-
-\permanent\def\compensatedinnermakeupmargin
- {\dimexpr\ifconditional\innermakeupcompensation+\innermakeupmargin\else\zeropoint\fi\relax}
-
-\permanent\protected\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}%
- \ifempty\m_currentlayout_text_width \else
- \textwidth\m_currentlayout_text_width % local
- \fi
- \global\innermakeupwidth\textwidth
- \ifempty\m_currentlayout_text_margin
- \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
-
-\permanent\protected\def\calculatehsizes % name will change
- {\freezetextwidth
- \page_otr_command_set_hsize}
-
-%D When we start at an even page, we need to swap the layout differently. We cannot
-%D adapt the real page number, since it is used in cross referencing. The next
-%D switch is set when we start at an even page.
-
-% #single #left #right
-
-\permanent\def\doifelseoddpage
- {\ifodd\pagenoshift
- \expandafter\page_layouts_if_odd_else_yes
- \else
- \expandafter\page_layouts_if_odd_else_nop
- \fi}
-
-\aliased\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
-
-\permanent\protected\def\settexthoffset % name will change
- {\texthoffset\doifbothsides\backspace\backspace{\dimexpr\paperwidth-\backspace-\makeupwidth\relax}}
-
-\permanent\protected\def\goleftonpage % name will change (we could cache)
- {\hkern-\dimexpr\leftmargindistance+\leftmarginwidth+\leftedgedistance+\leftedgewidth\relax}
-
-\permanent\def\doifelsemarginswap#1#2% protected?
- {\doifbothsides{#1}{#1}{#2}}
-
-\aliased\let\doifmarginswapelse\doifelsemarginswap
-
-\def\swapmargins % name will change, frozen?
- {\doifelsemarginswap\relax\doswapmargins}
-
-\def\doswapmargins % name will change, frozen?
- {\let\swapmargins \relax % to prevent local swapping
- \let\doswapmargins\relax % to prevent local swapping
- \the\everyswapmargins}
-
-\permanent\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}
-
-% swapping needs frozen
-
-\permanent\def\outermarginwidth {\rightorleftpageaction\rightmarginwidth \leftmarginwidth }
-\permanent\def\innermarginwidth {\rightorleftpageaction\leftmarginwidth \rightmarginwidth}
-\permanent\def\outermargindistance{\rightorleftpageaction\rightmargindistance\leftmargindistance }
-\permanent\def\innermargindistance{\rightorleftpageaction\leftmargindistance \rightmargindistance}
-
-\permanent\def\outeredgewidth {\rightorleftpageaction\rightedgewidth \leftedgewidth }
-\permanent\def\inneredgewidth {\rightorleftpageaction\leftedgewidth \rightedgewidth}
-\permanent\def\outeredgedistance {\rightorleftpageaction\rightedgedistance\leftedgedistance }
-\permanent\def\inneredgedistance {\rightorleftpageaction\leftedgedistance \rightedgedistance}
-
-\permanent\def\outerspacewidth {\rightorleftpageaction\cutspace \backspace}
-\permanent\def\innerspacewidth {\rightorleftpageaction\backspace\cutspace }
-
-\permanent\def\leftmargintotal {\dimexpr\leftmarginwidth +\leftmargindistance \relax}
-\permanent\def\rightmargintotal {\dimexpr\rightmarginwidth+\rightmargindistance\relax}
-\permanent\def\leftedgetotal {\dimexpr\leftedgewidth +\leftedgedistance \relax}
-\permanent\def\rightedgetotal {\dimexpr\rightedgewidth +\rightedgedistance \relax}
-
-\permanent\def\leftsidetotal {\dimexpr\leftmarginwidth +\leftedgetotal \relax}
-\permanent\def\rightsidetotal {\dimexpr\rightmarginwidth+\rightedgetotal\relax}
-\permanent\def\leftcombitotal {\dimexpr\leftmargintotal +\leftedgetotal \relax}
-\permanent\def\rightcombitotal {\dimexpr\rightmargintotal+\rightedgetotal\relax}
-
-\permanent\def\innermargintotal {\dimexpr\innermarginwidth+\innermargindistance\relax}
-\permanent\def\outermargintotal {\dimexpr\outermarginwidth+\outermargindistance\relax}
-\permanent\def\inneredgetotal {\dimexpr\inneredgewidth +\inneredgedistance \relax}
-\permanent\def\outeredgetotal {\dimexpr\outeredgewidth +\outeredgedistance \relax}
-
-\permanent\def\innercombitotal {\dimexpr\innermargintotal+\inneredgetotal\relax}
-\permanent\def\outercombitotal {\dimexpr\outermargintotal+\outeredgetotal\relax}
-\permanent\def\innersidetotal {\dimexpr\innermarginwidth+\inneredgetotal\relax}
-\permanent\def\outersidetotal {\dimexpr\outermarginwidth+\outeredgetotal\relax}
-
-%D \macros
-%D {startlocallayout}
-%D
-%D These macros should be used with care. They permit local layouts (as used in
-%D fitting pages, see \type {page-app.tex}). This is kind of obsolete now that we
-%D have \type {\definelayout}, so this hack will disappear in future versions.
-
-\permanent\protected\def\startlocallayout
- {\globalpushmacro\page_paper_restore
- \globalpushmacro\currentlayout}
-
-\permanent\protected\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}
-%D %showsetup{showgrid}
-%D %showsetup{showusage}
-
-\fetchruntimecommand \showprint \f!page_run
-\fetchruntimecommand \showframe \f!page_run
-\fetchruntimecommand \showlayout \f!page_run
-\fetchruntimecommand \showsetups \f!page_run
-\fetchruntimecommand \showmargins \f!page_run
-\fetchruntimecommand \showgrid \f!page_run
-
-\glet\page_grids_add_to_box\gobbleoneargument
-\glet\page_grids_add_to_one\gobbleoneargument
-\glet\page_grids_add_to_mix\gobbleoneargument
-
-%D The default dimensions are quite old and will not change. The funny fractions
-%D were introduced when we went from fixed dimensions to relative ones. Since
-%D \CONTEXT\ is a dutch package, the dimensions are based on the metric system. The
-%D asymmetrical layout is kind of handy for short quick||and||dirty stapled
-%D documents.
-%D
-%D Although valid, it is not a real good idea to use dimensions based on the \type
-%D {em} unit. First of all, since there are no fonts loaded yet, this dimension
-%D makes no sense, and second, you would loose track of values, since they could
-%D change while going to a new page, 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!direction=\v!normal,
- \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, of which the A-series makes
-%D 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 were corrected top the
-%D latest DIN specifications. Peter Rolf came up with these and a few more missing
-%D sizes. 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 a bunch of sizes with
-%D $4:3$ ratios. The \type {S6} size is nearly as wide as a sheet of \type {A4}
-%D 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 \CDROM\ covers, but it
-%D does not hurt to have the paper size ready.
-
-\definepapersize [CD] [\c!width=120mm,\c!height=120mm]
-
-%D The next series is for our English speaking friends who decided to stick to non
-%D metric values. Thanks to Nelson 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 paper size with the
-%D typeset paper size. This setting should come after the first layout specification
-%D (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 \paperwidth +\layouttargetparameter\c!distance\relax,
- \c!height=\dimexpr2\paperheight+\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, first a full page layout:
-
-\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]
-
-%D A quick and dirty one:
-
-\definelayout
- [\v!middle]
- [\c!width=\v!middle,
- \c!height=\v!middle]
-
-%D One for testing examples (5mm is often the non printable area):
-
-\definelayout
- [\v!tight]
-
-\definelayout
- [\v!tight]
- [\v!page]
- [\c!backspace=5mm,
- \c!cutspace=5mm,
- \c!topspace=5mm,
- \c!bottomspace=5mm]
-
-\protect \endinput