diff options
author | Karl Berry <karl@freefriends.org> | 2014-06-30 22:33:28 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-06-30 22:33:28 +0000 |
commit | 53e69d1db92ec88a11052f0899d0d6d926a99ea3 (patch) | |
tree | 943014801778b094a8ef8e263b4e5a4ed66192ef /Master/texmf-dist | |
parent | a09f2d1368b9d0c8a5b07fed447fa7bb54895111 (diff) |
endiagram (29jun14)
git-svn-id: svn://tug.org/texlive/trunk@34486 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/endiagram/README | 8 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/endiagram/endiagram_en.pdf | bin | 675068 -> 637268 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/endiagram/endiagram_en.tex | 2189 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/endiagram/endiagram.sty | 134 |
4 files changed, 1205 insertions, 1126 deletions
diff --git a/Master/texmf-dist/doc/latex/endiagram/README b/Master/texmf-dist/doc/latex/endiagram/README index cc0fe7d7243..b88d2ce55b3 100644 --- a/Master/texmf-dist/doc/latex/endiagram/README +++ b/Master/texmf-dist/doc/latex/endiagram/README @@ -1,9 +1,9 @@ -------------------------------------------------------------------------- -the ENdiagram package v0.1c +the ENdiagram package v0.1d easy creation of potential energy curve diagrams -2013/04/18 +2014/06/28 -------------------------------------------------------------------------- Clemens Niederberger Web: https://www.bitbucket.org/cgnieder/endiagram @@ -12,7 +12,7 @@ E-Mail: contact@mychemistry.eu If you have any ideas, questions, suggestions or bugs to report, please feel free to contact me. -------------------------------------------------------------------------- -Copyright 2012--2013 Clemens Niederberger +Copyright 2012--2014 Clemens Niederberger This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 @@ -28,4 +28,4 @@ The Current Maintainer of this work is Clemens Niederberger. This work consists of the files endiagram.sty, endiagram_en.tex, README and the derived file endiagram_en.pdf. ---------------------------------------------------------------------------
\ No newline at end of file +-------------------------------------------------------------------------- diff --git a/Master/texmf-dist/doc/latex/endiagram/endiagram_en.pdf b/Master/texmf-dist/doc/latex/endiagram/endiagram_en.pdf Binary files differindex d731a0f3804..3b2c668c1ce 100644 --- a/Master/texmf-dist/doc/latex/endiagram/endiagram_en.pdf +++ b/Master/texmf-dist/doc/latex/endiagram/endiagram_en.pdf diff --git a/Master/texmf-dist/doc/latex/endiagram/endiagram_en.tex b/Master/texmf-dist/doc/latex/endiagram/endiagram_en.tex index c268964c0db..74be547af91 100644 --- a/Master/texmf-dist/doc/latex/endiagram/endiagram_en.tex +++ b/Master/texmf-dist/doc/latex/endiagram/endiagram_en.tex @@ -15,7 +15,7 @@ % If you have any ideas, questions, suggestions or bugs to report, please % feel free to contact me. % -------------------------------------------------------------------------- -% Copyright 2012--2013 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 @@ -32,56 +32,45 @@ % This work consists of the files endiagram.sty, endiagram_en.tex, % README and the derived file endiagram_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 -\documentclass[DIV10,toc=index,toc=bib]{cnpkgdoc} -\docsetup{ - language = en , - title = ENdiagram , - subtitle = {Easy creation of potential energy curve diagrams.} , - name = ENdiagram , - info = {Easy creation of potential energy curve diagrams} , - date = 2013/04/18 , - version = 0.1c , - keywords = {energy diagrams,tikz,LaTeX}, - modules = true , - code-box = { - backgroundcolor = gray!2!white , - skipbelow = .6\baselineskip plus .5ex minus .5ex , - skipabove = .6\baselineskip plus .5ex minus .5ex , - roundcorner = 3pt +\documentclass[load-preamble+]{cnltx-doc} +\usepackage[utf8]{inputenc} +\usepackage{endiagram} + +\setcnltx{ + package = endiagram , + title = \ENdiagram , + authors = Clemens Niederberger , + email = contact@mychemistry.eu , + url = https://bitbucket.org/cgnieder/endiagram/ , + add-cmds = { + AddAxisLabel, + ENcurve, ENsetup, + MakeOrigin, ShowEa, ShowGain, + ShowNiveaus + } , + add-envs = { MOdiagram } , + add-silent-cmds = { + arrow, + calory, ch, chemfig, chemsetup, color, command, + DeclareChemIUPAC, draw, + fontfamily, + iso, + joule, + kilo, + lewis, libertineLF, + mole, + node, + per, + schemestart, schemestop, selectfont, setatomsep, sisetup, + tert, tikz, transitionstatesymbol } } -\usepackage{libertinehologopatch} - -\cnpkgusecolorscheme{friendly} - -\renewcommand*\othersectionlevelsformat[3]{% - \textcolor{main}{#3\autodot}\enskip} -\renewcommand*\partformat{% - \textcolor{main}{\partname~\thepart\autodot}} - -\addcmds{ - AddAxisLabel, arrow, - calory, ch, chemfig, chemsetup, color, command, - DeclareChemIUPAC, draw, - ENcurve, ENsetup, - fontfamily, - iso, - joule, - kilo, - lewis, - MakeOrigin, mole, - node, - per, - schemestart, schemestop, selectfont, setatomsep, ShowEa, ShowGain, - ShowNiveaus, sisetup, - tert, tikz, transitionstatesymbol -} -\usepackage{endiagram,chemmacros,chemfig,ragged2e,fnpct} +\newpackagename\ENdiagram{endiagram} + +\defbibheading{bibliography}{\addsec{References}} + +\usepackage{chemmacros,chemfig,ragged2e} \usepackage{acro} \acsetup{short-format=\scshape} @@ -98,23 +87,6 @@ long = minimal working example } -\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{noclearpage,othercode=\footnotesize} -\makeindex[options={-s \jobname.ist},intoc,columns=3] - \begin{filecontents}{\jobname.bib} @book{brueckner, author = {Reinhard Br\"uckner}, @@ -142,1110 +114,1193 @@ } \end{filecontents} -\usepackage[backend=biber,style=alphabetic]{biblatex} -\addbibresource{\jobname.bib} - -\setlength{\marginparwidth}{1.5\marginparwidth} - -\ExplSyntaxOn -\NewDocumentCommand \Default {g} - { - \hfill\llap - { - \IfNoValueTF { #1 } - {(initially~empty)} - {Default:~\code{#1}} - } - \newline - } -\NewDocumentCommand \NoDefault {} - { \hfill \newline } -\ExplSyntaxOff +% \setlength{\marginparwidth}{1.5\marginparwidth} -\def\code#1{\codefont{\frenchspacing#1}} +\newcommand*\TikZ{Ti\textit{k}Z} \begin{document} \section{Licence and 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 -\ENdiagram needs the \paket{l3kernel} and the package \paket{xparse}. \paket{xparse} -is part of the \paket{l3packages} bundle. \ENdiagram also needs \paket[pgf]{\TIKZ} -and \paket{siunitx}~\cite{pkg:siunitx}. +\ENdiagram\ needs the \bnd{l3kernel}~\cite{bnd:l3kernel} and the package +\pkg{xparse}. \pkg{xparse} is part of the +\bnd{l3packages}~\cite{bnd:l3packages} bundle. \ENdiagram\ also needs +\TikZ~\cite{pkg:pgf} and \pkg{siunitx}~\cite{pkg:siunitx}. -Basic knowledge of \TikZ/pgf \cite{pkg:tikz} is recommended. +Basic knowledge of \TikZ/pgf is recommended. \section{Caveat} -This package is in an experimental state. There is lots of code to clean up and -there are many loose ends to be tied together until I'll be satisfied to publish -this package as stable. However, as the unofficial release on my blog has gotten -quite some interest\footnote{$\ge 400$ downloads} I decided to publish this -experimental version on the \ac{CTAN} nonetheless. +This package is in an experimental state. There is lots of code to clean up +and there are many loose ends to be tied together until I'll be satisfied to +publish this package as stable. However, as the unofficial release on my blog +has gotten quite some interest\footnote{$\ge 400$ downloads} I decided to +publish this experimental version on the \CTAN{} nonetheless. If you detect any bugs -- and I guess you will -- please write me a short email with a \ac{MWE} showing the undesired behaviour or report on issue on \url{https://www.bitbucket.org/cgnieder/endiagram}. -\section{Before We Start} -This document presents commands and options in a consistent way: -\begin{beschreibung} - \Umg{environment}[<options>]{...} - \Befehl{command}[<options>]{<arg>} - \Option{option}{\default{default}|value}\newline - choice option with a \default{default value} that will be used, if the option - is set without value. - \Option{option}{<type>}\newline - option that needs an input of a certain type. - \Option[command]{option}{<type>}\newline - option that belongs to the module \textcolor{module}{\code{command}}. -\end{beschreibung} -Options can be used in the \oa{<options>} arguments. There are two kinds of -options: choice options where you can choose one of the values separated with -\code{|}; an underlined value is a default value that is used, if no value is -given. The others need a value of a certain type like a number (\code{<num>}), -arbitrary input (\code{<text>}), \TikZ\ options (\code{<tikz>}) \etc. - -As a rule commands are only defined inside the \env{endiagram}{} environment. +\section{Setup} + +There are two kinds of options: choice options where you can choose one of the +values separated with \code{|}; an underlined value is a default value that is +used, if no value is given. The others need a value of a certain type like a +number (\meta{num}), arbitrary input (\meta{text}), \TikZ\ options +(\meta{tikz}) \etc. + +As a rule commands are only defined inside the \env{endiagram} environment. Options can also be set up with this command: -\begin{beschreibung} - \Befehl{ENsetup}[<module>]{<options>} -\end{beschreibung} - -\begin{beispiel}[code only] - \ENsetup{option1 = value1, option2 = value2} - \ENsetup{module/option = value} - \ENsetup[module]{option = value} -\end{beispiel} - -Options that belong to a module are specific to a command. The command -\cmd{command} they belong to can \emph{only} have the options marked with -\textcolor{module}{\code{command}} in his argument \oa{<options>}. - -All other options can also be set globally as package options. These are options -which do \emph{not} belong to a module like for example the \key{draft} option -(see page~\pageref{key:debug}): -\begin{beispiel}[code only] - \usepackage[draft]{endiagram} -\end{beispiel} - -\section{The Curve -- \cmd{ENcurve}}\secidx{curve} -The potential energy curves are drawn inside the \env{endiagram}{\ldots} -environment using the command \cmd{ENcurve}. -\begin{beschreibung} - \Umg{endiagram}[<options>]{} - \Befehl{ENcurve}[<options>]{<level1>,<level2>,<level3>} -\end{beschreibung} +\begin{commands} + \command{ENsetup}[\oarg{module}\marg{options}] + The setup command. +\end{commands} + +\begin{sourcecode} + \ENsetup{option1 = value1, option2 = value2} + \ENsetup{module/option = value} + \ENsetup[module]{option = value} +\end{sourcecode} + +Options that belong to a module are specific to a command. The command +\cs*{command} they belong to can \emph{only} have the options marked with +\module*{command} in his argument \oarg{options}. + +All other options can also be set globally as package options. These are +options which do \emph{not} belong to a module like for example the +\option{draft} option (see page~\pageref{key:debug}): +\begin{sourcecode} + \usepackage[draft]{endiagram} +\end{sourcecode} + +\section{The Curve -- \cs*{ENcurve}} +The potential energy curves are drawn inside the \env{endiagram} +environment using the command \cs{ENcurve}. +\begin{environments} + \environment{endiagram}[\oarg{options}] + The basic environment for the potential energy curves +\end{environments} +\begin{commands} + \command{ENcurve}[\oarg{options}\Marg{\meta{level1},\meta{level2},\meta{level3}}] + The basic command for drawing the actual curve. +\end{commands} The command needs a comma separated list of relative energy levels. -\cmd{ENcurve}{1,4,0} means the maximum is four times higher above the end level -than the starting level. -\begin{beispiel} -\begin{endiagram} - \ENcurve{1,4,0} -\end{endiagram} -\end{beispiel} - -\cmd{ENcurve} can read any number of values but needs \emph{at least three}. +\cs{ENcurve}\Marg{1,4,0} means the maximum is four times higher above the end +level than the starting level. + +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve{1,4,0} + \end{endiagram} +\end{example} + +\cs{ENcurve} can read any number of values but needs \emph{at least three}. Less values will cause an error. -\begin{beispiel}[below] -\begin{endiagram} - \ENcurve{1,5,2.5,4,0} -\end{endiagram} -\quad -\begin{endiagram}[scale=.7] - \ENcurve{1,7,2.5,6,3,4,0} -\end{endiagram} -\end{beispiel} +\begin{example} + \begin{endiagram} + \ENcurve{1,5,2.5,4,0} + \end{endiagram} + \quad + \begin{endiagram}[scale=.7] + \ENcurve{1,7,2.5,6,3,4,0} + \end{endiagram} +\end{example} \subsection{Properties} -\subsubsection{Scaling}\secidx[scaling]{curve} -Values given to \cmd{ENcurve} are multiples of \ENdiagram's \ac{su}. As a default -it is set to \SI{.5}{cm} but can be changed using an option. There are other ways +\subsubsection{Scaling} + +Values given to \cs{ENcurve} are multiples of \ENdiagram's \ac{su}. As a default +it is set to \SI{.5}{cm} but can be changed using an option. There are other ways to influence the size of the diagram, too. -\begin{beschreibung} - \Option{unit}{<length>}\Default{.5cm} - The standard unit for \cmd{ENcurve} and some other commands. This document - refers to it with \ac{su}. - \Option{scale}{<factor>}\Default{1} -\end{beschreibung} +\begin{options} + \keyval{unit}{length}\Default{.5cm} + The standard unit for \cs{ENcurve} and some other commands. This document + refers to it with \ac{su}. \label{key:unit} + \keyval{scale}{factor}\Default{1} + A scaling factor that allows scaling the diagram. +\end{options} A changed \ac{su}: -\begin{beispiel} -\begin{endiagram}[unit=2em] - \ENcurve{1,4,0} -\end{endiagram} -\end{beispiel} +\begin{example}[side-by-side] + \begin{endiagram}[unit=2em] + \ENcurve{1,4,0} + \end{endiagram} +\end{example} Scaled by the factor \code{1.5}: -\begin{beispiel} -\begin{endiagram}[scale=1.5] - \ENcurve{1,4,0} -\end{endiagram} -\end{beispiel} - -\subsubsection{Influencing the position relative to the axes}\secidx[position]{curve} -The \code{offset} options control the length and position of the horizontal axis -relative to the curve. -\begin{beschreibung} - \Option{offset}{<num>}\Default{0} - \code{<num>} is a multiple of the \ac{su} (see page~\pageref{key:unit}). - \Option{r-offset}{<num>}\Default{0} - \code{<num>} is a multiple of the \ac{su}. - \Option{l-offset}{<num>}\Default{0} - \code{<num>} is a multiple of the \ac{su}. -\end{beschreibung} +\begin{example}[side-by-side] + \begin{endiagram}[scale=1.5] + \ENcurve{1,4,0} + \end{endiagram} +\end{example} + +\subsubsection{Influencing the position relative to the axes} + +The \option{offset} options control the length and position of the horizontal +axis relative to the curve. +\begin{options} + \keyval{offset}{num}\Default{0} + \meta{num} is a multiple of the \ac{su} (see page~\pageref{key:unit}). + \keyval{r-offset}{num}\Default{0} + \meta{num} is a multiple of the \ac{su}. + \keyval{l-offset}{num}\Default{0} + \meta{num} is a multiple of the \ac{su}. +\end{options} The default behaviour for comparison: -\begin{beispiel} -\begin{endiagram} - \ENcurve{1,4,0} -\end{endiagram} -\end{beispiel} - -\key{l-offset} controls the distance of the start of the $x$ axis to the start -of the curve: -\begin{beispiel} -closer to the $y$ axis:\\ -\begin{endiagram}[l-offset=-1] - \ENcurve{1,4,0} -\end{endiagram} -\end{beispiel} - -\key{r-offset} controls the ``protruding'' of the $x$ axis after the curve: -\begin{beispiel} -$x$ axis extended to the right:\\ -\begin{endiagram}[r-offset=1] - \ENcurve{1,4,0} -\end{endiagram} -\end{beispiel} - -\key{offset} changes both values equally: -\begin{beispiel} -$x$ extended to the left and the right:\\ -\begin{endiagram}[offset=1] - \ENcurve{1,4,0} -\end{endiagram} -\end{beispiel} - -\subsubsection{Increment between the levels}\secidx[increment]{curve} -With the option -\begin{beschreibung} - \Option[ENcurve]{step}{<num>}\Default{2} - \code{<num>} is a multiple of the \ac{su} (see page~\pageref{key:unit}). -\end{beschreibung} -the default increment between the levels can be changed. -\begin{beispiel}[below] -\begin{endiagram} - \ENcurve{1,4,0} -\end{endiagram} -\quad -\begin{endiagram} - \ENcurve[step=3]{1,4,0} -\end{endiagram} -\end{beispiel} - -Sometimes a certain level should be shifted against the others. This is possible -using an optional argument to the value of that level: -\begin{beschreibung} - \Befehl{ENcurve}{<level>[<offset>],...}\NoDefault - \oa{<offset>} is a multiple of the \ac{su} (see page~\pageref{key:unit}) and is set - to \code{0} as default. The level will be shifted to the right (positive values) - or left (negative values). -\end{beschreibung} -\begin{beispiel}[below] -\begin{endiagram} - \ENcurve{1,4,0} -\end{endiagram} -\quad -\begin{endiagram} - \ENcurve{1,4[.5],0} -\end{endiagram} -\quad -\begin{endiagram} - \ENcurve{1,4[-.5],0} -\end{endiagram} -\end{beispiel} - -\subsubsection{The shape}\secidx[shape]{curve} -The option -\begin{beschreibung} - \Option[ENcurve]{looseness}{<value>}\Default{.5} - should be a number between \code{0} and \code{1}. -\end{beschreibung} -changes the shape of the curve. -\begin{beispiel}[below] -\begin{endiagram} - \ENcurve[looseness=0]{0,3,1} -\end{endiagram} -\quad -\begin{endiagram} - \ENcurve{0,3,1}% corresponds looseness=.5 -\end{endiagram} -\quad -\begin{endiagram} - \ENcurve[looseness=1]{0,3,1} -\end{endiagram} -\end{beispiel} - -\subsubsection{Ending minima}\secidx[minima]{curve} +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve{1,4,0} + \end{endiagram} +\end{example} + +\option{l-offset} controls the distance of the start of the $x$ axis to the +start of the curve: +\begin{example}[side-by-side] + closer to the $y$ axis:\par + \begin{endiagram}[l-offset=-1] + \ENcurve{1,4,0} + \end{endiagram} +\end{example} + +\option{r-offset} controls the ``protruding'' of the $x$ axis after the curve: +\begin{example}[side-by-side] + $x$ axis extended to the right:\par + \begin{endiagram}[r-offset=1] + \ENcurve{1,4,0} + \end{endiagram} +\end{example} + +\option{offset} changes both values equally: +\begin{example}[side-by-side] + $x$ extended to the left and the right:\par + \begin{endiagram}[offset=1] + \ENcurve{1,4,0} + \end{endiagram} +\end{example} + +\subsubsection{Increment between the levels} + +With the option \option{step} the default increment between the levels can be +changed: +\begin{options} + \keyval{step}{num}\Module{ENcurve}\Default{2} + \meta{num} is a multiple of the \ac{su} (see page~\pageref{key:unit}). +\end{options} + +\begin{example} + \begin{endiagram} + \ENcurve{1,4,0} + \end{endiagram} + \quad + \begin{endiagram} + \ENcurve[step=3]{1,4,0} + \end{endiagram} +\end{example} + +Sometimes a certain level should be shifted against the others. This is +possible using an optional argument to the value of that level: +\begin{commands} + \command{ENcurve}[\Marg{\meta{level}\oarg{offset},...}] + \meta{offset} is a multiple of the \ac{su} (see page~\pageref{key:unit}) + and is set to \code{0} as default. The level will be shifted to the right + (positive values) or left (negative values). +\end{commands} +\begin{example} + \begin{endiagram} + \ENcurve{1,4,0} + \end{endiagram} + \quad + \begin{endiagram} + \ENcurve{1,4[.5],0} + \end{endiagram} + \quad + \begin{endiagram} + \ENcurve{1,4[-.5],0} + \end{endiagram} +\end{example} + +\subsubsection{The shape} + +The option \option{looseness} changes the shape of the curve: +\begin{options} + \keyval{looseness}{value}\Module{ENcurve}\Default{.5} + should be a number between \code{0} and \code{1}. +\end{options} + +\begin{example} + \begin{endiagram} + \ENcurve[looseness=0]{0,3,1} + \end{endiagram} + \quad + \begin{endiagram} + \ENcurve{0,3,1}% corresponds looseness=.5 + \end{endiagram} + \quad + \begin{endiagram} + \ENcurve[looseness=1]{0,3,1} + \end{endiagram} +\end{example} + +\subsubsection{Ending minima} + Sometimes potential energy curves are drawn with local minima at the start and -the end of the cuve. The option -\begin{beschreibung} - \Option[ENcurve]{minima}{\default{true}|false}\Default{false} -\end{beschreibung} -en- or disables them: -\begin{beispiel} -\begin{endiagram} - \ENcurve[minima]{1,4,0} -\end{endiagram} -\end{beispiel} - -\subsubsection{\TIKZ\ style}\secidx[style]{curve} -The style of the curve can be changed using \TikZ\ options: -\begin{beschreibung} - \Option[ENcurve]{tikz}{<tikz>}\Default - Valid are options that can be used with \verb=\draw=. -\end{beschreibung} -\begin{beispiel} -\begin{endiagram} - \ENcurve[tikz={red,dotted}]{0,3,1} -\end{endiagram} -\end{beispiel} - -\subsection{The Axes}\secidx[axes]{curve}\secidx{axes} +the end of the cuve. The option \option{minima} en- or disables them: +\begin{options} + \keybool{minima}\Module{ENcurve}\Default{false} + Draw local minima at the ends of the curve. +\end{options} + +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve[minima]{1,4,0} + \end{endiagram} +\end{example} + +\subsubsection{\TikZ{} style} + +The style of the curve can be changed using \TikZ{} options: +\begin{options} + \keyval{tikz}{tikz}\Module{ENcurve}\Default + Valid are options that can be used with \cs*{draw}. +\end{options} +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve[tikz={red,dotted}]{0,3,1} + \end{endiagram} +\end{example} + +\subsection{The Axes} + There are also possibilities to customize the axes. -\begin{beschreibung} - \Option{axes}{xy|y|y-l|y-r|x|all|false}\Default{xy} - Number and type of axes. - \Option{x-axis}{<tikz>}\Default - \TikZ options to the $x$ axis. - \Option{y-axis}{<tikz>}\Default - \TikZ options to the $y$ axis. - \Option{x-label}{below|right}\Default{below} - Position of the $x$ axis label. - \Option{y-label}{above|left}\Default{left} - Position of the $y$ axis label. - \Option{x-label-pos}{<value>}\Default{.5} - Position of the $x$ axis label when \key{x-label}{below} is set. - \Option{y-label-pos}{<value>}\Default{.5} - Position of the $y$ axis label when \key{y-label}{left} is set. - \Option{x-label-offset}{<length>}\Default{0pt} - Distance between label and $x$ axis. - \Option{y-label-offset}{<length>}\Default{0pt} - Distance between label and $y$ axis. - \Option{x-label-angle}{<angle>}\Default{0} - Angle which rotates the $x$ axis label counter clockwise. - \Option{y-label-angle}{<angle>}\Default{0} - Angle which rotates the $y$ axis label counter clockwise. - \Option{x-label-text}{<text>}\Default{\$\cmd{xi}\$} - $x$ axis label. - \Option{y-label-text}{<text>}\Default{\$E\$} +\begin{options} + \keychoice{axes}{xy,y,y-l,y-r,x,all,false}\Default{xy} + Number and type of axes. + \keyval{x-axis}{tikz}\Default + \TikZ{} options to the $x$ axis. + \keyval{y-axis}{tikz}\Default + \TikZ{} options to the $y$ axis. + \keychoice{x-label}{below,right}\Default{below} + Position of the $x$ axis label. + \keychoice{y-label}{above,left}\Default{left} + Position of the $y$ axis label. + \keyval{x-label-pos}{value}\Default{.5} + Position of the $x$ axis label when \keyis{x-label}{below} is set. + \keyval{y-label-pos}{value}\Default{.5} + Position of the $y$ axis label when \keyis{y-label}{left} is set. + \keyval{x-label-offset}{length}\Default{0pt} + Distance between label and $x$ axis. + \keyval{y-label-offset}{length}\Default{0pt} + Distance between label and $y$ axis. + \keyval{x-label-angle}{angle}\Default{0} + Angle which rotates the $x$ axis label counter clockwise. + \keyval{y-label-angle}{angle}\Default{0} + Angle which rotates the $y$ axis label counter clockwise. + \keyval{x-label-text}{text}\Default{\$\cs*{xi}\$} + $x$ axis label. + \keyval{y-label-text}{text}\Default{\$E\$} $y$ axis label. -\end{beschreibung} +\end{options} No axes: -\begin{beispiel} -\begin{endiagram}[axes=false] - \ENcurve{1,4,0} -\end{endiagram} -\end{beispiel} +\begin{example}[side-by-side] + \begin{endiagram}[axes=false] + \ENcurve{1,4,0} + \end{endiagram} +\end{example} All axes: -\begin{beispiel} -\begin{endiagram}[axes=all] - \ENcurve{1,4,0} -\end{endiagram} -\end{beispiel} +\begin{example}[side-by-side] + \begin{endiagram}[axes=all] + \ENcurve{1,4,0} + \end{endiagram} +\end{example} Only the $x$ axis: -\begin{beispiel} -\begin{endiagram}[axes=x] - \ENcurve{1,4,0} -\end{endiagram} -\end{beispiel} +\begin{example}[side-by-side] + \begin{endiagram}[axes=x] + \ENcurve{1,4,0} + \end{endiagram} +\end{example} Changed labels: -\begin{beispiel} -\begin{endiagram}[x-label-text=\footnotesize reaction coordinate] - \ENcurve{1,4,0} -\end{endiagram} -\end{beispiel} +\begin{example}[side-by-side] + \begin{endiagram}[x-label-text=\footnotesize reaction coordinate] + \ENcurve{1,4,0} + \end{endiagram} +\end{example} Different positions of the labels: -\begin{beispiel}[below] -\begin{endiagram}[ - x-label=right, - y-label=above] - \ENcurve{1,4,0} -\end{endiagram} -\quad -\begin{endiagram}[ - x-label-pos=.7, - y-label-pos=.7, - y-label-angle=-90, - y-label-offset=5pt] - \ENcurve{1,4,0} -\end{endiagram} -\end{beispiel} +\begin{example} + \begin{endiagram}[ + x-label=right, + y-label=above] + \ENcurve{1,4,0} + \end{endiagram} + \quad + \begin{endiagram}[ + x-label-pos=.7, + y-label-pos=.7, + y-label-angle=-90, + y-label-offset=5pt] + \ENcurve{1,4,0} + \end{endiagram} +\end{example} Crazy setup: -\begin{beispiel} -\begin{endiagram}[x-axis={draw=blue,dashed,font=\color{green}}] - \ENcurve{1,4,0} -\end{endiagram} -\end{beispiel} -\secidx*{axes} - -\subsection{Debugging Information}\secidx[debugging]{curve}\index{debugging} -For precise adjustments of details -- particularly with the options and commands -described in the next sections -- some information is useful that is hidden -normally. These options enable access: -\begin{beschreibung} - \Option{debug}{\default{true}|false}\Default{false} - \Option{draft}{\default{true}|false}\Default{false} - An Alias to \key{debug}. - \Option{final}{\default{true}|false}\Default{true} - The opposite of \key{draft}. -\end{beschreibung} -\begin{beispiel}[below] -\begin{endiagram}[debug] - \ENcurve{1,4,0} -\end{endiagram} -\quad -\begin{endiagram}[debug,unit=2em] - \ENcurve[step=3,minima]{1,4,0} -\end{endiagram} -\end{beispiel} +\begin{example}[side-by-side] + \begin{endiagram}[x-axis={draw=blue,dashed,font=\color{green}}] + \ENcurve{1,4,0} + \end{endiagram} +\end{example} + +\subsection{Debugging Information} + +For precise adjustments of details -- particularly with the options and +commands described in the next sections -- some information is useful that is +hidden normally. These options enable access: +\begin{options} + \keybool{debug}\Default{false} + Enable debug mode of \ENdiagram. \label{key:debug} + \keybool{draft}\Default{false} + An alias to \option{debug}. + \keybool{final}\Default{true} + The opposite of \option{draft}. +\end{options} + +\begin{example} + \begin{endiagram}[debug] + \ENcurve{1,4,0} + \end{endiagram} + \quad + \begin{endiagram}[debug,unit=2em] + \ENcurve[step=3,minima]{1,4,0} + \end{endiagram} +\end{example} Shown are a grid, the origin and the coordinates and names of the levels. -Depending on the commands you're using you get more information.It is described -with the commands they belong to. -\secidx*{curve} - -\section{The Levels}\secidx{levels} -\subsection{The \cmd{ShowNiveaus} Command} -The command -\begin{beschreibung} - \Befehl{ShowNiveaus}[<options>] -\end{beschreibung} -draws horizontal lines to the levels: -\begin{beispiel} -\begin{endiagram} - \ENcurve{3,4,0} - \ShowNiveaus -\end{endiagram} -\end{beispiel} +Depending on the commands you're using you get more information. It is +described with the commands they belong to. + +\section{The Levels} +\subsection{The \cs*{ShowNiveaus} Command} +The command \cs{ShowNiveaus} draws horizontal lines to the levels: +\begin{commands} + \command{ShowNiveaus}[\oarg{options}] + Draw a visual hint of the different niveaus. +\end{commands} + +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve{3,4,0} + \ShowNiveaus + \end{endiagram} +\end{example} \subsection{Customization} + A number of options allow fine-tuning: -\begin{beschreibung} - \Option[ShowNiveaus]{length}{<num>}\Default{1} - The length of the lines. \code{<num>} is a multiple of the \ac{su} (see - page~\pageref{key:unit}). - \Option[ShowNiveaus]{shift}{<num>}\Default{0} - Shift to the right (positive values) or the left (negative values). - \code{<num>} is a multiple of the \ac{su}. - \Option[ShowNiveaus]{tikz}{<tikz>}\Default - \TikZ options to modify the style of the lines. -\end{beschreibung} +\begin{options} + \keyval{length}{num}\Module{ShowNiveaus}\Default{1} + The length of the lines. \meta{num} is a multiple of the \ac{su} (see + page~\pageref{key:unit}). + \keyval{shift}{num}\Module{ShowNiveaus}\Default{0} + Shift to the right (positive values) or the left (negative values). + \meta{num} is a multiple of the \ac{su}. + \keyval{tikz}{tikz}\Module{ShowNiveaus}\Default + \TikZ options to modify the style of the lines. +\end{options} Longer lines: -\begin{beispiel} -\begin{endiagram} - \ENcurve{3,4,0} - \ShowNiveaus[length=2] -\end{endiagram} -\end{beispiel} - -Without \key{shift} are centered to the extrema , \ie they protrude by half of -the value specified with \key{length}. -\begin{beispiel}[below] -\begin{endiagram} - \ENcurve{3,4,0} - \ShowNiveaus[shift=.5] -\end{endiagram} -\quad -\begin{endiagram} - \ENcurve{3,4,0} - \ShowNiveaus[length=2,shift=1] -\end{endiagram} -\end{beispiel} -Maybe the examples in the next section will make it more clear why \key{shift} -can be useful. +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve{3,4,0} + \ShowNiveaus[length=2] + \end{endiagram} +\end{example} + +Without option \option{shift} the lines are centered to the extrema , \ie, +they protrude by half of the value specified with option \option{length}. +\begin{example} + \begin{endiagram} + \ENcurve{3,4,0} + \ShowNiveaus[shift=.5] + \end{endiagram} + \quad + \begin{endiagram} + \ENcurve{3,4,0} + \ShowNiveaus[length=2,shift=1] + \end{endiagram} +\end{example} +Maybe the examples in the next section will make it more clear why option +\option{shift} can be useful. \subsection{Choose Levels Explicitly} + If you don't want to draw a line to every level you can use this option: -\begin{beschreibung} - \Option[ShowNiveaus]{niveau}{<id1>,<id2>}\NoDefault - The \code{<id>} is the name of the level as shown by the \key{debug} option, - see page~\pageref{key:debug}. -\end{beschreibung} - -The debug information helps in choosing the right level. The names of the levels -follow the scheme \code{N-<number of curve>-<number of level>}. -\begin{beispiel}[below] -\begin{endiagram}[debug] - \ENcurve{3,4,0} -\end{endiagram} -\quad -\begin{endiagram} - \ENcurve{3,4,0} - \ShowNiveaus[niveau=N1-2] -\end{endiagram} -\end{beispiel} +\begin{options} + \keychoice{niveau}{\Marg{\meta{id1},\meta{id2}}}\Module{ShowNiveaus} + The \meta{id} is the name of the level as shown by the \option{debug} + option, see page~\pageref{key:debug}. +\end{options} + +The debug information helps in choosing the right level. The names of the +levels follow the scheme \code{N-\meta{number of curve}-\meta{number of + level}}. +\begin{example} + \begin{endiagram}[debug] + \ENcurve{3,4,0} + \end{endiagram} + \quad + \begin{endiagram} + \ENcurve{3,4,0} + \ShowNiveaus[niveau=N1-2] + \end{endiagram} +\end{example} Every level can have a different color, length and shift: -\begin{beispiel} -\begin{endiagram} - \ENcurve{3,4,0} - \ShowNiveaus[length=2,tikz=red,niveau=N1-2] - \ShowNiveaus[niveau=N1-1,shift=-.5] - \ShowNiveaus[niveau=N1-3,shift=.5] -\end{endiagram} -\end{beispiel} -\secidx*{Niveaus} - -\section{The Energy Gain}\secidx{energy gain} -\subsection{The \cmd{ShowGain} Command} -The command -\begin{beschreibung} - \Befehl{ShowGain}[<options>] -\end{beschreibung} -enables you the show the energy gain or loss of the reaction. It is always the -difference between the first and the last level. -\begin{beispiel} -\begin{endiagram} - \ENcurve{3,4,0} - \ShowGain -\end{endiagram} -\end{beispiel} +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve{3,4,0} + \ShowNiveaus[length=2,tikz=red,niveau=N1-2] + \ShowNiveaus[niveau=N1-1,shift=-.5] + \ShowNiveaus[niveau=N1-3,shift=.5] + \end{endiagram} +\end{example} + +\section{The Energy Gain} +\subsection{The \cs*{ShowGain} Command} + +The command \cs{ShowGain} enables you the show the energy gain or loss of the +reaction. It is always the difference between the first and the last level. +\begin{commands} + \command{ShowGain}[\oarg{options}] + Draw a visual hint of the energy gain. +\end{commands} + +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve{3,4,0} + \ShowGain + \end{endiagram} +\end{example} \subsection{Customization} + The command has options to modify the appearance. -\begin{beschreibung} - %% - \Option[ShowGain]{tikz}{<tikz>}\Default{<->} - \TikZ options for the vertical line. - %% - \Option[ShowGain]{connect}{<tikz>}\Default{dashed,help lines} - \TikZ options for the connecting line. - %% - \Option[ShowGain]{connect-from-line}{\default{true}|false}\Default{false} - The connecting line starts either at the maximum/minimum or at the line drawn - by \cmd{ShowNiveaus}. This option works with the default values but otherwise - can lead to unwanted results. To avoid that you can either set \cmd{ShowGain} - \emph{before} \cmd{ShowNiveaus} or you need to choose another way. - %% - \Option[ShowGain]{offset}{<num>}\Default{0} - Shifts the vertical line to the right (positive value) or the left (negative - value). \code{<num>} is a multiple of \ac{su} (see page~\pageref{key:unit}). - %% - \Option[ShowGain]{label}{\default{true}|false|<text>}\Default{false} - Use the default label (\code{true}) or an own label (\code{<text>}).\label{key:showgain_label} - %% - \Option[ShowGain]{label-side}{right|left}\Default{right} - The side of the vertical line on which the label should be placed. - %% - \Option[ShowGain]{label-pos}{<value>}\Default{.5} - Position at the line. \code{0} means at the height of $H_1$, \ie the starting - level, \code{1} means at the height of $H_2$, \ie the ending level. - %% - \Option[ShowGain]{label-tikz}{<tikz>}\Default - \TikZ options for the label. -\end{beschreibung} - -\begin{beispiel} -\begin{endiagram} - \ENcurve{3,4,0} - \ShowGain[connect={dotted,red},offset=2] -\end{endiagram} -\end{beispiel} - -Using the \key{label} option: -\begin{beispiel}[below] -\begin{endiagram} - \ENcurve{3,4,0} - \ShowGain[label] -\end{endiagram} -\begin{endiagram} - \ENcurve{0,4,3} - \ShowGain[label] -\end{endiagram} -\begin{endiagram} - \ENcurve{3,4,0} - \ShowGain[label=exothermic] -\end{endiagram} -\end{beispiel} +\begin{options} + \keyval{tikz}{tikz}\Module{ShowGain}\Default{<->} + \TikZ{} options for the vertical line. + \keyval{connect}{tikz}\Module{ShowGain}\Default{dashed,help lines} + \TikZ{} options for the connecting line. + \keybool{connect-from-line}\Module{ShowGain}\Default{false} + The connecting line starts either at the maximum/minimum or at the line + drawn by \cs{ShowNiveaus}. This option works with the default values but + otherwise can lead to unwanted results. To avoid that you can either set + \cs{ShowGain} \emph{before} \cs{ShowNiveaus} or you need to choose another + way. + \keyval{offset}{num}\Module{ShowGain}\Default{0} + Shifts the vertical line to the right (positive value) or the left + (negative value). \meta{num} is a multiple of \ac{su} (see + page~\pageref{key:unit}). + \keychoice{label}{\default{true},false,\meta{text}}\Module{ShowGain}\Default{false} + Use the default label (\code{true}) or an own label + (\meta{text}).\label{key:showgain_label} + \keychoice{label-side}{right,left}\Module{ShowGain}\Default{right} + The side of the vertical line on which the label should be placed. + \keyval{label-pos}{<value>}\Module{ShowGain}\Default{.5} + Position at the line. \code{0} means at the height of $H_1$, \ie, the + starting level, \code{1} means at the height of $H_2$, \ie, the ending + level. + \keyval{label-tikz}{<tikz>}\Module{ShowGain}\Default + \TikZ{} options for the label. +\end{options} + +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve{3,4,0} + \ShowGain[connect={dotted,red},offset=2] + \end{endiagram} +\end{example} + +Using the \option{label} option: +\begin{example} + \begin{endiagram} + \ENcurve{3,4,0} + \ShowGain[label] + \end{endiagram} + \begin{endiagram} + \ENcurve{0,4,3} + \ShowGain[label] + \end{endiagram} +\end{example} + +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve{3,4,0} + \ShowGain[label=exothermic] + \end{endiagram} +\end{example} Connecting lines and levels are overlapping: -\begin{beispiel} -\begin{endiagram} - \ENcurve{3,4,0} - \ShowNiveaus - \ShowGain[connect=red] -\end{endiagram} -\end{beispiel} +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve{3,4,0} + \ShowNiveaus + \ShowGain[connect=red] + \end{endiagram} +\end{example} A possible solution: -\begin{beispiel} -\begin{endiagram} - \ENcurve{3,4,0} - \ShowNiveaus - \ShowGain[connect-from-line,connect=red] -\end{endiagram} -\end{beispiel} - -Better would be to set \cmd{ShowNiveaus} \emph{after} \cmd{ShowGain}, particularly -if you're not using the default settings. -\begin{beispiel} -\begin{endiagram} - \ENcurve{3,4,0} - \ShowNiveaus[niveau=N1-1] - \ShowGain[connect={red,dotted}] -\end{endiagram} -\begin{endiagram} - \ENcurve{3,4,0} - \ShowGain[connect={red,dotted}] - \ShowNiveaus[niveau=N1-1] -\end{endiagram} -\end{beispiel} - -\subsection{Debugging Information}\index{debugging}\secidx[debugging]{energy gain} -Using the \key{debug} option (see page~\pageref{key:debug}) gives you further -information: -\begin{beispiel} -\begin{endiagram}[debug] - \ENcurve{3,4,0} - \ShowGain -\end{endiagram} -\end{beispiel} -\secidx*{energy gain} - -\section{The Activation Energy}\secidx{activation energy} -\subsection{The \cmd{ShowEa} Command} -This command is similar to the commands \cmd{ShowNiveaus} and \cmd{ShowGain}. -\begin{beschreibung} - \Befehl{ShowEa}[<options>] -\end{beschreibung} +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve{3,4,0} + \ShowNiveaus + \ShowGain[connect-from-line,connect=red] + \end{endiagram} +\end{example} + +Better would be to set \cs{ShowNiveaus} \emph{after} \cs{ShowGain}, +particularly if you're not using the default settings. +\begin{example} + \begin{endiagram} + \ENcurve{3,4,0} + \ShowNiveaus[niveau=N1-1] + \ShowGain[connect={red,dotted}] + \end{endiagram} + \begin{endiagram} + \ENcurve{3,4,0} + \ShowGain[connect={red,dotted}] + \ShowNiveaus[niveau=N1-1] + \end{endiagram} +\end{example} + +\subsection{Debugging Information} +Using the \option{debug} option (see page~\pageref{key:debug}) gives you +further information: +\begin{example}[side-by-side] + \begin{endiagram}[debug] + \ENcurve{3,4,0} + \ShowGain + \end{endiagram} +\end{example} + +\section{The Activation Energy} +\subsection{The \cs*{ShowEa} Command} +This command is similar to the commands \cs{ShowNiveaus} and \cs{ShowGain}. +\begin{commands} + \command{ShowEa}[\oarg{options}] + Draw a visual hint af the activation energy. +\end{commands} + It enables to show the activation energy: -\begin{beispiel} -\begin{endiagram} - \ENcurve{2,4,0} - \ShowEa -\end{endiagram} -\end{beispiel} +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve{2,4,0} + \ShowEa + \end{endiagram} +\end{example} The default behaviour shows the difference between the \emph{first} maximum after a \emph{previous} minimum to that minimum: -\begin{beispiel} -\begin{endiagram} - \ENcurve{2,0,4} - \ShowEa -\end{endiagram} -\end{beispiel} - -This also holds if there is more than one maximum. How you choose a different +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve{2,0,4} + \ShowEa + \end{endiagram} +\end{example} + +This also holds if there is more than one maximum. How you choose a different one is described in the next section. -\begin{beispiel} -\begin{endiagram} - \ENcurve{1,5,2.5,4,0} - \ShowEa -\end{endiagram} -\end{beispiel} +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve{1,5,2.5,4,0} + \ShowEa + \end{endiagram} +\end{example} \subsection{Choose Level Explicitly} -The default behaviour is all right if there is only one maximum. If there are -more one might want to choose a different one. The following options allow that. -\begin{beschreibung} - \Option[ShowEa]{max}{first|all}\Default{first} - Show the difference to the first maximum or to all maxima. - \Option[ShowEa]{from}{\{(<coordinate1>)to(<coordinate2>)\}}\NoDefault - Specify the coordinates that should be connected. You can either use the - coordinates \code{(<x>,<y>)} or the name \code{(<name>)} of the node. -\end{beschreibung} - -Using \key[ShowEa]{max}{all}: -\begin{beispiel} -\begin{endiagram} - \ENcurve{1,5,2.5,4,0} - \ShowEa[max=all] -\end{endiagram} -\end{beispiel} - - -Since in most cases this won't be what you want you can specify the coordinates -yourself. The option \key{debug} (see page~\pageref{key:debug}) may help. -\begin{beispiel}[below] -\begin{endiagram}[debug] - \ENcurve{1,5,2.5,4,0} - \ShowEa -\end{endiagram} -\quad -\begin{endiagram} - \ENcurve{1,5,2.5,4,0} - \ShowEa[from={(0,1) to (6,4)}] -\end{endiagram} - -\begin{endiagram} - \ENcurve{1,5,2.5,4,0} - \ShowEa[from={(N1-1) to (N1-3)}] -\end{endiagram} -\quad -\begin{endiagram} - \ENcurve{1,5,2.5,4,0} - \ShowEa[from={(N1-5) to (N1-4)}] -\end{endiagram} -\end{beispiel} +The default behaviour is all right if there is only one maximum. If there are +more one might want to choose a different one. The following options allow +that. +\begin{options} + \keychoice{max}{first,all}\Module{ShowEa}\Default{first} + Show the difference to the first maximum or to all maxima. + \keychoice{from}{\Marg{(\meta{coordinate1})to(\meta{coordinate2})}}\Module{ShowEa} + Specify the coordinates that should be connected. You can either use the + coordinates \code{(\meta{x},\meta{y})} or the name \code{(\meta{name})} of + the node. +\end{options} + +Using \keyis{max}{all}: +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve{1,5,2.5,4,0} + \ShowEa[max=all] + \end{endiagram} +\end{example} + +Since in most cases this won't be what you want you can specify the +coordinates yourself. The option \option{debug} (see +page~\pageref{key:debug}) may help. +\begin{example} + \begin{endiagram}[debug] + \ENcurve{1,5,2.5,4,0} + \ShowEa + \end{endiagram} + \quad + \begin{endiagram} + \ENcurve{1,5,2.5,4,0} + \ShowEa[from={(0,1) to (6,4)}] + \end{endiagram} + + \begin{endiagram} + \ENcurve{1,5,2.5,4,0} + \ShowEa[from={(N1-1) to (N1-3)}] + \end{endiagram} + \quad + \begin{endiagram} + \ENcurve{1,5,2.5,4,0} + \ShowEa[from={(N1-5) to (N1-4)}] + \end{endiagram} +\end{example} In every case the position of the vertical line is determined by the \emph{first} coordinate. \subsection{Customization} Again there are a number of options to customize the appearance. -\begin{beschreibung} - \Option[ShowEa]{tikz}{<tikz>}\Default{<->} - \TikZ options for the vertical line. - \Option[ShowEa]{connect}{<tikz>}\Default{dashed,help lines} - \TikZ options for the horizontal line. - \Option[ShowEa]{label}{\default{true}|false|<text>}\Default{false} - Use the default label ($E_{\mathrm{a}}$) or an own label.\label{key:showea_label} - \Option[ShowEa]{label-side}{right|left}\Default{right} - The side of the vertical line where the label should appear. - \Option[ShowEa]{label-pos}{<value>}\Default{.5} - Determines the vertical position of the label relative to the vertical line. - \code{0} means at the lower end, \code{1} means at the upper end. - \Option[ShowEa]{label-tikz}{<tikz>}\Default - \TikZ options for the label. -\end{beschreibung} - -\begin{beispiel} -\begin{endiagram} - \ENcurve[step=4]{1,6,0} - \ShowEa[label,label-pos=.3] -\end{endiagram} -\end{beispiel} - -\begin{beispiel} -\begin{endiagram} - \ENcurve{1,5,2.5,4,0} - \ShowEa[ - from = {(N1-1) to (N1-3)}, - connect = {draw=none}, - label = endoth.] - \ShowEa[ - from = (N1-3) to (N1-5), - label = exoth., - label-pos = .7] - \ShowGain[label=exoth.] -\end{endiagram} -\end{beispiel} - -\subsection{Debugging Information}\index{debugging}\secidx[debugging]{activation energy} -The \key{debug} option gives you further information. -\begin{beispiel}[below] -\begin{endiagram}[debug] - \ENcurve{1,5,2,3,0} - \ShowEa[max=all] -\end{endiagram} -\quad -\begin{endiagram}[debug] - \ENcurve{1,5,2,3,0} - \ShowEa[from={(0,1) to (6,3)}] -\end{endiagram} -\end{beispiel} -\secidx*{activation energy} - -\section{Several Curves in one Diagram}\secidx{several curves} -It's easy to draw several curves. You only need to use \cmd{ENcurve} more than +\begin{options} + \keyval{tikz}{tikz}\Module{ShowEa}\Default{<->} + \TikZ{} options for the vertical line. + \keyval{connect}{tikz}\Module{ShowEa}\Default{dashed,help lines} + \TikZ{} options for the horizontal line. + \keychoice{label}{\default{true},false,\meta{text}}\Module{ShowEa}\Default{false} + Use the default label ($E_{\mathrm{a}}$) or an own + label.\label{key:showea_label} + \keychoice{label-side}{right,left}\Module{ShowEa}\Default{right} + The side of the vertical line where the label should appear. + \keyval{label-pos}{value}\Module{ShowEa}\Default{.5} + Determines the vertical position of the label relative to the vertical line. + \code{0} means at the lower end, \code{1} means at the upper end. + \keyval{label-tikz}{tikz}\Module{ShowEa}\Default + \TikZ options for the label. +\end{options} + +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve[step=4]{1,6,0} + \ShowEa[label,label-pos=.3] + \end{endiagram} +\end{example} + +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve{1,5,2.5,4,0} + \ShowEa[ + from = {(N1-1) to (N1-3)}, + connect = {draw=none}, + label = endoth.] + \ShowEa[ + from = (N1-3) to (N1-5), + label = exoth., + label-pos = .7] + \ShowGain[label=exoth.] + \end{endiagram} +\end{example} + +\subsection{Debugging Information} +The \option{debug} option gives you further information. +\begin{example} + \begin{endiagram}[debug] + \ENcurve{1,5,2,3,0} + \ShowEa[max=all] + \end{endiagram} + \quad + \begin{endiagram}[debug] + \ENcurve{1,5,2,3,0} + \ShowEa[from={(0,1) to (6,3)}] + \end{endiagram} +\end{example} + +\section{Several Curves in one Diagram} +It's easy to draw several curves. You only need to use \cs{ENcurve} more than once. -\begin{beispiel} -\begin{endiagram} - \ENcurve[tikz=blue]{1,4,0} - \ENcurve[tikz=red]{1,2.5,0} - \draw[blue] (5,5) -- ++(1,0) node[black,right] {with enzyme}; - \draw[red] (5,4) -- ++(1,0) node[black,right] {without enzyme}; -\end{endiagram} -\end{beispiel} - -The commands \cmd{ShowNiveaus}, \cmd{ShowGain} and \cmd{ShowEa} always relate to -the curve set at last. This means you can use them selectively. -\begin{beispiel} -\begin{endiagram} - \ENcurve[tikz=blue]{1,4,0} - \ShowEa[tikz={blue,<->}] - \ENcurve[tikz=red]{1,2.5,0} -\end{endiagram} - -\begin{endiagram} - \ENcurve[tikz=blue]{1,4,0} - \ENcurve[tikz=red]{1,2.5,0} - \ShowEa[tikz={red,<->}] -\end{endiagram} -\end{beispiel} +\begin{example} + \begin{endiagram} + \ENcurve[tikz=blue]{1,4,0} + \ENcurve[tikz=red]{1,2.5,0} + \draw[blue] (5,5) -- ++(1,0) node[black,right] {without enzyme}; + \draw[red] (5,4) -- ++(1,0) node[black,right] {with enzyme}; + \end{endiagram} +\end{example} + +The commands \cs{ShowNiveaus}, \cs{ShowGain} and \cs{ShowEa} always relate to +the curve set at last. This means you can use them selectively. +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve[tikz=blue]{1,4,0} + \ShowEa[tikz={blue,<->}] + \ENcurve[tikz=red]{1,2.5,0} + \end{endiagram} + + \begin{endiagram} + \ENcurve[tikz=blue]{1,4,0} + \ENcurve[tikz=red]{1,2.5,0} + \ShowEa[tikz={red,<->}] + \end{endiagram} +\end{example} Using more than one curves explains the multiple numbering of the level names: -\begin{beispiel} -% the names of the levels (N1-1) -% and (N1-3) are hidden behind -% (N2-1) and (N2-3), resp. -\begin{endiagram}[debug] - \ENcurve{1,4,0} - \ENcurve{1,2.5,0} -\end{endiagram} - -\begin{endiagram} - \ENcurve[tikz=blue]{1,4,0} - \ENcurve[tikz=red]{1,2.5,0} - \draw[<->] (N1-2) -- (N2-2) ; -\end{endiagram} -\end{beispiel} - -Of course it's possible to choose different options for different curves. This -means you can use curves with a different number of maxima. -\begin{beispiel} -\begin{endiagram} - \ENcurve[step=4]{1,6,0} - \ENcurve[ - tikz={densely dotted}] - {1,4[1],2.5,3[-1],0} -\end{endiagram} -\end{beispiel} -\secidx*{several curves} - -\section{Usage of Ti\textit{k}Z}\index{TikZ@\TIKZ} -Since the \env{endiagram}{\ldots} environment only is a \code{tikzpicture} -environment (well, more or less) you can use \TikZ commands inside it. This -means you can easily add additional information to the diagram. -\begin{beispiel} -% needs the package `chemmacros' -\begin{endiagram} - \ENcurve{1,5,2,3,0} - \ShowNiveaus[length=2,niveau={N1-2,N1-3,N1-4}] - \node[above,xshift=4pt] at (N1-2) {[\"UZ1]$^{\transitionstatesymbol}$} ; - \node[below] at (N1-3) {ZZ} ; - \node[above,xshift=4pt] at (N1-4) {[\"UZ2]$^{\transitionstatesymbol}$} ; -\end{endiagram} -\quad -\begin{endiagram} - \ENcurve{2,3,0} - \draw[<-,red] (N1-2) -- ++(2,1) node[right] {transition state} ; -\end{endiagram} -\end{beispiel} - -\subsection{The Origin}\index{origin} +\begin{example}[side-by-side] + % the names of the levels (N1-1) + % and (N1-3) are hidden behind + % (N2-1) and (N2-3), resp. + \begin{endiagram}[debug] + \ENcurve{1,4,0} + \ENcurve{1,2.5,0} + \end{endiagram} + + \begin{endiagram} + \ENcurve[tikz=blue]{1,4,0} + \ENcurve[tikz=red]{1,2.5,0} + \draw[<->] (N1-2) -- (N2-2) ; + \end{endiagram} +\end{example} + +Of course it's possible to choose different options for different curves. +This means you can use curves with a different number of maxima. +\begin{example}[side-by-side] + \begin{endiagram} + \ENcurve[step=4]{1,6,0} + \ENcurve[ + tikz={densely dotted}] + {1,4[1],2.5,3[-1],0} + \end{endiagram} +\end{example} + +\section{Usage of \TikZ} +Since the \env{endiagram} environment only is a \env*{tikzpicture} environment +(well, more or less) you can use \TikZ{} commands inside it. This means you +can easily add additional information to the diagram. +\begin{example} + % needs the package `chemmacros' + \begin{endiagram} + \ENcurve{1,5,2,3,0} + \ShowNiveaus[length=2,niveau={N1-2,N1-3,N1-4}] + \node[above,xshift=4pt] at (N1-2) {[\"UZ1]$^{\transitionstatesymbol}$} ; + \node[below] at (N1-3) {ZZ} ; + \node[above,xshift=4pt] at (N1-4) {[\"UZ2]$^{\transitionstatesymbol}$} ; + \end{endiagram} + \quad + \begin{endiagram} + \ENcurve{2,3,0} + \draw[<-,red] (N1-2) -- ++(2,1) node[right] {transition state} ; + \end{endiagram} +\end{example} + +\subsection{The Origin} The nodes \code{(origin-l)} and \code{(origin-r)} are set at the end of the -environment. This means they are \emph{not} available inside the -\env{endiagram}{\ldots} environment. If you want to use them you either need to -look up their coordinates using the \key{debug} option (see +environment. This means they are \emph{not} available inside the +\env{endiagram} environment. If you want to use them you either need to look +up their coordinates using the \option{debug} option (see page~\pageref{key:debug}) \ldots -\begin{beispiel} -\begin{endiagram}[y-label=above] - \ENcurve{1,3[.5],0} - \draw[dashed,help lines] - (N1-2) -- (N1-2 -| -1.5,-1) - node[left,black] {max} ; -\end{endiagram} -\end{beispiel} + +\begin{example} + \begin{endiagram}[y-label=above] + \ENcurve{1,3[.5],0} + \draw[dashed,help lines] + (N1-2) -- (N1-2 -| -1.5,-1) + node[left,black] {max} ; + \end{endiagram} +\end{example} \ldots\ or use this option: -\begin{beschreibung} - \Option{tikz}{<tikz>}\Default - \TikZ options for the \env{endiagram}{\ldots} environment. -\end{beschreibung} -With it you can pass arbitrary \TikZ options to the internal \code{tikzpicture} +\begin{options} + \keyval{tikz}{tikz}\Default + \TikZ{} options for the \env{endiagram} environment. +\end{options} +With it you can pass arbitrary \TikZ{} options to the internal \code{tikzpicture} environment. -\begin{beispiel} -\begin{endiagram}[ - y-label = above, - tikz = {remember picture}] - \ENcurve{1,3[.5],0} -\end{endiagram} -\tikz[remember picture,overlay]{ - \draw[dashed,help lines] - (N1-2) -- (N1-2 -| origin-l) - node[left,black] {max} ; -} -\end{beispiel} +\begin{example}[side-by-side] + \begin{endiagram}[ + y-label = above, + tikz = {remember picture}] + \ENcurve{1,3[.5],0} + \end{endiagram} + \tikz[remember picture,overlay]{ + \draw[dashed,help lines] + (N1-2) -- (N1-2 -| origin-l) + node[left,black] {max} ; + } +\end{example} There is an easier way, though: you can use the following command \emph{after} drawing all curves: -\begin{beschreibung} - \Befehl{MakeOrigin}\label{cmd:makeorigin} -\end{beschreibung} - -\begin{beispiel} -\begin{endiagram}[y-label = above] - \ENcurve{1,3[.5],0} - \MakeOrigin - \draw[dashed,help lines] - (N1-2) -- (N1-2 -| origin-l) - node[left,black] {max} ; -\end{endiagram} -\end{beispiel} - -\section{Axes Ticks and Labels}\secidx{axes ticks and labels} -\subsection{Automatic Ticks}\ENsetup{AddAxisLabel/font=\fontfamily{fxlf}\selectfont} +\begin{commands} + \command{MakeOrigin} + Helper command to make the origin of the coordinate system + known.\label{cmd:makeorigin} +\end{commands} + +\begin{example}[side-by-side] + \begin{endiagram}[y-label = above] + \ENcurve{1,3[.5],0} + \MakeOrigin + \draw[dashed,help lines] + (N1-2) -- (N1-2 -| origin-l) + node[left,black] {max} ; + \end{endiagram} +\end{example} + +\section{Axes Ticks and Labels} +\subsection{Automatic Ticks} + The $y$ axes can get ticks automatically. -\begin{beschreibung} - \Option{ticks}{y|\default{y-l}|y-r|none}\Default{none} - Adds ticks to the specified axes. - \Option{ticks-step}{<num>}\Default{1} - \code{<num>} is a multiple of the \ac{su}. \key{ticks-step}{2} means that - only every second tick is added. -\end{beschreibung} -\begin{beispiel} -\ENsetup{ticks,y-label=above} -\begin{endiagram} - \ENcurve{1,5,2.5,4,0} -\end{endiagram} -\begin{endiagram}[ticks-step=2] - \ENcurve{1,5,2.5,4,0} -\end{endiagram} -\end{beispiel} -These ticks obey the \key{energy-unit} option, see section~\ref{sec:reale_werte}. - -\subsection{The \cmd{AddAxisLabel} Command} -% TODO auf Unterschied zwischen den Ticks produziert durch AddAxisLabel und Option ticks hinweisen +\begin{options} + \keychoice{ticks}{y,\default{y-l},y-r,none}\Default{none} + Adds ticks to the specified axes. + \keyval{ticks-step}{num}\Default{1} + \meta{num} is a multiple of the \ac{su}. \keyis{ticks-step}{2} means that + only every second tick is added. +\end{options} +\ENsetup{ + AddAxisLabel/font=\libertineLF +} + +\begin{example} + \ENsetup{ticks,y-label=above} + \begin{endiagram} + \ENcurve{1,5,2.5,4,0} + \end{endiagram} + \quad + \begin{endiagram}[ticks-step=2] + \ENcurve{1,5,2.5,4,0} + \end{endiagram} +\end{example} +These ticks obey the \option{energy-unit} option, see +section~\ref{sec:reale_werte}. + +\subsection{The \cs*{AddAxisLabel} Command} +% TODO auf Unterschied zwischen den Ticks produziert durch AddAxisLabel und +% Option ticks hinweisen To be able to add labels to the ticks there is the command -\begin{beschreibung} - \Befehl{AddAxisLabel}[<options>]{(<point1>)[<opt.\@ label>];(<point2>);...} - \Befehl{AddAxisLabel}*[<options>]{<level1>[<opt.\@ label>];<level2>;...} -\end{beschreibung} -As you can see there are two variants. The first one awaits a list of coordinates -in the \TikZ sense. The second awaits $y$ values. Every of these values has an -optional argument with which you can specify the label. - -The first variant also draws lines between the points specifiad and the $y$ axis. -Internally this command calls \cmd{MakeOrigin}, see p.\,\pageref{cmd:makeorigin}, -which means it should be used \emph{after} drawing all curves. +\begin{commands} + \command{AddAxisLabel}[\oarg{options}\Marg{(\meta{point1})[\meta{opt.\@ + label}];(\meta{point2});...}] + Add axis labels to points. + \command{AddAxisLabel}[\sarg\oarg{options}\Marg{\meta{level1}[\meta{opt.\@ + label}];\meta{level2};...}] + Add axis labels to levels. +\end{commands} +As you can see there are two variants. The first one awaits a list of +coordinates in the \TikZ{} sense. The second awaits $y$ values. Every of +these values has an optional argument with which you can specify the label. + +The first variant also draws lines between the points specifiad and the $y$ +axis. Internally this command calls \cs{MakeOrigin}, see +page~\pageref{cmd:makeorigin}, which means it should be used \emph{after} +drawing all curves. Example for the second variant: -\begin{beispiel} -\begin{endiagram}[y-label=above] - \ENcurve{1,3,2} - \AddAxisLabel*{1;2;3} -\end{endiagram} -\begin{endiagram}[y-label=above] - \ENcurve{1,3,2} - \AddAxisLabel*{1[10];2[20];3[30]} -\end{endiagram} -\end{beispiel} +\begin{example} + \begin{endiagram}[y-label=above] + \ENcurve{1,3,2} + \AddAxisLabel*{1;2;3} + \end{endiagram} + \begin{endiagram}[y-label=above] + \ENcurve{1,3,2} + \AddAxisLabel*{1[10];2[20];3[30]} + \end{endiagram} +\end{example} Example for the first variant: -\begin{beispiel} -\begin{endiagram}[y-label=above] - \ENcurve{1,3,2} - \AddAxisLabel{(N1-1)[$H_1$];(N1-3)[$H_2$]} -\end{endiagram} -\end{beispiel} - -The optional arguments can also get \TikZ options. The description should read: -\begin{beschreibung} - \Befehl{AddAxisLabel}{(<point>)[<opt.\@ label>,<tikz>]} - \Befehl{AddAxisLabel}*{<level>[<opt.\@ label>,<tikz>]} -\end{beschreibung} - -\begin{beispiel} -\begin{endiagram}[y-label=above] - \ENcurve{1,3,2} - \AddAxisLabel*{1[10];2[20,{draw,fill=green!15}];3[30]} -\end{endiagram} -\begin{endiagram}[y-label=above] - \ENcurve{1,3,2} - \AddAxisLabel{(N1-1)[$H_1$];(N1-3)[$H_2$,{draw,font=\color{red},fill=green!15}]} -\end{endiagram} -\end{beispiel} +\begin{example}[side-by-side] + \begin{endiagram}[y-label=above] + \ENcurve{1,3,2} + \AddAxisLabel{(N1-1)[$H_1$];(N1-3)[$H_2$]} + \end{endiagram} +\end{example} + +The optional arguments can also get \TikZ{} options. The description should read: +\begin{commands} + \command{AddAxisLabel}[\oarg{options}\Marg{(\meta{point1})[\meta{opt.\@ + label},\meta{tikz}];(\meta{point2});...}] + Add axis labels to points. + \command{AddAxisLabel}[\sarg\oarg{options}\Marg{\meta{level1}[\meta{opt.\@ + label},\meta{tikz}];\meta{level2};...}] + Add axis labels to levels. +\end{commands} + +\begin{example} + \begin{endiagram}[y-label=above] + \ENcurve{1,3,2} + \AddAxisLabel*{1[10];2[20,{draw,fill=green!15}];3[30]} + \end{endiagram} + \begin{endiagram}[y-label=above] + \ENcurve{1,3,2} + \AddAxisLabel{(N1-1)[$H_1$];(N1-3)[$H_2$,{draw,font=\color{red},fill=green!15}]} + \end{endiagram} +\end{example} \subsection{Customization} + You have several options to customize the labels: -\begin{beschreibung} - \Option[AddAxisLabel]{axis}{y-l|y-r|x}\Default{y-l} - Choose which axis gets the labels. - \Option[AddAxisLabel]{connect}{<tikz>}\Default{dashed,help lines} - Change the style of the lines. - \Option[AddAxisLabel]{font}{<commands>}\Default - You can add commands like \verb=\footnotesize= and/or \verb=\color{red}= to - format the label text. -\end{beschreibung} - -\begin{beispiel}[below] -\begin{endiagram}[y-label=above] - \ENcurve{1,3,2} - \AddAxisLabel{(2,3)[\"UZ]} -\end{endiagram} -\begin{endiagram}[y-label=above,x-label=right] - \ENcurve{1,3,2} - \AddAxisLabel[axis=x,connect=dotted]{(2,3)[\"UZ]} -\end{endiagram} -\begin{endiagram}[axes=all,y-label=above] - \ENcurve{1,3,2} - \AddAxisLabel[axis=y-r,connect=red]{(2,3)[\"UZ]} -\end{endiagram} -\end{beispiel} -\secidx*{axes ticks and labels} - -\section{Actual Values}\secidx{actual values}\label{sec:reale_werte} +\begin{options} + \keychoice{axis}{y-l,y-r,x}\Module{AddAxisLabel}\Default{y-l} + Choose which axis gets the labels. + \keyval{connect}{tikz}\Module{AddAxisLabel}\Default{dashed,help lines} + Change the style of the lines. + \keyval{font}{commands}\Module{AddAxisLabel}\Default + You can add commands like \cs*{footnotesize} and/or \cs*{color}\Marg{red} + to format the label text. +\end{options} + +\begin{example} + \begin{endiagram}[y-label=above] + \ENcurve{1,3,2} + \AddAxisLabel{(2,3)[\"UZ]} + \end{endiagram} + \begin{endiagram}[y-label=above,x-label=right] + \ENcurve{1,3,2} + \AddAxisLabel[axis=x,connect=dotted]{(2,3)[\"UZ]} + \end{endiagram} + \begin{endiagram}[axes=all,y-label=above] + \ENcurve{1,3,2} + \AddAxisLabel[axis=y-r,connect=red]{(2,3)[\"UZ]} + \end{endiagram} +\end{example} + +\section{Actual Values}\label{sec:reale_werte} \subsection{The Basics} + If you want to have a more quantitative diagram or use actual values for the energies you can use these options: -\begin{beschreibung} - \Option{energy-unit}{<unit>}\Default - The unit of the energy scale. A unit in the \paket{siunitx} sense. - \Option{energy-step}{<num>}\Default{1} - Determines which increment on the energy scale corresponds to the \ac{su}. - \Option{energy-zero}{<num>}\Default{0} - Shifts the origin of the energy scale by \code{<num>} in multiples of the - energy scale. - \Option{energy-unit-separator}{<anything>}\Default{/} - Separates the $y$ axes label from the unit. - \Option{energy-round}{<num>}\Default{3} - Rounds the value to this number of figures. - \Option{energy-round-places}{\default{true}|false}\Default{false} - Switch rounding mode to places. -\end{beschreibung} +\begin{options} + \keyval{energy-unit}{unit}\Default + The unit of the energy scale. A unit in the \pkg{siunitx} sense. + \keyval{energy-step}{num}\Default{1} + Determines which increment on the energy scale corresponds to the + \ac{su}. + \keyval{energy-zero}{num}\Default{0} + Shifts the origin of the energy scale by \meta{num} in multiples of the + energy scale. + \keyval{energy-unit-separator}{anything}\Default{/} + Separates the $y$ axes label from the unit. + \keyval{energy-round}{num}\Default{3} + Rounds the value to this number of figures. + % \keybool{energy-round-places}\Default{false} + % Switch rounding mode to places. +\end{options} Choosing a unit will add ticks and labels to the $y$ axis automatically and has -an impact on the commands \cmd{ShowGain} and \cmd{ShowEa}, see section~\ref{ssec:real_einfluss}. - -\begin{beispiel} -\begin{endiagram}[ticks,y-label=above,energy-step=10] - \ENcurve{1,3,2} -\end{endiagram} -\begin{endiagram}[y-label=above,energy-step=10,energy-zero=30] - \ENcurve{1,3,2} - \AddAxisLabel*{1;2;3} -\end{endiagram} -\end{beispiel} - -\begin{beispiel} -\begin{endiagram}[y-label=above,energy-step=15,energy-zero=30,energy-unit=\kilo\joule] - \ENcurve{1,3,2} - \AddAxisLabel*{1;2;3} -\end{endiagram} -\begin{endiagram}[y-label=above,energy-step=10,energy-unit=\kilo\joule,energy-unit-separator={ in }] - \ENcurve{1,3,2} - \AddAxisLabel*{1;2;3} -\end{endiagram} -\end{beispiel} - -\begin{beispiel} -\ENsetup{energy-unit=kJ,energy-step=10,energy-zero=.613,y-label-offset=20pt} -\begin{endiagram} - \ENcurve{1.0613,4.3465,2.9876} - \ShowGain[label] -\end{endiagram} - -\begin{endiagram}[energy-round-places] - \ENcurve{1.0613,4.3465,2.9876} - \ShowGain[label] -\end{endiagram} -\end{beispiel} +an impact on the commands \cs{ShowGain} and \cs{ShowEa}, see +section~\ref{ssec:real_einfluss}. + +\begin{example} + \begin{endiagram}[ticks,y-label=above,energy-step=10] + \ENcurve{1,3,2} + \end{endiagram} + \begin{endiagram}[y-label=above,energy-step=10,energy-zero=30] + \ENcurve{1,3,2} + \AddAxisLabel*{1;2;3} + \end{endiagram} +\end{example} + +\begin{example} + \begin{endiagram}[ + y-label=above, + energy-step=15, + energy-zero=30, + energy-unit=\kilo\joule] + \ENcurve{1,3,2} + \AddAxisLabel*{1;2;3} + \end{endiagram} + \begin{endiagram}[ + y-label=above, + energy-step=10, + energy-unit=\kilo\joule, + energy-unit-separator={ in }] + \ENcurve{1,3,2} + \AddAxisLabel*{1;2;3} + \end{endiagram} +\end{example} + +\begin{example} + \ENsetup{ + energy-unit=kJ, + energy-step=10, + energy-zero=.613, + y-label-offset=20pt + } + \begin{endiagram} + \ENcurve{1.0613,4.3465,2.9876} + \ShowGain[label] + \end{endiagram} +\end{example} + % \begin{endiagram}% [energy-round-places] + % \ENcurve{1.0613,4.3465,2.9876} + % \ShowGain[label] + % \end{endiagram} \subsection{Impact on Other Commands}\label{ssec:real_einfluss} -Using the option \key{energy-unit} changes the default labels of \cmd{ShowGain} -and \cmd{ShowEa}. Now an actual value is shown: -\begin{beispiel}[below] - % uses \DeclareSIUnit{\calory}{cal} -\sisetup{per-mode = fraction} -\ENsetup{ - energy-step = 100, - energy-unit = \kilo\calory\per\mole, - energy-unit-separator = { in }, - y-label = above, - AddAxisLabel/font = \fontfamily{fxlf}\selectfont\footnotesize -} -\begin{endiagram}[scale=1.5] - \ENcurve{2.232,4.174,.308} - \AddAxisLabel*{0;1;2;3;4} - \ShowEa[label,connect={draw=none}] - \ShowGain[label] -\end{endiagram} -\end{beispiel} + +Using the option \option{energy-unit} changes the default labels of +\cs{ShowGain} and \cs{ShowEa}. Now an actual value is shown: +\begin{example} + % uses \DeclareSIUnit{\calory}{cal} + \sisetup{per-mode = fraction} + \ENsetup{ + energy-step = 100, + energy-unit = \kilo\calory\per\mole, + energy-unit-separator = { in }, + y-label = above, + AddAxisLabel/font = \libertineLF\footnotesize + } + \begin{endiagram}[scale=1.5] + \ENcurve{2.232,4.174,.308} + \AddAxisLabel*{0;1;2;3;4} + \ShowEa[label,connect={draw=none}] + \ShowGain[label] + \end{endiagram} +\end{example} This behaviour can be switched off, though: -\begin{beschreibung} - \Option{calculate}{\default{true}|false}\Default{true} -\end{beschreibung} -\begin{beispiel} - % uses \DeclareSIUnit{\calory}{cal} -\sisetup{per-mode = fraction} -\ENsetup{ - energy-step = 100, - energy-unit = \kilo\calory\per\mole, - energy-unit-separator = { in }, - y-label = above, - AddAxisLabel/font = \footnotesize, -} -\begin{endiagram}[scale=1.5,calculate=false] - \ENcurve{2.232,4.174,.308} - \AddAxisLabel*{0;1;2;3;4} - \ShowEa[label,connect={draw=none}] - \ShowGain[label] -\end{endiagram} -\end{beispiel} -\secidx*{Actual values} +\begin{options} + \keybool{calculate}\Default{true} + Switch the calculating of activation energy and energy gain on or off. +\end{options} +\begin{example} + % uses \DeclareSIUnit{\calory}{cal} + \sisetup{per-mode = fraction} + \ENsetup{ + energy-step = 100, + energy-unit = \kilo\calory\per\mole, + energy-unit-separator = { in }, + y-label = above, + AddAxisLabel/font = \footnotesize, + } + \begin{endiagram}[scale=1.5,calculate=false] + \ENcurve{2.232,4.174,.308} + \AddAxisLabel*{0;1;2;3;4} + \ShowEa[label,connect={draw=none}] + \ShowGain[label] + \end{endiagram} +\end{example} \section{Example} -The illustration of the Bell-Evans-Polanyi principle (figure~\ref{fig:bell-evans-polanyi}) -serves as an example for a more complex usage. One reaction is coloured as it -an exception to the principle. The figure is a reproduction of a similar figure -in~\cite{brueckner}. -\begin{beispiel}[code and float] -% uses the packages `chemmacros', `chemfig' and `libertine' -\begin{figure}[ht] -\centering -\setatomsep{1.5em} -\DeclareChemIUPAC\iso{\textit{i}} -\chemsetup[chemformula]{font-family=fxl} -\ENsetup{ - ENcurve/minima, - AddAxisLabel/font=\fontfamily{fxlf}\selectfont\footnotesize -} -\begin{endiagram}[ - tikz = {yscale=1.5}, scale = 1.7, - y-label = above, y-label-text = $\Delta H$, - x-label = right, x-label-text = RK, - energy-step = 10] - \ENcurve{0,3.5,1} - \ENcurve[tikz=red]{0,3.7,.4} - \ENcurve{0,4.3[.2],2.4} - \ENcurve{0,4.7[.3],2.7} - \ENcurve{0,4.9[.35],2.9} - \ENcurve{0,5.2[.4],3.3} - \AddAxisLabel*{1;2;3;4;6} - \AddAxisLabel{(N1-1)[0];(N1-2)[35];(N2-2)[37];(N3-2)[43];(N4-2)[47];(N5-2)[49];(N6-2)[52]} - \draw[right] (N1-3) ++ (1,0) node {\small \ch{2 "\chemfig{=_[:30]-[::-60]\lewis{0.,}}~" + N2} } ; - \draw[right,red] (N2-3) ++ (1,-.3) node {\small \ch{2 "\chemfig{[:-60]*6(=-=-(-\lewis{0.,})=-)}~" + N2} } ; - \draw[right] (N3-3) ++ (1,-.2) node {\small \ch{2 "\tert-\lewis{0.,Bu}~" + N2} } ; - \draw[right] (N4-3) ++ (1,-.1) node {\small \ch{2 "\iso-\lewis{0.,Pr}~" + N2} } ; - \draw[right] (N5-3) ++ (1,0) node {\small \ch{2 "\lewis{0.,Et}~" + N2} } ; - \draw[right] (N6-3) ++ (1,0) node {\small \ch{2 "\lewis{0.,Me}~" + N2} } ; - \draw[above,font=\fontfamily{fxlf}\selectfont\footnotesize] - (N1-3) node {10} (N2-3) node[red] {4} - (N3-3) node {24} (N4-3) node {27} - (N5-3) node {29} (N6-3) node {33} ; -\end{endiagram} - -\setatomsep{2em} -\schemestart - \chemfig{R-[:30]N=N-[:30]R} - \arrow{->[$\Delta$]}[,2.1] - \ch{2 "\lewis{0.,R}~" + N2} -\schemestop -\caption{\label{fig:bell-evans-polanyi}Enthalpie-Entwicklung entlang -der Reaktionskoordinate bei einer Serie von Thermolysen aliphatischer -Azoverbindungen. Alle Thermolysen dieser Serie -- mit Ausnahme der -farbig hervorgehobenen -- folgen dem Bell-Evans-Polanyi-Prinzip~\cite{brueckner}.} + +The illustration of the Bell-Evans-Polanyi principle +(figure~\ref{fig:bell-evans-polanyi}) serves as an example for a more complex +usage. One reaction is coloured as it an exception to the principle. The +figure is a reproduction of a similar figure in~\cite{brueckner}. + +\begin{sourcecode} + % uses the packages `chemmacros', `chemfig' and `libertine' + \setatomsep{1.5em} + \DeclareChemIUPAC\iso{\textit{i}} + \chemsetup[chemformula]{format=\libertineLF} + \ENsetup{ + ENcurve/minima, + AddAxisLabel/font=\libertineLF\footnotesize + } + \begin{endiagram}[ + tikz = {yscale=1.5}, scale = 1.7, + y-label = above, y-label-text = $\Delta H$, + x-label = right, x-label-text = RK, + energy-step = 10] + \ENcurve{0,3.5,1} + \ENcurve[tikz=red]{0,3.7,.4} + \ENcurve{0,4.3[.2],2.4} + \ENcurve{0,4.7[.3],2.7} + \ENcurve{0,4.9[.35],2.9} + \ENcurve{0,5.2[.4],3.3} + \AddAxisLabel*{1;2;3;4;6} + \AddAxisLabel{ + (N1-1)[0]; (N1-2)[35]; (N2-2)[37]; (N3-2)[43]; (N4-2)[47]; (N5-2)[49]; + (N6-2)[52] + } + \draw[right] (N1-3) ++ (1,0) + node {\small \ch{2 "\chemfig{=_[:30]-[::-60]\lewis{0.,}}~" + N2} } ; + \draw[right,red] (N2-3) ++ (1,-.3) + node {\small \ch{2 "\chemfig{[:-60]*6(=-=-(-\lewis{0.,})=-)}~" + N2} } ; + \draw[right] (N3-3) ++ (1,-.2) + node {\small \ch{2 "\tert-\lewis{0.,Bu}~" + N2} } ; + \draw[right] (N4-3) ++ (1,-.1) + node {\small \ch{2 "\iso-\lewis{0.,Pr}~" + N2} } ; + \draw[right] (N5-3) ++ (1,0) + node {\small \ch{2 "\lewis{0.,Et}~" + N2} } ; + \draw[right] (N6-3) ++ (1,0) + node {\small \ch{2 "\lewis{0.,Me}~" + N2} } ; + \draw[above,font=\fontfamily{fxlf}\selectfont\footnotesize] + (N1-3) node {10} (N2-3) node[red] {4} + (N3-3) node {24} (N4-3) node {27} + (N5-3) node {29} (N6-3) node {33} ; + \end{endiagram} + + \setatomsep{2em} + \schemestart + \chemfig{R-[:30]N=N-[:30]R} + \arrow{->[$\Delta$]}[,2.1] + \ch{2 "\lewis{0.,R}~" + N2} + \schemestop +\end{sourcecode} + +\begin{figure} + \centering + \centering + \setatomsep{1.5em} + \DeclareChemIUPAC\iso{\textit{i}} + \chemsetup[chemformula]{format=\libertineLF} + \ENsetup{ + ENcurve/minima, + AddAxisLabel/font=\libertineLF\footnotesize + } + \begin{endiagram}[ + tikz = {yscale=1.5}, scale = 1.7, + y-label = above, y-label-text = $\Delta H$, + x-label = right, x-label-text = RK, + energy-step = 10] + \ENcurve{0,3.5,1} + \ENcurve[tikz=red]{0,3.7,.4} + \ENcurve{0,4.3[.2],2.4} + \ENcurve{0,4.7[.3],2.7} + \ENcurve{0,4.9[.35],2.9} + \ENcurve{0,5.2[.4],3.3} + \AddAxisLabel*{1;2;3;4;6} + \AddAxisLabel{ + (N1-1)[0]; (N1-2)[35]; (N2-2)[37]; (N3-2)[43]; (N4-2)[47]; (N5-2)[49]; + (N6-2)[52] + } + \draw[right] (N1-3) ++ (1,0) + node {\small \ch{2 "\chemfig{=_[:30]-[::-60]\lewis{0.,}}~" + N2} } ; + \draw[right,red] (N2-3) ++ (1,-.3) + node {\small \ch{2 "\chemfig{[:-60]*6(=-=-(-\lewis{0.,})=-)}~" + N2} } ; + \draw[right] (N3-3) ++ (1,-.2) + node {\small \ch{2 "\tert-\lewis{0.,Bu}~" + N2} } ; + \draw[right] (N4-3) ++ (1,-.1) + node {\small \ch{2 "\iso-\lewis{0.,Pr}~" + N2} } ; + \draw[right] (N5-3) ++ (1,0) + node {\small \ch{2 "\lewis{0.,Et}~" + N2} } ; + \draw[right] (N6-3) ++ (1,0) + node {\small \ch{2 "\lewis{0.,Me}~" + N2} } ; + \draw[above,font=\fontfamily{fxlf}\selectfont\footnotesize] + (N1-3) node {10} (N2-3) node[red] {4} + (N3-3) node {24} (N4-3) node {27} + (N5-3) node {29} (N6-3) node {33} ; + \end{endiagram} + + \setatomsep{2em} + \schemestart + \chemfig{R-[:30]N=N-[:30]R} + \arrow{->[$\Delta$]}[,2.1] + \ch{2 "\lewis{0.,R}~" + N2} + \schemestop + \caption{\label{fig:bell-evans-polanyi}Enthalpie-Entwicklung + entlang der Reaktionskoordinate bei einer Serie von Thermolysen + aliphatischer Azoverbindungen. Alle Thermolysen dieser Serie -- mit + Ausnahme der farbig hervorgehobenen -- folgen dem + Bell-Evans-Polanyi-Prinzip~\cite{brueckner}.} \end{figure} -\end{beispiel} -\clearpage -{\RaggedRight -\printbibliography} +\end{document} -\setindexpreamble{Section titles are indicated \textbf{bold}, packages -\textsf{sans serif}, commands \code{\textbackslash\textcolor{code}{brown}}, - options \textcolor{key}{\code{yellow}} and modules \textcolor{module}{\code{blue}}. - \par\bigskip} -\printindex -\end{document}
\ No newline at end of file +\end{document} diff --git a/Master/texmf-dist/tex/latex/endiagram/endiagram.sty b/Master/texmf-dist/tex/latex/endiagram/endiagram.sty index 1d4e164062e..d23f5660118 100644 --- a/Master/texmf-dist/tex/latex/endiagram/endiagram.sty +++ b/Master/texmf-dist/tex/latex/endiagram/endiagram.sty @@ -32,10 +32,24 @@ \usetikzlibrary{calc} \ProvidesExplPackage {endiagram} - {2013/04/18} - {0.1c} + {2014/06/28} + {0.1d} {Easy creation of potential energy curve diagrams} +% -------------------------------------------------------------------------- +% check expl3 version: +\@ifpackagelater { expl3 } { 2013/12/14 } + { } + { + \PackageError { endiagram } { Support~package~expl3~too~old } + { + You~need~to~update~your~installation~of~the~bundles~'l3kernel'~and~ + 'l3packages'.\MessageBreak + Loading~endiagram~will~abort! + } + \tex_endinput:D + } + % --------------------------------------------------------------------------- % % error and warning messages \msg_new:nnnn { ENdiagram } { points-missing } @@ -192,8 +206,8 @@ \fp_gset:Nn \g__endiagram_x_max_fp { \int_to_arabic:n { \g__endiagram_points_max_int } } \fp_gsub:Nn \g__endiagram_x_max_fp { 1 } - \exp_args:NNo \fp_gmul:Nn \g__endiagram_x_max_fp - { \l__endiagram_points_step_tl } + \exp_args:NNo \fp_gset:Nn \g__endiagram_x_max_fp + { \g__endiagram_x_max_fp * \l__endiagram_points_step_tl } } \Endiagram_new_environment_command:Nnn \ENcurve { o m } @@ -492,29 +506,27 @@ { \l__endiagram_energy_unit_bool && \l__endiagram_calculate_bool } { \fp_set:Nn \l__Endiagram_tmpb_fp - { (\l__Endiagram_tmpb_fp - \l__Endiagram_tmpa_fp) * \l__endiagram_energy_step_tl } - \bool_if:NTF \l__endiagram_energy_round_places_bool { - \fp_round_places:Nn \l__Endiagram_tmpb_fp - { \l__endiagram_energy_round_tl } + (\l__Endiagram_tmpb_fp - \l__Endiagram_tmpa_fp) * + \l__endiagram_energy_step_tl } + \fp_set:Nn \l__Endiagram_tmpb_fp + { round( \l__Endiagram_tmpb_fp , \l__endiagram_energy_round_tl ) } + \tl_set:Nx \l__endiagram_gain_value_tl { - \fp_round_figures:Nn \l__Endiagram_tmpb_fp - { \l__endiagram_energy_round_tl } - } - \tl_set:Nn \l__endiagram_gain_value_tl - { - = \exp_args:Noo \SI + = \exp_not:N \SI { \fp_to_tl:N \l__Endiagram_tmpb_fp } - { \l__endiagram_energy_unit_tl } + { \exp_not:V \l__endiagram_energy_unit_tl } } + % \tl_show:N \l__endiagram_gain_value_tl } { \fp_compare:nNnTF { \l__Endiagram_tmpa_fp } > { \l__Endiagram_tmpb_fp } { \tl_set:Nn \l__endiagram_gain_value_tl { < 0 } } { \tl_set:Nn \l__endiagram_gain_value_tl { > 0 } } } - \tl_set:Nn \l__endiagram_gain_label_text_tl { $\Delta H \l__endiagram_gain_value_tl$ } + \tl_set:Nn \l__endiagram_gain_label_text_tl + { $\Delta H \l__endiagram_gain_value_tl$ } } \endiagram_draw:nx {} { @@ -693,20 +705,13 @@ \l__Endiagram_tmpb_fp * \l__endiagram_energy_step_tl } - \bool_if:NTF \l__endiagram_energy_round_places_bool - { - \fp_round_places:Nn \l__Endiagram_tmpa_fp - { \l__endiagram_energy_round_tl } - } - { - \fp_round_figures:Nn \l__Endiagram_tmpa_fp - { \l__endiagram_energy_round_tl } - } - \tl_set:Nn \l__endiagram_ea_value_tl + \fp_set:Nn \l__Endiagram_tmpb_fp + { round( \l__Endiagram_tmpb_fp , \l__endiagram_energy_round_tl ) } + \tl_set:Nx \l__endiagram_ea_value_tl { - ~ = ~ \exp_args:Noo \SI + ~ = ~ \exp_not:N \SI { \fp_to_tl:N \l__Endiagram_tmpa_fp } - { \l__endiagram_energy_unit_tl } + { \exp_not:V \l__endiagram_energy_unit_tl } } } \endiagram_draw:xn @@ -780,7 +785,10 @@ \endiagram_draw:xn { \exp_not:V \l__endiagram_ea_tikz_tl } { - ( \fp_to_tl:N \l__endiagram_ea_connect_end_fp , \fp_to_tl:N \l__Endiagram_tmpa_fp ) + ( + \fp_to_tl:N \l__endiagram_ea_connect_end_fp , + \fp_to_tl:N \l__Endiagram_tmpa_fp + ) node ( ea-end @@ -789,7 +797,10 @@ \int_to_arabic:n { \l__endiagram_ea_count_int } ) { } -- - ( \fp_to_tl:N \l__endiagram_ea_connect_end_fp , \fp_to_tl:N \l__Endiagram_tmpb_fp ) + ( + \fp_to_tl:N \l__endiagram_ea_connect_end_fp , + \fp_to_tl:N \l__Endiagram_tmpb_fp + ) } \bool_if:NT \l__endiagram_ea_label_bool { @@ -800,16 +811,16 @@ !\l__endiagram_ea_own_label_bool } { - \fp_set:Nn \l__Endiagram_tmpb_fp + \fp_set:Nn \l__Endiagram_tmpc_fp { ( \l__Endiagram_tmpb_fp - \l__Endiagram_tmpa_fp ) * \l__endiagram_energy_step_tl } - \tl_set:Nn \l__endiagram_ea_value_tl + \tl_gset:Nx \l__endiagram_ea_value_tl { - ~ = ~ \exp_args:Noo \SI - { \fp_to_tl:N \l__Endiagram_tmpb_fp } - { \l__endiagram_energy_unit_tl } + ~ = ~ \exp_not:N \SI + { \fp_to_tl:N \l__Endiagram_tmpc_fp } + { \exp_not:V \l__endiagram_energy_unit_tl } } } \endiagram_draw:xn @@ -817,9 +828,15 @@ { node[\l__endiagram_ea_label_side_tl] at ($ - ( \fp_to_tl:N \l__endiagram_ea_connect_end_fp , \fp_to_tl:N \l__Endiagram_tmpa_fp ) + ( + \fp_to_tl:N \l__endiagram_ea_connect_end_fp , + \fp_to_tl:N \l__Endiagram_tmpa_fp + ) !\l__endiagram_ea_label_pos_tl! - ( \fp_to_tl:N \l__endiagram_ea_connect_end_fp , \fp_to_tl:N \l__Endiagram_tmpb_fp ) + ( + \fp_to_tl:N \l__endiagram_ea_connect_end_fp , + \fp_to_tl:N \l__Endiagram_tmpb_fp + ) $) { \l__endiagram_ea_label_text_tl \l__endiagram_ea_value_tl } } @@ -827,7 +844,10 @@ \endiagram_draw:xn { \exp_not:V \l__endiagram_ea_connect_tikz_tl } { - ( \fp_to_tl:N \l__endiagram_ea_connect_end_fp , \fp_to_tl:N \l__Endiagram_tmpa_fp ) + ( + \fp_to_tl:N \l__endiagram_ea_connect_end_fp , + \fp_to_tl:N \l__Endiagram_tmpa_fp + ) -- ++ ( @@ -952,15 +972,17 @@ \l__Endiagram_tmpb_fp * \l__endiagram_energy_step_tl - \l__endiagram_energy_zero_tl } - \bool_if:NTF \l__endiagram_energy_round_places_bool - { - \fp_round_places:Nn \l__Endiagram_tmpb_fp - { \l__endiagram_energy_round_tl } - } - { - \fp_round_figures:Nn \l__Endiagram_tmpb_fp - { \l__endiagram_energy_round_tl } - } + % \bool_if:NTF \l__endiagram_energy_round_places_bool + % { + \fp_set:Nn \l__Endiagram_tmpb_fp + { round( \l__Endiagram_tmpb_fp , \l__endiagram_energy_round_tl ) } + % \fp_round_places:Nn \l__Endiagram_tmpb_fp + % { \l__endiagram_energy_round_tl } + % } + % { + % \fp_round_figures:Nn \l__Endiagram_tmpb_fp + % { \l__endiagram_energy_round_tl } + % } \tl_set:Nn \l__Endiagram_tmpb_tl { \fp_to_tl:N \l__Endiagram_tmpb_fp } } \endiagram_draw:nx { } @@ -1306,7 +1328,7 @@ \bool_new:N \l__endiagram_axes_add_ticks_bool \bool_new:N \l__endiagram_energy_bool \bool_new:N \l__endiagram_energy_unit_bool -\bool_new:N \l__endiagram_energy_round_places_bool +% \bool_new:N \l__endiagram_energy_round_places_bool \bool_new:N \l__endiagram_calculate_bool \bool_set_true:N \l__endiagram_calculate_bool @@ -1465,8 +1487,8 @@ \tl_set:Nn \l__endiagram_energy_unit_tl { #1 } \bool_set_true:N \l__endiagram_energy_unit_bool , energy-unit-separator .tl_set:N = \l__endiagram_energy_unit_separator_tl , - energy-round-places .bool_set:N = \l__endiagram_energy_round_places_bool , - energy-round-places .default:n = true , + % energy-round-places .bool_set:N = \l__endiagram_energy_round_places_bool , + % energy-round-places .default:n = true , energy-round .tl_set:N = \l__endiagram_energy_round_tl , calculate .bool_set:N = \l__endiagram_calculate_bool , calculate .default:n = true , @@ -1502,15 +1524,16 @@ % linke y-Achse \bool_if:NT \l__endiagram_energy_unit_bool { - \tl_put_right:Nn \l__endiagram_y_label_text_tl + \tl_put_right:Nx \l__endiagram_y_label_text_tl { - \tl_use:N \l__endiagram_energy_unit_separator_tl - \exp_args:No \si { \l__endiagram_energy_unit_tl } + \exp_not:V \l__endiagram_energy_unit_separator_tl + \exp_not:N \si { \exp_not:V \l__endiagram_energy_unit_tl } } } \bool_if:nT { \l__endiagram_y_axis_left_bool || \l__endiagram_axes_all_bool } { - \bool_if:NF \l__endiagram_y_label_pos_bool { \tl_clear:N \l__endiagram_y_label_pos_tl } + \bool_if:NF \l__endiagram_y_label_pos_bool + { \tl_clear:N \l__endiagram_y_label_pos_tl } \endiagram_draw:xx { -> , \exp_not:V \l__endiagram_y_axis_tikz_tl } { @@ -1650,9 +1673,10 @@ Version history internal commands protected where appropriate - various internal changes, most importantly care of not expanding user input that is not supposed to +2014/06/28 v0.1d - adapt to deprecated expl3 function %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % TODO - the whole code should be cleaned up... an embarrising mess! - \ENcurve und \AddAxisLabel so anpassen, dass Eingaben der Energieskala folgen?! -- revise the whole code especially with respect to fp calculations
\ No newline at end of file +- revise the whole code especially with respect to fp calculations |