\NeedsTeXFormat{LaTeX2e} \ProvidesPackage{aufgaben} % Dieses LaTeX-Paket enthält Makros zum Erstellen von Übungsblättern und % Klausuren für den Fachbereich Mathematik und Informatik der % Philipps-Universität Marburg, erstellt von Thomas Eckert (Telefon (28)26556 % oder eckert@mathematik.uni-marburg.de). Vergleiche jedoch auch % http://www.ctan.org/tex-archive/macros/latex/contrib/exam/ % für ein class file mit ähnlichen und mehr Strukturen. % % Version vom 27.6.2005 % % Neben Abkürzungen wie \N, \R, \Kern etc. und den Hilfskonstrukten % % \interval]a,b[ für Intervalle % \set[Big]{x\in\R^n}{x\ne0} für Mengen % \norm{x}_2 für Normen % \scal xy, \scal{x+x'}{y} für Skalarprodukte % \vector{x\\y\\z} für Vektoren und Matrizen % % finden sich folgende Gliederungskonstrukte: % % \Blatt[*] % mit * wird Schreibblock erstellt, eine Aufgabe pro Blatt, sonst absatzweise % {Veranstaltung (Übungen zur Analysis I)} % {Semester (Wintersemester 2001/02)} % {Dozent} % {Blattname (Blatt 1, Klausur)} % {Datum [auch leer lassen]} % {Zeit [auch leer lassen]} % {letzte Aufgabennummer [auch leer lassen]} % % \Aufgabe[3 Punkte] % Neue Aufgabe % % \Standardpunkte{4 Punkte} % \Aufgabe ohne [..] erzeugt diese Vorgabe % % \Name % Für Klausuren ein Feld für Name und Vorname % % \Punktetabelle % Für Klausuren, automatisch, zweimal kompilieren! % Eingebundene Pakete \RequirePackage{amsmath} % AMS-Befehle \RequirePackage{amssymb} % AMS-Symbole und -Schriften \RequirePackage{amsthm} % Theorem- und Beweis-Umgebungen \RequirePackage{mathrsfs} % Skript-Buchstaben (\mathscr) \RequirePackage[latin1]{inputenc} % Umlaute direkt eingeben \RequirePackage[a4paper,nofoot]{geometry} % DinA4-Format (auch für pdflatex) \RequirePackage[german,ngerman]{babel} % alte und neue Rechtschreibung % \RequirePackage{array} % Tabellen-Unterstützung (für \Punktetabelle) \RequirePackage{prelim2e} % für 'Bitte wenden!' am Seitenende % Maße für Textkörper auf A4 \textwidth16cm \textheight26cm \oddsidemargin0mm \evensidemargin-4.5mm \topmargin-20mm % Absatzeinstellungen \renewcommand{\baselinestretch}{1.1} \parskip1.5ex \sloppy \parindent0mm % Abkürzungen und kleine Hilfskonstrukte \newcommand\N{{\mathbb N}} % innere Klammer, um $X^\N$ zu \newcommand\Z{{\mathbb Z}} % ermöglichen statt $X^{\N}$ \newcommand\R{{\mathbb R}} \newcommand\C{{\mathbb C}} \newcommand\Q{{\mathbb Q}} \newcommand\K{{\mathbb K}} \def\P{{\mathbb P}} \def\S{{\mathbb S}} \def\L{{\mathscr L}} \let\Re\relax\DeclareMathOperator\Re{Re} \let\Im\relax\DeclareMathOperator\Im{Im} \DeclareMathOperator\Hom{Hom} \DeclareMathOperator\Kern{Kern} \DeclareMathOperator\Bild{Bild} \DeclareMathOperator\Span{Span} \DeclareMathOperator\supp{supp} \DeclareMathOperator\codim{codim} \DeclareMathOperator\id{id} \DeclareMathOperator\Id{Id} \DeclareMathOperator\End{End} \DeclareMathOperator\GL{GL} \DeclareMathOperator\linear{linear} \newcommand\argument{\,\centerdot\,} \def\interval#1#2,#3#4{\left#1#2,#3\right#4} % Verwendung: $x\in\interval]-1,1[$; aber: $x\in\interval]{0,5},1[$ % Achtung: keine Kommazahlen ungeklammert eingeben \newcommand\set[3][big]{\def\x{#3}\def\y{}% \csname #1l\endcsname\{#2% \ifx\x\y\else\csname #1m\endcsname|#3\fi% \csname #1r\endcsname\}% } \newcommand\norm[1][\argument]{\left\|#1\right\|} \newcommand\scal[2]{\langle#1\mkern2.3mu\mathord|\mkern2.7mu#2\rangle% } \renewcommand\vector[1]{{\renewcommand\arraystretch{0.72} \begin{pmatrix}#1\end{pmatrix}} } % Konstrukte zur Gliederung von Übungsblättern und Klausuren \newcommand\BitteWenden{\small b/w} \newcommand\Blatt[8][]{% % #1 Modus (optional * für 'Schreibblock') % #2 Veranstaltung (Übungen zur Analysis I) % #3 Semester (Wintersemester 2001/02) % #4 Dozent % #5 Blattname (Blatt 1, Klausur) % #6 Datum (der Abgabe) [auch leer lassen] % #7 Zeit (dito) [auch leer lassen] % #8 letzte Aufgabennummer [auch leer lassen] \renewcommand\PrelimText{} \cleardoublepage \renewcommand\PrelimText{\hbox to\textwidth{\hfill \BitteWenden}} Fachbereich Mathematik und Informatik \hfill #3\\ Universität Marburg\\ #4 \begin{center} \textbf{#2} \ifx#5\relax\else\\-- #5 --\fi \ifx#6\relax\else\\#6\ifx#7\relax\else, #7\fi\fi \end{center} \if{#8}\relax\else\setcounter{Aufgabe}{#8}\fi \xdef\Modus{#1}%\setcounter{page}1 } \newcommand\EndBlatt{\renewcommand\PrelimText{}} % Nur benötigt, falls in einem Dokument nach einem Blatt weiterer % Text folgen soll. \newcounter{Aufgabe} \newcommand\Aufgabe[1][\st@ndardpunkte]{\stepcounter{Aufgabe} \ifPunktetabelle\write15{\points#1Punkt!end!}\fi \if\Modus*\newpage\else\medskip\fi \textbf{Aufgabe \theAufgabe}\ifx#1\relax\else~(#1)\fi. } \newcommand\Standardpunkte[1]{\xdef\st@ndardpunkte{#1}} \newcommand\Name{ \medskip \begin{center} \begin{minipage}{12cm}\bf Name \hrulefill\\[1.2em] Vorname \hrulefill \end{minipage} \end{center} \medskip } \newcommand\Punktetabelle{% % Zuerst Anzahl und Summe ermitteln, Punkte auflisten. \newcount\tasks\tasks=0% \newcount\full\full=0% \newcount\half\half=0% \def\line{}% \openin15=\jobname.top% \loop% \ifeof15\else\read15 to\p\fi% \ifeof15\else% \advance\tasks by1% \expandafter\split@\p,0to\f and\h% \advance\full by\f\advance\half by\h% \edef\line{\line&\p}% \repeat% \closein15% \count5=\half\divide\count5 by10\advance\full by \count5% \multiply\count5 by 10\advance\half by-\count5% % Nun die Tabelle erstellen. \medskip \begin{center} \renewcommand\arraystretch{1.35} \begin{tabular}{|l|*{\tasks}{@{}>\centering p{1.9em}@{}|}c|} \hline Aufgabe \p@ttern{\tasks}{& \number\n} & $\;\Sigma\;$ \\ \hline Punkte \line & \the\full\ifnum\half>0,\the\half\fi \\ \hline \hline Erreicht \p@ttern{\tasks}{&} & \\ \hline \end{tabular} \end{center} \medskip % Damit das geht, muss überhaupt in einem ersten Lauf eine .top-Datei % angelegt werden mit den Punktinformationen. \openout15=\jobname.top% \Punktetabelletrue% } % Interne Makros % Einstellung für listenförmige Klausur oder Schreibblock \newcommand\Modus{} % Voreinstellung für Standardpunkte, sonst per \Standardpunkte setzen \xdef\st@ndardpunkte{4 Punkte} % Hilfsmakro für \Aufgabe \def\points#1Punkt#2!end!{#1} % Hilfsmakros für \Punktetabelle \newif\ifPunktetabelle \def\split@#1,#2#3to#4and#5{\xdef#4{#1}\xdef#5{#2}} \def\p@ttern#1#2{\newcount\n \n=0 \def\s{} \loop\ifnum\n<#1\advance\n by1% \edef\s{\s#2}% \repeat% \s% } \AtBeginDocument{\pagestyle{empty}\renewcommand\PrelimText{}} % für \BitteWenden \AtEndDocument{\EndBlatt} % damit kein \BitteWenden mehr gesetzt wird \endinput