texlive[52589] Master/texmf-dist: modiagram (31oct19)

commits+karl at tug.org commits+karl at tug.org
Thu Oct 31 23:22:28 CET 2019


Revision: 52589
          http://tug.org/svn/texlive?view=revision&revision=52589
Author:   karl
Date:     2019-10-31 23:22:27 +0100 (Thu, 31 Oct 2019)
Log Message:
-----------
modiagram (31oct19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/modiagram/README
    trunk/Master/texmf-dist/doc/latex/modiagram/modiagram_en.pdf
    trunk/Master/texmf-dist/doc/latex/modiagram/modiagram_en.tex
    trunk/Master/texmf-dist/tex/latex/modiagram/modiagram.sty

Modified: trunk/Master/texmf-dist/doc/latex/modiagram/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/modiagram/README	2019-10-31 22:22:15 UTC (rev 52588)
+++ trunk/Master/texmf-dist/doc/latex/modiagram/README	2019-10-31 22:22:27 UTC (rev 52589)
@@ -1,5 +1,5 @@
 --------------------------------------------------------------------------
-the MODIAGRAM package 2015/09/23 v0.2g
+the MODIAGRAM package 2019/10/31 v0.3
 
   easy creation of molecular orbital diagrams
 
@@ -11,7 +11,7 @@
 If you have any ideas, questions, suggestions or bugs to report, please
 feel free to contact me.
 --------------------------------------------------------------------------
-Copyright 2011--2015 Clemens Niederberger
+Copyright 2011--2019 Clemens Niederberger
 
 This work may be distributed and/or modified under the
 conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/doc/latex/modiagram/modiagram_en.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/modiagram/modiagram_en.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/modiagram/modiagram_en.tex	2019-10-31 22:22:15 UTC (rev 52588)
+++ trunk/Master/texmf-dist/doc/latex/modiagram/modiagram_en.tex	2019-10-31 22:22:27 UTC (rev 52589)
@@ -13,7 +13,7 @@
 % If you have any ideas, questions, suggestions or bugs to report, please
 % feel free to contact me.
 % --------------------------------------------------------------------------
-% Copyright 2011--2015 Clemens Niederberger
+% Copyright 2011--2019 Clemens Niederberger
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License, either version 1.3
@@ -45,9 +45,9 @@
     connect,    
     EnergyAxis,    
     molecule,
-    MOsetup
+    setmodiagram
   } ,
-  add-envs = { MOdiagram } ,
+  add-envs = { modiagram } ,
   add-silent-cmds = {
     ch,
     draw,
@@ -58,7 +58,7 @@
     chemSigma
   } ,
   abstract = {%
-    \begin{MOdiagram}[style=fancy,distance=7cm,AO-width=15pt,labels,names]
+    \begin{modiagram}[style=fancy,distance=7cm,AO-width=15pt,labels,names]
       \atom[N]{left}{ 2p = {0;up,up,up} }
       \atom[O]{right}{ 2p = {2;pair,up,up} }
       \molecule[NO]{
@@ -65,10 +65,12 @@
         2pMO = {1.8,.4;pair,pair,pair,up},
         color = { 2piy*=red }
       }
-     \end{MOdiagram}
+     \end{modiagram}
   }
 }
 
+\newpackagename\modiag{modiagram}
+
 \defbibheading{bibliography}{\addsec{References}}
 
 \usepackage{booktabs}
@@ -83,9 +85,14 @@
   long  = molecular orbital
 }
 
-\expandafter\def\csname libertine at figurestyle\endcsname{LF}
-\usepackage[libertine]{newtxmath}
-\expandafter\def\csname libertine at figurestyle\endcsname{OsF}
+\makeatletter
+\def\libertine at figurestyle{LF}
+\RequirePackage{amsmath}
+\undef\lvert \undef\lVert
+\undef\rvert \undef\rVert
+\RequirePackage[libertine]{newtxmath}
+\def\libertine at figurestyle{OsF}
+\makeatother
 
 \usepackage{chemmacros,chemformula}
 \chemsetup{
@@ -98,11 +105,11 @@
   {%
     \begingroup
       \IfNoValueTF{#1}
-        {\MOsetup{ style=square,AO-width=8pt }}%
-        {\MOsetup{ style=square,AO-width=8pt , #1 }}%
-      \begin{MOdiagram}
+        {\setmodiagram{ style=square,AO-width=8pt }}%
+        {\setmodiagram{ style=square,AO-width=8pt , #1 }}%
+      \begin{modiagram}
         \AO{s}{0;#2}
-      \end{MOdiagram}%
+      \end{modiagram}%
     \endgroup
   }
 
@@ -113,7 +120,7 @@
 \section{Licence, Requirements}
 \license
 
-\modiagram\ uses \bnd{l3kernel}~\cite{bnd:l3kernel} and
+\modiag\ uses \bnd{l3kernel}~\cite{bnd:l3kernel} and
 \bnd{l3packages}~\cite{bnd:l3packages}. It also uses \TikZ~\cite{pkg:pgf} and
 the package \pkg{chemgreek}~\cite{pkg:chemgreek} bundle.  Additionally the
 \TikZ\ libraries \code{calc} and \code{arrows} are loaded.  Knowledge of
@@ -133,14 +140,14 @@
   Otherwise, I think I'll have a go at it in \TikZ.
 \end{cnltxquote}
 The problem was solved using \TikZ, since no package existed for that purpose.
-For one thing \modiagram\ is intended to fill this gap. I also found it very
+For one thing \modiag\ is intended to fill this gap. I also found it very
 tedious, to make all this copying and pasting when I needed a second, third,
-\ldots\ diagram. \modiagram\ took care of that.
+\ldots\ diagram. \modiag\ took care of that.
 
 
 \section{Main Commands}
 All molecular orbital (MO) diagrams are created using the environment
-\env{MOdiagram}{}.
+\env{modiagram}{}.
 
 \subsection{The \cs*{atom} Command}
 \begin{commands}
@@ -152,13 +159,13 @@
 
 Let's take a look at an example:
 \begin{example}[side-by-side]
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{right}{
       1s = {  0; pair} ,
       2s = {  1; pair} ,
       2p = {1.5; up, down }
     }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 As you can see, the argument \meta{AO-spec} is essential to create the actual
@@ -180,13 +187,13 @@
 The argument \meta{left}/\meta{right} is important, when p~orbitals are used.
 For instance compare the following example to the one before:
 \begin{example}[side-by-side]
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left}{
       1s = {  0; pair} ,
       2s = {  1; pair} ,
       2p = {1.5; up, down }
     }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 When both variants are used one can also see, that the right atom is shifted to
@@ -193,7 +200,7 @@
 the right (hence the naming). The right atom is shifted by \SI{4}{\centi\metre}
 per default and can be adjusted individually, see page~\pageref{option:distance}.
 \begin{example}
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left}{
       1s = {  0; pair} ,
       2s = {  1; pair} ,
@@ -204,7 +211,7 @@
       2s = {  1; pair} ,
       2p = {1.5; up, down }
     }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 With the command \cs{molecule} (section~\ref{ssec:molecule}) the reason for the
 shift becomes clear.
@@ -212,23 +219,23 @@
 Any of the arguments for the \ac{AO} can be left empty or be omitted.
 \begin{example}[side-by-side]
   Without argument: default height, full:\par
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left}{1s, 2s, 2p}
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}[side-by-side]
   empty argument: default height, empty:\par
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left}{1s=, 2s=, 2p=}
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}[side-by-side]
   using some values:\par
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left}{1s, 2s=1, 2p={;,up} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsection{The \cs*{molecule} Command}\label{ssec:molecule}
@@ -240,11 +247,11 @@
 
 An example first:
 \begin{example}[side-by-side]
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left} { 1s = {  0; up } }
     \atom{right}{ 1s = {  0; up } }
     \molecule { 1sMO = {.75; pair } }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 The command \cs{molecule} connects the \acp{AO} with the bonding and
 anti-bondung \acp{MO}.  \cs{molecule} can only be used \emph{after} one has
@@ -269,11 +276,11 @@
 Obviously the regarding \acp{AO} must have been set in order to connect them.
 This for example won't work:
 \begin{sourcecode}
-  \begin{MOdiagram} 
+  \begin{modiagram} 
     \atom{left} { 1s = 0 }
     \atom{right}{ 1s = 0 }
     \molecule { 2sMO = .75 }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{sourcecode}
 The value used in \meta{energy gain} determines how many \si{\centi\metre} the
 bonding \ac{MO} lies below the lower \ac{AO} or how many \si{\centi\metre} the
@@ -281,18 +288,18 @@
 
 \begin{example}[side-by-side]
   same level:\par
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left} { 1s = {  0; up } }
     \atom{right}{ 1s = {  0; up } }
     \molecule { 1sMO = {.75; pair } }
-  \end{MOdiagram}
+  \end{modiagram}
 
   different levels:\par
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left} { 1s = {  0; up } }
     \atom{right}{ 1s = {  1; up } }
     \molecule { 1sMO = {.25; pair } }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 If you specify \meta{energy loss} you can create non-symmetrical splittings.
@@ -299,17 +306,17 @@
 Then, the first value (\meta{energy gain}) is used for the bonding \ac{MO} and
 the second value (\meta{energy loss}) is used for the anti-bonding \ac{MO}.
 \begin{example}[side-by-side]
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left} { 1s = {  0; up } }
     \atom{right}{ 1s = {  0; up } }
     \molecule { 1sMO = {.75/.25; pair } }
-  \end{MOdiagram}
+  \end{modiagram}
 
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left} { 1s = {  0; up } }
     \atom{right}{ 1s = {  1; up } }
     \molecule { 1sMO = {.25/.75; pair } }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 Please be aware, that you have to specify \emph{two} such values or pairs with
@@ -316,17 +323,17 @@
 \option{2pMO}: the splitting of the \chemsigma\ orbitals and the splitting of
 the \chempi\ orbitals.
 \begin{example}
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left} { 2p = { 0; up, up } }
     \atom{right}{ 2p = { 1; up, up } }
     \molecule { 2pMO = { 1.5, .75; pair, up, up } } 
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 The complete \ac{MO} diagram for triplett dioxygen now could look something
 like that:
 \begin{example}
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left}{
       1s, 2s, 2p = {;pair,up,up}
     }
@@ -336,7 +343,7 @@
     \molecule{
       1sMO, 2sMO, 2pMO = {;pair,pair,pair,up,up}
     }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsection{The Naming Scheme}\label{Namensgebung}
@@ -344,7 +351,7 @@
 nodes in a \env*{tikzpicture}, the internal naming scheme is important.  It
 closely follows the function:
 \begin{center}
-  \begin{MOdiagram}[
+  \begin{modiagram}[
     distance = 6cm,
     AO-width = 20pt,
     labels-fs = \ttfamily\footnotesize,
@@ -391,13 +398,13 @@
        2piz*    = {2piz*}
      }
    }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{center}
 
 With these names it is possible to reference the orbitals with the known \TikZ
 commands:
 \begin{example}[side-by-side]
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left} { 1s = 0 }
     \atom{right}{ 1s = 0 }
     \molecule { 1sMO = .75 }
@@ -405,11 +412,11 @@
       (1sigma.center) -- (1sigma*.center) ;
     \draw[red]
       (1sigma*) ++ (2cm,.5cm) node {splitting} ;
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left} { 1s = 0 }
     \atom{right}{ 1s = 0 }
     \molecule { 1sMO = .75 }
@@ -417,7 +424,7 @@
       (1sigma*) circle (8pt);
     \draw[<-,shorten <=8pt,shorten >=15pt,blue]
       (1sigma*) --++(2,1) node {anti-bonding MO};
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsection{Placing AOs and MOs Arbitrarily}\label{ssec:AO_MO_irgendwo}
@@ -428,7 +435,7 @@
 Xenon:
 
 \begin{center}
-  \begin{MOdiagram}[names]
+  \begin{modiagram}[names]
     \atom[\chlewis{0.}{F}\hspace*{5mm}\chlewis{180.}{F}]{left}{
       1s=.2;up,up-el-pos={1sleft=.5}
     }
@@ -440,7 +447,7 @@
     \node[right,xshift=4mm] at (1sigma) {\footnotesize bonding};
     \node[above] at (AO2.90) {\footnotesize non-bonding};
     \node[above] at (1sigma*.90) {\footnotesize anti-bonding};
-  \end{MOdiagram}
+  \end{modiagram}
 \end{center}
 
 To create diagrams like this there is the following command, which draws a single
@@ -459,10 +466,10 @@
 
 Depending on the \meta{type} one s or three p orbitals are drawn.
 \begin{example}[side-by-side]
-  \begin{MOdiagram}
+  \begin{modiagram}
     \AO{s}{0;}
     \AO(-20pt){p}{1;pair,up,down}
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 If one wants to place such an \ac{AO} at the position of an atom, one has to
@@ -475,7 +482,7 @@
 \end{itemize}
 
 \begin{example}[side-by-side]
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left} {1s=0}
     \atom{right}{1s=0}
     \molecule {1sMO=1}
@@ -482,7 +489,7 @@
     \AO(1cm){s}{2}
     \AO(3cm){s}{2}
     \AO(5cm){s}{2}
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 Within the p orbitals there is an additional shift by \SI{20}{pt} per orbital.
@@ -489,7 +496,7 @@
 This is equivalent to a double shift by the length \code{AO-width} (see
 section~\ref{option:AO-width}):
 \begin{example}
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left} {2p=0}
     \atom{right}{2p=0}
     % above the left atom:
@@ -500,7 +507,7 @@
     \AO(1cm)     {s}{ .5}
     \AO(5cm+20pt){s}{  1;up}
     \AO(5cm+40pt){s}{1.5;down}
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 The \acp{AO} created with \cs{AO} also can be connected.  For this you can use
@@ -507,19 +514,19 @@
 the \TikZ\ command \cs*{draw}, of course.  You can use the predefined node
 names\ldots
 \begin{example}
-  \begin{MOdiagram}
+  \begin{modiagram}
     \AO{s}{0} \AO(2cm){s}{1}
     \AO{s}{2} \AO(2cm){s}{1.5}
     \draw[red] (AO1.0) -- (AO2.180) (AO3.0) -- (AO4.180);
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 \ldots\ or use own node names
 \begin{example}
-  \begin{MOdiagram}
+  \begin{modiagram}
     \AO[a]{s}{0} \AO[b](2cm){s}{1}
     \AO[c]{s}{2} \AO[d](2cm){s}{1.5}
     \draw[red] (a.0) -- (b.180) (c.0) -- (d.180);
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 The predefined names are \code{AO1}, \code{AO2} \etc for the type \code{s} and
@@ -527,15 +534,15 @@
 \code{p}.  Nodes of the type \code{p} get an \code{x}, \code{y} or \code{z} if
 you specify your own name, too.
 \begin{example}
-  \begin{MOdiagram}
+  \begin{modiagram}
     \AO{p}{0}
     \draw[<-,shorten >=5pt] (AO1y.-90) -- ++ (.5,-1) node {y};
-   \end{MOdiagram}
+   \end{modiagram}
   and
-  \begin{MOdiagram}
+  \begin{modiagram}
     \AO[A]{p}{0}
     \draw[<-,shorten >=5pt] (Ay.-90) -- ++ (.5,-1) node {y};
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 However, if you want the lines to be drawn in the same style as the ones
@@ -549,11 +556,11 @@
 This command expects a comma separated list of node name pairs that are to be
 connected. The names have to be connected with a \code{\&}:
 \begin{example}[side-by-side]
-  \begin{MOdiagram}
+  \begin{modiagram}
     \AO{s}{0;} \AO(2cm){s}{1;}
     \AO{s}{2;} \AO(2cm){s}{1.5;}
     \connect{ AO1 & AO2, AO3 & AO4 }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 Some things still need to be said: \cs{connect} adds the anchor \code{east} to
@@ -574,7 +581,7 @@
 (\meta{AO}). In sections~\ref{option:distance} and \ref{option:AO-width} these
 lengths and how they can be changed are discussed.
 \begin{center}
-  \begin{MOdiagram}[
+  \begin{modiagram}[
     AO-width = 22pt ,
     labels-fs = \ttfamily\tiny ,
     labels-style = {text width=40pt,align=center,yshift=11pt}]
@@ -617,7 +624,7 @@
        2piz*    = {.5*\meta{dist} + 1cm + \meta{AO}}
      }
    }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{center}
 
 \subsection{Default Values}
@@ -663,23 +670,23 @@
 
 Compare these examples:
 \begin{example}[side-by-side]
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left} { 1s={0;pair} }
     \atom{right}{ 1s }
-  \end{MOdiagram}
+  \end{modiagram}
 
   \hrulefill
  
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left}{ 1s=1 }
     \atom{right}{ 1s= }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \section{Customization}
 The options of the section~\ref{ssec:umgebungs_optionen} can be set global as
 package option, \ie, with \cs*{usepackage}\oarg{options}\Marg{modiagram}, or
-via the setup command \cs{MOsetup}\marg{options}.
+via the setup command \cs{setmodiagram}\marg{options}.
 
 \subsection{Environment Options}\label{ssec:umgebungs_optionen}
 There are some options with which the layout of the \ac{MO} diagrams can be
@@ -728,9 +735,9 @@
 They all are discussed in the following sections.  If they're used as options
 for the environment, they're set locally and only change that environment.
 \begin{sourcecode}
-  \begin{MOdiagram}[options]
+  \begin{modiagram}[options]
     ...
-  \end{MOdiagram}
+  \end{modiagram}
 \end{sourcecode}
 
 \subsubsection{Option \option*{style}}\label{option:style}
@@ -746,47 +753,47 @@
 Let's take the \ac{MO} diagram of \ch{H2} to illustrate the different styles:
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[style=plain]% default
+  \begin{modiagram}[style=plain]% default
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[style=square]
+  \begin{modiagram}[style=square]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[style=circle]
+  \begin{modiagram}[style=circle]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[style=round]
+  \begin{modiagram}[style=round]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[style=fancy]
+  \begin{modiagram}[style=fancy]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsubsection{Option \option*{distance}}\label{option:distance}
@@ -798,11 +805,11 @@
 section~\ref{orbital-positionen}.
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[distance=6cm]
+  \begin{modiagram}[distance=6cm]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsubsection{Option \option*{AO-width}}\label{option:AO-width}
@@ -811,20 +818,20 @@
 \SI{10}{pt}.
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[AO-width=15pt]
+  \begin{modiagram}[AO-width=15pt]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[style=fancy,AO-width=15pt]
+  \begin{modiagram}[style=fancy,AO-width=15pt]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 By changing the value of \option{AO-width} the positions of the p and the
 \chempi\ orbitals also change, see section~\ref{orbital-positionen}.
@@ -841,29 +848,29 @@
 
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[el-sep=.2]% default
+  \begin{modiagram}[el-sep=.2]% default
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[el-sep=0]
+  \begin{modiagram}[el-sep=0]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}[side-by-side]
   % use package `chemmacros'
-   \begin{MOdiagram}[el-sep=1]
+   \begin{modiagram}[el-sep=1]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 The options \key{up-el-pos}{<num>} and \key{down-el-pos}{<num>} can be used
@@ -873,29 +880,29 @@
 
 \begin{example}
   % use package `chemmacros'
-  \begin{MOdiagram}[up-el-pos=.4,down-el-pos=.6]% default
+  \begin{modiagram}[up-el-pos=.4,down-el-pos=.6]% default
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}
   % use package `chemmacros'
-  \begin{MOdiagram}[up-el-pos=.333,down-el-pos=.667]
+  \begin{modiagram}[up-el-pos=.333,down-el-pos=.667]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}
   % use package `chemmacros'
