% ********************************************************************
% * Formatierungen                                                   *
% ********************************************************************

% Grundlegende Dokumentvorgaben
% ********************************************************************
\ifthenelse{\equal{\schule@typ}{ohne}}{
	% Im eingebundenen Modus keine Vorgaben machen.
}{
	\parindent0pt
}


% Checkboxen
% ********************************************************************
\NewDocumentCommand{\chb}{s}{%
	\IfBooleanTF{#1}{\usym{2611}\xspace}{\usym{2610}\xspace}%
}

% Formatierungsbefehle
% ********************************************************************

% Durchstreichen von Werten für Wertetabellen etc. (\so zur Wahrung
% der Kompatiblität mit älteren Dokumenten)
\newcommand{\so}[1]{\sout{#1}}

% Farben
% ********************************************************************
\ifthenelse{\boolean{schule@farbig}}{}{
	\selectcolormodel{gray} % Farbmodus auf Graustufen setzen
}

% Namen
% ********************************************************************
\newcommand{\person}[1]{\textsc{#1}}

% Symbole
% ********************************************************************
% Eurozeichen
\ExplSyntaxOn
\cs_if_exist:NT \DeclareUnicodeCharacter {
    \DeclareUnicodeCharacter{20AC}{\euro}
}
\ExplSyntaxOff

% Listen
% ********************************************************************
% Umgebungen mit reduziertem Abstand zwischen den items
\newenvironment{smallitemize}
	{\begin{itemize}\itemsep -2pt}{\end{itemize}}
\newenvironment{smallenumerate}
	{\begin{enumerate}\itemsep -2pt}{\end{enumerate}}
\newenvironment{smalldescription}
	{\begin{description}\itemsep -2pt}{\end{description}}

% Tabellen
% ********************************************************************

% Feldtypen
% Feste Breite, linksbündig
\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}


% Tabellen
% ********************************************************************

% Achtung
\newcommand{\achtung}[1]{\textbf{\llap{\usym{26A0}\space}Achtung:}
	\space #1}

% Hinweis
\newcommand{\hinweis}[1]{\textbf{\llap{\usym{1F4A1}\space}Hinweis:}
	\space #1}

% ********************************************************************
% * Wörtliche Rede und Zitate                                        *
% ********************************************************************

% Art der Anführungszeichen
\ifthenelse{\equal{\schule@zitate}{quotes}}{
	\ExecuteQuoteOptions{german=quotes}
}{
	\ExecuteQuoteOptions{german=guillemets}
}

% Stringkennzeichnung für Diagramme
\newcommand{\diastring}[1]{\textquotedbl#1\textquotedbl}

% ********************************************************************
% * Seitenzahlen                                                     *
% ********************************************************************
\newcounter{schule@seitenzahl}

\ExplSyntaxOn
\int_new:N \g_schule_maxAuxInhaltSeitenzahl_int

\cs_new_protected:Npn \schule_set_max_inhaltsseitenzahl:n #1 {
	\iow_now:cx { @auxout }{
		\token_to_str:N \ExplSyntaxOn
		\int_gset:Nn \g_schule_maxAuxInhaltSeitenzahl_int { #1 }
		\token_to_str:N \ExplSyntaxOff
   }
}

\cs_new_protected:Npn \schule_get_max_inhaltsseitenzahl {
	\int_if_zero:nTF \g_schule_maxAuxInhaltSeitenzahl_int
	{\textbf{??}}{\int_use:N \g_schule_maxAuxInhaltSeitenzahl_int}
}


\newcommand{\Seitenzahlen}{
	% Anzahl ermitteln
	\ifcsname schule@geladenModuleAufgaben\endcsname %
		% Bei Dokumenten mit Aufgaben gibt es evtl. Lösungsblätter
		% und einen Erwartungshorizont.
        \ifcsdef{r@SeitePunkt}
            {\setcounter{schule@seitenzahl}{\getpagerefnumber{SeitePunkt}}}%
            {\setcounter{schule@seitenzahl}{\getpagerefnumber{LetzteInhaltsseite}}}%
        \makeatother
		\ifnum\theschule@seitenzahl<1 %
			% Nicht definiert, vmtl. weder Lösungen noch EWH
			\setcounter{schule@seitenzahl}{\ztotpages} %
		\fi %
	\else%
		\setcounter{schule@seitenzahl}{\ztotpages}
	\fi%
	\IfEqCase{\schule@seitenzahlen}{%
		% Keine Seitenzahlen
		{keine}{%
			% keine Seitenzahlen
		}%
		% immer, ohne Anzahl
		{immer}{%
			\thepage%
		}%
		% immer, mit Anzahl
		{immerGesamt}{%
			% Seitenzahlen mit Anzahl
			\schule_set_max_inhaltsseitenzahl:n {\thepage} %Auf jeder Seite aktuallisieren und dadurch hochzählen
            \ifcsdef{r@SeitePunkt}
                {\thepage\xspace von \pageref*{SeitePunkt}}%
                {\thepage\xspace von \xspace\schule_get_max_inhaltsseitenzahl}%
            \makeatother
			% Scheint nicht zu funktionieren: \theschule@seitenzahl
		}%
		% Automatisch (nur bei mehrseitigen Dokumenten),
		% ohne Anzahl
		{auto}{%
			\ifnum\ztotpages=1%
				% keine Seitenzahlen
			\else%
				% nur Seitenzahlen, ohne Anzahl
				\thepage%
			\fi%
		}%
		% Automatisch (nur bei mehrseitigen Dokumenten),
		% mit Anzahl
		{autoGesamt}{%
			% Seitenzahlen mit Anzahl
			\ifnum\theschule@seitenzahl=1%
				% keine Seitenzahlen
			\else%
				\schule_set_max_inhaltsseitenzahl:n {\thepage} %Auf jeder Seite aktuallisieren und dadurch hochzählen
                \ifcsdef{r@SeitePunkt}
                    {\thepage\xspace von \pageref*{SeitePunkt}}%
                    {\thepage\xspace von \xspace\schule_get_max_inhaltsseitenzahl}%
                \makeatother
				% Scheint nicht zu funktionieren: \theschule@seitenzahl%
			\fi%
		}%
	}%
}%
\ExplSyntaxOff

% ********************************************************************
% * Formatierung von Kopf- und Fußzeilen                             *
% ********************************************************************

% Mehrzeilige Kopfzeile? => Gleichmäßige Ausrichtung
\ifthenelse{\boolean{schule@namensfeldAnzeigen}\or
	\boolean{schule@datumAnzeigen}}{
	% Umbrüche zu einzeiligen Texten hinzufügen.
	\newcommand{\schule@kopfUmbruch}{\linebreak}
}{
	% Keine Umbrüche zu einzeiligen Texten hinzufügen.
	\newcommand{\schule@kopfUmbruch}{\xspace}
}

% Kopf, Außenseite
\newcommand{\schule@kopfAussen}[1]{%
	#1%
	% Nummer des Dokuments anzeigen?
	\ifthenelse{\not\equal{\schule@nummer}{0}}{%
		% Nummer an Dokumenttyp anhängen
		\xspace Nr. \schule@nummer%
	}{}%
	% Datumsfeld anzeigen?
	\ifthenelse{\boolean{schule@datumAnzeigen}}{%
		% Mit Datumsfeld
		\linebreak\@date%
	}{%
		% Ohne Datumsfeld
		\schule@kopfUmbruch%
	}%
}

% Kopf, Innenseite
\newcommand{\schule@kopfInnen}{%
	\Fach\xspace\Kurs%
	% Namensfeld anzeigen?
	\ifthenelse{\boolean{schule@namensfeldAnzeigen}}{%
		% Mit Namensfeld
		\linebreak%
		Name: \hspace{5cm}%
	}{
		% Ohne Namensfeld
		\schule@kopfUmbruch%
	}
}

% Kopf, Mitte
\newcommand{\schule@kopfMitte}{\Titel\schule@kopfUmbruch}



% pagestyles:
\def\ps@standard{ % "leerer" Hilfsstil für verbessertes maketitle
}

\def\ps@keineseitenzahl{ %  Seitenzahlen lokal ausblenden (für Material etc.)
	\cfoot{}
}

% Kommandos für lokales Ausblenden der Seitenzahlen
\newcommand{\hierkeineseitenzahl}{\thispagestyle{keineseitenzahl}}
\newcommand{\abhierkeineseitenzahl}{\pagestyle{keineseitenzahl}}

% maketitle anpassen
\let\oldmaketitle\maketitle
\renewcommand{\maketitle}{\oldmaketitle\thispagestyle{standard}}



% ********************************************************************
% * Zusätzliche Makros                                               *
% ********************************************************************

% Grafiken
% ********************************************************************

% Skalierung von TikZ-Grafiken
% Besser: Die Graphik komplett mit \scalebox oder \resizebox zu konvertieren
\newcommand{\skaliereTikZ}[1]{
    \ClassWarning{schule}{Besser: scalebox oder resizebox anstatt skaliereTikZ}
    \tikzstyle{every node}=[scale=#1]
    \tikzstyle{every path}=[scale=#1]
    \tikzstyle{inststyle}+=[rounded corners= #1 * 3mm]
}
