Warum ist meine 7-Spalten-Tabelle (x) breiter als angegeben?

Warum ist meine 7-Spalten-Tabelle (x) breiter als angegeben?

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. Bildbeschreibung hier eingeben

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 tabularxdes XSpaltentyps 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, \tabcolsepder 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 showframeund zeigen die Textbreite bzw. den Beginn der Ränder an.

Bildbeschreibung hier eingeben

Randbemerkung: Ich hoffe, die \tinySchriftgröß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:

Bildbeschreibung hier eingeben

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}

 

verwandte Informationen