halbe Punkte lassen sich auch erschlagen ...
Code:
\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\newcounter{gesamtpunkte}
\newcounter{nenner}
\setcounter{nenner}{8}%<--bei der Vergabe von \punkte{n} zu beachten (n/nenner)
\newcounter{pzi}%
\newcounter{pzr}%
\newcounter{pzn}%
\newcounter{pzni}%
\newcounter{pznii}%
\newcounter{pzri}%
\newcounter{pzrii}%
\makeatletter
\newcommand*\teile[4]{%Teile #1/#2, übergebe ganzzahligen Anteil in #3 und Rest in #4
\@ifundefined{c@#3}{\@nocountererr{#3}}{%
\@ifundefined{c@#4}{\@nocountererr{#4}}{%
\begingroup
\setcounter{#3}{#1}%
\setcounter{#4}{#1}%
\global\divide\csname c@#3\endcsname #2\relax
\multiply\csname c@#3\endcsname #2\relax
\global\advance\csname c@#4\endcsname -\csname c@#3\endcsname
\endgroup
}%
}%
}
\makeatother
\newcommand*\pz[1]{%
\setcounter{pzi}{#1}% Integeranteil
\setcounter{pzr}{#1}% und Rest
\teile{#1}{\value{nenner}}{pzi}{pzr}%
\ifnum\value{pzi}>0 \makebox[0pt][r]{\thepzi\,}\fi% nur ausgeben, wenn nicht Null
\ifnum\value{pzr}>0% wenn es einen Rest gibt
%Kürzen: Test, ob Nenner durch Zähler teilbar ist:
\teile{\value{nenner}}{\value{pzr}}{pzni}{pzri}%
\ifnum\value{pzri} = 0
\setcounter{pzn}{\value{pzni}}%
\setcounter{pzr}{1}%
\else% Nenner war nicht durch Zähler teilbar, also
%Kürzen: Test, ob Nenner durch 2 teilbar ist:
\setcounter{pzn}{\value{nenner}}%
\teile{\value{nenner}}{2}{pzni}{pzri}%
\ifnum\value{pzri} = 0
%Nenner ist durch 2 teilbar, ist es der Zähler?
\teile{\value{pzr}}{2}{pznii}{pzrii}%
\ifnum\value{pzrii} = 0
\setcounter{pzn}{\value{pzni}}%
\setcounter{pzr}{\value{pznii}}%
\fi
\fi
\teile{\value{nenner}}{3}{pzni}{pzri}%
\ifnum\value{pzri} = 0
%Nenner ist durch 3 teilbar, ist es der Zähler?
\teile{\value{pzr}}{3}{pznii}{pzrii}%
\ifnum\value{pzrii} = 0
\setcounter{pzn}{\value{pzni}}%
\setcounter{pzr}{\value{pznii}}%
\fi% Zähler durch 3 teilbar
\fi% Nenner durch 3 teilbar
% hier ggf. weiter versuchen zu kürzen, wenn man es denn so weit damit treiben will ...
\fi%Nenner war nicht durch Zähler teilbar
$\frac{\thepzr}{\thepzn}$% den (un)gekürzten (Rest-)Bruch ausgeben
\else% wenn es nur einen ganzzahligen Anteil gibt:
$\phantom{\frac{1}{\thenenner}}$% damit die ganzzahligen Anteile auch untereinander stehen
\fi
}
\newcommand*\punkte[1]{%
\marginpar{\parbox{2em}{\hfill\pz{#1}}}%
\addtocounter{gesamtpunkte}{#1}%
}
\newcommand*\gesamtpunkte{%
\vfill
\hfill mögliche Punkte:\marginpar{\parbox{2em}{\hfill\pz{\thegesamtpunkte}}}%
}
\begin{document}
\begin{enumerate}
\item Aufgabentext\punkte{2} der Aufgabe 1, der mehrere Zeilen lang ist, obwohl eigentlich nichts drinsteht.\\Deswegen gehts noch weiter.
\item Nächste Aufgabe\punkte{10}
\begin{enumerate}
\item Erste Teilaufgabe\punkte{5} mit viel blabla sollen unlösbare Aufgaben auf möglichst komplizierte Weise irgendwie auf vielen Blättern Papier so unlogisch wie möglich dargelegt werden.
\item Beantworten Sie die Frage: Wozu?\punkte{100}
\begin{enumerate}
\item Noch eine Unterteilung\punkte{5} der unterteilten Teilaufgabe mit wundervollen Ausführungen dazu, wie man noch mehr Arbeit und Aufgaben verteilen kann. Hauptsache, der Text ist mehrere Zeilen lang, was er hiermit jetzt definitiv ist.
\end{enumerate}
\end{enumerate}
\item Und noch eine weitere Frage.\punkte{12}
\end{enumerate}
\gesamtpunkte
\end{document}
Disclaimer: Anwendung auf eigene Gefahr ... meine letzte Bruchrechnung vor diesem Teil ist schon etwas her.
MfG
Lesezeichen