%20breiter%20als%20angegeben%3F.png)
Ich möchte eine sehr einfache Tabelle ( tabular/x/*
, was auch immer) mit 7 Spalten, jede davon 14 % des \linewidth
, 98 % der Gesamtsumme.
Aber aus irgendeinem Grund befindet sich die Spalte ganz rechts a) am Rand und b) außerhalb der Tabellenregeln.
Wie behebe ich das Problem?
\documentclass[version=last,12pt]{scrreport}
\usepackage{tabularx,booktabs}
\begin{document}
\begin{table}[t]
\tiny
\begin{tabularx}{\linewidth}{@{}
p{0.14\linewidth}
p{0.14\linewidth}
p{0.14\linewidth}
p{0.14\linewidth}
p{0.14\linewidth}
p{0.14\linewidth}
p{0.14\linewidth}
@{}
}
\toprule
Excavator
& Alphanumeric data
& Location
& Warranty details
& Expiry date of the support period
& Required business properties
& Maximum needed diesel
\\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
Antwort1
Erste Version: Durch die Verwendung tabularx
des X
Spaltentyps entsteht eine Tabelle, die genau so breit ist wie die Textbreite und aus 7 gleich breiten Spalten besteht. Um die Spalten linksbündig auszurichten, habe ich >{\raggedright\arraybackslash}
einen neuen benutzerdefinierten Spaltentyp verwendet und definiert L
.
Zweite Version: Hier habe ich die Spaltenbreiten manuell berechnet und dabei den Wert berücksichtigt, \tabcolsep
der links und rechts vom Inhalt jeder Spalte hinzugefügt wird. Wie Sie sehen, ist die resultierende Tabelle erwartungsgemäß etwas schmaler als die Textbreite.
Dritte Version: In dieser Version habe ich tabular*
in Kombination mit verwendet, \extracolsep{\fill}}
um sicherzustellen, dass die Tabelle so breit wie die Textbreite ist.
Die senkrechten Linien im folgenden Screenshot sind paketbedingt showframe
und zeigen die Textbreite bzw. den Beginn der Ränder an.
Randbemerkung: Ich hoffe, die \tiny
Schriftgröße wurde nur in diesem Beispiel verwendet. Da diese Schriftgröße aufgrund ihrer geringen Größe ziemlich schwer zu lesen ist, empfehle ich, sie nicht zu verwenden. Sie könnten die Tabelle problemlos in die Textbreite einpassen, sogar mit einer normalen Schriftgröße, was zu einer Ausgabe ähnlich wie folgt führen würde:
Je nach Tabelleninhalt kann es auch sinnvoll sein, unterschiedliche Spaltenbreiten zuzulassen.
\documentclass[version=last,12pt]{scrreport}
\usepackage{tabularx,booktabs}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcolumntype{Z}[2]{>{\raggedright\arraybackslash}p{\dimexpr #1\textwidth- #2\tabcolsep} }
\newcolumntype{Y}[1]{>{\raggedright\arraybackslash}p{\dimexpr #1\textwidth} }
\usepackage{showframe}
\begin{document}
\begin{table}[t]
\tiny
\begin{tabularx}{\linewidth}{@{}*{7}{L}@{}}
\toprule
Excavator
& Alphanumeric data
& Location
& Warranty details
& Expiry date of the support period
& Required business properties
& Maximum needed diesel
\\
\bottomrule
\end{tabularx}
\end{table}
\begin{table}[t]
\tiny
\begin{tabular}{@{}Z{0.14}{1}
*{5}{Z{0.14}{2}}
Z{0.14}{1} @{}}
\toprule
Excavator
& Alphanumeric data
& Location
& Warranty details
& Expiry date of the support period
& Required business properties
& Maximum needed diesel
\\
\bottomrule
\end{tabular}
\end{table}
\begin{table}[t]
\tiny \setlength{\tabcolsep}{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}*{7}{Y{0.14}}}
\toprule
Excavator
& Alphanumeric data
& Location
& Warranty details
& Expiry date of the support period
& Required business properties
& Maximum needed diesel
\\
\bottomrule
\end{tabular*}
\end{table}
\end{document}