207 lines
7.5 KiB
Markdown
207 lines
7.5 KiB
Markdown
<div class="layout-content-only">
|
|
<div class="layout-content">
|
|
<h1>Tabellen</h1>
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
<div class="layout-content-only">
|
|
<div class="layout-content">
|
|
<h2>Grundstruktur <span class="emoji">🗒️</span></h2>
|
|
<p>Für typografisch schöne Tabellen nutzen wir das Paket <code>booktabs</code>.</p>
|
|
<pre class="hljs lang-tex"><code>\usepackage{booktabs}</code></pre>
|
|
<pre class="hljs lang-tex"><code>\begin{table}[<position>]
|
|
\begin{tabular}{<spaltendefinition>}
|
|
% Tabelleninhalt
|
|
\end{tabular}
|
|
\caption{<tabellenunterschrift>}
|
|
\end{table}</code></pre>
|
|
<p>Die Positionierung erfolgt analog zu Grafiken.</p>
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
<div class="layout-content-and-preview">
|
|
<div class="layout-content">
|
|
<h2>Spaltendefinitionen</h2>
|
|
<pre class="hljs lang-tex"><code>\begin{tabular}{lrcl}
|
|
% Tabelleninhalt
|
|
\end{tabular}</pre></code>
|
|
<table>
|
|
<tr>
|
|
<th>Kürzel</th>
|
|
<th>Bedeutung</th>
|
|
</tr>
|
|
<tr class="fragment">
|
|
<td>l</td>
|
|
<td>linksbündige Spalte</td>
|
|
</tr>
|
|
<tr class="fragment">
|
|
<td>c</td>
|
|
<td>zentrierte Spalte</td>
|
|
</tr>
|
|
<tr class="fragment">
|
|
<td>r</td>
|
|
<td>rechtsbündige Spalte</td>
|
|
</tr>
|
|
</table>
|
|
<p class="fragment">Vertikale Trennlinien und doppelte horizontale Linien sind unter Typograph\*innen nicht gern gesehen und sollten vermieden werden.</p>
|
|
</div>
|
|
<div class="layout-preview">
|
|
<img class="thin-padding" src="sections/german/12/table-example-crop.svg">
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
<div class="layout-content-and-preview">
|
|
<div class="layout-content">
|
|
<h2>Tabelleninhalt</h2>
|
|
<pre class="hljs lang-tex"><code>\begin{tabular}{lll}
|
|
\toprule
|
|
Spalte 1 & Spalte 2 & Spalte 3 \\\\
|
|
\midrule
|
|
Inhalt a & Inhalt b & Inhalt c \\\\
|
|
Inhalt e & Inhalt f & Inhalt g \\\\
|
|
Inhalt i & Inhalt j & Inhalt k \\\\
|
|
\bottomrule
|
|
\end{tabular}</code></pre>
|
|
<ul>
|
|
<li class="fragment">Zellen werden durch »<code>&</code>« abgetrennt.</li>
|
|
<li class="fragment">Zeilen werden durch zwei Backslashes beendet.</li>
|
|
<li class="fragment"><code>\toprule</code>, <code>\midrule</code> und <code>\bottomrule</code> strukturieren die Tabelle.</li>
|
|
</ul>
|
|
</div>
|
|
<div class="layout-preview">
|
|
<img class="thin-padding" src="sections/german/12/table-content-example-crop.svg">
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
<div class="layout-wide-content">
|
|
<div class="layout-content">
|
|
<h2>Die gesamte Tabelle</h2>
|
|
<pre class="lang-tex hljs"><code>\begin{table}[h]
|
|
\begin{tabular}{lrcl} \toprule
|
|
Sprache & Autor & Erscheinungsjahr & Aktuelle Version \\\\
|
|
\midrule
|
|
C++ & Bjarne Stroustrup & 1985 & ISO/IEC 14882:2017 \\\\
|
|
Java & James Gosling & 1998 & 12.0.1 \\\\
|
|
Python & Guido van Rossum & 1991 & 3.7.3 \\\\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Bekannte Programmiersprachen}
|
|
\end{table}</code></pre>
|
|
<p data-category="Hinweis">
|
|
Durch <code>@{}</code> vor und nach der Spaltendefinition werden die horizontalen Linien auf die Breite des Textes beschränkt.
|
|
Beispiel: <code>\begin{tabular}{@{}lrcl@{}}</code>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
<div class="layout-content-only">
|
|
<div class="layout-content">
|
|
<h2>Besonders lange Tabellen</h2>
|
|
<p>Tabellen, die über mehrere Seiten gehen, werden von <code>tabular</code> einfach abgeschnitten. Die Lösung bietet hier das Paket <code>longtable</code>:</p>
|
|
<pre class="lang-tex hljs"><code>\usepackage{longtable}</code></pre>
|
|
<pre class="lang-tex hljs"><code>\begin{longtable}{<spaltendefinition>}
|
|
% Tabelleninhalt
|
|
\caption{<tabellenunterschrift>}
|
|
\label{<label>}
|
|
\end{longtable}</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
<div class="layout-content-only">
|
|
<div class="layout-content">
|
|
<h2>Hinweise zu <code>longtable</code></h2>
|
|
<pre class="lang-tex hljs"><code>\begin{longtable}{<spaltendefinition>}
|
|
% Tabelleninhalt
|
|
\caption{<tabellenunterschrift>}
|
|
\label{<label>}
|
|
\end{longtable}</code></pre>
|
|
<ul>
|
|
<li class="fragment">Die <code>longtable</code>-Umgebung vereint die <code>tabular</code>-Umgebung und die <code>table</code>-Umgebung.</li>
|
|
<li class="fragment">Untertitel und Label können deshalb direkt unter dem Tabelleninhalt stehen.</li>
|
|
<li class="fragment">Die Features von <code>booktabs</code> stehen auch in <code>longtable</code> zur Verfügung, sofern das Paket <code>booktabs</code> eingebunden ist.</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
<div class="layout-content-only">
|
|
<div class="layout-content">
|
|
<h2>Besonders breite Tabellen</h2>
|
|
<p>Sollte die Tabelle einmal zu breit für eine Seite werden, können einzelne Seiten auch im Querformat dargestellt werden:</p>
|
|
<pre class="lang-tex hljs"><code>\usepackage{lscape}</code></pre>
|
|
<pre class="lang-tex hljs"><code>\begin{landscape}
|
|
\begin{table}[<position>]
|
|
\begin{tabular}{<spaltendef.>}
|
|
% Tabelleninhalt
|
|
\end{tabular}
|
|
\end{table}
|
|
\end{landscape}</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
<div class="layout-content-and-preview">
|
|
<div class="layout-content">
|
|
<h2>Weiterführendes Beispiel</h2>
|
|
<pre class="lang-tex hljs"><code>\begin{table}[h]
|
|
\begin{tabular}{llr}
|
|
\toprule
|
|
Struktur & \multicolumn{2}{l}{Zeitkomplexität für Zugriff} \\\\ \cmidrule(r){2-3}
|
|
& Average & Worst \\\\
|
|
\midrule
|
|
Stack & $\mathcal{O}(n)$ & $\mathcal{O}(n)$ \\\\
|
|
Binärbaum & $\mathcal{O}(log(n))$ & $\mathcal{O}(log(n))$ \\\\
|
|
AVL-Baum & $\mathcal{O}(log(n))$ & $\mathcal{O}(log(n))$ \\\\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{table}</code></pre>
|
|
<p>
|
|
<a href="http://packages.oth-regensburg.de/ctan/macros/latex/contrib/booktabs/booktabs.pdf"><span class="emoji">🔗</span> Dokumentation zu Booktabs</a>
|
|
</p>
|
|
</div>
|
|
<div class="layout-preview">
|
|
<img class="thin-padding" src="sections/german/12/table-advanced-example-crop.svg">
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
<div class="layout-content-only">
|
|
<div class="layout-content">
|
|
<h2>Vereinfachung</h2>
|
|
<p>
|
|
Der <a href="https://tablesgenerator.com/">Tables Generator</a> ist ein wunderbares Werkzeug, um schnell Tabellen verschiedener Formate zu erstellen.
|
|
</p>
|
|
<a href="https://tablesgenerator.com/">
|
|
<img src="sections/german/12/tables-generator.png">
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
<div class="layout-content-only">
|
|
<div class="layout-content">
|
|
<h2 data-category="Aufgabe" data-task="11">Tabellen setzen</h2>
|
|
<ul>
|
|
<li>Bindet die Dateien <code>seitenaufbau.tex</code> und <code>schriften.tex</code> ein.</li>
|
|
<li>Tabelle 6 in Abschnitt 7 veranschaulicht die vordefinierten Schriftgrade. Fügt eine zusätzliche **rechtsbündige Spalte** ein, in der ihr die Schriftgrößen durchnummeriert.</li>
|
|
<li class="fragment">Fügt außerdem eine **Überschriftenzeile** ein, die ihr per `\midrule` vom Rest der Tabelle trennt. Die Spaltenüberschriften können zum Beispiel »Nr.«, »Befehl« und »Beispiel« heißen.</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|