@slide(layout=chapter-slide) @number 9 @title Tables @slide(layout=content-only) @title Basic structure ๐Ÿ—’๏ธ @content For typographically pleasing tables, we use the `booktabs` package. ``` {.hljs .lang-tex} \usepackage{booktabs} ``` ``` {.hljs .lang-tex} \begin{table}[] \begin{tabular}{} % table content \end{tabular} \caption{} \end{table} ``` Positioning works just like with graphics. @slide(layout=content-and-preview) @title Column definitions @content ``` {.hljs .lang-tex} \begin{tabular}{lrcl} % table content \end{tabular} ```
letter meaning
l left-justified column
c centred column
r right-justified column
++ Vertical separator lines and double horizontal lines are frowned upon by typographers and should be avoided. @preview ![](svg/chapter-12/table-example-crop.svg){.thin-padding} @slide(layout=content-and-preview) @title Table content @content ``` {.hljs .lang-tex} \begin{tabular}{lll} \toprule Column 1 & Column 2 & Column 3 \\ \midrule Content a & Content b & Content c \\ Content e & Content f & Content g \\ Content i & Content j & Content k \\ \bottomrule \end{tabular} ``` * ++ Columns are separated by โ€™`&`โ€™. * ++ Rows are ended by โ€˜`\\`โ€™. * ++ `\toprule`, `\midrule` and `\bottomrule` structure the table. @preview ![](svg/chapter-12/table-content-example-crop.svg){.thin-padding} @slide(layout=wide-content) @title The entire table @content ``` {.hljs .lang-tex} \begin{table}[h] \caption{Well-known programming languages} \begin{tabular}{lrcl} \toprule Language & Author & Year & File extension \\ \midrule C++ & Bjarne Stroustrup & 1985 & .cpp \\ Java & James Gosling & 1998 & .java \\ Python & Guido van Rossum & 1991 & .py \\ \bottomrule \end{tabular} \end{table} ```

`@{}` to the left and right of a column definition removes the padding of the corresponding column.

`\begin{tabular}{@{}lrcl@{}}` limits the row separators to the width of the table content

@slide(layout=content-only) @title More comfort @content The [Tables Generator](https://tablesgenerator.com/) is a wonderful tool to quickly create tables of different formats. [![](svg/chapter-12/tables-generator.png)](https://tablesgenerator.com/) @slide(layout=task) @task-number 9 @title Typesetting tables @content * The list in file `exercises/tables/tables.tex` stores information on a few modules of the WIAI faculty. * Transform the list into a **table**. * The table shall have colums for the *name*, the *abbreviation* (Kรผrzel) and the *semester* of the lectures. * Add a **column** with **center-aligned text** on the left side of the table in order to **number** the lectures. * Add a **caption** for the table. @slide(layout=extra-content-only) @title Particularly long tables @content Tables that exceed one page are simply cut off by `tabular`. A solution is offered by the `longtable` package: ``` {.hljs .lang-tex} \usepackage{longtable} ``` ``` {.hljs .lang-tex} \begin{longtable}{} % table content \caption{} \label{