Hallo, Ich habe für meine Masterarbeit eine tabellarische Geräte- und Materialliste erstellt. Da diese Tabelle über eine Seite lang ist, nutze ich das Paket longtable, zur Darstellung der Tabelle mit top-, mid- und bottomrule habe ich booktabs eingebunden. Zusätzlich habe ich tabu eingebunden, weiß aber nicht ob es notwendig ist.

Wie kann ich unter Verwendung dieser beiden oder drei Pakete die Tabelle so generieren, dass

  1. die Breite des Textes nicht überschritten wird (passiert auch bei "kurzen" Tabellen),
  2. automatische Zeilenumbrüche eingefügt werden, wenn die breite der Tabelle sonst nicht eingehalten werden kann (auch bei "kurzen" Tabellen)
  3. für die Spalten zu breite Wörter automatisch getrennt werden (Trennungsregeln sollten ja eigentlich durch [ngerman] {babel} vorgegeben sein)?

Da meine MA in mehrere Dateien aufgeteilt ist, ist ein Minimalbeispiel schwierig.

Ich füge mal die wichtigsten Pakete aus der Hauptdatei ein und einige Zeilen der betreffenden Tabelle.

Open in Online-Editor
 \documentclass[
  paper=A4,         % Stellt auf A4-Papier ein
  pagesize,         % Diese Option reicht die Papiergröße an alle Ausgabeformate weiter
  DIV=calc,         % Für einen guten Satzspiegel
  headings=small,   % Für etwas kleinere Überschriften
  ngerman,          % Neue Rechtschreibung (Silbentrennung)
  12pt,             % Schriftgröße
  listof=totoc, 
  bibliography=totoc, 
  index=totoc, 
  BCOR10mm,             % Formatregeln für Bindung
]{scrbook}

\usepackage[T1]{fontenc}    % für Texte mit Umlauten und/oder Akzenten 
\usepackage[utf8]{inputenc} % Silbentrennung und Eingabe von Umlauten
\usepackage{fixltx2e}       % Verbessert einige Kernkompetenzen von LaTeX2e
\usepackage[ngerman]{babel}     % Deutsch als Hauptsprache
\usepackage{helvet}

\usepackage{booktabs}
\usepackage{longtable}
\usepackage{tabu}

\begin{document}
\begin{longtable}{p{4cm} p{3cm} p{6cm}}
\caption{Tabellarische Auflistung der im Rahmen dieser Arbeit verwendeten Geräte} \label{tab: Geräte}\\
    \toprule 
    \textbf{Gerät}                      & \textbf{Hersteller}           & \textbf{Bezeichnung}\\
    \midrule 
\endhead
\bottomrule
   \endfoot
\label{tab: Geräte}
\end {longtable}
\end{document}

Die Kommentare im Beispiel wurden vom Verfasser der Vorlage eingefügt. Danke im Voraus

gefragt 15 Sep '16, 14:17

Andreas%20N's gravatar image

Andreas N
39145
Akzeptiert-Rate: 0%

bearbeitet 15 Sep '16, 15:05

fixltx2e ist übrigens überholt und erzeugt bei aktuellem LaTeX nur eine Warnung. Helvetica passt IMHO nicht sehr gut zu EC. Insgesamt betrachte ich das als nicht empfehlenswerte Vorlage.

