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 | 97 |
1 files changed, 65 insertions, 32 deletions
diff --git a/Master/texmf-dist/tex/context/base/strc-pag.mkiv b/Master/texmf-dist/tex/context/base/strc-pag.mkiv index 276cf8b78b6..0f3d7ba3b07 100644 --- a/Master/texmf-dist/tex/context/base/strc-pag.mkiv +++ b/Master/texmf-dist/tex/context/base/strc-pag.mkiv @@ -23,10 +23,11 @@ % Allocation: -\countdef\realpageno = 0 \realpageno = 1 -\countdef\userpageno = 1 \userpageno = 1 -\countdef\subpageno = 2 \subpageno = 0 % !! -\countdef\arrangeno = 3 \arrangeno = 0 % !! +\countdef\realpageno = 0 \realpageno = 1 +\countdef\userpageno = 1 \userpageno = 1 +\countdef\subpageno = 2 \subpageno = 0 % !! +\countdef\arrangeno = 3 \arrangeno = 0 % !! +\countdef\pagenoshift = 4 \pagenoshift = 0 % !! \let\pageno\userpageno @@ -55,17 +56,37 @@ % prefixset=mine, % prefixseparatorset=mine] -\definestructurecounter[\s!realpage][\c!prefix=\v!no,\c!start=1,\c!prefixsegments=] % \c!counter=realpage -\definestructurecounter[\s!userpage][\c!prefix=\v!no,\c!start=1,\c!prefixsegments=] % \c!counter=userpage -\definestructurecounter[\s!subpage] [\c!prefix=\v!no,\c!start=1,\c!prefixsegments=] % \c!counter=subpage +% \definestructureconversionset[frontpart:pagenumber][][romannumerals] +% \definestructureconversionset[bodypart:pagenumber] [][numbers] +% +% \setupuserpagenumber[way=byblock] +% \setupuserpagenumber[way=bychapter] +% \setupuserpagenumber[numberconversionset=pagenumber] +% +% \starttext +% \startfrontmatter +% \completecontent[criterium=all] +% \chapter{tufte} \section{one} \input tufte \page \section{two} \input tufte \page +% \chapter{tufte} \section{one} \input tufte \page \section{two} \input tufte \page +% \stopfrontmatter +% \startbodymatter +% \chapter{knuth} \section{one} \input knuth \page \section{two} \input knuth \page \section{three} \input knuth \page +% \chapter{knuth} \section{one} \input knuth \page \section{two} \input knuth \page \section{three} \input knuth \page +% \stopbodymatter +% \stoptext + + +\definestructurecounter[\s!realpage][\c!prefix=\v!no,\c!start=1,\c!prefixsegments=,\s!counter=realpageno] +\definestructurecounter[\s!userpage][\c!prefix=\v!no,\c!start=1,\c!prefixsegments=,\s!counter=userpageno] +\definestructurecounter[\s!subpage] [\c!prefix=\v!no,\c!start=1,\c!prefixsegments=,\s!counter=subpageno] \newtoks\everysetuprealpagenumber % todo: set state: none, start, stop, reset \newtoks\everysetupuserpagenumber % todo: set state: none, start, stop, reset \newtoks\everysetupsubpagenumber % todo: set state: none, start, stop, reset -\def\setuprealpagenumber{\dosingleargument\dosetuprealpagenumber} -\def\setupuserpagenumber{\dosingleargument\dosetupuserpagenumber} -\def\setupsubpagenumber {\dosingleargument\dosetupsubpagenumber} +\unexpanded\def\setuprealpagenumber{\dosingleargument\dosetuprealpagenumber} +\unexpanded\def\setupuserpagenumber{\dosingleargument\dosetupuserpagenumber} +\unexpanded\def\setupsubpagenumber {\dosingleargument\dosetupsubpagenumber} \def\dosavepagenumberstate#1{\edef\oldpagenumberstate{\structurecounterparameter#1\c!state}} @@ -86,17 +107,22 @@ \let\setuppagenumber\setupuserpagenumber \let\resetpagenumber\resetuserpagenumber -\def\savecurrentpagestate - {\ctxlua{structure.pages.save { +\def\savecurrentpagestate % \normalexpanded? + {\ctxlua{structure.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", - stopper = \!!bs\structurecounterparameter\s!userpage\c!prefixstopper\!!es, segments = "\structurecounterparameter\s!userpage\c!prefixsegments", connector = \!!bs\structurecounterparameter\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, + } + )}} \prependtoks \savecurrentpagestate @@ -216,8 +242,9 @@ % Hooks: +\def\currentpage{\the\realpageno}% rather useless + \appendtoks - \xdef\currentpage{\the\realpageno}% \ifnum\realpageno>\lastpage \globallet\lastpage\lastrealpage \fi \to \everyinitializepagecounters @@ -232,10 +259,13 @@ \def\setnextrealpageno{\global\realpageno\incrementedstructurecounter[\s!realpage]\relax} \def\setnextsubpageno {\global\subpageno \incrementedstructurecounter[\s!subpage ]\relax} -% Page numbers: +% Page numbers: (can move to lua) -\def\dodecrementpagenumber{\global\userpageno\decrementedstructurecounter[\s!userpage]\relax} -\def\doincrementpagenumber{\global\userpageno\incrementedstructurecounter[\s!userpage]\relax} +\def\dodecrementpagenumber {\global\userpageno\decrementedstructurecounter[\s!userpage]\relax} +\def\doincrementpagenumber {\global\userpageno\incrementedstructurecounter[\s!userpage]\relax} + +\def\decrementsubpagenumber{\global\subpageno \decrementedstructurecounter[\s!subpage ]\relax} +\def\incrementsubpagenumber{\global\subpageno \incrementedstructurecounter[\s!subpage ]\relax} \def\dosynchronizepagenumber{\global\let\@@pnstate\v!start} @@ -251,8 +281,6 @@ \setvalue{\??pn+\v!empty}{\doincrementpagenumber\dosynchronizepagenumber} \letvalue{\??pn+\v!keep }\dosynchronizepagenumber -% todo: check if number set, and reset it after testing; also take care of \global\shiftedrealpagenotrue - % Control: \def\getpagestatus % hierboven gebruiken @@ -267,7 +295,7 @@ \newtoks\everysetuppagenumbering -\def\setuppagenumbering +\unexpanded\def\setuppagenumbering {\dosingleempty\dosetuppagenumbering} \def\dosetuppagenumbering[#1]% @@ -293,6 +321,9 @@ \ifdefined \recalculatebackgrounds \recalculatebackgrounds \fi \to \everysetuppagenumbering +\def\flushfinallayoutpage + {\doifsomething\@@nmpage{\doifnot\@@nmpage\v!no{\page[\@@nmpage]}}} + % 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. @@ -395,13 +426,6 @@ {\chardef\overallpagenumberstate\zerocount}% \to \everysetuppagenumbering -% \appendtoks % todo: set state: none, start, stop, reset -% % this makes starting at an even page possible -% \ifnum\realpageno=1 \ifodd\pageno \else -% \global\shiftedrealpagenotrue -% \fi \fi -% \to \everysetupuserpagenumber - % Done % \c!way=\v!by\v!part @@ -417,6 +441,7 @@ \c!width=, % in geval van \v!marginedge \c!left=, \c!right=, + \c!page=\v!last, \c!textseparator=\tfskip, \c!state=\v!start, \c!command=, @@ -434,6 +459,14 @@ \fi \to \everysetupuserpagenumber % todo: set state: none, start, stop, reset +\appendtoks + \edef\askedsubpagenumber{\structurecounterparameter\s!subpage\c!number}% + \ifx\askedsubpagenumber\empty \else + \normalexpanded{\noexpand\setupsubpagenumber[\c!start=\structurecounterparameter\s!subpage\c!number,\c!number=]}% + \subpageno\rawstructurecounter[\s!subpage]% + \fi +\to \everysetupsubpagenumber % todo: set state: none, start, stop, reset + % \setuplayout[width=300pt,backspace=4cm] % \setuppagenumbering [alternative=doublesided] % \setupuserpagenumber[start=2] @@ -442,10 +475,10 @@ \def\checkpagenumbershift {\userpageno\rawstructurecounter[\s!userpage]\relax \ifnum\realpageno=\plusone - \ifodd\userpageno - \else - \global\shiftedrealpagenotrue - \fi + \ifodd\userpageno + \else + \global\pagenoshift\plusone + \fi \fi} \appendtoks % todo: set state: none, start, stop, reset |