![为什么我的 7 列表格(x)比指定的更宽?](https://linux22.com/image/423580/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%207%20%E5%88%97%E8%A1%A8%E6%A0%BC%EF%BC%88x%EF%BC%89%E6%AF%94%E6%8C%87%E5%AE%9A%E7%9A%84%E6%9B%B4%E5%AE%BD%EF%BC%9F.png)
我想要一个非常简单的表格(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
第一个版本:使用tabularx
的X
类型列会生成一个与文本宽度完全相同且由 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}