Seite 1 von 1

Tabelle strecken: tabularx vs. tabulary

Verfasst: Fr 14. Sep 2012, 00:35
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.

Verfasst: Fr 14. Sep 2012, 08:47
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

Verfasst: Fr 14. Sep 2012, 08:57
von Besserwisser
Schau Dir vielleicht auch mal das Paket tabu an. Das dürfte alles bieten, was Du suchst.

Verfasst: Fr 14. Sep 2012, 16:05
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