s-math-repertoire.mkiv /size: 18 Kb    last modification: 2023-12-21 09:45
1%D \module
2%D   [      file=s-math-parameters.mkiv, % was s-mat-12.mkiv
3%D        version=2012.06.06, % whatever, probably a bit earlier
4%D          title=\CONTEXT\ Style File,
5%D       subtitle=Show Math Character Repertoire,
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\enabletrackers[pages.timing]
15
16\enableexperiments[fonts.compact]
17
18\usemodule[s][math-characters]
19
20% context --global --bodyfont=lucidaot --result=math-repertoire-lucidaot s-math-repertoire.mkiv
21% context --global --bodyfont=cambria  --result=math-repertoire-cambria  s-math-repertoire.mkiv
22% context --global --bodyfont=xits     --result=math-repertoire-xits     s-math-repertoire.mkiv
23% context --global --bodyfont=modern   --result=math-repertoire-modern   s-math-repertoire.mkiv
24% context --global --bodyfont=pagella  --result=math-repertoire-pagella  s-math-repertoire.mkiv
25% context --global --bodyfont=termes   --result=math-repertoire-termes   s-math-repertoire.mkiv
26% context --global --bodyfont=bonum    --result=math-repertoire-bonum    s-math-repertoire.mkiv
27
28\startmodule[math-repertoire]
29
30% layout
31
32\definecolor[backgroundcolor] [r=.6,g=.6]
33\definecolor[backgroundcolorx][r=.6]
34\definecolor[backgroundcolory][g=.6]
35\definecolor[baselinecolor]   [a=1,t=.5,s=.6]
36\definecolor[charactercolor]  [b=.6]
37\definecolor[italiccolor]     [r=.6]
38\definecolor[anchorcolor]     [s=1]
39\definecolor[pagecolor]       [s=.1]
40\definecolor[nonecolor]       [s=.5]
41\definecolor[textcolor]       [s=.9]
42
43% \setuppapersize[HD]
44%
45% \setuplayout
46%   [page]
47
48\setuppapersize
49  [HD+]
50
51\setuplayout
52  [backspace=0pt,
53   topspace=0pt,
54   bottomspace=120pt, %1200-1080
55   bottom=24pt,
56   bottomdistance=5mm,
57   header=0pt,
58   footer=0pt,
59   width=middle,
60   height=middle]
61
62\definelayer
63  [page]
64
65\setuplayer
66  [page]
67  [width=\textwidth,
68   height=\textheight]
69
70\setupbackgrounds
71  [page]
72  [background=color,
73   backgroundcolor=pagecolor]
74
75\setupbackgrounds
76  [text][text]
77  [bottomframe=on,
78   framecolor=textcolor,
79   rulethickness=0.025ex]
80
81\setupmakeup
82  [standard]
83  [pagestate=start]
84
85\setupinteraction
86  [state=start,
87   menu=on]
88
89\defineinteractionmenu
90  [ALPHABETS]
91  [bottom]
92
93\defineinteractionmenu
94  [alphabets]
95  [bottom]
96
97\defineinteractionmenu
98  [symbols]
99  [bottom]
100
101\setupinteractionmenu
102  [bottom]
103  [before=\vfill,
104   after=\vfill,
105   left=\hfill,
106   right=\hfill,
107   style=\tt\bf,
108   distance=0pt,
109   color=textcolor,
110   contrastcolor=nonecolor]
111
112\def\showmathcharacterssetrange#1#2#3%
113  {\writestatus{range}{#1: \unihex{#2} - \unihex{#3}}%
114   \ifcase#2\relax
115     \definereference[#1][notpresent]%
116   \else\ifcase#3\relax
117     \definereference[#1][notpresent]%
118   \else
119     \normalexpanded{\definereference[#1][\unihex{#2}]}%
120   \fi\fi}
121
122\startinteractionmenu[bottom]
123    \startgot [firstpage]       first    \stopgot \quad
124    \startgot [deltapage(-100)] -100     \stopgot \quad
125    \startgot [deltapage(-10)]  -10      \stopgot \quad
126    \startgot [previouspage]    previous \stopgot \quad
127    \startgot [nextpage]        next     \stopgot \quad
128    \startgot [deltapage(+10)]  +10      \stopgot \quad
129    \startgot [deltapage(+100)] +100     \stopgot \quad
130    \startgot [lastpage]        last     \stopgot
131\stopinteractionmenu
132
133\startinteractionmenu[ALPHABETS]
134    \startgot [U+00041] NORMAL            \stopgot \quad
135    \startgot [U+1D400] BOLD              \stopgot \quad
136    \startgot [U+1D434] ITALIC            \stopgot \quad
137    \startgot [U+1D468] BOLDITALIC        \stopgot \quad
138    \startgot [U+1D49C] SCRIPT            \stopgot \quad
139    \startgot [U+1D4D0] BOLDSCRIPT        \stopgot \quad
140    \startgot [U+1D504] FRAKTUR           \stopgot \quad
141    \startgot [U+1D538] DOUBLESTRUCK      \stopgot \quad
142    \startgot [U+1D56C] BOLDFRAKTUR       \stopgot \quad
143    \startgot [U+1D5A0] SS NORMAL         \stopgot \quad
144    \startgot [U+1D5D4] SS BOLD           \stopgot \quad
145    \startgot [U+1D608] SS ITALIC         \stopgot \quad
146    \startgot [U+1D63C] SS BOLDITALIC     \stopgot \quad
147    \startgot [U+1D670] MONOSPACE         \stopgot \quad
148    \startgot [U+00391] GRK NORMAL        \stopgot \quad
149    \startgot [U+1D6A8] GRK BOLD          \stopgot \quad
150    \startgot [U+1D6E2] GRK ITALIC        \stopgot \quad
151    \startgot [U+1D71C] GRK BOLDITALIC    \stopgot \quad
152    \startgot [U+1D756] GRK SS BOLD       \stopgot \quad
153    \startgot [U+1D790] GRK SS BOLDITALIC \stopgot
154\stopinteractionmenu
155
156\startinteractionmenu[alphabets]
157    \startgot [U+00061] normal            \stopgot \quad
158    \startgot [U+1D41A] bold              \stopgot \quad
159    \startgot [U+1D44E] italic            \stopgot \quad
160    \startgot [U+1D482] bolditalic        \stopgot \quad
161    \startgot [U+1D4B6] script            \stopgot \quad
162    \startgot [U+1D4EA] boldscript        \stopgot \quad
163    \startgot [U+1D51E] fraktur           \stopgot \quad
164    \startgot [U+1D552] doublestruck      \stopgot \quad
165    \startgot [U+1D586] boldfraktur       \stopgot \quad
166    \startgot [U+1D5BA] ss normal         \stopgot \quad
167    \startgot [U+1D5EE] ss bold           \stopgot \quad
168    \startgot [U+1D622] ss italic         \stopgot \quad
169    \startgot [U+1D656] ss bolditalic     \stopgot \quad
170    \startgot [U+1D68A] monospace         \stopgot \quad
171    \startgot [U+003B1] grk normal        \stopgot \quad
172    \startgot [U+1D6C2] grk bold          \stopgot \quad
173    \startgot [U+1D6FC] grk italic        \stopgot \quad
174    \startgot [U+1D736] grk bolditalic    \stopgot \quad
175    \startgot [U+1D770] grk ss bold       \stopgot \quad
176    \startgot [U+1D7AA] grk ss bolditalic \stopgot
177\stopinteractionmenu
178
179% \startinteractionmenu[symbols]
180%     \startgot [U+00030] dig normal       \stopgot \quad
181%     \startgot [U+1D7CE] dig bold         \stopgot \quad
182%     \startgot [U+1D7D8] dig doublestruck \stopgot \quad
183%     \startgot [U+1D7E2] dig ss normal    \stopgot \quad
184%     \startgot [U+1D7EC] dig ss bold      \stopgot \quad
185%     \startgot [U+1D7F6] dig monospace    \stopgot \quad
186%     \startgot [U+02200] operators        \stopgot \quad
187%     \startgot [U+02701] symbols a        \stopgot \quad
188%     \startgot [U+02901] symbols b        \stopgot \quad
189%     \startgot [U+02A00] supplemental     \stopgot \quad
190%     \startgot [U+027F0] arrows a         \stopgot \quad
191%     \startgot [U+02900] arrows b         \stopgot \quad
192%     \startgot [U+1F800] arrows c         \stopgot
193% \stopinteractionmenu
194
195\startinteractionmenu[symbols]
196    \startgot [U+00030] dig normal       \stopgot \quad
197    \startgot [U+1D7CE] dig bold         \stopgot \quad
198    \startgot [U+1D7D8] dig doublestruck \stopgot \quad
199    \startgot [U+1D7E2] dig ss normal    \stopgot \quad
200    \startgot [U+1D7EC] dig ss bold      \stopgot \quad
201    \startgot [U+1D7F6] dig monospace    \stopgot \quad
202    \startgot [U+02200] operators        \stopgot \quad
203    \startgot [miscellaneousmathematicalsymbolsa] symbols a    \stopgot \quad
204    \startgot [miscellaneousmathematicalsymbolsb] symbols b    \stopgot \quad
205    \startgot [supplementalmathematicaloperators] supplemental \stopgot \quad
206    \startgot [supplementalarrowsa]               arrows a     \stopgot \quad
207    \startgot [supplementalarrowsb]               arrows b     \stopgot \quad
208    \startgot [supplementalarrowsc]               arrows c     \stopgot \quad
209    \removeunwantedspaces
210\stopinteractionmenu
211
212\defineframed
213  [somedata]
214  [background=color,
215   backgroundcolor=textcolor,
216  %framecolor=charactercolor,
217  %rulethickness=1pt,
218   frame=off,
219   offset=1ex]
220
221% helpers
222
223\unexpanded\def\showmathcharacterstxt#1%
224  {{\tttf#1}}
225
226\unexpanded\def\showmathcharacterschr#1#2%
227  {\iffontchar\font#2\relax
228     \scale
229       [sx=#1,sy=#1]
230       {\dontleavehmode\hbox\bgroup
231        \setbox\scratchbox\hbox\bgroup
232          \charactercolor
233          \char#2\relax
234        \egroup
235        \scratchwidth \wd\scratchbox
236        \scratchheight\ht\scratchbox
237        \scratchdepth \dp\scratchbox
238        \scratchitalic\ifdefined\glyphscale\glyphxscaled\fontcharic\font#2\relax\else\zeropoint\fi
239        \setbox\scratchbox\hbox\bgroup
240          \ifdim\scratchitalic=\zeropoint\else
241            \hskip\scratchwidth
242            \ifdim\scratchitalic<\zeropoint
243              \hskip\scratchitalic
244              \scratchitalic-\scratchitalic
245            \fi
246            \italiccolor
247            \vrule
248              width  \scratchitalic
249              height \scratchheight
250              depth  \scratchdepth
251            \relax
252            \hskip-\dimexpr\scratchwidth+\scratchitalic\relax
253          \fi
254          \unhbox\scratchbox
255        \egroup
256        \scratchtotal\dimexpr\scratchwidth+\scratchitalic\relax
257        \wd\scratchbox\scratchtotal
258        %
259        \ifdim\scratchtotal>\zeropoint
260          \backgroundline[backgroundcolor]{\box\scratchbox}%
261        \else\ifdim\scratchtotal<\zeropoint
262          % really negative width?
263          \scratchtotal-\scratchtotal
264          \setbox\scratchbox\hbox to \scratchtotal{\hss\charactercolor\char#2}%
265          \backgroundline[backgroundcolorx]{\box\scratchbox}%
266        \else
267          \setbox\scratchbox\hbox to \emwidth{\hss\charactercolor\char#2}%
268          \scratchtotal\wd\scratchbox
269          \backgroundline[backgroundcolory]{\box\scratchbox}%
270        \fi\fi
271        \hskip-\scratchtotal
272        \baselinecolor\vrule width \scratchtotal height .05\exheight depth .05\exheight
273        %
274        \ifdefined\glyphscale
275          \scratchdimen\glyphyscaled\fontcharta\font#2\relax
276          \ifdim\scratchdimen=\zeropoint\else
277             \hskip-\scratchtotal
278             \hbox to \scratchwidth yoffset \scratchheight \bgroup
279               \hskip\scratchdimen
280               \anchorcolor
281               \vrule
282                 width  .10\exheight
283                 height .05\exheight
284                 depth  .05\exheight
285               \relax
286               \hss
287             \egroup
288             \hskip\scratchitalic
289          \fi
290        \fi
291        \egroup}%
292   \fi}
293
294\unexpanded\def\showmathcharactersmth#1#2%
295  {\setbox\scratchbox\hbox{\showmathcharacterschr{#1}{#2}}%
296   \ht\scratchbox\strutht
297   \dp\scratchbox\strutdp
298   \box\scratchbox}
299
300\let\showmathcharactersbodyfonts\empty
301
302\unexpanded\def\showmathcharactersbodyfontentry#1#2%
303  {\somedata
304     [align={none,middle},background=,height=5cm]
305     {\begingroup
306      \switchtobodyfont[#2,12pt]%
307      \definedfont[MathRoman*math-text]%
308      \showmathcharactersmth{10}{#1}%
309      \endgroup
310      \vfilll
311      \doifelsemode{crosslink}
312        {\goto{\strut\textcolor\showmathcharacterstxt{#2}}[#2::#1]}%
313              {\strut\textcolor\showmathcharacterstxt{#2}}}%
314   \hskip1ex}
315
316\unexpanded\def\showmathcharacterssetbodyfonts#1%
317  {\edef\showmathcharactersbodyfonts{#1}%
318%    \def\doshowmathcharacterssetbodyfonts##1{\setupbodyfont[##1,12pt]}% \usebodyfont[##1,12pt]%
319   \def\doshowmathcharacterssetbodyfonts##1{\usebodyfont[##1,12pt]}%
320   \processcommacommand[\showmathcharactersbodyfonts]\doshowmathcharacterssetbodyfonts}
321
322\unexpanded\def\showmathcharactersbodyfontschars#1%
323  {\processcommacommand[\showmathcharactersbodyfonts]{\showmathcharactersbodyfontentry{#1}}}
324
325% main
326
327\unexpanded\def\showmathcharactersstart
328  {\starttext
329   \startstandardmakeup % we use baselinecolor so that we have a transparency on page 1
330     \setupalign[middle]
331     \vfil
332%      \dontleavehmode \scale[height=.3\textheight]{\strut\color[textcolor]{\fontclass}}
333     \dontleavehmode \scale[width=.75\textwidth]{\strut\color[textcolor]{\fontclass}}
334     \vfil
335     \dontleavehmode \scale[height=.1\textheight]{\strut\color[baselinecolor]{\currentdate}}
336     \vfil
337     \vfil
338   \stopstandardmakeup}
339
340\unexpanded\def\showmathcharactersstop
341  {\stoptext}
342
343% entry
344
345\unexpanded\def\showmathcharactersstartentry
346  {\startstandardmakeup}
347
348\unexpanded\def\showmathcharactersstopentry
349  {\tightlayer[page]
350   \stopstandardmakeup}
351
352\unexpanded\def\showmathcharactersreference#1%
353  {\setlayer[page]{\pagereference[#1]}}
354
355\unexpanded\def\showmathcharactersentryhexdectit#1#2#3%
356  {\setlayer
357     [page]
358     [preset=middletop,voffset=5mm]
359     {\somedata[height=1cm]{\showmathcharacterstxt{#1}}}
360   \setlayer
361     [page]
362     [preset=middle,y=2cm]
363     {\showmathcharactersmth{25}{#2}}
364   \setlayer
365     [page]
366     [preset=righttop,offset=5mm]
367     {\somedata[height=1cm]{\showmathcharacterstxt{#3}}}
368   \doifsomething\showmathcharactersbodyfonts
369     {\setlayer
370        [page]
371        [preset=middlebottom,voffset=5mm]
372        {\showmathcharactersbodyfontschars{#2}}}}
373
374% dimensions (we can ask them in tex)
375
376\ifcase\contextlmtxmode
377
378    \unexpanded\def\showmathcharactersentrywdhtdpicta#1#2#3#4#5%
379      {\setlayer
380         [page]
381         [preset=leftbottom,offset=5mm]
382         {\somedata[align=normal,width=5cm]
383            {\strut width \hfill \the\dimexpr#1\scaledpoint\par
384             \strut height\hfill \the\dimexpr#2\scaledpoint\par
385             \strut depth \hfill \the\dimexpr#3\scaledpoint\par
386             \ifnum#4=\zerocount\else
387             \strut italic\hfill \the\dimexpr#4\scaledpoint\par
388             \fi
389             \ifnum#5=\zerocount\else
390             \strut accent\hfill \the\dimexpr#5\scaledpoint
391             \fi
392            }}}
393
394\else
395
396    \unexpanded\def\showmathcharactersentrywdhtdpicta#1%
397      {\setlayer
398         [page]
399         [preset=leftbottom,offset=5mm]
400         {\somedata[align=normal,width=5cm]
401            {\scratchwidth \glyphxscaled\fontcharwd\font#1%
402             \scratchheight\glyphxscaled\fontcharht\font#1%
403             \scratchdepth \glyphxscaled\fontchardp\font#1%
404             \scratchitalic\glyphxscaled\fontcharic\font#1%
405             \scratchdimen \glyphxscaled\fontcharta\font#1%
406             \strut width \hfill \the\scratchwidth \par
407             \strut height\hfill \the\scratchheight\par
408             \strut depth \hfill \the\scratchdepth \par
409             \ifnum\scratchitalic=\zerocount\else
410             \strut italic\hfill \the\scratchitalic\par
411             \fi
412             \ifnum\scratchdimen=\zerocount\else
413             \strut accent\hfill \the\scratchdimen
414             \fi
415            }}}
416
417\fi
418
419\unexpanded\def\showmathcharactersentryresource#1%
420  {} % {virtual: #1\par}
421
422% next
423
424\unexpanded\def\showmathcharactersstartnext
425  {\setlayer
426     [page]
427     [preset=middleleft,hoffset=5mm]
428     \bgroup\vbox\bgroup}
429
430\unexpanded\def\showmathcharactersstopnext
431  {\egroup\egroup}
432
433\unexpanded\def\showmathcharactersnextentry#1#2#3%
434  {\ifnum#1>1 \vskip\exheight \fi
435   \dontleavehmode\somedata
436     [align=normal,width=4cm]
437     {\strut\showmathcharacterstxt{#2}\hfill\showmathcharacterschr{2}{#3}}\par}
438
439\unexpanded\def\showmathcharactersnextcycle#1%
440  {\ifnum#1>1 \vskip\exheight \fi
441   \dontleavehmode\somedata
442     [align=normal,width=4cm]
443     {\strut\showmathcharacterstxt{cycle}}\par}
444
445% variants
446
447\unexpanded\def\showmathcharactersstartvvariants
448  {\setlayer
449     [page]
450     [preset=lefttop,offset=5mm]
451     \bgroup\vbox\bgroup}
452
453\unexpanded\def\showmathcharactersstarthvariants
454  {\setlayer
455     [page]
456     [preset=lefttop,offset=5mm]
457     \bgroup\hbox\bgroup}
458
459\unexpanded\def\showmathcharactersvvariantsentry#1#2#3%
460  {\ifnum#1>1 \vskip\exheight \fi
461   \dontleavehmode\somedata
462     [align=middle,width=4cm]
463     {\strut\showmathcharacterstxt{#2}\hfilll\showmathcharacterschr{2}{#3}}}
464
465\unexpanded\def\showmathcharactershvariantsentry#1#2#3%
466  {\ifnum#1>1 \hskip\exheight \else \dontleavehmode \fi
467   \somedata
468     [align={none,middle},height=2cm]
469     {\strut\showmathcharacterstxt{#2}\vfilll\showmathcharacterschr{2}{#3}}}
470
471\unexpanded\def\showmathcharactersstopvvariants
472  {\egroup\egroup}
473
474\unexpanded\def\showmathcharactersstophvariants
475  {\egroup\egroup}
476
477\unexpanded\def\showmathcharactersbetweennextandvariants
478  {}
479
480% classes
481
482\unexpanded\def\showmathcharactersstartentryclassspec
483  {\setlayer
484     [page]
485     [preset=rightbottom,offset=5mm]
486     \bgroup\somedata[align=normal,width=8cm]\bgroup}
487
488\unexpanded\def\showmathcharactersstopentryclassspec
489  {\egroup\egroup}
490
491\unexpanded\def\showmathcharactersentryclassname#1#2%
492  {\strut{\showmathcharacterstxt#1}\hfill\showmathcharacterstxt{#2}\par}
493
494% symbols
495
496\unexpanded\def\showmathcharactersentrysymbol#1#2%
497  {\setlayer
498     [page]
499     [preset=leftbottom,hoffset=5mm,voffset=50mm]
500     {\somedata
501        [align=normal,width=5cm]
502        {\showmathcharacterstxt{#1}\hfill\showmathcharacterschr{4}{#2}}}}
503
504% alternates
505
506\unexpanded\def\showmathcharactersstartlookupvariants
507  {\setlayer
508     [page]
509     [preset=middleright,hoffset=5mm]
510     \bgroup\vbox\bgroup}
511
512\unexpanded\def\showmathcharactersstoplookupvariants
513  {\egroup\egroup}
514
515\unexpanded\def\showmathcharacterslookupvariant#1#2#3#4%
516  {\ifnum#1>1 \vskip\exheight \fi
517   \somedata
518     [align=normal,width=7cm]
519     {\showmathcharacterstxt{#4:} \showmathcharacterstxt{#2}\hfill\showmathcharacterschr{4}{#3}}}
520
521% main
522
523% this is a one-run style so we can forget about an alternative
524% just assume that the previous definitions are global
525
526\unprotect
527
528\unexpanded\def\showmathfontrepertoire
529  {\dosingleempty\module_math_repertoire_show}
530
531\def\module_math_repertoire_show[#1]%
532  {\showmathfontcharacters[alternative=,option=,check=yes,#1]
533   \showmathfontcharacters[alternative=,option=,#1]}
534
535\protect
536
537\stopmodule
538
539\continueifinputfile{s-math-repertoire.mkiv}
540
541% \enabledirectives[math.nogoodies]
542
543% \showmathcharacterssetbodyfonts{lucidaot,cambria,xits,stixtwo,modern,pagella,termes,bonum,schola,dejavu}
544\showmathcharacterssetbodyfonts{lucida,cambria,stixtwo,modern,pagella,termes,bonum,schola,ebgaramond,dejavu}% ,modernlatin}
545% \showmathcharacterssetbodyfonts{newcomputermodern-book,lucidaot,cambria,stixtwo,modern,pagella,termes,bonum,schola,dejavu}
546% \showmathcharacterssetbodyfonts{newcomputermodern-book,stixtwo,modern,pagella,termes,bonum,schola,dejavu}
547% \showmathcharacterssetbodyfonts{newcomputermodern-book,lucidaot,cambria,stixtwo,modern,pagella,termes,schola,dejavu}
548% \showmathcharacterssetbodyfonts{modernlatin,lucidaot,cambria,stixtwo,modern,pagella,termes,schola,dejavu}
549
550\starttext
551
552    \doifelse {\getdocumentargument{bodyfont}} {} {
553
554      % \setupbodyfont[cambria,                12pt]
555      % \setupbodyfont[modern,                 12pt]
556      % \setupbodyfont[lmvirtual,              12pt]
557      % \setupbodyfont[pxvirtual,              12pt]
558      % \setupbodyfont[txvirtual,              12pt]
559      % \setupbodyfont[palatino,               10pt]
560      % \setupbodyfont[mathtimes,              12pt]
561      % \setupbodyfont[stix,                   12pt]
562      % \setupbodyfont[xits,                   12pt]
563      % \setupbodyfont[lucida,                 12pt]
564      % \setupbodyfont[lucidaot,               12pt]
565      % \setupbodyfont[pagella,                12pt]
566      % \setupbodyfont[bonum,                  12pt]
567      % \setupbodyfont[schola,                 12pt]
568      % \setupbodyfont[dejavu,                 12pt]
569        \setupbodyfont[lucida,                 12pt]
570      % \setupbodyfont[newcomputermodern-book, 12pt]
571
572    } {
573
574        \normalexpanded{\setupbodyfont[\getdocumentargument{bodyfont},12pt]}
575
576    }
577
578    \showmathfontrepertoire
579
580\stoptext
581
582