% ******************************************************************** % * Bewertung * % ******************************************************************** % Metadaten % ******************************************************************** \DeclareExerciseProperty{erwartungen} % ******************************************************************** % Erwartungen * % ******************************************************************** % Zur Speicherung der Erwartungen werden die Eigenschaften von xsim % Aufgaben erweitert. Hierzu ist es erforderlich, dass die Inhalte % der Umgebung expandiert oder serialisiert (detokenized) werden % und dem "SetExerciseProperty"-Makro als Wert für den Schlüssel % "erwartungen" übergeben werden. % Um den folgenden Quelltext halbwegs lesbar zu halten, wird auf % das environ-Paket zurückgegriffen und viele Dinge aus LaTeX3 genutzt. \ExplSyntaxOn % Nötige Speichermöglichkeiten % ******************************************************************** \str_new:N \schule_zeilen_erwartungen_str \str_new:N \schule_aufgaben_erwartungen_str \int_new:N \schule_aufgaben_punkte_int \int_new:N \schule_aufgaben_zusatzpunkte_int \int_new:N \schule_aufgaben_punkte_ges_int \int_new:N \schule_aufgaben_zusatzpunkte_ges_int \bool_new:N \schule_erwartungen_zeile_gerade_bool % Erwartungen-Umgebung % ******************************************************************** \NewEnviron{erwartungen}{ \exp_args:Nno\SetExerciseProperty{erwartungen}{\BODY} } % Einzelerwartung in Form bringen \NewDocumentCommand{\erwartung}{m m O{}}{% %Zeilenfarbe \bool_if:NTF \schule_erwartungen_zeile_gerade_bool { \bool_gset_false:N \schule_erwartungen_zeile_gerade_bool \tl_gput_right:Nn \schule_zeilen_erwartungen_str {\detokenize{\rowcolor{black!10}}} }{ \bool_gset_true:N \schule_erwartungen_zeile_gerade_bool \tl_gput_right:Nn \schule_zeilen_erwartungen_str {\detokenize{\rowcolor{white}}} } \IfEqCase{\schule@erwartungshorizontStil}{ {simpel}{ \tl_gput_right:Nn \schule_zeilen_erwartungen_str {\detokenize{#1 & & & \\ \hline}} }% }[% % Standard oder Einzel \int_gadd:Nn \schule_aufgaben_punkte_int {\_str_to_int_with_zero:n{#2}} %Punkte \int_gadd:Nn \schule_aufgaben_zusatzpunkte_int {\_str_to_int_with_zero:n{#3}} %Zusatzpunkte \tl_gput_right:Nn \schule_zeilen_erwartungen_str {\detokenize{#1 & }} \tl_gput_right:Nn \schule_zeilen_erwartungen_str {\_schule_punkte_anzeige:nn {\_str_to_int_with_zero:n{#2}}{\_str_to_int_with_zero:n{#3}}} %Punkte \tl_gput_right:Nn \schule_zeilen_erwartungen_str {\detokenize{ & \\ \hline}} %Zeile ] } % Erwartungshorizont % ******************************************************************** % Hilfsfunktionen % -------------------------------------------------------------------- % String in Zahl mit 0 beachten \cs_new:Npn \_str_to_int_with_zero:n #1 { \str_if_eq:nnTF {#1} {} {0} {#1} } % Anzeige für Punkte \cs_new:Npn \_schule_punkte_anzeige:nn #1 #2 { \int_compare:nT {#1 > 0}{#1} \int_compare:nT {#2 > 0}{\space +#2} } \cs_new:Npn \_schule_erwartungen_punkte_speichern { %Punkte speichern, wenn > 0 \int_compare:nT {\schule_aufgaben_punkte_int > 0}{\exp_args:Nnx\SetExerciseProperty{points}{\int_use:N \schule_aufgaben_punkte_int}} \int_compare:nT {\schule_aufgaben_zusatzpunkte_int > 0}{\exp_args:Nnx\SetExerciseProperty{bonus-points}{\int_use:N \schule_aufgaben_zusatzpunkte_int}} } % Zeile für die Aufgabe in der Tabelle setzen (Standard). \cs_new:Npn \_schule_aufgaben_erwartungen_zeile { \detokenize{\specialrule{.05em}{0em}{0em}}% \detokenize{\rowcolor{black!20}\bfseries} \GetExerciseName\space\GetExerciseProperty{counter} \detokenize{& \bfseries}% \_schule_punkte_anzeige:nn {\int_use:N \schule_aufgaben_punkte_int}{\int_use:N \schule_aufgaben_zusatzpunkte_int} \detokenize{& \\}% \detokenize{\specialrule{.1em}{0em}{0em}} } % Zeile für die Aufgabe in der Tabelle setzen (Simple). \cs_new:Npn \_schule_aufgaben_erwartungen_zeile_simple { \detokenize{\specialrule{.05em}{0em}{0em}}% \detokenize{\rowcolor{black!20}\bfseries} \GetExerciseName\space\GetExerciseProperty{counter} \detokenize{& \usym{1F642} & \usym{1F610} & \usym{1F641} \\}% \detokenize{\specialrule{.1em}{0em}{0em}} } % Erwartungshorizont (Eine Tabelle pro Aufgabe) % -------------------------------------------------------------------- \newcommand{\schule@erwartungshorizontEinzeltabellen}{ %Aufgabenausgabe leeren \str_gclear:N \schule_aufgaben_erwartungen_str \ForEachUsedExerciseByID{% %Variablen für neue Aufgabe neu initialisieren \str_gclear:N \schule_zeilen_erwartungen_str \int_gzero:N \schule_aufgaben_punkte_int \int_gzero:N \schule_aufgaben_zusatzpunkte_int \bool_gset_false:N \schule_erwartungen_zeile_gerade_bool %Definition der Aufgabe in entsprechende Befehle laden \def\ExerciseType{##1}% \def\ExerciseID{##2}% \GetExercisePropertyTF{erwartungen}{\PropertyValue}{} %Punkte setzen \_schule_erwartungen_punkte_speichern %Zusammengebautetes wieder serialisieren \tokenize{% \schule@aEHCode% }{% \schule_zeilen_erwartungen_str } % Überschrift \subsection*{\GetExerciseName\space##3} \vspace*{-1ex} % Tabelle setzen \begin{longtable}{|p{.65\linewidth}|r|r|}\hline % Kopfzeile \rowcolor{black!20} \textbf{Die Schülerin/der Schüler\dots} & \textbf{max. Punkte} & \textbf{erreicht}% %% \tabularnewline\specialrule{.1em}{0em}{0em} % % Erwartungen \schule@aEHCode% % Fusszeile \specialrule{.05em}{0em}{0em} \rowcolor{black!20} \textbf{Gesamt} & \textbf{\_schule_punkte_anzeige:nn {\int_use:N \schule_aufgaben_punkte_int}{\int_use:N \schule_aufgaben_zusatzpunkte_int}} & \tabularnewline\hline \end{longtable} } \subsection*{Gesamt} \punktuebersicht \section*{Notenverteilung} \notenverteilung \clearpage } % Erwartungshorizont (Eine Tabelle für alles) % -------------------------------------------------------------------- \newcommand{\schule@erwartungshorizontStandard}{ %Aufgabenausgabe leeren \str_gclear:N \schule_aufgaben_erwartungen_str \int_gzero:N \schule_aufgaben_punkte_ges_int \int_gzero:N \schule_aufgaben_zusatzpunkte_ges_int \ForEachUsedExerciseByID{% %Variablen für neue Aufgabe neu initialisieren \str_gclear:N \schule_zeilen_erwartungen_str \int_gzero:N \schule_aufgaben_punkte_int \int_gzero:N \schule_aufgaben_zusatzpunkte_int \bool_gset_false:N \schule_erwartungen_zeile_gerade_bool %Definition der Aufgabe in entsprechende Befehle laden \def\ExerciseType{##1}% \def\ExerciseID{##2}% \GetExercisePropertyTF{erwartungen}{\PropertyValue}{} %Gesamtaufgabe \tl_gput_right:Nx \schule_aufgaben_erwartungen_str \_schule_aufgaben_erwartungen_zeile \int_gadd:Nn \schule_aufgaben_punkte_ges_int {\schule_aufgaben_punkte_int} %Punkte \int_gadd:Nn \schule_aufgaben_zusatzpunkte_ges_int {\schule_aufgaben_zusatzpunkte_int} %Zusatzpunkte \_schule_erwartungen_punkte_speichern %Zusammenbauen \str_gconcat:NNN \schule_aufgaben_erwartungen_str \schule_aufgaben_erwartungen_str \schule_zeilen_erwartungen_str } %Zusammengebautetes wieder serialisieren \tokenize{% \schule@aEHCode% }{% \schule_aufgaben_erwartungen_str } \begin{longtable}{|p{.65\linewidth}|r|r|}\hline % Kopfzeile \rowcolor{black!20} \textbf{Die~Schülerin/der~Schüler\dots} & \textbf{max.~Punkte} & \textbf{erreicht}% \tabularnewline\specialrule{.1em}{0em}{0em} % % Erwartungen \schule@aEHCode% % Fusszeile \specialrule{.05em}{0em}{0em} \rowcolor{black!20} \textbf{Gesamt} & \textbf{\_schule_punkte_anzeige:nn {\int_use:N \schule_aufgaben_punkte_ges_int}{\int_use:N \schule_aufgaben_zusatzpunkte_ges_int}} & \tabularnewline\hline \end{longtable} \section*{Notenverteilung} \notenverteilung \clearpage } % Erwartungshorizont (Eine Tabelle für alles, keine Punkte, Smilies) % -------------------------------------------------------------------- \newcommand{\schule@erwartungshorizontSimpel}{ %Aufgabenausgabe leeren \str_gclear:N \schule_aufgaben_erwartungen_str \ForEachUsedExerciseByID{% %Variablen für neue Aufgabe neu initialisieren \str_gclear:N \schule_zeilen_erwartungen_str \bool_gset_false:N \schule_erwartungen_zeile_gerade_bool %Definition der Aufgabe in entsprechende Befehle laden \def\ExerciseType{##1}% \def\ExerciseID{##2}% \GetExercisePropertyTF{erwartungen}{\PropertyValue}{} %Gesamtaufgabe \tl_gput_right:Nx \schule_aufgaben_erwartungen_str \_schule_aufgaben_erwartungen_zeile_simple %Zusammenbauen \str_gconcat:NNN \schule_aufgaben_erwartungen_str \schule_aufgaben_erwartungen_str \schule_zeilen_erwartungen_str } %Zusammengebautetes wieder serialisieren \tokenize{% \schule@aEHCode% }{% \schule_aufgaben_erwartungen_str } \begin{longtable}{|p{.8\linewidth}|c|c|c|}\hline % Erwartungen \schule@aEHCode% \end{longtable} \clearpage } % Erwartungshorizont abhängig vom gewählten Stil setzen. % Zur Zeit nur teilweise möglich \newcommand{\erwartungshorizont}{ % Stil \IfEqCase{\schule@erwartungshorizontStil}{ % Einzeltabellen {einzeltabellen}{ \schule@erwartungshorizontEinzeltabellen }% % Ohne Punkte, mit Smilies {simpel}{ \schule@erwartungshorizontSimpel }% }[% % Standard => Alles in eine Tabelle \schule@erwartungshorizontStandard ] } % Erwartungshorizont anzeigen? % -------------------------------------------------------------------- \ifthenelse{\boolean{schule@erwartungshorizontAnzeigen}}{% \ifthenelse{\equal{\schule@erwartungshorizontStil}{genord-punkte}}{% \AtBeginDocument{% \DTLloaddb[]{namen}{\schule@erwartungshorizontPunkteDatei} % }% }{} \AtEndDocument{% \clearpage % ggf. Seitenzahlenreset \ifthenelse{\boolean{schule@ende@inhalt@gesetzt}}{}{% \pagenumbering{Roman}% \setboolean{schule@ende@inhalt@gesetzt}{true}% } \cfoot{\thepage} \ohead{Erwartungshorizont\schule@kopfUmbruch} \section*{Erwartungshorizont} \erwartungshorizont %Neue Werte eintragen \xsim_update_list:n {points} \xsim_update_list:n {bonus-points} } }{% } \ExplSyntaxOff % Notenverteilung % ******************************************************************** % Zuordnung von Noten zu Punkten \newcommand{\schule@punkteZuNote}[1]{\GetGradeRequirementForGoal{#1}{points}{}{}} \newcommand{\schule@notenschemaSetzen}[1]{ \expandafter\DeclareGradeDistribution\expandafter{#1} } \schule@notenschemaSetzen{\schule@notenschema} % Notenverteilung anzeigen % -------------------------------------------------------------------- \newcommand{\notenverteilung}{ \ifthenelse{\boolean{schule@kmkPunkte}}{ % Mit KMK-Notenpunkten % ---------------------------------------------------------------- \parbox{.24\linewidth}{ \tiny \begin{tabular}{|p{0.55ex}p{0.5\linewidth}|r|r|}\hline \rowcolor{black!20} \multicolumn{2}{|l|}{\textbf{Notenpunkte}} & \textbf{$\ge$ P.} \\\hline \textbf{15} & (sehr gut\,$+$) & $\schule@punkteZuNote{15}$ \\\hline \rowcolor{black!10} \textbf{14} & (sehr gut) & $\schule@punkteZuNote{14}$ \\\hline \textbf{13} & (sehr gut\,$-$) &$\schule@punkteZuNote{13}$ \\\hline \rowcolor{black!10} \textbf{12} & (gut\,$+$) & $\schule@punkteZuNote{12}$ \\\hline \end{tabular} } \parbox{.24\linewidth}{ \tiny \begin{tabular}{|p{0.55ex}p{0.5\linewidth}|r|r|}\hline \rowcolor{black!20} \multicolumn{2}{|l|}{\textbf{Notenpunkte}} & \textbf{$\ge$ P.} \\\hline \textbf{11} & (gut) & $\schule@punkteZuNote{11}$ \\\hline \rowcolor{black!10} \textbf{10} & (gut\,$-$) & $\schule@punkteZuNote{10}$ \\\hline \textbf{9} & (befriedigend\,$+$) &$\schule@punkteZuNote{9}$ \\\hline \rowcolor{black!10} \textbf{8} & (befriedigend) & $\schule@punkteZuNote{8}$ \\\hline \end{tabular} } \parbox{.24\linewidth}{ \tiny \begin{tabular}{|p{0.55ex}p{0.5\linewidth}|r|r|}\hline \rowcolor{black!20} \multicolumn{2}{|l|}{\textbf{Notenpunkte}} & \textbf{$\ge$ P.} \\\hline \textbf{7} & (befriedigend$-$) & $\schule@punkteZuNote{7}$ \\\hline \rowcolor{black!10} \textbf{6} & (ausreichend\,$+$) & $\schule@punkteZuNote{6}$ \\\hline \textbf{5} & (ausreichend) & $\schule@punkteZuNote{5}$ \\\hline \rowcolor{black!10} \textbf{4} & (ausreichend\,$-$) & $\schule@punkteZuNote{4}$ \\\hline \end{tabular} } \parbox{.24\linewidth}{ \tiny \begin{tabular}{|p{0.55ex}p{0.5\linewidth}|r|r|}\hline \rowcolor{black!20} \multicolumn{2}{|l|}{\textbf{Notenpunkte}} & \textbf{$\ge$ P.} \\\hline \textbf{3} & (mangelhaft\,$+$) & $\schule@punkteZuNote*{3}$ \\\hline \rowcolor{black!10} \textbf{2} & (mangelhaft) & $\schule@punkteZuNote*{2}$ \\\hline \textbf{1} & (mangelhaft\,$-$) & $\schule@punkteZuNote*{1}$ \\\hline \rowcolor{black!10} \textbf{0} & (ungenügend) & $0$ \\\hline \end{tabular} } }{ % Ohne Notenpunkte % ---------------------------------------------------------------- \parbox{.24\linewidth}{ \tiny \begin{tabular}{|p{0.6\linewidth}|r|r|}\hline \rowcolor{black!20}\textbf{Note} & \textbf{$\ge$ P.} \\\hline sehr gut plus & $\schule@punkteZuNote{15}$\\\hline \rowcolor{black!10} sehr gut & $\schule@punkteZuNote{14}$\\\hline sehr gut minus & $\schule@punkteZuNote{13}$\\\hline \rowcolor{black!10} gut plus & $\schule@punkteZuNote{12}$\\\hline \end{tabular} } \parbox{.24\linewidth}{ \tiny \begin{tabular}{|p{0.6\linewidth}|r|r|}\hline \rowcolor{black!20}\textbf{Note} & \textbf{$\ge$ P.} \\\hline gut & $\schule@punkteZuNote{11}$\\\hline \rowcolor{black!10} gut minus & $\schule@punkteZuNote{10}$ \\\hline befriedigend plus & $\schule@punkteZuNote{9}$\\\hline \rowcolor{black!10} befriedigend & $\schule@punkteZuNote{8}$\\\hline \end{tabular} } \parbox{.24\linewidth}{ \tiny \begin{tabular}{|p{0.6\linewidth}|r|r|}\hline \rowcolor{black!20}\textbf{Note} & \textbf{$\ge$ P.} \\\hline befriedigend minus & $\schule@punkteZuNote{7}$\\\hline \rowcolor{black!10} ausreichend plus & $\schule@punkteZuNote{6}$\\\hline ausreichend & $\schule@punkteZuNote{5}$\\\hline \rowcolor{black!10} ausreichend minus & $\schule@punkteZuNote{4}$\\\hline \end{tabular} } \parbox{.24\linewidth}{ \tiny \begin{tabular}{|p{0.6\linewidth}|r|r|}\hline \rowcolor{black!20}\textbf{Note} & \textbf{$\ge$ P.} \\\hline mangelhaft plus & $\schule@punkteZuNote{3}$\\\hline \rowcolor{black!10} mangelhaft & $\schule@punkteZuNote{2}$\\\hline mangelhaft minus & $\schule@punkteZuNote{1}$\\\hline \rowcolor{black!10} ungenügend & $0$ \\\hline \end{tabular} } } }