%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ------------------------------------------------------------------------------------- %
% - chemexec - chemexec.sty ----------------------------------------------------------- %
% - creating (chemical) exercise sheets, chemical macros ------------------------------ %
% ------------------------------------------------------------------------------------- %
% - Clemens Niederberger -------------------------------------------------------------- %
% - 2011/03/06 ------------------------------------------------------------------------ %
% ------------------------------------------------------------------------------------- %
% - http://www.niederberger-berlin.net/2010/08/latex-chemische-formeln-erstellen-iiv/ - %
% - kontakt@niederberger-berlin.net --------------------------------------------------- %
% ------------------------------------------------------------------------------------- %
% - If you have any ideas, questions, suggestions or bugs to report, please feel free - %
% - to contact me. -------------------------------------------------------------------- %
% ------------------------------------------------------------------------------------- %
% Copyright 2011 Clemens Niederberger                                                   %
%                                                                                       %
% This work may be distributed and/or modified under the                                %
% conditions of the LaTeX Project Public License, either version 1.3                    %
% of this license or (at your option) any later version.                                %
% The latest version of this license is in                                              %
%   http://www.latex-project.org/lppl.txt                                               %
% and version 1.3 or later is part of all distributions of LaTeX                        %
% version 2005/12/01 or later.                                                          %
%                                                                                       %
% This work has the LPPL maintenance status `maintained'.                               %
%                                                                                       %
% The Current Maintainer of this work is Clemens Niederberger.                          %
%                                                                                       %
% This work consists of the files chemexec.sty, chemexec_de.tex                         %
% and chemexec_en.tex                                                                   %
% ------------------------------------------------------------------------------------- %
% 27. April 2009 Version 0.1
%   `chemexec' ist zun"achst als eine lose Makrosammlung entstanden
%   und stellt einige kleinere Umgebungen und Befehle zur Verf"ugung,
%   die das Arbeiten mit Chemischen und mathematischen Formeln
%   erleichtern sollen.
%   Zentrales anliegen war ein komfortabler Umgang mit Aufgaben
%   und L"osungen vor allem f"ur das Erstellen von "Ubungsbl"attern
%   und den Einsatz in Lehrb"uchern u."a.
%
% 29. Oktober 2009 Version 0.2
%   `chemexec' hat viele neue Optionen erhalten, einige Makros sind
%   hinzugekommen. Ausserdem wurden einige Fehler berichtigt und der
%   Code vereinheitlicht.
%
% "Anderungen:
% 19. Oktober 2009 Version 0.3
%    - Inkonsistenzen bei Aufgaben/L"osungen/Schemas bereinigt.
%    - definition-Umgebung neu definiert, dass das Leerzeichen hinter der Umgebung
%      verschwindet und sie flexibel gestalte werden kann (s.u.).
%   Neue Features:
%    - Option `chapter':
%      Aufgaben, L"osungen und Schema-Umgebung werden damit chapter-weise
%      statt section-weise durchnummeriert.
%    - Option `shade':
%      definition-Umgebung wird damit nicht umrahmt, sondern hellrosa
%      unterlegt.
%      -> neue Umgebung `defformula'
%    - Option `here':
%      Schema-Umgebung wird mit `H' positioniert.
%    - chem. Kleinigkeiten:
%      Stereo-Deskriptoren
%    - Extras f"ur `ochem':
%      verschiedene Makros durch package("chemexec") f"ur `ochem' (bzw. `ochemcol')
%      verf"ugbar machen
% 24. Oktober 2009 Version 0.4
%    - Paketoptionen "uberarbeit, Optionen mit xkeyval setzen, eine Reihe
%      weiterer Optionen:
%      flexible Gestaltung der Definition- und Beispiel-Umgebung, der Aufgaben/
%      L"osungen
% 25. Oktober 2009 Version 0.4b
%    - Bugfix: Option shade hat framed-Umgebung umdefiniert -- gel"ost
%    - Bugfix: wenn die Klasse report o. book gew"ahlt war, konnte \makeloesung
%      nur zusammen mit der Option `chapter' verwendet werden -- gel"ost
%    - Kleinere "Anderungen an \makeloesung
%    - NEU: \lewisbar{}{} und die Exkurs-Umgebung
% 27. Oktober 2009 Version 0.4c
%    - Bugfix: fehlerhafter Hyperlink bei Exkurs-Umgebung wenn hyperref-
%      Paket verwendet wird -- gel"ost.
%    - L"ange der Exkurs-Linien an \textwidth anpassen
%    - Benennung interner Makros und Zaehler vereinheitlicht, durch @-Character
%      interne Verwendung sichergestellt
% 28. Oktober 2009 Version 0.4d
%    - Kompatibilit"at der lewis, lewisbar und ox-Befehle mit Martin Hensels `mhchem'
%      Paket. Befehle sind nun innerhalb \ce{} einsetzbar.
%    - Befehle \om und \op hinzugef"ugt.
%    - Befehle \ronf und \sconf f"ur Einatz im Fließtext verbessert. Um optionales
%      Argument erweitert.
%    - Erscheinungsbild der lewis-Befehle verbessert.
%    - Kleinigkeiten am Erscheinungsbild der Beispiele ge"andert.
% 29. Oktober 2009 Version 0.4e
%    - S"aurereste `mhchem'-tauglich gemacht
%    - atomconnect modifiziert
% 24. Januar 2010 Version 0.5
%    - Listenumgebung `alphlist' hinzugef"ugt
% 11. Februar 2010 Version 0.5a
%    - Die Befehle lewis u. lewisbar flexibilisiert.
% 18. Februar 2010 Version 0.5b
%    - \reaction und \reactions hinzugef"ugt
% 09. September 2010 Version 0.5c
%    - Befehle \lewis und \lewisbar in \lw und \lwbar umbenannt, um Kompatibilit"at mit
%      `chemfig' zu gewährleisten
% 01. M"arz 2011 Version 0.6
%    - Bugfix in der Beispiel-Umgebung
% 06. M"arz 2011 Version 1.0
%    - atomconnect entfernt
%    - exkurs-Umgebung auf tikz umgestellt
%    - \rconf u. \sconf auf tikz umgestellt
%    - \auge auf tikz umgestellt
%    - lw/lwbar entfernt (Lewisformeln k"onnen mit ChemFig realisiert werden.)
%    - Schema-Umgebung entfernt
%    - Option `here' entfernt
% ------------------------------------------------------------------------------------- %
% TODO:
%    - bug bei \reaction: whitespace nach nummerierter Reaktion
%    - doloesung Option für section-weises bzw. chapter-weises sammeln geben
%    - doloesung und makeloesung nochmal auf Herz und Nieren pr"ufen
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\def\ce@version{v1.0}
\def\ce@date@de{06. M\"arz 2011}
\def\ce@date@en{March 06. 2011}
\providecommand{\CEversion}{\ce@version}
\providecommand{\CEdate}[1]{
  \ifthenelse{\equal{#1}{de}}{\ce@date@de}{}
  \ifthenelse{\equal{#1}{en}}{\ce@date@en}{}
}
\ProvidesPackage{chemexec}[2011/03/01]
\typeout{CHEMEXEC \ce@version}
\typeout{2011/03/01 Clemens Niederberger}
\typeout{Customizing your (chemical) exercise sheets.}
\typeout{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - Optionen -------------------------------------------------------------------------- %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - Pakete ---------------------------------------------------------------------------- %
\RequirePackage{calc}
\RequirePackage{amsmath}
\RequirePackage{ifthen}
\RequirePackage{accents}
\RequirePackage{framed}
\RequirePackage{xcolor}
\RequirePackage{xkeyval}
\RequirePackage{tikz}
  \usetikzlibrary{calc}
% - interne Befehle --------------------------------------------------------- %
\newcommand{\@aufgabe@name}{Aufgabe}
\newcommand{\@aufgabe@groesse}{normalsize}
\newcommand{\@loesung@titel}{L\"osung}
\newcommand{\@beispiel@name}{Beispiel}
\newcommand{\@exkurs@name}{EXKURS}
\newcommand{\@exkurs@toc}{section}
\newcommand{\@exkurs@currenttoc}{\@exkurs@toc}
\newcommand{\@exkurs@color}{dunkelblau}
\newcommand{\@exkurs@currentcolor}{\@exkurs@color}
\xdefinecolor{dunkelblau}{rgb}{0,0.33,0.62}
\xdefinecolor{dunkelrot}{rgb}{0.4392,0.0627,0.0627}
\newcommand{\@definition@shadecolor}{pink!50}
\newcommand{\@definition@color}{dunkelblau}
\newcommand{\@definition@currentshadecolor}{\@definition@shadecolor}%
\newcommand{\@definition@currentcolor}{}%
\newcommand{\@bsprule@linecolor}{dunkelblau}
\newcommand{\@numbers@numcolor}{dunkelblau}
% - Bedingungen ------------------------------------------------------------ %
\newif\if@useaufg\@useaufgfalse
\newif\if@usechapter\@usechapterfalse
%\newif\if@usehere\@useherefalse
\newif\if@shaded
% - Optionen --------------------------------------------------------------- %
\DeclareOptionX[CE]{exercise}{\@useaufgtrue}
\DeclareOptionX[CE]{chapter}{\@usechaptertrue}
%\DeclareOptionX[CE]{here}{\@useheretrue}
\DeclareOptionX[CE]{english}{
  \renewcommand\@aufgabe@name{Exercise}
  \renewcommand\@loesung@titel{Solution}
  \renewcommand{\@beispiel@name}{Example}
  \renewcommand{\@exkurs@name}{EXCURSUS}
}
\define@key[CE]{chemexec.sty}%
    {color}{
        \renewcommand{\@bsprule@linecolor}{#1}
        \renewcommand{\@definition@color}{#1}
        \renewcommand{\@numbers@numcolor}{#1}
        \renewcommand{\@exkurs@color}{#1}
    }
\define@key[CE]{chemexec.sty}%
    {exersize}{
        \renewcommand{\@aufgabe@groesse}{#1}
    }
\define@key[CE]{chemexec.sty}%
    {numcolor}{
        \renewcommand{\@numbers@numcolor}{#1}
    }
\define@key[CE]{chemexec.sty}%
    {shadecolor}{
        \renewcommand{\@definition@shadecolor}{#1}
    }
\define@key[CE]{chemexec.sty}%
    {linecolor}{
        \renewcommand{\@bsprule@linecolor}{#1}
    }
\define@boolkey+[CE]{chemexec.sty}[CE@]{shade}{%
  \ifCE@shade
    \@shadedtrue
  \else
    \@shadedfalse
  \fi
}{
  \PackageWarning{chemexec}{Option `shade' is not boolean!}%
}

