summaryrefslogtreecommitdiff
path: root/tex/context/base/page-txt.mkvi
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/page-txt.mkvi')
-rw-r--r--tex/context/base/page-txt.mkvi169
1 files changed, 61 insertions, 108 deletions
diff --git a/tex/context/base/page-txt.mkvi b/tex/context/base/page-txt.mkvi
index ff78ff89d..4d33e6c20 100644
--- a/tex/context/base/page-txt.mkvi
+++ b/tex/context/base/page-txt.mkvi
@@ -38,7 +38,15 @@
%D \showsetup{setupfooter}
%D \showsetup{setupbottom}
-\installcommandhandler \??tk {layoutelement} \??tk
+\installcorenamespace{layouttexts}
+\installcorenamespace{layouttextsline}
+\installcorenamespace{layouttextsreset}
+\installcorenamespace{layouttextssynchronize}
+\installcorenamespace{layouttextstrut}
+\installcorenamespace{layouttextspecial}
+\installcorenamespace{layouttextcontent}
+
+\installcommandhandler \??layouttexts {layoutelement} \??layouttexts
% \appendtoks
% \resetlayoutelementparameter\c!lefttext % resolves better
@@ -87,15 +95,15 @@
\to \everysetuplayoutelement
\def\reset_layout_element_status#vertical%
- {\expandafter\gdef\csname\??tk:r:#vertical\endcsname{\set_layout_element_status_normal#vertical}}
+ {\expandafter\gdef\csname\??layouttextsreset#vertical\endcsname{\set_layout_element_status_normal#vertical}}
\def\set_layout_element_status_normal#vertical%
{\global\expandafter\let\csname\namedlayoutelementhash#vertical\c!state\endcsname\v!normal
- \global\expandafter\let\csname\??tk:r:#vertical\endcsname\relax
+ \global\expandafter\let\csname\??layouttextsreset#vertical\endcsname\relax
\synchronize_current_layout_element{#vertical}}
\def\synchronize_current_layout_element#vertical%
- {\xdef\previoustextstate{\getvalue{\??tk:x:#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
@@ -107,7 +115,7 @@
\ifx\previoustextstate\v!high \calculatevsizes\recalculatebackgrounds \else
\ifx\currenttextstate \v!none \calculatevsizes\recalculatebackgrounds \else
\ifx\previoustextstate\v!none \calculatevsizes\recalculatebackgrounds \fi\fi\fi\fi
- \letgvalue{\??tk:x:#vertical}\currenttextstate}
+ \letgvalue{\??layouttextssynchronize#vertical}\currenttextstate}
\unexpanded\def\setuptop {\dotripleempty\setup_layout_text[\v!top ]}
\unexpanded\def\setupheader{\dotripleempty\setup_layout_text[\v!header]}
@@ -241,60 +249,6 @@
\resetlayoutelementparameter\c!middletext
\fi\fi\fi\fi\fi}
-% \def\setup_texts[#vertical][#horizontal][#a][#b][#c][#d]%
-% {\ifsixthargument
-% \edef\currentlayoutelement{#vertical:#horizontal}%
-% \setlayoutelementparameter\c!lefttext
-% {\process_layout_element_double
-% \c!leftstyle \c!leftcolor \c!leftwidth {#a}%
-% \c!rightstyle\c!rightcolor\c!rightwidth{#d}}%
-% \setlayoutelementparameter\c!righttext
-% {\process_layout_element_double
-% \c!rightstyle\c!rightcolor\c!rightwidth{#b}%
-% \c!leftstyle \c!leftcolor \c!leftwidth {#c}}%
-% \else\iffifthargument
-% \sixthargumenttrue
-% \setup_texts[#vertical][\v!text][#horizontal][#a][#b][#c]%
-% \else\iffourthargument
-% \edef\currentlayoutelement{#vertical:#horizontal}%
-% \doifelsenothing{\detokenize{#a}}
-% {\resetlayoutelementparameter\c!lefttext}
-% {\setlayoutelementparameter\c!lefttext
-% {\process_layout_element_double
-% \c!leftstyle\c!leftcolor\c!leftwidth{#a}%
-% \c!leftstyle\c!leftcolor\c!leftwidth{#a}}}%
-% \doifelsenothing{\detokenize{#b}}
-% {\resetlayoutelementparameter\c!righttext}
-% {\setlayoutelementparameter\c!righttext
-% {\process_layout_element_double
-% \c!rightstyle\c!rightcolor\c!rightwidth{#b}%
-% \c!rightstyle\c!rightcolor\c!rightwidth{#b}}}%
-% \else\ifthirdargument
-% \fourthargumenttrue
-% \setup_texts[#vertical][\v!text][#horizontal][#horizontal][][]%
-% \else\ifsecondargument
-% \edef\currentlayoutelement{#vertical:\v!text}%
-% \resetlayoutelementparameter\c!lefttext
-% \resetlayoutelementparameter\c!righttext
-% \doifelsenothing{\detokenize{#horizontal}}
-% {\resetlayoutelementparameter\c!middletext}
-% {\setlayoutelementparameter\c!middletext
-% {\process_layout_element_single\c!style\c!color\c!width{#horizontal}}}%
-% \else
-% \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
-% \fi\fi\fi\fi\fi}
-
%D Left and right texts are swapped on odd and even pages, but
%D only when double sided typesetting is enabled.
@@ -303,10 +257,10 @@
\process_layout_element_double_odd
\process_layout_element_double_even}
-\def\process_layout_element_double_odd #lstyle#lstyle#lwidth#lcontent#rstyle#rcolor#rwidth#rcontent%
- {\process_layout_element_single#lstyle#lstyle#lwidth{#lcontent}}
+\def\process_layout_element_double_odd #lstyle#lcolor#lwidth#lcontent#rstyle#rcolor#rwidth#rcontent%
+ {\process_layout_element_single#lstyle#lcolor#lwidth{#lcontent}}
-\def\process_layout_element_double_even#lstyle#lstyle#lwidth#lcontent#rstyle#rcolor#rwidth#rcontent%
+\def\process_layout_element_double_even#lstyle#color#lwidth#lcontent#rstyle#rcolor#rwidth#rcontent%
{\process_layout_element_single#rstyle#rcolor#rwidth{#rcontent}}
%D The next macro will be cleaned up and made less messy and
@@ -320,14 +274,14 @@
\process_layout_element_single_indeed#style#color#width{#content}%
\fi}
-\setvalue{\??tk:s:\v!yes}{\setstrut\strut} % maybe more variants
+\setvalue{\??layouttextstrut\v!yes}{\setstrut\strut} % maybe more variants
\def\process_layout_element_single_indeed#style#color#width#content%
{\begingroup
\uselayoutelementstyleandcolor#style#color%
- \csname\??tk:s:\layoutelementparameter\c!strut\endcsname
- \ifcsname\??tk:p:\layout_element_content\endcsname
- \csname\??tk:p:\layout_element_content\endcsname
+ \csname\??layouttextstrut\layoutelementparameter\c!strut\endcsname
+ \ifcsname\??layouttextspecial\layout_element_content\endcsname
+ \csname\??layouttextspecial\layout_element_content\endcsname
\else
\edef\currentlayoutelementwidth{\layoutelementparameter#width}%
\ifx\currentlayoutelementwidth\empty
@@ -350,8 +304,8 @@
{\limitatetext{\getmarking[\layout_element_content][\v!first]}\currentlayoutelementwidth\unknown}
{\ignorecrlf\limitatetext{#content{}{}{}}\currentlayoutelementwidth\unknown}}
-\setvalue{\??tk:p:\v!pagenumber}{\place_layout_page_number}
-\setvalue{\??tk:p:\v!date }{\currentdate}
+\setvalue{\??layouttextspecial\v!pagenumber}{\place_layout_page_number}
+\setvalue{\??layouttextspecial\v!date }{\currentdate}
%D When specified, the texts are automatically limited in
%D length.
@@ -398,7 +352,7 @@
\unexpanded\def\place_layout_text_line#vertical%
{\set_layout_element_status#vertical%
- \csname\??tk:l:\ifcsname\??tk:l:\textlinestatus\endcsname\textlinestatus\else\s!unknown\fi\endcsname#vertical}
+ \csname\??layouttextsline\ifcsname\??layouttextsline\textlinestatus\endcsname\textlinestatus\else\s!unknown\fi\endcsname#vertical}
\unexpanded\def\doifelselayouttextline#vertical% shown or not
{\edef\currentlayoutelementstate{\namedlayoutelementparameter{#vertical}\c!state}%
@@ -422,32 +376,31 @@
\newconditional\resyncaftertextline
-\setvalue{\??tk:l:\v!normal}{\place_layout_text_line_indeed}
-\setvalue{\??tk:l:\empty }{\place_layout_text_line_indeed}
+\setvalue{\??layouttextsline\v!normal}{\place_layout_text_line_indeed}
+\setvalue{\??layouttextsline\empty }{\place_layout_text_line_indeed}
-\letvalue{\??tk:l:\v!none}\gobbletwoarguments
-\letvalue{\??tk:l:\v!stop}\gobbletwoarguments
+\letvalue{\??layouttextsline\v!none}\gobbletwoarguments
+\letvalue{\??layouttextsline\v!stop}\gobbletwoarguments
-\setvalue{\??tk:l:\v!high}#vertical#height%
+\setvalue{\??layouttextsline\v!high}#vertical#height%
{\global\settrue\resyncaftertextline
\reset_layout_element_status#vertical}
-\setvalue{\??tk:l:\v!empty}#vertical#height%
+\setvalue{\??layouttextsline\v!empty}#vertical#height%
{\reset_layout_element_status#vertical}
-\setvalue{\??tk:l:\v!start}#vertical#height%
+\setvalue{\??layouttextsline\v!start}#vertical#height%
{\reset_layout_element_status#vertical%
\place_layout_text_line_indeed#vertical#height}
-\setvalue{\??tk:l:\v!nomarking}#vertical#height%
+\setvalue{\??layouttextsline\v!nomarking}#vertical#height%
{\bgroup
\reset_layout_element_status#vertical%
\settrue\inhibitgetmarking
- \let\dogetmarking\nogetmarking % obsolete in new marking mechanism
\place_layout_text_line_indeed#vertical#height%
\egroup}
-\setvalue{\??tk:l:\s!unknown}#vertical#height%
+\setvalue{\??layouttextsline\s!unknown}#vertical#height%
{\global\settrue\resyncaftertextline
\begingroup % new
\reset_layout_element_status#vertical%
@@ -462,11 +415,11 @@
%D is flushed.
\def\resetlayouttextlines % public
- {\csname\??tk:r:\v!top \endcsname
- \csname\??tk:r:\v!header\endcsname
- \csname\??tk:r:\v!text \endcsname
- \csname\??tk:r:\v!footer\endcsname
- \csname\??tk:r:\v!bottom\endcsname
+ {\csname\??layouttextsreset\v!top \endcsname
+ \csname\??layouttextsreset\v!header\endcsname
+ \csname\??layouttextsreset\v!text \endcsname
+ \csname\??layouttextsreset\v!footer\endcsname
+ \csname\??layouttextsreset\v!bottom\endcsname
\ifconditional\resyncaftertextline
\calculateglobalvsizes
\recalculatebackgrounds
@@ -480,12 +433,12 @@
\def\set_text_content[#vertical][#horizontal][#one][#two][#three]% header text middle text/text
{\iffifthargument
- \setvalue{\namedlayoutelementhash{#vertical:#horizontal}\executeifdefined{\??tk:c:\c!text:#one}\c!middletext}%
+ \setvalue{\namedlayoutelementhash{#vertical:#horizontal}\executeifdefined{\??layouttextcontent\c!text:#one}\c!middletext}%
{\process_layout_element_double
\c!leftstyle \c!leftcolor \c!leftwidth {#two}%
\c!rightstyle\c!rightcolor\c!rightwidth{#three}}%
\else\iffourthargument
- \setvalue{\namedlayoutelementhash{#vertical:#horizontal}\executeifdefined{\??tk:c:\c!text:#one}\c!middletext}%
+ \setvalue{\namedlayoutelementhash{#vertical:#horizontal}\executeifdefined{\??layouttextcontent\c!text:#one}\c!middletext}%
{\process_layout_element_double
\c!leftstyle \c!leftcolor \c!leftwidth {#two}%
\c!rightstyle\c!rightcolor\c!rightwidth{#two}}%
@@ -502,16 +455,16 @@
\def\reset_text_content[#vertical][#horizontal][#tag]% header text middle
{\edef\currentlayoutelement{#vertical:#horizontal}%
\ifthirdargument
- \letvalueempty{\layoutelementhash\executeifdefined{\??tk:c:\c!text:#tag}\c!middletext}%
+ \letvalueempty{\layoutelementhash\executeifdefined{\??layouttextcontent\c!text:#tag}\c!middletext}%
\else\ifsecondargument
\resetlayoutelementparameter\c!lefttext
\resetlayoutelementparameter\c!middletext
\resetlayoutelementparameter\c!righttext
\fi\fi}
-\letvalue{\??tk:c:\c!middle:\c!text}\c!middletext
-\letvalue{\??tk:c:\c!left :\c!text}\c!lefttext
-\letvalue{\??tk:c:\c!right :\c!text}\c!righttext
+\letvalue{\??layouttextcontent\c!middle:\c!text}\c!middletext
+\letvalue{\??layouttextcontent\c!left :\c!text}\c!lefttext
+\letvalue{\??layouttextcontent\c!right :\c!text}\c!righttext
%D The placement of a whole line is handled by the next two
%D macros. These are hooked into the general purpose token
@@ -527,22 +480,22 @@
\def\place_layout_text_line_left_or_right#height%
{\goleftonpage
-% \hbox{%
- \setbox\layout_element_box\vbox to #height
- {\vsize#height\relax
- \normalbaselines
- \let\\\ignoredlinebreak
- \let\crlf\ignoredlinebreak
- \namedlayoutelementparameter\currentlayouttextline\c!before
- \doifbothsidesoverruled
- \place_layout_text_line_right
- \place_layout_text_line_right
- \place_layout_text_line_left
- \namedlayoutelementparameter\currentlayouttextline\c!after
- \kern\zeropoint}% keep the \dp, beware of \vtops, never change this!
- \dp\layout_element_box\zeropoint
- \box\layout_element_box
-% }%
+ \setbox\layout_element_box\vbox to #height
+ {\vsize#height\relax
+ %\hsize\zeropoint % hack so that e.g. after=\hairline gives predictable results
+ \hsize\totaltextwidth
+ \normalbaselines
+ \let\\\ignoredlinebreak
+ \let\crlf\ignoredlinebreak
+ \namedlayoutelementparameter\currentlayouttextline\c!before
+ \doifbothsidesoverruled
+ \place_layout_text_line_right
+ \place_layout_text_line_right
+ \place_layout_text_line_left
+ \namedlayoutelementparameter\currentlayouttextline\c!after
+ \kern\zeropoint}% keep the \dp, beware of \vtops, never change this!
+ \dp\layout_element_box\zeropoint
+ \box\layout_element_box
\vskip-#height\relax}
\let\extra_at_margin_left \plusone
@@ -630,7 +583,7 @@
\def\place_layout_element_indeed#width#content%
{\vbox % to \vsize
- {\hsize#1\relax
+ {\hsize#width\relax
\layoutelementparameter\c!before
\setlayoutcomponentattribute\currentlayoutelement
\hbox \layoutcomponentboxattribute to #width{#content}%
@@ -911,7 +864,7 @@
\vbox \layoutcomponentboxattribute to \textheight
{\offinterlineskip
\freezetextwidth
- \hsize\textwidth % local variant of \sethsize
+ \hsize\textwidth % local variant of \sethsize <<< in columns?
\boxmaxdepth\maxdepth
\noindent % content can be < \hsize
\dopagecontents#2#3}%