page-inf.mkxl /size: 3743 b    last modification: 2023-12-21 09:44
1%D \module
2%D   [       file=page-inf,   % moved from page-ini
3%D        version=2011.12.07, % 2000.10.20,
4%D          title=\CONTEXT\ Page Macros,
5%D       subtitle=Tracing Info,
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 Page Macros / Tracing Info}
15
16% This needs a real cleanup .. will be a more detailed list.
17
18\unprotect
19
20\installcorenamespace{layoutinfo}
21
22\newtoks\everyresetversion
23\newtoks\everysetupversion
24
25\mutable\lettonothing\currentversioninfo
26\mutable\lettonothing\currentversiontext
27
28\let\page_info_add_to_box\gobbleoneargument
29
30\permanent\tolerant\protected\def\setupversion[#1]%
31  {\expand\everyresetversion
32   \ifhastok={#1}%
33     \getdummyparameters[\c!alternative=,\c!text=,#1]%
34     \edef\currentversioninfo{\dummyparameter\c!alternative}%
35     \edef\currentversiontext{\dummyparameter\c!text}%
36   \else
37     \edef\currentversioninfo{#1}%
38     \lettonothing\currentversiontext
39   \fi
40   \ifcsname\??layoutinfo\currentversioninfo\endcsname
41     \let\page_info_add_to_box\page_info_add_to_box_indeed
42   \else
43     \lettonothing\currentversioninfo
44     \let\page_info_add_to_box\gobbleoneargument
45   \fi
46   \expand\everysetupversion}
47
48\aliased\let\version\setupversion
49
50\protected\def\page_info_place_info % at the bottom of the page
51  {\begincsname\??layoutinfo\currentversioninfo\endcsname}
52
53\permanent\protected\def\installversioninfo#1#2%
54  {\defcsname\??layoutinfo#1\endcsname{#2}}
55
56\permanent\protected\def\includeversioninfo#1%
57  {\begincsname\??layoutinfo#1\endcsname}
58
59\installversioninfo\v!final
60  {\lettonothing\currentversioninfo
61   \let\page_info_add_to_box\gobbleoneargument}
62
63\installversioninfo\v!concept
64  {\vskip6\points
65   \hbox to \makeupwidth
66     {\infofont
67      \rlap{\v!concept:\space\currentdate}%
68      \hss
69      \currentversiontext
70      \hss
71      \llap{\page_adapts_status_info}}}
72
73\installversioninfo\v!file
74  {\vskip6\points
75   \hbox to \makeupwidth
76     {\infofont
77      \getmessage\m!system{27}:\space\currentdate\quad
78      \donefalse
79      \ifcstok{\currentproject}{\currentproduct}%
80        \ifcstok{\currentproduct}{\currentcomponent}%
81          \donetrue
82        \fi
83      \fi
84      \ifdone
85        \donefalse
86      \else
87        \ifempty\currentproject   \else \space\v!project  :\space\currentproject  \space \donetrue \fi
88        \ifempty\currentproduct   \else \space\v!product  :\space\currentproduct  \space \donetrue \fi
89        \ifempty\currentcomponent \else \space\v!component:\space\currentcomponent\space \donetrue \fi
90      \fi
91        \ifdone                   \else \space\v!file     :\space\jobname         \space           \fi
92      \hss
93      \currentversiontext
94      \quad
95      \page_adapts_status_info}}
96
97\installversioninfo\v!temporary
98  {\includeversioninfo\v!file}
99
100\appendtoks
101    \overfullrule\zeropoint
102\to \everyresetversion
103
104\appendtoks
105    \ifx\currentversioninfo\v!temporary
106        \overfullrule5\points
107    \fi
108\to \everysetupversion
109
110\newbox\b_page_versions
111
112\def\page_info_add_to_box_indeed#1%
113  {\scratchdimen\wd#1%
114   \setbox\b_page_versions\vpack to \ht#1%
115     {\vfill
116      \settexthoffset
117      \hsize\dimexpr\scratchdimen-2\texthoffset\relax
118      \hkern\texthoffset % brrrr
119      \vbox to \zeropoint{\vss\page_info_place_info}%
120      \vkern\bodyfontsize}%
121   \dp\b_page_versions\zeropoint
122   \wd\b_page_versions\scratchdimen
123   \setbox#1\hpack{\box#1\hkern-\scratchdimen\box\b_page_versions}}
124
125\setupversion % resets
126  [\v!final]
127
128\let\page_info_add_to_box\gobbleoneargument
129
130\protect \endinput
131