summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/strc-pag.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/strc-pag.mkiv')
-rw-r--r--Master/texmf-dist/tex/context/base/strc-pag.mkiv97
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