-  \begin{MOdiagram}[up-el-pos=.7,down-el-pos=.3]
+  \begin{modiagram}[up-el-pos=.7,down-el-pos=.3]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsubsection{Option \option*{lines}}\label{option:lines}
@@ -903,11 +910,11 @@
 connecting lines:
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[lines={gray,thin}]
+  \begin{modiagram}[lines={gray,thin}]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsubsection{Option \option*{names}}\label{option:names}
@@ -916,11 +923,11 @@
 \cs{molecule}.
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[names]
+  \begin{modiagram}[names]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsubsection{Options \option*{names-style} and \option*{names-style-add}}\label{option:names_style}
@@ -930,11 +937,11 @@
   for Version 2.10'' p.\,183 section 16.4.4 (pgfmanual.pdf) for the meaning}.
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[names,names-style={draw=blue}]
+  \begin{modiagram}[names,names-style={draw=blue}]
     \atom[p]{left} { 1s = {;up} }
     \atom[b]{right}{ 1s = {;up} }
     \molecule[\ch{X2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 With this the default setting is overwritten. As you can see it destroys the
@@ -942,21 +949,21 @@
 specify \code{text height} and \code{text depth} yourself \ldots
 \begin{example}
   % use package `chemmacros'
-  \begin{MOdiagram}[names,names-style={text height=1.5ex, text depth=.25ex, draw=blue}]
+  \begin{modiagram}[names,names-style={text height=1.5ex, text depth=.25ex, draw=blue}]
     \atom[p]{left} { 1s = {;up} }
     \atom[b]{right}{ 1s = {;up} }
     \molecule[\ch{X2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \ldots, add the \code{anchor} again \ldots
 \begin{example}
   % use package `chemmacros'
-  \begin{MOdiagram}[names,names-style={anchor=base, draw=blue}]
+  \begin{modiagram}[names,names-style={anchor=base, draw=blue}]
     \atom[p]{left} { 1s = {;up} }
     \atom[b]{right}{ 1s = {;up} }
     \molecule[\ch{X2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \ldots\ or use the option \key{names-style-add}. It doesn't overwrite the
@@ -963,16 +970,16 @@
 current setting but appends the new declaration:
 \begin{example}
   % use package `chemmacros'
-  \begin{MOdiagram}[names,names-style-add={draw=blue}]
+  \begin{modiagram}[names,names-style-add={draw=blue}]
     \atom[p]{left} { 1s = {;up} }
     \atom[b]{right}{ 1s = {;up} }
     \molecule[\ch{X2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}
   % use package `chemmacros'
-  \MOsetup{
+  \setmodiagram{
     names,
     names-style = {
       text height = 2.5ex,
@@ -981,16 +988,16 @@
       rounded corners
     }
   }
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom[p]{left} { 1s = {;up} }
     \atom[b]{right}{ 1s = {;up} }
     \molecule[\ch{X2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
-  \begin{MOdiagram}[names-style-add={fill=blue!20}]
+  \end{modiagram}
+  \begin{modiagram}[names-style-add={fill=blue!20}]
     \atom[p]{left} { 1s = {;up} }
     \atom[b]{right}{ 1s = {;up} }
     \molecule[\ch{X2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsubsection{Option \option*{labels}}\label{option:labels}
@@ -998,11 +1005,11 @@
 orbitals.  These labels can be changed, see section~\ref{sec:key:label}.
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[labels]
+  \begin{modiagram}[labels]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsubsection{Option \option*{labels-fs}}\label{option:labels-fs}
@@ -1010,21 +1017,21 @@
 can use the option \option{labels-fs}.
 \begin{example}
   % use package `chemmacros'
-  \begin{MOdiagram}[labels,labels-fs=\footnotesize]
+  \begin{modiagram}[labels,labels-fs=\footnotesize]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 This also allows you to change the font style or font shape of the labels.
 \begin{example}
   % use package `chemmacros'
-  \begin{MOdiagram}[labels,labels-fs=\sffamily\footnotesize]
+  \begin{modiagram}[labels,labels-fs=\sffamily\footnotesize]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsubsection{Option \option*{labels-style}}\label{option:labels-style}
@@ -1032,11 +1039,11 @@
 which the labels are written.
 \begin{example}
   % use package `chemmacros'
-  \begin{MOdiagram}[labels,labels-style={blue,yshift=4pt}]
+  \begin{modiagram}[labels,labels-style={blue,yshift=4pt}]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{ 1sMO = {.75;pair} }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsection{\cs*{atom} and \cs*{molecule} Specific Customizations}
@@ -1049,7 +1056,7 @@
 keys to specify the \ac{AO} that you want to label.
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[labels-fs=\footnotesize]
+  \begin{modiagram}[labels-fs=\footnotesize]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{
@@ -1056,11 +1063,11 @@
       1sMO  = {.75;pair},
       label = { 1sigma = {bonding MO} }
     }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}[side-by-side]
-  \begin{MOdiagram}[style=square,distance=6cm]
+  \begin{modiagram}[style=square,distance=6cm]
     \atom{left} { 1s = {;up} }
     \atom{right}{ 1s = {;up} }
     \molecule{
@@ -1072,7 +1079,7 @@
     }
     \node[right] at (1sigma.-45) {bonding};
     \node[right] at (1sigma*.45) {anti-bonding};
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 If the option is used together with the \option{labels} option
@@ -1079,7 +1086,7 @@
 (page~\pageref{option:labels}) single labels are overwritten:
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[labels]
+  \begin{modiagram}[labels]
     \atom[H]{left} { 1s = {;up} }
     \atom[H]{right}{ 1s = {;up} }
     \molecule[\ch{H2}]{
@@ -1086,7 +1093,7 @@
       1sMO  = {.75;pair},
       label = { 1sigma = \textcolor{red}{??} }
     }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsubsection{The \option*{color} Key}\label{sec:key:color}
@@ -1094,7 +1101,7 @@
 display coloured electrons:
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}[labels-fs=\footnotesize]
+  \begin{modiagram}[labels-fs=\footnotesize]
     \atom[H]{left}{
       1s, color = { 1sleft = blue }
     }
@@ -1106,7 +1113,7 @@
       label = { 1sigma = {bonding MO} },
       color = { 1sigma = green, 1sigma* = cyan }
     }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsubsection{The \option*{up-el-pos} and \option*{down-el-pos} keys}\label{sec:key:electrons}
@@ -1116,7 +1123,7 @@
 section~\ref{option:electrons}.
 \begin{example}[side-by-side]
   % use package `chemmacros'
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom[H]{left}{
       1s        = {;up},
       up-el-pos = { 1sleft=.5 }
@@ -1127,7 +1134,7 @@
       up-el-pos   = { 1sigma=.15 } ,
       down-el-pos = { 1sigma=.85 }
     }
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsection{\cs*{AO} Specific Customizations}\label{ssec:AO_anpassen}
@@ -1138,10 +1145,10 @@
 label to the \ac{AO}/\ac{MO}.  If you use the type \code{p} you can specify
 the orbital you want to label in square brackets:
 \begin{example}[side-by-side]
-  \begin{MOdiagram}[style=square]
+  \begin{modiagram}[style=square]
     \AO{s}[label={s orbital}]{0}
     \AO{p}[label[y]=py,label[z]=pz]{1.5}
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsubsection{The \option*{color} Key}\label{key:AO_color}
@@ -1150,10 +1157,10 @@
 color for the electrons.  If you use the type \code{p} you can specify the
 orbital in square brackets:
 \begin{example}[side-by-side]
-  \begin{MOdiagram}[style=square]
+  \begin{modiagram}[style=square]
     \AO{s}[color=red]{0}
     \AO{p}[color[y]=green,color[z]=cyan]{1.5}
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsubsection{The \option*{up-el-pos} and \option*{down-el-pos} Keys}\label{key:AO_electrons}
@@ -1163,10 +1170,10 @@
 and \code{1}, also see section~\ref{option:electrons}.  If you use the type
 \code{p} you can specify the orbital in square brackets:
 \begin{example}[side-by-side]
-  \begin{MOdiagram}[style=square]
+  \begin{modiagram}[style=square]
     \AO{s}[up-el-pos=.15]{0}
     \AO{p}[up-el-pos[y]=.15,down-el-pos[z]=.15]{1.5}
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \subsection{Energy Axis}
@@ -1180,12 +1187,12 @@
 \end{commands}
 
 \begin{example}[side-by-side]
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left} { 1s = {;up} }
     \atom{right}{ 1s = {;up} }
     \molecule{ 1sMO = {.75;pair} }
     \EnergyAxis
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 For the time being there are two options to modify the axis.
@@ -1198,21 +1205,21 @@
 \end{options}
 
 \begin{example}[side-by-side]
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left} { 1s = {;up} }
     \atom{right}{ 1s = {;up} }
     \molecule{ 1sMO = {.75;pair} }
     \EnergyAxis[title]
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}[side-by-side]
-  \begin{MOdiagram}
+  \begin{modiagram}
     \atom{left} { 1s = {;up} }
     \atom{right}{ 1s = {;up} }
     \molecule{ 1sMO = {.75;pair} }
     \EnergyAxis[title=E,head=stealth]
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \section{Examples}
@@ -1219,7 +1226,7 @@
 The example from the beginning of section \ref{ssec:AO_MO_irgendwo}.
 \begin{example}
   % use package `chemmacros'
-  \begin{MOdiagram}[names]
+  \begin{modiagram}[names]
     \atom[\chlewis{0.}{F}\hspace*{5mm}\chlewis{180.}{F}]{left}{
       1s=.2;up,up-el-pos={1sleft=.5}
     }
@@ -1231,7 +1238,7 @@
     \node[right,xshift=4mm] at (1sigma) {\footnotesize bonding};
     \node[above] at (AO2.90) {\footnotesize non-bonding};
     \node[above] at (1sigma*.90) {\footnotesize anti-bonding};
-  \end{MOdiagram}
+  \end{modiagram}
 \end{example}
 
 \begin{example}[outside]
@@ -1238,7 +1245,7 @@
   % use package `chemmacros'
   \begin{figure}[p]
     \centering
-    \begin{MOdiagram}[style=square,labels,names,AO-width=8pt,labels-fs=\footnotesize]
+    \begin{modiagram}[style=square,labels,names,AO-width=8pt,labels-fs=\footnotesize]
       \atom[\ch{O_a}]{left}{
         1s, 2s, 2p = {;pair,up,up}
       }
@@ -1250,7 +1257,7 @@
         color = { 2piy*=red, 2piz*=red }
       }
       \EnergyAxis
-    \end{MOdiagram}
+    \end{modiagram}
     \caption{MO diagram of \ch{^3 "\chemSigma-" O2}.}
   \end{figure}
 \end{example}
@@ -1259,8 +1266,8 @@
   % use package `chemmacros'
   \begin{figure}[p]
     \centering
-    \MOsetup{style = fancy, distance = 7cm, AO-width = 15pt, labels}
-    \begin{MOdiagram}
+    \setmodiagram{style = fancy, distance = 7cm, AO-width = 15pt, labels}
+    \begin{modiagram}
       \atom[N]{left}{
         2p = {0;up,up,up}
       }
@@ -1272,7 +1279,7 @@
         color = { 2piy*=red }
       }
       \EnergyAxis
-    \end{MOdiagram}
+    \end{modiagram}
     \caption{Part of the MO diagram of \chlewis{180.}{NO}.}
   \end{figure}
 \end{example}

Modified: trunk/Master/texmf-dist/tex/latex/modiagram/modiagram.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/modiagram/modiagram.sty	2019-10-31 22:22:15 UTC (rev 52588)
+++ trunk/Master/texmf-dist/tex/latex/modiagram/modiagram.sty	2019-10-31 22:22:27 UTC (rev 52589)
@@ -11,7 +11,7 @@
 % If you have any ideas, questions, suggestions or bugs to report, please
 % feel free to contact me.
 % --------------------------------------------------------------------------
-% Copyright 2011--2015 Clemens Niederberger
+% Copyright 2011--2019 Clemens Niederberger
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License, either version 1.3
@@ -28,863 +28,890 @@
 % This work consists of the files modiagram.sty, modiagram_en.tex,
 % README and the derived file modiagram_en.pdf.
 % --------------------------------------------------------------------------
-\RequirePackage{ expl3 , xparse , l3keys2e , tikz , chemgreek }
+\RequirePackage {expl3,xparse,l3keys2e,tikz,chemgreek}
 \usetikzlibrary{calc,arrows}
 \ProvidesExplPackage
   {modiagram}
-  {2015/09/23}
-  {0.2g}
+  {2019/10/31}
+  {0.3}
   {easy creation of molecular orbital diagrams}
 
 % --------------------------------------------------------------------------- %
 % error messages
-\msg_set:nnn { MOdiagram } { missing-atom }
+\msg_new:nnn {modiagram} {missing-atom}
   {
-    You~need~to~specify~the~left~and~right~atom~first~before~you~can~use~
-    \token_to_str:N \molecule \c_space_tl \msg_line_context: .
+    You~ need~ to~ specify~ the~ left~ and~ right~ atom~ first~ before~
+    you~ can~ use~ \token_to_str:N \molecule \c_space_tl \msg_line_context: .
   }
 
-\msg_set:nnn { MOdiagram } { missing-AO }
+\msg_new:nnn {modiagram} {missing-AO}
   {
-    You~need~to~specify~both~#2~AOs~first~before~you~can~use~
+    You~ need~ to~ specify~ both~ #2~ AOs~ first~ before~ you~ can~ use~
     #1~ \msg_line_context: .
   }
 
-\msg_set:nnn { MOdiagram } { electron-placement }
+\msg_new:nnn {modiagram} {electron-placement}
   {
-    The~value~for~the~electron~placement~must~be~between~0~and~1~
-    \msg_line_context: . 
+    The~ value~ for~ the~ electron~ placement~ must~ be~ between~ 0~
+    and~ 1~ \msg_line_context: . 
   }
 
+\msg_new:nnn {modiagram} {deprecated}
+  { The~ #1~ `#2'~ is~ deprecated.~ Use~ `#3'~ instead. }
+
 % --------------------------------------------------------------------------- %
 % temporary variables
-\tl_new:N  \l__MOdiagram_tmpa_tl
-\tl_new:N  \l__MOdiagram_tmpb_tl
-\dim_new:N \l__MOdiagram_tmpa_dim
-\fp_new:N  \l__MOdiagram_tmpa_fp
+\tl_new:N  \l__modiagram_tmpa_tl
+\tl_new:N  \l__modiagram_tmpb_tl
+\dim_new:N \l__modiagram_tmpa_dim
+\fp_new:N  \l__modiagram_tmpa_fp
 
 % --------------------------------------------------------------------------- %
 % variants of expl3 kernel commands:
-\cs_generate_variant:Nn \str_case:nnF { V }
-\cs_generate_variant:Nn \dim_compare:nNnTF { cNc }
+\cs_generate_variant:Nn \str_case:nnF {V}
+\cs_generate_variant:Nn \dim_compare:nNnTF {vNv}
 
 % --------------------------------------------------------------------------- %
 % main environment
-\NewDocumentEnvironment { MOdiagram } { o g }
+\cs_new_protected:Npn \modiagram_start_environment:n #1
   {
-    \cs_set_eq:NN \atom \__MOdiagram_atom:
-    \cs_set_eq:NN \molecule \__MOdiagram_molecule:
-    \cs_set_eq:NN \AO \__MOdiagram_arbitrary_AO:
-    \cs_set_eq:NN \EnergyAxis \__MOdiagram_EnergyAxis:
-    \dim_gzero:N \g__MOdiagram_min_energy_dim
-    \dim_gzero:N \g__MOdiagram_max_energy_dim
-    \int_gzero:N \g__MOdiagram_AO_name_int
-    \IfNoValueF { #1 } { \keys_set:nn { MOdiagram / diagram } { #1 } }
-    \__MOdiagram_set_labels:
-    \__MOdiagram_tikzpicture:n { }
+    \cs_set_eq:NN \atom \__modiagram_atom:
+    \cs_set_eq:NN \molecule \__modiagram_molecule:
+    \cs_set_eq:NN \AO \__modiagram_arbitrary_AO:
+    \cs_set_eq:NN \EnergyAxis \__modiagram_EnergyAxis:
+    \dim_gzero:N \g__modiagram_min_energy_dim
+    \dim_gzero:N \g__modiagram_max_energy_dim
+    \int_gzero:N \g__modiagram_AO_name_int
+    \keys_set:nn {modiagram/diagram} {#1}
+    \__modiagram_set_labels:
+    \__modiagram_tikzpicture:n { }
     \char_set_catcode_letter:N \:
     \char_set_catcode_other:N \;
   }
+
+\cs_new_protected:Npn \modiagram_end_environment:
   {
-    \bool_if:NT \l__MOdiagram_names_bool
+    \bool_if:NT \l__modiagram_names_bool
       {
-        \__MOdiagram_node:f { \tl_use:N \l__MOdiagram_names_style_tl }
+        \__modiagram_node:f { \tl_use:N \l__modiagram_names_style_tl }
           at
           (
-            \l__MOdiagram_left_atom_position_dim ,
-            \g__MOdiagram_min_energy_dim - 1cm
+            \l__modiagram_left_atom_position_dim ,
+            \g__modiagram_min_energy_dim - 1cm
           )
-          { \tl_use:N \l__MOdiagram_atom_left_name_tl } ;
-        \__MOdiagram_node:f { \tl_use:N \l__MOdiagram_names_style_tl }
+          { \tl_use:N \l__modiagram_atom_left_name_tl } ;
+        \__modiagram_node:f { \tl_use:N \l__modiagram_names_style_tl }
           at
           (
-            \l__MOdiagram_molecule_position_dim ,
-            \g__MOdiagram_min_energy_dim - 1cm
+            \l__modiagram_molecule_position_dim ,
+            \g__modiagram_min_energy_dim - 1cm
           )
-          { \tl_use:N \l__MOdiagram_molecule_name_tl } ;
-        \__MOdiagram_node:f { \tl_use:N \l__MOdiagram_names_style_tl }
+          { \tl_use:N \l__modiagram_molecule_name_tl } ;
+        \__modiagram_node:f { \tl_use:N \l__modiagram_names_style_tl }
           at
           (
-            \l__MOdiagram_left_atom_position_dim
-              + \l__MOdiagram_inter_atom_distance_dim ,
-            \g__MOdiagram_min_energy_dim - 1cm
+            \l__modiagram_left_atom_position_dim
+              + \l__modiagram_inter_atom_distance_dim ,
+            \g__modiagram_min_energy_dim - 1cm
           )
-          { \tl_use:N \l__MOdiagram_atom_right_name_tl } ;
+          { \tl_use:N \l__modiagram_atom_right_name_tl } ;
       }
     \endtikzpicture
   }
 
-\bool_new:N \l__MOdiagram_AO_square_bool
-\bool_new:N \l__MOdiagram_AO_round_bool
-\bool_new:N \l__MOdiagram_AO_circle_bool
-\bool_new:N \l__MOdiagram_AO_fancy_bool
-\bool_new:N \l__MOdiagram_AO_labels_bool
-\bool_new:N \l__MOdiagram_names_bool
+\NewDocumentEnvironment {modiagram} {O{}}
+  { \modiagram_start_environment:n {#1} }
+  { \modiagram_end_environment: }
 
-\tl_new:N \l__MOdiagram_names_style_tl
-\tl_set:Nn \l__MOdiagram_names_style_tl { anchor=base }
+\NewDocumentEnvironment {MOdiagram} {O{}}
+  {
+    \msg_warning:nnnnn {modiagram} {deprecated}
+      {environment}
+      {MOdiagram}
+      {modiagram}
+    \modiagram_start_environment:n {#1}
+  }
+  { \modiagram_end_environment: }
 
-\tl_new:N \l__MOdiagram_lines_tl
-\tl_set:Nn \l__MOdiagram_lines_tl { dotted }
+\bool_new:N \l__modiagram_AO_square_bool
+\bool_new:N \l__modiagram_AO_round_bool
+\bool_new:N \l__modiagram_AO_circle_bool
+\bool_new:N \l__modiagram_AO_fancy_bool
+\bool_new:N \l__modiagram_AO_labels_bool
+\bool_new:N \l__modiagram_names_bool
 
-\tl_new:N \l__MOdiagram_orbital_label_fontsize_tl
-\tl_new:N \l__MOdiagram_orbital_label_style_tl
+\tl_new:N \l__modiagram_names_style_tl
+\tl_set:Nn \l__modiagram_names_style_tl {anchor=base}
 
-\dim_new:N \l__MOdiagram_AO_width_dim
-\dim_set:Nn \l__MOdiagram_AO_width_dim { 10pt }
+\tl_new:N \l__modiagram_lines_tl
+\tl_set:Nn \l__modiagram_lines_tl {dotted}
 
-\tl_new:N \l__MOdiagram_AO_up_electron_tl
-\tl_set:Nn \l__MOdiagram_AO_up_electron_tl { .4 }
-\tl_new:N \l__MOdiagram_AO_down_electron_tl
-\tl_set:Nn \l__MOdiagram_AO_down_electron_tl { .6 }
+\tl_new:N \l__modiagram_orbital_label_fontsize_tl
+\tl_new:N \l__modiagram_orbital_label_style_tl
 
-\dim_new:N \l__MOdiagram_left_atom_position_dim
-\dim_set:Nn \l__MOdiagram_left_atom_position_dim { 1cm }
-\dim_new:N \l__MOdiagram_inter_atom_distance_dim
-\dim_set:Nn \l__MOdiagram_inter_atom_distance_dim { 4cm }
-\dim_new:N \l__MOdiagram_molecule_position_dim
+\dim_new:N \l__modiagram_AO_width_dim
+\dim_set:Nn \l__modiagram_AO_width_dim {10pt}
 
-\dim_new:N \g__MOdiagram_min_energy_dim
-\dim_new:N \g__MOdiagram_max_energy_dim
+\tl_new:N \l__modiagram_AO_up_electron_tl
+\tl_set:Nn \l__modiagram_AO_up_electron_tl {.4}
+\tl_new:N \l__modiagram_AO_down_electron_tl
+\tl_set:Nn \l__modiagram_AO_down_electron_tl {.6}
 
-\dim_new:N \l__MOdiagram_energy_gain_dim
-\dim_new:N \l__MOdiagram_energy_loss_dim
+\dim_new:N \l__modiagram_left_atom_position_dim
+\dim_set:Nn \l__modiagram_left_atom_position_dim {1cm}
+\dim_new:N \l__modiagram_inter_atom_distance_dim
+\dim_set:Nn \l__modiagram_inter_atom_distance_dim {4cm}
+\dim_new:N \l__modiagram_molecule_position_dim
 
+\dim_new:N \g__modiagram_min_energy_dim
+\dim_new:N \g__modiagram_max_energy_dim
+
+\dim_new:N \l__modiagram_energy_gain_dim
+\dim_new:N \l__modiagram_energy_loss_dim
+
 % detect lowest and highest orbital so we can draw the appropriate energy axis:
-\cs_new_protected:Npn \__MOdiagram_energy_range:N #1
+\cs_new_protected:Npn \__modiagram_energy_range:N #1
   {
-    \dim_set:Nn \l__MOdiagram_tmpa_dim { #1 }
-    \dim_compare:nT { \l__MOdiagram_tmpa_dim < \g__MOdiagram_min_energy_dim }
-      { \dim_gset_eq:NN \g__MOdiagram_min_energy_dim \l__MOdiagram_tmpa_dim }
-    \dim_compare:nT { \l__MOdiagram_tmpa_dim > \g__MOdiagram_max_energy_dim }
-      { \dim_gset_eq:NN \g__MOdiagram_max_energy_dim \l__MOdiagram_tmpa_dim }
+    \dim_set:Nn \l__modiagram_tmpa_dim {#1}
+    \dim_compare:nT { \l__modiagram_tmpa_dim < \g__modiagram_min_energy_dim }
+      { \dim_gset_eq:NN \g__modiagram_min_energy_dim \l__modiagram_tmpa_dim }
+    \dim_compare:nT { \l__modiagram_tmpa_dim > \g__modiagram_max_energy_dim }
+      { \dim_gset_eq:NN \g__modiagram_max_energy_dim \l__modiagram_tmpa_dim }
   }
-\cs_generate_variant:Nn \__MOdiagram_energy_range:N { n }
 
 % split energy levels for creating the MO; we need to detect wether the left
 % or the right AO is the lower or higher one, respectively
-\cs_new_protected:Npn \__MOdiagram_split_energy:NNN #1#2#3
+\cs_new_protected:Npn \__modiagram_split_energy:nNN #1#2#3
   {
-    \dim_compare:cNcTF
-      { l__MOdiagram_atom_left_#1_dim } < { l__MOdiagram_atom_right_#1_dim }
+    \dim_compare:vNvTF
+      { l__modiagram_atom_left_#1_dim } < { l__modiagram_atom_right_#1_dim }
       {
-        \dim_set_eq:Nc \l__MOdiagram_energy_gain_dim
-          { l__MOdiagram_atom_left_#1_dim }
-        \dim_sub:Nn \l__MOdiagram_energy_gain_dim { #2 }
-        \dim_set_eq:Nc \l__MOdiagram_energy_loss_dim
-          { l__MOdiagram_atom_right_#1_dim }
-        \dim_add:Nn \l__MOdiagram_energy_loss_dim { #3 }
+        \dim_set_eq:Nc \l__modiagram_energy_gain_dim
+          { l__modiagram_atom_left_#1_dim }
+        \dim_sub:Nn \l__modiagram_energy_gain_dim {#2}
+        \dim_set_eq:Nc \l__modiagram_energy_loss_dim
+          { l__modiagram_atom_right_#1_dim }
+        \dim_add:Nn \l__modiagram_energy_loss_dim {#3}
       }
       {
-        \dim_set_eq:Nc \l__MOdiagram_energy_gain_dim
-          { l__MOdiagram_atom_right_#1_dim }
-        \dim_sub:Nn \l__MOdiagram_energy_gain_dim { #2 }
-        \dim_set_eq:Nc \l__MOdiagram_energy_loss_dim
-          { l__MOdiagram_atom_left_#1_dim }
-        \dim_add:Nn \l__MOdiagram_energy_loss_dim { #3 }
+        \dim_set_eq:Nc \l__modiagram_energy_gain_dim
+          { l__modiagram_atom_right_#1_dim }
+        \dim_sub:Nn \l__modiagram_energy_gain_dim {#2}
+        \dim_set_eq:Nc \l__modiagram_energy_loss_dim
+          { l__modiagram_atom_left_#1_dim }
+        \dim_add:Nn \l__modiagram_energy_loss_dim {#3}
       }
   }
-\cs_generate_variant:Nn \__MOdiagram_split_energy:NNN { nNN }
 
 % position the spin-up/spin-down el:
-\cs_new_protected:Npn \__MOdiagram_AO_place_electron:nn #1#2
+\cs_new_protected:Npn \__modiagram_AO_place_electron:nn #1#2
   {
-    \fp_compare:nNnT { #2 } < { 0 }
-      { \msg_error:nn { MOdiagram } { electron-placement } }
-    \fp_compare:nNnT { abs( #2 ) } > { 1 }
-      { \msg_error:nn { MOdiagram } { electron-placement } }
-    \bool_if:nTF { #1 }
-      { \tl_set:Nn \l__MOdiagram_AO_down_electron_tl { #2 } }
-      { \tl_set:Nn \l__MOdiagram_AO_up_electron_tl { #2 } }
+    \fp_compare:nNnT {#2} < {0}
+      { \msg_error:nn {modiagram} {electron-placement} }
+    \fp_compare:nNnT { abs(#2) } > {1}
+      { \msg_error:nn {modiagram} {electron-placement} }
+    \bool_if:nTF {#1}
+      { \tl_set:Nn \l__modiagram_AO_down_electron_tl {#2} }
+      { \tl_set:Nn \l__modiagram_AO_up_electron_tl {#2} }
   }
-\cs_generate_variant:Nn \__MOdiagram_AO_place_electron:nn { nx }
+\cs_generate_variant:Nn \__modiagram_AO_place_electron:nn {nx}
 
-\cs_new_protected:Npn \__MOdiagram_AO_place_electrons:n #1
+\cs_new_protected:Npn \__modiagram_AO_place_electrons:n #1
   {
-    \fp_set:Nn \l__MOdiagram_tmpa_fp { .5 * ( 1 - #1 ) }
-    \__MOdiagram_AO_place_electron:nx { 0 } { \fp_to_tl:N \l__MOdiagram_tmpa_fp }
-    \fp_set:Nn \l__MOdiagram_tmpa_fp { .5 * ( 1 + #1 ) }
-    \__MOdiagram_AO_place_electron:nx { 1 } { \fp_to_tl:N \l__MOdiagram_tmpa_fp }
+    \fp_set:Nn \l__modiagram_tmpa_fp { .5 * ( 1 - #1 ) }
+    \__modiagram_AO_place_electron:nx {0} { \fp_to_tl:N \l__modiagram_tmpa_fp }
+    \fp_set:Nn \l__modiagram_tmpa_fp { .5 * ( 1 + #1 ) }
+    \__modiagram_AO_place_electron:nx {1} { \fp_to_tl:N \l__modiagram_tmpa_fp }
   }
 
 % place the right atom
-\cs_new_protected:Npn \__MOdiagram_molecule_position:n #1
+\cs_new_protected:Npn \__modiagram_molecule_position:n #1
   {
-    \fp_set:Nn \l__MOdiagram_tmpa_fp { .5 * \dim_to_fp:n {#1} }
-    \dim_set:Nn \l__MOdiagram_molecule_position_dim
-      { \fp_to_dim:N \l__MOdiagram_tmpa_fp + \l__MOdiagram_left_atom_position_dim }
+    \fp_set:Nn \l__modiagram_tmpa_fp { .5 * \dim_to_fp:n {#1} }
+    \dim_set:Nn \l__modiagram_molecule_position_dim
+      { \fp_to_dim:N \l__modiagram_tmpa_fp + \l__modiagram_left_atom_position_dim }
   }
-\cs_generate_variant:Nn \__MOdiagram_molecule_position:n { f }
+\cs_generate_variant:Nn \__modiagram_molecule_position:n {f}
 
-\__MOdiagram_molecule_position:f
-  { \dim_use:N \l__MOdiagram_inter_atom_distance_dim }
+\__modiagram_molecule_position:f
+  { \dim_use:N \l__modiagram_inter_atom_distance_dim }
 
 % set up keys for the environment
-\keys_define:nn { MOdiagram / diagram }
+\keys_define:nn {modiagram/diagram}
   {
     style          .choice: ,
     style / plain  .code:n    =
       {
-        \bool_set_false:N \l__MOdiagram_AO_square_bool
-        \bool_set_false:N \l__MOdiagram_AO_round_bool
-        \bool_set_false:N \l__MOdiagram_AO_circle_bool
-        \bool_set_false:N \l__MOdiagram_AO_fancy_bool
-        \tl_set:Nn \l__MOdiagram_lines_tl { dotted }
+        \bool_set_false:N \l__modiagram_AO_square_bool
+        \bool_set_false:N \l__modiagram_AO_round_bool
+        \bool_set_false:N \l__modiagram_AO_circle_bool
+        \bool_set_false:N \l__modiagram_AO_fancy_bool
+        \tl_set:Nn \l__modiagram_lines_tl { dotted }
       } ,
     style / square .code:n    =
       {
-        \bool_set_true:N \l__MOdiagram_AO_square_bool
-        \bool_set_false:N \l__MOdiagram_AO_round_bool
-        \bool_set_false:N \l__MOdiagram_AO_circle_bool
-        \bool_set_false:N \l__MOdiagram_AO_fancy_bool
-        \tl_set:Nn \l__MOdiagram_lines_tl { gray }
+        \bool_set_true:N \l__modiagram_AO_square_bool
+        \bool_set_false:N \l__modiagram_AO_round_bool
+        \bool_set_false:N \l__modiagram_AO_circle_bool
+        \bool_set_false:N \l__modiagram_AO_fancy_bool
+        \tl_set:Nn \l__modiagram_lines_tl { gray }
       } ,
     style / circle .code:n    =
       {
-        \bool_set_false:N \l__MOdiagram_AO_square_bool
-        \bool_set_false:N \l__MOdiagram_AO_round_bool
-        \bool_set_true:N \l__MOdiagram_AO_circle_bool
-        \bool_set_false:N \l__MOdiagram_AO_fancy_bool
-        \tl_set:Nn \l__MOdiagram_lines_tl { gray }
+        \bool_set_false:N \l__modiagram_AO_square_bool
+        \bool_set_false:N \l__modiagram_AO_round_bool
+        \bool_set_true:N \l__modiagram_AO_circle_bool
+        \bool_set_false:N \l__modiagram_AO_fancy_bool
+        \tl_set:Nn \l__modiagram_lines_tl { gray }
       } ,
     style / round  .code:n    =
       {
-        \bool_set_true:N \l__MOdiagram_AO_square_bool
-        \bool_set_true:N \l__MOdiagram_AO_round_bool
-        \bool_set_false:N \l__MOdiagram_AO_circle_bool
-        \bool_set_false:N \l__MOdiagram_AO_fancy_bool
-        \tl_set:Nn \l__MOdiagram_lines_tl { gray }
+        \bool_set_true:N \l__modiagram_AO_square_bool
+        \bool_set_true:N \l__modiagram_AO_round_bool
+        \bool_set_false:N \l__modiagram_AO_circle_bool
+        \bool_set_false:N \l__modiagram_AO_fancy_bool
+        \tl_set:Nn \l__modiagram_lines_tl { gray }
       } ,
     style / fancy  .code:n    =
       {
-        \bool_set_true:N \l__MOdiagram_AO_square_bool
-        \bool_set_true:N \l__MOdiagram_AO_round_bool
-        \bool_set_false:N \l__MOdiagram_AO_circle_bool
-        \bool_set_true:N \l__MOdiagram_AO_fancy_bool
-        \tl_set:Nn \l__MOdiagram_lines_tl { densely~dashed }
+        \bool_set_true:N \l__modiagram_AO_square_bool
+        \bool_set_true:N \l__modiagram_AO_round_bool
+        \bool_set_false:N \l__modiagram_AO_circle_bool
+        \bool_set_true:N \l__modiagram_AO_fancy_bool
+        \tl_set:Nn \l__modiagram_lines_tl { densely~dashed }
       } ,
-    lines         .tl_set:N   = \l__MOdiagram_lines_tl ,
+    lines         .tl_set:N   = \l__modiagram_lines_tl ,
     distance      .code:n     =
       {
-        \dim_set:Nn \l__MOdiagram_inter_atom_distance_dim { #1 }
-        \__MOdiagram_molecule_position:n { #1 }
+        \dim_set:Nn \l__modiagram_inter_atom_distance_dim {#1}
+        \__modiagram_molecule_position:n {#1}
       } ,
-    AO-width      .tl_set:N   = \l__MOdiagram_AO_width_dim ,
-    up-el-pos     .code:n     = \__MOdiagram_AO_place_electron:nn { 0 } { #1 } ,
-    down-el-pos   .code:n     = \__MOdiagram_AO_place_electron:nn { 1 } { #1 } ,
-    el-sep        .code:n     = \__MOdiagram_AO_place_electrons:n { #1 } ,
-    labels        .bool_set:N = \l__MOdiagram_AO_labels_bool ,
-    names         .bool_set:N = \l__MOdiagram_names_bool ,
-    names-style   .tl_set:N   = \l__MOdiagram_names_style_tl ,
+    AO-width      .tl_set:N   = \l__modiagram_AO_width_dim ,
+    up-el-pos     .code:n     = \__modiagram_AO_place_electron:nn {0} {#1} ,
+    down-el-pos   .code:n     = \__modiagram_AO_place_electron:nn {1} {#1} ,
+    el-sep        .code:n     = \__modiagram_AO_place_electrons:n {#1} ,
+    labels        .bool_set:N = \l__modiagram_AO_labels_bool ,
+    names         .bool_set:N = \l__modiagram_names_bool ,
+    names-style   .tl_set:N   = \l__modiagram_names_style_tl ,
     names-style-add .code:n   =
-      { \tl_put_right:Nn \l__MOdiagram_names_style_tl { , #1 } } ,
-    labels-fs     .tl_set:N   = \l__MOdiagram_orbital_label_fontsize_tl ,
-    labels-style  .tl_set:N   = \l__MOdiagram_orbital_label_style_tl
+      { \tl_put_right:Nn \l__modiagram_names_style_tl { , #1 } } ,
+    labels-fs     .tl_set:N   = \l__modiagram_orbital_label_fontsize_tl ,
+    labels-style  .tl_set:N   = \l__modiagram_orbital_label_style_tl
   }
 
-\ProcessKeysOptions { MOdiagram / diagram }
+\ProcessKeysOptions { modiagram / diagram }
 
 % --------------------------------------------------------------------------- %
 % setup command
-\NewDocumentCommand \MOsetup { m }
-  { \keys_set:nn { MOdiagram / diagram } { #1 } }
+\NewDocumentCommand \setmodiagram {+m}
+  { \keys_set:nn {modiagram/diagram} {#1} }
 
+\NewDocumentCommand \MOsetup {+m}
+  {
+    \msg_warning:nnnnn {modiagram} {deprecated}
+      {command}
+      {\MOsetup}
+      {\setmodiagram}
+    \keys_set:nn {modiagram/diagram} {#1}
+  }
+
 % --------------------------------------------------------------------------- %
 % draw AOs
-\tl_new:N \l__MOdiagram_atom_left_name_tl
-\tl_new:N \l__MOdiagram_atom_right_name_tl
+\tl_new:N \l__modiagram_atom_left_name_tl
+\tl_new:N \l__modiagram_atom_right_name_tl
 
-\bool_new:N \l__MOdiagram_left_atom_placed_bool
-\bool_set_false:N \l__MOdiagram_left_atom_placed_bool
-\bool_new:N \l__MOdiagram_right_atom_placed_bool
-\bool_set_false:N \l__MOdiagram_right_atom_placed_bool
+\bool_new:N \l__modiagram_left_atom_placed_bool
+\bool_set_false:N \l__modiagram_left_atom_placed_bool
+\bool_new:N \l__modiagram_right_atom_placed_bool
+\bool_set_false:N \l__modiagram_right_atom_placed_bool
 
-\NewDocumentCommand \__MOdiagram_atom: { o m m }
+\NewDocumentCommand \__modiagram_atom: {omm}
   {
-    \__MOdiagram_atom_disable:
-    \keys_set:nn { MOdiagram / atom } { position = #2 }
-    \keys_set:nn { MOdiagram / atom } { #3 }
-    \bool_if:NTF \l__MOdiagram_atom_left_bool
-      { \bool_set_true:N \l__MOdiagram_left_atom_placed_bool }
-      { \bool_set_true:N \l__MOdiagram_right_atom_placed_bool }
-    \IfNoValueF { #1 }
+    \__modiagram_atom_disable:
+    \keys_set:nn {modiagram/atom} { position = #2 }
+    \keys_set:nn {modiagram/atom} {#3}
+    \bool_if:NTF \l__modiagram_atom_left_bool
+      { \bool_set_true:N \l__modiagram_left_atom_placed_bool }
+      { \bool_set_true:N \l__modiagram_right_atom_placed_bool }
+    \IfNoValueF {#1}
       {
-        \bool_if:NTF \l__MOdiagram_atom_left_bool
-          { \tl_set:Nn \l__MOdiagram_atom_left_name_tl { #1 } }
-          { \tl_set:Nn \l__MOdiagram_atom_right_name_tl { #1 } }
+        \bool_if:NTF \l__modiagram_atom_left_bool
+          { \tl_set:Nn \l__modiagram_atom_left_name_tl {#1} }
+          { \tl_set:Nn \l__modiagram_atom_right_name_tl {#1} }
       }
-    \__MOdiagram_one_s:
-    \__MOdiagram_two_s:
-    \__MOdiagram_two_p:
-%     \__MOdiagram_three_s:
-%     \__MOdiagram_three_p:
-%     \__MOdiagram_four_s:
+    \__modiagram_one_s:
+    \__modiagram_two_s:
+    \__modiagram_two_p:
+%     \__modiagram_three_s:
+%     \__modiagram_three_p:
+%     \__modiagram_four_s:
   }
 
-\bool_new:N \l__MOdiagram_atom_left_bool
+\bool_new:N \l__modiagram_atom_left_bool
 
 % is \atom placed left or right?
-\keys_define:nn { MOdiagram / atom }
+\keys_define:nn {modiagram/atom}
   {
     position         .choice: ,
     position / left  .code:n =
-      { \bool_set_true:N \l__MOdiagram_atom_left_bool } ,
+      { \bool_set_true:N \l__modiagram_atom_left_bool } ,
     position / right .code:n =
-      { \bool_set_false:N \l__MOdiagram_atom_left_bool }
+      { \bool_set_false:N \l__modiagram_atom_left_bool }
   }
 
-\dim_new:N \l__MOdiagram_atom_xshift_dim
+\dim_new:N \l__modiagram_atom_xshift_dim
 
 % these are going to be our `arguments' for the \atom command:
-\keys_define:nn { MOdiagram / atom }
+\keys_define:nn {modiagram/atom}
   {
-    1s          .code:n    = { \__MOdiagram_one_s_set:n { #1 } } ,
+    1s          .code:n    = { \__modiagram_one_s_set:n {#1} } ,
     1s          .default:n = { 0 ; pair } ,
-    2s          .code:n    = { \__MOdiagram_two_s_set:n { #1 } } ,
+    2s          .code:n    = { \__modiagram_two_s_set:n {#1} } ,
     2s          .default:n = { 2 ; pair } ,
-    2p          .code:n    = { \__MOdiagram_two_p_set:n { #1 } } ,
+    2p          .code:n    = { \__modiagram_two_p_set:n {#1} } ,
     2p          .default:n = { 5 ; pair , pair , pair } ,
-    color       .code:n    = { \__MOdiagram_electron_color_set:n { #1 } } ,
-    label       .code:n    = { \__MOdiagram_orbital_label_set:n { #1 } } ,
-    up-el-pos   .code:n    = { \__MOdiagram_electron_up_set:n { #1 } } ,
-    down-el-pos .code:n    = { \__MOdiagram_electron_down_set:n { #1 } }
+    color       .code:n    = { \__modiagram_electron_color_set:n {#1} } ,
+    label       .code:n    = { \__modiagram_orbital_label_set:n {#1} } ,
+    up-el-pos   .code:n    = { \__modiagram_electron_up_set:n {#1} } ,
+    down-el-pos .code:n    = { \__modiagram_electron_down_set:n {#1} }
   }
 
 % --------------------------------------------------------------------------- %
 % 1s orbital
-\dim_new:N \l__MOdiagram_atom_one_s_dim
-\dim_new:N \l__MOdiagram_atom_left_one_s_dim
-\dim_new:N \l__MOdiagram_atom_right_one_s_dim
+\dim_new:N \l__modiagram_atom_one_s_dim
+\dim_new:N \l__modiagram_atom_left_one_s_dim
+\dim_new:N \l__modiagram_atom_right_one_s_dim
 
-\tl_new:N \l__MOdiagram_AO_one_s_electron_tl
+\tl_new:N \l__modiagram_AO_one_s_electron_tl
 
-\bool_new:N \l__MOdiagram_atom_one_s_bool
-\bool_new:N \l__MOdiagram_one_s_left_bool
-\bool_set_false:N \l__MOdiagram_one_s_left_bool
-\bool_new:N \l__MOdiagram_one_s_right_bool
-\bool_set_false:N \l__MOdiagram_one_s_right_bool
+\bool_new:N \l__modiagram_atom_one_s_bool
+\bool_new:N \l__modiagram_one_s_left_bool
+\bool_set_false:N \l__modiagram_one_s_left_bool
+\bool_new:N \l__modiagram_one_s_right_bool
+\bool_set_false:N \l__modiagram_one_s_right_bool
 
 % read 1s argument
-\cs_new_protected:Npn \__MOdiagram_one_s_set:n #1
+\cs_new_protected:Npn \__modiagram_one_s_set:n #1
   {
-    \bool_set_true:N \l__MOdiagram_atom_one_s_bool
-    \tl_if_in:onTF { #1 } { ; }
-      { \__MOdiagram_one_s_set_aux:n #1 \q_stop }
+    \bool_set_true:N \l__modiagram_atom_one_s_bool
+    \tl_if_in:onTF {#1} {;}
+      { \__modiagram_one_s_set_aux:n #1 \q_stop }
       {
-        \tl_clear:N \l__MOdiagram_AO_one_s_electron_tl
-        \tl_if_blank:nTF { #1 }
-          { \dim_set:Nn \l__MOdiagram_atom_one_s_dim { 0 cm } }
-          { \dim_set:Nn \l__MOdiagram_atom_one_s_dim { #1 cm } }
+        \tl_clear:N \l__modiagram_AO_one_s_electron_tl
+        \tl_if_blank:nTF {#1}
+          { \dim_set:Nn \l__modiagram_atom_one_s_dim {0cm} }
+          { \dim_set:Nn \l__modiagram_atom_one_s_dim {#1cm} }
       }
   }
 
-\cs_new_protected:Npn \__MOdiagram_one_s_set_aux:n #1;#2 \q_stop
+\cs_new_protected:Npn \__modiagram_one_s_set_aux:n #1;#2 \q_stop
   {
-    \tl_if_blank:nTF { #1 }
-      { \dim_set:Nn \l__MOdiagram_atom_one_s_dim { 0 cm } }
-      { \dim_set:Nn \l__MOdiagram_atom_one_s_dim { #1 cm } }
-    \tl_set:Nn \l__MOdiagram_AO_one_s_electron_tl { #2 }
+    \tl_if_blank:nTF {#1}
+      { \dim_set:Nn \l__modiagram_atom_one_s_dim {0cm} }
+      { \dim_set:Nn \l__modiagram_atom_one_s_dim {#1cm} }
+    \tl_set:Nn \l__modiagram_AO_one_s_electron_tl {#2}
   }
 
 % display 1s orbital
-\cs_new_protected:Npn \__MOdiagram_one_s:
+\cs_new_protected:Npn \__modiagram_one_s:
   {
-    \bool_if:NT \l__MOdiagram_atom_one_s_bool
+    \bool_if:NT \l__modiagram_atom_one_s_bool
       {
-        \bool_if:NTF \l__MOdiagram_atom_left_bool
+        \bool_if:NTF \l__modiagram_atom_left_bool
           {
             \dim_set_eq:NN
-              \l__MOdiagram_atom_xshift_dim
-              \l__MOdiagram_left_atom_position_dim
+              \l__modiagram_atom_xshift_dim
+              \l__modiagram_left_atom_position_dim
             \dim_set_eq:NN
-              \l__MOdiagram_atom_left_one_s_dim
-              \l__MOdiagram_atom_one_s_dim
-            \bool_set_true:N \l__MOdiagram_one_s_left_bool
+              \l__modiagram_atom_left_one_s_dim
+              \l__modiagram_atom_one_s_dim
+            \bool_set_true:N \l__modiagram_one_s_left_bool
           }
           {
-            \dim_set:Nn \l__MOdiagram_atom_xshift_dim
+            \dim_set:Nn \l__modiagram_atom_xshift_dim
               {
-                \l__MOdiagram_left_atom_position_dim
-                  + \l__MOdiagram_inter_atom_distance_dim
+                \l__modiagram_left_atom_position_dim
+                  + \l__modiagram_inter_atom_distance_dim
               }
             \dim_set_eq:NN
-              \l__MOdiagram_atom_right_one_s_dim
-              \l__MOdiagram_atom_one_s_dim
-            \bool_set_true:N \l__MOdiagram_one_s_right_bool
+              \l__modiagram_atom_right_one_s_dim
+              \l__modiagram_atom_one_s_dim
+            \bool_set_true:N \l__modiagram_one_s_right_bool
           }
-        \__MOdiagram_energy_range:N \l__MOdiagram_atom_one_s_dim
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+        \__modiagram_energy_range:N \l__modiagram_atom_one_s_dim
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
           (1s
-            \bool_if:NTF \l__MOdiagram_atom_left_bool
-              { left }
-              { right }
+            \bool_if:NTF \l__modiagram_atom_left_bool
+              {left}
+              {right}
           )
-          at ( \l__MOdiagram_atom_xshift_dim , \l__MOdiagram_atom_one_s_dim )
+          at ( \l__modiagram_atom_xshift_dim , \l__modiagram_atom_one_s_dim )
           {
-            \bool_if:NTF \l__MOdiagram_atom_left_bool
+            \bool_if:NTF \l__modiagram_atom_left_bool
               {
-                \__MOdiagram_get_electron_color:n { 1sleft }
-                \__MOdiagram_get_electron_up:n { 1sleft }
-                \__MOdiagram_get_electron_down:n { 1sleft }
+                \__modiagram_get_electron_color:n {1sleft}
+                \__modiagram_get_electron_up:n {1sleft}
+                \__modiagram_get_electron_down:n {1sleft}
               }
               {
-                \__MOdiagram_get_electron_color:n { 1sright }
-                \__MOdiagram_get_electron_up:n { 1sright }
-                \__MOdiagram_get_electron_down:n { 1sright }
+                \__modiagram_get_electron_color:n {1sright}
+                \__modiagram_get_electron_up:n {1sright}
+                \__modiagram_get_electron_down:n {1sright}
               }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_AO_one_s_electron_tl }
-              { \tl_use:N \l__MOdiagram_electron_current_color_tl }
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_AO_one_s_electron_tl }
+              { \tl_use:N \l__modiagram_electron_current_color_tl }
           } ;
-        \bool_if:NTF \l__MOdiagram_atom_left_bool
-          { \__MOdiagram_get_orbital_label:n { 1s left } }
-          { \__MOdiagram_get_orbital_label:n { 1s right } }
+        \bool_if:NTF \l__modiagram_atom_left_bool
+          { \__modiagram_get_orbital_label:n {1sleft} }
+          { \__modiagram_get_orbital_label:n {1sright} }
       }
   }
 
 % --------------------------------------------------------------------------- %
 % 2s orbital
-\dim_new:N \l__MOdiagram_atom_two_s_dim
-\dim_new:N \l__MOdiagram_atom_left_two_s_dim
-\dim_new:N \l__MOdiagram_atom_right_two_s_dim
+\dim_new:N \l__modiagram_atom_two_s_dim
+\dim_new:N \l__modiagram_atom_left_two_s_dim
+\dim_new:N \l__modiagram_atom_right_two_s_dim
 
-\tl_new:N \l__MOdiagram_AO_two_s_electron_tl
+\tl_new:N \l__modiagram_AO_two_s_electron_tl
 
-\bool_new:N \l__MOdiagram_atom_two_s_bool
-\bool_new:N \l__MOdiagram_two_s_left_bool
-\bool_set_false:N \l__MOdiagram_two_s_left_bool
-\bool_new:N \l__MOdiagram_two_s_right_bool
-\bool_set_false:N \l__MOdiagram_two_s_right_bool
+\bool_new:N \l__modiagram_atom_two_s_bool
+\bool_new:N \l__modiagram_two_s_left_bool
+\bool_set_false:N \l__modiagram_two_s_left_bool
+\bool_new:N \l__modiagram_two_s_right_bool
+\bool_set_false:N \l__modiagram_two_s_right_bool
 
 % read 2s argument
-\cs_new_protected:Npn \__MOdiagram_two_s_set:n #1
+\cs_new_protected:Npn \__modiagram_two_s_set:n #1
   {
-    \bool_set_true:N \l__MOdiagram_atom_two_s_bool
-    \tl_if_in:onTF { #1 } { ; }
-      { \__MOdiagram_two_s_set_aux:n #1 \q_stop }
+    \bool_set_true:N \l__modiagram_atom_two_s_bool
+    \tl_if_in:onTF {#1} {;}
+      { \__modiagram_two_s_set_aux:n #1 \q_stop }
       {
-        \tl_clear:N \l__MOdiagram_AO_two_s_electron_tl
-        \tl_if_blank:nTF { #1 }
-          { \dim_set:Nn \l__MOdiagram_atom_two_s_dim { 2 cm } }
-          { \dim_set:Nn \l__MOdiagram_atom_two_s_dim { #1 cm } }
+        \tl_clear:N \l__modiagram_AO_two_s_electron_tl
+        \tl_if_blank:nTF {#1}
+          { \dim_set:Nn \l__modiagram_atom_two_s_dim {2cm} }
+          { \dim_set:Nn \l__modiagram_atom_two_s_dim {#1cm} }
       }
   }
 
-\cs_new_protected:Npn \__MOdiagram_two_s_set_aux:n #1;#2 \q_stop
+\cs_new_protected:Npn \__modiagram_two_s_set_aux:n #1;#2 \q_stop
   {
-    \tl_if_blank:nTF { #1 }
-      { \dim_set:Nn \l__MOdiagram_atom_two_s_dim { 2 cm } }
-      { \dim_set:Nn \l__MOdiagram_atom_two_s_dim { #1 cm } }
-    \tl_set:Nn \l__MOdiagram_AO_two_s_electron_tl { #2 }
+    \tl_if_blank:nTF {#1}
+      { \dim_set:Nn \l__modiagram_atom_two_s_dim {2cm} }
+      { \dim_set:Nn \l__modiagram_atom_two_s_dim {#1cm} }
+    \tl_set:Nn \l__modiagram_AO_two_s_electron_tl {#2}
   }
 
 % display 2s orbital
-\cs_new_protected:Npn \__MOdiagram_two_s:
+\cs_new_protected:Npn \__modiagram_two_s:
   {
-    \bool_if:NT \l__MOdiagram_atom_two_s_bool
+    \dim_show:N \l__modiagram_atom_two_s_dim
+    \bool_if:NT \l__modiagram_atom_two_s_bool
       {
-        \bool_if:NTF \l__MOdiagram_atom_left_bool
+        \bool_if:NTF \l__modiagram_atom_left_bool
           {
             \dim_set_eq:NN
-              \l__MOdiagram_atom_xshift_dim
-              \l__MOdiagram_left_atom_position_dim
+              \l__modiagram_atom_xshift_dim
+              \l__modiagram_left_atom_position_dim
             \dim_set_eq:NN
-              \l__MOdiagram_atom_left_two_s_dim
-              \l__MOdiagram_atom_two_s_dim
-            \bool_set_true:N \l__MOdiagram_two_s_left_bool
+              \l__modiagram_atom_left_two_s_dim
+              \l__modiagram_atom_two_s_dim
+            \bool_set_true:N \l__modiagram_two_s_left_bool
           }
           {
-            \dim_set:Nn \l__MOdiagram_atom_xshift_dim
+            \dim_set:Nn \l__modiagram_atom_xshift_dim
               {
-                \l__MOdiagram_left_atom_position_dim
-                  + \l__MOdiagram_inter_atom_distance_dim
+                \l__modiagram_left_atom_position_dim
+                  + \l__modiagram_inter_atom_distance_dim
               }
             \dim_set_eq:NN
-              \l__MOdiagram_atom_right_two_s_dim
-              \l__MOdiagram_atom_two_s_dim
-            \bool_set_true:N \l__MOdiagram_two_s_right_bool
+              \l__modiagram_atom_right_two_s_dim
+              \l__modiagram_atom_two_s_dim
+            \bool_set_true:N \l__modiagram_two_s_right_bool
           }
-        \__MOdiagram_energy_range:N \l__MOdiagram_atom_two_s_dim
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+        \__modiagram_energy_range:N \l__modiagram_atom_two_s_dim
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
           (2s
-            \bool_if:NTF \l__MOdiagram_atom_left_bool
-              { left }
-              { right }
+            \bool_if:NTF \l__modiagram_atom_left_bool
+              {left}
+              {right}
           )
-          at ( \l__MOdiagram_atom_xshift_dim , \l__MOdiagram_atom_two_s_dim )
+          at ( \l__modiagram_atom_xshift_dim , \l__modiagram_atom_two_s_dim )
           {
-            \bool_if:NTF \l__MOdiagram_atom_left_bool
+            \bool_if:NTF \l__modiagram_atom_left_bool
               {
-                \__MOdiagram_get_electron_color:n { 2sleft }
-                \__MOdiagram_get_electron_up:n { 2sleft }
-                \__MOdiagram_get_electron_down:n { 2sleft }
+                \__modiagram_get_electron_color:n {2sleft}
+                \__modiagram_get_electron_up:n {2sleft}
+                \__modiagram_get_electron_down:n {2sleft}
               }
               {
-                \__MOdiagram_get_electron_color:n { 2sright }
-                \__MOdiagram_get_electron_up:n { 2sright }
-                \__MOdiagram_get_electron_down:n { 2sright }
+                \__modiagram_get_electron_color:n {2sright}
+                \__modiagram_get_electron_up:n {2sright}
+                \__modiagram_get_electron_down:n {2sright}
               }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_AO_two_s_electron_tl }
-              { \tl_use:N \l__MOdiagram_electron_current_color_tl }
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_AO_two_s_electron_tl }
+              { \tl_use:N \l__modiagram_electron_current_color_tl }
           } ;
-        \bool_if:NTF \l__MOdiagram_atom_left_bool
-          { \__MOdiagram_get_orbital_label:n { 2s left } }
-          { \__MOdiagram_get_orbital_label:n { 2s right } }
+        \bool_if:NTF \l__modiagram_atom_left_bool
+          { \__modiagram_get_orbital_label:n {2sleft} }
+          { \__modiagram_get_orbital_label:n {2sright} }
       }
   }
 
 % --------------------------------------------------------------------------- %
 % 2p orbital
-\dim_new:N \l__MOdiagram_atom_two_p_dim
-\dim_new:N \l__MOdiagram_atom_left_two_p_dim
-\dim_new:N \l__MOdiagram_atom_right_two_p_dim
+\dim_new:N \l__modiagram_atom_two_p_dim
+\dim_new:N \l__modiagram_atom_left_two_p_dim
+\dim_new:N \l__modiagram_atom_right_two_p_dim
 
-\dim_new:N \l__MOdiagram_atom_px_shift_dim
-\dim_new:N \l__MOdiagram_atom_py_shift_dim
-\dim_new:N \l__MOdiagram_atom_pz_shift_dim
+\dim_new:N \l__modiagram_atom_px_shift_dim
+\dim_new:N \l__modiagram_atom_py_shift_dim
+\dim_new:N \l__modiagram_atom_pz_shift_dim
 
-\tl_new:N \l__MOdiagram_AO_two_px_electron_tl
-\tl_new:N \l__MOdiagram_AO_two_py_electron_tl
-\tl_new:N \l__MOdiagram_AO_two_pz_electron_tl
+\tl_new:N \l__modiagram_AO_two_px_electron_tl
+\tl_new:N \l__modiagram_AO_two_py_electron_tl
+\tl_new:N \l__modiagram_AO_two_pz_electron_tl
 
-\bool_new:N \l__MOdiagram_atom_two_p_bool
-\bool_new:N \l__MOdiagram_two_p_left_bool
-\bool_set_false:N \l__MOdiagram_two_p_left_bool
-\bool_new:N \l__MOdiagram_two_p_right_bool
-\bool_set_false:N \l__MOdiagram_two_p_right_bool
+\bool_new:N \l__modiagram_atom_two_p_bool
+\bool_new:N \l__modiagram_two_p_left_bool
+\bool_set_false:N \l__modiagram_two_p_left_bool
+\bool_new:N \l__modiagram_two_p_right_bool
+\bool_set_false:N \l__modiagram_two_p_right_bool
 
 % read 2p argument
-\cs_new_protected:Npn \__MOdiagram_two_p_set:n #1
+\cs_new_protected:Npn \__modiagram_two_p_set:n #1
   {
-    \bool_set_true:N \l__MOdiagram_atom_two_p_bool
-    \tl_if_in:onTF { #1 } { ; }
-      { \__MOdiagram_two_p_set_aux_i:n #1 \q_stop }
+    \bool_set_true:N \l__modiagram_atom_two_p_bool
+    \tl_if_in:onTF {#1} {;}
+      { \__modiagram_two_p_set_aux_i:n #1 \q_stop }
       {
-        \tl_clear:N \l__MOdiagram_AO_two_px_electron_tl
-        \tl_clear:N \l__MOdiagram_AO_two_py_electron_tl
-        \tl_clear:N \l__MOdiagram_AO_two_pz_electron_tl
-        \tl_if_blank:nTF { #1 }
-          { \dim_set:Nn \l__MOdiagram_atom_two_p_dim { 5 cm } }
-          { \dim_set:Nn \l__MOdiagram_atom_two_p_dim { #1 cm } }
+        \tl_clear:N \l__modiagram_AO_two_px_electron_tl
+        \tl_clear:N \l__modiagram_AO_two_py_electron_tl
+        \tl_clear:N \l__modiagram_AO_two_pz_electron_tl
+        \tl_if_blank:nTF {#1}
+          { \dim_set:Nn \l__modiagram_atom_two_p_dim { 5 cm } }
+          { \dim_set:Nn \l__modiagram_atom_two_p_dim { #1 cm } }
       }
   }
 
-\cs_new_protected:Npn \__MOdiagram_two_p_set_aux_i:n #1;#2 \q_stop
+\cs_new_protected:Npn \__modiagram_two_p_set_aux_i:n #1;#2 \q_stop
   {
-    \tl_if_blank:nTF { #1 }
-      { \dim_set:Nn \l__MOdiagram_atom_two_p_dim { 5 cm } }
-      { \dim_set:Nn \l__MOdiagram_atom_two_p_dim { #1 cm } }
-    \__MOdiagram_two_p_set_aux_ii:n { #2 }
+    \tl_if_blank:nTF {#1}
+      { \dim_set:Nn \l__modiagram_atom_two_p_dim { 5 cm } }
+      { \dim_set:Nn \l__modiagram_atom_two_p_dim { #1 cm } }
+    \__modiagram_two_p_set_aux_ii:n {#2}
   }
 
-\NewDocumentCommand \__MOdiagram_two_p_set_aux_ii:n
-  { > { \SplitArgument { 2 } { , } } m }
-  { \__MOdiagram_two_p_set_aux_iii:nnn #1 }
+\NewDocumentCommand \__modiagram_two_p_set_aux_ii:n
+  { > { \SplitArgument {2} {,} } m }
+  { \__modiagram_two_p_set_aux_iii:nnn #1 }
 
-\cs_set_nopar:Npn \__MOdiagram_two_p_set_aux_iii:nnn #1#2#3
+\cs_set_nopar:Npn \__modiagram_two_p_set_aux_iii:nnn #1#2#3
   {
-    \tl_if_blank:nF { #1 } { \tl_set:Nn \l__MOdiagram_AO_two_px_electron_tl { #1 } }
-    \tl_if_blank:nF { #2 } { \tl_set:Nn \l__MOdiagram_AO_two_py_electron_tl { #2 } }
-    \tl_if_blank:nF { #3 } { \tl_set:Nn \l__MOdiagram_AO_two_pz_electron_tl { #3 } }
+    \tl_if_blank:nF {#1} { \tl_set:Nn \l__modiagram_AO_two_px_electron_tl {#1} }
+    \tl_if_blank:nF {#2} { \tl_set:Nn \l__modiagram_AO_two_py_electron_tl {#2} }
+    \tl_if_blank:nF {#3} { \tl_set:Nn \l__modiagram_AO_two_pz_electron_tl {#3} }
   }
 
 % place the x, y, and z orbitals
-\cs_new_protected:Npn \__MOdiagram_p_orbitals_shift:nnn #1#2#3
+\cs_new_protected:Npn \__modiagram_p_orbitals_shift:nnn #1#2#3
   {
-    \fp_set:Nn \l__MOdiagram_tmpa_fp { \dim_to_fp:n { \l__MOdiagram_AO_width_dim } }
+    \fp_set:Nn \l__modiagram_tmpa_fp { \dim_to_fp:n { \l__modiagram_AO_width_dim } }
     {
-      \fp_set:Nn \l__MOdiagram_tmpa_fp { #1 * \l__MOdiagram_tmpa_fp }
-      \dim_gset:Nn \l__MOdiagram_atom_px_shift_dim { \fp_to_dim:N \l__MOdiagram_tmpa_fp }
+      \fp_set:Nn \l__modiagram_tmpa_fp { #1 * \l__modiagram_tmpa_fp }
+      \dim_gset:Nn \l__modiagram_atom_px_shift_dim { \fp_to_dim:N \l__modiagram_tmpa_fp }
     }
     {
-      \fp_set:Nn \l__MOdiagram_tmpa_fp { #2 * \l__MOdiagram_tmpa_fp }
-      \dim_gset:Nn \l__MOdiagram_atom_py_shift_dim { \fp_to_dim:N \l__MOdiagram_tmpa_fp }
+      \fp_set:Nn \l__modiagram_tmpa_fp { #2 * \l__modiagram_tmpa_fp }
+      \dim_gset:Nn \l__modiagram_atom_py_shift_dim { \fp_to_dim:N \l__modiagram_tmpa_fp }
     }
     {
-      \fp_set:Nn \l__MOdiagram_tmpa_fp { #3 * \l__MOdiagram_tmpa_fp }
-      \dim_gset:Nn \l__MOdiagram_atom_pz_shift_dim { \fp_to_dim:N \l__MOdiagram_tmpa_fp }
+      \fp_set:Nn \l__modiagram_tmpa_fp { #3 * \l__modiagram_tmpa_fp }
+      \dim_gset:Nn \l__modiagram_atom_pz_shift_dim { \fp_to_dim:N \l__modiagram_tmpa_fp }
     }
   }
 
 % display 2p orbitals
-\cs_new_protected:Npn \__MOdiagram_two_p:
+\cs_new_protected:Npn \__modiagram_two_p:
   {
-    \bool_if:NT \l__MOdiagram_atom_two_p_bool
+    \bool_if:NT \l__modiagram_atom_two_p_bool
       {
-        \bool_if:NTF \l__MOdiagram_atom_left_bool
+        \bool_if:NTF \l__modiagram_atom_left_bool
           {
             \dim_set_eq:NN
-              \l__MOdiagram_atom_xshift_dim
-              \l__MOdiagram_left_atom_position_dim 
-            \__MOdiagram_p_orbitals_shift:nnn { -4 } { -2 } { 0 }
+              \l__modiagram_atom_xshift_dim
+              \l__modiagram_left_atom_position_dim 
+            \__modiagram_p_orbitals_shift:nnn {-4} {-2} {0}
             \dim_set_eq:NN
-              \l__MOdiagram_atom_left_two_p_dim
-              \l__MOdiagram_atom_two_p_dim
+              \l__modiagram_atom_left_two_p_dim
+              \l__modiagram_atom_two_p_dim
             \dim_set_eq:NN
               \l_energy_axis_dim
-              \l__MOdiagram_atom_px_shift_dim
-            \bool_set_true:N \l__MOdiagram_two_p_left_bool
+              \l__modiagram_atom_px_shift_dim
+            \bool_set_true:N \l__modiagram_two_p_left_bool
           }
           {
-            \dim_set:Nn \l__MOdiagram_atom_xshift_dim
+            \dim_set:Nn \l__modiagram_atom_xshift_dim
               {
-                \l__MOdiagram_left_atom_position_dim
-                  + \l__MOdiagram_inter_atom_distance_dim
+                \l__modiagram_left_atom_position_dim
+                  + \l__modiagram_inter_atom_distance_dim
               }
-            \__MOdiagram_p_orbitals_shift:nnn { 0 } { 2 } { 4 }
+            \__modiagram_p_orbitals_shift:nnn {0} {2} {4}
             \dim_set_eq:NN
-              \l__MOdiagram_atom_right_two_p_dim
-              \l__MOdiagram_atom_two_p_dim
-            \bool_set_true:N \l__MOdiagram_two_p_right_bool
+              \l__modiagram_atom_right_two_p_dim
+              \l__modiagram_atom_two_p_dim
+            \bool_set_true:N \l__modiagram_two_p_right_bool
           }
-        \__MOdiagram_energy_range:N \l__MOdiagram_atom_two_p_dim
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+        \__modiagram_energy_range:N \l__modiagram_atom_two_p_dim
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
           (2pz
-            \bool_if:NTF \l__MOdiagram_atom_left_bool
-              { left }
-              { right }
+            \bool_if:NTF \l__modiagram_atom_left_bool
+              {left}
+              {right}
           )
           at
           (
-            \l__MOdiagram_atom_xshift_dim + \l__MOdiagram_atom_pz_shift_dim ,
-            \l__MOdiagram_atom_two_p_dim
+            \l__modiagram_atom_xshift_dim + \l__modiagram_atom_pz_shift_dim ,
+            \l__modiagram_atom_two_p_dim
           )
           {
-            \bool_if:NTF \l__MOdiagram_atom_left_bool
+            \bool_if:NTF \l__modiagram_atom_left_bool
               {
-                \__MOdiagram_get_electron_color:n { 2pz left }
-                \__MOdiagram_get_electron_up:n { 2pz left }
-                \__MOdiagram_get_electron_down:n { 2pz left }
+                \__modiagram_get_electron_color:n {2pzleft}
+                \__modiagram_get_electron_up:n {2pzleft}
+                \__modiagram_get_electron_down:n {2pzleft}
               }
               {
-                \__MOdiagram_get_electron_color:n { 2pz right }
-                \__MOdiagram_get_electron_up:n { 2pz right }
-                \__MOdiagram_get_electron_down:n { 2pz right }
+                \__modiagram_get_electron_color:n {2pzright}
+                \__modiagram_get_electron_up:n {2pzright}
+                \__modiagram_get_electron_down:n {2pzright}
               }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_AO_two_pz_electron_tl }
-              { \tl_use:N \l__MOdiagram_electron_current_color_tl }
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_AO_two_pz_electron_tl }
+              { \tl_use:N \l__modiagram_electron_current_color_tl }
           } ;
-        \bool_if:NTF \l__MOdiagram_atom_left_bool
-          { \__MOdiagram_get_orbital_label:n { 2pz left } }
-          { \__MOdiagram_get_orbital_label:n { 2pz right } }
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+        \bool_if:NTF \l__modiagram_atom_left_bool
+          { \__modiagram_get_orbital_label:n {2pzleft} }
+          { \__modiagram_get_orbital_label:n {2pzright} }
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
           (2py
-            \bool_if:NTF \l__MOdiagram_atom_left_bool
-              { left }
-              { right }
+            \bool_if:NTF \l__modiagram_atom_left_bool
+              {left}
+              {right}
           )
           at
           (
-            \l__MOdiagram_atom_xshift_dim + \l__MOdiagram_atom_py_shift_dim ,
-            \l__MOdiagram_atom_two_p_dim
+            \l__modiagram_atom_xshift_dim + \l__modiagram_atom_py_shift_dim ,
+            \l__modiagram_atom_two_p_dim
           )
           {
-            \bool_if:NTF \l__MOdiagram_atom_left_bool
+            \bool_if:NTF \l__modiagram_atom_left_bool
               {
-                \__MOdiagram_get_electron_color:n { 2py left }
-                \__MOdiagram_get_electron_up:n { 2py left }
-                \__MOdiagram_get_electron_down:n { 2py left }
+                \__modiagram_get_electron_color:n {2pyleft}
+                \__modiagram_get_electron_up:n {2pyleft}
+                \__modiagram_get_electron_down:n {2pyleft}
               }
               {
-                \__MOdiagram_get_electron_color:n { 2py right }
-                \__MOdiagram_get_electron_up:n { 2py right }
-                \__MOdiagram_get_electron_down:n { 2py right }
+                \__modiagram_get_electron_color:n {2pyright}
+                \__modiagram_get_electron_up:n {2pyright}
+                \__modiagram_get_electron_down:n {2pyright}
               }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_AO_two_py_electron_tl }
-              { \tl_use:N \l__MOdiagram_electron_current_color_tl }
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_AO_two_py_electron_tl }
+              { \tl_use:N \l__modiagram_electron_current_color_tl }
           } ;
-        \bool_if:NTF \l__MOdiagram_atom_left_bool
-          { \__MOdiagram_get_orbital_label:n { 2py left } }
-          { \__MOdiagram_get_orbital_label:n { 2py right } }
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+        \bool_if:NTF \l__modiagram_atom_left_bool
+          { \__modiagram_get_orbital_label:n {2pyleft} }
+          { \__modiagram_get_orbital_label:n {2pyright} }
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
           (2px
-            \bool_if:NTF \l__MOdiagram_atom_left_bool
-              { left }
-              { right }
+            \bool_if:NTF \l__modiagram_atom_left_bool
+              {left}
+              {right}
           )
           at
           (
-            \l__MOdiagram_atom_xshift_dim + \l__MOdiagram_atom_px_shift_dim ,
-            \l__MOdiagram_atom_two_p_dim
+            \l__modiagram_atom_xshift_dim + \l__modiagram_atom_px_shift_dim ,
+            \l__modiagram_atom_two_p_dim
           )
           {
-            \bool_if:NTF \l__MOdiagram_atom_left_bool
+            \bool_if:NTF \l__modiagram_atom_left_bool
               {
-                \__MOdiagram_get_electron_color:n { 2px left }
-                \__MOdiagram_get_electron_up:n { 2px left }
-                \__MOdiagram_get_electron_down:n { 2px left }
+                \__modiagram_get_electron_color:n {2pxleft}
+                \__modiagram_get_electron_up:n {2pxleft}
+                \__modiagram_get_electron_down:n {2pxleft}
               }
               {
-                \__MOdiagram_get_electron_color:n { 2px right }
-                \__MOdiagram_get_electron_up:n { 2px right }
-                \__MOdiagram_get_electron_down:n { 2px right }
+                \__modiagram_get_electron_color:n {2pxright}
+                \__modiagram_get_electron_up:n {2pxright}
+                \__modiagram_get_electron_down:n {2pxright}
               }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_AO_two_px_electron_tl }
-              { \tl_use:N \l__MOdiagram_electron_current_color_tl }
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_AO_two_px_electron_tl }
+              { \tl_use:N \l__modiagram_electron_current_color_tl }
           } ;
-        \bool_if:NTF \l__MOdiagram_atom_left_bool
-          { \__MOdiagram_get_orbital_label:n { 2px left } }
-          { \__MOdiagram_get_orbital_label:n { 2px right } }
+        \bool_if:NTF \l__modiagram_atom_left_bool
+          { \__modiagram_get_orbital_label:n {2pxleft} }
+          { \__modiagram_get_orbital_label:n {2pxright} }
       }  
   }
 
 % --------------------------------------------------------------------------- %
 % draw MOs
-\tl_new:N \l__MOdiagram_molecule_name_tl
+\tl_new:N \l__modiagram_molecule_name_tl
 
-\NewDocumentCommand \__MOdiagram_molecule: { o m }
+\NewDocumentCommand \__modiagram_molecule: {om}
   {
     \bool_if:nTF
       {
-        \l__MOdiagram_left_atom_placed_bool
+        \l__modiagram_left_atom_placed_bool
           &&
-        \l__MOdiagram_right_atom_placed_bool
+        \l__modiagram_right_atom_placed_bool
       }
       {
-        \__MOdiagram_molecule_disable:
-        \keys_set:nn { MOdiagram / molecule } { #2 }
-        \IfNoValueF { #1 }
-          { \tl_set:Nn \l__MOdiagram_molecule_name_tl { #1 } }
-        \__MOdiagram_one_mo_s:
-        \__MOdiagram_two_mo_s:
-        \__MOdiagram_two_mo_p:
-%         \__MOdiagram_three_mo_s:
-%         \__MOdiagram_three_mo_p:
-%         \__MOdiagram_four_mo_s:
+        \__modiagram_molecule_disable:
+        \keys_set:nn {modiagram/molecule} {#2}
+        \IfNoValueF {#1}
+          { \tl_set:Nn \l__modiagram_molecule_name_tl {#1} }
+        \__modiagram_one_mo_s:
+        \__modiagram_two_mo_s:
+        \__modiagram_two_mo_p:
+%         \__modiagram_three_mo_s:
+%         \__modiagram_three_mo_p:
+%         \__modiagram_four_mo_s:
       }
-      { \msg_error:nn { MOdiagram } { missing-atom } }
+      { \msg_error:nn {modiagram} {missing-atom} }
   }
 
 % these are going to be our molecule arguments:
-\keys_define:nn { MOdiagram / molecule }
+\keys_define:nn {modiagram/molecule}
   {
-    1sMO        .code:n    = { \__MOdiagram_one_mo_s_set:n { #1 } } ,
+    1sMO        .code:n    = { \__modiagram_one_mo_s_set:n {#1} } ,
     1sMO        .default:n = { .5 ; pair , pair } ,
-    2sMO        .code:n    = { \__MOdiagram_two_mo_s_set:n { #1 } } ,
+    2sMO        .code:n    = { \__modiagram_two_mo_s_set:n {#1} } ,
     2sMO        .default:n = { .5 ; pair , pair } ,
-    2pMO        .code:n    = { \__MOdiagram_two_mo_p_set:n { #1 } } ,
+    2pMO        .code:n    = { \__modiagram_two_mo_p_set:n {#1} } ,
     2pMO        .default:n = { 1.5 , .5 ; pair , pair , pair , pair , pair , pair } ,
-    color       .code:n    = { \__MOdiagram_electron_color_set:n { #1 } } ,
-    label       .code:n    = { \__MOdiagram_orbital_label_set:n { #1 } } ,
-    up-el-pos   .code:n    = { \__MOdiagram_electron_up_set:n { #1 } } ,
-    down-el-pos .code:n    = { \__MOdiagram_electron_down_set:n { #1 } }
+    color       .code:n    = { \__modiagram_electron_color_set:n {#1} } ,
+    label       .code:n    = { \__modiagram_orbital_label_set:n {#1} } ,
+    up-el-pos   .code:n    = { \__modiagram_electron_up_set:n {#1} } ,
+    down-el-pos .code:n    = { \__modiagram_electron_down_set:n {#1} }
   }
 
 % --------------------------------------------------------------------------- %
 % 1sigma orbitals
-\dim_new:N \l__MOdiagram_molecule_one_sigma_dim
-\dim_new:N \l__MOdiagram_molecule_one_sigmas_dim
+\dim_new:N \l__modiagram_molecule_one_sigma_dim
+\dim_new:N \l__modiagram_molecule_one_sigmas_dim
 
-\tl_new:N \l__MOdiagram_MO_one_sigma_s_electron_tl
-\tl_new:N \l__MOdiagram_MO_one_sigmas_s_electron_tl
-\bool_new:N \l__MOdiagram_molecule_one_mo_s_bool
+\tl_new:N \l__modiagram_MO_one_sigma_s_electron_tl
+\tl_new:N \l__modiagram_MO_one_sigmas_s_electron_tl
+\bool_new:N \l__modiagram_molecule_one_mo_s_bool
 
 % read 1sMO argument
-\cs_new_protected:Npn \__MOdiagram_one_mo_s_set:n #1
+\cs_new_protected:Npn \__modiagram_one_mo_s_set:n #1
   {
-    \bool_set_true:N \l__MOdiagram_molecule_one_mo_s_bool
-    \tl_if_in:onTF { #1 } { ; }
-      { \__MOdiagram_one_mo_s_set_aux:n #1 \q_stop }
-      { \__MOdiagram_one_mo_s_set_energy:n { #1 } }
+    \bool_set_true:N \l__modiagram_molecule_one_mo_s_bool
+    \tl_if_in:onTF {#1} { ; }
+      { \__modiagram_one_mo_s_set_aux:n #1 \q_stop }
+      { \__modiagram_one_mo_s_set_energy:n {#1} }
   }
 
-\cs_new_protected:Npn \__MOdiagram_one_mo_s_set_aux:n #1;#2 \q_stop
+\cs_new_protected:Npn \__modiagram_one_mo_s_set_aux:n #1;#2 \q_stop
   {
-    \__MOdiagram_one_mo_s_set_energy:n { #1 }
-    \__MOdiagram_one_mo_s_set_electrons:n { #2 }
+    \__modiagram_one_mo_s_set_energy:n {#1}
+    \__modiagram_one_mo_s_set_electrons:n {#2}
   }
 
-\cs_new_protected:Npn \__MOdiagram_one_mo_s_set_energy:n #1
+\cs_new_protected:Npn \__modiagram_one_mo_s_set_energy:n #1
   {
-    \tl_if_in:onTF { #1 } { / }
-      { \__MOdiagram_one_mo_s_set_energy_aux:n #1 \q_stop }
+    \tl_if_in:onTF {#1} {/}
+      { \__modiagram_one_mo_s_set_energy_aux:n #1 \q_stop }
       {
-        \tl_if_blank:nTF { #1 }
+        \tl_if_blank:nTF {#1}
           {
-            \dim_set:Nn \l__MOdiagram_molecule_one_sigma_dim { .5 cm }
-            \dim_set:Nn \l__MOdiagram_molecule_one_sigmas_dim { .5 cm }
+            \dim_set:Nn \l__modiagram_molecule_one_sigma_dim {.5cm}
+            \dim_set:Nn \l__modiagram_molecule_one_sigmas_dim {.5cm}
           }
           {
-            \dim_set:Nn \l__MOdiagram_molecule_one_sigma_dim { #1 cm }
-            \dim_set:Nn \l__MOdiagram_molecule_one_sigmas_dim { #1 cm }
+            \dim_set:Nn \l__modiagram_molecule_one_sigma_dim {#1cm}
+            \dim_set:Nn \l__modiagram_molecule_one_sigmas_dim {#1cm}
           }
       }
   }
 
-\cs_new_protected:Npn \__MOdiagram_one_mo_s_set_energy_aux:n #1/#2 \q_stop
+\cs_new_protected:Npn \__modiagram_one_mo_s_set_energy_aux:n #1/#2 \q_stop
   {
-    \tl_if_blank:nTF { #1 }
-      { \dim_set:Nn \l__MOdiagram_molecule_one_sigma_dim { .5 cm } }
-      { \dim_set:Nn \l__MOdiagram_molecule_one_sigma_dim { #1 cm } }
-    \tl_if_blank:nTF { #2 }
-      { \dim_set:Nn \l__MOdiagram_molecule_one_sigmas_dim { .5 cm } }
-      { \dim_set:Nn \l__MOdiagram_molecule_one_sigmas_dim { #2 cm } }
+    \tl_if_blank:nTF {#1}
+      { \dim_set:Nn \l__modiagram_molecule_one_sigma_dim {.5cm} }
+      { \dim_set:Nn \l__modiagram_molecule_one_sigma_dim {#1cm} }
+    \tl_if_blank:nTF {#2}
+      { \dim_set:Nn \l__modiagram_molecule_one_sigmas_dim {.5cm} }
+      { \dim_set:Nn \l__modiagram_molecule_one_sigmas_dim {#2cm} }
   }
 
-\cs_set_nopar:Npn \__MOdiagram_one_mo_s_set_electrons:n #1
+\cs_set_nopar:Npn \__modiagram_one_mo_s_set_electrons:n #1
   {
-    \tl_if_in:onTF { #1 } { , }
-      { \__MOdiagram_one_mo_s_set_electrons_aux:n #1 \q_stop }
-      { \tl_set:Nn \l__MOdiagram_MO_one_sigma_s_electron_tl { #1 } }
+    \tl_if_in:onTF {#1} {,}
+      { \__modiagram_one_mo_s_set_electrons_aux:n #1 \q_stop }
+      { \tl_set:Nn \l__modiagram_MO_one_sigma_s_electron_tl {#1} }
   }
 
-\cs_new_protected:Npn \__MOdiagram_one_mo_s_set_electrons_aux:n #1,#2 \q_stop
+\cs_new_protected:Npn \__modiagram_one_mo_s_set_electrons_aux:n #1,#2 \q_stop
   {
-    \tl_set:Nn \l__MOdiagram_MO_one_sigma_s_electron_tl { #1 }
-    \tl_set:Nn \l__MOdiagram_MO_one_sigmas_s_electron_tl { #2 }
+    \tl_set:Nn \l__modiagram_MO_one_sigma_s_electron_tl {#1}
+    \tl_set:Nn \l__modiagram_MO_one_sigmas_s_electron_tl {#2}
   }
 
 % display 1sigma/sigma* MOs:
-\cs_new_protected:Npn \__MOdiagram_one_mo_s:
+\cs_new_protected:Npn \__modiagram_one_mo_s:
   {
-    \bool_if:NT \l__MOdiagram_molecule_one_mo_s_bool
+    \bool_if:NT \l__modiagram_molecule_one_mo_s_bool
       {
         \bool_if:nF
-          { \l__MOdiagram_one_s_left_bool && \l__MOdiagram_one_s_right_bool }
-          { \msg_error:nnxx { MOdiagram } { missing-AO } { 1sMO } { 1s } }
-        \__MOdiagram_split_energy:nNN { one_s }
-          \l__MOdiagram_molecule_one_sigma_dim
-          \l__MOdiagram_molecule_one_sigmas_dim
-        \__MOdiagram_energy_range:N \l__MOdiagram_energy_gain_dim
-        \__MOdiagram_energy_range:N \l__MOdiagram_energy_loss_dim
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+          { \l__modiagram_one_s_left_bool && \l__modiagram_one_s_right_bool }
+          { \msg_error:nnnn {modiagram} {missing-AO} {1sMO} {1s} }
+        \__modiagram_split_energy:nNN {one_s}
+          \l__modiagram_molecule_one_sigma_dim
+          \l__modiagram_molecule_one_sigmas_dim
+        \__modiagram_energy_range:N \l__modiagram_energy_gain_dim
+        \__modiagram_energy_range:N \l__modiagram_energy_loss_dim
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
           (1sigma)
           at
           (
-            \l__MOdiagram_molecule_position_dim ,
-            \l__MOdiagram_energy_gain_dim
+            \l__modiagram_molecule_position_dim ,
+            \l__modiagram_energy_gain_dim
           )
           {
-            \__MOdiagram_get_electron_color:n { 1sigma }
-            \__MOdiagram_get_electron_up:n { 1sigma }
-            \__MOdiagram_get_electron_down:n { 1sigma }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_MO_one_sigma_s_electron_tl }
-              { \tl_use:N \l__MOdiagram_electron_current_color_tl }
+            \__modiagram_get_electron_color:n {1sigma}
+            \__modiagram_get_electron_up:n {1sigma}
+            \__modiagram_get_electron_down:n {1sigma}
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_MO_one_sigma_s_electron_tl }
+              { \tl_use:N \l__modiagram_electron_current_color_tl }
           } ;
-        \__MOdiagram_get_orbital_label:n { 1sigma }
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+        \__modiagram_get_orbital_label:n { 1sigma }
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
           (1sigma*)
           at
           (
-            \l__MOdiagram_molecule_position_dim ,
-            \l__MOdiagram_energy_loss_dim
+            \l__modiagram_molecule_position_dim ,
+            \l__modiagram_energy_loss_dim
           )
           {
-            \__MOdiagram_get_electron_color:n { 1sigma* }
-            \__MOdiagram_get_electron_up:n { 1sigma* }
-            \__MOdiagram_get_electron_down:n { 1sigma* }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_MO_one_sigmas_s_electron_tl }
-              { \tl_use:N \l__MOdiagram_electron_current_color_tl }
+            \__modiagram_get_electron_color:n {1sigma*}
+            \__modiagram_get_electron_up:n {1sigma*}
+            \__modiagram_get_electron_down:n {1sigma*}
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_MO_one_sigmas_s_electron_tl }
+              { \tl_use:N \l__modiagram_electron_current_color_tl }
           } ;
-        \__MOdiagram_get_orbital_label:n { 1sigma* }
-        \__MOdiagram_draw:f
-          { \l__MOdiagram_lines_tl }
+        \__modiagram_get_orbital_label:n {1sigma*}
+        \__modiagram_draw:f
+          { \l__modiagram_lines_tl }
           (1s left.east)  -- (1sigma.west)  (1sigma.east)   -- (1s right.west)
           (1s left.east)  -- (1sigma*.west) (1sigma*.east)  -- (1s right.west) ;
       }
@@ -892,115 +919,115 @@
 
 % --------------------------------------------------------------------------- %
 % 2sigma orbitals
-\dim_new:N \l__MOdiagram_molecule_two_sigma_dim
-\dim_new:N \l__MOdiagram_molecule_two_sigmas_dim
+\dim_new:N \l__modiagram_molecule_two_sigma_dim
+\dim_new:N \l__modiagram_molecule_two_sigmas_dim
 
-\tl_new:N \l__MOdiagram_MO_two_sigma_s_electron_tl
-\tl_new:N \l__MOdiagram_MO_two_sigmas_s_electron_tl
-\bool_new:N \l__MOdiagram_molecule_two_mo_s_bool
+\tl_new:N \l__modiagram_MO_two_sigma_s_electron_tl
+\tl_new:N \l__modiagram_MO_two_sigmas_s_electron_tl
+\bool_new:N \l__modiagram_molecule_two_mo_s_bool
 
 % read 2sMO argument
-\cs_new_protected:Npn \__MOdiagram_two_mo_s_set:n #1
+\cs_new_protected:Npn \__modiagram_two_mo_s_set:n #1
   {
-    \bool_set_true:N \l__MOdiagram_molecule_two_mo_s_bool
-    \tl_if_in:onTF { #1 } { ; }
-      { \__MOdiagram_two_mo_s_set_aux:n #1 \q_stop }
-      { \__MOdiagram_two_mo_s_set_energy:n { #1 } }
+    \bool_set_true:N \l__modiagram_molecule_two_mo_s_bool
+    \tl_if_in:onTF {#1} {;}
+      { \__modiagram_two_mo_s_set_aux:n #1 \q_stop }
+      { \__modiagram_two_mo_s_set_energy:n {#1} }
   }
 
-\cs_new_protected:Npn \__MOdiagram_two_mo_s_set_aux:n #1;#2 \q_stop
+\cs_new_protected:Npn \__modiagram_two_mo_s_set_aux:n #1;#2 \q_stop
   {
-    \__MOdiagram_two_mo_s_set_energy:n { #1 }
-    \__MOdiagram_two_mo_s_set_electrons:n { #2 }
+    \__modiagram_two_mo_s_set_energy:n {#1}
+    \__modiagram_two_mo_s_set_electrons:n {#2}
   }
 
-\cs_new_protected:Npn \__MOdiagram_two_mo_s_set_energy:n #1
+\cs_new_protected:Npn \__modiagram_two_mo_s_set_energy:n #1
   {
-    \tl_if_in:onTF { #1 } { / }
-      { \__MOdiagram_two_mo_s_set_energy_aux:n #1 \q_stop }
+    \tl_if_in:onTF {#1} {/}
+      { \__modiagram_two_mo_s_set_energy_aux:n #1 \q_stop }
       {
-        \tl_if_blank:nTF { #1 }
+        \tl_if_blank:nTF {#1}
           {
-            \dim_set:Nn \l__MOdiagram_molecule_two_sigma_dim { .5 cm }
-            \dim_set:Nn \l__MOdiagram_molecule_two_sigmas_dim { .5 cm }
+            \dim_set:Nn \l__modiagram_molecule_two_sigma_dim {.5cm}
+            \dim_set:Nn \l__modiagram_molecule_two_sigmas_dim {.5cm}
           }
           {
-            \dim_set:Nn \l__MOdiagram_molecule_two_sigma_dim { #1 cm }
-            \dim_set:Nn \l__MOdiagram_molecule_two_sigmas_dim { #1 cm }
+            \dim_set:Nn \l__modiagram_molecule_two_sigma_dim {#1cm}
+            \dim_set:Nn \l__modiagram_molecule_two_sigmas_dim {#1cm}
           }
       }
   }
 
-\cs_new_protected:Npn \__MOdiagram_two_mo_s_set_energy_aux:n #1/#2 \q_stop
+\cs_new_protected:Npn \__modiagram_two_mo_s_set_energy_aux:n #1/#2 \q_stop
   {
-    \tl_if_blank:nTF { #1 }
-      { \dim_set:Nn \l__MOdiagram_molecule_two_sigma_dim { .5 cm } }
-      { \dim_set:Nn \l__MOdiagram_molecule_two_sigma_dim { #1 cm } }
-    \tl_if_blank:nTF { #2 }
-      { \dim_set:Nn \l__MOdiagram_molecule_two_sigmas_dim { .5 cm } }
-      { \dim_set:Nn \l__MOdiagram_molecule_two_sigmas_dim { #2 cm } }
+    \tl_if_blank:nTF {#1}
+      { \dim_set:Nn \l__modiagram_molecule_two_sigma_dim {.5cm} }
+      { \dim_set:Nn \l__modiagram_molecule_two_sigma_dim {#1cm} }
+    \tl_if_blank:nTF {#2}
+      { \dim_set:Nn \l__modiagram_molecule_two_sigmas_dim {.5cm} }
+      { \dim_set:Nn \l__modiagram_molecule_two_sigmas_dim {#2cm} }
   }
 
-\cs_set_nopar:Npn \__MOdiagram_two_mo_s_set_electrons:n #1
+\cs_set_nopar:Npn \__modiagram_two_mo_s_set_electrons:n #1
   {
-    \tl_if_in:onTF { #1 } { , }
-      { \__MOdiagram_two_mo_s_set_electrons_aux:n #1 \q_stop }
-      { \tl_set:Nn \l__MOdiagram_MO_two_sigma_s_electron_tl { #1 } }
+    \tl_if_in:onTF {#1} {,}
+      { \__modiagram_two_mo_s_set_electrons_aux:n #1 \q_stop }
+      { \tl_set:Nn \l__modiagram_MO_two_sigma_s_electron_tl {#1} }
   }
 
-\cs_new_protected:Npn \__MOdiagram_two_mo_s_set_electrons_aux:n #1,#2 \q_stop
+\cs_new_protected:Npn \__modiagram_two_mo_s_set_electrons_aux:n #1,#2 \q_stop
   {
-    \tl_set:Nn \l__MOdiagram_MO_two_sigma_s_electron_tl { #1 }
-    \tl_set:Nn \l__MOdiagram_MO_two_sigmas_s_electron_tl { #2 }
+    \tl_set:Nn \l__modiagram_MO_two_sigma_s_electron_tl {#1}
+    \tl_set:Nn \l__modiagram_MO_two_sigmas_s_electron_tl {#2}
   }
 
 % display 2sigma/sigma* MOs:
-\cs_new_protected:Npn \__MOdiagram_two_mo_s:
+\cs_new_protected:Npn \__modiagram_two_mo_s:
   {
-    \bool_if:NT \l__MOdiagram_molecule_two_mo_s_bool
+    \bool_if:NT \l__modiagram_molecule_two_mo_s_bool
       {
         \bool_if:nF
-          { \l__MOdiagram_two_s_left_bool && \l__MOdiagram_two_s_right_bool }
-          { \msg_error:nnxx { MOdiagram } { missing-AO } { 2sMO } { 2s } }
-        \__MOdiagram_split_energy:nNN { two_s }
-          \l__MOdiagram_molecule_two_sigma_dim
-          \l__MOdiagram_molecule_two_sigmas_dim
-        \__MOdiagram_energy_range:N \l__MOdiagram_energy_gain_dim
-        \__MOdiagram_energy_range:N \l__MOdiagram_energy_loss_dim
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+          { \l__modiagram_two_s_left_bool && \l__modiagram_two_s_right_bool }
+          { \msg_error:nnnn {modiagram} {missing-AO} {2sMO} {2s} }
+        \__modiagram_split_energy:nNN {two_s}
+          \l__modiagram_molecule_two_sigma_dim
+          \l__modiagram_molecule_two_sigmas_dim
+        \__modiagram_energy_range:N \l__modiagram_energy_gain_dim
+        \__modiagram_energy_range:N \l__modiagram_energy_loss_dim
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
           (2sigma)
           at
           (
-            \l__MOdiagram_molecule_position_dim ,
-            \l__MOdiagram_energy_gain_dim
+            \l__modiagram_molecule_position_dim ,
+            \l__modiagram_energy_gain_dim
           )
           {
-            \__MOdiagram_get_electron_color:n { 2sigma }
-            \__MOdiagram_get_electron_up:n { 2sigma }
-            \__MOdiagram_get_electron_down:n { 2sigma }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_MO_two_sigma_s_electron_tl }
-              { \tl_use:N \l__MOdiagram_electron_current_color_tl }
+            \__modiagram_get_electron_color:n {2sigma}
+            \__modiagram_get_electron_up:n {2sigma}
+            \__modiagram_get_electron_down:n {2sigma}
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_MO_two_sigma_s_electron_tl }
+              { \tl_use:N \l__modiagram_electron_current_color_tl }
           } ;
-        \__MOdiagram_get_orbital_label:n { 2sigma }
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+        \__modiagram_get_orbital_label:n {2sigma}
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
           (2sigma*)
           at
           (
-            \l__MOdiagram_molecule_position_dim ,
-            \l__MOdiagram_energy_loss_dim
+            \l__modiagram_molecule_position_dim ,
+            \l__modiagram_energy_loss_dim
           )
           {
-            \__MOdiagram_get_electron_color:n { 2sigma* }
-            \__MOdiagram_get_electron_up:n { 2sigma* }
-            \__MOdiagram_get_electron_down:n { 2sigma* }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_MO_two_sigmas_s_electron_tl }
-              { \tl_use:N \l__MOdiagram_electron_current_color_tl }
+            \__modiagram_get_electron_color:n {2sigma*}
+            \__modiagram_get_electron_up:n {2sigma*}
+            \__modiagram_get_electron_down:n {2sigma*}
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_MO_two_sigmas_s_electron_tl }
+              { \tl_use:N \l__modiagram_electron_current_color_tl }
           } ;
-        \__MOdiagram_get_orbital_label:n { 2sigma* }
-        \__MOdiagram_draw:f
-          { \l__MOdiagram_lines_tl }
+        \__modiagram_get_orbital_label:n {2sigma*}
+        \__modiagram_draw:f
+          { \l__modiagram_lines_tl }
           (2s left.east)  -- (2sigma.west)  (2sigma.east)   -- (2s right.west)
           (2s left.east)  -- (2sigma*.west) (2sigma*.east)  -- (2s right.west) ;
       }
@@ -1008,236 +1035,236 @@
 
 % --------------------------------------------------------------------------- %
 % 2psigma and 2ppi orbitals
-\dim_new:N \l__MOdiagram_molecule_two_psigma_dim
-\dim_new:N \l__MOdiagram_molecule_two_psigmas_dim
-\dim_new:N \l__MOdiagram_molecule_two_ppi_dim
-\dim_new:N \l__MOdiagram_molecule_two_ppis_dim
+\dim_new:N \l__modiagram_molecule_two_psigma_dim
+\dim_new:N \l__modiagram_molecule_two_psigmas_dim
+\dim_new:N \l__modiagram_molecule_two_ppi_dim
+\dim_new:N \l__modiagram_molecule_two_ppis_dim
 
-\tl_new:N \l__MOdiagram_MO_two_sigma_p_electron_tl
-\tl_new:N \l__MOdiagram_MO_two_sigmas_p_electron_tl
-\tl_new:N \l__MOdiagram_MO_two_piy_p_electron_tl
-\tl_new:N \l__MOdiagram_MO_two_piys_p_electron_tl
-\tl_new:N \l__MOdiagram_MO_two_piz_p_electron_tl
-\tl_new:N \l__MOdiagram_MO_two_pizs_p_electron_tl
+\tl_new:N \l__modiagram_MO_two_sigma_p_electron_tl
+\tl_new:N \l__modiagram_MO_two_sigmas_p_electron_tl
+\tl_new:N \l__modiagram_MO_two_piy_p_electron_tl
+\tl_new:N \l__modiagram_MO_two_piys_p_electron_tl
+\tl_new:N \l__modiagram_MO_two_piz_p_electron_tl
+\tl_new:N \l__modiagram_MO_two_pizs_p_electron_tl
 
-\bool_new:N \l__MOdiagram_molecule_two_mo_p_bool
+\bool_new:N \l__modiagram_molecule_two_mo_p_bool
 
 % read 2pMO argument
-\cs_set_nopar:Npn \__MOdiagram_two_mo_p_set:n #1
+\cs_set_nopar:Npn \__modiagram_two_mo_p_set:n #1
   {
-    \bool_set_true:N \l__MOdiagram_molecule_two_mo_p_bool
-    \tl_if_in:onTF { #1 } { ; }
-      { \__MOdiagram_two_mo_p_set_aux:n #1 \q_stop }
-      { \__MOdiagram_two_mo_p_set_energy:n { #1 } }
+    \bool_set_true:N \l__modiagram_molecule_two_mo_p_bool
+    \tl_if_in:onTF {#1} {;}
+      { \__modiagram_two_mo_p_set_aux:n #1 \q_stop }
+      { \__modiagram_two_mo_p_set_energy:n {#1} }
   }
 
-\cs_set_nopar:Npn \__MOdiagram_two_mo_p_set_aux:n #1;#2 \q_stop
+\cs_set_nopar:Npn \__modiagram_two_mo_p_set_aux:n #1;#2 \q_stop
   {
-    \__MOdiagram_two_mo_p_set_energy:n { #1 }
-    \__MOdiagram_two_mo_p_set_electrons:n { #2 }
+    \__modiagram_two_mo_p_set_energy:n {#1}
+    \__modiagram_two_mo_p_set_electrons:n {#2}
   }
 
-\cs_new_protected:Npn \__MOdiagram_two_mo_p_set_energy:n #1
+\cs_new_protected:Npn \__modiagram_two_mo_p_set_energy:n #1
   {
-    \tl_if_in:onTF { #1 } { , }
-      { \__MOdiagram_two_mo_p_set_energy_aux:n #1 \q_stop }
+    \tl_if_in:onTF {#1} {,}
+      { \__modiagram_two_mo_p_set_energy_aux:n #1 \q_stop }
       {
-        \tl_if_in:onTF { #1 } { / }
+        \tl_if_in:onTF {#1} {/}
           {
-            \__MOdiagram_two_mo_p_set_energy_sigma_aux:n #1 \q_stop
-            \__MOdiagram_two_mo_p_set_energy_pi:n { .5 }
+            \__modiagram_two_mo_p_set_energy_sigma_aux:n #1 \q_stop
+            \__modiagram_two_mo_p_set_energy_pi:n {.5}
           }
           {
-            \__MOdiagram_two_mo_p_set_energy_sigma:n { #1 }
-            \__MOdiagram_two_mo_p_set_energy_pi:n { .5 } 
+            \__modiagram_two_mo_p_set_energy_sigma:n {#1}
+            \__modiagram_two_mo_p_set_energy_pi:n {.5}
           }
       }
   }
 
-\cs_new_protected:Npn \__MOdiagram_two_mo_p_set_energy_aux:n #1,#2 \q_stop
+\cs_new_protected:Npn \__modiagram_two_mo_p_set_energy_aux:n #1,#2 \q_stop
   {
-    \tl_if_in:onTF { #1 } { / }
-      { \__MOdiagram_two_mo_p_set_energy_sigma_aux:n #1 \q_stop }
-      { \__MOdiagram_two_mo_p_set_energy_sigma:n { #1 } }
-    \tl_if_in:onTF { #2 } { / }
-      { \__MOdiagram_two_mo_p_set_energy_pi_aux:n #2 \q_stop }
-      { \__MOdiagram_two_mo_p_set_energy_pi:n { #2 } }
+    \tl_if_in:onTF {#1} {/}
+      { \__modiagram_two_mo_p_set_energy_sigma_aux:n #1 \q_stop }
+      { \__modiagram_two_mo_p_set_energy_sigma:n {#1} }
+    \tl_if_in:onTF {#2} {/}
+      { \__modiagram_two_mo_p_set_energy_pi_aux:n #2 \q_stop }
+      { \__modiagram_two_mo_p_set_energy_pi:n {#2} }
   }
 
-\cs_new_protected:Npn \__MOdiagram_two_mo_p_set_energy_sigma:n #1
+\cs_new_protected:Npn \__modiagram_two_mo_p_set_energy_sigma:n #1
   {
-    \tl_if_blank:nTF { #1 }
+    \tl_if_blank:nTF {#1}
       {
-        \dim_set:Nn \l__MOdiagram_molecule_two_psigma_dim { 1.5 cm }
-        \dim_set:Nn \l__MOdiagram_molecule_two_psigmas_dim { 1.5 cm }
+        \dim_set:Nn \l__modiagram_molecule_two_psigma_dim {1.5cm}
+        \dim_set:Nn \l__modiagram_molecule_two_psigmas_dim {1.5cm}
       }
       {
-        \dim_set:Nn \l__MOdiagram_molecule_two_psigma_dim { #1 cm }
-        \dim_set:Nn \l__MOdiagram_molecule_two_psigmas_dim { #1 cm }
+        \dim_set:Nn \l__modiagram_molecule_two_psigma_dim {#1cm}
+        \dim_set:Nn \l__modiagram_molecule_two_psigmas_dim {#1cm}
       }
   }
 
-\cs_new_protected:Npn \__MOdiagram_two_mo_p_set_energy_sigma_aux:n #1/#2 \q_stop
+\cs_new_protected:Npn \__modiagram_two_mo_p_set_energy_sigma_aux:n #1/#2 \q_stop
   {
-    \tl_if_blank:nTF { #1 }
-      { \dim_set:Nn \l__MOdiagram_molecule_two_psigma_dim { 1.5 cm } }
-      { \dim_set:Nn \l__MOdiagram_molecule_two_psigma_dim { #1 cm } }
-    \tl_if_blank:nTF { #2 }
-      { \dim_set:Nn \l__MOdiagram_molecule_two_psigmas_dim { 1.5 cm } }
-      { \dim_set:Nn \l__MOdiagram_molecule_two_psigmas_dim { #2 cm } }
+    \tl_if_blank:nTF {#1}
+      { \dim_set:Nn \l__modiagram_molecule_two_psigma_dim {1.5cm} }
+      { \dim_set:Nn \l__modiagram_molecule_two_psigma_dim {#1cm} }
+    \tl_if_blank:nTF {#2}
+      { \dim_set:Nn \l__modiagram_molecule_two_psigmas_dim {1.5cm} }
+      { \dim_set:Nn \l__modiagram_molecule_two_psigmas_dim {#2cm} }
   }
 
-\cs_new_protected:Npn \__MOdiagram_two_mo_p_set_energy_pi:n #1
+\cs_new_protected:Npn \__modiagram_two_mo_p_set_energy_pi:n #1
   {
-    \tl_if_blank:nTF { #1 }
+    \tl_if_blank:nTF {#1}
       {
-        \dim_set:Nn \l__MOdiagram_molecule_two_ppi_dim { .5 cm }
-        \dim_set:Nn \l__MOdiagram_molecule_two_ppis_dim { .5 cm }
+        \dim_set:Nn \l__modiagram_molecule_two_ppi_dim {.5cm}
+        \dim_set:Nn \l__modiagram_molecule_two_ppis_dim {.5cm}
       }
       {
-        \dim_set:Nn \l__MOdiagram_molecule_two_ppi_dim { #1 cm }
-        \dim_set:Nn \l__MOdiagram_molecule_two_ppis_dim { #1 cm }
+        \dim_set:Nn \l__modiagram_molecule_two_ppi_dim {#1cm}
+        \dim_set:Nn \l__modiagram_molecule_two_ppis_dim {#1cm}
       }
   }
 
-\cs_new_protected:Npn \__MOdiagram_two_mo_p_set_energy_pi_aux:n #1/#2 \q_stop
+\cs_new_protected:Npn \__modiagram_two_mo_p_set_energy_pi_aux:n #1/#2 \q_stop
   {
-    \tl_if_blank:nTF { #1 }
-      { \dim_set:Nn \l__MOdiagram_molecule_two_ppi_dim { .5 cm } }
-      { \dim_set:Nn \l__MOdiagram_molecule_two_ppi_dim { #1 cm } }
-    \tl_if_blank:nTF { #2 }
-      { \dim_set:Nn \l__MOdiagram_molecule_two_ppis_dim { .5 cm } }
-      { \dim_set:Nn \l__MOdiagram_molecule_two_ppis_dim { #2 cm } }
+    \tl_if_blank:nTF {#1}
+      { \dim_set:Nn \l__modiagram_molecule_two_ppi_dim {.5cm} }
+      { \dim_set:Nn \l__modiagram_molecule_two_ppi_dim {#1cm} }
+    \tl_if_blank:nTF {#2}
+      { \dim_set:Nn \l__modiagram_molecule_two_ppis_dim {.5cm} }
+      { \dim_set:Nn \l__modiagram_molecule_two_ppis_dim {#2cm} }
   }
 
-\NewDocumentCommand \__MOdiagram_two_mo_p_set_electrons:n
-  { > { \SplitArgument { 5 } { , } } m }
-  { \__MOdiagram_two_mo_p_set_electrons_aux:n #1 }
+\NewDocumentCommand \__modiagram_two_mo_p_set_electrons:n
+  { > { \SplitArgument {5} {,} } m }
+  { \__modiagram_two_mo_p_set_electrons_aux:n #1 }
 
-\cs_new_protected:Npn \__MOdiagram_two_mo_p_set_electrons_aux:n #1#2#3#4#5#6
+\cs_new_protected:Npn \__modiagram_two_mo_p_set_electrons_aux:n #1#2#3#4#5#6
   {
-    \tl_set:Nn \l__MOdiagram_MO_two_sigma_p_electron_tl  { #1 }
-    \tl_set:Nn \l__MOdiagram_MO_two_sigmas_p_electron_tl { #6 }
-    \tl_set:Nn \l__MOdiagram_MO_two_piy_p_electron_tl    { #2 }
-    \tl_set:Nn \l__MOdiagram_MO_two_piys_p_electron_tl   { #4 }
-    \tl_set:Nn \l__MOdiagram_MO_two_piz_p_electron_tl    { #3 }
-    \tl_set:Nn \l__MOdiagram_MO_two_pizs_p_electron_tl   { #5 }
+    \tl_set:Nn \l__modiagram_MO_two_sigma_p_electron_tl {#1}
+    \tl_set:Nn \l__modiagram_MO_two_sigmas_p_electron_tl {#6}
+    \tl_set:Nn \l__modiagram_MO_two_piy_p_electron_tl {#2}
+    \tl_set:Nn \l__modiagram_MO_two_piys_p_electron_tl {#4}
+    \tl_set:Nn \l__modiagram_MO_two_piz_p_electron_tl {#3}
+    \tl_set:Nn \l__modiagram_MO_two_pizs_p_electron_tl {#5}
   }
 
 % display 2sigma+pi/sigma*+pi* orbitals:
-\cs_new_protected:Npn \__MOdiagram_two_mo_p:
+\cs_new_protected:Npn \__modiagram_two_mo_p:
   {
-    \bool_if:NT \l__MOdiagram_molecule_two_mo_p_bool
+    \bool_if:NT \l__modiagram_molecule_two_mo_p_bool
       {
         \bool_if:nF
-          { \l__MOdiagram_two_p_left_bool && \l__MOdiagram_two_p_right_bool }
-          { \msg_error:nnxx { MOdiagram } { missing-AO } { 2pMO } { 2p } }
-        \__MOdiagram_split_energy:nNN { two_p }
-          \l__MOdiagram_molecule_two_psigma_dim
-          \l__MOdiagram_molecule_two_psigmas_dim
-        \__MOdiagram_energy_range:N \l__MOdiagram_energy_gain_dim
-        \__MOdiagram_energy_range:N \l__MOdiagram_energy_loss_dim
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+          { \l__modiagram_two_p_left_bool && \l__modiagram_two_p_right_bool }
+          { \msg_error:nnnn {modiagram} {missing-AO} {2pMO} {2p} }
+        \__modiagram_split_energy:nNN {two_p}
+          \l__modiagram_molecule_two_psigma_dim
+          \l__modiagram_molecule_two_psigmas_dim
+        \__modiagram_energy_range:N \l__modiagram_energy_gain_dim
+        \__modiagram_energy_range:N \l__modiagram_energy_loss_dim
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
           (2psigma)
           at
           (
-            \l__MOdiagram_molecule_position_dim ,
-            \l__MOdiagram_energy_gain_dim
+            \l__modiagram_molecule_position_dim ,
+            \l__modiagram_energy_gain_dim
           )
           {
-            \__MOdiagram_get_electron_color:n { 2psigma }
-            \__MOdiagram_get_electron_up:n { 2psigma }
-            \__MOdiagram_get_electron_down:n { 2psigma }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_MO_two_sigma_p_electron_tl }
-              { \tl_use:N \l__MOdiagram_electron_current_color_tl }
+            \__modiagram_get_electron_color:n {2psigma}
+            \__modiagram_get_electron_up:n {2psigma}
+            \__modiagram_get_electron_down:n {2psigma}
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_MO_two_sigma_p_electron_tl }
+              { \tl_use:N \l__modiagram_electron_current_color_tl }
           } ;
-        \__MOdiagram_get_orbital_label:n { 2psigma }
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+        \__modiagram_get_orbital_label:n {2psigma}
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
           (2psigma*)
           at
           (
-            \l__MOdiagram_molecule_position_dim ,
-            \l__MOdiagram_energy_loss_dim
+            \l__modiagram_molecule_position_dim ,
+            \l__modiagram_energy_loss_dim
           )
           {
-            \__MOdiagram_get_electron_color:n { 2psigma* }
-            \__MOdiagram_get_electron_up:n { 2psigma* }
-            \__MOdiagram_get_electron_down:n { 2psigma* }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_MO_two_sigmas_p_electron_tl }
-              { \tl_use:N \l__MOdiagram_electron_current_color_tl }
+            \__modiagram_get_electron_color:n {2psigma*}
+            \__modiagram_get_electron_up:n {2psigma*}
+            \__modiagram_get_electron_down:n {2psigma*}
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_MO_two_sigmas_p_electron_tl }
+              { \tl_use:N \l__modiagram_electron_current_color_tl }
           } ;
-        \__MOdiagram_get_orbital_label:n { 2psigma* }
-        \__MOdiagram_split_energy:nNN { two_p }
-          \l__MOdiagram_molecule_two_ppi_dim
-          \l__MOdiagram_molecule_two_ppis_dim
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+        \__modiagram_get_orbital_label:n {2psigma*}
+        \__modiagram_split_energy:nNN {two_p}
+          \l__modiagram_molecule_two_ppi_dim
+          \l__modiagram_molecule_two_ppis_dim
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
           (2piy)
           at
           (
-            \l__MOdiagram_molecule_position_dim - \l__MOdiagram_AO_width_dim ,
-            \l__MOdiagram_energy_gain_dim
+            \l__modiagram_molecule_position_dim - \l__modiagram_AO_width_dim ,
+            \l__modiagram_energy_gain_dim
           )
           {
-            \__MOdiagram_get_electron_color:n { 2piy }
-            \__MOdiagram_get_electron_up:n { 2piy }
-            \__MOdiagram_get_electron_down:n { 2piy }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_MO_two_piy_p_electron_tl }
-              { \tl_use:N \l__MOdiagram_electron_current_color_tl }
+            \__modiagram_get_electron_color:n {2piy}
+            \__modiagram_get_electron_up:n {2piy}
+            \__modiagram_get_electron_down:n {2piy}
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_MO_two_piy_p_electron_tl }
+              { \tl_use:N \l__modiagram_electron_current_color_tl }
           } ;
-        \__MOdiagram_get_orbital_label:n { 2piy }
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+        \__modiagram_get_orbital_label:n {2piy}
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
           (2piy*)
           at
           (
-            \l__MOdiagram_molecule_position_dim - \l__MOdiagram_AO_width_dim ,
-            \l__MOdiagram_energy_loss_dim
+            \l__modiagram_molecule_position_dim - \l__modiagram_AO_width_dim ,
+            \l__modiagram_energy_loss_dim
           )
           {
-            \__MOdiagram_get_electron_color:n { 2piy* }
-            \__MOdiagram_get_electron_up:n { 2piy* }
-            \__MOdiagram_get_electron_down:n { 2piy* }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_MO_two_piys_p_electron_tl }
-              { \tl_use:N \l__MOdiagram_electron_current_color_tl }
+            \__modiagram_get_electron_color:n {2piy*}
+            \__modiagram_get_electron_up:n {2piy*}
+            \__modiagram_get_electron_down:n {2piy*}
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_MO_two_piys_p_electron_tl }
+              { \tl_use:N \l__modiagram_electron_current_color_tl }
           } ;
-        \__MOdiagram_get_orbital_label:n { 2piy* }
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+        \__modiagram_get_orbital_label:n {2piy*}
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
           (2piz)
           at
           (
-            \l__MOdiagram_molecule_position_dim + \l__MOdiagram_AO_width_dim ,
-            \l__MOdiagram_energy_gain_dim
+            \l__modiagram_molecule_position_dim + \l__modiagram_AO_width_dim ,
+            \l__modiagram_energy_gain_dim
           )
           {
-            \__MOdiagram_get_electron_color:n { 2piz }
-            \__MOdiagram_get_electron_up:n { 2piz }
-            \__MOdiagram_get_electron_down:n { 2piz }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_MO_two_piz_p_electron_tl }
-              { \tl_use:N \l__MOdiagram_electron_current_color_tl }
+            \__modiagram_get_electron_color:n {2piz}
+            \__modiagram_get_electron_up:n {2piz}
+            \__modiagram_get_electron_down:n {2piz}
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_MO_two_piz_p_electron_tl }
+              { \tl_use:N \l__modiagram_electron_current_color_tl }
           } ;
-        \__MOdiagram_get_orbital_label:n { 2piz }
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+        \__modiagram_get_orbital_label:n {2piz}
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
           (2piz*)
           at
           (
-            \l__MOdiagram_molecule_position_dim + \l__MOdiagram_AO_width_dim ,
-            \l__MOdiagram_energy_loss_dim
+            \l__modiagram_molecule_position_dim + \l__modiagram_AO_width_dim ,
+            \l__modiagram_energy_loss_dim
           )
           {
-            \__MOdiagram_get_electron_color:n { 2piz* }
-            \__MOdiagram_get_electron_up:n { 2piz* }
-            \__MOdiagram_get_electron_down:n { 2piz* }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_MO_two_pizs_p_electron_tl }
-              { \tl_use:N \l__MOdiagram_electron_current_color_tl }
+            \__modiagram_get_electron_color:n {2piz*}
+            \__modiagram_get_electron_up:n {2piz*}
+            \__modiagram_get_electron_down:n {2piz*}
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_MO_two_pizs_p_electron_tl }
+              { \tl_use:N \l__modiagram_electron_current_color_tl }
           } ;
-        \__MOdiagram_get_orbital_label:n { 2piz* }
-        \__MOdiagram_draw:f
-          { \l__MOdiagram_lines_tl }
+        \__modiagram_get_orbital_label:n {2piz*}
+        \__modiagram_draw:f
+          { \l__modiagram_lines_tl }
           (2pz left.east)  -- (2psigma.west)  (2psigma.east)   -- (2px right.west)
           (2pz left.east)  -- (2psigma*.west) (2psigma*.east)  -- (2px right.west)
           (2pz left.east)  -- (2piy.west)     (2piz.east)      -- (2px right.west)
@@ -1247,77 +1274,94 @@
 
 % --------------------------------------------------------------------------- %
 % draw actual AO / MO
-\tl_new:N \l__MOdiagram_electron_color_tl
+\tl_new:N \l__modiagram_electron_color_tl
 
-\cs_new_protected:Npn \__MOdiagram_AO:nn #1#2
+\cs_new_protected:Npn \__modiagram_AO:nn #1#2
   {
     \group_begin:
-      \tl_set:Nn \l__MOdiagram_electron_color_tl { #2 }
+      \tl_set:Nn \l__modiagram_electron_color_tl {#2}
       \tikzpicture
-        \bool_if:NT \l__MOdiagram_AO_fancy_bool
+        \bool_if:NT \l__modiagram_AO_fancy_bool
           {
-            \draw (0,0) -- ++(-.5*\l__MOdiagram_AO_width_dim,0) ;
-            \draw (2pt+\l__MOdiagram_AO_width_dim,0)
-                  -- ++(.5*\l__MOdiagram_AO_width_dim,0) ;
+            \draw (0,0) -- ++(-.5*\l__modiagram_AO_width_dim,0) ;
+            \draw (2pt+\l__modiagram_AO_width_dim,0)
+                  -- ++(.5*\l__modiagram_AO_width_dim,0) ;
           }
-        \bool_if:NT \l__MOdiagram_AO_circle_bool
+        \bool_if:NT \l__modiagram_AO_circle_bool
           {
-            \draw (-.4142pt,0) ++(-.2071*\l__MOdiagram_AO_width_dim,0)
-                  -- ++(-.25*\l__MOdiagram_AO_width_dim,0) ;
-            \draw (2.4142pt,0) ++(1.2071*\l__MOdiagram_AO_width_dim,0)
-                  -- ++(.25*\l__MOdiagram_AO_width_dim,0) ;
+            \draw (-.4142pt,0) ++(-.2071*\l__modiagram_AO_width_dim,0)
+                  -- ++(-.25*\l__modiagram_AO_width_dim,0) ;
+            \draw (2.4142pt,0) ++(1.2071*\l__modiagram_AO_width_dim,0)
+                  -- ++(.25*\l__modiagram_AO_width_dim,0) ;
           }
-        \__MOdiagram_node:x
+        \__modiagram_node:x
           {
             inner~sep = 0 ,
-            \bool_if:NT \l__MOdiagram_AO_square_bool { draw } ,
-            \bool_if:NT \l__MOdiagram_AO_circle_bool { circle , draw } ,
+            \bool_if:NT \l__modiagram_AO_square_bool {draw} ,
+            \bool_if:NT \l__modiagram_AO_circle_bool {circle,draw} ,
             minimum~size =
-              \bool_if:NTF \l__MOdiagram_AO_square_bool
-                { 2pt+\l__MOdiagram_AO_width_dim }
+              \bool_if:NTF \l__modiagram_AO_square_bool
+                { 2pt+\l__modiagram_AO_width_dim }
                 {
-                  \bool_if:NTF \l__MOdiagram_AO_circle_bool
-                    { 1.4142*(2pt+\l__MOdiagram_AO_width_dim) }
-                    { \l__MOdiagram_AO_width_dim }
+                  \bool_if:NTF \l__modiagram_AO_circle_bool
+                    { 1.4142*(2pt+\l__modiagram_AO_width_dim) }
+                    { \l__modiagram_AO_width_dim }
                 } ,
-            \bool_if:NT \l__MOdiagram_AO_round_bool
+            \bool_if:NT \l__modiagram_AO_round_bool
               { rounded~corners=2pt }
           }
-          at (.5*\l__MOdiagram_AO_width_dim+1pt,0)
+          at (.5*\l__modiagram_AO_width_dim+1pt,0)
           {
             \tikz
               {
-                \bool_if:nTF { \l__MOdiagram_AO_square_bool || \l__MOdiagram_AO_circle_bool }
-                  { \draw[draw=none] (0,0) -- ++(\l__MOdiagram_AO_width_dim,0) ; }
-                  { \draw (0,0) -- ++(\l__MOdiagram_AO_width_dim,0) ; }
-                \tl_set:Nn \l__MOdiagram_tmpa_tl { #1 }
-                \tl_remove_all:Nn \l__MOdiagram_tmpa_tl { ~ }
-                \str_case:VnF \l__MOdiagram_tmpa_tl
+                \bool_if:nTF
+                  { \l__modiagram_AO_square_bool || \l__modiagram_AO_circle_bool }
+                  { \draw[draw=none] (0,0) -- ++(\l__modiagram_AO_width_dim,0) ; }
+                  { \draw (0,0) -- ++(\l__modiagram_AO_width_dim,0) ; }
+                \tl_set:Nn \l__modiagram_tmpa_tl {#1}
+                \tl_remove_all:Nn \l__modiagram_tmpa_tl {~}
+                \str_case:VnF \l__modiagram_tmpa_tl
                   {
-                    { up }
+                    {up}
                       {
-                        \__MOdiagram_draw:f
-                          { -left~to,semithick , \l__MOdiagram_electron_color_tl , inner~sep=0,outer~sep=0 }
-                          (\l__MOdiagram_AO_up_electron_tl*\l__MOdiagram_AO_width_dim,-.4*\l__MOdiagram_AO_width_dim)
-                          -- ++(0,.8*\l__MOdiagram_AO_width_dim) ;
+                        \__modiagram_draw:f
+                          {
+                            -left~to,semithick ,
+                            \l__modiagram_electron_color_tl ,
+                            inner~sep=0,outer~sep=0
+                          }
+                          (
+                            \l__modiagram_AO_up_electron_tl*\l__modiagram_AO_width_dim,
+                            -.4*\l__modiagram_AO_width_dim
+                          )
+                          -- ++(0,.8*\l__modiagram_AO_width_dim) ;
                       }
-                    { down }
+                    {down}
                       {
-                        \__MOdiagram_draw:f
-                          { -left~to,semithick , \l__MOdiagram_electron_color_tl }
-                          (\l__MOdiagram_AO_down_electron_tl*\l__MOdiagram_AO_width_dim,.4*\l__MOdiagram_AO_width_dim)
-                          -- ++(0,-.8*\l__MOdiagram_AO_width_dim) ;
+                        \__modiagram_draw:f
+                          { -left~to,semithick , \l__modiagram_electron_color_tl }
+                          (
+                            \l__modiagram_AO_down_electron_tl*\l__modiagram_AO_width_dim,
+                            .4*\l__modiagram_AO_width_dim
+                          )
+                          -- ++(0,-.8*\l__modiagram_AO_width_dim) ;
                       }
-                    { pair }
+                    {pair}
                       {
-                        \__MOdiagram_draw:f
-                          { -left~to,semithick , \l__MOdiagram_electron_color_tl }
-                          (\l__MOdiagram_AO_up_electron_tl*\l__MOdiagram_AO_width_dim,-.4*\l__MOdiagram_AO_width_dim)
-                          -- ++(0,.8*\l__MOdiagram_AO_width_dim) ;
-                        \__MOdiagram_draw:f
-                          { -left~to,semithick , \l__MOdiagram_electron_color_tl }
-                          (\l__MOdiagram_AO_down_electron_tl*\l__MOdiagram_AO_width_dim,.4*\l__MOdiagram_AO_width_dim)
-                          -- ++(0,-.8*\l__MOdiagram_AO_width_dim) ;
+                        \__modiagram_draw:f
+                          { -left~to,semithick , \l__modiagram_electron_color_tl }
+                          (
+                            \l__modiagram_AO_up_electron_tl*\l__modiagram_AO_width_dim,
+                            -.4*\l__modiagram_AO_width_dim
+                          )
+                          -- ++(0,.8*\l__modiagram_AO_width_dim) ;
+                        \__modiagram_draw:f
+                          { -left~to,semithick , \l__modiagram_electron_color_tl }
+                          (
+                            \l__modiagram_AO_down_electron_tl*\l__modiagram_AO_width_dim,
+                            .4*\l__modiagram_AO_width_dim
+                          )
+                          -- ++(0,-.8*\l__modiagram_AO_width_dim) ;
                       }
                   }
                   {}
@@ -1326,373 +1370,377 @@
       \endtikzpicture
     \group_end:
   }
-\cs_generate_variant:Nn \__MOdiagram_AO:nn { ff }
+\cs_generate_variant:Nn \__modiagram_AO:nn {ff}
 
 % -------------------------------------------------------------------------- %
 % per default disable all AOs / MOs
-\cs_new_protected:Npn \__MOdiagram_atom_disable:
+\cs_new_protected:Npn \__modiagram_atom_disable:
   {
-    \bool_set_false:N \l__MOdiagram_atom_one_s_bool
-    \bool_set_false:N \l__MOdiagram_atom_two_s_bool
-    \bool_set_false:N \l__MOdiagram_atom_two_p_bool
-%     \bool_set_false:N \l__MOdiagram_atom_three_s_bool
-%     \bool_set_false:N \l__MOdiagram_atom_three_p_bool
+    \bool_set_false:N \l__modiagram_atom_one_s_bool
+    \bool_set_false:N \l__modiagram_atom_two_s_bool
+    \bool_set_false:N \l__modiagram_atom_two_p_bool
+%     \bool_set_false:N \l__modiagram_atom_three_s_bool
+%     \bool_set_false:N \l__modiagram_atom_three_p_bool
   }
 
-\cs_new_protected:Npn \__MOdiagram_molecule_disable:
-  { \bool_set_false:N \l__MOdiagram_molecule_one_mo_s_bool }
+\cs_new_protected:Npn \__modiagram_molecule_disable:
+  { \bool_set_false:N \l__modiagram_molecule_one_mo_s_bool }
 
 % --------------------------------------------------------------------------- %
 % arbitrary placement of AOs / MOs
-\dim_new:N \l__MOdiagram_AO_dim % y
-\dim_new:N \l__MOdiagram_AO_position_dim % x
+\dim_new:N \l__modiagram_AO_dim % y
+\dim_new:N \l__modiagram_AO_position_dim % x
 
-\dim_new:N \l__MOdiagram_AO_px_shift_dim
-\dim_new:N \l__MOdiagram_AO_py_shift_dim
-\dim_new:N \l__MOdiagram_AO_pz_shift_dim
+\dim_new:N \l__modiagram_AO_px_shift_dim
+\dim_new:N \l__modiagram_AO_py_shift_dim
+\dim_new:N \l__modiagram_AO_pz_shift_dim
 
-\tl_new:N \l__MOdiagram_AO_px_electron_tl
-\tl_new:N \l__MOdiagram_AO_py_electron_tl
-\tl_new:N \l__MOdiagram_AO_pz_electron_tl
+\tl_new:N \l__modiagram_AO_px_electron_tl
+\tl_new:N \l__modiagram_AO_py_electron_tl
+\tl_new:N \l__modiagram_AO_pz_electron_tl
 
-\tl_new:N \l__MOdiagram_AO_x_electron_color_tl
-\tl_new:N \l__MOdiagram_AO_y_electron_color_tl
-\tl_new:N \l__MOdiagram_AO_z_electron_color_tl
+\tl_new:N \l__modiagram_AO_x_electron_color_tl
+\tl_new:N \l__modiagram_AO_y_electron_color_tl
+\tl_new:N \l__modiagram_AO_z_electron_color_tl
 
-\bool_new:N \l__MOdiagram_AO_label_bool
-\bool_new:N \l__MOdiagram_AO_x_label_bool
-\bool_new:N \l__MOdiagram_AO_y_label_bool
-\bool_new:N \l__MOdiagram_AO_z_label_bool
+\bool_new:N \l__modiagram_AO_label_bool
+\bool_new:N \l__modiagram_AO_x_label_bool
+\bool_new:N \l__modiagram_AO_y_label_bool
+\bool_new:N \l__modiagram_AO_z_label_bool
 
-\tl_new:N \l__MOdiagram_AO_x_label_tl
-\tl_new:N \l__MOdiagram_AO_y_label_tl
-\tl_new:N \l__MOdiagram_AO_z_label_tl
+\tl_new:N \l__modiagram_AO_x_label_tl
+\tl_new:N \l__modiagram_AO_y_label_tl
+\tl_new:N \l__modiagram_AO_z_label_tl
 
-\bool_new:N \l__MOdiagram_AO_up_electron_bool
-\bool_new:N \l__MOdiagram_AO_x_up_electron_bool
-\bool_new:N \l__MOdiagram_AO_y_up_electron_bool
-\bool_new:N \l__MOdiagram_AO_z_up_electron_bool
-\tl_new:N \l__MOdiagram_AO_x_up_electron_tl
-\tl_new:N \l__MOdiagram_AO_y_up_electron_tl
-\tl_new:N \l__MOdiagram_AO_z_up_electron_tl
+\bool_new:N \l__modiagram_AO_up_electron_bool
+\bool_new:N \l__modiagram_AO_x_up_electron_bool
+\bool_new:N \l__modiagram_AO_y_up_electron_bool
+\bool_new:N \l__modiagram_AO_z_up_electron_bool
+\tl_new:N \l__modiagram_AO_x_up_electron_tl
+\tl_new:N \l__modiagram_AO_y_up_electron_tl
+\tl_new:N \l__modiagram_AO_z_up_electron_tl
 
-\bool_new:N \l__MOdiagram_AO_down_electron_bool
-\bool_new:N \l__MOdiagram_AO_x_down_electron_bool
-\bool_new:N \l__MOdiagram_AO_y_down_electron_bool
-\bool_new:N \l__MOdiagram_AO_z_down_electron_bool
-\tl_new:N \l__MOdiagram_AO_x_down_electron_tl
-\tl_new:N \l__MOdiagram_AO_y_down_electron_tl
-\tl_new:N \l__MOdiagram_AO_z_down_electron_tl
+\bool_new:N \l__modiagram_AO_down_electron_bool
+\bool_new:N \l__modiagram_AO_x_down_electron_bool
+\bool_new:N \l__modiagram_AO_y_down_electron_bool
+\bool_new:N \l__modiagram_AO_z_down_electron_bool
+\tl_new:N \l__modiagram_AO_x_down_electron_tl
+\tl_new:N \l__modiagram_AO_y_down_electron_tl
+\tl_new:N \l__modiagram_AO_z_down_electron_tl
 
-\tl_new:N \l__MOdiagram_AO_name_tl
+\tl_new:N \l__modiagram_AO_name_tl
 
-\bool_new:N \l__MOdiagram_AO_p_bool
-\bool_new:N \l__MOdiagram_AO_left_bool
+\bool_new:N \l__modiagram_AO_p_bool
+\bool_new:N \l__modiagram_AO_left_bool
 
-\int_new:N \g__MOdiagram_AO_name_int
+\int_new:N \g__modiagram_AO_name_int
 
 % read argument in s case:
-\cs_new_protected:Npn \__MOdiagram_AO_s_set:n #1
+\cs_new_protected:Npn \__modiagram_AO_s_set:n #1
   {
-    \tl_if_in:onTF { #1 } { ; }
-      { \__MOdiagram_AO_s_set_aux:n #1 \q_stop }
+    \tl_if_in:onTF {#1} {;}
+      { \__modiagram_AO_s_set_aux:n #1 \q_stop }
       {
-        \dim_set:Nn \l__MOdiagram_AO_dim { #1 cm }
-        \tl_set:Nn \l__MOdiagram_AO_px_electron_tl { pair }
+        \dim_set:Nn \l__modiagram_AO_dim {#1cm}
+        \tl_set:Nn \l__modiagram_AO_px_electron_tl {pair}
       }
   }
 
-\cs_new_protected:Npn \__MOdiagram_AO_s_set_aux:n #1;#2 \q_stop
+\cs_new_protected:Npn \__modiagram_AO_s_set_aux:n #1;#2 \q_stop
   {
-    \dim_set:Nn \l__MOdiagram_AO_dim { #1 cm }
-    \tl_set:Nn \l__MOdiagram_AO_px_electron_tl { #2 }
+    \dim_set:Nn \l__modiagram_AO_dim {#1cm}
+    \tl_set:Nn \l__modiagram_AO_px_electron_tl {#2}
   }
 
 % read argument in p case:
-\cs_new_protected:Npn \__MOdiagram_AO_p_set:n #1
+\cs_new_protected:Npn \__modiagram_AO_p_set:n #1
   {
-    \tl_if_in:onTF { #1 } { ; }
-      { \__MOdiagram_AO_p_set_aux:n #1 \q_stop }
+    \tl_if_in:onTF {#1} {;}
+      { \__modiagram_AO_p_set_aux:n #1 \q_stop }
       {
-        \dim_set:Nn \l__MOdiagram_AO_dim { #1 cm }
-        \tl_set:Nn \l__MOdiagram_AO_px_electron_tl { pair }
-        \tl_set:Nn \l__MOdiagram_AO_py_electron_tl { pair }
-        \tl_set:Nn \l__MOdiagram_AO_pz_electron_tl { pair }
+        \dim_set:Nn \l__modiagram_AO_dim {#1cm}
+        \tl_set:Nn \l__modiagram_AO_px_electron_tl {pair}
+        \tl_set:Nn \l__modiagram_AO_py_electron_tl {pair}
+        \tl_set:Nn \l__modiagram_AO_pz_electron_tl {pair}
       }
   }
 
-\cs_new_protected:Npn \__MOdiagram_AO_p_set_aux:n #1;#2 \q_stop
+\cs_new_protected:Npn \__modiagram_AO_p_set_aux:n #1;#2 \q_stop
   {
-    \dim_set:Nn \l__MOdiagram_AO_dim { #1 cm }
-    \__MOdiagram_AO_p_set_electrons:n { #2 }
+    \dim_set:Nn \l__modiagram_AO_dim {#1cm}
+    \__modiagram_AO_p_set_electrons:n {#2}
   }
-\NewDocumentCommand \__MOdiagram_AO_p_set_electrons:n
-  { > { \SplitArgument { 2 } { , } } m }
-  { \__MOdiagram_AO_p_set_electrons_aux:n #1 }
+\NewDocumentCommand \__modiagram_AO_p_set_electrons:n
+  { > { \SplitArgument {2} {,} } m }
+  { \__modiagram_AO_p_set_electrons_aux:n #1 }
 
-\cs_new_protected:Npn \__MOdiagram_AO_p_set_electrons_aux:n #1#2#3
+\cs_new_protected:Npn \__modiagram_AO_p_set_electrons_aux:n #1#2#3
   {
-    \tl_set:Nn \l__MOdiagram_AO_px_electron_tl { #1 }
-    \tl_set:Nn \l__MOdiagram_AO_py_electron_tl { #2 }
-    \tl_set:Nn \l__MOdiagram_AO_pz_electron_tl { #3 }
+    \tl_set:Nn \l__modiagram_AO_px_electron_tl {#1}
+    \tl_set:Nn \l__modiagram_AO_py_electron_tl {#2}
+    \tl_set:Nn \l__modiagram_AO_pz_electron_tl {#3}
   }
 
-\cs_new_protected:Npn \__MOdiagram_AO_get_orbital_x_label:n #1
+\cs_new_protected:Npn \__modiagram_AO_get_orbital_x_label:n #1
   {
-    \bool_if:nT { \l__MOdiagram_AO_x_label_bool || \l__MOdiagram_AO_label_bool }
+    \bool_if:nT
+      { \l__modiagram_AO_x_label_bool || \l__modiagram_AO_label_bool }
       {
-        \__MOdiagram_node:x
-          { below , \tl_use:N \l__MOdiagram_orbital_label_style_tl }
+        \__modiagram_node:x
+          { below , \tl_use:N \l__modiagram_orbital_label_style_tl }
           at ( #1 . south )
           {
-            \tl_use:N \l__MOdiagram_orbital_label_fontsize_tl
-            \tl_use:N \l__MOdiagram_AO_x_label_tl
+            \tl_use:N \l__modiagram_orbital_label_fontsize_tl
+            \tl_use:N \l__modiagram_AO_x_label_tl
           } ;
       }
   }
-\cs_generate_variant:Nn \__MOdiagram_AO_get_orbital_x_label:n { o }
+\cs_generate_variant:Nn \__modiagram_AO_get_orbital_x_label:n {o}
 
-\cs_new_protected:Npn \__MOdiagram_AO_get_orbital_y_label:n #1
+\cs_new_protected:Npn \__modiagram_AO_get_orbital_y_label:n #1
   {
-    \bool_if:nT { \l__MOdiagram_AO_y_label_bool || \l__MOdiagram_AO_label_bool }
+    \bool_if:nT
+      { \l__modiagram_AO_y_label_bool || \l__modiagram_AO_label_bool }
       {
-        \__MOdiagram_node:x
-          { below , \tl_use:N \l__MOdiagram_orbital_label_style_tl }
+        \__modiagram_node:x
+          { below , \tl_use:N \l__modiagram_orbital_label_style_tl }
           at ( #1 . south )
           {
-            \tl_use:N \l__MOdiagram_orbital_label_fontsize_tl
-            \tl_use:N \l__MOdiagram_AO_y_label_tl
+            \tl_use:N \l__modiagram_orbital_label_fontsize_tl
+            \tl_use:N \l__modiagram_AO_y_label_tl
           } ;
       }
   }
-\cs_generate_variant:Nn \__MOdiagram_AO_get_orbital_y_label:n { o }
+\cs_generate_variant:Nn \__modiagram_AO_get_orbital_y_label:n {o}
 
-\cs_new_protected:Npn \__MOdiagram_AO_get_orbital_z_label:n #1
+\cs_new_protected:Npn \__modiagram_AO_get_orbital_z_label:n #1
   {
-    \bool_if:nT { \l__MOdiagram_AO_z_label_bool || \l__MOdiagram_AO_label_bool }
+    \bool_if:nT
+      { \l__modiagram_AO_z_label_bool || \l__modiagram_AO_label_bool }
       {
-        \__MOdiagram_node:x
-          { below , \tl_use:N \l__MOdiagram_orbital_label_style_tl }
+        \__modiagram_node:x
+          { below , \tl_use:N \l__modiagram_orbital_label_style_tl }
           at ( #1 . south )
           {
-            \tl_use:N \l__MOdiagram_orbital_label_fontsize_tl
-            \tl_use:N \l__MOdiagram_AO_z_label_tl
+            \tl_use:N \l__modiagram_orbital_label_fontsize_tl
+            \tl_use:N \l__modiagram_AO_z_label_tl
           } ;
       }
   }
-\cs_generate_variant:Nn \__MOdiagram_AO_get_orbital_z_label:n { o }
+\cs_generate_variant:Nn \__modiagram_AO_get_orbital_z_label:n {o}
 
 % these are going to be our arguments
-\keys_define:nn { MOdiagram / AO }
+\keys_define:nn {modiagram/AO}
   {
     type     .choice: ,
-    type / s .code:n = { \bool_set_false:N \l__MOdiagram_AO_p_bool } ,
-    type / p .code:n = { \bool_set_true:N \l__MOdiagram_AO_p_bool }
+    type / s .code:n = { \bool_set_false:N \l__modiagram_AO_p_bool } ,
+    type / p .code:n = { \bool_set_true:N \l__modiagram_AO_p_bool }
   }
 
-\keys_define:nn { MOdiagram / AO / properties }
+\keys_define:nn {modiagram/AO/properties}
   {
     color          .code:n   =
       {
-        \tl_set:Nn \l__MOdiagram_AO_x_electron_color_tl { #1 }
-        \tl_set:Nn \l__MOdiagram_AO_y_electron_color_tl { #1 }
-        \tl_set:Nn \l__MOdiagram_AO_z_electron_color_tl { #1 }
+        \tl_set:Nn \l__modiagram_AO_x_electron_color_tl {#1}
+        \tl_set:Nn \l__modiagram_AO_y_electron_color_tl {#1}
+        \tl_set:Nn \l__modiagram_AO_z_electron_color_tl {#1}
       } ,
-    color[x]       .tl_set:N = \l__MOdiagram_AO_x_electron_color_tl ,
-    color[y]       .tl_set:N = \l__MOdiagram_AO_y_electron_color_tl ,
-    color[z]       .tl_set:N = \l__MOdiagram_AO_z_electron_color_tl ,
+    color[x]       .tl_set:N = \l__modiagram_AO_x_electron_color_tl ,
+    color[y]       .tl_set:N = \l__modiagram_AO_y_electron_color_tl ,
+    color[z]       .tl_set:N = \l__modiagram_AO_z_electron_color_tl ,
     label          .code:n   =
       {
-        \bool_set_true:N \l__MOdiagram_AO_label_bool
-        \tl_set:Nn \l__MOdiagram_AO_x_label_tl { #1 }
-        \tl_set:Nn \l__MOdiagram_AO_y_label_tl { #1 }
-        \tl_set:Nn \l__MOdiagram_AO_z_label_tl { #1 }
+        \bool_set_true:N \l__modiagram_AO_label_bool
+        \tl_set:Nn \l__modiagram_AO_x_label_tl {#1}
+        \tl_set:Nn \l__modiagram_AO_y_label_tl {#1}
+        \tl_set:Nn \l__modiagram_AO_z_label_tl {#1}
       } ,
     label[x]       .code:n   =
       {
-        \bool_set_true:N \l__MOdiagram_AO_x_label_bool
-        \tl_set:Nn \l__MOdiagram_AO_x_label_tl { #1 }
+        \bool_set_true:N \l__modiagram_AO_x_label_bool
+        \tl_set:Nn \l__modiagram_AO_x_label_tl {#1}
       } ,
     label[y]       .code:n   =
       {
-        \bool_set_true:N \l__MOdiagram_AO_y_label_bool
-        \tl_set:Nn \l__MOdiagram_AO_y_label_tl { #1 }
+        \bool_set_true:N \l__modiagram_AO_y_label_bool
+        \tl_set:Nn \l__modiagram_AO_y_label_tl {#1}
       } ,
     label[z]       .code:n   =
       {
-        \bool_set_true:N \l__MOdiagram_AO_z_label_bool
-        \tl_set:Nn \l__MOdiagram_AO_z_label_tl { #1 }
+        \bool_set_true:N \l__modiagram_AO_z_label_bool
+        \tl_set:Nn \l__modiagram_AO_z_label_tl {#1}
       } ,
     up-el-pos      .code:n   =
       {
-        \bool_set_true:N \l__MOdiagram_AO_up_electron_bool
-        \tl_set:Nn \l__MOdiagram_AO_x_up_electron_tl { #1 }
-        \tl_set:Nn \l__MOdiagram_AO_y_up_electron_tl { #1 }
-        \tl_set:Nn \l__MOdiagram_AO_z_up_electron_tl { #1 }
+        \bool_set_true:N \l__modiagram_AO_up_electron_bool
+        \tl_set:Nn \l__modiagram_AO_x_up_electron_tl {#1}
+        \tl_set:Nn \l__modiagram_AO_y_up_electron_tl {#1}
+        \tl_set:Nn \l__modiagram_AO_z_up_electron_tl {#1}
       } ,
     up-el-pos[x]   .code:n   =
       {
-        \bool_set_true:N \l__MOdiagram_AO_x_up_electron_bool
-        \tl_set:Nn \l__MOdiagram_AO_x_up_electron_tl { #1 }
+        \bool_set_true:N \l__modiagram_AO_x_up_electron_bool
+        \tl_set:Nn \l__modiagram_AO_x_up_electron_tl {#1}
       } ,
     up-el-pos[y]   .code:n   =
       {
-        \bool_set_true:N \l__MOdiagram_AO_y_up_electron_bool
-        \tl_set:Nn \l__MOdiagram_AO_y_up_electron_tl { #1 }
+        \bool_set_true:N \l__modiagram_AO_y_up_electron_bool
+        \tl_set:Nn \l__modiagram_AO_y_up_electron_tl {#1}
       } ,
     up-el-pos[z]   .code:n   =
       {
-        \bool_set_true:N \l__MOdiagram_AO_z_up_electron_bool
-        \tl_set:Nn \l__MOdiagram_AO_y_up_electron_tl { #1 }
+        \bool_set_true:N \l__modiagram_AO_z_up_electron_bool
+        \tl_set:Nn \l__modiagram_AO_y_up_electron_tl {#1}
       } ,
     down-el-pos    .code:n   =
       {
-        \bool_set_true:N \l__MOdiagram_AO_down_electron_bool
-        \tl_set:Nn \l__MOdiagram_AO_x_down_electron_tl { #1 }
-        \tl_set:Nn \l__MOdiagram_AO_y_down_electron_tl { #1 }
-        \tl_set:Nn \l__MOdiagram_AO_z_down_electron_tl { #1 }
+        \bool_set_true:N \l__modiagram_AO_down_electron_bool
+        \tl_set:Nn \l__modiagram_AO_x_down_electron_tl {#1}
+        \tl_set:Nn \l__modiagram_AO_y_down_electron_tl {#1}
+        \tl_set:Nn \l__modiagram_AO_z_down_electron_tl {#1}
       } ,
     down-el-pos[x] .code:n   =
       {
-        \bool_set_true:N \l__MOdiagram_AO_x_down_electron_bool
-        \tl_set:Nn \l__MOdiagram_AO_x_down_electron_tl { #1 }
+        \bool_set_true:N \l__modiagram_AO_x_down_electron_bool
+        \tl_set:Nn \l__modiagram_AO_x_down_electron_tl {#1}
       } ,
     down-el-pos[y] .code:n   =
       {
-        \bool_set_true:N \l__MOdiagram_AO_y_down_electron_bool
-        \tl_set:Nn \l__MOdiagram_AO_y_down_electron_tl { #1 }
+        \bool_set_true:N \l__modiagram_AO_y_down_electron_bool
+        \tl_set:Nn \l__modiagram_AO_y_down_electron_tl {#1}
       } ,
     down-el-pos[z] .code:n   =
       {
-        \bool_set_true:N \l__MOdiagram_AO_z_down_electron_bool
-        \tl_set:Nn \l__MOdiagram_AO_z_down_electron_tl { #1 }
+        \bool_set_true:N \l__modiagram_AO_z_down_electron_bool
+        \tl_set:Nn \l__modiagram_AO_z_down_electron_tl {#1}
       }
   }
 
 % AO[<name>](<x-coord>){<type>}[<keyval>]{<AO-spec>}
-\NewDocumentCommand \__MOdiagram_arbitrary_AO: { o D(){0cm} m o m }
+\NewDocumentCommand \__modiagram_arbitrary_AO: {oD(){0cm}mom}
   {
     \group_begin:
-    \IfNoValueTF { #1 }
+    \IfNoValueTF {#1}
       {
-        \int_gincr:N \g__MOdiagram_AO_name_int
-        \tl_set:Nn \l__MOdiagram_AO_name_tl
-          { AO \int_use:N \g__MOdiagram_AO_name_int }
+        \int_gincr:N \g__modiagram_AO_name_int
+        \tl_set:Nn \l__modiagram_AO_name_tl
+          { AO \int_use:N \g__modiagram_AO_name_int }
       }
-      { \tl_set:Nn \l__MOdiagram_AO_name_tl { #1 } }
-    \IfNoValueF { #4 }
-      { \keys_set:nn { MOdiagram / AO / properties } { #4 } }
-    \keys_set:nn { MOdiagram / AO } { type = #3 }
-    \bool_if:NTF \l__MOdiagram_AO_p_bool
-      { \__MOdiagram_AO_p_set:n { #5 } }
-      { \__MOdiagram_AO_s_set:n { #5 } }
-    \dim_set:Nn \l__MOdiagram_AO_position_dim { #2 }
-    \__MOdiagram_p_orbitals_shift:nnn { 0 } { 2 } { 4 }
-    \__MOdiagram_energy_range:N \l__MOdiagram_AO_dim
-    \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
+      { \tl_set:Nn \l__modiagram_AO_name_tl {#1} }
+    \IfNoValueF {#4}
+      { \keys_set:nn {modiagram/AO/properties} {#4} }
+    \keys_set:nn {modiagram/AO} { type = #3 }
+    \bool_if:NTF \l__modiagram_AO_p_bool
+      { \__modiagram_AO_p_set:n {#5} }
+      { \__modiagram_AO_s_set:n {#5} }
+    \dim_set:Nn \l__modiagram_AO_position_dim {#2}
+    \__modiagram_p_orbitals_shift:nnn {0} {2} {4}
+    \__modiagram_energy_range:N \l__modiagram_AO_dim
+    \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
       (
-        \tl_use:N \l__MOdiagram_AO_name_tl
-        \bool_if:NT \l__MOdiagram_AO_p_bool { x }
+        \tl_use:N \l__modiagram_AO_name_tl
+        \bool_if:NT \l__modiagram_AO_p_bool {x}
       )
       at
       (
-        \l__MOdiagram_AO_position_dim + \l__MOdiagram_atom_px_shift_dim ,
-        \l__MOdiagram_AO_dim
+        \l__modiagram_AO_position_dim + \l__modiagram_atom_px_shift_dim ,
+        \l__modiagram_AO_dim
       )
       {
         \bool_if:nT
           {
-            \l__MOdiagram_AO_up_electron_bool ||
-            \l__MOdiagram_AO_x_up_electron_bool
+            \l__modiagram_AO_up_electron_bool ||
+            \l__modiagram_AO_x_up_electron_bool
           }
           {
-            \__MOdiagram_AO_place_electron:nx { 0 }
-              { \tl_use:N \l__MOdiagram_AO_x_up_electron_tl }
+            \__modiagram_AO_place_electron:nx {0}
+              { \tl_use:N \l__modiagram_AO_x_up_electron_tl }
           }
         \bool_if:nT
           {
-            \l__MOdiagram_AO_down_electron_bool ||
-            \l__MOdiagram_AO_x_down_electron_bool
+            \l__modiagram_AO_down_electron_bool ||
+            \l__modiagram_AO_x_down_electron_bool
           }
           {
-            \__MOdiagram_AO_place_electron:nx { 1 }
-              { \tl_use:N \l__MOdiagram_AO_x_down_electron_tl }
+            \__modiagram_AO_place_electron:nx {1}
+              { \tl_use:N \l__modiagram_AO_x_down_electron_tl }
           }
-        \__MOdiagram_AO:ff
-          { \tl_use:N \l__MOdiagram_AO_px_electron_tl }
-          { \tl_use:N \l__MOdiagram_AO_x_electron_color_tl }
+        \__modiagram_AO:ff
+          { \tl_use:N \l__modiagram_AO_px_electron_tl }
+          { \tl_use:N \l__modiagram_AO_x_electron_color_tl }
       } ;
-    \__MOdiagram_AO_get_orbital_x_label:o
+    \__modiagram_AO_get_orbital_x_label:o
       {
-        \tl_use:N \l__MOdiagram_AO_name_tl
-        \bool_if:NT \l__MOdiagram_AO_p_bool { x }
+        \tl_use:N \l__modiagram_AO_name_tl
+        \bool_if:NT \l__modiagram_AO_p_bool { x }
       }
-    \bool_if:NT \l__MOdiagram_AO_p_bool
+    \bool_if:NT \l__modiagram_AO_p_bool
       {
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
-          ( \tl_use:N \l__MOdiagram_AO_name_tl y )
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
+          ( \tl_use:N \l__modiagram_AO_name_tl y )
           at
           (
-            \l__MOdiagram_AO_position_dim + \l__MOdiagram_atom_py_shift_dim ,
-            \l__MOdiagram_AO_dim
+            \l__modiagram_AO_position_dim + \l__modiagram_atom_py_shift_dim ,
+            \l__modiagram_AO_dim
           )
           {
             \bool_if:nT
               {
-                \l__MOdiagram_AO_up_electron_bool ||
-                \l__MOdiagram_AO_y_up_electron_bool
+                \l__modiagram_AO_up_electron_bool ||
+                \l__modiagram_AO_y_up_electron_bool
               }
               {
-                \__MOdiagram_AO_place_electron:nx { 0 }
-                  { \tl_use:N \l__MOdiagram_AO_y_up_electron_tl }
+                \__modiagram_AO_place_electron:nx {0}
+                  { \tl_use:N \l__modiagram_AO_y_up_electron_tl }
               }
             \bool_if:nT
               {
-                \l__MOdiagram_AO_down_electron_bool ||
-                \l__MOdiagram_AO_y_down_electron_bool
+                \l__modiagram_AO_down_electron_bool ||
+                \l__modiagram_AO_y_down_electron_bool
               }
               {
-                \__MOdiagram_AO_place_electron:nx { 1 }
-                  { \tl_use:N \l__MOdiagram_AO_y_down_electron_tl }
+                \__modiagram_AO_place_electron:nx {1}
+                  { \tl_use:N \l__modiagram_AO_y_down_electron_tl }
               }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_AO_py_electron_tl }
-              { \tl_use:N \l__MOdiagram_AO_y_electron_color_tl }
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_AO_py_electron_tl }
+              { \tl_use:N \l__modiagram_AO_y_electron_color_tl }
           } ;
         % `o' expansion doesn't seem to make sense here:
-        \__MOdiagram_AO_get_orbital_y_label:o { \tl_use:N \l__MOdiagram_AO_name_tl y }
-        \__MOdiagram_node:n { inner~sep=0 , outer~sep=0 }
-          ( \tl_use:N \l__MOdiagram_AO_name_tl z )
+        \__modiagram_AO_get_orbital_y_label:o
+          { \tl_use:N \l__modiagram_AO_name_tl y }
+        \__modiagram_node:n { inner~sep=0 , outer~sep=0 }
+          ( \tl_use:N \l__modiagram_AO_name_tl z )
           at
           (
-            \l__MOdiagram_AO_position_dim + \l__MOdiagram_atom_pz_shift_dim ,
-            \l__MOdiagram_AO_dim
+            \l__modiagram_AO_position_dim + \l__modiagram_atom_pz_shift_dim ,
+            \l__modiagram_AO_dim
           )
           {
             \bool_if:nT
               {
-                \l__MOdiagram_AO_up_electron_bool ||
-                \l__MOdiagram_AO_z_up_electron_bool
+                \l__modiagram_AO_up_electron_bool ||
+                \l__modiagram_AO_z_up_electron_bool
               }
               {
-                \__MOdiagram_AO_place_electron:nx { 0 }
-                  { \tl_use:N \l__MOdiagram_AO_z_up_electron_tl }
+                \__modiagram_AO_place_electron:nx {0}
+                  { \tl_use:N \l__modiagram_AO_z_up_electron_tl }
               }
             \bool_if:nT
               {
-                \l__MOdiagram_AO_down_electron_bool ||
-                \l__MOdiagram_AO_z_down_electron_bool
+                \l__modiagram_AO_down_electron_bool ||
+                \l__modiagram_AO_z_down_electron_bool
               }
               {
-                \__MOdiagram_AO_place_electron:nx { 1 }
-                  { \tl_use:N \l__MOdiagram_AO_z_down_electron_tl }
+                \__modiagram_AO_place_electron:nx {1}
+                  { \tl_use:N \l__modiagram_AO_z_down_electron_tl }
               }
-            \__MOdiagram_AO:ff
-              { \tl_use:N \l__MOdiagram_AO_pz_electron_tl }
-              { \tl_use:N \l__MOdiagram_AO_z_electron_color_tl }
+            \__modiagram_AO:ff
+              { \tl_use:N \l__modiagram_AO_pz_electron_tl }
+              { \tl_use:N \l__modiagram_AO_z_electron_color_tl }
           } ;
-        \__MOdiagram_AO_get_orbital_z_label:o
-          { \tl_use:N \l__MOdiagram_AO_name_tl z }
+        \__modiagram_AO_get_orbital_z_label:o
+          { \tl_use:N \l__modiagram_AO_name_tl z }
       }
     \group_end:
   }
@@ -1699,133 +1747,133 @@
 
 % --------------------------------------------------------------------------- %
 % connect arbitrary AOs / MOs
-\NewDocumentCommand \connect { m }
+\NewDocumentCommand \connect {m}
   {
-    \clist_map_variable:nNn { #1 } \l__MOdiagram_tmpa_tl
+    \clist_map_variable:nNn {#1} \l__modiagram_tmpa_tl
       {
-        \tl_remove_all:Nn \l__MOdiagram_tmpa_tl { ~ }
-        \tl_if_blank:VF \l__MOdiagram_tmpa_tl
+        \tl_remove_all:Nn \l__modiagram_tmpa_tl {~}
+        \tl_if_blank:VF \l__modiagram_tmpa_tl
           {
-            \__MOdiagram_detect_nodes:x { \l__MOdiagram_tmpa_tl }
-             \tl_if_in:NnF \l__MOdiagram_node_A_tl { . }
-               { \tl_put_right:Nn \l__MOdiagram_node_A_tl { . east } }
-             \tl_if_in:NnF \l__MOdiagram_node_B_tl { . }
-               { \tl_put_right:Nn \l__MOdiagram_node_B_tl { . west } }
-            \__MOdiagram_draw_connection:xxx
-              { \tl_use:N \l__MOdiagram_lines_tl }
-              { \tl_use:N \l__MOdiagram_node_A_tl }
-              { \tl_use:N \l__MOdiagram_node_B_tl }
+            \__modiagram_detect_nodes:x { \l__modiagram_tmpa_tl }
+             \tl_if_in:NnF \l__modiagram_node_A_tl {.}
+               { \tl_put_right:Nn \l__modiagram_node_A_tl {.east} }
+             \tl_if_in:NnF \l__modiagram_node_B_tl {.}
+               { \tl_put_right:Nn \l__modiagram_node_B_tl {.west} }
+            \__modiagram_draw_connection:xxx
+              { \tl_use:N \l__modiagram_lines_tl }
+              { \tl_use:N \l__modiagram_node_A_tl }
+              { \tl_use:N \l__modiagram_node_B_tl }
           }
       }
   }
 
-\NewDocumentCommand \__MOdiagram_detect_nodes:n { > { \SplitArgument { 1 } { & } } m }
-  { \__MOdiagram_detect_nodes_aux_i:nn #1 }
-\cs_generate_variant:Nn \__MOdiagram_detect_nodes:n { x }
+\NewDocumentCommand \__modiagram_detect_nodes:n { > { \SplitArgument {1} {&} } m }
+  { \__modiagram_detect_nodes_aux_i:nn #1 }
+\cs_generate_variant:Nn \__modiagram_detect_nodes:n {x}
 
-\cs_new_protected:Npn \__MOdiagram_detect_nodes_aux_i:nn #1#2
+\cs_new_protected:Npn \__modiagram_detect_nodes_aux_i:nn #1#2
   {
-    \tl_set:Nn \l__MOdiagram_node_A_tl { #1 }
-    \tl_set:Nn \l__MOdiagram_node_B_tl { #2 }
+    \tl_set:Nn \l__modiagram_node_A_tl {#1}
+    \tl_set:Nn \l__modiagram_node_B_tl {#2}
   }
 
-\cs_new:Npn \__MOdiagram_draw_connection:nnn #1#2#3
+\cs_new:Npn \__modiagram_draw_connection:nnn #1#2#3
   { \draw[#1] (#2) -- (#3) ; }
-\cs_generate_variant:Nn \__MOdiagram_draw_connection:nnn { xxx }
+\cs_generate_variant:Nn \__modiagram_draw_connection:nnn {xxx}
 
 % --------------------------------------------------------------------------- %
 % orbital labels
-\prop_new:N \l__MOdiagram_orbital_label_prop
-\tl_set:Nn \l__MOdiagram_orbital_label_fontsize_tl { \small }
+\prop_new:N \l__modiagram_orbital_label_prop
+\tl_set:Nn \l__modiagram_orbital_label_fontsize_tl { \small }
 
-\cs_new:Npn \__MOdiagram_orbital_label_set:n #1
-  { \keys_set:nn { MOdiagram / label } { #1 } }
+\cs_new:Npn \__modiagram_orbital_label_set:n #1
+  { \keys_set:nn {modiagram/label} {#1} }
 
-\cs_new_protected:Npn \__MOdiagram_get_orbital_label:n #1
+\cs_new_protected:Npn \__modiagram_get_orbital_label:n #1
   {
-    \tl_clear:N \l__MOdiagram_tmpa_tl
-    \tl_clear:N \l__MOdiagram_tmpb_tl
-    \prop_get:NnNT \l__MOdiagram_orbital_label_prop { #1 } \l__MOdiagram_tmpa_tl
+    \tl_clear:N \l__modiagram_tmpa_tl
+    \tl_clear:N \l__modiagram_tmpb_tl
+    \prop_get:NnNT \l__modiagram_orbital_label_prop {#1} \l__modiagram_tmpa_tl
       {
-        \__MOdiagram_node:x
-          { below , \tl_use:N \l__MOdiagram_orbital_label_style_tl }
-          at ( #1 . south )
+        \__modiagram_node:x
+          { below , \tl_use:N \l__modiagram_orbital_label_style_tl }
+          at (#1.south)
           {
-            \tl_use:N \l__MOdiagram_orbital_label_fontsize_tl
-            \tl_use:N \l__MOdiagram_tmpa_tl
+            \tl_use:N \l__modiagram_orbital_label_fontsize_tl
+            \tl_use:N \l__modiagram_tmpa_tl
           } ;
       }
   }
 
-\keys_define:nn { MOdiagram / label }
+\keys_define:nn {modiagram/label}
   {
     1sleft   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 1sleft }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {1sleft} {#1} } ,
     1sright  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 1sright }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {1sright} {#1} } ,
     2sleft   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2sleft }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2sleft} {#1} } ,
     2sright  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2sright }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2sright} {#1} } ,
     2pxleft  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2pxleft }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2pxleft} {#1} } ,
     2pxright .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2pxright } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2pxright} {#1} } ,
     2pyleft  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2pyleft }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2pyleft} {#1} } ,
     2pyright .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2pyright } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2pyright} {#1} } ,
     2pzleft  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2pzleft }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2pzleft} {#1} } ,
     2pzright .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2pzright } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2pzright} {#1} } ,
     1sigma   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 1sigma }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {1sigma} {#1} } ,
     1sigma*  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 1sigma* }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {1sigma*} {#1} } ,
     2sigma   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2sigma }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2sigma} {#1} } ,
     2sigma*  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2sigma* }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2sigma*} {#1} } ,
     2psigma  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2psigma }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2psigma} {#1} } ,
     2psigma* .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2psigma* } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2psigma*} {#1} } ,
     2piy     .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2piy }     { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2piy} {#1} } ,
     2piy*    .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2piy* }    { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2piy*} {#1} } ,
     2piz     .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2piz }     { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2piz} {#1} } ,
     2piz*    .code:n =
-      { \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2piz* }    { #1 } }
+      { \prop_put:Nnn \l__modiagram_orbital_label_prop {2piz*} {#1} }
   }
 
 \char_set_catcode_math_subscript:N \@
-\cs_new_protected:Npn \__MOdiagram_set_labels:
+\cs_new_protected:Npn \__modiagram_set_labels:
   {
-    \bool_if:NT \l__MOdiagram_AO_labels_bool
+    \bool_if:NT \l__modiagram_AO_labels_bool
       {
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 1sleft }   { 1s }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 1sright }  { 1s }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2sleft }   { 2s }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2sright }  { 2s }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2pxleft }  { 2p$@x$ }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2pxright } { 2p$@x$ }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2pyleft }  { 2p$@y$ }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2pyright } { 2p$@y$ }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2pzleft }  { 2p$@z$ }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2pzright } { 2p$@z$ }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 1sigma }   { 1\chemsigma$@s$ }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 1sigma* }  { 1\chemsigma$^*@s$ }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2sigma }   { 2\chemsigma$@s$ }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2sigma* }  { 2\chemsigma$^*@s$ }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2psigma }  { 2\chemsigma$@x$ }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2psigma* } { 2\chemsigma$^*@x$ }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2piy }     { 2\chempi$@y$ }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2piy* }    { 2\chempi$^*@y$ }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2piz }     { 2\chempi$@z$ }
-        \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2piz* }    { 2\chempi$^*@z$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {1sleft} { 1s }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {1sright} { 1s }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2sleft} { 2s }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2sright} { 2s }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2pxleft} { 2p$@x$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2pxright} { 2p$@x$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2pyleft} { 2p$@y$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2pyright} { 2p$@y$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2pzleft} { 2p$@z$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2pzright} { 2p$@z$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {1sigma} { 1\chemsigma$@s$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {1sigma*} { 1\chemsigma$^*@s$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2sigma} { 2\chemsigma$@s$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2sigma*} { 2\chemsigma$^*@s$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2psigma} { 2\chemsigma$@x$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2psigma*} { 2\chemsigma$^*@x$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2piy} { 2\chempi$@y$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2piy*} { 2\chempi$^*@y$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2piz} { 2\chempi$@z$ }
+        \prop_put:Nnn \l__modiagram_orbital_label_prop {2piz*} { 2\chempi$^*@z$ }
       }
   }
 \char_set_catcode_letter:N \@
@@ -1832,241 +1880,241 @@
 
 % --------------------------------------------------------------------------- %
 % electron colours
-\prop_new:N \l__MOdiagram_electron_color_prop
-\tl_new:N \l__MOdiagram_electron_current_color_tl
+\prop_new:N \l__modiagram_electron_color_prop
+\tl_new:N \l__modiagram_electron_current_color_tl
 
-\cs_new:Npn \__MOdiagram_electron_color_set:n #1
-  { \keys_set:nn { MOdiagram / color } { #1 } }
+\cs_new:Npn \__modiagram_electron_color_set:n #1
+  { \keys_set:nn {modiagram/color} {#1} }
 
-\cs_new_protected:Npn \__MOdiagram_get_electron_color:n #1
+\cs_new_protected:Npn \__modiagram_get_electron_color:n #1
   {
-    \tl_clear:N \l__MOdiagram_tmpa_tl
-    \tl_clear:N \l__MOdiagram_tmpb_tl
-    \prop_get:NnNT \l__MOdiagram_electron_color_prop { #1 } \l__MOdiagram_tmpa_tl
-      { \tl_set_eq:NN \l__MOdiagram_electron_current_color_tl \l__MOdiagram_tmpa_tl }
+    \tl_clear:N \l__modiagram_tmpa_tl
+    \tl_clear:N \l__modiagram_tmpb_tl
+    \prop_get:NnNT \l__modiagram_electron_color_prop {#1} \l__modiagram_tmpa_tl
+      { \tl_set_eq:NN \l__modiagram_electron_current_color_tl \l__modiagram_tmpa_tl }
   }
 
-\keys_define:nn { MOdiagram / color }
+\keys_define:nn {modiagram/color}
   {
     1sleft   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 1sleft }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {1sleft} {#1} } ,
     1sright  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 1sright }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {1sright} {#1} } ,
     2sleft   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2sleft }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2sleft} {#1} } ,
     2sright  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2sright }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2sright} {#1} } ,
     2pxleft  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2pxleft }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2pxleft} {#1} } ,
     2pxright .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2pxright } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2pxright} {#1} } ,
     2pyleft  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2pyleft }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2pyleft} {#1} } ,
     2pyright .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2pyright } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2pyright} {#1} } ,
     2pzleft  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2pzleft }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2pzleft} {#1} } ,
     2pzright .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2pzright } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2pzright} {#1} } ,
     1sigma   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 1sigma }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {1sigma} {#1} } ,
     1sigma*  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 1sigma* }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {1sigma*} {#1} } ,
     2sigma   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2sigma }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2sigma} {#1} } ,
     2sigma*  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2sigma* }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2sigma*} {#1} } ,
     2psigma  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2psigma }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2psigma} {#1} } ,
     2psigma* .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2psigma* } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2psigma*} {#1} } ,
     2piy     .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2piy }     { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2piy} {#1} } ,
     2piy*    .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2piy* }    { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2piy*} {#1} } ,
     2piz     .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2piz }     { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2piz} {#1} } ,
     2piz*    .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_color_prop { 2piz* }    { #1 } }
+      { \prop_put:Nnn \l__modiagram_electron_color_prop {2piz*} {#1} }
   }
 
 % --------------------------------------------------------------------------- %
 % electron positions
-\prop_new:N \l__MOdiagram_electron_up_prop
+\prop_new:N \l__modiagram_electron_up_prop
 
-\cs_new:Npn \__MOdiagram_electron_up_set:n #1
-  { \keys_set:nn { MOdiagram / up-pos } { #1 } }
+\cs_new:Npn \__modiagram_electron_up_set:n #1
+  { \keys_set:nn {modiagram/up-pos} {#1} }
 
-\cs_new_protected:Npn \__MOdiagram_get_electron_up:n #1
+\cs_new_protected:Npn \__modiagram_get_electron_up:n #1
   {
-    \tl_clear:N \l__MOdiagram_tmpa_tl
-    \tl_clear:N \l__MOdiagram_tmpb_tl
-    \prop_get:NnNT \l__MOdiagram_electron_up_prop { #1 } \l__MOdiagram_tmpa_tl
-      { \tl_set_eq:NN \l__MOdiagram_AO_up_electron_tl \l__MOdiagram_tmpa_tl }
+    \tl_clear:N \l__modiagram_tmpa_tl
+    \tl_clear:N \l__modiagram_tmpb_tl
+    \prop_get:NnNT \l__modiagram_electron_up_prop {#1} \l__modiagram_tmpa_tl
+      { \tl_set_eq:NN \l__modiagram_AO_up_electron_tl \l__modiagram_tmpa_tl }
   }
 
-\keys_define:nn { MOdiagram / up-pos }
+\keys_define:nn {modiagram/up-pos}
   {
     1sleft   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 1sleft }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {1sleft} {#1} } ,
     1sright  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 1sright }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {1sright} {#1} } ,
     2sleft   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2sleft }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2sleft} {#1} } ,
     2sright  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2sright }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2sright} {#1} } ,
     2pxleft  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2pxleft }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2pxleft} {#1} } ,
     2pxright .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2pxright } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2pxright} {#1} } ,
     2pyleft  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2pyleft }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2pyleft} {#1} } ,
     2pyright .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2pyright } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2pyright} {#1} } ,
     2pzleft  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2pzleft }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2pzleft} {#1} } ,
     2pzright .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2pzright } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2pzright} {#1} } ,
     1sigma   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 1sigma }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {1sigma} {#1} } ,
     1sigma*  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 1sigma* }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {1sigma*} {#1} } ,
     2sigma   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2sigma }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2sigma} {#1} } ,
     2sigma*  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2sigma* }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2sigma*} {#1} } ,
     2psigma  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2psigma }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2psigma} {#1} } ,
     2psigma* .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2psigma* } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2psigma*} {#1} } ,
     2piy     .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2piy }     { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2piy} {#1} } ,
     2piy*    .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2piy* }    { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2piy*} {#1} } ,
     2piz     .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2piz }     { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2piz} {#1} } ,
     2piz*    .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_up_prop { 2piz* }    { #1 } }
+      { \prop_put:Nnn \l__modiagram_electron_up_prop {2piz*} {#1} }
   }
 
-\prop_new:N \l__MOdiagram_electron_down_prop
+\prop_new:N \l__modiagram_electron_down_prop
 
-\cs_new:Npn \__MOdiagram_electron_down_set:n #1
-  { \keys_set:nn { MOdiagram / down-pos } { #1 } }
+\cs_new:Npn \__modiagram_electron_down_set:n #1
+  { \keys_set:nn {modiagram/down-pos} {#1} }
 
-\cs_new_protected:Npn \__MOdiagram_get_electron_down:n #1
+\cs_new_protected:Npn \__modiagram_get_electron_down:n #1
   {
-    \tl_clear:N \l__MOdiagram_tmpa_tl
-    \tl_clear:N \l__MOdiagram_tmpb_tl
-    \prop_get:NnNT \l__MOdiagram_electron_down_prop { #1 } \l__MOdiagram_tmpa_tl
-      { \tl_set_eq:NN \l__MOdiagram_AO_down_electron_tl \l__MOdiagram_tmpa_tl }
+    \tl_clear:N \l__modiagram_tmpa_tl
+    \tl_clear:N \l__modiagram_tmpb_tl
+    \prop_get:NnNT \l__modiagram_electron_down_prop {#1} \l__modiagram_tmpa_tl
+      { \tl_set_eq:NN \l__modiagram_AO_down_electron_tl \l__modiagram_tmpa_tl }
   }
 
-\keys_define:nn { MOdiagram / down-pos }
+\keys_define:nn {modiagram/down-pos}
   {
     1sleft   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 1sleft }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {1sleft} {#1} } ,
     1sright  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 1sright }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {1sright} {#1} } ,
     2sleft   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2sleft }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2sleft} {#1} } ,
     2sright  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2sright }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2sright} {#1} } ,
     2pxleft  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2pxleft }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2pxleft} {#1} } ,
     2pxright .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2pxright } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2pxright} {#1} } ,
     2pyleft  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2pyleft }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2pyleft} {#1} } ,
     2pyright .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2pyright } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2pyright} {#1} } ,
     2pzleft  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2pzleft }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2pzleft} {#1} } ,
     2pzright .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2pzright } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2pzright} {#1} } ,
     1sigma   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 1sigma }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {1sigma} {#1} } ,
     1sigma*  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 1sigma* }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {1sigma*} {#1} } ,
     2sigma   .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2sigma }   { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2sigma} {#1} } ,
     2sigma*  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2sigma* }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2sigma*} {#1} } ,
     2psigma  .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2psigma }  { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2psigma} {#1} } ,
     2psigma* .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2psigma* } { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2psigma*} {#1} } ,
     2piy     .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2piy }     { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2piy} {#1} } ,
     2piy*    .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2piy* }    { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2piy*} {#1} } ,
     2piz     .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2piz }     { #1 } } ,
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2piz} {#1} } ,
     2piz*    .code:n =
-      { \prop_put:Nnn \l__MOdiagram_electron_down_prop { 2piz* }    { #1 } }
+      { \prop_put:Nnn \l__modiagram_electron_down_prop {2piz*} {#1} }
   }
 
 % --------------------------------------------------------------------------- %
 % energy axis
 \dim_new:N \l_energy_axis_dim
-\dim_set:Nn \l_energy_axis_dim { 0pt }
+\dim_set:Nn \l_energy_axis_dim {0pt}
 
-\tl_new:N \l__MOdiagram_Eaxis_head_tl
-\tl_set:Nn \l__MOdiagram_Eaxis_head_tl { latex }
-\tl_new:N \l__MOdiagram_Eaxis_title_tl
+\tl_new:N \l__modiagram_Eaxis_head_tl
+\tl_set:Nn \l__modiagram_Eaxis_head_tl {latex}
+\tl_new:N \l__modiagram_Eaxis_title_tl
 
-\bool_new:N \l__MOdiagram_Eaxis_title_bool
-\bool_set_false:N \l__MOdiagram_Eaxis_title_bool
+\bool_new:N \l__modiagram_Eaxis_title_bool
+\bool_set_false:N \l__modiagram_Eaxis_title_bool
 
-\NewDocumentCommand \__MOdiagram_EnergyAxis: { o }
+\NewDocumentCommand \__modiagram_EnergyAxis: {o}
   {
-    \IfNoValueF { #1 } { \keys_set:nn { MOdiagram / axis } { #1 } }
-    \__MOdiagram_draw:f { - \tl_use:N \l__MOdiagram_Eaxis_head_tl }
-      (\l_energy_axis_dim , \g__MOdiagram_min_energy_dim - 1cm )
+    \IfNoValueF {#1} { \keys_set:nn {modiagram/axis} {#1} }
+    \__modiagram_draw:f { - \tl_use:N \l__modiagram_Eaxis_head_tl }
+      (\l_energy_axis_dim , \g__modiagram_min_energy_dim - 1cm )
       --
-      (\l_energy_axis_dim , \g__MOdiagram_max_energy_dim + 1cm ) 
-      \bool_if:NT \l__MOdiagram_Eaxis_title_bool
-        { node [ above ] { \tl_use:N \l__MOdiagram_Eaxis_title_tl } }
+      (\l_energy_axis_dim , \g__modiagram_max_energy_dim + 1cm ) 
+      \bool_if:NT \l__modiagram_Eaxis_title_bool
+        { node [ above ] { \tl_use:N \l__modiagram_Eaxis_title_tl } }
     ;
   }
 
-\keys_define:nn { MOdiagram / axis }
+\keys_define:nn {modiagram/axis}
   {
     title .code:n =
       {
-        \bool_set_true:N \l__MOdiagram_Eaxis_title_bool
-        \tl_set:Nn \l__MOdiagram_Eaxis_title_tl { #1 }
+        \bool_set_true:N \l__modiagram_Eaxis_title_bool
+        \tl_set:Nn \l__modiagram_Eaxis_title_tl {#1}
       } ,
     title .default:n = energy ,
-    head  .tl_set:N  = \l__MOdiagram_Eaxis_head_tl ,
+    head  .tl_set:N  = \l__modiagram_Eaxis_head_tl ,
     head  .default:n = >
   }
 
 % --------------------------------------------------------------------------- %
 % tikz helper functions
-\cs_new:Npn \__MOdiagram_node:n #1
-  { \node [ #1 ] }
-\cs_generate_variant:Nn \__MOdiagram_node:n { f,x }
+\cs_new:Npn \__modiagram_node:n #1
+  { \node [#1] }
+\cs_generate_variant:Nn \__modiagram_node:n {f,x}
 
-\cs_new:Npn \__MOdiagram_draw:n #1
-  { \draw [ #1 ] }
-\cs_generate_variant:Nn \__MOdiagram_draw:n { f }
+\cs_new:Npn \__modiagram_draw:n #1
+  { \draw [#1] }
+\cs_generate_variant:Nn \__modiagram_draw:n {f}
 
-\cs_new:Npn \__MOdiagram_tikz:nn #1
-  { \tikz [ #1 ] }
-\cs_generate_variant:Nn \__MOdiagram_tikz:nn { fn,xn }
+\cs_new:Npn \__modiagram_tikz:nn #1
+  { \tikz [#1] }
+\cs_generate_variant:Nn \__modiagram_tikz:nn {f,x}
 
-\cs_new:Npn \__MOdiagram_tikzpicture:n #1
-  { \tikzpicture [ #1 ] }
-\cs_generate_variant:Nn \__MOdiagram_tikzpicture:n { f }
+\cs_new:Npn \__modiagram_tikzpicture:n #1
+  { \tikzpicture [#1] }
+\cs_generate_variant:Nn \__modiagram_tikzpicture:n {f}
 
-\tex_endinput:D
+\file_input_stop:
 
 % --------------------------------------------------------------------------- %
 Version history
 2011/09/25 version 0.1  - first upload to CTAN
 2011/10/27 version 0.2  - \atom, \molecule, \AO, \EnergyAxis only defined within
-                          the MOdiagram environment
+                          the modiagram environment
                         - bugfix in energy splitting process
                         - bugfix: wrong labelling of plain empty orbitals
                         - different values for energy gain and loss possible
@@ -2081,8 +2129,15 @@
 2014/06/28 version 0.2e - fix: adapt to deprecated expl3 command
 2015/07/19 version 0.2f - fix: adapt to deprecated expl3 command
 2015/09/23 version 0.2g - fix: adapt to deprecated expl3 command
+2019/10/31 version 0.3  - correct wrong expl3 code
+                        - rename `MOdiagram' into `modiagram'
+                        - rename \MOsetup into \setmodiagram
 
+
 TODO
+- reduce code duplication
+- reduce usage of f expansion
+- get rid of hard-coded defaults
 - 3s, 3p , 3sMO , 3pMO , 4s , sp3
 - energy axis: ticks? at orbital heights?
 - electron configuration



More information about the tex-live-commits mailing list