(15 Sep '16, 14:50) saputello

In p-Spalten gibt es außerdem automatisch einen Zeilenumbruch mit Trennung bei Bedarf. Der Teil der Frage erschließt sich mir daher überhaupt nicht. Damit die Gesamttextbreite nicht überschritten wird, darf die Summe der Breiten der Spaltenbreiten + 2 * n * \tabcolsep natürlich nicht die Textbreite überschreiten. Dabei ist n die Zahl der Spalten. tabu, ltablex und ltxtable kennen außerdem X-Spalten, die das Leben erleichtern können.

(15 Sep '16, 14:52) saputello

Antwort 1: Ich habe gerade gesehen, dass ich bei \usepackage[T1]{fontenc} den backslash vergessen habe. Ich habe nach Korrektur das Beispiel in meinen Editor eingefügt (TeXShop für Mac) und dann lief es. Entschuldigung, dass sich da ein Fehler eingeschlichen hat.

Antwort 2: Dann werde ich das Paket schonmal rausnehmen. Was ist EC und welche Schrift würde ihrer Meinung nach besser Passen?

Antwort 3: x-Spaltuen werden vermutlich an der Stelle definiert, wo sonst die Ausrichtung mit l, c oder r festgelegt werden, oder? An dieser Stelle dann einfach für jede Spalte ein x?

Vielen Dank

(15 Sep '16, 15:21) Andreas N

EC ist European Computer Modern, die Schriftfamilie, die mit \usepackage[T1]{fontenc} voreingestellt wird. Die hat auch eine Grotesk (aka Serifenlos), die zur Antiqua Grundschrift passt. Allerdings ist EC insgesamt eher nicht so toll. Ich würde statt EC eher LM (Paket lmodern) verwenden oder aber eine zu Helvetica wirklich passende Antiqua wählen. Da ich die Helvetica inzwischen nicht mehr sehen mag, fällt mir da jetzt gerade keine besonders geglückte Kombination ein.

(15 Sep '16, 15:56) saputello

Wie man X-Spalten korrekt einsetzt, stehe in den Anleitungen zu den genannten Paketen. Bei ltablex und ltxtable sollte man zusätzlich die tabularx-Anleitung lesen, da die beiden Pakete in erster Linie dazu dienen, longtable und tabularx zu kombinieren. Außerdem hatte ich Dir die entsprechenden Themen verlinkt.

Bei tabu ist alles etwas anders. Das Paket ist aber seit Jahren eingefroren, es gibt keine Bugfixes mehr und irgendwann soll angeblich unter gleichem Namen ein inkompatibles, neues Paket entstehen. Derzeit ist die Zukunft von tabu also sehr nebulös.

(15 Sep '16, 15:59) saputello

Benutze eine tabularx mit möglichen Seitenumbruch, bereitgestellt durch das Paket ltablex:

Open in Online-Editor
\documentclass[ngerman,parskip=half-,captions=tableheading]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}

\usepackage{booktabs}
\usepackage{ltablex}
\usepackage{ragged2e}
\newcolumntype{R}[1]{>{\RaggedRight\hspace*{0pt}}p{#1}}

\usepackage{blindtext}% nur für Demo
\usepackage{showframe}% nur zum Anzeigen des Seitenlayouts

\begin{document}

\rule{\linewidth}{0.5pt}% nur für demo

\begin{tabularx}{\textwidth}{ R{4cm} R{3cm} X }
\caption{Tabellenbeschriftung}\label{tab: Geraete}\\\toprule 
\textbf{Text 1} & \textbf{Text 2} & \textbf{Text 3}\\\midrule 
\endhead
\bottomrule
\endfoot
die Schifffahrtsgesellschaft & Schifffahrtsgesellschaft & \blindtext
\end {tabularx}
\end{document}

alt text

Wenn man mit lualatex arbeitet, statt pdflatex, dann kann man sich den Krampf mit der R-Spalte und \hspace sparen.

Permanenter link

beantwortet 15 Sep '16, 19:59

crazyhorse's gravatar image

crazyhorse
4323
Akzeptiert-Rate: 26%

bearbeitet 15 Sep '16, 20:01

Mit

Open in Online-Editor
\begin{longtable}{p{4cm} p{3cm} p{6cm}}

gibst Du vor, dass die Tabelle drei Spalten mit der Breite von insgesamt 4cm+3cm+6cm=13cm. Dazu kommt noch für jede Spalte zwei Mal der Spaltenabstand. Die Tabelle ist dann mit insgesamt 13cm+2*3*\tabcolsep einfach breiter als die Deine Textbreite.

Du kannst jetzt einfach eine oder auch mehrere Spalten etwas schmaler machen, so dass die Tabelle nicht breiter als der Text ist. Du kannst auch zwei Spaltenbreiten vorgeben und die dritte ausrechnen lassen, so dass die Tabelle genauso breit wie der Text ist. Beispielsweise für die dritte Spalte:

Open in Online-Editor
\begin{longtable}{p{4cm} p{3cm} p{\dimexpr\linewidth-7cm-6\tabcolsep\relax}}

Bei schmalen Tabellenspalten empfiehlt es sich den Text linksbündig statt im Blocksatz zu setzen. Außerdem wird das erste Wort eines Absatzes und damit in einer Tabellenzelle nicht getrennt. Deshalb würde ich mir einfach einen neuen Spaltentyp definieren:

Open in Online-Editor
\usepackage{ragged2e}
\usepackage{array}
\newcolumntype{R}[1]{>{\RaggedRight\hspace*{0pt}}p{#1}}

Beispiel:

Open in Online-Editor
 \documentclass[
  DIV=calc,
  ngerman,
  12pt,
  BCOR=10mm,
]{scrbook}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}

\usepackage{booktabs}
\usepackage{longtable}

\usepackage{ragged2e}
\usepackage{array}
\newcolumntype{R}[1]{>{\RaggedRight\hspace*{0pt}}p{#1}}

\usepackage{showframe}% nur zum Anzeigen des Seitenlayouts

\begin{document}
\begin{longtable}{R{4cm} R{3cm} R{\dimexpr\linewidth-7cm-6\tabcolsep\relax}}
\caption{Tabellenbeschriftung}\label{tab: Geraete}\\
    \toprule 
    \textbf{Text 1}& \textbf{Text 2}& \textbf{Text 3}\\
    \midrule 
\endhead
\bottomrule
\endfoot
die Schifffahrtsgesellschaft&Schifffahrtsgesellschaft
\end {longtable}
\end{document}

alt text

Permanenter link

beantwortet 15 Sep '16, 16:05

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×256
×39
×4

gestellte Frage: 15 Sep '16, 14:17

Frage wurde gesehen: 12,648 Mal

zuletzt geändert: 15 Sep '16, 20:01