PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rechnen mit Latex: Notenschlüssel



whoopi19
11-06-2010, 11:16
Hallo,
ich erstelle im Moment meine Klausuren mit dem Paket exam. Dort werden automatisch die Fragen durchnummeriert und eine Punkteübersicht erstellt. Jetzt hätte ich gern noch einen automatisch generierten Notenschlüssel erstellt, der sich auf die jeweilige Maximalpunktzahl bezieht. Es soll also eine Tabelle erstellt werden, in der drin steht:
1,0 31-32
1,3 29-30
1,7 27-28
usw.

Gibt es so etwas bereits als fertiges Latex-Paket oder kann mir vielleicht jemand sagen, wie ich dies in Latex berechnen lassen kann?

Herzlichen Dank!

Schweinebacke
14-06-2010, 07:18
Bei so einem Notenschlüssel ist das Problem, dass eine variable Anzahl von Punkten auf eine diskrete Menge an Noten abgebildet werden soll. Das geht nicht immer auf. Also ist das Hauptproblem nicht, eine Schrittwiete o. ä. auszurechnen, sondern die Frage, wohin die "Restpunkte" gerechnet werden sollen. Ich habe im Beispiel mal unfair alle Restpunkte auf die 6 gerechnet. Für die Schüler angenehmer ist die Variante, wenn das \iftrue im Code durch \iffalse ersetzt wird. Dann gibt es ggf. einfach keine gant schlechten Noten. Zwei (nämlich einmal mit \iftrue und einmal mit \iffalse) weitere Varianten wären, wenn man Nstep bei jedem Schleifendurchlauf neu anpasst.

\documentclass{article}

\makeatletter
\newcounter{Nstep}
\newcounter{Nrun}
\newcounter{Nstartpoint}
\newcounter{Nendpoint}
\makeatletter
\newcommand*{\Notenspiegel}[1]{%
\iftrue
\setcounter{Nstep}{#1}% Schrittweite
\divide \value{Nstep} by 16 % Es wird abgerundet.
\else
\setcounter{Nstep}{\numexpr #1/16\relax}% Es wird gerundet.
\fi
\setcounter{Nrun}{0}%
\setcounter{Nendpoint}{#1}%
\begin{flushleft}%
\@whilenum \value{Nrun}<16\do {% \@whilenum ist in source2e.pdf dokumentiert
\setcounter{Nstartpoint}{%
\numexpr \value{Nendpoint}-\value{Nstep}+1\relax}%
\ifnum \value{Nstartpoint}<0 \setcounter{Nstartpoint}{0}\fi
\ifnum \value{Nendpoint}>0
\ifcase \value{Nrun}\relax
1,0 \or 1,3 \or 1,7 \or 2,0 \or 2,3 \or 2,7 \or
3,0 \or 3,3 \or 3,7 \or 4,0 \or 4,3 \or 4,7 \or
5,0 \or 5,3 \or 5,7 \or 6,0
\fi
\ifnum \value{Nrun}=15\relax \setcounter{Nstartpoint}{0}\fi
\ifnum \value{Nstartpoint}=\value{Nendpoint}\relax
\makebox[1em][r]{\theNstartpoint}\\
\else
\makebox[1em][r]{\theNstartpoint}--\makebox[1em][r]{\theNendpoint}\\
\fi
\fi
\addtocounter{Nendpoint}{-\value{Nstep}}%
\stepcounter{Nrun}%
}%
\end{flushleft}
}
\makeatother

\begin{document}
\Notenspiegel{32}

\Notenspiegel{25}

\Notenspiegel{99}
\end{document}
Näheres zu \numexpr findet sich übrigens im e-TeX-Manual.

whoopi19
14-06-2010, 11:42
Hallo Schweinebacke,

das sind super aus. Herzlichen Dank für die Hilfe. Ich hatte zwischenzeitlich mit R die Spiegel erstellt und wollte sie dann einbinden, aber so ist es natürlich viel eleganter. Danke!