Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 2
Tippfehler

27 Aug '15, 17:19

saputello's gravatar image

saputello
11.1k174365

In der Tat bietet LaTeX selbst bereits für eben diesen Zweck die im Zweitalter Zeitalter von [`tabularx`][1] nur noch wenig bekannte `tabular*`Umgebung. `tabular*`-Umgebung. Im Gegensatz zur `tabularx`-Umgebung werden hier keine Spalten automatisch auf die gewünschte Breite gebracht. Stattdessen muss man über `\extracolsep` einstellen, wie die zusätzliche Breite auf die Spaltenabstände verteilt werden soll. Dabei verwendet man am einfachsten `\extracolsep{\fill}` in der Spaltendeklaration vor der Spalte, deren nächster Abstand gedehnt werden soll. Die Dehnung wird dann so lange ausgeführt, bis `\extracolsep` erneut aufgerufen wird. Die Abstände vor der ersten und nach der letzten Spalte werden nie gedehnt. Eine einfache Abänderung Deines eigenen Beispiels wäre also: \documentclass{scrartcl} \usepackage[utf8]{inputenc} \usepackage{booktabs} \begin{document} \begin{table}[htb] \caption{Eine Tabelle} \begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}*8l@{}} \toprule Spalte1 & Spalte2 & Spalte3 & Spalte4 & Spalte5 & Spalte6 & Spalte7 & Spalte8 \\ \midrule AA & BB & CC & DD & EE & FF & GG & HH \\ AA & BB & CC & DD & EE & FF & GG & HH \\ \bottomrule \end{tabular*} \end{table} \noindent\rule{\textwidth}{1pt} Die Textbreite entspricht der Linie über diesem Text. \end{document} Dabei habe ich außerdem den Wiederholungsoperator `*` in der Spaltendeklaration verwendet. Wollte man den Abstand nur zwischen den mittleren 6 Spalten verwenden, ginge das per \documentclass{scrartcl} \usepackage[utf8]{inputenc} \usepackage{booktabs} \begin{document} \begin{table}[htb] \caption{Eine Tabelle} \begin{tabular*}{\linewidth}{@{}l@{\extracolsep{\fill}}*6l@{\extracolsep{0pt}\hskip2\tabcolsep}l@{}} \toprule Spalte1 & Spalte2 & Spalte3 & Spalte4 & Spalte5 & Spalte6 & Spalte7 & Spalte8 \\ \midrule AA & BB & CC & DD & EE & FF & GG & HH \\ AA & BB & CC & DD & EE & FF & GG & HH \\ \bottomrule \end{tabular*} \end{table} \noindent\rule{\textwidth}{1pt} Die Textbreite entspricht der Linie über diesem Text. \end{document} Ob im jeweiligen Fall eher `tabularx` oder `tabular*` das Mittel der Wahl ist, hängt von der konkreten Anwendung ab. [1]: http://www.ctan.org/pkg/tabularx
Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

04 Jul '13, 13:37

saputello's gravatar image

saputello
11.1k174365

In der Tat bietet LaTeX selbst bereits für eben diesen Zweck die im Zweitalter von [`tabularx`][1] nur noch wenig bekannte `tabular*`Umgebung. Im Gegensatz zur `tabularx`-Umgebung werden hier keine Spalten automatisch auf die gewünschte Breite gebracht. Stattdessen muss man über `\extracolsep` einstellen, wie die zusätzliche Breite auf die Spaltenabstände verteilt werden soll. Dabei verwendet man am einfachsten `\extracolsep{\fill}` in der Spaltendeklaration vor der Spalte, deren nächster Abstand gedehnt werden soll. Die Dehnung wird dann so lange ausgeführt, bis `\extracolsep` erneut aufgerufen wird. Die Abstände vor der ersten und nach der letzten Spalte werden nie gedehnt. Eine einfache Abänderung Deines eigenen Beispiels wäre also: \documentclass{scrartcl} \usepackage[utf8]{inputenc} \usepackage{booktabs} \begin{document} \begin{table}[htb] \caption{Eine Tabelle} \begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}*8l@{}} \toprule Spalte1 & Spalte2 & Spalte3 & Spalte4 & Spalte5 & Spalte6 & Spalte7 & Spalte8 \\ \midrule AA & BB & CC & DD & EE & FF & GG & HH \\ AA & BB & CC & DD & EE & FF & GG & HH \\ \bottomrule \end{tabular*} \end{table} \noindent\rule{\textwidth}{1pt} Die Textbreite entspricht der Linie über diesem Text. \end{document} Dabei habe ich außerdem den Wiederholungsoperator `*` in der Spaltendeklaration verwendet. Wollte man den Abstand nur zwischen den mittleren 6 Spalten verwenden, ginge das per \documentclass{scrartcl} \usepackage[utf8]{inputenc} \usepackage{booktabs} \begin{document} \begin{table}[htb] \caption{Eine Tabelle} \begin{tabular*}{\linewidth}{@{}l@{\extracolsep{\fill}}*6l@{\extracolsep{0pt}\hskip2\tabcolsep}l@{}} \toprule Spalte1 & Spalte2 & Spalte3 & Spalte4 & Spalte5 & Spalte6 & Spalte7 & Spalte8 \\ \midrule AA & BB & CC & DD & EE & FF & GG & HH \\ AA & BB & CC & DD & EE & FF & GG & HH \\ \bottomrule \end{tabular*} \end{table} \noindent\rule{\textwidth}{1pt} Die Textbreite entspricht der Linie über diesem Text. \end{document} Ob im jeweiligen Fall eher `tabularx` oder `tabular*` das Mittel der Wahl ist, hängt von der konkreten Anwendung ab. [1]: http://www.ctan.org/pkg/tabularx