summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/core-dat.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/core-dat.mkiv')
-rw-r--r--tex/context/base/mkiv/core-dat.mkiv33
1 files changed, 28 insertions, 5 deletions
diff --git a/tex/context/base/mkiv/core-dat.mkiv b/tex/context/base/mkiv/core-dat.mkiv
index 3bb923af4..b159fccf8 100644
--- a/tex/context/base/mkiv/core-dat.mkiv
+++ b/tex/context/base/mkiv/core-dat.mkiv
@@ -73,9 +73,18 @@
{\clf_datasetvariable{#1}{#2}{#3}}
\installcorenamespace{pagestate}
+\installcorenamespace{pagestatecounter}
\installcommandhandler \??pagestate {pagestate} \??pagestate
+\def\syst_pagestates_allocate
+ {\expandafter\newcount\csname\??pagestatecounter\currentpagestate\endcsname
+ \expandafter\let\expandafter\c_syst_pagestate\csname\??pagestatecounter\currentpagestate\endcsname}
+
+\appendtoks
+ \syst_pagestates_allocate
+\to \everydefinepagestate
+
\setuppagestate
[\c!delay=\v!yes]
@@ -85,17 +94,31 @@
\def\syst_pagestates_set[#1][#2]%
{\begingroup
\edef\currentpagestate{#1}%
+ \ifcsname\??pagestatecounter\currentpagestate\endcsname
+ \let\c_syst_pagestate\lastnamedcs
+ \else
+ \syst_pagestates_allocate
+ \fi
+ \global\advance\c_syst_pagestate\plusone
+ \scratchcounter\lastnamedcs
\clf_setpagestate
name {\currentpagestate}%
- tag {#2}%
+ tag {\ifsecondargument#2\else\number\c_syst_pagestate\fi}%
delay {\pagestateparameter\c!delay}%
\relax
\endgroup}
-\def\pagestaterealpage#1#2%
- {\clf_pagestaterealpage{#1}{#2}}
+\unexpanded\def\autosetpagestate#1%
+ {\secondargumentfalse\syst_pagestates_set[#1]}
+
+\def\autopagestatenumber#1{\begincsname\??pagestatecounter#1\endcsname}
+
+\def\pagestaterealpage #1#2{\clf_pagestaterealpage {#1}{#2}}
+\def\setpagestaterealpageno#1#2{\clf_setpagestaterealpageno{#1}{#2}}
+\def\pagestaterealpageorder#1#2{\clf_pagestaterealpageorder{#1}#2\relax}
-\def\setpagestaterealpageno#1#2%
- {\clf_setpagestaterealpageno{#1}{#2}}
+\def\autopagestaterealpage #1{\clf_pagestaterealpage {#1}{\number\autopagestatenumber{#1}}}
+\def\setautopagestaterealpageno#1{\clf_setpagestaterealpageno{#1}{\number\autopagestatenumber{#1}}}
+\def\autopagestaterealpageorder#1{\clf_pagestaterealpageorder{#1}\autopagestatenumber{#1}\relax}
\protect