m-electrons.mkxl /size: 2694 b    last modification: 2025-02-21 11:03
1%D \module
2%D   [       file=m-electrons,
3%D        version=2024.10.30,
4%D          title=\CONTEXT\ Extra Modules,
5%D       subtitle=messing with electrons,
6%D         author={Hans Hagen & Wolfgang Schuster},
7%D           date=\currentdate,
8%D      copyright={\CONTEXT\ Development Team}]
9
10% This is a follow up on mails to the list by Jorge and Bruce.
11
12\startmodule [m-electrons]
13
14\unprotect
15
16\installcorenamespace {electrons}
17
18\installframedcommandhandler \??electrons {electrons} \??electrons
19
20\setupelectrons
21  [\c!textstyle=\tfxx,
22   \c!distance=.5\strutdp,
23   \c!voffset=.5\strutdp,
24   \c!strut=\v!no,
25   \c!width=\lineheight,
26   \c!height=\lineheight,
27   \c!foregroundstyle=\electronsparameter\c!style,
28   \c!foregroundcolor=\electronsparameter\c!color]
29
30\starttexdefinition tolerant protected electrons[#1]#*#:#=#=
31    \dontleavehmode
32    \begingroup
33    \ifparameter#1\or
34      \cdef\currentelectrons{#1}%
35    \fi
36    \setbox\scratchboxone\hpack\bgroup
37      \doloopovermatch {.} {#2} {
38        \doifsymboldefinedelse{electron:##1}
39          {\inheritedelectronsframed{\symbol[electron:##1]}}
40          {\inheritedelectronsframed{\symbol[\v!none]}}
41        \hskip-\linewidth
42      }
43      \unskip
44    \egroup
45    \ifparameter#3\or
46      \setbox\scratchboxtwo\hbox to \wd\scratchboxone\bgroup
47         \useelectronsstyleandcolor\c!textstyle\c!textcolor
48         \setstrut\strut
49         \hss#3\hss
50      \egroup
51      \setbox\scratchboxone\hpack \bgroup
52        \box\scratchboxone
53        \hkern-\wd\scratchboxtwo
54        \boxymove\scratchboxtwo\dimexpr
55           -\htdp\scratchboxtwo
56           +\electronsparameter\c!distance
57        \relax
58        \box\scratchboxtwo
59       \egroup
60    \fi
61    \boxymove\scratchboxone-\electronsparameter\c!voffset
62    \box\scratchboxone
63    \endgroup
64\stoptexdefinition
65
66\definesymbol[electron:u][\m{\upharpoonleft}]
67\definesymbol[electron:d][\m{\downharpoonright}]
68\definesymbol[electron:b][\m{\upharpoonleft\downharpoonright}]
69
70\definesymbol[electron:B][\m{\darkred \symbol[electron:b]}]
71\definesymbol[electron:D][\m{\darkblue\symbol[electron:d]}]
72
73\stopmodule
74
75\protect
76
77\continueifinputfile{m-electrons.mkxl}
78
79\usemodule[scite]
80
81\starttext
82
83\startTEXpage[offset=1cm,width=17cm]
84
85\startbuffer[b]
86Nitrogen: \electrons{b}{1s} \electrons{b}{2s} \electrons{uuu}{2p}
87
88Nitrogen: \electrons{b}{} \electrons{B}{} \electrons{uDu}{}
89
90\defineelectrons [nitrogen]
91\setupelectrons  [nitrogen] [color=darkgreen]
92
93Nitrogen:
94    \electrons[nitrogen]{b}{}
95    \electrons[nitrogen]{B}{}
96    \electrons[nitrogen]{uDu}{2p}
97\stopbuffer
98
99\typebuffer[b][option=TEX]
100
101\getbuffer[b]
102
103\stopTEXpage
104
105\setuplayout[tight]
106
107\typefile[option=TEX]{m-electrons.mkxl}
108
109\stoptext
110