s-system-units.mkxl /size: 2668 b    last modification: 2024-01-16 10:22
1%D \module
2%D   [      file=s-system-units.mkxl,
3%D        version=2023.08.16,
4%D          title=\CONTEXT\ Style File,
5%D       subtitle=System Units,
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% \definepalet
15%   [unitclasses]
16%   [1=darkred,    % tex
17%    2=darkblue,   % pdftex
18%    3=darkgreen,  % luametatex
19%    4=darkgray]   % user
20
21\unprotect
22
23\newdimension \unitsmapwidth
24
25\permanent\tolerant\protected\def\showunitsmap[#1]%
26  {\vpack\bgroup \forgetall
27   \ttx \setupinterlinespace
28   \global\unitsmapwidth40\emwidth
29   \hpack to \unitsmapwidth\bgroup
30     \kern\emwidth
31     \localcontrolledloop\alowercaseasciicode\zlowercaseasciicode \plusone
32       {\hss\char\currentloopiterator\hss}%
33   \egroup
34   \ifcstok{#1}\v!tight\globaldonefalse\else\globaldonetrue\fi
35   \localcontrolledloop\alowercaseasciicode\zlowercaseasciicode\plusone
36     {\ifglobaldone\globalfoundtrue\else\globalfoundfalse\fi
37      \setbox\scratchbox\hpack to \unitsmapwidth\bgroup
38      \char\currentloopiterator
39      \bf
40      \hss
41      \localcontrolledloop\alowercaseasciicode\zlowercaseasciicode\plusone
42        {\scratchcounter\associateunit\numexpr
43           (\previousloopiterator\plusone-\alowercaseasciicode)*26+%
44           (\currentloopiterator         -\alowercaseasciicode)%
45         \relax
46         \hss
47         \ifzeronum\scratchcounter
48           \kern\emwidth
49         \else
50           \begingroup
51           \ifcase\scratchcounter\or\darkred\or\darkblue\or\darkgreen\else\darkgray\fi
52           \char\previousloopiterator\plusone
53           \char\currentloopiterator
54           \endgroup
55           \globalfoundtrue
56         \fi
57         \hss}%
58      \egroup
59      \ifglobalfound
60        \box\scratchbox
61      \fi}%
62   \egroup}
63
64\permanent\protected\def\showunitsmaplegend
65  {\hpack\bgroup
66     \ttx\setstrut\white
67     \unitsmapwidth.25\unitsmapwidth
68     \backgroundline[darkred]  {\strut\hbox to \unitsmapwidth{\hss        tex\hss}}%
69     \backgroundline[darkblue] {\strut\hbox to \unitsmapwidth{\hss     pdftex\hss}}%
70     \backgroundline[darkgreen]{\strut\hbox to \unitsmapwidth{\hss luametatex\hss}}%
71     \backgroundline[darkgray] {\strut\hbox to \unitsmapwidth{\hss    context\hss}}%
72   \egroup}
73
74\protect
75
76\continueifinputfile{s-system-units.mkxl}
77
78\starttext
79
80\startTEXpage[offset=1ts]
81    \showunitsmap
82    \showunitsmaplegend
83\stopTEXpage
84
85\startTEXpage[offset=1ts]
86    \showunitsmap[tight]
87    \showunitsmaplegend
88\stopTEXpage
89
90\stoptext
91