%==================================================================================================================================================
% Package uebungsblatt by Igor Akkerman (c)2000,2001,2002,2003,2004,2005,2006
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License (latest version).
%
% The latest version of this license can be found at
%     http://www.latex-project.org/lppl.txt
%==================================================================================================================================================
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{uebungsblatt}[2006/10/24 by Igor Akkerman (c)2000,2001,2002,2003,2004,2005,2006 v3.2.1 Package zum Setzen von Uebungsblaettern]
%==================================================================================================================================================

\RequirePackage[latin1]{inputenc}
\RequirePackage{fancyhdr}
\RequirePackage{akkcounterlabelpattern}
%-----------------------------------------------------------------------------

\makeatletter

%--------------------------
% blatt (Zaehler)
% Nummer des Uebungsblatts
% (geht nicht als Befehl, da der Wert sonst in der Anzeige nicht automatisch aktualisiert wird.)
%--------------------------
% \blattnummer{<Blattnummer>}
% Setzt den Wert des Zählers blatt auf <Blattnummer>
%--------------------------
\newcounter{blatt}

\newcommand \blattnummer[1] {%
    \setcounter{uebungsblatt@blattnummer}{#1}%
}
%--------------------------

%--------------------------
% aufgabe (Zaehler)
% Nummer der aktuellen Aufgabe
%--------------------------
% \aufgabelabel{<labelmuster>}
% Setzt das Label der Aufgaben auf <labelmuster>.
% <labelmuster> ist ein Muster wie definiert im Paket counterlabelpattern.
%--------------------------
\newcounter{aufgabe}
\setcounter{aufgabe}{1}  % Nummer der ersten Aufgabe standardmäßig 
\newcommand \aufgabelabel[1] {%
    \createcounterlabel {aufgabe} {@aufgabelabel} {#1}%
}
%--------------------------

%--------------------------
% teilaufgabe (Zaehler)
% Nummer der aktuellen Teilaufgabe
%--------------------------
\newcounter{teilaufgabe}
%--------------------------

%--------------------------
% teilteilaufgabe (Zaehler)
% Nummer der aktuellen Teilaufgabe
%--------------------------
\newcounter{teilteilaufgabe}
%--------------------------

%--------------------------
% @inhead (boolean)
% true, wenn gerade im Übungsblatt-Kopf gearbeitet wird (inhead-Modus); false sonst
%--------------------------
% \@inhead{<text>}
% aktiviert den inhead-Modus für <text>, darf nur im Kopf verwendet werden
%--------------------------
% \ifinhead{<danntext>}{<sonsttext>}
% <danntext> im inhead-Modus; <sonsttext> sonst
%--------------------------
\newboolean{@inhead}
\newcommand \@inhead[1] {\setboolean{@inhead}{true}#1\setboolean{@inhead}{false}}
\newcommand \ifinhead[2] {\ifthenelse{\boolean{@inhead}}{#1}{#2}}
%--------------------------

%--------------------------
% \@blatttitel
% Liefert den aktuellen Titel des Übungsblatts.
%--------------------------
% \blatttitel{<titel>}
% Setzt den Blatttitel auf <titel>.
% Der Titel wird im Kopf und bei Beginn des Übungsblatts verwendet.
% Optional kann im Text '\ifinhead{<danntext>}{<sonsttext>}' eingefügt werden,
% was <danntext> lediglich im Kopf an der Stelle erzeugt, ansonsten wird der <sonsttext> erzeugt
% Zum Zeilenumbruch im Kopf wird \\ verwendet.
% Default: Bearbeitung des \theblatt.~Übungsblatts\ifinhead{\\}{}
%--------------------------
\newcommand \@blatttitel {}%
\newcommand \blatttitel[1] {%
    \renewcommand \@blatttitel {#1}%
}
%--------------------------

%--------------------------
% \@blattuntertitel
% Liefert den aktuellen Untertitel des Übungsblatts.
%--------------------------
% \blattuntertitel{<untertitel>}
% Setzt den Blattuntertitel auf <untertitel>.
% Default: <kein Titel>
%--------------------------
\newcommand \@blattuntertitel {}%
\newcommand \blattuntertitel[1] {%
    \renewcommand \@blattuntertitel {#1}%
}
%--------------------------


%--------------------------
% \lvname{<lvname>}
% Setzt den Lehrveranstaltungsnamen auf <lname>
% Der LV-Name erscheint links oben im Header so wie er hier definiert wird)
%--------------------------
\newcommand \lvname[1] {%
    \lhead{#1}%
}
%--------------------------

%--------------------------
% \autoren{<autoren>}
% Setzt die Namen der Autoren auf <autoren>
% Die Autoren erscheinen rechts oben im Header so wie sie hier definiert werden)
%--------------------------
\newcommand \autoren[1] {%
    \rhead{#1}%
}
%--------------------------

%--------------------------
% \begin{@aufgabe} ... \end{@aufgabe}
% Aufgabenskelett ohne Teilaufgaben
%--------------------------
% \begin{aufgabe}[<teilaufgabenlabelmuster>] ... \end{aufgabe}
% Aufgabenskelett mit Teilaufgaben
%--------------------------
\newenvironment{@aufgabe}[1][] {%
    \par%
    \textbf{\@aufgabelabel}%
    \ifthenelse {\equal{#1}{}} {%
        % ohne Teilaufgaben
        \setboolean{@teilaufgaben}{false}%
        \\*[\parskip]%
    }{%
        % mit Teilaufgaben
        \setboolean{@teilaufgaben}{true}%
        \begin{teilaufgaben}{#1}%
    }%
}%
{%
    \ifthenelse{\boolean{@teilaufgaben}}{\end{teilaufgaben}}{}%
    \par%
    \vspace{0.5\baselineskip plus 2pt minus 1pt}%
}

%--------------------------
% \begin{aufgabe} ... \end{aufgabe}
% Aufgabe mit Standardlabel ohne Teilaufgaben
%--------------------------
% \begin{aufgabe}[<teilaufgabenlabelmuster>] ... \end{aufgabe}
% Aufgabe mit Standardlabel und mit Teilaufgaben
%--------------------------
\newenvironment{aufgabe}[1][] {%
    \refstepcounter{aufgabe}%
    \edef \@currentlabel {\theaufgabe}%
    \begin{@aufgabe}[#1]%
}{%
    \end{@aufgabe}%
}
%--------------------------

%--------------------------
% \begin{aufgabe*}{<aufgabelabel>} ... \end{aufgabe*}
% Aufgabe mit Label <aufgabelabel> ohne Teilaufgaben
%--------------------------
% \begin{aufgabe*}[<teilaufgabenlabelmuster>]{<aufgabelabel>} ... \end{aufgabe*}
% Aufgabe mit Label <aufgabelabel> mit Teilaufgaben
%
% <Teilaufgabennummerierung> kann beliebige Werte enthalten.
%--------------------------
% Der Aufgabenzähler wird NICHT erhöht!
%--------------------------
\newenvironment{aufgabe*}[2][] {%
    \let \orig@aufgabelabel \@aufgabelabel%
    \renewcommand \@aufgabelabel {#2}%
    \begin{@aufgabe}[#1]%
}{%
    \end{@aufgabe}%
    \let \@aufgabelabel \orig@aufgabelabel%
}
%--------------------------

%--------------------------
% \teilaufgabe
% Teilaufgabe
%--------------------------
\newcommand \teilaufgabe {%
    \item%
    \edef \@currentlabel {\theaufgabe\,\@teilaufgabelabel}%
}
%--------------------------

%--------------------------
% @teilaufgaben (boolean)
% true, wenn die aktuelle Aufgabe Teilaufgaben enthält; false sonst
%--------------------------
% \begin{teilaufgaben}{<teilaufgabenlabelmuster>} ... \end{teilaufgaben}
% Liste der Teilaufgaben
%--------------------------
\newboolean{@teilaufgaben}
\newenvironment{teilaufgaben}[1] {%
	\createcounterlabel {teilaufgabe} {@teilaufgabelabel} {#1}%
    \begin{list}{\textbf{\@teilaufgabelabel}}{%
        % -- 8 displays larger than other numbers in all modes (arabic,roman,...)
        \setcounter {teilaufgabe} 8%
        \settowidth  \labelwidth {\textbf{\@teilaufgabelabel}}%
        \setlength   \leftmargin \labelwidth%
        \addtolength \leftmargin \labelsep%
        \setlength   \topsep {0pt}%
        \setlength   \itemsep \akk@default@parskip%
        \addtolength \itemsep {-\parsep}%
        \usecounter {teilaufgabe}%
    }%
}{%
    \end{list}%    
}
%--------------------------

\newcommand \aufgaberef[1] {\ref{#1}}
\newcommand \teilaufgaberef[1] {\ref{#1}}

\makeatother
