Die übliche Methode wäre, am Ende des Dokuments (z.B. mit `\AtEndDocument{}`) die Punkte in die aux-Datei zu schreiben.
\write\@auxout{...}
Da die Datei, wenn sie vorhanden ist, zu Beginn das Dokuments eingelesen wird, stehen damit die Informationen auch von `\begin{document}` an zur Verfügung. In `\write\@auxout{...}` ist `...` das, was *vollständig expandiert* in die aux-Datei geschrieben wird. Man kann dort etwa einen Befehl `\@punkte` definieren, der den Wert des Zählers `gesamtpunktzahl` enthält:
\write\@auxout{\string\gdef\string\@punkte{\arabic{gesamtpunktzahl}}}%
Dabei wird mit `\string` dafür gesorgt, das `\gdef` und `\@punkte` genau so in die Datei geschrieben werden und nicht etwa expandiert werden. Gleichzeitig sorgt die Expansion dafür, dass man später etwas wie
\gdef\@punkte{14}
in der Datei stehen hat, also die konkrete Zahl des Zählers. Dann braucht man später `\@punkte` nur noch zu verwenden, eventuell mit einem Test, ob es überhaupt definiert ist.
\documentclass{article}
% Definitionen fuer Punkte
% Counter, der zum Aufsummieren der Gesamtpunktzahl genutzt wird
\newcounter{gesamtpunktzahl}
\setcounter{gesamtpunktzahl}{0}
% Befehl für Punkte
\newcommand{\punkte}[1]{%
\punktname{#1}% schreibe Punkte
\addtocounter{gesamtpunktzahl}{#1}% addiere zur Gesamtzahl
}
% Befehl zum Schreiben der Punkte:
\newcommand*\punktname[1]{\textsf{#1\,Punkt\ifnum#1=1\else e\fi}}
\makeatletter
% am Ende des Dokuments:
\AtEndDocument{%
% Gesamtpunkte in der aux-Datei als `\@punkte' speichern. Dabei beachten,
% dass Definitionen global sein müssen und alles, was mit \write geschrieben wird,
% expandiert würde. Daher müssen \gdef und \@punkte vor der Expansion geschützt werden
\write\@auxout{\string\gdef\string\@punkte{\arabic{gesamtpunktzahl}}}%
}
% wenn `\@punkte' definiert ist, es als Gesamtpunktzahl ausgeben:
\newcommand*\gesamtpunkte{%
\@ifundefined{@punkte}{??}{\punktname{\@punkte}}%
}
\makeatother
\begin{document}
\gesamtpunkte
\punkte{3}
\punkte{4}
\punkte{7}
\end{document}
![alt text][1]
Eine Alternative wäre vielleicht das Paket [`totcount`][2].
----------
Allerdings sieht das danach aus, als ob eine Klausur oder etwas derartiges erstellt werden soll. Dafür gibt es bereits eine ganze Reihe von Paketen und Klassen, die sich damit beschäftigen: [`answers`][3], [`probsoln`][4], [`exam`][5], [`exsheets`][6] und einige mehr.
`exsheets` zum Beispiel erlaubt eine sehr weitgehende Kontrolle über Aussehen und Design. Ein Beispiel, das nicht mal an der Oberfläche kratzt:
dessen kratzt, was sich einstellen lässt. Ein möglicher Vorteil ist, dass auch halbe Punkte möglich sind:
\documentclass{article}
\usepackage[ngerman]{babel}% für automatische Übersetzung
\usepackage{exsheets}
\SetupExSheets{
points/format = \textsf ,
points/name = Punkt/e
}
\begin{document}
\totalpoints
\begin{question}
\addpoints{3.5}
\addpoints{4.25}
\addpoints{7}
\end{question}
\end{document}
[1]: http://texwelt.de/wissen/upfiles/punkte.png
[2]: http://www.ctan.org/pkg/totcount
[3]: http://www.ctan.org/pkg/answers
[4]: http://www.ctan.org/pkg/probsoln
[5]: http://www.ctan.org/pkg/exam
[6]: http://www.ctan.org/pkg/exsheets