From 3a476bf2d03a9baae83cf89ed7e996132b886d7a Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 13 May 2014 22:08:58 +0000 Subject: modiagram (13may14) git-svn-id: svn://tug.org/texlive/trunk@34010 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/modiagram/README | 4 +- .../doc/latex/modiagram/modiagram_en.pdf | Bin 667035 -> 638650 bytes .../doc/latex/modiagram/modiagram_en.tex | 2145 ++++++++++---------- .../texmf-dist/tex/latex/modiagram/modiagram.sty | 87 +- 4 files changed, 1169 insertions(+), 1067 deletions(-) (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/modiagram/README b/Master/texmf-dist/doc/latex/modiagram/README index 76fa796cab2..e96eae3014c 100644 --- a/Master/texmf-dist/doc/latex/modiagram/README +++ b/Master/texmf-dist/doc/latex/modiagram/README @@ -1,5 +1,5 @@ -------------------------------------------------------------------------- -the MODIAGRAM package 2013/04/28 v0.2c +the MODIAGRAM package 2014/05/12 v0.2d easy creation of molecular orbital diagrams @@ -27,4 +27,4 @@ The Current Maintainer of this work is Clemens Niederberger. This work consists of the files modiagram.sty, modiagram_en.tex, README and the derived file modiagram_en.pdf. --------------------------------------------------------------------------- \ No newline at end of file +-------------------------------------------------------------------------- diff --git a/Master/texmf-dist/doc/latex/modiagram/modiagram_en.pdf b/Master/texmf-dist/doc/latex/modiagram/modiagram_en.pdf index 9557a20419e..8143f36f423 100644 Binary files a/Master/texmf-dist/doc/latex/modiagram/modiagram_en.pdf and b/Master/texmf-dist/doc/latex/modiagram/modiagram_en.pdf differ diff --git a/Master/texmf-dist/doc/latex/modiagram/modiagram_en.tex b/Master/texmf-dist/doc/latex/modiagram/modiagram_en.tex index 3c0a7753e4e..96d5363de6e 100644 --- a/Master/texmf-dist/doc/latex/modiagram/modiagram_en.tex +++ b/Master/texmf-dist/doc/latex/modiagram/modiagram_en.tex @@ -13,7 +13,7 @@ % If you have any ideas, questions, suggestions or bugs to report, please % feel free to contact me. % -------------------------------------------------------------------------- -% Copyright 2011--2012 Clemens Niederberger +% Copyright 2011--2013 Clemens Niederberger % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -30,56 +30,46 @@ % This work consists of the files modiagram.sty, modiagram_en.tex, % README and the derived file modiagram_en.pdf. % -------------------------------------------------------------------------- -% if you want to compile this documentation you'll need the document class -% `cnpkgdoc' which you can get here: -% https://bitbucket.org/cgnieder/cnpkgdoc/ -% the class is licensed LPPL 1.3 or later -% - -\PassOptionsToPackage{supstfm=libertinesups}{superiors} -\documentclass[toc=index]{cnpkgdoc} -\docsetup{ - pkg = modiagram, - subtitle = Easy Creation of Molecular Orbital Diagrams , - code-box = { - skipbelow = .5\baselineskip plus .5ex minus .5ex , - skipabove = .5\baselineskip plus .5ex minus .5ex , - roundcorner = 3pt , - innerleftmargin = 1.5em , - innerrightmargin = 1.5em +\documentclass[load-preamble+]{cnltx-doc} +\usepackage[utf8]{inputenc} +\usepackage{modiagram} + +\setcnltx{ + package = modiagram , + authors = Clemens Niederberger , + email = contact@mychemistry.eu , + url = https://bitbucket.org/cgnieder/modiagram/ , + add-cmds = { + AO, + atom, + connect, + EnergyAxis, + molecule, + MOsetup + } , + add-envs = { MOdiagram } , + add-silent-cmds = { + ch, + draw, + chlewis, + node, + textcolor, + chemsigma, + chemSigma + } , + abstract = {% + \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]{ + 2pMO = {1.8,.4;pair,pair,pair,up}, + color = { 2piy*=red } + } + \end{MOdiagram} } } -\addcmds{ - AO, - atom, - ch, - connect, - draw, - EnergyAxis, - lewis, - Lewis, - molecule, - MOsetup, - node, - textcolor, - textsigma, - textSigma -} - -\usepackage{libertinehologopatch} - -\cnpkgusecolorscheme{friendly} - -\renewcommand*\othersectionlevelsformat[3]{% - \textcolor{main}{#3\autodot}\enskip} -\renewcommand*\partformat{% - \textcolor{main}{\partname~\thepart\autodot}} - -\usepackage{embrac} -\ChangeEmph{[}[,.02em]{]}[.055em,-.08em] -\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em] -\usepackage{fnpct} +\defbibheading{bibliography}{\addsec{References}} \usepackage{booktabs} @@ -93,39 +83,12 @@ long = molecular orbital } -\usepackage{chemmacros,chemfig} -\chemsetup[chemformula]{font-family=fxl} +\expandafter\def\csname libertine@figurestyle\endcsname{LF} +\usepackage[libertine]{newtxmath} +\expandafter\def\csname libertine@figurestyle\endcsname{OsF} -\usepackage{filecontents} -\begin{filecontents}{\jobname.ist} - heading_prefix "{\\bfseries " - heading_suffix "\\hfil}\\nopagebreak\n" - headings_flag 1 - delim_0 "\\dotfill\\hyperpage{" - delim_1 "\\dotfill\\hyperpage{" - delim_2 "\\dotfill\\hyperpage{" - delim_r "}\\textendash\\hyperpage{" - delim_t "}" - suffix_2p "\\nohyperpage{\\,f.}" - suffix_3p "\\nohyperpage{\\,ff.}" -\end{filecontents} -\usepackage{imakeidx} -\indexsetup{othercode=\footnotesize} -\makeindex[options={-s \jobname.ist},intoc,columns=3] - -\TitlePicture{% -\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]{ - 2pMO = {1.8,.4;pair,pair,pair,up}, - color = { 2piy*=red } - } - \end{MOdiagram}} +\usepackage[greek=newtx]{chemmacros} +\chemsetup[chemformula]{font-family=fxl} \NewDocumentCommand \AOinline { o m } {% @@ -139,1065 +102,1177 @@ \endgroup } -\pdfstringdefDisableCommands{% - \def\key#1{#1}% -} - -\makeatletter -\def\TikZ@name{Ti\textit{\textbf{k}}Z} -\renewcommand\TikZ{\TikZ@name\index{TikZ@\TikZ@name}} -\makeatother +\newcommand*\TikZ{Ti\textit{k}Z} \begin{document} \section{Licence, Requirements} -Permission is granted to copy, distribute and/or modify this software under the -terms of the LaTeX Project Public License, version 1.3 or later -(\url{http://www.latex-project.org/lppl.txt}). This package has the status -``maintained.'' +\license -\modiagram needs and loads the packages \paket{expl3}, \paket{xparse}, -\paket{l3keys2e}, \paket{pgf} and \paket{textgreek}. Additionally the -\TikZ libraries \paket*{calc} and \paket*{arrows} are loaded. Knowledge of -\paket*{pgf} or \TikZ are helpful. +\modiagram\ uses \bnd{l3kernel}~\cite{bnd:l3kernel} and +\bnd{l3packages}~\cite{bnd:l3packages}. It also uses \TikZ~\cite{pkg:pgf} and +the package \pkg*{chemgreek} from the \bnd{chemmacros}~\cite{bnd:chemmacros} +bundle. Additionally the \TikZ\ libraries \code{calc} and \code{arrows} are +loaded. Knowledge of \TikZ\ is helpful. \section{Motivation} This package has been written as a reaction to a question on \url{http://tex.stackexchange.com/}. To be more precise: as a reaction to the -question ``\href{http://tex.stackexchange.com/questions/13863/molecular-orbital-diagrams-in-latex}% +question +``\href{http://tex.stackexchange.com/questions/13863/molecular-orbital-diagrams-in-latex}% {Molecular orbital diagrams in LaTeX}.'' There it says -\begin{zitat} - I'm wondering if anyone has seen a package for drawing (qualitative) molecular - orbital splitting diagrams in \LaTeX? Or if there exist any packages that can - be easily re-purposed to this task? +\begin{cnltxquote} + I'm wondering if anyone has seen a package for drawing (qualitative) + molecular orbital splitting diagrams in \LaTeX? Or if there exist any + packages that can be easily re-purposed to this task? - Otherwise, I think I'll have a go at it in \TikZ. -\end{zitat} + 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 \modiagram\ 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. \modiagram\ took care of that. + \section{Main Commands} All molecular orbital (MO) diagrams are created using the environment \env{MOdiagram}{}. -\subsection{The \cmd{atom} Command} -\begin{beschreibung} - \Befehl{atom}[]{left|right}\ma{} \\ - \oa{} caption of the atom;\\ - \ma{left|right} on the left or the right in the diagram;\\ - \ma{} specifications of the \acp{AO}. -\end{beschreibung} +\subsection{The \cs*{atom} Command} +\begin{commands} + \command{atom}[\oarg{name}\Marg{\meta{left}|\meta{right}}\marg{AO-spec}] + Place an \acs{AO} in the diagram. \meta{name} is caption of the atom, + \meta{left} and \meta{right} determine the placement in the diagram, + \meta{AO-spec} is the specification of the \ac{AO}. +\end{commands} + Let's take a look at an example: -\begin{beispiel} - \begin{MOdiagram} - \atom{right}{ - 1s = { 0; pair} , - 2s = { 1; pair} , - 2p = {1.5; up, down } - } - \end{MOdiagram} -\end{beispiel} +\begin{example}[side-by-side] + \begin{MOdiagram} + \atom{right}{ + 1s = { 0; pair} , + 2s = { 1; pair} , + 2p = {1.5; up, down } + } + \end{MOdiagram} +\end{example} -As you can see, the argument \ma{} is essential to create the actual +As you can see, the argument \meta{AO-spec} is essential to create the actual orbitals and the electrons within. You can use these key/value pairs to specify what you need: -\begin{beschreibung} - \Option{1s}{; } - \Option{2s}{; } - \Option{2p}{; , , } \\ - \code{} can have the values \code{pair}, \code{up} and \code{down} or - can be left empty. \code{} actually is the $y$ coordinate and shifts - the \ac{AO} vertically by \code{} \si{\centi\metre}. -\end{beschreibung} - -The argument \ma{left|right} is important, when p orbitals are used. For instance -compare the following example to the one before: -\begin{beispiel} - \begin{MOdiagram} - \atom{left}{ - 1s = { 0; pair} , - 2s = { 1; pair} , - 2p = {1.5; up, down } - } - \end{MOdiagram} -\end{beispiel} +\begin{options} + \keychoice{1s}{\{\meta{rel-energy}; \meta{el-spec}\}} + Energy level and electron specifications for the 1s orbital. + \keychoice{2s}{\{\meta{rel-energy}; \meta{el-spec}\}} + Energy level and electron specifications for the 2s orbital. + \keychoice{2p}{\{\meta{rel-energy}; \meta{x el-spec}{,} \meta{y el-spec}{,} + \meta{z el-spec}\}} + Energy level and electron specifications for the 2p orbitals. +\end{options} +\meta{el-spec} can have the values \code{pair}, \code{up} and \code{down} or +can be left empty. \meta{rel-energy} actually is the $y$ coordinate and shifts +the \ac{AO} vertically by \meta{rel-energy} \si{\centi\metre}. + +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} + \atom{left}{ + 1s = { 0; pair} , + 2s = { 1; pair} , + 2p = {1.5; up, down } + } + \end{MOdiagram} +\end{example} When both variants are used one can also see, that the right atom is shifted to 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{beispiel}[below] - \begin{MOdiagram} - \atom{left}{ - 1s = { 0; pair} , - 2s = { 1; pair} , - 2p = {1.5; up, down } - } - \atom{right}{ - 1s = { 0; pair} , - 2s = { 1; pair} , - 2p = {1.5; up, down } - } - \end{MOdiagram} -\end{beispiel} -With the command \cmd{molecule} (section~\ref{ssec:molecule}) the reason for the +\begin{example} + \begin{MOdiagram} + \atom{left}{ + 1s = { 0; pair} , + 2s = { 1; pair} , + 2p = {1.5; up, down } + } + \atom{right}{ + 1s = { 0; pair} , + 2s = { 1; pair} , + 2p = {1.5; up, down } + } + \end{MOdiagram} +\end{example} +With the command \cs{molecule} (section~\ref{ssec:molecule}) the reason for the shift becomes clear. Any of the arguments for the \ac{AO} can be left empty or be omitted. -\begin{beispiel} - Without argument: default height, full: - \begin{MOdiagram} - \atom{left}{1s, 2s, 2p} - \end{MOdiagram} -\end{beispiel} -\begin{beispiel} - empty argument: default height, empty: - \begin{MOdiagram} - \atom{left}{1s=, 2s=, 2p=} - \end{MOdiagram} -\end{beispiel} -\begin{beispiel} - using some values:\\ - \begin{MOdiagram} - \atom{left}{1s, 2s=1, 2p={;,up} } - \end{MOdiagram} -\end{beispiel} - -\subsection{The \cmd{molecule} Command}\label{ssec:molecule} -\begin{beschreibung} - \Befehl{molecule}[]{} \\ - \oa{} caption of the molecule; \\ - \ma{} specifications of the \acp{MO}; -\end{beschreibung} +\begin{example}[side-by-side] + Without argument: default height, full:\par + \begin{MOdiagram} + \atom{left}{1s, 2s, 2p} + \end{MOdiagram} +\end{example} + +\begin{example}[side-by-side] + empty argument: default height, empty:\par + \begin{MOdiagram} + \atom{left}{1s=, 2s=, 2p=} + \end{MOdiagram} +\end{example} + +\begin{example}[side-by-side] + using some values:\par + \begin{MOdiagram} + \atom{left}{1s, 2s=1, 2p={;,up} } + \end{MOdiagram} +\end{example} + +\subsection{The \cs*{molecule} Command}\label{ssec:molecule} +\begin{commands} + \command{molecule}[\oarg{name}\marg{MO-spec}] + Place a \acs{MO} in the diagram. \meta{name} is caption of the molecule, + \meta{MO-spec} is the specification of the \ac{MO}. +\end{commands} + An example first: -\begin{beispiel} - \begin{MOdiagram} - \atom{left} { 1s = { 0; up } } - \atom{right}{ 1s = { 0; up } } - \molecule { 1sMO = {.75; pair } } - \end{MOdiagram} -\end{beispiel} -The command \cmd{molecule} connects the \acp{AO} with the bonding and anti-bondung -\acp{MO}. \cmd{molecule} can only be used \emph{after} one has set \emph{both} -atoms since the orbitals that are to be connected must be known. - -The argument \ma{} accepts a comma separated list of key/value pairs: -\begin{beschreibung} - \option{1sMO}{/; , } - connects the \acp{AO} specified by \key{1s}. - \option{2sMO}{/; , } - connects the \acp{AO} specified by \key{2s}. - \option{2pMO}{/,

