summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/schule/latex/schule.mod.Bewertung.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/schule/latex/schule.mod.Bewertung.code.tex')
-rw-r--r--macros/latex/contrib/schule/latex/schule.mod.Bewertung.code.tex465
1 files changed, 465 insertions, 0 deletions
diff --git a/macros/latex/contrib/schule/latex/schule.mod.Bewertung.code.tex b/macros/latex/contrib/schule/latex/schule.mod.Bewertung.code.tex
new file mode 100644
index 0000000000..c5a7d1d79f
--- /dev/null
+++ b/macros/latex/contrib/schule/latex/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}
+ }
+ }
+}