diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/strc-pag.mkiv')
-rw-r--r-- | Master/texmf-dist/tex/context/base/strc-pag.mkiv | 249 |
1 files changed, 104 insertions, 145 deletions
diff --git a/Master/texmf-dist/tex/context/base/strc-pag.mkiv b/Master/texmf-dist/tex/context/base/strc-pag.mkiv index f4b658365f9..e3828464cd8 100644 --- a/Master/texmf-dist/tex/context/base/strc-pag.mkiv +++ b/Master/texmf-dist/tex/context/base/strc-pag.mkiv @@ -5,7 +5,7 @@ %D subtitle=Pagenumbering, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%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 @@ -43,8 +43,8 @@ % all get their own counter. After all, it's easier to combine them in % a pseudo counterset than to deal with a complex set itself. -% \definestructureprefixset [mine][section-1,section-2] -% \definestructureseparatorset[mine][:] +% \defineprefixset [mine][section-1,section-2] +% \defineseparatorset[mine][:] % % \setupuserpagenumber % [way=bypart, @@ -52,8 +52,8 @@ % prefixset=mine, % prefixseparatorset=mine] -% \definestructureconversionset[frontpart:pagenumber][][romannumerals] -% \definestructureconversionset[bodypart:pagenumber] [][numbers] +% \defineconversionset[frontpart:pagenumber][][romannumerals] +% \defineconversionset[bodypart:pagenumber] [][numbers] % % \setupuserpagenumber[way=byblock] % \setupuserpagenumber[way=bychapter] @@ -71,9 +71,9 @@ % \stopbodymatter % \stoptext -\definestructurecounter[\s!realpage][\c!prefix=\v!no,\c!start=1,\c!prefixsegments=,\s!counter=realpageno,\c!method=\v!page] -\definestructurecounter[\s!userpage][\c!prefix=\v!no,\c!start=1,\c!prefixsegments=,\s!counter=userpageno,\c!method=\v!page] -\definestructurecounter[\s!subpage] [\c!prefix=\v!no,\c!start=1,\c!prefixsegments=,\s!counter=subpageno, \c!method=\v!page] +\definecounter[\s!realpage][\c!prefix=\v!no,\c!start=1,\c!prefixsegments=,\s!counter=realpageno,\c!method=\v!page] +\definecounter[\s!userpage][\c!prefix=\v!no,\c!start=1,\c!prefixsegments=,\s!counter=userpageno,\c!method=\v!page] +\definecounter[\s!subpage] [\c!prefix=\v!no,\c!start=1,\c!prefixsegments=,\s!counter=subpageno, \c!method=\v!page] \newtoks\everysetuprealpagenumber % todo: set state: none, start, stop, reset \newtoks\everysetupuserpagenumber % todo: set state: none, start, stop, reset @@ -83,20 +83,20 @@ \unexpanded\def\setupuserpagenumber{\dosingleargument\dosetupuserpagenumber} \unexpanded\def\setupsubpagenumber {\dosingleargument\dosetupsubpagenumber} -\def\dosavepagenumberstate#1{\edef\oldpagenumberstate{\structurecounterparameter#1\c!state}} +\def\dosavepagenumberstate#1{\edef\oldpagenumberstate{\counterparameter#1\c!state}} -\def\dosetuprealpagenumber[#1]{\dosavepagenumberstate\s!realpage\dosetupstructurecounter[\s!realpage][#1]\the\everysetuprealpagenumber} -\def\dosetupuserpagenumber[#1]{\dosavepagenumberstate\s!userpage\dosetupstructurecounter[\s!userpage][#1]\the\everysetupuserpagenumber} -\def\dosetupsubpagenumber [#1]{\dosavepagenumberstate\s!subpage \dosetupstructurecounter[\s!subpage ][#1]\the\everysetupsubpagenumber } +\def\dosetuprealpagenumber[#1]{\dosavepagenumberstate\s!realpage\strc_counters_setup[\s!realpage][#1]\the\everysetuprealpagenumber} +\def\dosetupuserpagenumber[#1]{\dosavepagenumberstate\s!userpage\strc_counters_setup[\s!userpage][#1]\the\everysetupuserpagenumber} +\def\dosetupsubpagenumber [#1]{\dosavepagenumberstate\s!subpage \strc_counters_setup[\s!subpage ][#1]\the\everysetupsubpagenumber } \def\resetrealpagenumber {} % not permitted -\def\resetuserpagenumber {\resetstructurecounter[\s!userpage]} -\def\resetsubpagenumber {\resetstructurecounter[\s!subpage]} +\def\resetuserpagenumber {\strc_counters_reset\s!userpage} +\def\resetsubpagenumber {\strc_counters_reset\s!subpage} \appendtoks - \setstructurecounter[\s!realpage]\realpageno - \setstructurecounter[\s!userpage]\userpageno - \setstructurecounter[\s!subpage] \subpageno + \strc_counters_set\s!realpage\realpageno + \strc_counters_set\s!userpage\userpageno + \strc_counters_set\s!subpage \subpageno \to \everyinitializepagecounters \let\setuppagenumber\setupuserpagenumber @@ -104,18 +104,18 @@ \def\savecurrentpagestate % \normalexpanded? {\ctxlua{structures.pages.save({ - prefix = "\structurecounterparameter\s!userpage\c!prefix", - separatorset = "\structurecounterparameter\s!userpage\c!prefixseparatorset", - conversion = "\structurecounterparameter\s!userpage\c!prefixconversion", - conversionset = "\structurecounterparameter\s!userpage\c!prefixconversionset", - set = "\structurecounterparameter\s!userpage\c!prefixset", - segments = "\structurecounterparameter\s!userpage\c!prefixsegments", - connector = \!!bs\structurecounterparameter\s!userpage\c!prefixconnector\!!es, + prefix = "\counterparameter\s!userpage\c!prefix", + separatorset = "\counterparameter\s!userpage\c!prefixseparatorset", + conversion = "\counterparameter\s!userpage\c!prefixconversion", + conversionset = "\counterparameter\s!userpage\c!prefixconversionset", + set = "\counterparameter\s!userpage\c!prefixset", + segments = "\counterparameter\s!userpage\c!prefixsegments", + connector = \!!bs\counterparameter\s!userpage\c!prefixconnector\!!es, },{ - conversion = "\structurecounterparameter\s!userpage\c!numberconversion", - conversionset = "\structurecounterparameter\s!userpage\c!numberconversionset", - starter = \!!bs\structurecounterparameter\s!userpage\c!numberstarter\!!es, - stopper = \!!bs\structurecounterparameter\s!userpage\c!numberstopper\!!es, + conversion = "\counterparameter\s!userpage\c!numberconversion", + conversionset = "\counterparameter\s!userpage\c!numberconversionset", + starter = \!!bs\counterparameter\s!userpage\c!numberstarter\!!es, + stopper = \!!bs\counterparameter\s!userpage\c!numberstopper\!!es, } )}} @@ -123,8 +123,8 @@ \savecurrentpagestate \to \everyshipout -\def\pushpagestate{\setxvalue{\??nm:\s!userpage:\c!state}{\structurecounterparameter\s!userpage\c!state}} -\def\poppagestate {\normalexpanded{\noexpand\setuppagenumber[\c!state=\getvalue{\??nm:\s!userpage:\c!state}]}} +\def\pushpagestate{\setxvalue{\??nm:\s!userpage:\c!state}{\counterparameter\s!userpage\c!state}} +\def\poppagestate {\normalexpanded{\setuppagenumber[\c!state=\getvalue{\??nm:\s!userpage:\c!state}]}} \setuppagenumber [\c!way=\v!by\v!text, @@ -139,51 +139,37 @@ % Counters -% \def\firstpage {1} \def\prevpage {1} \def\nextpage {1} \def\lastpage {1} -% \def\firstuserpage{1} \def\prevuserpage{1} \def\nextuserpage{1} \def\lastuserpage{1} -% \def\firstsubpage {1} \def\prevsubpage {1} \def\nextsubpage {1} \def\lastsubpage {1} +\def\firstrealpagenumber{\convertedcounter[\s!realpage][\c!type=\v!first]} +\def\firstuserpagenumber{\convertedcounter[\s!userpage][\c!type=\v!first]} +\def\firstsubpagenumber {\convertedcounter[\s!subpage ][\c!type=\v!first]} -% \def\firstrealpage{\firststructurecounter[\s!realpage]} -% \def\prevrealpage {\prevstructurecounter [\s!realpage]} -% \def\nextrealpage {\nextstructurecounter [\s!realpage]} -% \def\lastrealpage {\laststructurecounter [\s!realpage]} +\def\lastrealpagenumber {\convertedcounter[\s!realpage][\c!type=\v!last]} +\def\lastuserpagenumber {\convertedcounter[\s!userpage][\c!type=\v!last]} +\def\lastsubpagenumber {\convertedcounter[\s!subpage ][\c!type=\v!last]} -% \let\firstpage\firstrealpage -% \let\prevpage \prevrealpage -% \let\nextpage \nextrealpage -% \let\lastpage \lastrealpage +\def\prevrealpagenumber {\convertedcounter[\s!realpage][\c!type=\v!previous]} +\def\prevuserpagenumber {\convertedcounter[\s!userpage][\c!type=\v!previous]} +\def\prevsubpagenumber {\convertedcounter[\s!subpage ][\c!type=\v!previous]} -\def\firstrealpagenumber{\convertedstructurecounter[\s!realpage][\c!type=\v!first]} -\def\firstuserpagenumber{\convertedstructurecounter[\s!userpage][\c!type=\v!first]} -\def\firstsubpagenumber {\convertedstructurecounter[\s!subpage ][\c!type=\v!first]} +\def\nextrealpagenumber {\convertedcounter[\s!realpage][\c!type=\v!next]} +\def\nextuserpagenumber {\convertedcounter[\s!userpage][\c!type=\v!next]} +\def\nextsubpagenumber {\convertedcounter[\s!subpage ][\c!type=\v!next]} -\def\lastrealpagenumber {\convertedstructurecounter[\s!realpage][\c!type=\v!last]} -\def\lastuserpagenumber {\convertedstructurecounter[\s!userpage][\c!type=\v!last]} -\def\lastsubpagenumber {\convertedstructurecounter[\s!subpage ][\c!type=\v!last]} +\def\firstrealpage{\strc_counters_first\s!realpage} +\def\firstuserpage{\strc_counters_first\s!userpage} +\def\firstsubpage {\strc_counters_first\s!subpage } -\def\prevrealpagenumber {\convertedstructurecounter[\s!realpage][\c!type=\v!previous]} -\def\prevuserpagenumber {\convertedstructurecounter[\s!userpage][\c!type=\v!previous]} -\def\prevsubpagenumber {\convertedstructurecounter[\s!subpage ][\c!type=\v!previous]} +\def\prevrealpage {\strc_counters_prev \s!realpage} +\def\prevuserpage {\strc_counters_prev \s!userpage} +\def\prevsubpage {\strc_counters_prev \s!subpage } -\def\nextrealpagenumber {\convertedstructurecounter[\s!realpage][\c!type=\v!next]} -\def\nextuserpagenumber {\convertedstructurecounter[\s!userpage][\c!type=\v!next]} -\def\nextsubpagenumber {\convertedstructurecounter[\s!subpage ][\c!type=\v!next]} +\def\nextrealpage {\strc_counters_next \s!realpage} +\def\nextuserpage {\strc_counters_next \s!userpage} +\def\nextsubpage {\strc_counters_next \s!subpage } -\def\firstrealpage{\firststructurecounter[\s!realpage]} -\def\firstuserpage{\firststructurecounter[\s!userpage]} -\def\firstsubpage {\firststructurecounter[\s!subpage ]} - -\def\prevrealpage {\prevstructurecounter [\s!realpage]} -\def\prevuserpage {\prevstructurecounter [\s!userpage]} -\def\prevsubpage {\prevstructurecounter [\s!subpage ]} - -\def\nextrealpage {\nextstructurecounter [\s!realpage]} -\def\nextuserpage {\nextstructurecounter [\s!userpage]} -\def\nextsubpage {\nextstructurecounter [\s!subpage ]} - -\def\lastrealpage {\laststructurecounter [\s!realpage]} -\def\lastuserpage {\laststructurecounter [\s!userpage]} -\def\lastsubpage {\laststructurecounter [\s!subpage ]} +\def\lastrealpage {\strc_counters_last \s!realpage} +\def\lastuserpage {\strc_counters_last \s!userpage} +\def\lastsubpage {\strc_counters_last \s!subpage } \let\firstpage\firstrealpage \let\prevpage \prevrealpage @@ -198,33 +184,33 @@ % Renderers: -\def\pagenumber {\rawstructurecounter[\s!userpage]} -\def\prefixedpagenumber {\directconvertedstructurecounter\s!userpage\empty} % \userpagenumber +\def\pagenumber {\strc_counters_raw\s!userpage} +\def\prefixedpagenumber {\directconvertedcounter\s!userpage\empty} % \userpagenumber -\def\realpagenumber {\directconvertedstructurecounter\s!realpage\empty} -\def\userpagenumber {\directconvertedstructurecounter\s!userpage\empty} -\def\subpagenumber {\directconvertedstructurecounter\s!subpage \empty} +\def\realpagenumber {\directconvertedcounter\s!realpage\empty} +\def\userpagenumber {\directconvertedcounter\s!userpage\empty} +\def\subpagenumber {\directconvertedcounter\s!subpage \empty} -\def\firstrealpagenumber{\directconvertedstructurecounter\s!realpage\v!first} -\def\firstuserpagenumber{\directconvertedstructurecounter\s!userpage\v!first} -\def\firstsubpagenumber {\directconvertedstructurecounter\s!subpage \v!first} +\def\firstrealpagenumber{\directconvertedcounter\s!realpage\v!first} +\def\firstuserpagenumber{\directconvertedcounter\s!userpage\v!first} +\def\firstsubpagenumber {\directconvertedcounter\s!subpage \v!first} -\def\lastrealpagenumber {\directconvertedstructurecounter\s!realpage\v!last} -\def\lastuserpagenumber {\directconvertedstructurecounter\s!userpage\v!last} -\def\lastsubpagenumber {\directconvertedstructurecounter\s!subpage \v!last} +\def\lastrealpagenumber {\directconvertedcounter\s!realpage\v!last} +\def\lastuserpagenumber {\directconvertedcounter\s!userpage\v!last} +\def\lastsubpagenumber {\directconvertedcounter\s!subpage \v!last} -\def\prevrealpagenumber {\directconvertedstructurecounter\s!realpage\v!previous} -\def\prevuserpagenumber {\directconvertedstructurecounter\s!userpage\v!previous} -\def\prevsubpagenumber {\directconvertedstructurecounter\s!subpage \v!previous} +\def\prevrealpagenumber {\directconvertedcounter\s!realpage\v!previous} +\def\prevuserpagenumber {\directconvertedcounter\s!userpage\v!previous} +\def\prevsubpagenumber {\directconvertedcounter\s!subpage \v!previous} -\def\nextrealpagenumber {\directconvertedstructurecounter\s!realpage\v!next} -\def\nextuserpagenumber {\directconvertedstructurecounter\s!userpage\v!next} -\def\nextsubpagenumber {\directconvertedstructurecounter\s!subpage \v!next} +\def\nextrealpagenumber {\directconvertedcounter\s!realpage\v!next} +\def\nextuserpagenumber {\directconvertedcounter\s!userpage\v!next} +\def\nextsubpagenumber {\directconvertedcounter\s!subpage \v!next} \def\dodeincrementpageboundcounters % only at the end - {\decrementstructurecounter[\s!realpage]% - \decrementstructurecounter[\s!userpage]% - \decrementstructurecounter[\s!subpage ]} + {\strc_counters_decrement\s!realpage + \strc_counters_decrement\s!userpage + \strc_counters_decrement\s!subpage} \def\doincrementpageboundcounters {\incrementpagenumber @@ -258,21 +244,21 @@ % Realpage and subpage numbers: -\def\setnextrealpageno{\global\realpageno\incrementedstructurecounter[\s!realpage]\relax} -\def\setnextsubpageno {\global\subpageno \incrementedstructurecounter[\s!subpage ]\relax} +\def\setnextrealpageno{\global\realpageno\strc_counters_incremented\s!realpage\relax} +\def\setnextsubpageno {\global\subpageno \strc_counters_incremented\s!subpage \relax} -% Page numbers: (can move to lua) +% Page numbers: (can move to lua) ... inconsistent names -\def\dodecrementpagenumber {\global\userpageno\decrementedstructurecounter[\s!userpage]\relax} -\def\doincrementpagenumber {\global\userpageno\incrementedstructurecounter[\s!userpage]\relax} +\def\dodecrementpagenumber {\global\userpageno\strc_counters_decremented\s!userpage\relax} +\def\doincrementpagenumber {\global\userpageno\strc_counters_incremented\s!userpage\relax} -\def\decrementsubpagenumber{\global\subpageno \decrementedstructurecounter[\s!subpage ]\relax} -\def\incrementsubpagenumber{\global\subpageno \incrementedstructurecounter[\s!subpage ]\relax} +\def\decrementsubpagenumber{\global\subpageno \strc_counters_decremented\s!subpage \relax} +\def\incrementsubpagenumber{\global\subpageno \strc_counters_incremented\s!subpage \relax} \def\dosynchronizepagenumber{\global\let\@@pnstate\v!start} -\def\decrementpagenumber{\csname\??pn-\structurecounterparameter\s!userpage\c!state\endcsname} -\def\incrementpagenumber{\csname\??pn+\structurecounterparameter\s!userpage\c!state\endcsname} +\def\decrementpagenumber{\csname\??pn-\counterparameter\s!userpage\c!state\endcsname} +\def\incrementpagenumber{\csname\??pn+\counterparameter\s!userpage\c!state\endcsname} \letvalue{\??pn-\v!start}\dodecrementpagenumber \letvalue{\??pn-\v!none }\dodecrementpagenumber @@ -316,12 +302,17 @@ \trackingmarginnotesfalse \fi \fi + \page_backgrounds_recalculate \dosetpagenumberlocation \to \everysetuppagenumbering -\appendtoks - \ifdefined \recalculatebackgrounds \recalculatebackgrounds \fi -\to \everysetuppagenumbering +\ifdefined \page_backgrounds_recalculate \else + \let\page_backgrounds_recalculate\relax +\fi + +\ifdefined \dosetpagenumberlocation \else + \let\dosetpagenumberlocation\relax +\fi \def\flushfinallayoutpage {\doifsomething\@@nmpage{\doifnot\@@nmpage\v!no{\page[\@@nmpage]}}} @@ -329,42 +320,6 @@ % The numbered location handler is there because we need to be downward % compatible. So, in fact there can be multiple handlers active at the % same time, but only the current one does something. -% -% thsi code might move to page-txt - -\newcount\currentpagenumberlocation - -\def\dosetpagenumberlocation - {\advance\currentpagenumberlocation\plusone - \ifx\@@nmlocation\empty \else - \let\@@pagenumbervlocation\v!footer - \let\@@pagenumberhlocation\v!text - \let\@@pagenumberxlocation\c!middletext - \normalexpanded{\noexpand\processallactionsinset[\@@nmlocation]} - [ \v!header=>\let\@@pagenumbervlocation\v!header, - \v!footer=>\let\@@pagenumbervlocation\v!footer, - \v!middle=>\let\@@pagenumberhlocation\v!text \let\@@pagenumberxlocation\c!middletext, - \v!left=>\let\@@pagenumberhlocation\v!text \let\@@pagenumberxlocation\c!lefttext, - \v!right=>\let\@@pagenumberhlocation\v!text \let\@@pagenumberxlocation\c!righttext, - \v!inleft=>\let\@@pagenumberhlocation\v!margin\let\@@pagenumberxlocation\c!lefttext, - \v!inright=>\let\@@pagenumberhlocation\v!margin\let\@@pagenumberxlocation\c!righttext, - \v!inmargin=>\let\@@pagenumberhlocation\v!margin\def\@@pagenumberxlocation{\ifdoublesided\c!margintext\else\c!righttext\fi}, - \v!margin=>\let\@@pagenumberhlocation\v!margin\def\@@pagenumberxlocation{\ifdoublesided\c!margintext\else\c!righttext\fi}, - \v!atmargin=>\let\@@pagenumberhlocation\v!text \let\@@pagenumberxlocation\c!marginedgetext, - \v!marginedge=>\let\@@pagenumberhlocation\v!text \let\@@pagenumberxlocation\c!marginedgetext]% - \normalexpanded{\noexpand\setspecificlayouttext - {\@@pagenumbervlocation}{\@@pagenumberhlocation}{\@@pagenumberxlocation}% - {\noexpand\doplacepagenumberatlocation{\number\currentpagenumberlocation}}}% - \fi} - -\def\setspecificlayouttext#1#2#3#4{\setvalue{\??tk#1#2#3}{#4}} % weird place - -\appendtoks - \dosetpagenumberlocation -\to \everyinitializepagecounters - -\def\doplacepagenumberatlocation#1% - {\ifnum#1=\currentpagenumberlocation\relax\expandafter\placelocationpagenumber\fi} % Rendering: @@ -372,7 +327,11 @@ {\ifnum\userpagenumberstate=\plustwo \ifnum\overallpagenumberstate=\plusone \doif\@@nmstrut\v!yes\strut - \@@nmcommand{\doattributes\??nm\c!style\c!color{\@@nmleft\labeltexts\v!pagenumber{\prefixedpagenumber}\@@nmright}}% + \begingroup + \dousestyleparameter\@@nmstyle + \dousecolorparameter\@@nmcolor + \@@nmcommand{\@@nmleft\labeltexts\v!pagenumber{\prefixedpagenumber}\@@nmright}% + \endgroup \fi \fi} @@ -403,7 +362,7 @@ \setnewconstant\overallpagenumberstate\plusone % general number: 0=invisible, 1=visible \def\checkpagenumberstatechange#1#2% - {\edef\newpagenumberstate{\structurecounterparameter#1\c!state}% + {\edef\newpagenumberstate{\counterparameter#1\c!state}% \ifx\newpagenumberstate\oldpagenumberstate \else \doifelse\newpagenumberstate\v!start {#2\plustwo}% @@ -454,18 +413,18 @@ % just for downward compatbility \appendtoks - \edef\askeduserpagenumber{\structurecounterparameter\s!userpage\c!number}% + \edef\askeduserpagenumber{\counterparameter\s!userpage\c!number}% \ifx\askeduserpagenumber\empty \else - \normalexpanded{\noexpand\setuppagenumber[\c!start=\structurecounterparameter\s!userpage\c!number,\c!number=]}% - \userpageno\rawstructurecounter[\s!userpage]% + \normalexpanded{\setuppagenumber[\c!start=\counterparameter\s!userpage\c!number,\c!number=]}% + \userpageno\strc_counters_raw\s!userpage \fi \to \everysetupuserpagenumber % todo: set state: none, start, stop, reset \appendtoks - \edef\askedsubpagenumber{\structurecounterparameter\s!subpage\c!number}% + \edef\askedsubpagenumber{\counterparameter\s!subpage\c!number}% \ifx\askedsubpagenumber\empty \else - \normalexpanded{\noexpand\setupsubpagenumber[\c!start=\structurecounterparameter\s!subpage\c!number,\c!number=]}% - \subpageno\rawstructurecounter[\s!subpage]% + \normalexpanded{\setupsubpagenumber[\c!start=\counterparameter\s!subpage\c!number,\c!number=]}% + \subpageno\strc_counters_raw\s!subpage\relax \fi \to \everysetupsubpagenumber % todo: set state: none, start, stop, reset @@ -475,7 +434,7 @@ % \starttext \dorecurse{20}{\input knuth \par} \stoptext \def\checkpagenumbershift - {\userpageno\rawstructurecounter[\s!userpage]\relax + {\userpageno\strc_counters_raw\s!userpage\relax \ifnum\realpageno=\plusone \ifodd\userpageno \else |