
Übungszettelvorlage
Author:
Phil Steinhorst
Last Updated:
5년 전
License:
Creative Commons CC BY 4.0
Abstract:
A German template for Computer Science exercises.

\begin
Discover why over 20 million people worldwide trust Overleaf with their work.
A German template for Computer Science exercises.

\begin
Discover why over 20 million people worldwide trust Overleaf with their work.
%!TEX TS-program = pdflatex
%!TEX TS-options = -shell-escape
% Author: Phil Steinhorst, p.st@wwu.de
% https://gitlab.com/phist91/latex-templates
\newcommand{\obenlinks}{Übungen zur Vorlesung Informatik I}   % hier Name der Veranstaltung eintragen
\input{config.tex}  % Präambel (ohne die geht nichts!)
% Für eine leere Vorlage, alles zwischen \begin{document} und \end{document} löschen!
\begin{document}
\begin{center} % Kopfbereich mit Infos zur Abgabegruppe
  \begin{tabular}{|rlp{4cm}rl|}
  \hline
   \textbf{Übungsblatt:} & 13 &  & \textbf{1. Abgabepartner*in:} & Ada Lovelace \\
       \textbf{Aufgabe:} & 37 &  & \textbf{2. Abgabepartner*in:} & Donald Knuth \\
  \textbf{Abgabegruppe:} & 42 &  & \textbf{3. Abgabepartner*in:} & Alan Turing  \\ \hline
