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.mkiv60
1 files changed, 31 insertions, 29 deletions
diff --git a/Master/texmf-dist/tex/context/base/strc-pag.mkiv b/Master/texmf-dist/tex/context/base/strc-pag.mkiv
index 0f3d7ba3b07..f4b658365f9 100644
--- a/Master/texmf-dist/tex/context/base/strc-pag.mkiv
+++ b/Master/texmf-dist/tex/context/base/strc-pag.mkiv
@@ -17,10 +17,6 @@
\unprotect
-% Hacks:
-
-\let\preparepageprefix\gobbleoneargument
-
% Allocation:
\countdef\realpageno = 0 \realpageno = 1
@@ -40,7 +36,7 @@
\def\initializepagecounters{\the\everyinitializepagecounters}
\appendtoks
- \initializepagecounters
+ \initializepagecounters
\to \everyjob
% Page numbers are kind of independent of each other and therefore they
@@ -75,10 +71,9 @@
% \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]
+\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]
\newtoks\everysetuprealpagenumber % todo: set state: none, start, stop, reset
\newtoks\everysetupuserpagenumber % todo: set state: none, start, stop, reset
@@ -108,7 +103,7 @@
\let\resetpagenumber\resetuserpagenumber
\def\savecurrentpagestate % \normalexpanded?
- {\ctxlua{structure.pages.save({
+ {\ctxlua{structures.pages.save({
prefix = "\structurecounterparameter\s!userpage\c!prefix",
separatorset = "\structurecounterparameter\s!userpage\c!prefixseparatorset",
conversion = "\structurecounterparameter\s!userpage\c!prefixconversion",
@@ -226,11 +221,18 @@
\def\nextuserpagenumber {\directconvertedstructurecounter\s!userpage\v!next}
\def\nextsubpagenumber {\directconvertedstructurecounter\s!subpage \v!next}
-\appendtoks
- \decrementstructurecounter[\s!realpage]%
+\def\dodeincrementpageboundcounters % only at the end
+ {\decrementstructurecounter[\s!realpage]%
\decrementstructurecounter[\s!userpage]%
- \decrementstructurecounter[\s!subpage]%
-\to\everygoodbye
+ \decrementstructurecounter[\s!subpage ]}
+
+\def\doincrementpageboundcounters
+ {\incrementpagenumber
+ \incrementsubpagenumber}
+
+\appendtoks
+ \dodeincrementpageboundcounters
+\to \everygoodbye
% Equivalents (compatibility):
%
@@ -251,8 +253,8 @@
% States:
\newif\ifrightpage \rightpagetrue
-\newif\ifdoublesided
-\newif\ifsinglesided
+\newif\ifdoublesided \newconditional\layoutisdoublesided
+\newif\ifsinglesided \newconditional\layoutissinglesided
% Realpage and subpage numbers:
@@ -302,12 +304,12 @@
{\getparameters[\??nm][#1]\the\everysetuppagenumbering}
\appendtoks
- \singlesidedfalse
- \doublesidedfalse
+ \singlesidedfalse \setfalse\layoutisdoublesided
+ \doublesidedfalse \setfalse\layoutissinglesided
\normalexpanded{\noexpand\processallactionsinset[\@@nmalternative]}
- [ \v!singlesided=>\singlesidedtrue,
- \v!doublesided=>\doublesidedtrue]%
- \ifx\trackingmarginnotestrue\undefined\else
+ [ \v!singlesided=>\singlesidedtrue\settrue\layoutissinglesided,
+ \v!doublesided=>\doublesidedtrue\settrue\layoutisdoublesided]%
+ \ifdefined\trackingmarginnotestrue
\ifdoublesided
\trackingmarginnotestrue
\else
@@ -395,17 +397,17 @@
% compatible. So, in fact there can be multiple handlers active at the
% same time, but only the current one does something.
-\chardef\realpagenumberstate =2 % counter state : 0=stop, 1=start, 2=start and visible
-\chardef\userpagenumberstate =2 % counter state : 0=stop, 1=start, 2=start and visible
-\chardef\subpagenumberstate =2 % counter state : 0=stop, 1=start, 2=start and visible
-\chardef\overallpagenumberstate=1 % general number: 0=invisible, 1=visible
+\setnewconstant\realpagenumberstate \plustwo % counter state : 0=stop, 1=start, 2=start and visible
+\setnewconstant\userpagenumberstate \plustwo % counter state : 0=stop, 1=start, 2=start and visible
+\setnewconstant\subpagenumberstate \plustwo % counter state : 0=stop, 1=start, 2=start and visible
+\setnewconstant\overallpagenumberstate\plusone % general number: 0=invisible, 1=visible
\def\checkpagenumberstatechange#1#2%
{\edef\newpagenumberstate{\structurecounterparameter#1\c!state}%
\ifx\newpagenumberstate\oldpagenumberstate \else
\doifelse\newpagenumberstate\v!start
- {\chardef#2\plustwo}%
- {\chardef#2\zerocount}%
+ {#2\plustwo}%
+ {#2\zerocount}%
\fi}
\appendtoks % todo: set state: none, start, stop, reset
@@ -422,8 +424,8 @@
\appendtoks % todo: set state: none, start, stop, reset
\doifelse\@@nmstate\v!start
- {\chardef\overallpagenumberstate\plusone}%
- {\chardef\overallpagenumberstate\zerocount}%
+ {\overallpagenumberstate\plusone }%
+ {\overallpagenumberstate\zerocount}%
\to \everysetuppagenumbering
% Done