1
2
3
4
5
6
7
8
9
10
11
12\startmodule [melectrons]
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{melectrons.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]{melectrons.mkxl}
108
109\stoptext
110 |