Tabelle strecken: tabularx vs. tabulary

Tabellen und Grafiken erstellen und anordnen


Benutzeravatar
dieg0
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Mo 20. Aug 2012, 01:05
Wohnort: Dresden
Kontaktdaten:

Tabelle strecken: tabularx vs. tabulary

Beitrag von dieg0 »

Hi,

ich möchte Tabellen immer auf Textbreite strecken. Mit tabularx kann ich für die Ausrichtung der zu streckenden Spalten nur X für Blocksatz angeben. Ich möchte aber auch gerne linksbündigen/rechtsbündigen/zentrierten Text in gestreckten Spalten haben.

tabulary habe ich mir auch angeschaut, aber wenn ich das richtig verstehe, dann kann man mit dem Paket nur Tabellen stauchen. Ich bräuchte also quasi wie in tabulary L, R, C oder J als Spalten-Typen, bloß dass die Tabelle auf Seitenbreite gestreckt wird, von mir aus aufgeteilt in gleichbreite Spalten.
\documentclass{scrartcl}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\usepackage{tabulary}
\usepackage{booktabs}
\begin{document}

% Diese Ausrichtungen soll der Text in den Spalten haben:
\begin{tabular}{crr} \toprule
Durchgang & Spalte 2 & Spalte 3 \\ \midrule
A & blub & gedoens \\ 
B & blah & text \\ \bottomrule
\end{tabular}

% Das ist noch nicht ganz, was ich brauche
\begin{tabularx}{\textwidth}{cXX} \toprule
Durchgang & Spalte 2 & Spalte 3 \\ \midrule
A & blub & gedoens \\ 
B & blah & text \\ \bottomrule
\end{tabularx}

% Am besten alle Spalten gleich breit, bloß mit {crr}
\begin{tabularx}{\textwidth}{XXX} \toprule
Durchgang & Spalte 2 & Spalte 3 \\ \midrule
A & blub & gedoens \\ 
B & blah & text \\ \bottomrule
\end{tabularx}

\end{document}
Am besten wäre irgendeine Lösung, die in die Präambel kann, z.B. die Definition von eigenen Buchstaben für eigene column types. Ich habe bloß keine Ahnung, wie ich das definieren soll.

Ich würde mich über ein paar Ratschläge freuen.

Viele Grüße,
dieg0.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Hallo,

mit dem array Paket kannst du die Spalten ausrichten oder dir neue Spaltentypen definieren:
\documentclass[parskip=full-]{scrartcl}
 \usepackage{lmodern}
 \usepackage[T1]{fontenc}
 \usepackage[utf8]{inputenc}
 \usepackage[ngerman]{babel}
 \usepackage{tabularx}
 \usepackage{booktabs}

\usepackage{array}
\newcolumntype{U}{>{\centering\arraybackslash}X}
\newcolumntype{V}{>{\raggedleft\arraybackslash}X}

\begin{document}

\noindent
\begin{tabularx}{\linewidth}{>{\centering\arraybackslash}X>{\raggedleft\arraybackslash}X>{\raggedleft\arraybackslash}X}\toprule
  Durchgang & Spalte 2 & Spalte 3 \\
  \midrule
  A & blub & gedoens \\
  B & blah & text \\ 
  \bottomrule
\end{tabularx}

%oder mit den neu definierten Spaltentypen
\noindent
\begin{tabularx}{\linewidth}{UVV} \toprule
  Durchgang & Spalte 2 & Spalte 3 \\
  \midrule
  A & blub & gedoens \\
  B & blah & text \\
  \bottomrule
\end{tabularx}

\end{document}
Gruß
Elke

Besserwisser

Beitrag von Besserwisser »

Schau Dir vielleicht auch mal das Paket tabu an. Das dürfte alles bieten, was Du suchst.

Benutzeravatar
dieg0
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Mo 20. Aug 2012, 01:05
Wohnort: Dresden
Kontaktdaten:

Beitrag von dieg0 »

Besserwisser hat geschrieben:Schau Dir vielleicht auch mal das Paket tabu an. Das dürfte alles bieten, was Du suchst.
Die Kombination aus tabu und \newcolumntype ist super. Die folgenden drei Varianten liefern alle das selbe Ergebnis, wobei ich die erste Variante am einfachsten und besten finde.
\documentclass{scrartcl}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{booktabs}
\usepackage{tabu}

\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcolumntype{R}{>{\raggedleft\arraybackslash}X}
\newcolumntype{C}{>{\centering\arraybackslash}X}

\begin{document}

\noindent
\begin{tabu}{CLL} \toprule
Durchgang & Spalte 2 & Spalte 3 \\ \midrule
A & blub & gedoens \\ 
B & blah & text \\ \bottomrule
\end{tabu}

\noindent
\begin{tabu} to \linewidth {CLL} \toprule
Durchgang & Spalte 2 & Spalte 3 \\ \midrule
A & blub & gedoens \\ 
B & blah & text \\ \bottomrule
\end{tabu}

\noindent
\begin{tabu}{X[c]X[l]X[l]} \toprule
Durchgang & Spalte 2 & Spalte 3 \\ \midrule
A & blub & gedoens \\ 
B & blah & text \\ \bottomrule
\end{tabu}

\end{document}
tabu streckt Tabellen automatisch auf \linewidth, sodass ich mir ein Argument sparen kann. Mit \newcolumntype kann ich zudem
\begin{tabu}{CLL}
statt
\begin{tabu}{X[c]X[l]X[l]}
schreiben.

\noindent würde ich weglassen, aber das ist wohl Geschmackssache.

Danke euch beiden für die Hilfe. :D

Antworten