diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/schule/schule.mod.Bewertung.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/schule/schule.mod.Bewertung.code.tex | 465 |
1 files changed, 465 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/schule/schule.mod.Bewertung.code.tex b/Master/texmf-dist/tex/latex/schule/schule.mod.Bewertung.code.tex new file mode 100644 index 00000000000..c5a7d1d79f0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/schule/schule.mod.Bewertung.code.tex @@ -0,0 +1,465 @@ +% ******************************************************************** +% * 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} + } + } +} |