/

; - , , , , , - } - connects the \acp{AO} specified by \key{2p}. -\end{beschreibung} +\begin{example}[side-by-side] + \begin{MOdiagram} + \atom{left} { 1s = { 0; up } } + \atom{right}{ 1s = { 0; up } } + \molecule { 1sMO = {.75; pair } } + \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 +set \emph{both} atoms since the orbitals that are to be connected must be +known. + +The argument \meta{MO-spec} accepts a comma separated list of key/value pairs: +\begin{options} + \keychoice{1sMO}{\{\meta{energy gain}/\meta{energy loss}; \meta{s + el-spec}{,} \meta{s* el-spec}\}} + connects the \acp{AO} specified by \option{1s}. + \keychoice{2sMO}{\{\meta{energy gain}/\meta{energy loss}; \meta{s + el-spec}{,} \meta{s* el-spec}\}} + connects the \acp{AO} specified by \option{2s} + \keychoice{2pMO}{\{\meta{s energy gain}/\meta{s energy loss}{,} \meta{p + energy gain}/\meta{p energy loss}; \meta{s el-spec}{,} \meta{py + el-spec}{,} \meta{pz el- spec}{,} \meta{py* el-spec}{,} \meta{pz* + el-spec}{,} \meta{s* el-spec}\}} + connects the \acp{AO} specified by \option{2p}. +\end{options} + Obviously the regarding \acp{AO} must have been set in order to connect them. This for example won't work: -\begin{beispiel}[code only] - \begin{MOdiagram} - \atom{left} { 1s = 0 } - \atom{right}{ 1s = 0 } - \molecule { 2sMO = .75 } - \end{MOdiagram} -\end{beispiel} -The value used in \code{} determines how many \si{\centi\metre} the +\begin{sourcecode} + \begin{MOdiagram} + \atom{left} { 1s = 0 } + \atom{right}{ 1s = 0 } + \molecule { 2sMO = .75 } + \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 anti-bondung \ac{MO} lies above the higher \ac{AO}. -\begin{beispiel}[below] - same level: - \begin{MOdiagram} - \atom{left} { 1s = { 0; up } } - \atom{right}{ 1s = { 0; up } } - \molecule { 1sMO = {.75; pair } } - \end{MOdiagram} - - different levels: - \begin{MOdiagram} - \atom{left} { 1s = { 0; up } } - \atom{right}{ 1s = { 1; up } } - \molecule { 1sMO = {.25; pair } } - \end{MOdiagram} -\end{beispiel} - -If you specify \code{} you can create non-symmetrical splittings. -Then, the first value (\code{}) is used for the bonding \ac{MO} and -the second value (\code{}) is used for the anti-bonding \ac{MO}. -\begin{beispiel}[below] - \begin{MOdiagram} - \atom{left} { 1s = { 0; up } } - \atom{right}{ 1s = { 0; up } } - \molecule { 1sMO = {.75/.25; pair } } - \end{MOdiagram} - - \begin{MOdiagram} - \atom{left} { 1s = { 0; up } } - \atom{right}{ 1s = { 1; up } } - \molecule { 1sMO = {.25/.75; pair } } - \end{MOdiagram} -\end{beispiel} +\begin{example}[side-by-side] + same level:\par + \begin{MOdiagram} + \atom{left} { 1s = { 0; up } } + \atom{right}{ 1s = { 0; up } } + \molecule { 1sMO = {.75; pair } } + \end{MOdiagram} + + different levels:\par + \begin{MOdiagram} + \atom{left} { 1s = { 0; up } } + \atom{right}{ 1s = { 1; up } } + \molecule { 1sMO = {.25; pair } } + \end{MOdiagram} +\end{example} + +If you specify \meta{energy loss} you can create non-symmetrical splittings. +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} + \atom{left} { 1s = { 0; up } } + \atom{right}{ 1s = { 0; up } } + \molecule { 1sMO = {.75/.25; pair } } + \end{MOdiagram} + + \begin{MOdiagram} + \atom{left} { 1s = { 0; up } } + \atom{right}{ 1s = { 1; up } } + \molecule { 1sMO = {.25/.75; pair } } + \end{MOdiagram} +\end{example} Please be aware, that you have to specify \emph{two} such values or pairs with -\key{2pMO}: the splitting of the \textsigma\ orbitals and the splitting of the -\textpi\ orbitals. -\begin{beispiel} - \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{beispiel} - -The complete \ac{MO} diagram for triplett dioxygen now could look something like -that: -\begin{beispiel} - \begin{MOdiagram} - \atom{left}{ - 1s, 2s, 2p = {;pair,up,up} - } - \atom{right}{ - 1s, 2s, 2p = {;pair,up,up} - } - \molecule{ - 1sMO, 2sMO, 2pMO = {;pair,pair,pair,up,up} - } - \end{MOdiagram} -\end{beispiel} +\option{2pMO}: the splitting of the \chemsigma\ orbitals and the splitting of +the \chempi\ orbitals. +\begin{example} + \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{example} + +The complete \ac{MO} diagram for triplett dioxygen now could look something +like that: +\begin{example} + \begin{MOdiagram} + \atom{left}{ + 1s, 2s, 2p = {;pair,up,up} + } + \atom{right}{ + 1s, 2s, 2p = {;pair,up,up} + } + \molecule{ + 1sMO, 2sMO, 2pMO = {;pair,pair,pair,up,up} + } + \end{MOdiagram} +\end{example} \subsection{The Naming Scheme}\label{Namensgebung} -Since one wants to be able to put labels to the orbitals and since they are nodes -in a \code{tikzpicture}, the internal naming scheme is important. It closely -follows the function: +Since one wants to be able to put labels to the orbitals and since they are +nodes in a \env*{tikzpicture}, the internal naming scheme is important. It +closely follows the function: \begin{center} -\begin{MOdiagram}[distance=6cm,AO-width=20pt,labels-fs=\tt\footnotesize,labels-style={yshift=10pt}] - \atom{left}{ - 1s=0, - 2s=2, - 2p=5, - label={ 1sleft={1sleft}, 2sleft={2sleft}, 2pxleft={2pxleft}, 2pyleft={2pyleft}, 2pzleft={2pzleft} } - } - \atom{right}{ - 1s=0, - 2s=2, - 2p=5, - label={ 1sright={1sright}, 2sright={2sright}, 2pxright={2pxright}, 2pyright={2pyright}, 2pzright={2pzright} } - } - \molecule{ - 1sMO=.5, - 2sMO=.5, - 2pMO={1.5,.5}, - label={ 1sigma={1sigma}, 1sigma*={1sigma*}, 2sigma={2sigma}, 2sigma*={2sigma*}, 2psigma={2psigma}, 2psigma*={2psigma*}, 2piy={2piy}, 2piy*={2piy*}, 2piz={2piz}, 2piz*={2piz*} } - } -\end{MOdiagram} + \begin{MOdiagram}[ + distance = 6cm, + AO-width = 20pt, + labels-fs = \ttfamily\footnotesize, + labels-style = {yshift=10pt} + ] + \atom{left}{ + 1s = 0 , + 2s = 2 , + 2p = 5 , + label = { + 1sleft = {1sleft} , + 2sleft = {2sleft} , + 2pxleft = {2pxleft} , + 2pyleft = {2pyleft} , + 2pzleft = {2pzleft} + } + } + \atom{right}{ + 1s = 0 , + 2s = 2 , + 2p = 5 , + label = { + 1sright = {1sright} , + 2sright = {2sright} , + 2pxright = {2pxright} , + 2pyright = {2pyright} , + 2pzright = {2pzright} + } + } + \molecule{ + 1sMO = .5 , + 2sMO = .5 , + 2pMO = {1.5,.5} , + label = { + 1sigma = {1sigma} , + 1sigma* = {1sigma*} , + 2sigma = {2sigma} , + 2sigma* = {2sigma*} , + 2psigma = {2psigma} , + 2psigma* = {2psigma*} , + 2piy = {2piy} , + 2piy* = {2piy*} , + 2piz = {2piz} , + 2piz* = {2piz*} + } + } + \end{MOdiagram} \end{center} + With these names it is possible to reference the orbitals with the known \TikZ commands: -\begin{beispiel} - \begin{MOdiagram} - \atom{left} { 1s = 0 } - \atom{right}{ 1s = 0 } - \molecule { 1sMO = .75 } - \draw[<->,red,semithick] (1sigma.center) -- (1sigma*.center) ; - \draw[red] (1sigma*) ++ (2cm,.5cm) node {splitting} ; - \end{MOdiagram} -\end{beispiel} - -\begin{beispiel} - \begin{MOdiagram} - \atom{left} { 1s = 0 } - \atom{right}{ 1s = 0 } - \molecule { 1sMO = .75 } - \draw[draw=blue,very thick,fill=blue!40,opacity=.5] (1sigma*) circle (8pt); - \draw[<-,shorten <=8pt,shorten >=15pt,blue] (1sigma*) --++(2,1) node {anti-bonding MO}; - \end{MOdiagram} -\end{beispiel} +\begin{example}[side-by-side] + \begin{MOdiagram} + \atom{left} { 1s = 0 } + \atom{right}{ 1s = 0 } + \molecule { 1sMO = .75 } + \draw[<->,red,semithick] + (1sigma.center) -- (1sigma*.center) ; + \draw[red] + (1sigma*) ++ (2cm,.5cm) node {splitting} ; + \end{MOdiagram} +\end{example} + +\begin{example} + \begin{MOdiagram} + \atom{left} { 1s = 0 } + \atom{right}{ 1s = 0 } + \molecule { 1sMO = .75 } + \draw[draw=blue,very thick,fill=blue!40,opacity=.5] + (1sigma*) circle (8pt); + \draw[<-,shorten <=8pt,shorten >=15pt,blue] + (1sigma*) --++(2,1) node {anti-bonding MO}; + \end{MOdiagram} +\end{example} \subsection{Placing AOs and MOs Arbitrarily}\label{ssec:AO_MO_irgendwo} -The standard orbitals are not always sufficient in order to draw a correct \ac{MO} -diagram. For example in the \ac{MO} diagram of \ch{XeF2} one would need the part -that illustrates the interaction between the bonding and anti-bonding combination -of two p orbitals of Flourine with one p orbital of Xenon: +The standard orbitals are not always sufficient in order to draw a correct +\ac{MO} diagram. For example in the \ac{MO} diagram of \ch{XeF2} one would +need the part that illustrates the interaction between the bonding and +anti-bonding combination of two p orbitals of Flourine with one p orbital of +Xenon: + \begin{center} - \begin{MOdiagram}[names] - \atom[\lewis{0.,F}\hspace*{5mm}\lewis{4.,F}]{left}{1s=.2;up,up-el-pos={1sleft=.5}} - \atom[Xe]{right}{1s=1.25;pair} - \molecule[\ch{XeF2}]{1sMO={1/.25;pair}} - \AO(1cm){s}{0;up} - \AO(3cm){s}{0;pair} - \connect{ AO1 & AO2 } - \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} + \begin{MOdiagram}[names] + \atom[\chlewis{0.}{F}\hspace*{5mm}\chlewis{180.}{F}]{left}{ + 1s=.2;up,up-el-pos={1sleft=.5} + } + \atom[Xe]{right}{1s=1.25;pair} + \molecule[\ch{XeF2}]{1sMO={1/.25;pair}} + \AO(1cm){s}{0;up} + \AO(3cm){s}{0;pair} + \connect{ AO1 & AO2 } + \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{center} To create diagrams like this there is the following command, which draws a single \ac{AO}: -\begin{beschreibung} - \Befehl{AO}[]\da{}\ma{}\oa{}\ma{;} \\ - \oa{} (optional) name of the node; if not specified, \code{AO\#} is used where - \code{\#} is a consecutive number. \\ - \oa{} vertical position of the orbitals, a \TeX\ dimension. \\ - \ma{} \code{s} or \code{p}. \\ - \oa{} key/value pairs with which the \ac{AO} can be customized, see - section~\ref{ssec:AO_anpassen}. \\ - \ma{} specification of the \ac{AO}. -\end{beschreibung} - -Depending on the \code{} one s or three p orbitals are drawn. -\begin{beispiel} - \begin{MOdiagram} - \AO{s}{0;} - \AO(-20pt){p}{1;pair,up,down} - \end{MOdiagram} -\end{beispiel} - -If one wants to place such an \ac{AO} at the position of an atom, one has to know -their \code{}. They have predefined values (also see +\begin{commands} + \command{AO}[\oarg{name}\darg{xshift}\marg{type}\oarg{options}\Marg{\meta{energy}; + \meta{el-spec}}] + Place an \acs{AO} in the diagram. \meta{} (optional) is the name of + the node; if not specified, \code{AO\#} is used where \code{\#} is a + consecutive number. \meta{xshift} is the vertical position of the orbital(s), + a \TeX\ dimension. \meta{type} can be \code{s} or \code{p}. + \meta{options} is a list of key/value pairs with which the \ac{AO} can be + customized, see section~\ref{ssec:AO_anpassen}. \meta{AO-spec} is the + specification of the \ac{AO}. +\end{commands} + +Depending on the \meta{type} one s or three p orbitals are drawn. +\begin{example}[side-by-side] + \begin{MOdiagram} + \AO{s}{0;} + \AO(-20pt){p}{1;pair,up,down} + \end{MOdiagram} +\end{example} + +If one wants to place such an \ac{AO} at the position of an atom, one has to +know their \meta{xshift}. They have predefined values (also see section~\ref{orbital-positionen}):\label{xshift} \begin{itemize} - \item atom left: \SI{1}{\centi\metre} - \item molecule: \SI{3}{\centi\metre} - \item atom right: \SI{5}{\centi\metre} + \item atom left: \SI{1}{\centi\metre} + \item molecule: \SI{3}{\centi\metre} + \item atom right: \SI{5}{\centi\metre} \end{itemize} -\begin{beispiel} - \begin{MOdiagram} - \atom{left} {1s=0} - \atom{right}{1s=0} - \molecule {1sMO=1} - \AO(1cm){s}{2} - \AO(3cm){s}{2} - \AO(5cm){s}{2} - \end{MOdiagram} -\end{beispiel} + +\begin{example}[side-by-side] + \begin{MOdiagram} + \atom{left} {1s=0} + \atom{right}{1s=0} + \molecule {1sMO=1} + \AO(1cm){s}{2} + \AO(3cm){s}{2} + \AO(5cm){s}{2} + \end{MOdiagram} +\end{example} + Within the p orbitals there is an additional shift by \SI{20}{pt} per orbital. This is equivalent to a double shift by the length \code{AO-width} (see section~\ref{option:AO-width}): -\begin{beispiel} - \begin{MOdiagram} - \atom{left} {2p=0} - \atom{right}{2p=0} - % above the left atom: - \AO(1cm) {s}{ .5} - \AO(1cm-20pt){s}{ 1;up} - \AO(1cm-40pt){s}{1,5;down} - % above the right atom: - \AO(5cm) {s}{ .5} - \AO(5cm+20pt){s}{ 1;up} - \AO(5cm+40pt){s}{1.5;down} - \end{MOdiagram} -\end{beispiel} - -The \acp{AO} created with \cmd{AO} also can be connected. For this you can use -the \TikZ command \cmd{draw}, of course. You can use the predefined node names\ldots -\begin{beispiel} - \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{beispiel} +\begin{example} + \begin{MOdiagram} + \atom{left} {2p=0} + \atom{right}{2p=0} + % above the left atom: + \AO(1cm) {s}{ .5} + \AO(1cm-20pt){s}{ 1;up} + \AO(1cm-40pt){s}{1,5;down} + % above the right atom: + \AO(1cm) {s}{ .5} + \AO(5cm+20pt){s}{ 1;up} + \AO(5cm+40pt){s}{1.5;down} + \end{MOdiagram} +\end{example} + +The \acp{AO} created with \cs{AO} also can be connected. For this you can use +the \TikZ\ command \cs*{draw}, of course. You can use the predefined node +names\ldots +\begin{example} + \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{example} \ldots\ or use own node names -\begin{beispiel} - \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{beispiel} +\begin{example} + \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{example} The predefined names are \code{AO1}, \code{AO2} \etc for the type \code{s} and -\code{AO1x}, \code{AO1y}, \code{AO1z}, \code{AO2x} \etc for the type \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{beispiel} - \begin{MOdiagram} - \AO{p}{0} - \draw[<-,shorten >=5pt] (AO1y.-90) -- ++ (.5,-1) node {y}; - \end{MOdiagram} - and - \begin{MOdiagram} - \AO[A]{p}{0} - \draw[<-,shorten >=5pt] (Ay.-90) -- ++ (.5,-1) node {y}; - \end{MOdiagram} -\end{beispiel} - -However, if you want the lines to be drawn in the same style as the ones created -by \cmd{molecule}\footnote{which can be customized, see page~\pageref{option:lines}}, -you should use the command \cmd{connect}. -\begin{beschreibung} - \Befehl{connect}{} \\ - \ma{} comma separated list of node name pairs connected with - \code{\&}. -\end{beschreibung} +\code{AO1x}, \code{AO1y}, \code{AO1z}, \code{AO2x} \etc\ for the type +\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} + \AO{p}{0} + \draw[<-,shorten >=5pt] (AO1y.-90) -- ++ (.5,-1) node {y}; + \end{MOdiagram} + and + \begin{MOdiagram} + \AO[A]{p}{0} + \draw[<-,shorten >=5pt] (Ay.-90) -- ++ (.5,-1) node {y}; + \end{MOdiagram} +\end{example} + +However, if you want the lines to be drawn in the same style as the ones +created by \cs{molecule}\footnote{which can be customized, see + page~\pageref{option:lines}}, you should use the command \cs{connect}. +\begin{commands} + \command{connect}[\marg{AO-connect}] + Connects the specified \acp{AO}. \meta{AO-connect} is comma separated + list of node name pairs connected with \code{\&}. +\end{commands} 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{beispiel} - \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{beispiel} - -Some things still need to be said: \cmd{connect} adds the anchor \code{east} to -the first name and the anchor \code{west} to the second one. This means a -connection only makes sense from the left to the right. However, you can add own -anchors using the usual \TikZ way: -\begin{beispiel} - \begin{tikzpicture} - \draw (0,0) node (a) {a} ++ (1,0) node (b) {b} - ++ (0,1) node (c) {c} ++ (-1,0) node (d) {d} ; - \connect{ a.90 & d.-90, c.180 & d.0 } - \end{tikzpicture} -\end{beispiel} +\begin{example}[side-by-side] + \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{example} + +Some things still need to be said: \cs{connect} adds the anchor \code{east} to +the first name and the anchor \code{west} to the second one. This means a +connection only makes sense from the left to the right. However, you can add +own anchors using the usual \TikZ\ way: +\begin{example} + \begin{tikzpicture} + \draw (0,0) node (a) {a} ++ (1,0) node (b) {b} + ++ (0,1) node (c) {c} ++ (-1,0) node (d) {d} ; + \connect{ a.90 & d.-90, c.180 & d.0 } + \end{tikzpicture} +\end{example} \subsection{The Positioning Scheme}\label{orbital-positionen} The figure below shows the values of the $x$ coordinates of the orbitals -depending on the values of \code{} (\code{}) and \code{} -(\code{}). In sections~\ref{option:distance} and \ref{option:AO-width} these +depending on the values of \meta{distance} (\meta{dist}) and \meta{AO-width} +(\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}[ - AO-width=22pt, - labels-fs=\ttfamily\scriptsize, - labels-style={text width=40pt,align=center,yshift=11pt}] - \atom{left}{ - 1s=0, - 2s=2, - 2p=5.5, - label={ - 1sleft={1cm}, - 2sleft={1cm}, - 2pxleft={1cm - 4*}, - 2pyleft={1cm - 2*}, - 2pzleft={1cm} - }} - \atom{right}{ - 1s=0, - 2s=2, - 2p=5.5, - label={ - 1sright={1cm + }, - 2sright={1cm + }, - 2pxright={1cm+ }, - 2pyright={1cm + + 2*}, - 2pzright={1cm + + 4*} - }} - \molecule{ - 1sMO=.5, - 2sMO=.5, - 2pMO={2,.75}, - label={ - 1sigma={.5* + 1cm}, - 1sigma*={.5* + 1cm}, - 2sigma={.5* + 1cm}, - 2sigma*={.5* + 1cm}, - 2psigma={.5* + 1cm}, - 2psigma*={.5* + 1cm}, - 2piy={.5* + 1cm - }, - 2piy*={.5* + 1cm - }, - 2piz={.5* + 1cm + }, - 2piz*={.5* + 1cm + } + \begin{MOdiagram}[ + AO-width = 22pt , + labels-fs = \ttfamily\tiny , + labels-style = {text width=40pt,align=center,yshift=11pt}] + \atom{left}{ + 1s = 0 , + 2s = 2 , + 2p = 5.5 , + label = { + 1sleft = {1cm} , + 2sleft = {1cm} , + 2pxleft = {1cm - 4*\meta{AO}} , + 2pyleft = {1cm - 2*\meta{AO}} , + 2pzleft = {1cm} + }} + \atom{right}{ + 1s = 0 , + 2s = 2 , + 2p = 5.5 , + label = { + 1sright = {1cm + \meta{dist}} , + 2sright = {1cm + \meta{dist}} , + 2pxright = {1cm+ \meta{dist}} , + 2pyright = {1cm + \meta{dist} + 2*\meta{AO}} , + 2pzright = {1cm + \meta{dist} + 4*\meta{AO}} + }} + \molecule{ + 1sMO = .5 , + 2sMO = .5 , + 2pMO = {2,.75} , + label = { + 1sigma = {.5*\meta{dist} + 1cm} , + 1sigma* = {.5*\meta{dist} + 1cm} , + 2sigma = {.5*\meta{dist} + 1cm} , + 2sigma* = {.5*\meta{dist} + 1cm} , + 2psigma = {.5*\meta{dist} + 1cm} , + 2psigma* = {.5*\meta{dist} + 1cm} , + 2piy = {.5*\meta{dist} + 1cm - \meta{AO}} , + 2piy* = {.5*\meta{dist} + 1cm - \meta{AO}} , + 2piz = {.5*\meta{dist} + 1cm + \meta{AO}} , + 2piz* = {.5*\meta{dist} + 1cm + \meta{AO}} + } } - } -\end{MOdiagram} + \end{MOdiagram} \end{center} \subsection{Default Values} If you leave the arguments (or better: values) for the specification of the \ac{AO} or \ac{MO} empty or omit them, default values are used. The table below shows you, which ones. -\begin{center}\small -\begin{tabular}{l>{\ttfamily}l>{\ttfamily}l>{\ttfamily}l} - \toprule & - \normalfont\bfseries\ac{AO}/\ac{MO} & - \normalfont\bfseries omitted & - \normalfont\bfseries empty \\ - \midrule - syntax: & & 1s & 1s= \\ - \midrule - & 1s & \{0;pair\} & \{0;\} \\ - & 2s & \{2;pair\} & \{2;\} \\ - & 2p & \{5;pair,pair,pair\} & \{5;,{},\} \\ - \midrule - & 1sMO & \{.5;pair,pair\} & \{.5;,\} \\ - & 2sMO & \{.5;pair,pair\} & \{.5;,\} \\ - & 2pMO & \{1.5,.5;pair,pair,pair,pair,pair,pair\} & \{1.5,.5;{},{},{},{},{},\} \\ - \bottomrule -\end{tabular} +\begin{center} + \small + \begin{tabular}{l>{\ttfamily}l>{\ttfamily}l>{\ttfamily}l} + \toprule & + \normalfont\bfseries\ac{AO}/\ac{MO} & + \normalfont\bfseries omitted & + \normalfont\bfseries empty \\ + \midrule + syntax: + & & 1s & 1s= \\ + \midrule + & 1s & \{0;pair\} & \{0;\} \\ + & 2s & \{2;pair\} & \{2;\} \\ + & 2p & \{5;pair,pair,pair\} & \{5;,{},\} \\ + \midrule + & 1sMO & \{.5;pair,pair\} & \{.5;,\} \\ + & 2sMO & \{.5;pair,pair\} & \{.5;,\} \\ + & 2pMO & \{1.5,.5;pair,pair,pair,pair,pair,pair\} & \{1.5,.5;{},{},{},{},{},\} \\ + \bottomrule + \end{tabular} \end{center} -This is similar for the \cmd{AO} command (page~\pageref{ssec:AO_MO_irgendwo}); -it needs a value for \code{}, though. -\begin{center}\small -\begin{tabular}{>{\ttfamily}l>{\ttfamily}l>{\ttfamily}l} - \toprule\bfseries - & \bfseries \\ - \midrule - s & pair \\ - p & pair,pair,pair \\ - \bottomrule -\end{tabular} + +This is similar for the \cs{AO} command (page~\pageref{ssec:AO_MO_irgendwo}); +it needs a value for \meta{energy}, though. + +\begin{center} + \small + \begin{tabular}{>{\ttfamily}l>{\ttfamily}l>{\ttfamily}l} + \toprule + \bfseries\meta{type} & \bfseries \meta{el-spec} \\ + \midrule + s & pair \\ + p & pair,pair,pair \\ + \bottomrule + \end{tabular} \end{center} Compare these examples: -\begin{beispiel} - \begin{MOdiagram} - \atom{left} { 1s={0;pair} } - \atom{right}{ 1s } - \end{MOdiagram} +\begin{example}[side-by-side] + \begin{MOdiagram} + \atom{left} { 1s={0;pair} } + \atom{right}{ 1s } + \end{MOdiagram} - \hrulefill + \hrulefill - \begin{MOdiagram} - \atom{left}{ 1s=1 } - \atom{right}{ 1s= } - \end{MOdiagram} -\end{beispiel} + \begin{MOdiagram} + \atom{left}{ 1s=1 } + \atom{right}{ 1s= } + \end{MOdiagram} +\end{example} \section{Customization} -Th options of the section~\ref{ssec:umgebungs_optionen} can be set global as -package option, \ie with \lstinline+\usepackage[]{modiagram}+, or via -the setup command \cmd{MOsetup}{}. +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}. \subsection{Environment Options}\label{ssec:umgebungs_optionen} -There are some options with which the layout of the \ac{MO} diagrams can be changed: -\begin{beschreibung} - \option{style}{} change the style of the orbitals and the connecting lines, - section~\ref{option:style}. - \option{distance}{} distance betwen left and right atom, - section~\ref{option:distance}. - \option{AO-width}{} change the width of orbitals, - section~\ref{option:AO-width}. - \option{el-sep}{} distance between the electron pair arrows, - section~\ref{option:electrons}. - \option{up-el-pos}{} position of the spin-up arrow, - section~\ref{option:electrons}. - \option{down-el-pos}{} position of the spin-down arrow, - section~\ref{option:electrons}. - \option{lines}{} change the \TikZ style of the connecting lines, - section~\ref{option:lines}. - \option{names}{} add captions to the atoms and the molecule, - section~\ref{option:names}. - \option{names-style}{} change the \TikZ style of the captions, - section~\ref{option:names_style}. - \option{names-style-add}{} change the \TikZ style of the captions, - section~\ref{option:names_style}. - \option{labels}{} add default labels to the orbitals, - section~\ref{option:labels}. - \option{labels-fs}{} change the font size of the labels, - section~\ref{option:labels-fs}. - \option{labels-style}{} change the \TikZ style of the labels, - section~\ref{option:labels-style}. -\end{beschreibung} -They all are discussed in the following sections. If they're used as options for the environment, they'r set locally and only change that environment. -\begin{beispiel}[code only] - \begin{MOdiagram}[] - ... - \end{MOdiagram} -\end{beispiel} - -\subsubsection{Option \key{style}}\label{option:style} +There are some options with which the layout of the \ac{MO} diagrams can be +changed: +\begin{options} + \keyval{style}{type} + change the style of the orbitals and the connecting lines, + section~\ref{option:style}. + \keyval{distance}{dim} + distance betwen left and right atom, + section~\ref{option:distance}. + \keyval{AO-width}{dim} + change the width of orbitals, + section~\ref{option:AO-width}. + \keyval{el-sep}{num} + distance between the electron pair arrows, + section~\ref{option:electrons}. + \keyval{up-el-pos}{num} + position of the spin-up arrow, + section~\ref{option:electrons}. + \keyval{down-el-pos}{num} + position of the spin-down arrow, + section~\ref{option:electrons}. + \keyval{lines}{tikz} + change the \TikZ\ style of the connecting lines, + section~\ref{option:lines}. + \keybool{names} + add captions to the atoms and the molecule, + section~\ref{option:names}. + \keyval{names-style}{tikz} + change the \TikZ\ style of the captions, + section~\ref{option:names_style}. + \keyval{names-style-add}{tikz} + change the \TikZ\ style of the captions, + section~\ref{option:names_style}. + \keybool{labels} + add default labels to the orbitals, + section~\ref{option:labels}. + \keyval{labels-fs}{cs} + change the font size of the labels, + section~\ref{option:labels-fs}. + \keyval{labels-style}{tikz} + change the \TikZ\ style of the labels, + section~\ref{option:labels-style}. +\end{options} +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] + ... + \end{MOdiagram} +\end{sourcecode} + +\subsubsection{Option \option*{style}}\label{option:style} There are five different styles which can be chosen. \begin{itemize} - \item\key{style}{plain} \AOinline[style=plain]{pair} (default) - \item\key{style}{square} \AOinline[style=square]{pair} - \item\key{style}{circle} \AOinline[style=circle]{pair} - \item\key{style}{round} \AOinline[style=round]{pair} - \item\key{style}{fancy} \AOinline[style=fancy]{pair} + \item\keyis{style}{plain} \AOinline[style=plain]{pair} (default) + \item\keyis{style}{square} \AOinline[style=square]{pair} + \item\keyis{style}{circle} \AOinline[style=circle]{pair} + \item\keyis{style}{round} \AOinline[style=round]{pair} + \item\keyis{style}{fancy} \AOinline[style=fancy]{pair} \end{itemize} Let's take the \ac{MO} diagram of \ch{H2} to illustrate the different styles: -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram}[style=plain]% default - \atom[H]{left} { 1s = {;up} } - \atom[H]{right}{ 1s = {;up} } - \molecule[\ch{H2}]{ 1sMO = {.75;pair} } - \end{MOdiagram} -\end{beispiel} -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram}[style=square] - \atom[H]{left} { 1s = {;up} } - \atom[H]{right}{ 1s = {;up} } - \molecule[\ch{H2}]{ 1sMO = {.75;pair} } - \end{MOdiagram} -\end{beispiel} -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram}[style=circle] - \atom[H]{left} { 1s = {;up} } - \atom[H]{right}{ 1s = {;up} } - \molecule[\ch{H2}]{ 1sMO = {.75;pair} } - \end{MOdiagram} -\end{beispiel} -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram}[style=round] - \atom[H]{left} { 1s = {;up} } - \atom[H]{right}{ 1s = {;up} } - \molecule[\ch{H2}]{ 1sMO = {.75;pair} } - \end{MOdiagram} -\end{beispiel} -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram}[style=fancy] - \atom[H]{left} { 1s = {;up} } - \atom[H]{right}{ 1s = {;up} } - \molecule[\ch{H2}]{ 1sMO = {.75;pair} } - \end{MOdiagram} -\end{beispiel} - -\subsubsection{Option \key{distance}}\label{option:distance} -Depending on labels and captions the \SI{4}{\centi\metre} by which the right and -left atom are separated can be too small. With \key{distance}{} the length -can be adjusted. This will change the position of the right atom to \code{1cm + } -and the position of the molecule is changed to \code{0.5*(1cm + )}, also see -page~\pageref{xshift} and section~\ref{orbital-positionen}. -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram}[distance=6cm] - \atom[H]{left} { 1s = {;up} } - \atom[H]{right}{ 1s = {;up} } - \molecule[\ch{H2}]{ 1sMO = {.75;pair} } - \end{MOdiagram} -\end{beispiel} - -\subsubsection{Option \key{AO-width}}\label{option:AO-width} -The length \key{AO-width} sets the length of the horizontal line in a orbital -displayed with the \code{plain} style. It's default value is \SI{10}{pt}. -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram}[AO-width=15pt] - \atom[H]{left} { 1s = {;up} } - \atom[H]{right}{ 1s = {;up} } - \molecule[\ch{H2}]{ 1sMO = {.75;pair} } - \end{MOdiagram} -\end{beispiel} -\begin{beispiel} - % use package `chemmacros' - \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{beispiel} -By changing the value of \key{AO-width} the positions of the p and the \textpi\ -orbitals also change, see section~\ref{orbital-positionen}. - -\subsubsection{Optionen \key{el-sep}, \key{up-el-pos} und \key{down-el-pos}}\label{option:electrons} +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram}[style=plain]% default + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ch{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{example} + +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram}[style=square] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ch{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{example} + +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram}[style=circle] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ch{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{example} + +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram}[style=round] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ch{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{example} + +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram}[style=fancy] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ch{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{example} + +\subsubsection{Option \option*{distance}}\label{option:distance} +Depending on labels and captions the \SI{4}{\centi\metre} by which the right +and left atom are separated can be too small. With \key{distance}{dim} the +length can be adjusted. This will change the position of the right atom to +\code{1cm + \meta{dim}} and the position of the molecule is changed to +\code{0.5*(1cm + \meta{dim})}, also see page~\pageref{xshift} and +section~\ref{orbital-positionen}. +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram}[distance=6cm] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ch{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{example} + +\subsubsection{Option \option*{AO-width}}\label{option:AO-width} +The length \option{AO-width} sets the length of the horizontal line in a +orbital displayed with the \code{plain} style. It's default value is +\SI{10}{pt}. +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram}[AO-width=15pt] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ch{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{example} + +\begin{example}[side-by-side] + % use package `chemmacros' + \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{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}. + +\subsubsection{Optionen \option*{el-sep}, \option*{up-el-pos} und + \option*{down-el-pos}} +\label{option:electrons} + These three options change the horizontal positions of the arrows representing -the electrons in an \ac{AO}/\ac{MO}. The option \key{el-sep}{} needs a value -between \code{0} and \code{1}. \code{0} means \emph{no} distance between the arrows -and \code{1} \emph{full} distance (with respect to the length \key{AO-width}, see -section~\ref{option:AO-width}). -\begin{beispiel} - % use package `chemmacros' - \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{beispiel} -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram}[el-sep=0] - \atom[H]{left} { 1s = {;up} } - \atom[H]{right}{ 1s = {;up} } - \molecule[\ch{H2}]{ 1sMO = {.75;pair} } - \end{MOdiagram} -\end{beispiel} -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram}[el-sep=1] - \atom[H]{left} { 1s = {;up} } - \atom[H]{right}{ 1s = {;up} } - \molecule[\ch{H2}]{ 1sMO = {.75;pair} } - \end{MOdiagram} -\end{beispiel} +the electrons in an \ac{AO}/\ac{MO}. The option \key{el-sep}{num} needs a +value between \code{0} and \code{1}. \code{0} means \emph{no} distance between +the arrows and \code{1} \emph{full} distance (with respect to the length +\option{AO-width}, see section~\ref{option:AO-width}). + +\begin{example}[side-by-side] + % use package `chemmacros' + \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{example} + +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram}[el-sep=0] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ch{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{example} + +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram}[el-sep=1] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ch{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{example} + The options \key{up-el-pos}{} and \key{down-el-pos}{} can be used -alternatively to place the spin-up and spin-down electron, respectively. Again -they need values between \code{0} and \code{1}. This time \code{0} means \emph{on -the left} and \code{1} means \emph{on the right}. -\begin{beispiel} - % use package `chemmacros' - \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{beispiel} -\begin{beispiel} - % use package `chemmacros' - \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{beispiel} -\begin{beispiel} - % use package `chemmacros' - \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{beispiel} - -\subsubsection{Option \key{lines}}\label{option:lines} -The option \key{lines} can be used to modify the \TikZ style of the connecting -lines: -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram}[lines={gray,thin}] - \atom[H]{left} { 1s = {;up} } - \atom[H]{right}{ 1s = {;up} } - \molecule[\ch{H2}]{ 1sMO = {.75;pair} } - \end{MOdiagram} -\end{beispiel} - -\subsubsection{Option \key{names}}\label{option:names} -If you use the option \key{names} the atoms and the molecule get captions provided -you have used the optional \code{} argument of \cmd{atom} and/or \cmd{molecule}. -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram}[names] - \atom[H]{left} { 1s = {;up} } - \atom[H]{right}{ 1s = {;up} } - \molecule[\ch{H2}]{ 1sMO = {.75;pair} } - \end{MOdiagram} -\end{beispiel} - -\subsubsection{Optionens \key{names-style} and \key{names-style-add}}\label{option:names_style} -These options enable to customize the style of the captions of the atoms and of -the molecule. By default this setting is used: \key{names-style}{\{anchor=base\}}% -\footnote{Please see ``\TikZ and PGF -- Manual for Version 2.10'' p.\,183 section -16.4.4 (pgfmanual.pdf) for the meaning}. -\begin{beispiel} - % use package `chemmacros' - \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{beispiel} +alternatively to place the spin-up and spin-down electron, respectively. +Again they need values between \code{0} and \code{1}. This time \code{0} +means \emph{on the left} and \code{1} means \emph{on the right}. + +\begin{example} + % use package `chemmacros' + \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{example} + +\begin{example} + % use package `chemmacros' + \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{example} + +\begin{example} + % use package `chemmacros' + \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{example} + +\subsubsection{Option \option*{lines}}\label{option:lines} +The option \option{lines} can be used to modify the \TikZ\ style of the +connecting lines: +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram}[lines={gray,thin}] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ch{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{example} + +\subsubsection{Option \option*{names}}\label{option:names} +If you use the option \option{names} the atoms and the molecule get captions +provided you have used the optional \meta{name} argument of \cs{atom} and/or +\cs{molecule}. +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram}[names] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ch{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{example} + +\subsubsection{Options \option*{names-style} and \option*{names-style-add}}\label{option:names_style} +These options enable to customize the style of the captions of the atoms and +of the molecule. By default this setting is used: +\key{names-style}{anchor=base}\footnote{Please see ``\TikZ\ and PGF -- Manual + 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}] + \atom[p]{left} { 1s = {;up} } + \atom[b]{right}{ 1s = {;up} } + \molecule[\ch{X2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{example} + With this the default setting is overwritten. As you can see it destroys the vertical alignment of the nodes. In order to avoid that you can for example specify \code{text height} and \code{text depth} yourself \ldots -\begin{beispiel} - % use package `chemmacros' - \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{beispiel} +\begin{example} + % use package `chemmacros' + \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{example} + \ldots, add the \code{anchor} again \ldots -\begin{beispiel} - % use package `chemmacros' - \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{beispiel} +\begin{example} + % use package `chemmacros' + \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{example} + \ldots\ or use the option \key{names-style-add}. It doesn't overwrite the current setting but appends the new declaration: -\begin{beispiel} - % use package `chemmacros' - \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{beispiel} -\begin{beispiel} - % use package `chemmacros' - \MOsetup{names,names-style={text height=2.5ex,text depth=.5ex,draw=blue!80,rounded corners}} - \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}] - \atom[p]{left} { 1s = {;up} } - \atom[b]{right}{ 1s = {;up} } - \molecule[\ch{X2}]{ 1sMO = {.75;pair} } - \end{MOdiagram} -\end{beispiel} - -\subsubsection{Option \key{labels}}\label{option:labels} -If you use the option \key{labels} predefined labels are written below the -orbitals. These labels can be changed, see section~\ref{sec:key:label}. -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram}[labels] - \atom[H]{left} { 1s = {;up} } - \atom[H]{right}{ 1s = {;up} } - \molecule[\ch{H2}]{ 1sMO = {.75;pair} } - \end{MOdiagram} -\end{beispiel} - -\subsubsection{Option \key{labels-fs}}\label{option:labels-fs} -Labels are set with the font size \cmd{small}. If you want to change that you -can use the option \key{labels-fs}. -\begin{beispiel} - % use package `chemmacros' - \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{beispiel} +\begin{example} + % use package `chemmacros' + \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{example} + +\begin{example} + % use package `chemmacros' + \MOsetup{ + names, + names-style = { + text height = 2.5ex, + text depth = .5ex, + draw = blue!80, + rounded corners + } + } + \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}] + \atom[p]{left} { 1s = {;up} } + \atom[b]{right}{ 1s = {;up} } + \molecule[\ch{X2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{example} + +\subsubsection{Option \option*{labels}}\label{option:labels} +If you use the option \option{labels} predefined labels are written below the +orbitals. These labels can be changed, see section~\ref{sec:key:label}. +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram}[labels] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ch{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{example} + +\subsubsection{Option \option*{labels-fs}}\label{option:labels-fs} +Labels are set with the font size \cs*{small}. If you want to change that you +can use the option \option{labels-fs}. +\begin{example} + % use package `chemmacros' + \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{example} + This also allows you to change the font style or font shape of the labels. -\begin{beispiel} - % use package `chemmacros' - \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{beispiel} - -\subsubsection{Option \key{labels-style}}\label{option:labels-style} -The option \key{labels-style} changes the \TikZ style of the nodes within which -the labels are written. -\begin{beispiel} - % use package `chemmacros' - \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{beispiel} - -\subsection{\cmd{atom} and \cmd{molecule} Specific Customizations} -\subsubsection{The \key{label} Key}\label{sec:key:label} -If you don't want to use the predefined labels, change single labels or use only -one or two labels, you can use the key \key{label}. This key is used in the -\cmd{atom} and \cmd{molecule} commands in the \code{} or -\code{} argument, respectively. The key awaits a comma separated -key/value list. The names mentioned in section~\ref{Namensgebung} are used as +\begin{example} + % use package `chemmacros' + \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{example} + +\subsubsection{Option \option*{labels-style}}\label{option:labels-style} +The option \option{labels-style} changes the \TikZ\ style of the nodes within +which the labels are written. +\begin{example} + % use package `chemmacros' + \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{example} + +\subsection{\cs*{atom} and \cs*{molecule} Specific Customizations} +\subsubsection{The \option*{label} Key}\label{sec:key:label} +If you don't want to use the predefined labels, change single labels or use +only one or two labels, you can use the key \option{label}. This option is +used in the \cs{atom} and \cs{molecule} commands in the \meta{AO-spec} or +\meta{MO-spec} argument, respectively. The key awaits a comma separated +key/value list. The names mentioned in section~\ref{Namensgebung} are used as keys to specify the \ac{AO} that you want to label. -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram}[labels-fs=\footnotesize] - \atom[H]{left} { 1s = {;up} } - \atom[H]{right}{ 1s = {;up} } - \molecule[\ch{H2}]{ - 1sMO = {.75;pair}, - label = { 1sigma = {bonding MO} } - } - \end{MOdiagram} -\end{beispiel} -\begin{beispiel} - \begin{MOdiagram}[style=square,distance=6cm] - \atom{left} { 1s = {;up} } - \atom{right}{ 1s = {;up} } - \molecule{ - 1sMO = {.75;pair} , - label = { - 1sigma = \textsigma, - 1sigma* = \textsigma$^*$ +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram}[labels-fs=\footnotesize] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ch{H2}]{ + 1sMO = {.75;pair}, + label = { 1sigma = {bonding MO} } } - } - \node[right] at (1sigma.-45) {bonding}; - \node[right] at (1sigma*.45) {anti-bonding}; - \end{MOdiagram} -\end{beispiel} - -If the key is used together with the \key{labels} option (page~\pageref{option:labels}) - single labels are overwritten: -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram}[labels] - \atom[H]{left} { 1s = {;up} } - \atom[H]{right}{ 1s = {;up} } - \molecule[\ch{H2}]{ - 1sMO = {.75;pair}, - label = { 1sigma = \textcolor{red}{??} } - } - \end{MOdiagram} -\end{beispiel} - -\subsubsection{The \key{color} Key}\label{sec:key:color} -Analogous to the \key{label} key the \key{color} key can be used to display -coloured electrons: -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram}[labels-fs=\footnotesize] - \atom[H]{left}{ - 1s, color = { 1sleft = blue } - } - \atom[H]{right}{ - 1s, color = { 1sright = red } - } - \molecule[\ch{H2}]{ - 1sMO, - label = { 1sigma = {bonding MO} }, - color = { 1sigma = green, 1sigma* = cyan } - } - \end{MOdiagram} -\end{beispiel} - -\subsubsection{The \key{up-el-pos} and \key{down-el-pos} keys}\label{sec:key:electrons} -The keys \key{up-el-pos} and \key{down-el-pos} allow it to shift the arrows -representing the electrons in a single \ac{AO} or \ac{MO} individually. You need -to use values between \code{0} and \code{1}, also see section~\ref{option:electrons}. -\begin{beispiel} - % use package `chemmacros' - \begin{MOdiagram} - \atom[H]{left}{ - 1s = {;up}, - up-el-pos = { 1sleft=.5 } - } - \atom[H]{right}{ 1s = {;up} } - \molecule[\ch{H2}]{ - 1sMO = {.75;pair} , - up-el-pos = { 1sigma=.15 } , - down-el-pos = { 1sigma=.85 } - } - \end{MOdiagram} -\end{beispiel} - -\subsection{\cmd{AO} Specific Customizations}\label{ssec:AO_anpassen} -These keys enable to customize orbitals created with \cmd{AO}. - -\subsubsection{The \key{label} Key}\label{key:AO_label} -The key \key{label[x/y/z]} allows you to put a 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{beispiel} - \begin{MOdiagram}[style=square] - \AO{s}[label={s orbital}]{0} - \AO{p}[label[y]=py,label[z]=pz]{1.5} - \end{MOdiagram} -\end{beispiel} - -\subsubsection{The \key{color} Key}\label{key:AO_color} -Analogous to the \key{label} key there is the key \key{color[x/y/z]} which enables -you to choose a color for the electrons. If you use the type \code{p} you can -specify the orbital in square brackets: -\begin{beispiel} - \begin{MOdiagram}[style=square] - \AO{s}[color=red]{0} - \AO{p}[color[y]=green,color[z]=cyan]{1.5} - \end{MOdiagram} -\end{beispiel} - -\subsubsection{The \key{up-el-pos} and \key{down-el-pos} Keys}\label{key:AO_electrons} -Then there are the keys \key{up-el-pos[x/y/z]} and \key{down-el-pos[x/y/z]} with -which the electrons can be shifted horizontally. You can use values between \code{0} -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{beispiel} - \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{beispiel} + \end{MOdiagram} +\end{example} + +\begin{example}[side-by-side] + \begin{MOdiagram}[style=square,distance=6cm] + \atom{left} { 1s = {;up} } + \atom{right}{ 1s = {;up} } + \molecule{ + 1sMO = {.75;pair} , + label = { + 1sigma = \chemsigma, + 1sigma* = \chemsigma$^*$ + } + } + \node[right] at (1sigma.-45) {bonding}; + \node[right] at (1sigma*.45) {anti-bonding}; + \end{MOdiagram} +\end{example} + +If the option is used together with the \option{labels} option +(page~\pageref{option:labels}) single labels are overwritten: +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram}[labels] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ch{H2}]{ + 1sMO = {.75;pair}, + label = { 1sigma = \textcolor{red}{??} } + } + \end{MOdiagram} +\end{example} + +\subsubsection{The \option*{color} Key}\label{sec:key:color} +Analogous to the \option{label} key the \option{color} key can be used to +display coloured electrons: +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram}[labels-fs=\footnotesize] + \atom[H]{left}{ + 1s, color = { 1sleft = blue } + } + \atom[H]{right}{ + 1s, color = { 1sright = red } + } + \molecule[\ch{H2}]{ + 1sMO, + label = { 1sigma = {bonding MO} }, + color = { 1sigma = green, 1sigma* = cyan } + } + \end{MOdiagram} +\end{example} + +\subsubsection{The \option*{up-el-pos} and \option*{down-el-pos} keys}\label{sec:key:electrons} +The options \option{up-el-pos} and \option{down-el-pos} allow it to shift the +arrows representing the electrons in a single \ac{AO} or \ac{MO} individually. +You need to use values between \code{0} and \code{1}, also see +section~\ref{option:electrons}. +\begin{example}[side-by-side] + % use package `chemmacros' + \begin{MOdiagram} + \atom[H]{left}{ + 1s = {;up}, + up-el-pos = { 1sleft=.5 } + } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ch{H2}]{ + 1sMO = {.75;pair} , + up-el-pos = { 1sigma=.15 } , + down-el-pos = { 1sigma=.85 } + } + \end{MOdiagram} +\end{example} + +\subsection{\cs*{AO} Specific Customizations}\label{ssec:AO_anpassen} +These keys enable to customize orbitals created with \cs{AO}. + +\subsubsection{The \option*{label} Key}\label{key:AO_label} +The key \option{label}\Oarg{\meta{x}/\meta{y}/\meta{z}} allows you to put a +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] + \AO{s}[label={s orbital}]{0} + \AO{p}[label[y]=py,label[z]=pz]{1.5} + \end{MOdiagram} +\end{example} + +\subsubsection{The \option*{color} Key}\label{key:AO_color} +Analogous to the \option{label} key there is the key +\option{color}\Oarg{\meta{x}/\meta{y}/\meta{z}} which enables you to choose a +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] + \AO{s}[color=red]{0} + \AO{p}[color[y]=green,color[z]=cyan]{1.5} + \end{MOdiagram} +\end{example} + +\subsubsection{The \option*{up-el-pos} and \option*{down-el-pos} Keys}\label{key:AO_electrons} +Then there are the keys \option{up-el-pos}\Oarg{\meta{x}/\meta{y}/\meta{z}} +and \option{down-el-pos}\Oarg{\meta{x}/\meta{y}/\meta{z}} with which the +electrons can be shifted horizontally. You can use values between \code{0} +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] + \AO{s}[up-el-pos=.15]{0} + \AO{p}[up-el-pos[y]=.15,down-el-pos[z]=.15]{1.5} + \end{MOdiagram} +\end{example} \subsection{Energy Axis} -Last but not least one might want to add an energy axis to the diagram. For this -there is the command \cmd{EnergyAxis}. -\begin{beschreibung} - \Befehl{EnergyAxis}[] \\ - \oa{} key/value pairs to modify the axis. -\end{beschreibung} -\begin{beispiel} - \begin{MOdiagram} - \atom{left} { 1s = {;up} } - \atom{right}{ 1s = {;up} } - \molecule{ 1sMO = {.75;pair} } - \EnergyAxis - \end{MOdiagram} -\end{beispiel} -For the time being there are two keys to modify the axis. -\begin{beschreibung} - \option{title}{} axis label (default: \code{energy}). - \option{head}{<tikz-arrow-head>} arrow head; you can use the arrow heads - specified in the \TikZ library \paket{arrows} (pgfmanual v2.10 pages 256ff.) - (default: \code{>}). -\end{beschreibung} -\begin{beispiel} - \begin{MOdiagram} - \atom{left} { 1s = {;up} } - \atom{right}{ 1s = {;up} } - \molecule{ 1sMO = {.75;pair} } - \EnergyAxis[title] - \end{MOdiagram} -\end{beispiel} -\begin{beispiel} - \begin{MOdiagram} - \atom{left} { 1s = {;up} } - \atom{right}{ 1s = {;up} } - \molecule{ 1sMO = {.75;pair} } - \EnergyAxis[title=E,head=stealth] - \end{MOdiagram} -\end{beispiel} +Last but not least one might want to add an energy axis to the diagram. For +this there is the command \cs{EnergyAxis}. -\section{Examples} -The example from the beginning of section \ref{ssec:AO_MO_irgendwo}. -\begin{beispiel} - % use packages `chemmacros' and `chemfig' - \begin{MOdiagram}[names] - \atom[\lewis{0.,F}\hspace*{5mm}\lewis{4.,F}]{left}{1s=.2;up,up-el-pos={1sleft=.5}} - \atom[Xe]{right}{1s=1.25;pair} - \molecule[\ch{XeF2}]{1sMO={1/.25;pair}} - \AO(1cm){s}{0;up} - \AO(3cm){s}{0;pair} - \connect{ AO1 & AO2 } - \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{beispiel} - -\begin{beispiel}[code and float] - % use packages `chemmacros' (and `textgreek' loaded by `modiagram') - \begin{figure} - \centering - \begin{MOdiagram}[style=square,labels,names,AO-width=8pt,labels-fs=\footnotesize] - \atom[\ch{O_a}]{left}{ - 1s, 2s, 2p = {;pair,up,up} - } - \atom[\ch{O_b}]{right}{ - 1s, 2s, 2p = {;pair,up,up} - } - \molecule[\ch{O2}]{ - 1sMO, 2sMO, 2pMO = {;pair,pair,pair,up,up}, - color = { 2piy*=red, 2piz*=red } - } - \EnergyAxis +\begin{commands} + \command{EnergyAxis}[\oarg{option}] + Adds an energy axis to the diagram. \meta{options} are key/value pairs to + modify the axis. +\end{commands} + +\begin{example}[side-by-side] + \begin{MOdiagram} + \atom{left} { 1s = {;up} } + \atom{right}{ 1s = {;up} } + \molecule{ 1sMO = {.75;pair} } + \EnergyAxis + \end{MOdiagram} +\end{example} + +For the time being there are two options to modify the axis. +\begin{options} + \keyval{title}{title}\Default{energy} + the axis label. If used without value the default is used. + \keyval{head}{tikz arrow head}\Default{>} + the arrow head; you can use the arrow heads specified in the \TikZ\ library + \code{arrows} (pgfmanual v2.10 pages 256ff.) +\end{options} + +\begin{example}[side-by-side] + \begin{MOdiagram} + \atom{left} { 1s = {;up} } + \atom{right}{ 1s = {;up} } + \molecule{ 1sMO = {.75;pair} } + \EnergyAxis[title] \end{MOdiagram} - \caption{MO diagram of \ch{^3 "\textSigma-" O2}.} - \end{figure} -\end{beispiel} +\end{example} -\begin{beispiel}[code and float] - % use package `chemfig' - \begin{figure} - \centering\MOsetup{style = fancy, distance = 7cm, AO-width = 15pt, labels} +\begin{example}[side-by-side] \begin{MOdiagram} - \atom[N]{left}{ - 2p = {0;up,up,up} - } - \atom[O]{right}{ - 2p = {2;pair,up,up} - } - \molecule[NO]{ - 2pMO = {1.8,.4;pair,pair,pair,up}, - color = { 2piy*=red } - } - \EnergyAxis + \atom{left} { 1s = {;up} } + \atom{right}{ 1s = {;up} } + \molecule{ 1sMO = {.75;pair} } + \EnergyAxis[title=E,head=stealth] \end{MOdiagram} - \caption{Part of the MO diagram of \protect\Lewis{4.,NO}.} - \end{figure} -\end{beispiel} +\end{example} -\appendix -\printindex -\end{document} \ No newline at end of file +\section{Examples} +The example from the beginning of section \ref{ssec:AO_MO_irgendwo}. +\begin{example} + % use package `chemmacros' + \begin{MOdiagram}[names] + \atom[\chlewis{0.}{F}\hspace*{5mm}\chlewis{180.}{F}]{left}{ + 1s=.2;up,up-el-pos={1sleft=.5} + } + \atom[Xe]{right}{1s=1.25;pair} + \molecule[\ch{XeF2}]{1sMO={1/.25;pair}} + \AO(1cm){s}{0;up} + \AO(3cm){s}{0;pair} + \connect{ AO1 & AO2 } + \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{example} + +\begin{example}[outside] + % use package `chemmacros' + \begin{figure}[p] + \centering + \begin{MOdiagram}[style=square,labels,names,AO-width=8pt,labels-fs=\footnotesize] + \atom[\ch{O_a}]{left}{ + 1s, 2s, 2p = {;pair,up,up} + } + \atom[\ch{O_b}]{right}{ + 1s, 2s, 2p = {;pair,up,up} + } + \molecule[\ch{O2}]{ + 1sMO, 2sMO, 2pMO = {;pair,pair,pair,up,up}, + color = { 2piy*=red, 2piz*=red } + } + \EnergyAxis + \end{MOdiagram} + \caption{MO diagram of \ch{^3 "\chemSigma-" O2}.} + \end{figure} +\end{example} + +\begin{example}[outside] + % use package `chemmacros' + \begin{figure}[p] + \centering + \MOsetup{style = fancy, distance = 7cm, AO-width = 15pt, labels} + \begin{MOdiagram} + \atom[N]{left}{ + 2p = {0;up,up,up} + } + \atom[O]{right}{ + 2p = {2;pair,up,up} + } + \molecule[NO]{ + 2pMO = {1.8,.4;pair,pair,pair,up}, + color = { 2piy*=red } + } + \EnergyAxis + \end{MOdiagram} + \caption{Part of the MO diagram of \chlewis{180.}{NO}.} + \end{figure} +\end{example} + +\clearpage + +\end{document} diff --git a/Master/texmf-dist/tex/latex/modiagram/modiagram.sty b/Master/texmf-dist/tex/latex/modiagram/modiagram.sty index 4712b6e7e81..c4cc34e7c7c 100644 --- a/Master/texmf-dist/tex/latex/modiagram/modiagram.sty +++ b/Master/texmf-dist/tex/latex/modiagram/modiagram.sty @@ -28,12 +28,12 @@ % This work consists of the files modiagram.sty, modiagram_en.tex, % README and the derived file modiagram_en.pdf. % -------------------------------------------------------------------------- -\RequirePackage{ expl3 , xparse , l3keys2e , tikz , textgreek } +\RequirePackage{ expl3 , xparse , l3keys2e , tikz , chemgreek } \usetikzlibrary{calc,arrows} \ProvidesExplPackage {modiagram} - {2013/04/28} - {0.2c} + {2014/05/12} + {0.2d} {easy creation of molecular orbital diagrams} % -------------------------------------------------------------------------- @@ -203,11 +203,9 @@ % position the spin-up/spin-down el: \cs_new_protected:Npn \__MOdiagram_AO_place_electron:nn #1#2 { - \fp_set:Nn \l__MOdiagram_tmpa_fp { #2 } - \fp_compare:nNnT { \l__MOdiagram_tmpa_fp } < { 0 } + \fp_compare:nNnT { #2 } < { 0 } { \msg_error:nn { MOdiagram } { electron-placement } } - \fp_abs:N \l__MOdiagram_tmpa_fp - \fp_compare:nNnT { \l__MOdiagram_tmpa_fp } > { 1 } + \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 } } @@ -1593,7 +1591,8 @@ \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 } + \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 } @@ -1616,12 +1615,20 @@ \l__MOdiagram_AO_dim ) { - \bool_if:nT { \l__MOdiagram_AO_up_electron_bool || \l__MOdiagram_AO_x_up_electron_bool } + \bool_if:nT + { + \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 } } - \bool_if:nT { \l__MOdiagram_AO_down_electron_bool || \l__MOdiagram_AO_x_down_electron_bool } + \bool_if:nT + { + \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 } @@ -1645,12 +1652,20 @@ \l__MOdiagram_AO_dim ) { - \bool_if:nT { \l__MOdiagram_AO_up_electron_bool || \l__MOdiagram_AO_y_up_electron_bool } + \bool_if:nT + { + \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 } } - \bool_if:nT { \l__MOdiagram_AO_down_electron_bool || \l__MOdiagram_AO_y_down_electron_bool } + \bool_if:nT + { + \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 } @@ -1659,6 +1674,7 @@ { \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 ) @@ -1668,12 +1684,20 @@ \l__MOdiagram_AO_dim ) { - \bool_if:nT { \l__MOdiagram_AO_up_electron_bool || \l__MOdiagram_AO_z_up_electron_bool } + \bool_if:nT + { + \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 } } - \bool_if:nT { \l__MOdiagram_AO_down_electron_bool || \l__MOdiagram_AO_z_down_electron_bool } + \bool_if:nT + { + \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 } @@ -1682,7 +1706,8 @@ { \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: } @@ -1806,16 +1831,16 @@ \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\textsigma$@s$ } - \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 1sigma* } { 1\textsigma$^*@s$ } - \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2sigma } { 2\textsigma$@s$ } - \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2sigma* } { 2\textsigma$^*@s$ } - \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2psigma } { 2\textsigma$@x$ } - \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2psigma* } { 2\textsigma$^*@x$ } - \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2piy } { 2\textpi$@y$ } - \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2piy* } { 2\textpi$^*@y$ } - \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2piz } { 2\textpi$@z$ } - \prop_put:Nnn \l__MOdiagram_orbital_label_prop { 2piz* } { 2\textpi$^*@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 \@ @@ -2051,7 +2076,8 @@ \cs_generate_variant:Nn \__MOdiagram_tikzpicture:n { f } \tex_endinput:D -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% --------------------------------------------------------------------------- % 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 @@ -2064,12 +2090,13 @@ Version history - default node names for the arbitrary AOs - horizontal shift of electrons possible - customization of atom- and molecule names possible -2013/04/28 version 0.2c - fix: adapt to deprecated expl3 command +2013/04/28 version 0.2c - fix: adapt to deprecated expl3 command +2014/05/12 version 0.2d - fix: adapt to deprecated expl3 command + - change dependency from `textgreek' to `chemgreek' -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% TODO +TODO - 3s, 3p , 3sMO , 3pMO , 4s , sp3 - energy axis: ticks? at orbital heights? - electron configuration - localisation for the energy axis title using the translator package -- Default-Einheit (bislang cm) ändern können? \ No newline at end of file +- Default-Einheit (bislang cm) ändern können? -- cgit v1.2.3