diff options
author | Karl Berry <karl@freefriends.org> | 2011-10-28 23:41:55 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-10-28 23:41:55 +0000 |
commit | 626107c053e66c6ddd3d791fcffe417013a387a9 (patch) | |
tree | d4d6cc2110ee6f4a971d63eb75a250e861576ac4 /Master/texmf-dist/doc/latex/modiagram/modiagram_doc_en.tex | |
parent | 08521dabedd78b6b28f56c0fc227f17acfbd5daa (diff) |
modigram (28oct11)
git-svn-id: svn://tug.org/texlive/trunk@24427 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/modiagram/modiagram_doc_en.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/modiagram/modiagram_doc_en.tex | 928 |
1 files changed, 604 insertions, 324 deletions
diff --git a/Master/texmf-dist/doc/latex/modiagram/modiagram_doc_en.tex b/Master/texmf-dist/doc/latex/modiagram/modiagram_doc_en.tex index f79000a55f2..a1008bea4d5 100644 --- a/Master/texmf-dist/doc/latex/modiagram/modiagram_doc_en.tex +++ b/Master/texmf-dist/doc/latex/modiagram/modiagram_doc_en.tex @@ -1,10 +1,10 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % --------------------------------------------------------------------------- % -% - MOdiagram - modiagram_doc_en.tex - % +% - MOdiagram - modiagram_doc_de.tex - % % - easy creation of molecular orbital diagrams - % % --------------------------------------------------------------------------- % % - Clemens NIEDERBERGER - % -% - 2011/09/25 - % +% - 2011/10/27 - % % --------------------------------------------------------------------------- % % - http://www.mychemistry.eu/ - % % - contact@mychemistry.eu - % @@ -30,19 +30,48 @@ % - modiagram_doc_de.tex, README - % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass{scrartcl} -\usepackage{xparse}[2011/09/05] \usepackage[english]{babel} \usepackage[utf8]{inputenx} +\usepackage{lmodern,emerald,microtype} \usepackage[dvipsnames]{xcolor} \colorlet{code}{RawSienna} -\usepackage{modiagram,xspace,siunitx,framed,chemfig} -\usepackage{showexpl} +\usepackage{modiagram,xspace,siunitx,framed,chemfig,booktabs} \usepackage[version=3]{mhchem} \usepackage{showexpl} \lstset{ + explpreset={ + language = [LaTeX]TeX, + basicstyle = {\ttfamily\small}, + breaklines = true, + commentstyle = {\color[named]{Gray}}, + backgroundcolor = \color{yellow!20}, + numbers = left, + numberstyle = \tiny, + numberblanklines = true, + numbersep = .3em, + xleftmargin = 1em, + gobble = 1, + keywordstyle = \color{code}, + morekeywords = + { + AO, + atom, + ce, + connect, + draw, + EnergyAxis, + lewis, + Lewis, + molecule, + MOsetup, + node, + textcolor, + textSigma + } + }, language = [LaTeX]TeX, - basicstyle = {\ttfamily\small\color{code!80}}, + basicstyle = {\ttfamily}, breaklines = true, commentstyle = {\color[named]{Gray}}, backgroundcolor = \color{yellow!20}, @@ -51,7 +80,20 @@ numberblanklines = true, numbersep = .3em, xleftmargin = 1em, - gobble = 1 + gobble = 1, + moredelim = [is][\color{black}]{|}{|}, + keywordstyle = \color{code}, + morekeywords = + { + AO, + atom, + connect, + draw, + EnergyAxis, + molecule, + MOsetup, + usepackage + } } \usepackage{hyperref} @@ -72,21 +114,40 @@ } \newcommand*\MOname{\textsf{MOdiagram}\xspace} -\newcommand*\MOversion{0.1\xspace} -\newcommand*\MOdate{2011/09/25} +\newcommand*\MOversion{0.2\xspace} +\newcommand*\MOdate{2011/10/27} -\newcommand*\paket[1]{\textsf{#1}\footnote{\url{http://www.ctan.org/pkg/#1/}}} -% \newcommand*\paket[1]{\textsf{#1}} +\newcommand*\paket[1]{\textsf{#1}\footnote{\url{http://www.ctan.org/pkg/#1}}} \newcommand*\changefont[3]{\fontfamily{#1}\fontseries{#2}\fontshape{#3}\selectfont} \DeclareDocumentEnvironment{myquote}{o} {\quote\small\changefont{cmss}{m}{sl}} {\IfNoValueF{#1}{\par\noindent\parbox{\linewidth}{\raggedleft\normalfont\itshape#1}}\endquote} -\NewDocumentCommand\cmd{v}{{\color{code!80}\ttfamily#1}} \newcommand*\TikZ{\mbox{Ti\textbf{\textit{k}}Z}\xspace} -\newcommand*\bzw{\mbox{bzw.}\xspace} +\newcommand*\etc{\mbox{etc.}\xspace} +\newcommand*\ie{\mbox{i.e.}\xspace} + +\newlength\marginnotewidth +\NewDocumentCommand\marginnote { s O{TeenSpirit} m } {% + \settowidth\marginnotewidth{\small\csname ECF#2\endcsname\color{red}#3} + \addtolength\marginnotewidth{20pt} + \noindent\makebox[0cm]{\hskip-\marginnotewidth\small\csname ECF#2\endcsname\color{red}#3}% + \IfBooleanF{#1}{\hspace{\parindent}}% +} + +\NewDocumentCommand \AOinline { o m } + { + \begingroup + \IfNoValueTF{#1} + {\MOsetup{ style=square,AO-width=8pt }}% + {\MOsetup{ style=square,AO-width=8pt , #1 }}% + \begin{MOdiagram} + \AO{s}{0;#2} + \end{MOdiagram}% + \endgroup + } \begin{document} @@ -112,7 +173,7 @@ 2p = {2;pair,up,up} } \molecule[NO]{ - 2pMO = {1.8,.4;pair,pair,pair,up,,}, + 2pMO = {1.8,.4;pair,pair,pair,up}, color = { 2piy*=red } } \end{MOdiagram} @@ -120,253 +181,268 @@ \tableofcontents +\newpage \section{Licence, Requirements} \MOname v\MOversion underlies the \LaTeX\ Project Public License version 1.3 or later.\newline(\url{http://www.latex-project.org/lppl.txt}) -\MOname needs the packages \paket{expl3}, \paket{xparse}, \paket{l3keys2e}, \textsf{tikz}\footnote{\url{http://www.ctan.org/pkg/pgf/}}, \paket{amsmath} and \paket{textgreek}. Additionally the \TikZ libraries \textsf{calc} and \textsf{arrows} are loaded. +\MOname needs the packages \paket{expl3}, \paket{xparse}, \paket{l3keys2e}, \textsf{tikz}\footnote{\url{http://www.ctan.org/pkg/pgf}} and \paket{textgreek}. Additionally the \TikZ libraries \textsf{calc} and \textsf{arrows} are loaded. -It is useful to be familiar with the \paket{pgf} or the \paket{tikz} package. +Knowledge of \textsf{pgf} or \textsf{tikz} would be useful. \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 rection to the question \href{http://tex.stackexchange.com/questions/13863/molecular-orbital-diagrams-in-latex}{Molecular orbital diagrams in LaTeX}. There it says +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}{Molecular orbital diagrams in LaTeX}. There it says \begin{myquote} 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{myquote} -The problem was solved using \TikZ, since no package existed for that purpose. \MOname is intended to fill this gap. +The problem was solved using \TikZ, since no package existed for that purpose. For one thing \MOname 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. \MOname took care of that. \section{Main Commands} -Every molecular orbital (MO) diagrams are created using the environment \cmd=MOdiagram= . Inside this environment two commands are important to begin with. +All molecular orbital (MO) diagrams are created using the environment \lstinline=MOdiagram=. When the commands are described in the following sections, arguments are marked with (o) or (m) meaning \emph{optional} or \emph{mandatory} argument. \subsection{The \texttt{\textbackslash atom} Command} \begin{framed} - \cmd=\atom[<name>]{<pos>}{<AO-spec>}= + \lstinline=\atom[<name>]{<pos>}{<|AO|-spec>}= \begin{itemize}\small - \item\cmd=<name>= (o) caption of the atom - \item\cmd=<pos>= (m) on the left or the right in the diagram - \item\cmd=<AO-spec>= (m) specifications of the atomic orbitals (AO) + \item\lstinline=<name>= (o) caption of the atom + \item\lstinline=<pos>= (m) on the left or the right in the diagram + \item\lstinline=<|AO|-spec>= (m) specifications of the atomic orbitals (AO) \end{itemize} \end{framed} Let's take a look at an example: - \begin{LTXexample} \begin{MOdiagram} \atom{right}{ 1s = { 0; pair} , 2s = { 1; pair} , - 2p = {1.5; up, down, } + 2p = {1.5; up, down } } \end{MOdiagram} \end{LTXexample} - -As you can see, the argument \cmd=<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: +As you can see, the argument \lstinline=<|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{framed} \begin{itemize} - \item\cmd+1s={<rel. energy>; <el-spec>}+ - \item\cmd+2s={<rel. energy>; <el-spec>}+ - \item\cmd+2p={<rel. energy>; <x el-spec>, <y el-spec>, <z el-spec>}+ + \item\lstinline+1s={<rel. energy>; <el-spec>}+ + \item\lstinline+2s={<rel. energy>; <el-spec>}+ + \item\lstinline+2p={<rel. energy>; <x el-spec>, <y el-spec>, <z el-spec>}+ \end{itemize} \end{framed} -\cmd=<el-spec>= can have the values \cmd=pair=, \cmd=up= and \cmd=down= or can be left empty. \cmd=<rel. energy>= actually is the $y$ coordinate ansd shifts the AO vertically by \cmd=<rel. energy>= \si{\centi\metre}. - -The argument \cmd=<pos>= is important, when p orbitals are used. For instance compare the following example to the one before: +\lstinline=<el-spec>= can have the values \lstinline=pair=, \lstinline=up= and \lstinline=down= or can be left empty. \lstinline=<rel. energy>= actually is the $y$ coordinate and shifts the AO vertically by \lstinline=<rel. energy>= \si{\centi\metre}. +The argument \lstinline=<pos>= is important, when p orbitals are used. For instance compare the following example to the one before: \begin{LTXexample} \begin{MOdiagram} \atom{left}{ 1s = { 0; pair} , 2s = { 1; pair} , - 2p = {1.5; up, down, } + 2p = {1.5; up, down } } \end{MOdiagram} \end{LTXexample} - 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 canbe adjusted individually, see page \pageref{option:distance}. - -\begin{LTXexample} +\begin{LTXexample}[pos=b] \begin{MOdiagram} \atom{left}{ 1s = { 0; pair} , 2s = { 1; pair} , - 2p = {1.5; up, down, } + 2p = {1.5; up, down } } \atom{right}{ 1s = { 0; pair} , 2s = { 1; pair} , - 2p = {1.5; up, down, } + 2p = {1.5; up, down } } \end{MOdiagram} \end{LTXexample} +With the command \lstinline=\molecule= (section \ref{ssec:molecule}) the reason for the shift becomes clear. -With the next command the reason for the shift becomes clear. +\marginnote{NEW}Any of the arguments for the AO can be left empty or be omitted. +\begin{LTXexample}[pos=b] + Without argument: default height, full: + \begin{MOdiagram} + \atom{left}{1s, 2s, 2p} + \end{MOdiagram} +\end{LTXexample} +\begin{LTXexample}[pos=b] + empty argument: default height, empty: + \begin{MOdiagram} + \atom{left}{1s=, 2s=, 2p=} + \end{MOdiagram} +\end{LTXexample} +\begin{LTXexample}[pos=b] + using some values:\\ + \begin{MOdiagram} + \atom{left}{1s, 2s=1, 2p={;,up} } + \end{MOdiagram} +\end{LTXexample} -\subsection{The \texttt{\textbackslash molecule} command} +\subsection{The \texttt{\textbackslash molecule} Command}\label{ssec:molecule} \begin{framed} - \cmd=\molecule[<name>]{<MO-spec>}= + \lstinline=\molecule[<name>]{<MO-spec>}= \begin{itemize}\small - \item\cmd=<name>= (o) caption of the molekule - \item\cmd=<MO-spec>= (m) specifications of the molecular orbitals (MO) + \item\lstinline=<name>= (o) caption of the molecule + \item\lstinline=<MO-spec>= (m) specifications of the molecular orbitals (MO) \end{itemize} \end{framed} An example first: - \begin{LTXexample} \begin{MOdiagram} - \atom{left} { 1s = { 0; up} } - \atom{right}{ 1s = { 0; up} } - \molecule { 1sMO = {.75; pair, } } + \atom{left} { 1s = { 0; up } } + \atom{right}{ 1s = { 0; up } } + \molecule { 1sMO = {.75; pair } } \end{MOdiagram} \end{LTXexample} +The command \lstinline=\molecule= connects the AO with the bonding and anti-bondung MO. \lstinline=\molecule= can only be used \emph{after} one has set \emph{both} atoms, since the orbitals, that should be connected, must be known. -The command \cmd=\molecule= connects the AO with the bonding and anti-bondung MO. \cmd=\molecule= can only be used \emph{after} one has set \emph{both} atoms, since the orbitals, that should be connected, must be known. - -The argument \cmd=<MO-spec>= accepts a comma separated list of key/value pairs: +The argument \lstinline=<MO-spec>= accepts a comma separated list of key/value pairs: \begin{framed} \begin{itemize} - \item\cmd+1sMO={<energy gain>; <s el-spec>, <s* el-spec>}+ (connects the AO specified by \cmd=1s=) - \item\cmd+2sMO={<energy gain>; <s el-spec>, <s* el-spec>}+ (connects the AO specified by \cmd=2s=) - \item\cmd+2pMO={<s energy gain>, <p energy gain>; <s el-spec>, <py el-spec>, <pz el- spec>, <py* el-spec>, <pz* el-spec>, <s* el-spec>}+ (connects the AO specified by \cmd=2p=) + \item\lstinline+1sMO={<energy gain>/<energy loss>; <s el-spec>, <s* el-spec>}+ (connects the AO specified by \lstinline=1s=) + \item\lstinline+2sMO={<energy gain>/<energy loss>; <s el-spec>, <s* el-spec>}+ (connects the AO specified by \lstinline=2s=) + \item\lstinline+2pMO={<s energy gain>/<s energy loss>, <p energy gain>/<p energy loss>; <s el-spec>, <py el-spec>, <pz el- spec>, <py* el-spec>, <pz* el-spec>, <s* el-spec>}+ (connects the AO specified by \lstinline=2p=) \end{itemize} \end{framed} Obviously the regarding AO must have been set in order to connect them. This for example won't work: -\begin{lstlisting} +\begin{lstlisting}[basicstyle = {\ttfamily\small}] \begin{MOdiagram} - \atom{left} { 1s = { 0; } } - \atom{right}{ 1s = { 0; } } - \molecule { 2sMO = {.75; , } } + \atom{left} { 1s = 0 } + \atom{right}{ 1s = 0 } + \molecule { 2sMO = .75 } \end{MOdiagram} \end{lstlisting} -The value used in \cmd=<energy gain>= determines how many \si{\centi\metre} the bonding MO lies below the lower AO or how many \si{\centi\metre} the anti-bondung MO lies above the higher AO. -% +The value used in \lstinline=<energy gain>= determines how many \si{\centi\metre} the bonding MO lies below the lower AO or how many \si{\centi\metre} the anti-bondung MO lies above the higher AO. + \begin{LTXexample}[pos=b] same level: \begin{MOdiagram} - \atom{left} { 1s = { 0; up} } - \atom{right}{ 1s = { 0; up} } - \molecule { 1sMO = {.75; pair, } } + \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, } } + \atom{left} { 1s = { 0; up } } + \atom{right}{ 1s = { 1; up } } + \molecule { 1sMO = {.25; pair } } + \end{MOdiagram} +\end{LTXexample} +\marginnote{NEW}If you specify \lstinline=<energy loss>=, you can create non-symmetrical splittings. Then, the first value (\lstinline=<energy gain>=) is used for the bonding MO and the second value (\lstinline=<energy loss>=) is used for the anti-bonding MO. +\begin{LTXexample}[pos=b] + \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{LTXexample} -% -Please be aware, that you have to specify \emph{two} such values with \cmd=2pMO=: the splitting of the \textsigma\ orbitals and the splitting of the \textpi\ orbitals. +Please be aware, that you have to specify \emph{two} such values or pairs with \lstinline=2pMO=: the splitting of the \textsigma\ orbitals and the splitting of the \textpi\ orbitals. \begin{LTXexample} \begin{MOdiagram} - \atom{left} { 2p = { 0; up, up , } } - \atom{right}{ 2p = { 1; up, up , } } - \molecule { 2pMO = { 1.5, .75; pair, up, up , , , } } + \atom{left} { 2p = { 0; up, up } } + \atom{right}{ 2p = { 1; up, up } } + \molecule { 2pMO = { 1.5, .75; pair, up, up } } \end{MOdiagram} \end{LTXexample} The complete MO diagram for triplett dioxygen now could look something like that: - \begin{LTXexample} \begin{MOdiagram} \atom{left}{ - 1s = {0;pair}, - 2s = {2;pair}, - 2p = {5;pair,up,up} + 1s, 2s, 2p = {;pair,up,up} } \atom{right}{ - 1s = {0;pair}, - 2s = {2;pair}, - 2p = {5;pair,up,up} + 1s, 2s, 2p = {;pair,up,up} } \molecule{ - 1sMO = {.5;pair,pair}, - 2sMO = {.5;pair,pair}, - 2pMO = {1.5,.5;pair,pair,pair,up,up,} + 1sMO, 2sMO, 2pMO = {;pair,pair,pair,up,up} } \end{MOdiagram} \end{LTXexample} - +\newpage \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 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] +\begin{MOdiagram}[distance=6cm,AO-width=20pt,labels-fs=\tt\footnotesize,labels-style={yshift=10pt}] \atom{left}{ - 1s={0;}, - 2s={2;}, - 2p={5;,,}, + 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;,,}, + 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;,,,,,}, + 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{LTXexample} \begin{MOdiagram} - \atom{left} { 1s = {0; } } - \atom{right}{ 1s = {0; } } - \molecule { 1sMO = {.75; , } } - \draw[<->,red,semithick] (1sigma) -- (1sigma*) ; + \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{LTXexample} \begin{LTXexample} \begin{MOdiagram} - \atom{left} { 1s = {0; } } - \atom{right}{ 1s = {0; } } - \molecule { 1sMO = {.75; , } } - \draw[draw=blue,fill=blue!20,opacity=.5] (1sigma*) circle (8pt); + \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{LTXexample} - -\subsection{Placing AO and MO Arbitrarily} +\subsection{Placing AO and MO Arbitrarily}\label{ssec:AO_MO_irgendwo} The standard orbitals are not always sufficient in order to draw a correct MO diagram. For example in the MO diagram of \ce{XeF2} one would need this 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}{} - \atom[Xe]{right}{} - \molecule[\ce{XeF2}]{} - \AO[a](1cm){s}{0;up} - \AO[b](1cm){s}{.25;up} - \AO[c](3cm){s}{-1;pair} - \AO[d](3cm){s}{0;pair} - \AO[e](3cm){s}{1.5;} - \AO[f](5cm){s}{1.25;pair} - \connect{ a & d , b & c , b & e , c & f , e & f } - \node[right,xshift=4mm] at (c) {\footnotesize bonding}; - \node[above] at (d.90) {\footnotesize not bonding}; - \node[above] at (e.90) {\footnotesize anti-bonding}; -\end{MOdiagram} + \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[\ce{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 AO: \begin{framed} - \cmd=\AO[<name>](<xshift>){<type>}{<energy>;<el-spec>}= + \lstinline+\AO[<name>](<xshift>){<type>}[<key = val>]{<energy>;<el-spec>}+ \begin{itemize}\small - \item\cmd=<name>= (o) name of the node - \item\cmd=<xshift>= (o) vertical position of the Orbitals, a \TeX\ dimension. - \item\cmd=<type>= (m) \cmd=s= or \cmd=p= - \item\cmd=<AO-spec>= (m) specification of the AO + \item\lstinline=<name>= (o) name of the node; if not specified, \lstinline=|AO|#= is used where \lstinline=#= is a consecutive number. + \item\lstinline=<xshift>= (o) vertical position of the orbitals, a \TeX\ dimension. + \item\lstinline=<type>= (m) \lstinline=s= or \lstinline=p= + \item\lstinline+<key = val>+ (o) key/value pairs, with which the AO can be customized, see section \ref{ssec:AO_anpassen}. + \item\lstinline=<|AO|-spec>= (m) specification of the AO \end{itemize} \end{framed} -Depending on the \cmd=<type>= one s or three p porbitals are drawn. +\newpage +Depending on the \lstinline=<type>= one s or three p orbitals are drawn. \begin{LTXexample} \begin{MOdiagram} \AO{s}{0;} @@ -374,72 +450,83 @@ Depending on the \cmd=<type>= one s or three p porbitals are drawn. \end{MOdiagram} \end{LTXexample} -Please notice, that \cmd=<el-spec>= only awaits one specification with the type \cmd=s=, but three with the type \cmd=p=, separated with commas. - -If one wants to place such an AO at the position of an atom, one has to know their \cmd=<xshift>=. They have these predefined values (also see section \ref{orbital-positionen}):\label{xshift} +If one wants to place such an AO at the position of an atom, one has to know their \lstinline=<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} \end{itemize} - \begin{LTXexample} \begin{MOdiagram} - \atom{left} {1s={0;}} - \atom{right}{1s={0;}} - \molecule {1sMO={1;,}} - \AO(1cm){s}{2;pair} - \AO(3cm){s}{2;pair} - \AO(5cm){s}{2;pair} + \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{LTXexample} - -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 \cmd=AO-width= (see section \ref{option:AO-width}): - +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 \lstinline=|AO|-width= (see section \ref{option:AO-width}): \begin{LTXexample} \begin{MOdiagram} - \atom{left} {2p={0;,,}} - \atom{right}{2p={0;,,}} + \atom{left} {2p=0} + \atom{right}{2p=0} % above the left atom: - \AO(1cm) {s}{ .5;pair} + \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;pair} + \AO(5cm) {s}{ .5} \AO(5cm+20pt){s}{ 1;up} \AO(5cm+40pt){s}{1.5;down} \end{MOdiagram} \end{LTXexample} -The AO created with \cmd=\AO= also can be connected. For this you can use the \TikZ command \cmd=\draw=, of course: - +The AO created with \lstinline=\AO= also can be connected. For this you can use the \TikZ command \lstinline=\draw= , of course. You can use the predefined node names \ldots \begin{LTXexample} \begin{MOdiagram} - \AO[a]{s}{0;} \AO[b](2cm){s}{1;} - \AO[c]{s}{2;} \AO[d](2cm){s}{1.5;} - \draw (a) -- (b) (c) -- (d); + \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{LTXexample} +\ldots\ or use own node names +\begin{LTXexample} + \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{LTXexample} +The predefined names are \lstinline=AO1=, \lstinline=AO2= \etc for the type \lstinline=s= and \lstinline=AO1x=, \lstinline=AO1y=, \lstinline=AO1z=, \lstinline=AO2x= \etc for the type \lstinline=p=. Nodes of the type \lstinline=p= get a \lstinline=x=, \lstinline=y= or a \lstinline=z= if you specify your own name, too. +\begin{LTXexample}[pos=b] + \begin{MOdiagram} + \AO{p}{0} + \draw[<-,shorten >=5pt] (AO1y.-90) -- ++ (.5,-1) node {y}; + \end{MOdiagram} + und + \begin{MOdiagram} + \AO[A]{p}{0} + \draw[<-,shorten >=5pt] (Ay.-90) -- ++ (.5,-1) node {y}; \end{MOdiagram} \end{LTXexample} -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=. +However, if you want the lines to be drawn in the same style as the ones created by \lstinline=\molecule=\footnote{which can be customized, see page \pageref{option:lines}}, you should use the command \lstinline=\connect=. \begin{framed} - \cmd=\connect{<AO-connect>}= + \lstinline=\connect{<|AO-connect|>}= \begin{itemize}\small - \item\cmd=<AO-connect>= (m) comma separated list of node name pairs connected with \cmd=&=. + \item\lstinline=<|AO-connect|>= (m) comma separated list of node name pairs connected with \lstinline=&= \end{itemize} \end{framed} -This command expects a comma separated list of node name pairs, that are to be connected. The names have to be connected with a \cmd=&=: - +This command expects a comma separated list of node name pairs, that are to be connected. The names have to be connected with a \lstinline=&=: \begin{LTXexample} \begin{MOdiagram} - \AO[a]{s}{0;} \AO[b](2cm){s}{1;} - \AO[c]{s}{2;} \AO[d](2cm){s}{1.5;} - \connect{ a & b, c & d } + \AO{s}{0;} \AO(2cm){s}{1;} + \AO{s}{2;} \AO(2cm){s}{1.5;} + \connect{ AO1 & AO2, AO3 & AO4 } \end{MOdiagram} \end{LTXexample} - -Some things still need to be said: \cmd=\connect= adds the anchor \cmd=east= to the first name and the anchor \cmd=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: - +Some things still need to be said: \lstinline=\connect= adds the anchor \lstinline=east= to the first name and the anchor \lstinline=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{LTXexample} \begin{tikzpicture} \draw (0,0) node (a) {a} ++ (1,0) node (b) {b} @@ -448,233 +535,363 @@ Some things still need to be said: \cmd=\connect= adds the anchor \cmd=east= to \end{tikzpicture} \end{LTXexample} - \subsection{The Positioning Scheme}\label{orbital-positionen} -The figure below shows the values of the $x$ coordinates of the orbitals, depending in the values of \cmd=<distance>= (\cmd=<dist>=) and \cmd=<AO-width>= (\cmd=<AO>=). In sections \ref{option:distance} and \ref{option:AO-width} these lengths and how they can be changed are discussed. - -\begin{MOdiagram}[distance=6cm,AO-width=25pt,labels-fs=\tt\footnotesize,labels-style={text width=40pt,align=center}] +The figure below shows the values of the $x$ coordinates of the orbitals, depending in the values of \lstinline=<distance>= (\lstinline=<dist>=) and \lstinline=<|AO|-width>= (\lstinline=<|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=\tt\scriptsize,labels-style={text width=40pt,align=center,yshift=11pt}] \atom{left}{ - 1s={0;}, - 2s={3;}, - 2p={8;,,}, - label={ 1sleft={1cm}, 2sleft={1cm}, 2pxleft={1cm}, 2pyleft={1cm - 2*<AO>}, 2pzleft={1cm - 4*<AO>} } } + 1s=0, + 2s=2, + 2p=5.5, + label={ 1sleft={1cm}, 2sleft={1cm}, 2pxleft={1cm - 4*<AO>}, 2pyleft={1cm - 2*<AO>}, 2pzleft={1cm} } } \atom{right}{ - 1s={0;}, - 2s={3;}, - 2p={8;,,}, + 1s=0, + 2s=2, + 2p=5.5, label={ 1sright={1cm + <dist>}, 2sright={1cm + <dist>}, 2pxright={1cm+ <dist>}, 2pyright={1cm + <dist> + 2*<AO>}, 2pzright={1cm + <dist> + 4*<AO>} } } \molecule{ - 1sMO={.75;,}, - 2sMO={.75;,}, - 2pMO={3,1;,,,,,}, + 1sMO=.5, + 2sMO=.5, + 2pMO={2,.75}, label={ 1sigma={.5*<dist> + 1cm}, 1sigma*={.5*<dist> + 1cm}, 2sigma={.5*<dist> + 1cm}, 2sigma*={.5*<dist> + 1cm}, 2psigma={.5*<dist> + 1cm}, 2psigma*={.5*<dist> + 1cm}, 2piy={.5*<dist> + 1cm - <AO>}, 2piy*={.5*<dist> + 1cm - <AO>}, 2piz={.5*<dist> + 1cm + <AO>}, 2piz*={.5*<dist> + 1cm + <AO>} } } \end{MOdiagram} +\end{center} +\newpage +\subsection{Default Values} +\marginnote*{NEW}If you leave the arguments (or better: values) for the specification of the AO or 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 AO / 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 \lstinline=\AO= command (page \pageref{ssec:AO_MO_irgendwo}); It needs a value for \lstinline=<energy>=, though. +\begin{center}\small +\begin{tabular}{>{\ttfamily}l>{\ttfamily}l>{\ttfamily}l} + \toprule\bfseries <type> & \bfseries <el-spec> \\\midrule + s & pair \\ + p & pair,pair,pair \\\bottomrule +\end{tabular} +\end{center} +Compare these examples: +\begin{LTXexample} + \begin{MOdiagram} + \atom{left} { 1s={0;pair} } + \atom{right}{ 1s } + \end{MOdiagram} + + \hrulefill + + \begin{MOdiagram} + \atom{left}{ 1s=1 } + \atom{right}{ 1s= } + \end{MOdiagram} +\end{LTXexample} \section{Customization} -\subsection{Environment Options} +Th options of the section \ref{ssec:umgebungs_optionen} can be set global as package option, \ie with \lstinline+\usepackage[<key = val>]{modiagram}+, or via the setup command \lstinline+\MOsetup{<key = val>}+. + +\subsection{Environment Options}\label{ssec:umgebungs_optionen} There are some options with which the layout of the MO diagrams can be changed: \begin{itemize} - \item\cmd+style=<type>+ change the style of the orbitals and the connecting lines, section \ref{option:style}. - \item\cmd+distance=<dim>+ distance betwen left and right atom, section \ref{option:distance}. - \item\cmd+AO-width=<dim>+ change the width of orbitals, section \ref{option:AO-width}. - \item\cmd+lines=<tikz>+ change the \TikZ style of the connecting lines, section \ref{option:lines}. - \item\cmd+names=<bool>+ add captions to the atoms and the molecule, section \ref{option:names}. - \item\cmd+labels=<bool>+ add default labels to the orbitals, section \ref{option:labels}. - \item\cmd+labels-fs=<cs>+ change the font size of the labels, section \ref{option:labels-fs}. - \item\cmd+labels-style=<tikz>+ change the \TikZ style of the labels, section \ref{option:labels-style}. + \item\lstinline+style=<type>+ change the style of the orbitals and the connecting lines, section \ref{option:style}. + \item\lstinline+distance=<dim>+ distance betwen left and right atom, section \ref{option:distance}. + \item\lstinline+|AO|-width=<dim>+ change the width of orbitals, section \ref{option:AO-width}. + \item\lstinline+el-sep=<num>+ distance between the electron pair arrows, section \ref{option:electrons}. + \item\lstinline+up-el-pos=<num>+ position of the spin-up arrow, section \ref{option:electrons}. + \item\lstinline+down-el-pos=<num>+ position of the spin-down arrow, section \ref{option:electrons}. + \item\lstinline+lines=<tikz>+ change the \TikZ style of the connecting lines, section \ref{option:lines}. + \item\lstinline+names=<bool>+ add captions to the atoms and the molecule, section \ref{option:names}. + \item\lstinline+names-style=<tikz>+ change the \TikZ style of the captions, section \ref{option:names_style}. + \item\lstinline+names-style-add=<tikz>+ change the \TikZ style of the captions, section \ref{option:names_style}. + \item\lstinline+labels=<bool>+ add default labels to the orbitals, section \ref{option:labels}. + \item\lstinline+labels-fs=<cs>+ change the font size of the labels, section \ref{option:labels-fs}. + \item\lstinline+labels-style=<tikz>+ change the \TikZ style of the labels, section \ref{option:labels-style}. \end{itemize} -They all are discussed in the following sections. They are used either as option of the environment +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{lstlisting} \begin{MOdiagram}[<key = value>] ... \end{MOdiagram} \end{lstlisting} -or as argument of the setup command -\begin{framed} - \cmd+\MOsetup{<key = value>}+ - \begin{itemize}\small - \item\cmd+<key = val>+ (m) comma separated key/value list - \end{itemize} -\end{framed} \subsubsection{Option \texttt{style}}\label{option:style} -There are four different styles, which can be chosen. +There are five different styles, which can be chosen. \begin{itemize} - \item\cmd+style=plain+ \AOinline[style=plain]{pair} (default) - \item\cmd+style=square+ \AOinline[style=square]{pair} - \item\cmd+style=round+ \AOinline[style=round]{pair} - \item\cmd+style=fancy+ \AOinline[style=fancy]{pair} + \item\lstinline+style=plain+ \AOinline[style=plain]{pair} (default) + \item\lstinline+style=square+ \AOinline[style=square]{pair} + \item\lstinline+style=circle+ \AOinline[style=circle]{pair} + \item\lstinline+style=round+ \AOinline[style=round]{pair} + \item\lstinline+style=fancy+ \AOinline[style=fancy]{pair} \end{itemize} Let's take the MO diagram of \ce{H2} to illustrate the different styles: - \begin{LTXexample} - % use package 'mhchem' - \begin{MOdiagram}[style=plain]% Default - \atom[H]{left} { 1s = {0;up} } - \atom[H]{right}{ 1s = {0;up} } - \molecule[\ce{H2}]{ 1sMO = {.75;pair,} } + % use package `mhchem' + \begin{MOdiagram}[style=plain]% default + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } \end{MOdiagram} \end{LTXexample} \begin{LTXexample} - % use package 'mhchem' + % use package `mhchem' \begin{MOdiagram}[style=square] - \atom[H]{left} { 1s = {0;up} } - \atom[H]{right}{ 1s = {0;up} } - \molecule[\ce{H2}]{ 1sMO = {.75;pair,} } + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{LTXexample} +\marginnote*{NEW}\begin{LTXexample} + % use package `mhchem' + \begin{MOdiagram}[style=circle] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } \end{MOdiagram} \end{LTXexample} \begin{LTXexample} - % use package 'mhchem' + % use package `mhchem' \begin{MOdiagram}[style=round] - \atom[H]{left} { 1s = {0;up} } - \atom[H]{right}{ 1s = {0;up} } - \molecule[\ce{H2}]{ 1sMO = {.75;pair,} } + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } \end{MOdiagram} \end{LTXexample} \begin{LTXexample} - % use package 'mhchem' + % use package `mhchem' \begin{MOdiagram}[style=fancy] - \atom[H]{left} { 1s = {0;up} } - \atom[H]{right}{ 1s = {0;up} } - \molecule[\ce{H2}]{ 1sMO = {.75;pair,} } + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } \end{MOdiagram} \end{LTXexample} - \subsubsection{Option \texttt{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 \cmd+distance=<dim>+ the length can be adjusted. With this, the position of the right atom is changed to \cmd=1cm + <dim>= and the position of the molecule is changed to \cmd=0.5*(1cm + <dim>)=, also see page Seite \pageref{xshift} and section \ref{orbital-positionen}. - +Depending on labels and captions the \SI{4}{\centi\metre} by which the right and left atom are separated can be too small. With \lstinline+distance=<dim>+ he length can be adjusted. With this, the position of the right atom is changed to \lstinline=1cm + <dim>= and the position of the molecule is changed to \lstinline=0.5*(1cm + <dim>)=, also see page \pageref{xshift} and section \ref{orbital-positionen}. \begin{LTXexample} - % use package 'mhchem' + % use package `mhchem' \begin{MOdiagram}[distance=6cm] - \atom[H]{left} { 1s = {0;up} } - \atom[H]{right}{ 1s = {0;up} } - \molecule[\ce{H2}]{ 1sMO = {.75;pair,} } + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } \end{MOdiagram} \end{LTXexample} - \subsubsection{Option \texttt{AO-width}}\label{option:AO-width} -The length \cmd=AO-width= sets the length of the horizontal line in a orbital displayed with the \cmd=plain= style. It's default value is \SI{10}{pt}. - +The length \lstinline=|AO|-width= sets the length of the horizontal line in a orbital displayed with the \lstinline=plain= style. It's default value is \SI{10}{pt}. \begin{LTXexample} - % use package 'mhchem' + % use package `mhchem' \begin{MOdiagram}[AO-width=15pt] - \atom[H]{left} { 1s = {0;up} } - \atom[H]{right}{ 1s = {0;up} } - \molecule[\ce{H2}]{ 1sMO = {.75;pair,} } + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } \end{MOdiagram} \end{LTXexample} \begin{LTXexample} - % use package 'mhchem' + % use package `mhchem' \begin{MOdiagram}[style=fancy,AO-width=15pt] - \atom[H]{left} { 1s = {0;up} } - \atom[H]{right}{ 1s = {0;up} } - \molecule[\ce{H2}]{ 1sMO = {.75;pair,} } + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } \end{MOdiagram} \end{LTXexample} +By changing the value of \lstinline=|AO|-width= the positions of the p and the \textpi\ orbitals also change, see section \ref{orbital-positionen}. -By changing the value of \cmd=AO-width= the positions of the p and the \textpi\ orbitals also change, see section \ref{orbital-positionen}. +\subsubsection{Optionen \texttt{el-sep}, \texttt{up-el-pos} und \texttt{down-el-pos}}\label{option:electrons} +\marginnote*{NEW}These three options change the horizontal positions of the arrows representing the electrons in a AO/MO. The option \lstinline+el-sep=<num>+ needs a value between \lstinline=0= and \lstinline=1=. \lstinline=0= means \emph{no} distance between the arrows and \lstinline=1= \emph{full} distance (with respect to the langth \lstinline=|AO|-width=, see section \ref{option:AO-width}). +\begin{LTXexample} + % use package `mhchem' + \begin{MOdiagram}[el-sep=.2]% default + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{LTXexample} +\begin{LTXexample} + % use package `mhchem' + \begin{MOdiagram}[el-sep=0] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{LTXexample} +\begin{LTXexample} + % use package `mhchem' + \begin{MOdiagram}[el-sep=1] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{LTXexample} +The options \lstinline+up-el-pos=<num>+ and \lstinline+down-el-pos=<num>+ can be used alternatively to place the spin-up and spin-down electron, respectively. Again they need values between \lstinline=0= and \lstinline=1=. This time \lstinline=0= means \emph{on the left} and \lstinline=1= means \emph{on the right} +\begin{LTXexample} + % use package `mhchem' + \begin{MOdiagram}[up-el-pos=.4,down-el-pos=.6]% default + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{LTXexample} +\begin{LTXexample} + % use package `mhchem' + \begin{MOdiagram}[up-el-pos=.333,down-el-pos=.667] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{LTXexample} +\begin{LTXexample} + % use package `mhchem' + \begin{MOdiagram}[up-el-pos=.7,down-el-pos=.3] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{LTXexample} \subsubsection{Option \texttt{lines}}\label{option:lines} -The option \cmd=lines= can be used to modify the \TikZ style of the connecting lines: - +The option \lstinline=lines= can be used to modify the \TikZ style of the connecting lines: \begin{LTXexample} - % use package 'mhchem' + % use package `mhchem' \begin{MOdiagram}[lines={gray,thin}] - \atom[H]{left} { 1s = {0;up} } - \atom[H]{right}{ 1s = {0;up} } - \molecule[\ce{H2}]{ 1sMO = {.75;pair,} } + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } \end{MOdiagram} \end{LTXexample} - \subsubsection{Option \texttt{names}}\label{option:names} -If you use the option \cmd=names=, the atoms and the molecule get captions, if you have used the optional \cmd=<name>= argument of \cmd=\atom= and/or \cmd=\molecule=. - +If you use the option \lstinline=names=, the atoms and the molecule get captions, if you have used the optional \lstinline=<name>= argument of \lstinline=\atom= and/or \lstinline=\molecule=. \begin{LTXexample} - % use package 'mhchem' + % use package `mhchem' \begin{MOdiagram}[names] - \atom[H]{left} { 1s = {0;up} } - \atom[H]{right}{ 1s = {0;up} } - \molecule[\ce{H2}]{ 1sMO = {.75;pair,} } + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } \end{MOdiagram} \end{LTXexample} +\subsubsection{Oprionen \texttt{names-style} und \texttt{names-style-add}}\label{option:names_style} +\marginnote*{NEW}These options enable to customize the style of the captions of the atoms and of the molecule. By default this setting is used: \lstinline+\names-style={anchor=base}+\footnote{Please see "`\TikZ und PGF -- Manual for Version 2.10"' p.\,183 section 16.4.4 (pgfmanual.pdf) for the meaning}. +\begin{LTXexample} + % use package `mhchem' + \begin{MOdiagram}[names,names-style={draw=blue}] + \atom[p]{left} { 1s = {;up} } + \atom[b]{right}{ 1s = {;up} } + \molecule[\ce{X2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{LTXexample} +With this the default setting is overwritten. As you can see, this destroys the vertical alignment of the nodes. In order to avoid that you can for example specify \lstinline=text height= and \lstinline=text depth= yourself \ldots +\begin{LTXexample} + % use package `mhchem' + \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[\ce{X2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{LTXexample} +\ldots, add the \lstinline=anchor= again \ldots +\begin{LTXexample} + % use package `mhchem' + \begin{MOdiagram}[names,names-style={anchor=base, draw=blue}] + \atom[p]{left} { 1s = {;up} } + \atom[b]{right}{ 1s = {;up} } + \molecule[\ce{X2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{LTXexample} +\ldots\ or use the option \lstinline=names-style-add=. It doesn't overwrite the current setting, but appends the new declaration: +\begin{LTXexample} + % use package `mhchem' + \begin{MOdiagram}[names,names-style-add={draw=blue}] + \atom[p]{left} { 1s = {;up} } + \atom[b]{right}{ 1s = {;up} } + \molecule[\ce{X2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{LTXexample} +\begin{LTXexample}[pos=b] + \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[\ce{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[\ce{X2}]{ 1sMO = {.75;pair} } + \end{MOdiagram} +\end{LTXexample} \subsubsection{Option \texttt{labels}}\label{option:labels} -If you use the option \cmd=labels=, predefined labels are written below the orbitals. These labels can be changed, see section \ref{key:label}. - +If you use the option \lstinline=labels=, predefined labels are written below the orbitals. These labels can be changed, see section \ref{key:label}. \begin{LTXexample} - % use package 'mhchem' + % use package `mhchem' \begin{MOdiagram}[labels] - \atom[H]{left} { 1s = {0;up} } - \atom[H]{right}{ 1s = {0;up} } - \molecule[\ce{H2}]{ 1sMO = {.75;pair,} } + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } \end{MOdiagram} \end{LTXexample} - \subsubsection{Option \texttt{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 \cmd=labels-fs=. - +Labels are set with the font size \lstinline=\small=. If you want to change that, you can use the option \lstinline=labels-fs=. \begin{LTXexample} - % use package 'mhchem' + % use package `mhchem' \begin{MOdiagram}[labels,labels-fs=\footnotesize] - \atom[H]{left} { 1s = {0;up} } - \atom[H]{right}{ 1s = {0;up} } - \molecule[\ce{H2}]{ 1sMO = {.75;pair,} } + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } \end{MOdiagram} \end{LTXexample} - This also allows you to change the font style or font shape of the labels. - \begin{LTXexample} - % use package 'mhchem' + % use package `mhchem' \begin{MOdiagram}[labels,labels-fs=\sffamily\footnotesize] - \atom[H]{left} { 1s = {0;up} } - \atom[H]{right}{ 1s = {0;up} } - \molecule[\ce{H2}]{ 1sMO = {.75;pair,} } + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } \end{MOdiagram} \end{LTXexample} - \subsubsection{Option \texttt{labels-style}}\label{option:labels-style} -The option \cmd=labels-style= changes the \TikZ style of the nodes, within which the labels are written. - +The option \lstinline=labels-style= changes the \TikZ style of the nodes, within which the labels are written. \begin{LTXexample} - % use package 'mhchem' - \begin{MOdiagram}[labels,labels-style={blue}] - \atom[H]{left} { 1s = {0;up} } - \atom[H]{right}{ 1s = {0;up} } - \molecule[\ce{H2}]{ 1sMO = {.75;pair,} } + % use package `mhchem' + \begin{MOdiagram}[labels,labels-style={blue,yshift=4pt}] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ 1sMO = {.75;pair} } \end{MOdiagram} \end{LTXexample} - \subsection{\texttt{\textbackslash atom} and \texttt{\textbackslash molecule} Specific Customizations} \subsubsection{The \texttt{label} Key}\label{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 \cmd=label=. This key is used in the \cmd=\atom= and \cmd=\molecule= commands in the \cmd=<AO-spec>= or \cmd=<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 AO, that you want to 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 \lstinline=label=. This key is used in the \lstinline=\atom= and \lstinline=\molecule= commands in the \lstinline=<|AO|-spec>= or \lstinline=<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 AO, that you want to label. \begin{LTXexample} - % use package 'mhchem' + % use package `mhchem' \begin{MOdiagram}[labels-fs=\footnotesize] - \atom[H]{left} { 1s = {0;up} } - \atom[H]{right}{ 1s = {0;up} } + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } \molecule[\ce{H2}]{ - 1sMO = {.75;pair,}, + 1sMO = {.75;pair}, label = { 1sigma = {bonding MO} } } \end{MOdiagram} \end{LTXexample} \begin{LTXexample} \begin{MOdiagram}[style=square,distance=6cm] - \atom{left} { 1s = {0;up} } - \atom{right}{ 1s = {0;up} } + \atom{left} { 1s = {;up} } + \atom{right}{ 1s = {;up} } \molecule{ - 1sMO = {.75;pair,} , + 1sMO = {.75;pair} , label = { 1sigma = $\sigma$, 1sigma* = $\sigma^*$ @@ -685,95 +902,158 @@ If you don't want to use the predefined labels, change single labels or use only \end{MOdiagram} \end{LTXexample} +If the key is used together with the \lstinline=labels= option (page \pageref{option:labels}), single labels are overwritten: +\begin{LTXexample} + % use package `mhchem' + \begin{MOdiagram}[labels] + \atom[H]{left} { 1s = {;up} } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ + 1sMO = {.75;pair}, + label = { 1sigma = \textcolor{red}{??} } + } + \end{MOdiagram} +\end{LTXexample} \subsubsection{The \texttt{color} Key}\label{key:color} -Analogous to the \cmd=label= key the \cmd=color= key can be used to display coloured electrons: - +Analogous to the \lstinline=label= key the \lstinline=color= key can be used to display coloured electrons: \begin{LTXexample} - % use package 'mhchem' + % use package `mhchem' \begin{MOdiagram}[labels-fs=\footnotesize] \atom[H]{left}{ - 1s = {0;pair}, - color = { 1sleft = blue } + 1s, color = { 1sleft = blue } } \atom[H]{right}{ - 1s = {0;pair}, - color = { 1sright = red } + 1s, color = { 1sright = red } } \molecule[\ce{H2}]{ - 1sMO = {.75;pair,pair}, + 1sMO, label = { 1sigma = {bonding MO} }, color = { 1sigma = green, 1sigma* = cyan } } \end{MOdiagram} \end{LTXexample} +\newpage +\subsubsection{The \texttt{up-el-pos} and \texttt{down-el-pos} keys}\label{key:electrons} +\marginnote*{NEW}The keys \lstinline=up-el-pos= and \lstinline=down-el-pos= allow it to shift the arrows representing the electrons in a single AO or MO individually. You need to use values between \lstinline=0= and \lstinline=1=, also see section \ref{option:electrons}. +\begin{LTXexample} + % use package `mhchem' + \begin{MOdiagram} + \atom[H]{left}{ + 1s = {;up}, + up-el-pos = { 1sleft=.5 } + } + \atom[H]{right}{ 1s = {;up} } + \molecule[\ce{H2}]{ + 1sMO = {.75;pair} , + up-el-pos = { 1sigma=.15 } , + down-el-pos = { 1sigma=.85 } + } + \end{MOdiagram} +\end{LTXexample} + +\subsection{\texttt{\textbackslash AO} Specific Customizations}\label{ssec:AO_anpassen} +\marginnote*{NEW}These keys enable to customize orbitals created with \lstinline=\AO=. + +\subsubsection{The \texttt{label} Key}\label{key:AO_label} +The key \lstinline=label[x/y/z]= allows you to put a label to the AO/MO. If you use the type \lstinline=p=, you can specify the orbital you want to label in square brackets: +\begin{LTXexample} + \begin{MOdiagram}[style=square] + \AO{s}[label={s orbital}]{0} + \AO{p}[label[y]=py,label[z]=pz]{1.5} + \end{MOdiagram} +\end{LTXexample} + +\subsubsection{The \texttt{color} Key}\label{key:AO_color} +Analogous to the \lstinline=label= key there is the key \lstinline=color[x/y/z]=, which enables you to choose a color for the electrons. If you use the type \lstinline=p=, you can specify the orbital in square brackets: +\begin{LTXexample} + \begin{MOdiagram}[style=square] + \AO{s}[color=red]{0} + \AO{p}[color[y]=green,color[z]=cyan]{1.5} + \end{MOdiagram} +\end{LTXexample} + +\subsubsection{The \texttt{up-el-pos} and \texttt{down-el-pos} Keys}\label{key:AO_electrons} +Then there are the keys \lstinline=up-el-pos[x/y/z]= and \lstinline=down-el-pos[x/y/z]=, with which the electrons can be shifted horizontally. You can use values between \lstinline=0= and \lstinline=1=, also see section \ref{option:electrons}. If you use the type \lstinline=p=, you can specify the orbital in square brackets: +\begin{LTXexample} + \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{LTXexample} \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=. +Last but not least one might want to add an energy axis to the diagram. For this there is the command \lstinline=\EnergyAxis= \begin{framed} - \cmd+\EnergyAxis[<key = val>]+ + \lstinline+\EnergyAxis[<key = val>]+ \begin{itemize}\small - \item\cmd+<key = val>+ (o) key/value pairs to modify the axis + \item\lstinline+<key = val>+ (o) ey/value pairs to modify the axis \end{itemize} \end{framed} - \begin{LTXexample} \begin{MOdiagram} - \atom{left} { 1s = {0;up} } - \atom{right}{ 1s = {0;up} } - \molecule{ 1sMO = {.75;pair,} } + \atom{left} { 1s = {;up} } + \atom{right}{ 1s = {;up} } + \molecule{ 1sMO = {.75;pair} } \EnergyAxis \end{MOdiagram} \end{LTXexample} - -For the time beeing there are two keys to modify the axis. +For the time being there are two keys to modify the axis. \begin{framed} \begin{itemize} - \item\cmd+title=<title>+ axis label (default: \cmd=energy=). - \item\cmd+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: \cmd=>=). + \item\lstinline+title=<title>+ axis label (default: \lstinline=energy=). + \item\lstinline+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: \lstinline=>=). \end{itemize} \end{framed} - \begin{LTXexample} \begin{MOdiagram} - \atom{left} { 1s = {0;up} } - \atom{right}{ 1s = {0;up} } - \molecule{ 1sMO = {.75;pair,} } + \atom{left} { 1s = {;up} } + \atom{right}{ 1s = {;up} } + \molecule{ 1sMO = {.75;pair} } \EnergyAxis[title] \end{MOdiagram} \end{LTXexample} \begin{LTXexample} \begin{MOdiagram} - \atom{left} { 1s = {0;up} } - \atom{right}{ 1s = {0;up} } - \molecule{ 1sMO = {.75;pair,} } + \atom{left} { 1s = {;up} } + \atom{right}{ 1s = {;up} } + \molecule{ 1sMO = {.75;pair} } \EnergyAxis[title=E,head=stealth] \end{MOdiagram} \end{LTXexample} +\newpage +\section{Examples} +The example from the beginning of section \ref{ssec:AO_MO_irgendwo}. +\begin{LTXexample} + % use packages `mhchem' 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[\ce{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{LTXexample} -\subsection{Examples} -% \begin{LTXexample}[pos=b] - % use packages 'mhchem' (and 'textgreek' loaded by 'MOdiagram') + % use packages `mhchem' (and `textgreek' loaded by `MOdiagram') \begin{figure} \centering \begin{MOdiagram}[style=square,labels,names,AO-width=8pt,labels-fs=\footnotesize] \atom[\ce{O_a}]{left}{ - 1s = {0;pair}, - 2s = {2;pair}, - 2p = {5;pair,up,up} + 1s, 2s, 2p = {;pair,up,up} } \atom[\ce{O_b}]{right}{ - 1s = {0;pair}, - 2s = {2;pair}, - 2p = {5;pair,up,up} + 1s, 2s, 2p = {;pair,up,up} } \molecule[\ce{O2}]{ - 1sMO = {.5;pair,pair}, - 2sMO = {.5;pair,pair}, - 2pMO = {1.5,.5;pair,pair,pair,up,up,}, + 1sMO, 2sMO, 2pMO = {;pair,pair,pair,up,up}, color = { 2piy*=red, 2piz*=red } } \EnergyAxis @@ -781,11 +1061,12 @@ For the time beeing there are two keys to modify the axis. \caption{MO diagram of $^3$\textSigma-\ce{O2}.} \end{figure} \end{LTXexample} + \begin{LTXexample}[pos=b] - % use package 'chemfig' + % use package `chemfig' \begin{figure} - \centering - \begin{MOdiagram}[style=fancy,distance=7cm,AO-width=15pt,labels] + \centering\MOsetup{style = fancy, distance = 7cm, AO-width = 15pt, labels} + \begin{MOdiagram} \atom[N]{left}{ 2p = {0;up,up,up} } @@ -793,14 +1074,13 @@ For the time beeing there are two keys to modify the axis. 2p = {2;pair,up,up} } \molecule[NO]{ - 2pMO = {1.8,.4;pair,pair,pair,up,,}, + 2pMO = {1.8,.4;pair,pair,pair,up}, color = { 2piy*=red } } - \EnergyAxis[title] + \EnergyAxis \end{MOdiagram} \caption{Part of the MO diagram of \protect\Lewis{4.,NO}.} \end{figure} \end{LTXexample} -% \end{document}
\ No newline at end of file |