summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/uebungsblatt/Dokumentation/uebungsblatt-doc.tex
blob: 30a0fc534814cbf8f8dc090ca54e4d861bbdfbfb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
\documentclass{akktecdoc}
\usepackage{akkgerman}

%\makeatletter
%\show\@verbatim

\newcommand \AkkTeX {\textsc{A\hspace{-0.2em}k\hspace{-0.2em}k}\hspace{-0.2em}\TeX}
\newcommand \uebb {\textsf{uebungsblatt}}
\newcommand \filename[1] {\textit{#1}}
\renewcommand \bzw \tbzw
\newcommand \url[1] {\textsl{#1}}

\hyphenation{Re-dun-danz}
\title{Übungsblätter mit \LaTeX}
\author{Igor Akkerman}
\begin{document}
\maketitle
\begin{abstract}
\noindent
Die Dokumentklasse \uebb{} ermöglicht es, auf einfache Art und Weise elegante Übungsblätter oder deren Bearbeitungen anzufertigen. Die Seitenformatierung sowie die Nummerierung von Aufgaben und Teilaufgaben erfolgen vollautomatisch. Die Kommandos dafür sind sehr benutzerfreundlich gestaltet. Bei Anfertigung mehrerer Übungsblätter wird die Übungsblattnummer automatisch aus dem Dateinamen bestimmt, und all jene Informationen, die für alle Blätter gelten sollen (wie LV"=Name und Autorennamen) müssen lediglich an einer Stelle angegeben werden. %Wer diese Klasse benutzt, kann sich somit voll und ganz dem Inhalt widmen.
\end{abstract}

\section{Einleitung}
Wesentlicher Bestandteil eines technischen Studienfachs ist, neben den Vorlesungen, der Übungsbetrieb. Dabei müssen die Studenten meist jede oder jede zweite Woche ein Übungsblatt bearbeiten.  Viele möchten ihre Abgaben gerne am Rechner erstellen, stoßen aber bei der Auwahl des Programms auf Schwierigkeiten.

Die meisten Textverarbeitungen reichen gerade für Lösungen aus, die aus purem Text bestehen. Oft aber sollen komplexere Tabellen, Grafiken oder mathematische Formeln enthalten sein. Speziell letztere lassen sich mit WYSIWYG"=Systemen nur äußerst schwer erzeugen, und die Optik lässt meist zu wünschen übrig.

Außerdem arbeiten Studenten in der Hochschule nicht selten auf UNIX"=Systemen, die das von zu Hause mitgebrachte Dateiformat nicht unterstützen oder zumindest nicht vollständig importieren können. Die digitalen Übungsblatt"=Dokumente sollten also auch noch portabel sein.

Als einzige Alternative bietet sich \LaTeX{} an. Doch nicht nur \LaTeX"=Neulinge wünschen sich oft, sich nicht mit dem lästigen Overhead für die Formatierung des Seitenlayouts und der Aufgaben beschäftigen zu müssen. Ebenso nerven die immer wiederkehrenden konstanten Daten auf jedem Blatt:
\begin{itemize}
\item Titel des Übungsblatts mit Blatt"=Nummer
\item Name der Lehrveranstaltung
\item Autoren (meist die Gruppenmitglieder)
\item Nummerierung von Aufgaben und Teilaufgaben
\end{itemize}
All diese Daten müssen bei jedem Übungsblatt neu angegeben werden. Meist geschieht das mittels Copy \& Paste. Dieses Verfahren ist mühsam und erzeugt Redundanz, da die Daten ja in jedem Übungsblatt wieder erscheinen müssen. Gelegentlich taucht so schon einmal die falsche Übungsblatt"=Nummer in der Überschrift auf. Außerdem nehmen die Angaben häufig so viel Platz im \LaTeX"=Header ein, dass der eigentliche Inhalt weit nach unten rutscht.

Die Dokumentklasse \uebb{} beseitigt diese Probleme. Zum einen stellt sie eine vollständige Seitenformatierung zur Verfügung und lässt den Benutzer davon abstrahieren durch spezielle, Übungsblatt"=spezifische Kommandos. Zum anderen lassen sich alle statischen Informationen wie der Name der Lehrveranstaltung und die Namen der Autoren in einer eigenen Datei ablegen. Sie wird von der Dokumentklasse automatisch zum Dokument hinzugeladen.

Dadurch wird die Benutzung erleichtert, Redundanz minimiert und die Übersicht vergrößert. Selbst für \LaTeX"=Neulinge wird damit das Erstellen von schön formatierten Übungsblättern zum Kinderspiel.

\section{Vorbereitungen}
Der Arbeitsablauf zum Erstellen von Übungsblättern mit der Dokumentklasse \verb/uebungsblatt/ wird anhand eines Beispiels skizziert. Angenommen, es sollen Übungsblätter für einen \LaTeX"=Kurs im Sommersemester 2004 bearbeitet werden, und zwar von Donald E. Knuth, Leslie Lamport und Frank Mittelbach.
\subsection{Anlegen der Ordnerstruktur}
Als erstes wird ein Oberverzeichnis \filename{latexkurs} für die Übungsblätter angelegt. In unserem Beispiel soll jedes Übungsblatt ein eigenes Unterverzeichnis (\filename{1.blatt}, \filename{2.blatt} \usw) von \filename{latexkurs} haben. Das muss zwar nicht sein, erhöht aber deutlich die Übersicht wegen der vielen vom \filename{latex}"=Kommando erzeugten Dateien.

\subsection{Erstellen der Datei für statische Informationen}
Im Oberverzeichnis \filename{latexkurs} wird die Datei \filename{lv.tex} angelegt. Sie soll die statischen Informationen zu den Übungsblättern enthalten. Darin werden definiert der Name der Lehrveranstaltung, die Namen der Autoren und der Titel der Übungsblätter:
\begin{verbatim}
\lvname{\LaTeX-Kurs\\Sommersemester 2004\\}
\autoren{Donald E. Knuth\\Leslie Lamport\\Frank Mittelbach}
\blatttitel{Bearbeitung von Übungsblatt \theblatt\ifinhead{\\}{}}
\end{verbatim}
Diese Informationen tauchen im Kopf jeder Seite jedes Übungsblatts auf. Der Name der Lehrveranstaltung erscheint links oben, die Autoren rechts oben und der Titel in der Mitte. Der Kopf darf maximal drei Zeilen enthalten. In unserem Beispiel soll er auch genau drei Zeilen enthalten, daher für jeden Zeilenumbruch ein \verb/\\/. Die Kopfzeilen werden so tief wie möglich gesetzt, somit braucht man auch ein \verb/\\/ für untere Leerzeilen.

Der Titel erscheint auch als große Überschrift auf der ersten Seite des Übungsblatts. Um zu unterscheiden, ob gerade auf der ersten Seite oder im Kopf gesetzt wird, kann man das Kommando \verb/\ifinhead{<kopftext>}{<rumpftext>}/ nutzen. Es setzt den \verb/<kopftext>/ nur im Kopf und den \verb/<rumpftext>/ nur auf der ersten Seite im Rumpf.

Im Titel kann auch das Kommando \verb/\theblatt/ vorkommen, das die Nummer des aktuellen Übungsblatts enthält. Sie kann entweder automatisch ermittelt werden oder in jedem Übungsblatt manuell angegeben werden (\su).

Die Datei \filename{lv.tex} wird bei jedem Übungsblatt automatisch vollständig eingebunden und kann daher auch Makrodefinitionen enthalten, die in mehreren oder allen Übungsblättern gelten sollen. Das ist häufig sinnvoll für Makros, die spezifisch für die Lehrveranstaltung sind und immer wieder auftauchen. Dadurch braucht man sie nicht im Kopf jedes Übungsblatts einzeln zu definieren.

Die Datei für statische Informationen \emph{muss} den Namen \filename{lv.tex} tragen. Sie kann sich entweder im selben Verzeichnis befinden wie die Dokumentdatei selbst oder aber im übergeordneten Verzeichnis.

\section{Das Übungsblatt}
Die Dokumentdatei ist jene Datei, die den Übungsblatt"=Inhalt enthält und deren Name an das \filename{latex}"=Programm übergeben wird.

\subsection{Dateistruktur}
Die Dokumentklasse wurde so entworfen, dass die Dokumentdatei kaum Overhead enthält:
\begin{verbatim}
\documentclass{uebungsblatt}
\begin{document}
...
\end{document}
\end{verbatim}
Dies erzeugt ein Übungsblatt mit dem Inhalt, der innerhalb der \verb/document/"=Umgebung steht. Der Inhalt ist beliebiger \LaTeX"=Code.

\subsection{Automatische Blattnummerierung}
Wenn der Dateiname die Übungsblatt"=Nummer enthält (\zb \filename{blatt01.tex}), wird diese automatisch in den Zähler \verb/blatt/ übernommen. Enthält der Titel wie in unserem Beispiel das Kommando \verb/\theblatt/, erscheint in jedem Übungsblatt automatisch die korrekte Nummer und man braucht sie nicht bei jedem Übungsblatt neu einzutragen. Führende Nullen werden ignoriert.

Kommt die Nummer des Übungsblatts nicht im Dateinamen vor, kann man sie in jedem Übungsblatt mit \verb/blattnummer{<blattnummer>}/ auch einzeln setzen.

\subsection{Untertitel}
Jedes Übungsblatt kann einen eigenen Untertitel enthalten, beispielsweise das Thema des aktuellen Blatts.
Der Untertitel erscheint in kleinerer Schrift unter dem Titel des Blatts.
Der Untertitel wird in der Präambel einer Übungsblatt"=Datei wie folgt definiert:
\begin{verbatim}
\blattuntertitel{<Untertitel des Blatts>}
\end{verbatim}

\section{Aufgaben}
\subsection{Umgebung für Aufgaben}
Für Aufgaben stellt die Dokumentklasse \uebb{} die Umgebung \verb/aufgabe/ zur Verfügung. Die Syntax ist
\begin{verbatim}
\begin{aufgabe}
...
\end{aufgabe}
\end{verbatim}

\subsection{Labels der Aufgaben}
Jede Aufgabe wird mit dem Label \textbf{Aufgabe x} betitelt, wobei x die Nummer der Aufgabe ist. Aufgaben werden automatisch durchnummeriert.

Sollen die Aufgaben ein anderes Label bekommen, so kann dies mithilfe des Kommandos \verb/\aufgabelabel{<label>}/ angegeben werden. Dies geschieht am besten in der Datei \filename{lv.tex}. Die Nummer der Aufgabe kann im Label wahlweise als arabische oder römische Zahl oder aber als Buchstabe dargestellt werden. Dazu muss \verb/<label>/ an entsprechender Stelle eines der folgenden Zeichen enthalten, das die Darstellung identifiziert:
\begin{itemize}
\item \verb/1/ für arabische Zahlen
\item \verb/i/ für kleine römische Zahlen
\item \verb/I/ für große römische Zahlen
\item \verb/a/ für Kleinbuchstaben
\item \verb/A/ für Großbuchstaben
\end{itemize}
In der Labeldefinition darf \emph{höchstens eines} dieser Zeichen auftreten. Soll eines dieser Zeichen vorkommen, ohne durch die Aufgabennummer ersetzt zu werden, muss es innerhalb von geschweiften Klammern stehen. Das Standardlabel wird beispielsweise erzeugt durch \verb/\aufgabelabel{{Aufgabe }1}/.

\subsection{Spezielle Aufgaben}
Manchmal gibt es Aufgaben außerhalb der Nummerierung, \zb Zusatzaufgaben. Für solche Aufgaben muss das Label für jede Aufgabe einzeln angegeben werden. Hierfür bietet die \uebb"=Klasse die Umgebung \verb/aufgabe*/ an. Die Syntax dafür ist
\begin{verbatim}
\begin{aufgabe*}{<aufgabelabel>}
...
\end{aufgabe*}
\end{verbatim}
Eine Zusatzaufgabe würde also gesetzt werden durch
\begin{verbatim}
\begin{aufgabe*}{Zusatzaufgabe}
...
\end{aufgabe*}
\end{verbatim}
\subsection{Aufgaben mit Teilaufgaben}
Aufgaben bestehen oft aus mehreren Teiaufgaben. Auch Teilaufgaben werden von der \uebb"=Dokumentklasse unterstützt. Beide Formen der Aufgabe"=Umgebung haben einen optionalen Parameter. Darin kann der Teilaufgabenlabel angegeben werden:
\begin{verbatim}
\begin{aufgabe}[<teilaufgabelabel>]
\teilaufgabe
...
\teilaufgabe
...
\end{aufgabe}
\end{verbatim}
\bzw
\begin{verbatim}
\begin{aufgabe*}[<teilaufgabelabel>]{<aufgabelabel>}
\teilaufgabe
...
\teilaufgabe
...
\end{aufgabe*}
\end{verbatim}
Auch Teilaufgaben werden automatisch nummeriert. Für \verb/<teilaufgabelabel>/ gelten dieselben Regeln wie für die Aufgabe"=Label (\so). Ein typisches Beispiel ist
\begin{verbatim}
\begin{aufgabe}[a)]
\teilaufgabe
...
\teilaufgabe
...
\end{aufgabe}
\end{verbatim}
Soll eine Aufgabe aus Teilaufgaben bestehen, jedoch Text \emph{vor} der ersten Teilaufgabe enthalten, muss man die Umgebung \verb/teilaufgaben/ verwenden:
\begin{verbatim}
\begin{aufgabe}
<Text vor erster Teilaufgabe>
\begin{teilaufgaben}{<teilaufgabelabel>}
\teilaufgabe
...
\teilaufgabe
...
\end{teilaufgaben}
\end{aufgabe}
\end{verbatim}
Die Umgebung \verb/teilaufgaben/ wird also in die Umgebung \verb/aufgabe/ \bzw die Umgebung \verb/aufgabe*/ eingebettet. Die Nummerierung der Teilaufgaben wird beim Beginn der Umgebung \verb/teilaufgaben/ spezifiziert.

\subsection{Nummer der ersten Aufgabe}
Bei manchen Lehrveranstaltungen werden die Übungsaufgaben vom Beginn der Veranstaltung bis zum Ende durchnummeriert. Die Nummerierung überschreitet also die Übungsblatt"=Grenzen. \Dh es beginnt nicht jedes Übungsblatt mit Aufgabe 1 sondern setzt die Nummerierung des letzten Blatts fort. So könnte Blatt 1 die Aufgaben 1 bis 4 enthalten, Blatt 2 die Aufgaben 5 bis 7, \usw

Will man ein Blatt bearbeiten, das mit Aufgabe \verb/n/ beginnt, so gibt man dies an, indem man \emph{vor} \verb/\begin{document}/ den Aufgabenzähler auf den Wert \verb/n/ setzt:
\begin{verbatim}
\documentclass{uebungsblatt}
\setcounter{aufgabe}{<startaufgabe>}
\begin{document}
\begin{aufgabe}
...
\end{aufgabe}
...
\end{document}
\end{verbatim}
Zu beachten ist, dass \verb/\setcounter{aufgabe}{<startaufgabe>}/ unbedingt im Dokumentenkopf, also \emph{vor} \verb/\begin{document}/ stehen muss.

\subsection{Aufgabereferenzen}
Im Text einer Aufgabe kann man eine beliebige andere Aufgabe referenzieren. Mit dem \LaTeX"=Kommando \verb/\label{<labelname>}/ setzt man innerhalb einer Aufgabe eine Marke. Mit \verb/\ref{<labelname>}/ referenziert man sie an anderer Stelle:
\begin{verbatim}
\begin{aufgabe}\label{komplizierter Beweis}%
...
\end{aufgabe}
...
\begin{aufgabe}
In Aufgabe \ref{komplizierter Beweis} haben wir bewiesen ...
\end{aufgabe}
\end{verbatim}
Dabei wird beim Referenzieren wie üblich \emph{nur} die Aufgabennummer bzw. der Aufgabenbuchstabe referenziert, nicht das gesamte Label. Daher muss man das Wort \qq{Aufgabe} selbst vor die Referenz schreiben.

Referenziert man eine Teilaufgabe, besteht die Referenz sowohl aus der Nummer der Aufgabe als auch dem Label der Teilaufgabe, \zb \qq{4\,a)}. Von der Aufgabe wird also nur die Nummer, von der Teilaufgabe das gesamte Label übernommen. Denn meist ist das Aufgabe"=Label etwas so langes wie \qq{Aufgabe 4} und das Label der Teilaufgabe nur ein kurzes \qq{a)}.

Damit auch wirklich die Teilaufgabe referenziert wird und nicht die Aufgabe, muss die Referenzmarke hinter dem Befehl \verb/\teilaufgabe/ stehen:
\begin{verbatim}
\begin{aufgabe}[a)]\label{schoene Aufgabe}%
\teilaufgabe\label{schoene Teilaufgabe}%
...
\end{aufgabe}
\begin{aufgabe}
In Aufgabe \ref{schoene Aufgabe} gibt es eine schöne Teilaufgabe,
nämlich \ref{schoene Teilaufgabe}.
\end{aufgabe}
\end{verbatim}
Dies würde bei entsprechender Nummerierung beispielsweise ergeben: \qq{In Aufgabe 4 gibt es eine schöne Teilaufgabe, nämlich 4\,a).}

\section{Voraussetzungen}
Um die Dokumentklasse \uebb{} verwenden zu können, müssen die Dateien des Dateien des Bundles \AkkTeX{} benötigt. Sie können heruntergeladen werden unter der Adresse \url{http://www.AkkTeX.org}\ .
\section{Danksagungen}
Vielen Dank allen Helfern in den \TeX"=Newsgroups \url{comp.text.tex} und vor allem \url{de.comp.text.tex}, die mir bei so einigen Plain \TeX"=Kommandos und \LaTeX"=Innereien sehr weitergeholfen haben.

Vielen Dank an Helmut Kopka, Michel Goossens, Frank Mittelbach, Alexander Samarin und Karsten Günther für ausgezeichnete \LaTeX"=Literatur.

\section{Lizenz}
Class and Package \uebb{} by Igor Akkerman (c)2000, 2001, 2002, 2003, 2004, 2005, 2006

This work may be distributed and/or modified under the
conditions of the \LaTeX{} Project Public License (latest version).

The latest version of this license can be found at:
\begin{quote}
\url{http://www.latex-project.org/lppl.txt}
\end{quote}

This work consists of the following files:
\begin{itemize}
\item uebungsblatt.cls
\item uebungsblatt.sty
\end{itemize}
\end{document}