core-pag.mkxl /size: 2252 b    last modification: 2024-01-16 10:22
1%D \module
2%D   [       file=core-pag,
3%D        version=2023.03.23, % moved from core-dat
4%D          title=\CONTEXT\ Core Macros,
5%D       subtitle=Multipass Pagestate,
6%D         author=Hans Hagen,
7%D           date=\currentdate,
8%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
9%C
10%C This module is part of the \CONTEXT\ macro||package and is
11%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
12%C details.
13
14\writestatus{loading}{ConTeXt Core Macros / Multipass Pagestate}
15
16\unprotect
17
18\newinteger\realpagestateno
19
20\registerctxluafile{core-pag}{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