\ProcessOptionsX[CE]

\IfFileExists{ulem.sty}{%
  \RequirePackage[normalem]{ulem}
  \providecommand*{\unterstr}[1]{\uline{##1}}%
}{%
  \providecommand*{\unterstr}[1]{##1}%
}
\IfFileExists{mhchem.sty}{%
  \RequirePackage[version=3]{mhchem}
}{%
  \typeout{`mhchem' ist nicht installiert. Manche Befehle werden nicht definiert.}
}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - Vektoren & math. Kleinigkeiten ---------------------------------------------------- %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Vektoren
\providecommand{\vek}[1]{ \ensuremath{ \accentset{\rightarrow}{#1} } }              % Pfeildarstellung
\providecommand{\vekzw}[2]{ \ensuremath{ \begin{pmatrix}#1\\#2\end{pmatrix} } }     % 2er Spaltenvektor
\providecommand{\vekdr}[3]{ \ensuremath{ \begin{pmatrix}#1\\#2\\#3\end{pmatrix} } } % 3er Spaltenvektor
\providecommand\abs[1]{\ensuremath{\left\lvert#1\right\rvert}}                      % Betrag
% Operatoren
\DeclareMathOperator\arccot{arccot} % Arcuscotangens
\DeclareMathOperator\arsinh{arsinh} % area sinus hyperbolicus
\DeclareMathOperator\arcosh{arcosh} % area cosinus hyperbolicus
\DeclareMathOperator\artanh{artanh} % area tangengs hyperbolicus
\DeclareMathOperator\arcoth{arcoth} % area cotangens hyperbolicus

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - chem. Kleinigkeiten --------------------------------------------------------------- %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\providecommand\el{\ensuremath{e^\ominus}}                    % Elektronen
\providecommand\prt{\ensuremath{p^\oplus}}                    % Protonen
\providecommand\ntr{\ensuremath{n^0}}                         % Neutronen
\providecommand{\om}[1][]{\ensuremath{{}^{#1\ominus}}}        % negative Ladung
\providecommand{\op}[1][]{\ensuremath{{}^{#1\oplus}}}         % positive Ladung
\providecommand\Rcip{\textit{(R)}}                            % stereo-Deskriptor
\providecommand\Scip{\textit{(S)}}                            %   "
\providecommand\E{\textit{(E)}}                               %   "
\providecommand\Z{\textit{(Z)}}                               %   "
\providecommand\Dfi{\textsc{d}}                               %   "
\providecommand\Lfi{\textsc{l}}                               %   "

\providecommand\sconf[1][S]{%                                       % S-Konfiguration
  \tikz[baseline=(a.base),text height=1.5ex,text depth=.25ex]{\draw  node(a) at (0,0) {#1};\draw[->,thick,rotate=90] (20:.3cm) arc (20:340:.3cm);}
}
\providecommand\rconf[1][R]{%                                       % R-Konfiguration
  \tikz[baseline=(a.base),text height=1.5ex,text depth=.25ex]{\draw  node(a) at (0,0) {#1};\draw[<-,thick,rotate=90] (20:.3cm) arc (20:340:.3cm);}
}

\IfFileExists{mhchem.sty}{%
\newcounter{save}%
\if@usechapter%
\newcounter{reaction}[chapter]%
\renewcommand\thereaction{R\,\thechapter.\arabic{equation}}%
\else%
\newcounter{reaction}%
\renewcommand\thereaction{R\,\arabic{equation}}%
\fi

\long\def\react@##1{%
\setcounter{save}{\value{equation}}\setcounter{equation}{\value{reaction}}\def\theequation{\thereaction}%
\begin{equation}\ce{##1}\end{equation}%
\setcounter{reaction}{\value{equation}}\setcounter{equation}{\value{save}}\def\theequation{\arabic{equation}}%
}

\long\def\react@nonumber##1{\begin{equation*}\ce{##1}\end{equation*}}

\providecommand\reaction{\@ifstar{\react@nonumber}{\react@}}

\long\def\rctns@##1{%
\setcounter{save}{\value{equation}}\setcounter{equation}{\value{reaction}}\def\theequation{\thereaction}%
\begin{align}\cee{##1}\end{align}%
\setcounter{reaction}{\value{equation}}\setcounter{equation}{\value{save}}\def\theequation{\arabic{equation}}%
}
\long\def\rctns@nonumber##1{%
\begin{align*}\cee{##1}\end{align*}%
}
\providecommand\reactions{\@ifstar{\rctns@nonumber}{\rctns@}}
}{}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - extras f"ur `ochem' --------------------------------------------------------------- %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\providecommand\stec{\textasteriskcentered}                   % opt. aktives Zentrum (f"ur ochem)
\providecommand{\auge}{%                                      % Bild eines Auges (f"ur ochem)
\tikz{\draw (0,0)--(20:7mm);\draw (0,0)--(-20:7mm);\fill (0,0) -- (-20:2.5mm) arc (-20:20:2.5mm);\draw (-20:6.5mm) arc (-20:20:6.5mm);}
}

%% FOLGENDER CODE WURDE AUS ECHEM.STY VON INGO KL"OCKL "UBERNOMMEN UND TEILWEISE
%% ANGEPASST
% Symbol fuer einzelnes Elektron
\newcommand{\@el}
{{\unitlength=.12\baselineskip%
  \begin{picture}(0,0)
    \put(0,0){\circle*{1.2}}
  \end{picture}}}
% liegender Balken fuer Elektronenpaar
\newcommand{\@elpairh}
{{\unitlength=.07\baselineskip%
  \linethickness{0.5\unitlength}%
  \begin{picture}(0,0)
    \put(-3,0){\line(1,0){6}}
  \end{picture}}}
% aufrechter Balken fuer Elektronenpaar
\newcommand{\@elpairv}
{{\unitlength=.07\baselineskip%
  \linethickness{0.5\unitlength}%
  \begin{picture}(2,0)(-1,0)
    \put(0,-3){\line(0,1){6}}
  \end{picture}}}

\providecommand{\echhbar}{\@elpairh}
\providecommand{\echvbar}{\@elpairv}

% die horizontalen Symbole (upper und lower)
\newsavebox{\cbox}

\providecommand{\hdu}[2][\@el]
{\sbox{\cbox}{#2}%
 \makebox[0pt][l]{\raisebox{1.35\ht\cbox}
   {\makebox[\wd\cbox]{#1}}}%
}
\providecommand{\hddu}[1]
{\sbox{\cbox}{#1}%
 \makebox[0pt][l]{\raisebox{1.3\ht\cbox}
   {\makebox[\wd\cbox]
     {\@el\hspace*{0.6\ht\cbox}\@el}}}%
}
\providecommand{\hdl}[2][\@el]
{\sbox{\cbox}{#2}%
 \makebox[0pt][l]{\raisebox{-\dp\cbox-0.3\ht\cbox}
   {\makebox[\wd\cbox]{#1}}}%
}
\providecommand{\hddl}[1]
{\sbox{\cbox}{#1}%
 \makebox[0pt][l]{\raisebox{-\dp\cbox-0.3\ht\cbox}
   {\makebox[\wd\cbox]
     {\@el\hspace*{0.6\ht\cbox}\@el}}}%
}

% die vertikalen Symbole
\providecommand{\vd}[2][\@el]
{\sbox{\cbox}{#2}\hspace*{0.1\ht\cbox}%
 \raisebox{0.5\ht\cbox}{#1}%
 \hspace*{0.1\ht\cbox}%
}
\providecommand{\vdd}[1]
{\sbox{\cbox}{#1}\hspace*{0.2\ht\cbox}%
 \makebox[0pt][l]{\raisebox{0.2\ht\cbox}{\@el}}%
 \raisebox{0.8\ht\cbox}{\@el}%
 \hspace*{0.23\ht\cbox}%
}
%% OBIGER CODE WURDE AUS ECHEM.STY VON INGO KL"OCKL "UBERNOMMEN UND TEILWEISE
%% ANGEPASST.

\IfFileExists{mhchem.sty}{
\DeclareRobustCommand\Hpl{\cf{H$^\oplus$}}            % Protonen
\DeclareRobustCommand\Hyd{\cf{OH$^\ominus$}}          % Hydroxid
\DeclareRobustCommand\ox[2]{\ensuremath{\accentset{##1}{\cf{##2}}}}
%\DeclareRobustCommand\lw[3][0]{
%\ensuremath{
%\ifcase ##3
%\or%1
% \ifcase ##1
%  \vd{##2}\cf{##2}
% \or
%  \hdu{##2}\cf{##2}
% \or
%  \cf{##2}\vd{##2}
% \or
%  \hdl{##2}\cf{##2}
% \else
% \fi
%\or%2
% \ifcase ##1
%  \vd{##2}\hdu{##2}\cf{##2}
% \or
%  \hdu{##2}\cf{##2}\vd{##2}
% \or
%  \hdl{##2}\cf{##2}\vd{##2}
% \or
%  \vd{##2}\hdl{##2}\cf{##2}
% \or
%  \vd{##2}\cf{##2}\vd{##2}
% \or
%  \hdu{##2}\hdl{##2}\cf{##2}
% \else
% \fi
%\or%3
% \ifcase ##1
%  \vd{##2}\hdu{##2}\cf{##2}\vd{##2}
% \or
%  \hdu{##2}\hdl{##2}\cf{##2}\vd{##2}
% \or
%  \vd{##2}\hdl{##2}\cf{##2}\vd{##2}
% \or
%  \vd{##2}\hdu{##2}\hdl{##2}\cf{##2}
% \else
% \fi
%\or%4
% \vd{##2}\hdu{##2}\hdl{##2}\cf{##2}\vd{##2}
%\or%5
% \ifcase ##1
%  \vd{##2}\hddu{##2}\hdl{##2}\cf{##2}\vd{##2}
% \or
%  \vd{##2}\hdu{##2}\hdl{##2}\cf{##2}\vdd{##2}
% \or
%  \vd{##2}\hddl{##2}\hdu{##2}\cf{##2}\vd{##2}
% \or
%  \vdd{##2}\hdu{##2}\hdl{##2}\cf{##2}\vd{##2}
% \else
% \fi
%\or%6
% \ifcase ##1
%  \vdd{##2}\hddu{##2}\hdl{##2}\cf{##2}\vd{##2}
% \or
%  \vd{##2}\hddu{##2}\hdl{##2}\cf{##2}\vdd{##2}
% \or
%  \vd{##2}\hddl{##2}\hdu{##2}\cf{##2}\vdd{##2}
% \or
%  \vdd{##2}\hddl{##2}\hdu{##2}\cf{##2}\vd{##2}
% \or
%  \vd{##2}\hddu{##2}\hddl{##2}\cf{##2}\vd{##2}
% \or
%  \vdd{##2}\hdu{##2}\hdl{##2}\cf{##2}\vdd{##2}
% \else
% \fi
%\or%7
% \ifcase ##1
%  \vdd{##2}\hddu{##2}\hddl{##2}\cf{##2}\vd{##2}
% \or
%  \vdd{##2}\hddu{##2}\hdl{##2}\cf{##2}\vdd{##2}
% \or
%  \vd{##2}\hddl{##2}\hddu{##2}\cf{##2}\vdd{##2}
% \or
%  \vdd{##2}\hdu{##2}\hddl{##2}\cf{##2}\vdd{##2}
% \else
% \fi
%\or%8
% \vdd{##2}\hddu{##2}\hddl{##2}\cf{##2}\vdd{##2}
%\else
%  \PackageError{chemexec}{Wrong argument in lw}
%\fi
%}}

%\DeclareRobustCommand\lwbar[3][0]{
%\ensuremath{
%\ifcase ##3
%\or%1
% \ifcase ##1
%  \vd{##2}\cf{##2}
% \or
%  \hdu{##2}\cf{##2}
% \or
%  \cf{##2}\vd{##2}
% \or
%  \hdl{##2}\cf{##2}
% \else
% \fi
%\or%2
% \ifcase ##1
%  \vd{##2}\hdu{##2}\cf{##2}
% \or
%  \hdu{##2}\cf{##2}\vd{##2}
% \or
%  \hdl{##2}\cf{##2}\vd{##2}
% \or
%  \vd{##2}\hdl{##2}\cf{##2}
% \or
%  \vd{##2}\cf{##2}\vd{##2}
% \or
%  \hdu{##2}\hdl{##2}\cf{##2}
% \else
% \fi
%\or%3
% \ifcase ##1
%  \vd{##2}\hdu{##2}\cf{##2}\vd{##2}
% \or
%  \hdu{##2}\hdl{##2}\cf{##2}\vd{##2}
% \or
%  \vd{##2}\hdl{##2}\cf{##2}\vd{##2}
% \or
%  \vd{##2}\hdu{##2}\hdl{##2}\cf{##2}
% \else
% \fi
%\or%4
% \vd{##2}\hdu{##2}\hdl{##2}\cf{##2}\vd{##2}
%\or%5
% \ifcase ##1
%  \vd{##2}\hdu[\@elpairh]{##2}\hdl{##2}\cf{##2}\vd{##2}
% \or
%  \vd{##2}\hdu{##2}\hdl{##2}\cf{##2}\vd[\@elpairv]{##2}
% \or
%  \vd{##2}\hdl[\@elpairh]{##2}\hdu{##2}\cf{##2}\vd{##2}
% \or
%  \vd[\@elpairv]{##2}\hdu{##2}\hdl{##2}\cf{##2}\vd{##2}
% \else
% \fi
%\or%6
% \ifcase ##1
%  \vd[\@elpairv]{##2}\hdu[\@elpairh]{##2}\hdl{##2}\cf{##2}\vd{##2}
% \or
%  \vd{##2}\hdu[\@elpairh]{##2}\hdl{##2}\cf{##2}\vd[\@elpairv]{##2}
% \or
%  \vd{##2}\hdl[\@elpairh]{##2}\hdu{##2}\cf{##2}\vd[\@elpairv]{##2}
% \or
%  \vd[\@elpairv]{##2}\hdl[\@elpairh]{##2}\hdu{##2}\cf{##2}\vd{##2}
% \or
%  \vd{##2}\hdu[\@elpairh]{##2}\hdl[\@elpairh]{##2}\cf{##2}\vd{##2}
% \or
%  \vd[\@elpairv]{##2}\hdu{##2}\hdl{##2}\cf{##2}\vd[\@elpairv]{##2}
% \else
% \fi
%\or%7
% \ifcase ##1
%  \vd[\@elpairv]{##2}\hdu[\@elpairh]{##2}\hdl[\@elpairh]{##2}\cf{##2}\vd{##2}
% \or
%  \vd[\@elpairv]{##2}\hdu[\@elpairh]{##2}\hdl{##2}\cf{##2}\vd[\@elpairv]{##2}
% \or
%  \vd{##2}\hdl[\@elpairh]{##2}\hdu[\@elpairh]{##2}\cf{##2}\vd[\@elpairv]{##2}
% \or
%  \vd[\@elpairv]{##2}\hdu{##2}\hdl[\@elpairh]{##2}\cf{##2}\vd[\@elpairv]{##2}
% \else
% \fi
%\or%8
% \vd[\@elpairv]{##2}\hdu[\@elpairh]{##2}\hdl[\@elpairh]{##2}\cf{##2}\vd[\@elpairv]{##2}
%\else
%  \PackageError{chemexec}{Wrong argument in lwbar}
%\fi
%}}

%\DeclareRobustCommand\elecpair[3][0]{
%\ensuremath{
%\ifcase ##3
%\or%1
% \ifcase ##1
%  \vd[\@elpairv]{##2}\cf{##2}
% \or
%  \cf{##2}\vd[\@elpairv]{##2}
% \else\fi
%\or%2
%  \hdl[\@elpairh]{##2}\hdu[\@elpairh]{##2}\cf{##2}
%\or%3
% \ifcase ##1
%  \vd[\@elpairv]{##2}\hdl[\@elpairh]{##2}\hdu[\@elpairh]{##2}\cf{##2}
% \or
%  \hdl[\@elpairh]{##2}\hdu[\@elpairh]{##2}\cf{##2}\vd[\@elpairv]{##2}
% \else\fi
%\else
%\fi
%}}



}{
\providecommand\ox[2]{ \ensuremath{\accentset{\text{#1}}{\text{#2}}} }
\providecommand\Hpl{\ensuremath{\text{H}\op}}            % Protonen
\providecommand\Hyd{\ensuremath{\text{OH}\om}}           % Hydroxid

%\providecommand\lw[3][0]{
%\ensuremath{
%\ifcase #3
%\or%1
% \ifcase #1
%  \vd{#2}\text{#2}
% \or
%  \hdu{#2}\text{#2}
% \or
%  \text{#2}\vd{#2}
% \or
%  \hdl{#2}\text{#2}
% \else
% \fi
%\or%2
% \ifcase #1
%  \vd{#2}\hdu{#2}\text{#2}
% \or
%  \hdu{#2}\text{#2}\vd{#2}
% \or
%  \hdl{#2}\text{#2}\vd{#2}
% \or
%  \vd{#2}\hdl{#2}\text{#2}
% \or
%  \vd{#2}\text{#2}\vd{#2}
% \or
%  \hdu{#2}\hdl{#2}\text{#2}
% \else
% \fi
%\or%3
% \ifcase #1
%  \vd{#2}\hdu{#2}\text{#2}\vd{#2}
% \or
%  \hdu{#2}\hdl{#2}\text{#2}\vd{#2}
% \or
%  \vd{#2}\hdl{#2}\text{#2}\vd{#2}
% \or
%  \vd{#2}\hdu{#2}\hdl{#2}\text{#2}
% \else
% \fi
%\or%4
% \vd{#2}\hdu{#2}\hdl{#2}\text{#2}\vd{#2}
%\or%5
% \ifcase #1
%  \vd{#2}\hddu{#2}\hdl{#2}\text{#2}\vd{#2}
% \or
%  \vd{#2}\hdu{#2}\hdl{#2}\text{#2}\vdd{#2}
% \or
%  \vd{#2}\hddl{#2}\hdu{#2}\text{#2}\vd{#2}
% \or
%  \vdd{#2}\hdu{#2}\hdl{#2}\text{#2}\vd{#2}
% \else
% \fi
%\or%6
% \ifcase #1
%  \vdd{#2}\hddu{#2}\hdl{#2}\text{#2}\vd{#2}
% \or
%  \vd{#2}\hddu{#2}\hdl{#2}\text{#2}\vdd{#2}
% \or
%  \vd{#2}\hddl{#2}\hdu{#2}\text{#2}\vdd{#2}
% \or
%  \vdd{#2}\hddl{#2}\hdu{#2}\text{#2}\vd{#2}
% \or
%  \vd{#2}\hddu{#2}\hddl{#2}\text{#2}\vd{#2}
% \or
%  \vdd{#2}\hdu{#2}\hdl{#2}\text{#2}\vdd{#2}
% \else
% \fi
%\or%7
% \ifcase #1
%  \vdd{#2}\hddu{#2}\hddl{#2}\text{#2}\vd{#2}
% \or
%  \vdd{#2}\hddu{#2}\hdl{#2}\text{#2}\vdd{#2}
% \or
%  \vd{#2}\hddl{#2}\hddu{#2}\text{#2}\vdd{#2}
% \or
%  \vdd{#2}\hdu{#2}\hddl{#2}\text{#2}\vdd{#2}
% \else
% \fi
%\or%8
% \vdd{#2}\hddu{#2}\hddl{#2}\text{#2}\vdd{#2}
%\else
%  \PackageError{chemexec}{Wrong argument in lw}
%\fi
%}}

%\providecommand\lwbar[3][0]{
%\ensuremath{
%\or%1
% \ifcase #1
%  \vd{#2}\text{#2}
% \or
%  \hdu{#2}\text{#2}
%  \text{#2}\vd{#2}
% \or
%  \hdl{#2}\text{#2}
% \else
% \fi
%\or%2
% \ifcase #1
%  \vd{#2}\hdu{#2}\text{#2}
% \or
%  \hdu{#2}\text{#2}\vd{#2}
% \or
%  \hdl{#2}\text{#2}\vd{#2}
% \or
%  \vd{#2}\hdl{#2}\text{#2}
% \or
%  \vd{#2}\text{#2}\vd{#2}
% \or
%  \hdu{#2}\hdl{#2}\text{#2}
% \else
% \fi
%\or%3
% \ifcase #1
%  \vd{#2}\hdu{#2}\text{#2}\vd{#2}
% \or
%  \hdu{#2}\hdl{#2}\text{#2}\vd{#2}
% \or
%  \vd{#2}\hdl{#2}\text{#2}\vd{#2}
% \or
%  \vd{#2}\hdu{#2}\hdl{#2}\text{#2}
% \else
% \fi
%\or%4
% \vd{#2}\hdu{#2}\hdl{#2}\text{#2}\vd{#2}
%\or%5
% \ifcase #1
%  \vd{#2}\hdu[\@elpairh]{#2}\hdl{#2}\text{#2}\vd{#2}
% \or
%  \vd{#2}\hdu{#2}\hdl{#2}\text{#2}\vd[\@elpairv]{#2}
% \or
%  \vd{#2}\hdl[\@elpairh]{#2}\hdu{#2}\text{#2}\vd{#2}
% \or
%  \vd[\@elpairv]{#2}\hdu{#2}\hdl{#2}\text{#2}\vd{#2}
% \else
% \fi
%\or%6
% \ifcase #1
%  \vd[\@elpairv]{#2}\hdu[\@elpairh]{#2}\hdl{#2}\text{#2}\vd{#2}
% \or
%  \vd{#2}\hdu[\@elpairh]{#2}\hdl{#2}\text{#2}\vd[\@elpairv]{#2}
% \or
%  \vd{#2}\hdl[\@elpairh]{#2}\hdu{#2}\text{#2}\vd[\@elpairv]{#2}
% \or
%  \vd[\@elpairv]{#2}\hdl[\@elpairh]{#2}\hdu{#2}\text{#2}\vd{#2}
% \or
%  \vd{#2}\hdu[\@elpairh]{#2}\hdl[\@elpairh]{#2}\text{#2}\vd{#2}
% \or
%  \vd[\@elpairv]{#2}\hdu{#2}\hdl{#2}\text{#2}\vd[\@elpairv]{#2}
% \else
% \fi
%\or%7
% \ifcase #1
%  \vd[\@elpairv]{#2}\hdu[\@elpairh]{#2}\hdl[\@elpairh]{#2}\text{#2}\vd{#2}
% \or
%  \vd[\@elpairv]{#2}\hdu[\@elpairh]{#2}\hdl{#2}\text{#2}\vd[\@elpairv]{#2}
% \or
%  \vd{#2}\hdl[\@elpairh]{#2}\hdu[\@elpairh]{#2}\text{#2}\vd[\@elpairv]{#2}
%  \vd[\@elpairv]{#2}\hdu{#2}\hdl[\@elpairh]{#2}\text{#2}\vd[\@elpairv]{#2}
% \else
% \fi
%\or%8
% \vd[\@elpairv]{#2}\hdu[\@elpairh]{#2}\hdl[\@elpairh]{#2}\text{#2}\vd[\@elpairv]{#2}
%\else
%  \PackageError{chemexec}{Wrong argument in lwbar}
%\fi
%}}
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - Anionen --------------------------------------------------------------------------- %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\IfFileExists{mhchem.sty}{
  \providecommand\nitrat{\ensuremath{\cf{NO3}}}
  \providecommand\nitrit{\ensuremath{\cf{NO2}}}
  \providecommand\sulfat{\ensuremath{\cf{SO4}}}
  \providecommand\sulfit{\ensuremath{\cf{SO3}}}
  \providecommand\phosphat{\ensuremath{\cf{PO4}}}
  \providecommand\phosphit{\ensuremath{\cf{PO3}}}
  \providecommand\carbonat{\ensuremath{\cf{CO3}}}
}{
  \providecommand\nitrat{\ensuremath{\text{NO}_3}}
  \providecommand\nitrit{\ensuremath{\text{NO}_2}}
  \providecommand\sulfat{\ensuremath{\text{SO}_4}}
  \providecommand\sulfit{\ensuremath{\text{SO}_3}}
  \providecommand\phosphat{\ensuremath{\text{PO}_4}}
  \providecommand\phosphit{\ensuremath{\text{PO}_3}}
  \providecommand\carbonat{\ensuremath{\text{CO}_3}}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - Exkurs-Umgebung definieren -------------------------------------------------------- %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\define@key{exkurs}{toc}[\@exkurs@toc]{%
    \renewcommand{\@exkurs@currenttoc}{#1}}%
\define@key{exkurs}{color}[\@exkurs@color]{%
    \renewcommand{\@exkurs@currentcolor}{#1}}%
\presetkeys%
  {exkurs}
  {toc=\@exkurs@toc,color=\@exkurs@color}
  {}
\def\@kopfrule{%
\tikz{\shade[top color=\@exkurs@currentcolor] (0,0) rectangle ($(\textwidth,-3mm)$);}
}
\def\@fussrule{%
\tikz{\shade[top color=white,bottom color=\@exkurs@currentcolor] (0,0) rectangle ($(\textwidth,-3mm)$);}
}

\newenvironment{exkurs}[2][]%
{\setkeys{exkurs}{#1}%
\vspace{1.2\baselineskip}\par\noindent\@kopfrule\par\noindent\vspace{.8\baselineskip}%
 \parbox[c]{\textwidth}{\centering\bfseries\Large{\color{\@exkurs@currentcolor}\@exkurs@name:~}#2}%
 {\addcontentsline{toc}{\@exkurs@currenttoc}{{\textcolor{\@exkurs@currentcolor}{\@exkurs@name}:~}#2}}\\%
}%
{%
\vspace{.8\baselineskip}\par\noindent\@fussrule\vspace{1.2\baselineskip}%
  \normalsize\par%
}%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - Beispiel-Umgebung ----------------------------------------------------------------- %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\@bsprule@currentlinecolor}{}%
\define@key{bsprule}{linecolor}[\@bsprule@linecolor]{%
    \renewcommand{\@bsprule@currentlinecolor}{#1}}%
\presetkeys%
  {bsprule}
  {linecolor=\@bsprule@currentlinecolor}
  {}

% Zähler für die Beispiele
\if@usechapter
  \newcounter{beispiel}[chapter]
  \renewcommand\thebeispiel{\thechapter.\arabic{beispiel}:}
\else
  \newcounter{beispiel}
  \renewcommand\thebeispiel{\arabic{beispiel}:}
\fi
% Umgebung
\newenvironment{beispiel}[1][linecolor=\@bsprule@linecolor]%
 {\setkeys{bsprule}{#1}%
  \refstepcounter{beispiel}%
  \vspace{1.5\baselineskip}{\color{\@bsprule@currentlinecolor}\hrule}\par\nobreak%
  \vspace{3pt}\noindent\small\textbf{\@beispiel@name~\thebeispiel}%
  \par\nobreak\@afterheading%
 }%
 {\par\nobreak\vspace{2pt}{\color{\@bsprule@currentlinecolor}\hrule}\vspace{1.5\baselineskip}\normalsize\ignorespacesafterend\par%
 }%

% zweites, drittes, ... Beispiel
\providecommand\bsp{\refstepcounter{beispiel}\par\noindent\textbf{\@beispiel@name~\thebeispiel}\newline}%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - Definitions-Umgebung -------------------------------------------------------------- %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\define@key{definition}{shadecolor}[\@definition@shadecolor]{%
    \renewcommand{\@definition@currentshadecolor}{#1}}%
\define@key{definition}{color}[\@definition@color]{%
    \renewcommand{\@definition@currentcolor}{#1}}%
\define@boolkey{definition}{shade}[true]{%
  \ifKV@definition@shade
    \@shadedtrue
  \else
    \@shadedfalse
  \fi
}

\presetkeys%
  {definition}
  {shadecolor=\@definition@shadecolor,color=\@definition@color}
  {}

\newenvironment{definition}[1][]
 { \setkeys{definition}{#1}%
   \if@shaded
     \def\FrameCommand{\fboxsep=\FrameSep \colorbox{\@definition@currentshadecolor}}%
   \fi
   \MakeFramed{\advance\hsize-\width \FrameRestore}%
   \noindent{\large\scshape\color{\@definition@currentcolor}\unterstr{Definition}~}%
 }
 { \endMakeFramed%
 }

\newenvironment{defformel}[1][\hsize]{%
  \def\FrameCommand{\colorbox{white}}%
  \MakeFramed {\hsize#1\advance\hsize-\width\FrameRestore}\centering}%
 {\endMakeFramed}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - Aufgaben, sectionweise gezählt ---------------------------------------------------- %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\if@useaufg
  \gdef\@aufgabe@actualgroesse{\csname\@aufgabe@groesse\endcsname}
  %\RequirePackage{etex}
  %\reserveinserts{32000}
  \IfFileExists{ifthen.sty}{%
    \RequirePackage{ifthen}
    \IfFileExists{calc.sty}{%
      \RequirePackage{calc}
      \if@usechapter
        \newcounter{@aufgabe}[chapter]
        \renewcommand{\the@aufgabe}{\thechapter.\arabic{@aufgabe}}
      \else
        \newcounter{@aufgabe}[section]
        \renewcommand{\the@aufgabe}{\arabic{@aufgabe}.}
      \fi
      \newcounter{@Aufgabe}
      \if@usechapter
        \newcounter{@zaehler}[chapter]
      \else
        \newcounter{@zaehler}
      \fi
      \newcounter{@nummer}
      %%% der eigentliche Befehl
      \DeclareRobustCommand\aufgabe[1]{%
        \refstepcounter{@aufgabe}%
        \stepcounter{@Aufgabe}%
        \stepcounter{@zaehler}%
        \stepcounter{@nummer}%
        \bigskip%
        \par\noindent{\@aufgabe@actualgroesse\bfseries{\color{\@numbers@numcolor}\the@aufgabe}~%
        \ifthenelse{\equal{####1}{}}%
        {\@aufgabe@name}{####1}}%
        \par\nobreak\@afterheading\normalfont\medskip%\newline%
      }%
    }{%
      \PackageError{chemexec}{%
      The `calc' package is apparently unavailable.\MessageBreak
      Turn off the `aufgabe' option and come back again.}{%
      If you want to use the possibilties of the `aufgabe' option,\MessageBreak
      you have to install the `calc' package from CTAN or wherever\MessageBreak
      you get your LaTeX  packages.}%
    }%
  }{%
      \PackageError{chemexec}{%
      The `ifthen' package is apparently unavailable.\MessageBreak
      Turn off the `aufgabe' option and come back again.}{%
      If you want to use the possibilties of the `aufgabe' option,\MessageBreak
      you have to install the `ifthen' package from CTAN or wherever\MessageBreak
      you get your LaTeX  packages.}%
  }

\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - Lösungen eingeben ----------------------------------------------------------------- %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcounter{@loesung}
\newcounter{@Loesung}
%\newcommand{\@loesung@text}{}
\edef\empty#1{#1}
\DeclareRobustCommand\loesung[2][\@loesung@titel]{
  %\renewcommand{\@loesung@text}{#2}
  \setcounter{@loesung}{\value{@zaehler}}
  \stepcounter{@Loesung}
  {%
  \csname protected@xdef\expandafter\endcsname\csname @tempa\endcsname{%
  \expandafter\gdef\csname @loesung@nr\arabic{@Loesung}\endcsname{\the@loesung}}%
  \expandafter\expandafter\expandafter
  }\csname @tempa\endcsname
  {%
  \csname protected@xdef\expandafter\endcsname\csname @tempa\endcsname{%
  \if@usechapter
    \expandafter\gdef\csname @loesung@kap\arabic{@Loesung}\endcsname{\thechapter}
  \else
    \expandafter\gdef\csname @loesung@kap\arabic{@Loesung}\endcsname{\arabic{section}}
  \fi}%
  \expandafter\expandafter\expandafter
  }\csname @tempa\endcsname
  \expandafter\gdef\csname @loesung@loes\arabic{@Loesung}\endcsname{ #2}
  %\savebox{\csname loes\arabic{Loesung}\endcsname}{#2}
  \expandafter\gdef\csname @loesung@name\arabic{@Loesung}\endcsname{\noexpand #1}
}

\newcounter{@mylist}
\renewcommand\the@mylist{\alph{@mylist})}
\newcommand*{\alphlabel}[1][\stepcounter{@mylist}\the@mylist]{\normalfont #1\hfil}
\newenvironment{alphlist}{
\begin{list}{}%
            {\let\makelabel\alphlabel
             \setlength\labelwidth{15pt}%
             \setlength\leftmargin{\labelwidth+\labelsep+.5em}%
            }%
}{
\setcounter{@mylist}{0}
\end{list}
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - Alle Lösungen ausgeben ------------------------------------------------------------ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcounter{@zahl}
\newcounter{@a}
\def\@loesung@altKap{0}
\DeclareRobustCommand\makeloesung{%
 \@ifundefined{@ausgabe}{\@ifundefined{dolo}{%
  \setcounter{@zahl}{\value{@Loesung}+1}%
  \setcounter{@a}{1}%
  \whiledo { \value{@a} < \value{@zahl} }{%
       \def\@loesung@ausg{\csname @loesung@loes\arabic{@a}\endcsname}%
       \edef\@loesung@Name{\csname @loesung@name\arabic{@a}\endcsname}%
       \edef\@loesung@Kap{\csname @loesung@kap\arabic{@a}\endcsname}%
       \edef\@loesung@Nr{\csname @loesung@nr\arabic{@a}\endcsname}%
       \@ifundefined{@loesung@loes\arabic{@a}}%
       {}%
       {\ifnum \@loesung@Kap=\@loesung@altKap%
          \bigskip%
          \par\nobreak\@afterheading\noindent%
        \else%
          \if@usechapter%
            {\smallskip%
            \par\noindent\hspace*{.1\textwidth}\color{\@numbers@numcolor}{\LARGE\@loesung@Kap. \chaptername{}}}\\%
            \par\nobreak\@afterheading\vspace{2pt}{\color{\@numbers@numcolor}\hrule\vspace{4pt}\noindent}%
          \else%
            \bigskip%
            \par\noindent%
          \fi%
        \fi%
        %\medskip%
        {\@aufgabe@actualgroesse\bfseries{\color{\@numbers@numcolor}\if@usechapter\@loesung@Kap.\fi\@loesung@Nr\if@usechapter\else.\fi~}\@loesung@Name}\medskip\newline%
        \@loesung@ausg%
       }%
       \let\@loesung@altKap=\@loesung@Kap%
       \stepcounter{@a}%
  }%
  \bigskip\par%
  \def\@loesung@ausgabe{voll}%
 }{\errmessage{Sie haben schon doloesung verwendet!}}}{\errmessage{Sie haben makeloesung schon vorher verwendet!}}%
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - Lösungen section-weise ausgeben --------------------------------------------------- %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\DeclareRobustCommand\doloesung{%
 \@ifundefined{ausgabe}{%
  \setcounter{@a}{\value{@nummer}-\value{@zaehler}+1}%
  \setcounter{@zahl}{\value{@nummer}+1}%
  \whiledo { \value{@a} < \value{@zahl} }{%
       \edef\@loesung@Name{\csname @loesung@name\arabic{@a}\endcsname}%
       \edef\@loesung@Kap{\csname @loesung@kap\arabic{@a}\endcsname}%
       \edef\@loesung@Nr{\csname @loesung@nr\arabic{@a}\endcsname}%
       \def\@loesung@ausg{\csname @loesung@loes\arabic{@a}\endcsname}%
       \@ifundefined{@loesung@loes\arabic{@a}}%
       {}%
       {\bigskip
        \par\noindent%%
        {\@aufgabe@actualgroesse\bfseries{\color{\@numbers@numcolor}\if@usechapter\@loesung@Kap.\fi\@loesung@Nr\if@usechapter\else.\fi~}\@loesung@Name}\par\nobreak\@afterheading\medskip%\newline%
        \@loesung@ausg%
       }%
       \let\@loesung@altKap=\@loesung@Kap%
       \stepcounter{@a}%
  }%
  \bigskip\par%
  \setcounter{@zaehler}{0}%
  \setcounter{@nummer}{\value{@Loesung}}%
  \def\dolo{voll}%
 }{\errmessage{Sie haben schon makeloesung verwendet!}}%
}

\makeatother
\else
\fi