summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/page-txt.mklx
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/page-txt.mklx')
-rw-r--r--tex/context/base/mkiv/page-txt.mklx950
1 files changed, 0 insertions, 950 deletions
diff --git a/tex/context/base/mkiv/page-txt.mklx b/tex/context/base/mkiv/page-txt.mklx
deleted file mode 100644
index 9058f893d..000000000
--- a/tex/context/base/mkiv/page-txt.mklx
+++ /dev/null
@@ -1,950 +0,0 @@
-% macros=mkvi
-
-%D \module
-%D [ file=page-txt, % copied from main-001,
-%D version=1997.03.31,
-%D title=\CONTEXT\ Page Macros,
-%D subtitle=Texts,
-%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 / Texts}
-
-\unprotect
-
-\newtoks\toptextcontent \newtoks\leftedgetextcontent
-\newtoks\headertextcontent \newtoks\leftmargintextcontent
-\newtoks\footertextcontent \newtoks\rightmargintextcontent
-\newtoks\bottomtextcontent \newtoks\rightedgetextcontent
-
-\newtoks\texttextcontent
-
-%D \macros
-%D {setuptop, setupheader, setuptext,setupfooter, setupbottom}
-%D
-%D The macros in this module sometimes look a bit more complicated than needed,
-%D which is a direct result of the fact that their ancestors are quite old and
-%D upward compatibility is a must.
-%D
-%D \showsetup{setuptop}
-%D \showsetup{setupheader}
-%D \showsetup{setuptext}
-%D \showsetup{setupfooter}
-%D \showsetup{setupbottom}
-
-\installcorenamespace{layouttexts}
-\installcorenamespace{layouttextsline}
-\installcorenamespace{layouttextsreset}
-\installcorenamespace{layouttextssynchronize}
-\installcorenamespace{layouttextstrut}
-\installcorenamespace{layouttextspecial}
-\installcorenamespace{layouttextcontent}
-
-\installcommandhandler \??layouttexts {layoutelement} \??layouttexts
-
-% \appendtoks
-% \resetlayoutelementparameter\c!lefttext % resolves better
-% \resetlayoutelementparameter\c!middletext
-% \resetlayoutelementparameter\c!righttext
-% \to \everydefinelayoutelement
-
-\definelayoutelement[\v!top ]
-\definelayoutelement[\v!header]
-\definelayoutelement[\v!text ]
-\definelayoutelement[\v!footer]
-\definelayoutelement[\v!bottom]
-
-\definelayoutelement[\v!top :\v!text] [\v!top ][\c!lefttext=,\c!middletext=,\c!righttext=]
-\definelayoutelement[\v!header:\v!text] [\v!header][\c!lefttext=,\c!middletext=,\c!righttext=]
-\definelayoutelement[\v!text :\v!text] [\v!text ][\c!lefttext=,\c!middletext=,\c!righttext=]
-\definelayoutelement[\v!footer:\v!text] [\v!footer][\c!lefttext=,\c!middletext=,\c!righttext=]
-\definelayoutelement[\v!bottom:\v!text] [\v!bottom][\c!lefttext=,\c!middletext=,\c!righttext=]
-
-\definelayoutelement[\v!top :\v!margin][\v!top ][\c!lefttext=,\c!middletext=,\c!righttext=]
-\definelayoutelement[\v!header:\v!margin][\v!header][\c!lefttext=,\c!middletext=,\c!righttext=]
-\definelayoutelement[\v!text :\v!margin][\v!text ][\c!lefttext=,\c!middletext=,\c!righttext=]
-\definelayoutelement[\v!footer:\v!margin][\v!footer][\c!lefttext=,\c!middletext=,\c!righttext=]
-\definelayoutelement[\v!bottom:\v!margin][\v!bottom][\c!lefttext=,\c!middletext=,\c!righttext=]
-
-\definelayoutelement[\v!top :\v!edge] [\v!top ][\c!lefttext=,\c!middletext=,\c!righttext=]
-\definelayoutelement[\v!header:\v!edge] [\v!header][\c!lefttext=,\c!middletext=,\c!righttext=]
-\definelayoutelement[\v!text :\v!edge] [\v!text ][\c!lefttext=,\c!middletext=,\c!righttext=]
-\definelayoutelement[\v!footer:\v!edge] [\v!footer][\c!lefttext=,\c!middletext=,\c!righttext=]
-\definelayoutelement[\v!bottom:\v!edge] [\v!bottom][\c!lefttext=,\c!middletext=,\c!righttext=]
-
-\permanent\tolerant\protected\def\setuplayouttext[#vertical]#spacer[#horizontal]#spacer[#settings]%
- {\ifnum\lastarguments>\plustwo
- \setuplayoutelement[#vertical:#horizontal][#settings]%
- \else
- \setuplayoutelement[#vertical][#horizontal]%
- \fi}
-
-\appendtoks
- \ifempty\currentlayoutelement\else
- \page_layouts_synchronize_element\currentlayoutelement % brr, can be vertical:horizontal
- \fi
-\to \everysetuplayoutelement
-
-\def\page_layouts_reset_element_status#vertical%
- {\global\defcsname\??layouttextsreset#vertical\endcsname{\page_layouts_set_element_status_normal#vertical}}
-
-\def\page_layouts_set_element_status_normal#vertical%
- {\global\letcsname\namedlayoutelementhash#vertical\c!state\endcsname\v!normal
- \global\letcsname\??layouttextsreset#vertical\endcsname\relax
- \page_layouts_synchronize_element{#vertical}}
-
-\def\page_layouts_synchronize_element#vertical%
- {\xdef\previoustextstate{\csname\??layouttextssynchronize#vertical\endcsname}% can be a let
- \edef\currenttextstate {\namedlayoutelementparameter{#vertical}\c!state}%
- %\writestatus{>>}{[#vertical:\currenttextstate/\previoustextstate]}%
- \ifx\currenttextstate\previoustextstate \else
- \page_layouts_synchronize_element_indeed{#vertical}%
- \fi}
-
-\def\page_layouts_synchronize_element_indeed#vertical%
- {\ifx\currenttextstate \v!high \calculatevsizes\page_backgrounds_recalculate \orelse
- \ifx\previoustextstate\v!high \calculatevsizes\page_backgrounds_recalculate \orelse
- \ifx\currenttextstate \v!none \calculatevsizes\page_backgrounds_recalculate \orelse
- \ifx\previoustextstate\v!none \calculatevsizes\page_backgrounds_recalculate \fi
- \letgvalue{\??layouttextssynchronize#vertical}\currenttextstate}
-
-\permanent\protected\def\setuptop {\setuplayouttext[\v!top ]}
-\permanent\protected\def\setupheader{\setuplayouttext[\v!header]}
-\permanent\protected\def\setuptext {\setuplayouttext[\v!text ]}
-\permanent\protected\def\setupfooter{\setuplayouttext[\v!footer]}
-\permanent\protected\def\setupbottom{\setuplayouttext[\v!bottom]}
-
-%D We inherit some settings:
-
-\setuplayoutelement
- [ \c!leftstyle=\layoutelementparameter\c!style,
- \c!middlestyle=\layoutelementparameter\c!style,
- \c!rightstyle=\layoutelementparameter\c!style,
- \c!leftcolor=\layoutelementparameter\c!color,
- \c!middlecolor=\layoutelementparameter\c!color,
- \c!rightcolor=\layoutelementparameter\c!color,
- \c!leftwidth=\layoutelementparameter\c!width,
- \c!middlewidth=\layoutelementparameter\c!width,
- \c!rightwidth=\layoutelementparameter\c!width]
-
-%D \macros
-%D {noheaderandfooterlines,notopandbottomlines}
-%D
-%D Although not really needed, the following shortcuts sometimes come in handy.
-%D
-%D \showsetup{noheaderandfooterlines}
-%D \showsetup{notopandbottomlines}
-
-\permanent\protected\def\noheaderandfooterlines
- {\setuplayoutelement[\v!header][\c!state=\v!empty]%
- \setuplayoutelement[\v!footer][\c!state=\v!empty]}
-
-\permanent\protected\def\notopandbottomlines
- {\setuplayoutelement[\v!top ][\c!state=\v!empty]%
- \setuplayoutelement[\v!bottom][\c!state=\v!empty]}
-
-%D \macros
-%D {setuptoptexts,setupheadertexts,setuptexttexts,setupfootertexts,setupbottomtexts}
-%D
-%D The next macros take one or more arguments. The exact setup depends on the number
-%D of arguments. Although not that intuitive, the current scheme evolved out of the
-%D original. When margin and edge texts as well as middle texts showed up, the
-%D current odd|/|even scheme surfaced.
-%D
-%D \showsetup{setuptoptexts}
-%D \showsetup{setupheadertexts}
-%D \showsetup{setuptexttexts}
-%D \showsetup{setupfootertexts}
-%D \showsetup{setupbottomtexts}
-%D
-%D Only the following have checking for pagenumber, date and mark built in, so when
-%D someone uses the key|/|value interface these things have to be set explicitly as
-%D part of the text.
-
-\permanent\protected\def\setuptoptexts {\setuptexts[\v!top ]}
-\permanent\protected\def\setupheadertexts{\setuptexts[\v!header]}
-\permanent\protected\def\setuptexttexts {\setuptexts[\v!text ]}
-\permanent\protected\def\setupfootertexts{\setuptexts[\v!footer]}
-\permanent\protected\def\setupbottomtexts{\setuptexts[\v!bottom]}
-
-\permanent\tolerant\protected\def\setuptexts[#vertical]#spacer[#horizontal]#spacer[#a]#spacer[#b]#spacer[#c]#spacer[#d]%
- {\ifarguments
- % there is always one
- \or
- \edef\currentlayoutelement{#vertical:\v!text}%
- \resetlayoutelementparameter\c!lefttext
- \resetlayoutelementparameter\c!righttext
- \resetlayoutelementparameter\c!middletext
- \edef\currentlayoutelement{#vertical:\v!margin}%
- \resetlayoutelementparameter\c!lefttext
- \resetlayoutelementparameter\c!righttext
- \resetlayoutelementparameter\c!middletext
- \edef\currentlayoutelement{#vertical:\v!edge}%
- \resetlayoutelementparameter\c!lefttext
- \resetlayoutelementparameter\c!righttext
- \resetlayoutelementparameter\c!middletext
- \or
- \edef\currentlayoutelement{#vertical:\v!text}%
- \resetlayoutelementparameter\c!lefttext
- \resetlayoutelementparameter\c!righttext
- \setlayoutelementparameter \c!middletext{\page_layouts_process_element_single{#horizontal}}%
- \or
- \edef\currentlayoutelement{#vertical:\v!text}%
- \setlayoutelementparameter\c!lefttext {\page_layouts_process_element_single{#horizontal}}%
- \setlayoutelementparameter\c!righttext{\page_layouts_process_element_single{#a}}%
- \or
- \edef\currentlayoutelement{#vertical:#horizontal}%
- \setlayoutelementparameter\c!lefttext {\page_layouts_process_element_single{#a}}%
- \setlayoutelementparameter\c!righttext{\page_layouts_process_element_single{#b}}%
- \or
- \edef\currentlayoutelement{#vertical:\v!text}%
- \setlayoutelementparameter\c!lefttext {\page_layouts_process_element_double{#horizontal}{#c}}%
- \setlayoutelementparameter\c!righttext{\page_layouts_process_element_double{#a}{#b}}%
- \or
- \edef\currentlayoutelement{#vertical:#horizontal}%
- \setlayoutelementparameter\c!lefttext {\page_layouts_process_element_double{#a}{#d}}%
- \setlayoutelementparameter\c!righttext{\page_layouts_process_element_double{#b}{#c}}%
- \fi}
-
-%D Left and right texts are swapped on odd and even pages, but only when double
-%D sided typesetting is enabled.
-
-\setvalue{\??layouttextstrut\v!yes}{\setstrut\strut} % maybe more variants
-
-\let\m_page_layouts_element_content\empty
-
-\protected\def\page_layouts_process_element_single#content%
- {\edef\m_page_layouts_element_content{\detokenize{#content}}% so no \v!xxx
- \ifcsname\??layouttextspecial\m_page_layouts_element_content\endcsname
- \lastnamedcs
- \else
- \doifelsemarking\m_page_layouts_element_content
- {\getmarking[\m_page_layouts_element_content][\v!first]}%
- {#content}%
- \fi}
-
-\protected\def\page_layouts_process_element_double#first#second%
- {\doifelseoddpage
- {\page_layouts_process_element_single{#first}}
- {\page_layouts_process_element_single{#second}}}
-
-\protected\def\page_layouts_process_element_indeed#style#color#width%
- {\begingroup
- \uselayoutelementstyleandcolor#style#color%
- \begincsname\??layouttextstrut\layoutelementparameter\c!strut\endcsname
- \ignorecrlf
- \edef\currentlayoutelementwidth{\layoutelementparameter#width}%
- \ifempty\currentlayoutelementwidth\else
- \expandafter\page_layouts_process_element_limited
- \fi\p_text
- \endgroup}
-
-\def\page_layouts_process_element_limited#content% are the {}{}{} still needed?
- {\limitated
- left \currentlayoutelementwidth
- text {#content}
- sentinel {\unknown}
- \relax}
-
-\setvalue{\??layouttextspecial\v!pagenumber}{\page_layouts_place_page_number}
-\setvalue{\??layouttextspecial\v!date }{\currentdate}
-
-%D When specified, the texts are automatically limited in length.
-
-\appendtoks \page_layouts_place_text_line\v!top \topheight \to \toptextcontent
-\appendtoks \page_layouts_place_text_line\v!header\headerheight \to \headertextcontent
-\appendtoks \page_layouts_place_text_line\v!text \textheight \to \texttextcontent
-\appendtoks \page_layouts_place_text_line\v!footer\footerheight \to \footertextcontent
-\appendtoks \page_layouts_place_text_line\v!bottom\bottomheight \to \bottomtextcontent
-
-%D Texts can be disabled, moved up and ignored, depending in the \type {status}
-%D variable. This is handled by the next couple of macros.
-
-\newcount\c_page_layouts_element_state_n
-
-\def\page_layouts_set_element_status#vertical%
- {\c_page_layouts_element_state_n=0\namedlayoutelementparameter#vertical\c!n\relax
- \ifcase\c_page_layouts_element_state_n
- \edef\textlinestatus{\namedlayoutelementparameter#vertical\c!state}%
- \else
- \setxvalue{\namedlayoutelementhash#vertical\c!n}{\the\numexpr\c_page_layouts_element_state_n+\minusone}%
- \let\textlinestatus\v!stop
- \fi}
-
-\appendtoks
- \doifinset\v!header\floatspecification{\setxvalue{\namedlayoutelementhash\v!header\c!n}{1}}%
- \doifinset\v!footer\floatspecification{\setxvalue{\namedlayoutelementhash\v!footer\c!n}{1}}%
-\to \everybeforeflushedpagefloat
-
-\protected\def\page_layouts_place_text_line#vertical%
- {\page_layouts_set_element_status#vertical\relax
- \ifcsname\??layouttextsline\textlinestatus\endcsname
- \expandafter\lastnamedcs
- \else
- \expandafter\page_layouts_place_text_line_unknown
- \fi#vertical}
-
-\permanent\protected\def\doifelselayouttextline#vertical% shown or not
- {\edef\currentlayoutelementstate{\namedlayoutelementparameter{#vertical}\c!state}%
- \ifx\currentlayoutelementstate\v!normal
- \expandafter\firstoftwoarguments
- \orelse\ifx\currentlayoutelementstate\v!start
- \expandafter\firstoftwoarguments
- \else
- \expandafter\secondoftwoarguments
- \fi}
-
-\permanent\protected\def\doifelselayoutsomeline#vertical% present or not
- {\edef\currentlayoutelementstate{\namedlayoutelementparameter{#vertical}\c!state}%
- \ifx\currentlayoutelementstate\v!none
- \expandafter\secondoftwoarguments
- \orelse\ifx\currentlayoutelementstate\v!high
- \expandafter\secondoftwoarguments
- \else
- \expandafter\firstoftwoarguments
- \fi}
-
-\let\doiflayouttextlineelse\doifelselayouttextline
-\let\doiflayoutsomelineelse\doifelselayoutsomeline
-
-\newconditional\resyncaftertextline
-
-\setvalue{\??layouttextsline\v!normal}{\page_layouts_place_text_line_indeed}
-\setvalue{\??layouttextsline\empty }{\page_layouts_place_text_line_indeed}
-
-\letvalue{\??layouttextsline\v!none}\gobbletwoarguments
-\letvalue{\??layouttextsline\v!stop}\gobbletwoarguments
-
-\setvalue{\??layouttextsline\v!high}#vertical#height%
- {\global\settrue\resyncaftertextline
- \page_layouts_reset_element_status#vertical}
-
-\setvalue{\??layouttextsline\v!empty}#vertical#height%
- {\page_layouts_reset_element_status#vertical}
-
-\setvalue{\??layouttextsline\v!start}#vertical#height%
- {\page_layouts_reset_element_status#vertical%
- \page_layouts_place_text_line_indeed#vertical#height}
-
-\setvalue{\??layouttextsline\v!nomarking}#vertical#height%
- {\bgroup
- \page_layouts_reset_element_status#vertical%
- \settrue\inhibitgetmarking
- \page_layouts_place_text_line_indeed#vertical#height%
- \egroup}
-
-% \setupheadertexts [11]
-% \definetext [title] [header] [aa]
-% \setupheadertexts [11] [22]
-% \definetext [title] [header] [aa] [bb]
-% \setupheadertexts [text] [11] [22]
-% \definetext [title] [header] [text] [aa] [bb]
-% \setupheadertexts [11] [22] [33] [44]
-% \definetext [title] [header] [aa] [bb] [cc] [dd]
-% \setupheadertexts [text] [11] [22] [33] [44]
-% \definetext [title] [header] [text] [aa] [bb] [cc] [dd]
-
-\def\page_layouts_place_text_line_unknown#vertical#height%
- {\global\settrue\resyncaftertextline
- \begingroup % new
- \page_layouts_reset_element_status#vertical%
- \begincsname\namedlayoutelementhash{#vertical}\textlinestatus\endcsname
- \begincsname\namedlayoutelementhash{#vertical:\v!text}\textlinestatus\endcsname
- \begincsname\namedlayoutelementhash{#vertical:\v!margin}\textlinestatus\endcsname
- \begincsname\namedlayoutelementhash{#vertical:\v!edge}\textlinestatus\endcsname
- \page_layouts_place_text_line_indeed#vertical#height%
- \endgroup}
-
-\letvalue{\??layouttextsline\s!unknown}\page_layouts_place_text_line_unknown
-
-%D The following macro has to be called after a page is flushed.
-
-\permanent\protected\def\resetlayouttextlines % public
- {\begincsname\??layouttextsreset\v!top \endcsname
- \begincsname\??layouttextsreset\v!header\endcsname
- \begincsname\??layouttextsreset\v!text \endcsname
- \begincsname\??layouttextsreset\v!footer\endcsname
- \begincsname\??layouttextsreset\v!bottom\endcsname
- \ifconditional\resyncaftertextline
- \calculateglobalvsizes
- \page_backgrounds_recalculate
- \global\setfalse\resyncaftertextline
- \fi}
-
-\permanent\def\getspecificlayouttext#vertical#horizontal#what%
- {\begincsname\namedlayoutelementhash{#vertical:#horizontal}#what\endcsname}
-
-% \settext[header][text][middle][xxx][yyy]
-
-\permanent\tolerant\protected\def\settextcontent[#vertical]#spacer[#horizontal]#spacer[#one]#spacer[#two]#spacer[#three]% header text middle text/text
- {\ifarguments\or\or\or % 3
- \setvalue{\namedlayoutelementhash{#vertical:#horizontal}\c!middletext}%
- {\page_layouts_process_element_double{#one}{#one}}%
- \or % 4
- \setvalue{\namedlayoutelementhash{#vertical:#horizontal}\begincsname\??layouttextcontent\v!text:#one\endcsname\c!middletext}%
- {\page_layouts_process_element_double{#two}{#two}}%
- \or % 5
- \setvalue{\namedlayoutelementhash{#vertical:#horizontal}\begincsname\??layouttextcontent\v!text:#one\endcsname\c!middletext}%
- {\page_layouts_process_element_double{#two}{#three}}%
- \fi}
-
-\let\currentlayoutelement\relax
-
-%D This will be redefined, so no \type {\frozen} here!
-
-\permanent\tolerant\protected\def\resettextcontent[#vertical]#spacer[#horizontal]#spacer[#tag]% header text middle
- {\ifarguments\or\or % 2
- \edef\currentlayoutelement{#vertical:#horizontal}%
- \resetlayoutelementparameter\c!lefttext
- \resetlayoutelementparameter\c!middletext
- \resetlayoutelementparameter\c!righttext
- \or % 3
- \edef\currentlayoutelement{#vertical:#horizontal}%
- \letvalueempty{\layoutelementhash\begincsname\??layouttextcontent\v!text:#tag\endcsname\c!middletext}%
- \fi}
-
-\letvalue{\??layouttextcontent\v!text:\c!middle}\c!middletext
-\letvalue{\??layouttextcontent\v!text:\c!left }\c!lefttext
-\letvalue{\??layouttextcontent\v!text:\c!right }\c!righttext
-
-%D The placement of a whole line is handled by the next two macros. These are hooked
-%D into the general purpose token list registers mentioned before.
-
-\let\currentlayouttextline\relax
-
-\def\page_layouts_place_text_line_indeed#vertical#height%
- {\let\currentlayouttextline#vertical%
- \ifdim#height>\zeropoint\relax % prevents pagenumbers when zero height
- \page_layouts_place_text_line_left_or_right{#height}%
- \fi}
-
-\def\page_layouts_place_text_line_left_or_right#height%
- {\goleftonpage
- \setbox\b_page_layouts_element\vbox to #height
- {\vsize#height\relax
- %\hsize\zeropoint % hack so that e.g. after=\hairline gives predictable results
- \hsize\totaltextwidth
- \normalbaselines
- \enforced\let\\\ignoredlinebreak
- \enforced\let\crlf\ignoredlinebreak
- \namedlayoutelementparameter\currentlayouttextline\c!before
- \doifbothsidesoverruled
- \page_layouts_place_text_line_right
- \page_layouts_place_text_line_right
- \page_layouts_place_text_line_left
- \namedlayoutelementparameter\currentlayouttextline\c!after
- \vkern\zeropoint}% keep the \dp, beware of \vtops, never change this!
- \dp\b_page_layouts_element\zeropoint
- \box\b_page_layouts_element
- \vkern-#height\relax}
-
-\let\page_layouts_place_extra_text_left \empty % historic
-\let\page_layouts_place_extra_text_right\empty % historic
-
-\def\page_layouts_place_text_line_right
- {\hpack
- {\ifdim\leftedgewidth>\zeropoint
- \page_layouts_left_edge_element\c!lefttext\c!leftstyle\c!leftcolor\c!leftwidth
- \fi
- \ifdim\leftmarginwidth>\zeropoint
- \page_layouts_left_margin_element\c!lefttext\c!leftstyle\c!leftcolor\c!leftwidth\zerocount
- \fi
- \ifdim\makeupwidth>\zeropoint
- \page_layouts_text_body_element_l_m_r_e
- \fi
- \ifdim\rightmarginwidth>\zeropoint
- \page_layouts_right_margin_element\c!righttext\c!rightstyle\c!rightcolor\c!rightwidth\plusone
- \fi
- \ifdim\rightedgewidth>\zeropoint
- \page_layouts_right_edge_element\c!righttext\c!rightstyle\c!rightcolor\c!rightwidth
- \fi}}
-
-\def\page_layouts_place_text_line_left
- {\hpack
- {\ifdim\leftedgewidth>\zeropoint
- \page_layouts_left_edge_element\c!righttext\c!rightstyle\c!rightcolor\c!rightwidth
- \fi
- \ifdim\leftmarginwidth>\zeropoint
- \page_layouts_left_margin_element\c!righttext\c!rightstyle\c!rightcolor\c!rightwidth\zerocount
- \fi
- \ifdim\makeupwidth>\zeropoint
- \page_layouts_text_body_element_e_r_m_l
- \fi
- \ifdim\rightmarginwidth>\zeropoint
- \page_layouts_right_margin_element\c!lefttext\c!leftstyle\c!leftcolor\c!leftwidth\plusone
- \fi
- \ifdim\rightedgewidth>\zeropoint
- \page_layouts_right_edge_element\c!lefttext\c!leftstyle\c!leftcolor\c!leftwidth
- \fi}}
-
-\def\page_layouts_left_edge_element_indeed#text#style#color#width%
- {\letfromlayoutelementparameter\p_text#text%
- \ifempty\p_text
- \kern\leftedgewidth
- \else
- \hbox to \leftedgewidth\bgroup
- \hss
- \page_layouts_process_element_indeed#style#color#width%
- \egroup
- \fi}
-
-\def\page_layouts_left_edge_element#text#style#color#width%
- {\edef\currentlayoutelement{\currentlayouttextline:\v!edge}%
- \page_layouts_place_element_indeed\leftedgewidth
- {\page_layouts_left_edge_element_indeed#text#style#color#width}%
- \kern\leftedgedistance}
-
-\def\page_layouts_right_edge_element_indeed#text#style#color#width%
- {\letfromlayoutelementparameter\p_text#text%
- \ifempty\p_text
- \kern\rightedgewidth
- \else
- \hbox to \rightedgewidth\bgroup
- \page_layouts_process_element_indeed#style#color#width%
- \hss
- \egroup
- \fi}
-
-\def\page_layouts_right_edge_element#text#style#color#width%
- {\edef\currentlayoutelement{\currentlayouttextline:\v!edge}%
- \kern\rightedgedistance
- \page_layouts_place_element_indeed\rightedgewidth
- {\page_layouts_right_edge_element_indeed#text#style#color#width}}
-
-% margin needs checking!
-
-\def\page_layouts_left_margin_element_indeed#text#style#color#width#margintoo%
- {\letfromlayoutelementparameter\p_text#text%
- \ifempty\p_text
- \kern\leftmarginwidth
- \else
- \hbox to \leftmarginwidth\bgroup
- \hss
- \page_layouts_process_element_indeed#style#color#width%
- \egroup
- \fi
- \ifcase#margintoo\or
- \letfromlayoutelementparameter\p_text\c!margintext
- \ifempty\p_text\else
- \kern-\leftmarginwidth
- \hbox to \leftmarginwidth\bgroup
- \hss
- \p_text % styling ?
- \egroup
- \fi
- \fi}
-
-\def\page_layouts_left_margin_element#text#style#color#width#margintoo%
- {\edef\currentlayoutelement{\currentlayouttextline:\v!margin}%
- \page_layouts_place_element_indeed\leftmarginwidth
- {\page_layouts_left_margin_element_indeed#text#style#color#width#margintoo}%
- \kern\leftmargindistance}
-
-\def\page_layouts_right_margin_element_indeed#text#style#color#width#margintoo%
- {\letfromlayoutelementparameter\p_text#text%
- \ifempty\p_text
- \kern\rightmarginwidth
- \else
- \hbox to \rightmarginwidth\bgroup
- \page_layouts_process_element_indeed#style#color#width%
- \hss
- \egroup
- \fi
- \ifcase#margintoo\or
- \letfromlayoutelementparameter\p_text\c!margintext
- \ifempty\p_text\else
- \kern-\rightmarginwidth
- \hbox to \rightmarginwidth\bgroup
- \p_text % ? styling
- \hss
- \egroup
- \fi
- \fi}
-
-\def\page_layouts_right_margin_element#text#style#color#width#margintoo%
- {\edef\currentlayoutelement{\currentlayouttextline:\v!margin}%
- \kern\rightmargindistance
- \page_layouts_place_element_indeed\rightmarginwidth
- {\page_layouts_right_margin_element_indeed#text#style#color#width#margintoo}}
-
-\def\page_layouts_text_body_element_indeed_l_m_r_e
- {\letfromlayoutelementparameter\p_text\c!lefttext
- \ifempty\p_text
- \ifempty\page_layouts_place_extra_text_left\else
- \hbox to \makeupwidth\bgroup
- \page_layouts_place_extra_text_left
- \hss
- \egroup
- \kern-\makeupwidth
- \fi
- \else
- \hbox to \makeupwidth\bgroup
- \page_layouts_place_extra_text_left
- \page_layouts_process_element_indeed\c!leftstyle\c!leftcolor\c!leftwidth
- \hss
- \egroup
- \kern-\makeupwidth
- \fi
- \letfromlayoutelementparameter\p_text\c!middletext
- \ifempty\p_text\else
- \hbox to \makeupwidth\bgroup
- \hss
- \page_layouts_process_element_indeed\c!middlestyle\c!middlecolor\c!middlewidth
- \hss
- \egroup
- \kern-\makeupwidth
- \fi
- \letfromlayoutelementparameter\p_text\c!righttext
- \ifempty\p_text
- \kern\makeupwidth
- \else
- \hbox to \makeupwidth\bgroup
- \hss
- \page_layouts_process_element_indeed\c!rightstyle\c!rightcolor\c!rightwidth
- \egroup
- \fi}
-
-\def\page_layouts_text_body_element_indeed_e_r_m_l
- {\letfromlayoutelementparameter\p_text\c!righttext
- \ifempty\p_text\else
- \hbox to \makeupwidth\bgroup
- \page_layouts_process_element_indeed\c!rightstyle\c!rightcolor\c!rightwidth
- \hss
- \egroup
- \kern-\makeupwidth
- \fi
- \letfromlayoutelementparameter\p_text\c!middletext
- \ifempty\p_text\else
- \hbox to \makeupwidth\bgroup
- \hss
- \page_layouts_process_element_indeed\c!middlestyle\c!middlecolor\c!middlewidth
- \hss
- \egroup
- \kern-\makeupwidth
- \fi
- \letfromlayoutelementparameter\p_text\c!lefttext
- \ifempty\p_text
- \ifempty\page_layouts_place_extra_text_right
- \kern\makeupwidth
- \else
- \hbox to \makeupwidth\bgroup
- \hss
- \page_layouts_place_extra_text_right
- \egroup
- \fi
- \else
- \hbox to \makeupwidth\bgroup
- \hss
- \page_layouts_process_element_indeed\c!leftstyle\c!leftcolor\c!leftwidth
- \page_layouts_place_extra_text_right
- \egroup
- \fi}
-
-\def\page_layouts_text_body_element_l_m_r_e
- {\edef\currentlayoutelement{\currentlayouttextline:\v!text}%
- \page_layouts_place_element_indeed\makeupwidth\page_layouts_text_body_element_indeed_l_m_r_e}
-
-\def\page_layouts_text_body_element_e_r_m_l
- {\edef\currentlayoutelement{\currentlayouttextline:\v!text}%
- \page_layouts_place_element_indeed\makeupwidth\page_layouts_text_body_element_indeed_e_r_m_l}
-
-\def\page_layouts_place_element_indeed#width#content%
- {\vbox % to \vsize
- {\hsize#width\relax
- \layoutelementparameter\c!before
- \setlayoutcomponentattribute\currentlayoutelement
- \hbox \layoutcomponentboxattribute to #width{#content}%
- \layoutelementparameter\c!after}}
-
-%D Although it is far better to use backgrounds for this purpose, one can add a rule
-%D in the following way. This method makes the rules disappear in case of an empty
-%D text line. Consider this a feature.
-%D
-%D \starttyping
-%D \setupheadertexts[left][right]
-%D
-%D \setupheader[text][after=\hrule,style=bold]
-%D
-%D \starttext
-%D \input tufte \page
-%D \setupheader[state=empty]
-%D \input tufte \page
-%D \stoptext
-%D \stoptyping
-
-%D This code will move to \type {page-flt.tex}.
-
-\appendtoks \placerightmarginblock \kern-\rightmarginwidth \to \rightmargintextcontent
-\appendtoks \placeleftmarginblock \kern-\leftmarginwidth \to \leftmargintextcontent
-
-%D \macros
-%D {definetext}
-%D
-%D Some macros ago, we implemented the \type {status} option \type {unknown}. This
-%D one is used to take care of symbolic texts handlers.
-%D
-%D \showsetup{definetext}
-%D
-%D The next example demonstrates how we can use this mechanism to provide page
-%D (event) dependent text lines.
-%D
-%D \starttyping
-%D \definetext[chapter][footer][pagenumber]
-%D \setuphead[chapter][header=high,footer=chapter]
-%D \setupheadertexts[pagenumber]
-%D \setupfootertexts[left][right]
-%D \chapter{eerste} \dorecurse{20}{\input tufte \relax}
-%D \chapter{tweede} \dorecurse{20}{\input tufte \relax}
-%D \stoptyping
-
-\permanent\tolerant\protected\def\definetext[#tag]#spacer[#vertical]#spacer[#horizontal]#spacer[#a]#spacer[#b]#spacer[#c]#spacer[#d]%
- {\ifnum\lastarguments<\plusfour
- \setvalue{\namedlayoutelementhash {#vertical}#tag}{\setuptexts[#vertical][#horizontal]\relax}% 1, 2, 3
- \orelse\ifarguments\or\or\or\or
- \setvalue{\namedlayoutelementhash {#vertical}#tag}{\setuptexts[#vertical][#horizontal][#a]\relax}% 4
- \or
- \setvalue{\namedlayoutelementhash{#vertical:#horizontal}#tag}{\setuptexts[#vertical][#horizontal][#a][#b]\relax}% 5
- \or
- \setvalue{\namedlayoutelementhash {#vertical}#tag}{\setuptexts[#vertical][#horizontal][#a][#b][#c]\relax}% 6
- \or
- \setvalue{\namedlayoutelementhash{#vertical:#horizontal}#tag}{\setuptexts[#vertical][#horizontal][#a][#b][#c][#d]\relax}% 7
- \fi}
-
-%D A few more page breakers:
-
-\installpagebreakmethod \v!empty
- {\page_otr_flush_all_floats
- \page_otr_command_next_page
- \doifnot{\namedlayoutelementparameter\v!header\c!state}\v!stop{\setuplayoutelement[\v!header][\c!state=\v!empty]}%
- \doifnot{\namedlayoutelementparameter\v!footer\c!state}\v!stop{\setuplayoutelement[\v!footer][\c!state=\v!empty]}%
- \page_otr_insert_dummy_page}
-
-\installpagebreakmethod \v!header
- {\doifnot{\namedlayoutelementparameter\v!header\c!state}\v!stop{\setuplayoutelement[\v!header][\c!state=\v!empty]}}
-
-\installpagebreakmethod \v!footer
- {\doifnot{\namedlayoutelementparameter\v!footer\c!state}\v!stop{\setuplayoutelement[\v!footer][\c!state=\v!empty]}}
-
-%D While the header and footer lines are moved away from the main text, the top and
-%D bottom lines are centered.
-
-\setuplayoutelement[\v!top ][\c!state=\v!normal,\c!n=0,\c!before=\vss,\c!after=\vss,\c!strut=]
-\setuplayoutelement[\v!header][\c!state=\v!normal,\c!n=0,\c!before=, \c!after=\vss,\c!strut=\v!yes]
-\setuplayoutelement[\v!text ][\c!state=\v!normal,\c!n=0,\c!before=\vss,\c!after=\vss,\c!strut=]
-\setuplayoutelement[\v!footer][\c!state=\v!normal,\c!n=0,\c!before=\vss,\c!after=, \c!strut=\v!yes]
-\setuplayoutelement[\v!bottom][\c!state=\v!normal,\c!n=0,\c!before=\vss,\c!after=\vss,\c!strut=]
-
-%D Moved here from strc-pag:
-%D
-%D We reset a previous location but only when it has a pagenumber associated. This
-%D is a rather messy test but better than the MkII way where we use states and keep
-%D settings.
-
-\let\m_page_layouts_page_number_location \relax
-\let\m_page_layouts_page_number_location_v\relax
-\let\m_page_layouts_page_number_location_h\relax
-\let\m_page_layouts_page_number_location_x\relax
-
-\def\page_layouts_place_page_number % also elsewhere .. beware, not \protected else
- {\strc_pagenumbers_place_location} % test below fails
-
-\def\page_layouts_reset_page_number_location
- {\ifx\m_page_layouts_page_number_location_v\relax\else
- \edef\currentlayoutelement{\m_page_layouts_page_number_location_v:\m_page_layouts_page_number_location_h}%
- \edef\page_layouts_previous_page_number_locator{\detokenizedlayoutelementparameter\m_page_layouts_page_number_location_x}%
- \doif{\meaning\page_layouts_previous_page_number_locator}{\meaning\page_layouts_place_page_number}
- {\resetlayoutelementparameter\m_page_layouts_page_number_location_x}%
- \fi}
-
-\def\page_layouts_set_page_number_location
- {\edef\currentlayoutelement{\m_page_layouts_page_number_location_v:\m_page_layouts_page_number_location_h}%
- \letlayoutelementparameter\m_page_layouts_page_number_location_x\page_layouts_place_page_number
- \ifx\m_page_layouts_page_number_location_x\c!marginedgetext
- \let\page_layouts_place_extra_text_left \page_layouts_place_page_number_left
- \let\page_layouts_place_extra_text_right\page_layouts_place_page_number_right
- \else
- \let\page_layouts_place_extra_text_left \empty
- \let\page_layouts_place_extra_text_right\empty
- \fi}
-
-\def\page_layouts_identify_page_number_location
- {\let\m_page_layouts_page_number_location_v\v!footer
- \let\m_page_layouts_page_number_location_h\v!text
- \let\m_page_layouts_page_number_location_x\c!middletext
- \processallactionsinset[\directpagenumberingparameter\c!location]
- [ \v!header=>\let\m_page_layouts_page_number_location_v\v!header,
- \v!footer=>\let\m_page_layouts_page_number_location_v\v!footer,
- \v!middle=>\let\m_page_layouts_page_number_location_h\v!text
- \let\m_page_layouts_page_number_location_x\c!middletext,
- \v!left=>\let\m_page_layouts_page_number_location_h\v!text
- \let\m_page_layouts_page_number_location_x\c!lefttext,
- \v!right=>\let\m_page_layouts_page_number_location_h\v!text
- \let\m_page_layouts_page_number_location_x\c!righttext,
- \v!inleft=>\let\m_page_layouts_page_number_location_h\v!margin
- \let\m_page_layouts_page_number_location_x\c!lefttext,
- \v!inright=>\let\m_page_layouts_page_number_location_h\v!margin
- \let\m_page_layouts_page_number_location_x\c!righttext,
- \v!inmargin=>\let\m_page_layouts_page_number_location_h\v!margin
- \def\m_page_layouts_page_number_location_x{\ifdoublesided\c!margintext\else\c!righttext\fi},
- \v!margin=>\let\m_page_layouts_page_number_location_h\v!margin
- \def\m_page_layouts_page_number_location_x{\ifdoublesided\c!margintext\else\c!righttext\fi},
- \v!atmargin=>\let\m_page_layouts_page_number_location_h\v!text
- \let\m_page_layouts_page_number_location_x\c!marginedgetext,
- \v!marginedge=>\let\m_page_layouts_page_number_location_h\v!text
- \let\m_page_layouts_page_number_location_x\c!marginedgetext]}
-
-\protected\def\strc_pagenumbers_set_location
- {\edef\p_strc_pagenumbers_location{\directpagenumberingparameter\c!location}%
- \ifx\p_strc_pagenumbers_location\m_page_layouts_page_number_location
- % unchanged
- \else
- \let\m_page_layouts_page_number_location\p_strc_pagenumbers_location
- \page_layouts_reset_page_number_location
- \ifempty\p_strc_pagenumbers_location
- % set otherwise
- \orelse\ifx\p_strc_pagenumbers_location\v!none
- % set otherwise
- \else
- \page_layouts_identify_page_number_location
- \page_layouts_set_page_number_location
- \fi
- \fi}
-
-\def\page_layouts_place_page_number_left % historic
- {\begingroup
- \setbox\scratchbox\hbox{\ignorespaces\layoutelementparameter\c!marginedgetext\removeunwantedspaces}%
- \ifzeropt\wd\scratchbox\else
- \edef\p_strc_pagenumbers_width{\directpagenumberingparameter\c!width}%
- \ifempty\p_strc_pagenumbers_width
- \box\scratchbox\tfskip
- \else
- \hpack to \p_strc_pagenumbers_width{\box\scratchbox\hss}%
- \fi
- \fi
- \endgroup}
-
-\def\page_layouts_place_page_number_right % historic
- {\begingroup
- \setbox\scratchbox\hbox{\ignorespaces\layoutelementparameter\c!marginedgetext\removeunwantedspaces}%
- \ifzeropt\wd\scratchbox\else
- \edef\p_strc_pagenumbers_width{\directpagenumberingparameter\c!width}%
- \ifempty\p_strc_pagenumbers_width
- \tfskip\box\scratchbox
- \else
- \hpack to \p_strc_pagenumbers_width{\hss\box\scratchbox}%
- \fi
- \fi
- \endgroup}
-
-\strc_pagenumbers_set_location % initializes
-
-\newbox\b_page_layouts_element
-
-\def\page_layouts_insert_elements
- {\ifcase\pageornamentstate
- \page_layouts_place_elements_indeed % we could have a special flag for always ignored
- \fi}
-
-\def\page_layouts_place_elements_indeed
- {\setbox\b_page_layouts_element\vpack
- {\dontcomplain
- \calculatereducedvsizes
- \swapmargins
- \offinterlineskip
- \vkern\dimexpr-\topheight-\topdistance\relax
- \the\toptextcontent
- \vkern\dimexpr\topheight+\topdistance\relax
- \the\headertextcontent
- \vkern\dimexpr\headerheight+\headerdistance+\textdistance\relax
- \anch_positions_place_anchors
- \vkern\dimexpr-\textdistance-\textheight\relax
- \the\texttextcontent
- \vkern\textheight
- \the\everyendoftextbody
- \vkern\footerdistance
- \the\footertextcontent
- \vkern\dimexpr\footerheight+\bottomdistance\relax
- \the\bottomtextcontent
- \vkern\bottomheight
- \vfilll}%
- \smashbox\b_page_layouts_element
- \box\b_page_layouts_element}
-
-% \ifdefined\page_prepare_backgrounds\else
-% \let\page_prepare_backgrounds\gobbleoneargument
-% \fi
-
-% only for very special controlled cases or experiments:
-
-\let\page_scale_text_box\gobbleoneargument
-
-\def\page_insert_body#1#2%
- {\setbox\b_page_layouts_element\vpack
- {\offinterlineskip
- \calculatereducedvsizes
- \calculatehsizes
- \swapmargins
- \vkern\dimexpr\headerheight+\headerdistance+\textdistance\relax
- \dontleavehmode
- %\page_prepare_backgrounds{#2}%
- \hpack to \makeupwidth
- {\begingroup
- \swapmargins
- \goleftonpage
- \ifdim\leftedgewidth>\zeropoint
- \the\leftedgetextcontent
- \kern\dimexpr\leftedgewidth+\leftedgedistance\relax
- \fi
- \ifdim\leftmarginwidth>\zeropoint
- \the\leftmargintextcontent
- \kern\dimexpr\leftmarginwidth+\leftmargindistance\relax
- \fi
- \endgroup
- \page_apply_postprocessors_page{#2}%
- \settextpagecontent\b_page_layouts_element{#1}{#2}%
- \page_backgrounds_add_to_text\b_page_layouts_element
- \page_grids_add_to_box\b_page_layouts_element
- \page_scale_text_box\b_page_layouts_element
- \box\b_page_layouts_element
- \begingroup
- \ifdim\rightmarginwidth>\zeropoint
- \kern\rightmargindistance
- \the\rightmargintextcontent
- \kern\rightmarginwidth
- \fi
- \ifdim\rightedgewidth>\zeropoint
- \kern\rightedgedistance
- \the\rightedgetextcontent
- \kern\rightedgewidth
- \fi
- \endgroup
- \hss}}%
- \smashbox\b_page_layouts_element
- \box\b_page_layouts_element}
-
-%D The main text area has to be combined with some additional (tracing) information.
-%D
-%D This will be stored as normal and overloaded in page-lyr and later in page-spr we
-%D overload the the stored version .. eventually i will clear up the experimental
-%D mess.
-
-\protected\def\settextpagecontent#1#2#3% #2 and #3 will disappear / is overloaded
- {\setbox#1\hpack to \makeupwidth
- {\hss % so don't change this
- \setlayoutcomponentattribute{\v!page:\v!text}%
- \vpack \layoutcomponentboxattribute to \textheight
- {\offinterlineskip
- \freezetextwidth
- \hsize\textwidth % local variant of \sethsize <<< in columns?
- \boxmaxdepth\maxdepth
- \noindent % content can be < \hsize
- \page_otr_command_package_contents#2#3}% this will vbox
- \hss}%
- \dp#1\zeropoint}
-
-\protect \endinput