1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus{loading}{ConTeXt Core Macros Multipass Pagestate}
15
16\unprotect
17
18\newinteger\realpagestateno
19
20\registerctxluafile{corepag}{autosuffix}
21
22\installcorenamespace{pagestate}
23\installcorenamespace{pagestatecounter}
24
25\installcommandhandler \??pagestate {pagestate} \??pagestate
26
27\def\syst_pagestates_allocate
28 {\expandafter\newinteger\csname\??pagestatecounter\currentpagestate\endcsname}
29
30\appendtoks
31 \syst_pagestates_allocate
32\to \everydefinepagestate
33
34\setuppagestate
35 [\c!delay=\v!yes]
36
37\permanent\tolerant\protected\def\setpagestate[#1]#*[#2]
38 {\begingroup
39 \cdef\currentpagestate{#1}
40 \ifcsname\??pagestatecounter\currentpagestate\endcsname
41 \scratchcounter\lastnamedcs
42 \advanceby\scratchcounter\plusone
43 \else
44 \scratchcounter\plusone
45 \syst_pagestates_allocate
46 \fi
47 \global\csname\??pagestatecounter\currentpagestate\endcsname\scratchcounter
48 \clf_setpagestate
49 name {\currentpagestate}
50 tag {\ifparameter#2\or#2\else\the\scratchcounter\fi}
51 delay {\pagestateparameter\c!delay}
52 \relax
53 \endgroup}
54
55\permanent\protected\def\autosetpagestate#1
56 {\setpagestate[#1]\relax}
57
58\permanent\def\autopagestatenumber#1{\begincsname\??pagestatecounter#1\endcsname}
59
60\permanent\def\pagestaterealpage #1#2{\clf_pagestaterealpage {#1}{#2}}
61\permanent\def\setpagestaterealpageno#1#2{\clf_setpagestaterealpageno{#1}{#2}}
62\permanent\def\pagestaterealpageorder#1#2{\clf_pagestaterealpageorder{#1}#2\relax}
63
64\permanent\def\autopagestaterealpage #1{\clf_pagestaterealpage {#1}{\number\autopagestatenumber{#1}}}
65\permanent\def\setautopagestaterealpageno#1{\clf_setpagestaterealpageno{#1}{\number\autopagestatenumber{#1}}}
66\permanent\def\autopagestaterealpageorder#1{\clf_pagestaterealpageorder{#1}\numexpr\autopagestatenumber{#1}\relax}
67
68\protect
69 |