将单元格设置为整个表格的 1/n 宽度

将单元格设置为整个表格的 1/n 宽度

我正在绘制一个表格,其中中心元素比其他元素大得多(多列),并且它导致表格的最后一个元素拉伸,但是我想均匀地拉伸它们。

以下是 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包和\newcolumntypeY并在其中说和应用居中。

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我假设这个单元格的内容可以比表格宽度更长。

在此处输入图片描述

相关内容