使用 tabularx 时表格的最后一个单元格出现错误

使用 tabularx 时表格的最后一个单元格出现错误

我的第一个表格的最后一个单元格有什么问题?

此代码返回错误 \noalign。

\documentclass[a4paper,11pt]{article}

\usepackage{array}
\usepackage{tabularx}
\usepackage{multirow,multicol}
\usepackage{booktabs}

\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}

\begin{table}[htbp]\centering
    \begin{tabularx}{\textwidth}{|C|>{\centering}m{1cm}|>{\centering}m{1cm}|>{\centering}m{1cm}|>{\centering}m{1cm}|>{\centering}m{1cm}|>{\centering}m{1cm}|}
        \hline
                     & \multicolumn{6}{>{\centering}m{1cm}|}{Bla} \\ \cline{2-7}
                     & 1 & 2 & 3 & 4 & 5 &     6     \\ \hline
         Activity 1  & x &   &   &   &   &           \\ \hline
         Activity 2  &   & x &   &   &   &           \\ \hline
         Activity 3  &   &   & x & x & x &           \\ \hline
         Activity 4  &   &   &   &   & x &     x     \\ \hline
    \end{tabularx}
\end{table}

这个看起来不错,但是最后一列是不规则的:

\documentclass[a4paper,11pt]{article}

\usepackage{array}
\usepackage{tabularx}
\usepackage{multirow,multicol}
\usepackage{booktabs}

    \newcolumntype{C}{>{\centering\arraybackslash}X}
    \begin{table}[htbp]\centering
    \begin{tabularx}{\textwidth}{|C|>{\centering}m{1cm}|>{\centering}m{1cm}|>{\centering}m{1cm}|>{\centering}m{1cm}|>{\centering}m{1cm}|c|}
        \hline
                    & \multicolumn{6}{c|}{Bla} \\ \cline{2-7}
                    & 1 & 2 & 3 & 4 & 5 &     6     \\ \hline
        Activity 1  & x &   &   &   &   &           \\ \hline
        Activity 2  &   & x &   &   &   &           \\ \hline
        Activity 3  &   &   & x & x & x &           \\ \hline
        Activity 4  &   &   &   &   & x &     x     \\ \hline
    \end{tabularx}
\end{table}

\end{document}

第二张表: 在此处输入图片描述

谢谢!

答案1

当您遇到错误并忽略它时,即使您确实得到了一个文档,也不能指望输出是正确的。在这种情况下,错误消息报告“放错位置的 \noalign”,这通常意味着您试图插入比您指定的更多的列。

原因是您无法使用\\来结束行,因为您已配置了表格。请使用\tabularnewline或添加\arraybackslash到相关列,就像您C在序言中对规范所做的那样。

\documentclass[a4paper,11pt]{article}

\usepackage{array}
\usepackage{tabularx}
\usepackage{multirow,multicol}
\usepackage{booktabs}

\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}

\begin{table}[htbp]\centering
    \begin{tabularx}{\textwidth}{|C|>{\centering\arraybackslash}m{1cm}|>{\centering\arraybackslash}m{1cm}|>{\centering\arraybackslash}m{1cm}|>{\centering\arraybackslash}m{1cm}|>{\centering\arraybackslash}m{1cm}|>{\centering\arraybackslash}m{1cm}|}
        \hline
                     & \multicolumn{6}{>{\centering}m{1cm}|}{Bla} \\ \cline{2-7}
                     & 1 & 2 & 3 & 4 & 5 &     6     \\ \hline
         Activity 1  & x &   &   &   &   &           \\ \hline
         Activity 2  &   & x &   &   &   &           \\ \hline
         Activity 3  &   &   & x & x & x &           \\ \hline
         Activity 4  &   &   &   &   & x &     x     \\ \hline
    \end{tabularx}
\caption{Cronograma}
\end{table}
\end{document}

固定对齐

您需要\arraybackslash在列规范中使用m,原因与您在定义时需要它的原因相同C,只是更重要,因为您实际上是想在其中一列中结束表格行m

相关内容