> On 29 Oct 2024, at 23:22, Hans Hagen <j.ha...@xs4all.nl> wrote: > > On 10/29/2024 11:33 PM, Jorge Manuel wrote: >> Hello everyone, >> I’m searching for an efficient way to represent electronic configurations in >> subshell and orbital notation within ConTeXt. I found similar examples >> discussed on StackExchange, which you can see here: >> Atomic electronic configuration with small boxes <https:// >> tex.stackexchange.com/questions/372581/atomic-electronic-configuration- >> with-small-boxes/372598#372598>: https://tex.stackexchange.com/ >> questions/372581/atomic-electronic-configuration-with-small- >> boxes/372598#372598 <https://tex.stackexchange.com/questions/372581/ >> atomic-electronic-configuration-with-small-boxes/372598#372598> >> Box and arrow notation of writing electron configuration >> https://tex.stackexchange.com/questions/616989/box-and-arrow-notation- >> of-writing-electron-configuration <https://tex.stackexchange.com/ >> questions/616989/box-and-arrow-notation-of-writing-electron-configuration> >> Ideally, I’d like to use a package similar to atoms.sty for this purpose. >> Does anyone know of a straightforward approach to achieve this in ConTeXt? >> Thank you very much for any guidance or examples! > > It's no problem to come up with something as this kind of stuff is rather > trivial but (as always with these things in context) the question is "what is > the nicest interface?". > > \definesymbol[electronu][\m{\upharpoonleft}] > \definesymbol[electrond][\m{\downharpoonright}] > \definesymbol[electronb][\m{\upharpoonleft\downharpoonright}] > > \starttexdefinition protected electrons#1 > \dontleavehmode > \doloopovermatch {.} {#1} { > \inframed > [width=\lineheight,height=\lineheight] > {\symbol[electron##1]} > \hskip-\linewidth > } > \unskip > \stoptexdefinition > > \electrons{bddb} > > \electrons{uddbuud} > > Don't look at other packages, just think about what is best and most natural > for the field, reading the source, and intreface wise fits into context > (looks ok in the source, not like some hack). The above is just an example. > We can always make clever parsers in lua but we need specs and examples > first. Like, do you want to color specific electrons? Maybe this is enough: > > \definesymbol[electronB][\m{\red \symbol[electronb]}] > \definesymbol[electronD][\m{\blue\symbol[electrond]}] > > \electrons{uddBbuDd} > > Hans > > > ----------------------------------------------------------------- > Hans Hagen | PRAGMA ADE > Ridderstraat 27 | 8061 GH Hasselt | The Netherlands > tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl > -----------------------------------------------------------------
Also, as per the images in the StackExchange question, try adding this to the previous example: %% start %% Nitrogen: \vbox to \lineheight{\placeontopofeachother{\electrons{b}}{\tfx 1s}} \vbox to \lineheight{\placeontopofeachother{\electrons{b}}{\tfx 2s}} \vbox to \lineheight{\placeontopofeachother{\electrons{uuu}}{\tfx 2p}} %% end %% As Hans says, a parser is relatively easy, so the above can be made much less verbose if the layout is suitable. I think the message is: you don’t need to blindly copy \subshells if there is something easier to enter with less chance of error. Regards, — ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___________________________________________________________________________________