%D \module %D [ file=s-math-parameters.mkiv, % was s-mat-12.mkiv %D version=2026.04.02, % 2012.06.06, % whatever, probably a bit earlier %D title=\CONTEXT\ Style File, %D subtitle=Show Math Character Repertoire, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. %D We now use a dedicated file for \MKXL\ so that we can adapt it to the more modern %D approach to math. We now also include a few examples in the documentation suite. %D %D We still chekc for italics even if we no longer use them, just in case an *-nt file %D is used; one never knows. \enabletrackers[pages.timing] \usemodule[s][math-characters] % context --global --bodyfont=lucidaot --result=math-repertoire-lucidaot s-math-repertoire.mkxl % context --global --bodyfont=cambria --result=math-repertoire-cambria s-math-repertoire.mkxl % context --global --bodyfont=xits --result=math-repertoire-xits s-math-repertoire.mkxl % context --global --bodyfont=modern --result=math-repertoire-modern s-math-repertoire.mkxl % context --global --bodyfont=pagella --result=math-repertoire-pagella s-math-repertoire.mkxl % context --global --bodyfont=termes --result=math-repertoire-termes s-math-repertoire.mkxl % context --global --bodyfont=bonum --result=math-repertoire-bonum s-math-repertoire.mkxl % context --parallel math-repertoire.lua \startmodule[math-repertoire] % layout \definecolor[backgroundcolor] [r=.6,g=.6] \definecolor[backgroundcolorx][r=.6] \definecolor[backgroundcolory][g=.6] \definecolor[baselinecolor] [a=1,t=.5,s=.6] \definecolor[charactercolor] [b=.6] \definecolor[italiccolor] [r=.6] \definecolor[anchorcolor] [s=1] \definecolor[pagecolor] [s=.1] \definecolor[nonecolor] [s=.5] \definecolor[textcolor] [s=.9] % \setuppapersize[HD] % % \setuplayout % [page] \setuppapersize [HD+] \setuplayout [backspace=0pt, topspace=0pt, bottomspace=120pt, %1200-1080 bottom=24pt, bottomdistance=5mm, header=0pt, footer=0pt, width=middle, height=middle] \definelayer [page] \setuplayer [page] [width=\textwidth, height=\textheight] \setupbackgrounds [page] [background=color, backgroundcolor=pagecolor] \setupbackgrounds [text][text] [bottomframe=on, framecolor=textcolor, rulethickness=0.025ex] \setupmakeup [standard] [pagestate=start] \setupinteraction [state=start, menu=on] \defineinteractionmenu [ALPHABETS] [bottom] \defineinteractionmenu [alphabets] [bottom] \defineinteractionmenu [symbols] [bottom] \setupinteractionmenu [bottom] [before=\vfill, after=\vfill, left=\hfill, right=\hfill, style=\tt\bf, distance=0pt, color=textcolor, contrastcolor=nonecolor] \startinteractionmenu[bottom] \startgot [firstpage] first \stopgot \quad \startgot [deltapage(-100)] -100 \stopgot \quad \startgot [deltapage(-10)] -10 \stopgot \quad \startgot [previouspage] previous \stopgot \quad \startgot [nextpage] next \stopgot \quad \startgot [deltapage(+10)] +10 \stopgot \quad \startgot [deltapage(+100)] +100 \stopgot \quad \startgot [lastpage] last \stopgot \stopinteractionmenu \startinteractionmenu[ALPHABETS] \startgot [U+00041] NORMAL \stopgot \quad \startgot [U+1D400] BOLD \stopgot \quad \startgot [U+1D434] ITALIC \stopgot \quad \startgot [U+1D468] BOLDITALIC \stopgot \quad \startgot [U+1D49C] SCRIPT \stopgot \quad \startgot [U+1D4D0] BOLDSCRIPT \stopgot \quad \startgot [U+1D504] FRAKTUR \stopgot \quad \startgot [U+1D538] DOUBLESTRUCK \stopgot \quad \startgot [U+1D56C] BOLDFRAKTUR \stopgot \quad \startgot [U+1D5A0] SS NORMAL \stopgot \quad \startgot [U+1D5D4] SS BOLD \stopgot \quad \startgot [U+1D608] SS ITALIC \stopgot \quad \startgot [U+1D63C] SS BOLDITALIC \stopgot \quad \startgot [U+1D670] MONOSPACE \stopgot \quad \startgot [U+00391] GRK NORMAL \stopgot \quad \startgot [U+1D6A8] GRK BOLD \stopgot \quad \startgot [U+1D6E2] GRK ITALIC \stopgot \quad \startgot [U+1D71C] GRK BOLDITALIC \stopgot \quad \startgot [U+1D756] GRK SS BOLD \stopgot \quad \startgot [U+1D790] GRK SS BOLDITALIC \stopgot \stopinteractionmenu \startinteractionmenu[alphabets] \startgot [U+00061] normal \stopgot \quad \startgot [U+1D41A] bold \stopgot \quad \startgot [U+1D44E] italic \stopgot \quad \startgot [U+1D482] bolditalic \stopgot \quad \startgot [U+1D4B6] script \stopgot \quad \startgot [U+1D4EA] boldscript \stopgot \quad \startgot [U+1D51E] fraktur \stopgot \quad \startgot [U+1D552] doublestruck \stopgot \quad \startgot [U+1D586] boldfraktur \stopgot \quad \startgot [U+1D5BA] ss normal \stopgot \quad \startgot [U+1D5EE] ss bold \stopgot \quad \startgot [U+1D622] ss italic \stopgot \quad \startgot [U+1D656] ss bolditalic \stopgot \quad \startgot [U+1D68A] monospace \stopgot \quad \startgot [U+003B1] grk normal \stopgot \quad \startgot [U+1D6C2] grk bold \stopgot \quad \startgot [U+1D6FC] grk italic \stopgot \quad \startgot [U+1D736] grk bolditalic \stopgot \quad \startgot [U+1D770] grk ss bold \stopgot \quad \startgot [U+1D7AA] grk ss bolditalic \stopgot \stopinteractionmenu % \startinteractionmenu[symbols] % \startgot [U+00030] dig normal \stopgot \quad % \startgot [U+1D7CE] dig bold \stopgot \quad % \startgot [U+1D7D8] dig doublestruck \stopgot \quad % \startgot [U+1D7E2] dig ss normal \stopgot \quad % \startgot [U+1D7EC] dig ss bold \stopgot \quad % \startgot [U+1D7F6] dig monospace \stopgot \quad % \startgot [U+02200] operators \stopgot \quad % \startgot [U+02701] symbols a \stopgot \quad % \startgot [U+02901] symbols b \stopgot \quad % \startgot [U+02A00] supplemental \stopgot \quad % \startgot [U+027F0] arrows a \stopgot \quad % \startgot [U+02900] arrows b \stopgot \quad % \startgot [U+1F800] arrows c \stopgot \quad % \removeunwantedspaces % \stopinteractionmenu \startinteractionmenu[symbols] \startgot [U+00030] dig normal \stopgot \quad \startgot [U+1D7CE] dig bold \stopgot \quad \startgot [U+1D7D8] dig doublestruck \stopgot \quad \startgot [U+1D7E2] dig ss normal \stopgot \quad \startgot [U+1D7EC] dig ss bold \stopgot \quad \startgot [U+1D7F6] dig monospace \stopgot \quad \startgot [U+02200] operators \stopgot \quad \startgot [miscellaneousmathematicalsymbolsa] symbols a \stopgot \quad \startgot [miscellaneousmathematicalsymbolsb] symbols b \stopgot \quad \startgot [supplementalmathematicaloperators] supplemental \stopgot \quad \startgot [supplementalarrowsa] arrows a \stopgot \quad \startgot [supplementalarrowsb] arrows b \stopgot \quad \startgot [supplementalarrowsc] arrows c \stopgot \quad \removeunwantedspaces \stopinteractionmenu \defineframed [somedata] [background=color, backgroundcolor=textcolor, %framecolor=charactercolor, %rulethickness=1pt, frame=off, offset=1ex] % helpers \starttexdefinition protected showmathcharacterssetrange #1#2#3 \writestatus{range}{#1: \unihex{#2} - \unihex{#3}} \ifcase#2\relax \definereference[#1][notpresent] \orelse\ifcase#3\relax \definereference[#1][notpresent] \else \normalexpanded{\definereference[#1][\unihex{#2}]} \fi \stoptexdefinition \starttexdefinition protected showmathcharacterstxt #1 \begingroup \tttf#1 \endgroup \stoptexdefinition \starttexdefinition protected showmathcharacterschr #1#2 \iffontchar\font#2\relax \showmathcharacterschrindeed{#1}{#2} \fi \stoptexdefinition \starttexdefinition protected showmathcharacterschrindeed #1#2 \scale [ sx=#1, sy=#1 ] { \dontleavehmode\hpack\bgroup \setbox\scratchbox\hpack\bgroup \charactercolor \char#2\relax \egroup \scratchwidth \wd\scratchbox \scratchheight\ht\scratchbox \scratchdepth \dp\scratchbox \scratchitalic\scaledfontcharic\font#2\relax \scratchtotal \dimexpr\scratchwidth+\scratchitalic\relax \setbox\scratchbox\hpack\bgroup \ifcase\scratchitalic\else \hskip\scratchwidth \ifdim\scratchitalic<\zeropoint \hskip\scratchitalic \scratchitalic-\scratchitalic \fi \italiccolor \vrule width \scratchitalic height \scratchheight depth \scratchdepth \relax \hskip-\scratchtotal \fi \unhbox\scratchbox \egroup \wd\scratchbox\scratchtotal \ifdim\scratchtotal>\zeropoint \backgroundline[backgroundcolor]{\box\scratchbox}% \orelse\ifdim\scratchtotal<\zeropoint % really negative width? \scratchtotal-\scratchtotal \setbox\scratchbox\hpack to \scratchtotal{\hss\charactercolor\char#2}% \backgroundline[backgroundcolorx]{\box\scratchbox}% \else \setbox\scratchbox\hpack to \emwidth{\hss\charactercolor\char#2}% \scratchtotal\wd\scratchbox \backgroundline[backgroundcolory]{\box\scratchbox}% \fi \hskip-\scratchtotal \baselinecolor \vrule width \scratchtotal height .05\exheight depth .05\exheight \relax \scratchdimen\scaledfontcharta\font#2\relax \ifzeropt\scratchdimen\else \hskip-\scratchtotal \hpack to \scratchwidth yoffset \scratchheight \bgroup \hskip\scratchdimen \anchorcolor \vrule width .10\exheight height .05\exheight depth .05\exheight \relax \hss \egroup \hskip\scratchitalic \fi \scratchdimen\scaledfontcharba\font#2\relax \ifzeropt\scratchdimen\else \hskip-\scratchtotal \hpack to \scratchwidth yoffset -\scratchdepth \bgroup \hskip\scratchdimen \anchorcolor \vrule width .10\exheight height .05\exheight depth .05\exheight \relax \hss \egroup \hskip\scratchitalic \fi \egroup } \stoptexdefinition \starttexdefinition protected showmathcharactersmth #1#2 \setbox\scratchbox\hpack \bgroup \showmathcharacterschr{#1}{#2} \egroup \ht\scratchbox\strutht \dp\scratchbox\strutdp \box\scratchbox \stoptexdefinition \let\showmathcharactersbodyfonts\empty \starttexdefinition protected showmathcharactersbodyfontentry #1#2 \somedata [ align={none,middle},background=, height=5cm ] { \begingroup \switchtobodyfont[#2,12pt]% \definedfont[MathRoman*math-text]% \showmathcharactersmth{10}{#1}% \endgroup \vfilll \doifelsemode {crosslink} { \goto { \strut \textcolor \showmathcharacterstxt{#2} } [#2::#1] } { \strut \textcolor \showmathcharacterstxt{#2} } } \hskip\exheight \stoptexdefinition \starttexdefinition protected showmathcharacterssetbodyfonts #1 \edef\showmathcharactersbodyfonts{#1}% \def\doshowmathcharacterssetbodyfonts##1{\usebodyfont[##1,12pt]}% \processcommacommand [\showmathcharactersbodyfonts] \doshowmathcharacterssetbodyfonts \stoptexdefinition \starttexdefinition protected showmathcharactersbodyfontschars #1 \processcommacommand [\showmathcharactersbodyfonts] {\showmathcharactersbodyfontentry{#1}} \stoptexdefinition % main \starttexdefinition protected showmathcharactersstart \starttext \startstandardmakeup % we use baselinecolor so that we have a transparency on page 1 \setupalign[middle] \vfil \dontleavehmode \scale [width=.75\textwidth] {\strut\color[textcolor]{\fontclass}} \vfil \dontleavehmode \scale [height=.1\textheight] {\strut\color[baselinecolor]{\currentdate}} \vfil \vfil \stopstandardmakeup \stoptexdefinition \starttexdefinition protected showmathcharactersstop \stoptext \stoptexdefinition % entry \starttexdefinition protected showmathcharactersstartentry \startstandardmakeup \stoptexdefinition \starttexdefinition protected showmathcharactersstopentry \tightlayer[page] \stopstandardmakeup \stoptexdefinition \starttexdefinition protected showmathcharactersreference #1 \setlayer [page] {\pagereference[#1]} \stoptexdefinition \starttexdefinition protected showmathcharactersentryhexdectit #1#2#3 \setlayer [page] [preset=middletop,voffset=5mm] {\somedata[height=1cm]{\showmathcharacterstxt{#1}}} \setlayer [page] [preset=middle,y=2cm] {\showmathcharactersmth{25}{#2}} \setlayer [page] [preset=righttop,offset=5mm] {\somedata[height=1cm]{\showmathcharacterstxt{#3}}} \doifsomething \showmathcharactersbodyfonts { \setlayer [page] [preset=middlebottom,voffset=5mm] {\showmathcharactersbodyfontschars{#2}} } \stoptexdefinition % dimensions (we can ask them in tex) \uunit 1mm \newdimension\scratchta \newdimension\scratchba \newdimension\scratchrt \newdimension\scratchrb \newdimension\scratchlt \newdimension\scratchlb \starttexdefinition protected showmathcharactersentrywdhtdpicta #1 \setlayer [ page ] [ preset=leftbottom, offset=5uu ] { \somedata [ width=60uu, strut=no, align={snapping:1,normal} ] { \scratchwidth \scaledfontcharwd\font#1 \scratchheight\scaledfontcharht\font#1 \scratchdepth \scaledfontchardp\font#1 \scratchitalic\scaledfontcharic\font#1 \scratchta\scaledfontcharta\font#1 \scratchba\scaledfontcharba\font#1 \scratchrt\scaledfontcharrt\font#1 \scratchrb\scaledfontcharrb\font#1 \scratchlt\scaledfontcharlt\font#1 \scratchlb\scaledfontcharlb\font#1 width\hfill \the\scratchwidth \localbreakpar height\hfill \the\scratchheight\localbreakpar depth\hfill \the\scratchdepth \localbreakpar \ifzeropt\scratchitalic\else italic\hfill \the\scratchitalic\localbreakpar\fi \ifzeropt\scratchta \else top accent\hfill \the\scratchta \localbreakpar\fi \ifzeropt\scratchba \else bottom accent\hfill \the\scratchba \localbreakpar\fi \ifzeropt\scratchrt \else right top kern\hfill \the\scratchrt \localbreakpar\fi \ifzeropt\scratchrb \else right bottom kern\hfill \the\scratchrb \localbreakpar\fi \ifzeropt\scratchlt \else left top kern\hfill \the\scratchlt \localbreakpar\fi \ifzeropt\scratchlb \else left bottom kern\hfill \the\scratchlb \localbreakpar\fi } } \stoptexdefinition \starttexdefinition protected showmathcharactersentryresource #1 % {virtual: #1\par} \stoptexdefinition % next \starttexdefinition protected showmathcharactersstartnext \setlayer [page] [preset=middleleft,hoffset=5mm] \bgroup \vpack\bgroup \stoptexdefinition \starttexdefinition protected showmathcharactersstopnext \egroup \egroup \stoptexdefinition \starttexdefinition protected showmathcharactersnextentry #1#2#3 \ifdim\scratchheight>.5\textheight \ifnum#1>\plusone \vskip.2\exheight \fi \setbox\scratchbox\hpack \bgroup \blackrule[height=.2\exheight,depth=\zeropoint,width=4cm,color=white] \egroup \else \ifnum#1>\plusone \vskip\exheight \fi \setbox\scratchbox\hpack \somedata [align=normal,width=4cm] { \strut \showmathcharacterstxt{#2} \hfill \showmathcharacterschr{2}{#3} } \fi \ifvoid\scratchbox\else \advance\scratchheight\htdp\scratchbox \dontleavehmode \box\scratchbox \par \fi \stoptexdefinition \starttexdefinition protected showmathcharactersnextcycle #1 \ifdim\scratchheight>.5\textheight \ifnum#1>\plusone \vskip.2\exheight \fi \setbox\scratchbox\hpack \bgroup \blackrule[height=.2\exheight,depth=\zeropoint,width=4cm,color=white] \egroup \else \ifnum#1>\plusone \vskip\exheight \fi \setbox\scratchbox\hpack \somedata [align=normal,width=4cm] { \strut \showmathcharacterstxt{cycle} } \fi \ifvoid\scratchbox\else \advance\scratchheight\htdp\scratchbox \dontleavehmode \box\scratchbox \par \fi \stoptexdefinition % variants \starttexdefinition protected showmathcharactersstartvvariants \setlayer [page] [preset=lefttop,offset=5mm] \bgroup \vpack\bgroup \scratchheight\zeropoint \scratchwidth \zeropoint \stoptexdefinition \starttexdefinition protected showmathcharactersstarthvariants \setlayer [page] [preset=lefttop,offset=5mm] \bgroup \hpack\bgroup \scratchheight\zeropoint \scratchwidth \zeropoint \stoptexdefinition \starttexdefinition protected showmathcharactersvvariantsentry #1#2#3 \ifnum#1>\plusone \vskip\exheight \fi \dontleavehmode\somedata [align=middle,width=4cm] { \strut \showmathcharacterstxt{#2} \hfilll \showmathcharacterschr{2}{#3} } \stoptexdefinition \starttexdefinition protected showmathcharactershvariantsentry #1#2#3 \ifnum#1>\plusone \hskip\exheight \else \dontleavehmode \fi \somedata [align={none,middle},height=2cm] { \strut \showmathcharacterstxt{#2} \vfilll \showmathcharacterschr{2}{#3} } \stoptexdefinition \starttexdefinition protected showmathcharactersstopvvariants \egroup \egroup \stoptexdefinition \starttexdefinition protected showmathcharactersstophvariants \egroup \egroup \stoptexdefinition \starttexdefinition protected showmathcharactersbetweennextandvariants \stoptexdefinition % classes \starttexdefinition protected showmathcharactersstartentryclassspec \setlayer [page] [preset=rightbottom,offset=5mm] \bgroup \somedata [align=normal,width=8cm] \bgroup \stoptexdefinition \starttexdefinition protected showmathcharactersstopentryclassspec \egroup \egroup \stoptexdefinition \starttexdefinition protected showmathcharactersentryclassname #1#2 \strut \showmathcharacterstxt{#1} \hfill \showmathcharacterstxt{#2} \par \stoptexdefinition % symbols \starttexdefinition protected showmathcharactersentrysymbol #1#2 \setlayer [page] [preset=leftbottom,hoffset=5mm,voffset=50mm] { \somedata [align=normal,width=5cm] { \showmathcharacterstxt{#1} \hfill \showmathcharacterschr{4}{#2} } } \stoptexdefinition % alternates \starttexdefinition protected showmathcharactersstartlookupvariants \setlayer [page] [preset=middleright,hoffset=5mm] \bgroup \vpack\bgroup \stoptexdefinition \starttexdefinition protected showmathcharactersstoplookupvariants \egroup \egroup \stoptexdefinition \starttexdefinition protected showmathcharacterslookupvariant #1#2#3#4 \ifnum#1>\plusone \vskip\exheight \fi \somedata [align=normal,width=7cm] { \showmathcharacterstxt{#4:} \space \showmathcharacterstxt{#2} \hfill \showmathcharacterschr{4}{#3} } \stoptexdefinition % main % this is a one-run style so we can forget about an alternative % just assume that the previous definitions are global \unprotect \protected\def\showmathfontrepertoire {\dosingleempty\module_math_repertoire_show} % \def\module_math_repertoire_show[#1]% why twice % {\showmathfontcharacters[alternative=,option=,check=yes,#1] % \showmathfontcharacters[alternative=,option=,#1]} \def\module_math_repertoire_show[#1]% why twice {\showmathfontcharacters[alternative=,option=,check=yes,#1]} \protect \stopmodule \continueifinputfile{s-math-repertoire.mkxl} % \enabledirectives[math.nogoodies] % \showmathcharacterssetbodyfonts{lucidaot,cambria,xits,stixtwo,modern,pagella,termes,bonum,schola,dejavu} % \showmathcharacterssetbodyfonts{lucida,cambria,stixtwo,modern,pagella,termes,bonum,schola,ebgaramond,dejavu}% ,modernlatin} % \showmathcharacterssetbodyfonts{newcomputermodern-book,lucidaot,cambria,stixtwo,modern,pagella,termes,bonum,schola,dejavu} % \showmathcharacterssetbodyfonts{newcomputermodern-book,stixtwo,modern,pagella,termes,bonum,schola,dejavu} % \showmathcharacterssetbodyfonts{newcomputermodern-book,lucidaot,cambria,stixtwo,modern,pagella,termes,schola,dejavu} % \showmathcharacterssetbodyfonts{modernlatin,lucidaot,cambria,stixtwo,modern,pagella,termes,schola,dejavu} % \usetypescriptfile[pennstander] % \showmathcharacterssetbodyfonts{ % pennstander-regular,% % pennstander-thin,% % pennstander-extralight,% % pennstander-light,% % pennstander-medium,% % pennstander-semibold,% % pennstander-bold,% % pennstander-extrabold,% % pennstander-black% % } \starttext \doifelse {\getdocumentargument{bodyfont}} {demo} { \showmathcharacterssetbodyfonts{cambria,modern,pagella,termes,bonum,schola,dejavu,lucidaot} } { \doifelse {\getdocumentargument{bodyfont}} {} { % \setupbodyfont[cambria, 12pt] % \setupbodyfont[modern, 12pt] % \setupbodyfont[lmvirtual, 12pt] % \setupbodyfont[pxvirtual, 12pt] % \setupbodyfont[txvirtual, 12pt] % \setupbodyfont[mathtimes, 12pt] % \setupbodyfont[stix, 12pt] % \setupbodyfont[xits, 12pt] % \setupbodyfont[lucida, 12pt] % \setupbodyfont[lucidaot, 12pt] % \setupbodyfont[pagella, 12pt] % \setupbodyfont[bonum, 12pt] % \setupbodyfont[schola, 12pt] % \setupbodyfont[dejavu, 12pt] % \setupbodyfont[lucida, 12pt] % \setupbodyfont[newcomputermodern-book, 12pt] % \setupbodyfont[pennstander-regular, 12pt] % \setupbodyfont[pennstander-thin, 12pt] % \setupbodyfont[pennstander-extralight, 12pt] % \setupbodyfont[pennstander-light, 12pt] % \setupbodyfont[pennstander-medium, 12pt] % \setupbodyfont[pennstander-semibold, 12pt] % \setupbodyfont[pennstander-bold, 12pt] % \setupbodyfont[pennstander-extrabold, 12pt] % \setupbodyfont[pennstander-black, 12pt] } { \normalexpanded{\setupbodyfont[\getdocumentargument{bodyfont},12pt]} } } \showmathfontrepertoire \stoptext