\end{tabular}
\end{center} 
Dies ist eine \LaTeX-Vorlage für Übungszettelabgaben im Fach Informatik, die das \texttt{listingsutf8}-Paket nutzt.
Dieses ist in der Regel sofort nutzbar und erfordert keine weitere Einrichtung.
Das Syntax Highlighting ist hier jedoch nicht ganz so detailliert wie beim \texttt{minted}-Paket, für das in meinem Git-Repository\footnote{\url{https://gitlab.com/phist91/latex-templates}} ebenfalls eine Vorlage bereitgestellt wird.
Nachfolgend gibt es ein paar Hinweise, wie diese Vorlage zu verwenden ist.
\subsection*{Disclaimer}
Ich kann leider grundsätzlich keinen \LaTeX-Support anbieten und verweise daher auf gängige Suchmaschinen und die \TeX-Community von StackExchange\footnote{\url{https://tex.stackexchange.org/}}.
Sucht man den LaTeX-Befehl für ein bestimmtes Symbol, ist Detexify\footnote{\url{http://detexify.kirelabs.org/}} praktisch.
\subsection*{Verwendung}
Als Test sollte man versuchen, die Datei \texttt{abgaben-listings.tex} in einem TeX-Editor zu öffnen und zu kompilieren.
Dabei handelt es sich um den TeX-Code zu genau diesem Dokument.
Wenn das nicht klappt, kann das folgende Gründe haben:
\begin{itemize}
  \item In den Umgebungsvariablen des Systems fehlt das Verzeichnis der \LaTeX-Distribution.
  \item Der Compiler wird nicht mit der Shell-Escape-Option aufgerufen.
  Ggfs. sollte in den Einstellungen des Editors nachgeschaut werden, dass \texttt{pdflatex} mit der Option \texttt{-shell-escape} aufgerufen wird.
  \item Irgendwas anderes. Man prüfe die Ausgabe des Compilers.
\end{itemize}
Wenn alles geklappt hat, kann man diese Vorlage verwenden.
Ich habe als Einstiegshilfe unten verschiedene Beispiele -- unter anderem zum Einbinden von Quellcode -- angehängt.
Die Verwendung der entsprechenden TeX-Befehle sollte anhand der Datei \texttt{abgaben-listings.tex} erschließbar sein.
Weitere Hinweise und Konfigurationsmöglichkeiten findet man in der Paketdokumentation\footnote{\url{http://texdoc.net/texmf-dist/doc/latex/listings/listings.pdf}.}.
\textbf{Nicht vergessen:} Ein automatisches Syntax Highlighting entbindet \textbf{niemals} von der Pflicht, gut lesbaren und gut nachvollziehbaren Code zu produzieren.
\begin{flushright}
  Phil Steinhorst \\
  \url{https://gitlab.com/phist91/latex-templates}
\end{flushright}
\vfill
\href{https://creativecommons.org/licenses/by-sa/4.0/}{\includegraphics[keepaspectratio,scale=0.5]{cc.png}} \quad
\footnotesize{This work is licensed under a \href{https://creativecommons.org/licenses/by-sa/4.0/}{Creative Commons Attribution-ShareAlike 4.0 International License}.}
\newpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Beispiele}
\subsection*{Textformatierungen}
Eine Auflistung:
\begin{itemize}
  \item Dieser Text ist \textbf{fett}.
  \item Dieser Text ist \textit{kursiv}.
  \item Dieser Text ist \underline{unterstrichen}.
  \item Dieser Text ist \textcolor{red}{rot}.
  \item Dieser Text ist \href{https://gitlab.com/phist91/latex-templates}{anklickbar.}
\end{itemize}
Eine Aufzählung:
\begin{enumerate}[(a)]
  \item Eine Liste,
  \item aber mit
  \item Nummerierung!
\end{enumerate}
Eine zentrierte Tabelle:
\begin{center}
  \begin{tabular}{|c|c|} \hline
         Etwas         &  gewöhnungsbedürftig,         \\ \hline
    \multicolumn{2}{|c|}{aber vielseitig und machbar!} \\ \hline
  \end{tabular}
\end{center}
Die gleiche Tabelle, aber mit Beschreibung:
\begin{table}[h]
  \begin{center}
    \begin{tabular}{|c|c|} \hline
      Etwas         &  gewöhnungsbedürftig,        \\ \hline
      \multicolumn{2}{|c|}{aber vielseitig und machbar!} \\ \hline
    \end{tabular}
  \end{center}
  \caption{Viele Editoren bieten Assistenten zum Anlegen von Tabellen wie dieser.}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection*{Grafiken}
Eine eingebundene Grafikdatei:
\begin{center}
  \includegraphics[keepaspectratio,width=3cm]{cc.png}
\end{center}
\newpage
Die gleiche Grafik, in verschiedenen Größen:
\begin{figure}[h]
  \begin{center}
  \subcaptionbox{klein}{\includegraphics[keepaspectratio,width=1.5cm]{cc.png}}
  \subcaptionbox{mittel}{\includegraphics[keepaspectratio,width=2cm]{cc.png}}
  \subcaptionbox{groß}{\includegraphics[keepaspectratio,width=3cm]{cc.png}}
  \caption{Logos in verschiedenen Größen.}
  \end{center}
\end{figure}
Eine TikZ-Grafik mit Beschreibung:
\begin{figure}[h]
  \centering
  \begin{tikzpicture}[->, auto, node distance= 1.5cm and 3cm, on grid, semithick,
    state/.style={circle, draw, font=\ttfamily, minimum width= 0.7cm}]
    \node[state] (A) at (0,0) {a};
    \node[state,gray] (B) at (1.5,1) {b};
    \node[state] (C) at (3,1) {c};
    \node[state] (D) at (2.5,-0.5) {d};
    \node[state] (E) at (4,-0.5) {e};
  
    \draw[->] (-0.5,1) node[above]{\dots} -- (A);
    \draw[->,gray] (B) -- (C);
    \draw[->,gray] (B) -- (D);
    \draw[->] (C) to[bend angle=20,bend right] (E);
    \draw[->] (E) to[bend angle=20,bend right] (C);
    \draw[->] (D) -- (C);
    \draw[->] (E) -- (4.5,0.5) node[above]{\dots};
    \draw[->] (A) to[bend angle=20,bend right] (D);
  
    \draw (A) node[below=0.35cm,RoyalBlue2,font=\bfseries]{1};
    \draw (B) node[below=0.35cm,RoyalBlue2,font=\bfseries]{0};
    \draw (C) node[right=0.35cm,RoyalBlue2,font=\bfseries]{2};
    \draw (D) node[below=0.35cm,RoyalBlue2,font=\bfseries]{1};
    \draw (E) node[below=0.35cm,RoyalBlue2,font=\bfseries]{1};
    \path (E) edge [loop right] (E);
  \end{tikzpicture}
  \caption{TikZ ist ein sehr mächtiges Paket zur Erstellung ansprechender Vektorgrafiken.}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection*{Mathematische Formeln}
Die Formel $a^2 + b^2 = c^2$ ist kompakt und passt in den Fließtext.
Die Formel $x := \frac{1}{1+\frac{1}{1+\frac{1}{2}}}$ sprengt hingegen die Zeilenhöhe, was innerhalb eines größeren Absatzes sehr unschön aussehen kann, wie man hier sieht.
Besser: Einzeilige Formeln absetzen und zentrieren:
\[
  x := \frac{1}{1+\frac{1}{1+\frac{1}{2}}}
\]
Und mehrzeilige Formeln? Bitte nicht so:
$f(x) = x^2 + 2x - 7$ \\
$f'(x) = 2x+2$ \\
$f''(x) = 2$
Viel besser: Abgesetzt und ausgerichtet:
\begin{align*}
  f(x) &= x^2 + 2x - 7 \\
  f'(x) &= 2x+2 \\
  f''(x) &= 2
\end{align*}
Formeln können auch nummeriert werden:
\begin{align}
  \sum_{i=0}^{n} x^i &= \frac{1-x^{n+1}}{1-x}       \label{formel-A} \\
  \sum_{i=0}^{n} \frac{1}{2^i} &= 2 - \frac{1}{2^n} \label{formel-B}
\end{align}
\dots um sie später zu referenzieren: Formel \eqref{formel-B} ist ein Spezialfall von Formel \eqref{formel-A}.
Eine Funktion:
\begin{align*}
  f \colon \mathbb{R} &\longrightarrow \mathbb{R} \\
  x &\longmapsto x^2
\end{align*}
Geht auch mit Fallunterscheidung:
\begin{align*}
  \operatorname{sgn} \colon \mathbb{R} &\longrightarrow \mathbb{R} \\
  x &\longmapsto \begin{cases}
    1, & \text{falls } x > 0 \\
    0, & \text{falls } x = 0 \\
    -1, & \text{falls } x < 0
  \end{cases}
\end{align*}
Eine Matrix:
\[
  A := \begin{pmatrix}
    1 & a & a^2 & a^3 \\
    1 & b & b^2 & b^3 \\
    1 & c & c^2 & c^3 \\
    1 & d & d^2 & d^3
  \end{pmatrix}
\]
\textbf{Wichtig!} Niemals Fließtext ohne Befehle wie \texttt{\textbackslash text\{...\}} in Formel-Umgebungen setzen:
\[
  x_{Staffel}
\]
Das führt zu Problemen beim Zeichenabstand und sieht komisch aus.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection*{Beispiel für direkt eingegebenen Java-Code:}
\begin{lstlisting}[language=java]
import java.util.*;
public class Hallo{
  public static void main( String[] args ) {
    System.out.print("Hallo Welt!");
  }
}
\end{lstlisting}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection*{Beispiel für direkt eingegebenen C-Code:}
\begin{lstlisting}[language=c]
#include <stdio.h>
int main(int argc, char** argv){
  int i;
  for(i = 0; i < argc; i++){
    printf("%s \n", argv[i]);
  }
  return 0;
}
\end{lstlisting}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection*{Beispiel für Java-Code, der aus einer eigenen Datei eingebunden wird:}
\lstinputlisting[language=java]{programm.java}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection*{Beispiel für C-Code, der aus einer eigenen Datei eingebunden wird:}
\lstinputlisting[language=c]{programm.c}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\textbf{Beispiel für Inline-Java-Code:} \lstinline[language=java]|this.toScan = new LinkedList<>();|
\textbf{Beispiel für Inline-C-Code:} \lstinline[language=c]|int main(int argc, char** argv)|
\end{document}