![将单元格设置为整个表格的 1/n 宽度](https://linux22.com/image/370074/%E5%B0%86%E5%8D%95%E5%85%83%E6%A0%BC%E8%AE%BE%E7%BD%AE%E4%B8%BA%E6%95%B4%E4%B8%AA%E8%A1%A8%E6%A0%BC%E7%9A%84%201%2Fn%20%E5%AE%BD%E5%BA%A6.png)
我正在绘制一个表格,其中中心元素比其他元素大得多(多列),并且它导致表格的最后一个元素拉伸,但是我想均匀地拉伸它们。
以下是 MWE:
\documentclass{article}
\begin{document}
\begin{tabular}{c | c | c}
0 & 1 & 0\\
\hline
\multicolumn{3}{c}{Infrared Sensor drivers}\\
\hline
0 & 0 & 0\\
\end{tabular}
\end{document}
有没有办法让它们均匀伸展,还是我必须让每一个都一样p{\widthof{Inrared Sensor Drivers}/3}
?我有很多桌子要这样做,这就是为什么我正在寻找一个更好的解决方案
答案1
最好的办法是定义一个新的列类型(使用array
包和\newcolumntype
,Y
并在其中说和应用居中。
tabularx
将使用第一个参数的值({\linewidth}
此处)并将剩余空间平均分配到所有X
列(或从 X 派生的类型,也是如此Y
。
\tabcolsep
但即使这样也会产生溢出框,因为表格的左右边缘有列间空间。可以使用 禁用此功能@{}
。
包装showframe
显示出与线条宽度的完美契合。
\documentclass{article}
\usepackage{array}
\usepackage{tabularx}
\usepackage{showframe}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\begin{document}
\noindent
\begin{tabularx}{\linewidth}{@{}*{3}{Y}@{}}
0 & 1 & 0\\
\hline
\multicolumn{3}{c}{Infrared Sensor drivers}\\
\hline
0 & 0 & 0\\
\end{tabularx}
\end{document}
答案2
让我将我的评论转换为答案:¸
\documentclass{article}
\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcommand\mccc[1]{\multicolumn{3}%
{>{\centering\arraybackslash}p{\dimexpr\linewidth-2\tabcolsep\relax}}
{#1}}
\begin{document}
\begin{tabularx}{\linewidth}{C | C | C}
0 & 1 & 0\\
\hline
\mccc{Infrared Sensor drivers}\\
\hline
0 & 0 & 0\\
\end{tabularx}
\end{document}
在使用中multicolumn
我假设这个单元格的内容可以比表格宽度更长。