为什么我的 7 列表格(x)比指定的更宽?

为什么我的 7 列表格(x)比指定的更宽?

我想要一个非常简单的表格(tabular/x/*,无论如何),有 7 列,每列占 14%\linewidth,总计 98%。

但由于某种原因,最右边的列 a) 位于边缘,b) 超出表格规则。 在此处输入图片描述

我如何解决它?

\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}     

答案1

第一个版本:使用tabularxX类型列会生成一个与文本宽度完全相同且由 7 个等宽列组成的表格。为了使列左对齐,我使用>{\raggedright\arraybackslash}并定义了一种新的自定义列类型L

第二个版本:在这里,我手动计算了列宽,同时考虑到\tabcolsep添加到每列内容左侧和右侧的值。如您所见,结果表如预期的那样比文本宽度略窄。

第三个版本:在这个版本中,我tabular*结合使用以\extracolsep{\fill}}确保表格与文本宽度一样宽。

以下屏幕截图中的垂直线是由showframe包引起的,显示了文本宽度/边距的开始。

在此处输入图片描述

附注:我希望,\tiny字体大小只是在这个例子中使用。由于这个字体大小太小,很难阅读,我建议不要使用它。即使使用常规字体大小,您也可以轻松地将表格放入文本宽度中,从而产生类似于

在此处输入图片描述

根据表格的内容,允许不同的列宽也可能会有好处。

\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}

 

相关内容