表格有多行、多列作为标题,使用 parbox,文本被拉伸

表格有多行、多列作为标题,使用 parbox,文本被拉伸

我正在尝试在 LaTeX 中编写一个表格,在标题中使用多行和多列。我设法用此代码(我在 overleaf 中轻松编译)获得了我想要的效果:

\documentclass[12pt,a4paper]{article}
\usepackage{booktabs}% http://ctan.org/pkg/booktabs
\usepackage[margin=3cm]{geometry}% http://ctan.org/pkg/geometry
\usepackage{multirow}
\usepackage{array}


\begin{document}
\setlength\extrarowheight{2pt}%%precisei definir isso para dar meis espaço para a bottom rule da tabela
\noindent
\small
\centering
\begin{tabular}{ccccc}
    \toprule
    \multirow{2}{*}{\parbox{0.15\linewidth}{\centering Dimensão da Teoria do Fluxo}} \multirow{2}{*}{\parbox{0.15\linewidth}{\centering Componente do Framework}} & \multicolumn{3}{c}{\parbox{0.7\linewidth}{\centering Heurísticas}} \\ %%defini parboxes para setar as dimensões de cada coluna de acordo com a margem do texto.
    \cmidrule{2-4}
     & &
    \parbox{0.1\linewidth}{\centering N} &
    \parbox{0.3\linewidth}{\centering Descrição detalhada} & 
    \parbox{0.3\linewidth}{\centering Referências CALL} \\
    \midrule
    \bottomrule
  \end{tabular}
\end{document}

它给了我下表:

我的桌子

但是,一旦我输入一些行,表格就会被拉伸,并且不会按照我的 5 单元格规则输入数据,我不知道为什么!

在此处输入图片描述

答案1

  • 目前还不完全清楚你的表格应该是什么样子,所以提出的可能的解决方案是基于猜测你之后
  • 我不会\parbox在表格单元格中使用 es 来显示文本。我宁愿规定列宽
  • 在第一列中拆分单元格会带来麻烦。更好的方法是在需要的地方将列分成两列,然后将相邻的列合并为\multicolumn单元格。
  • 在下面的 MWE 中假设您只喜欢在前两列中拥有多列单元格,因此为这些列定义了特殊的新命令。
  • 更复杂的表格结构可以通过使用Tabularray包来管理。但是,为了使用它,我需要更多关于你的表格的信息(因此请将你的表格代码扩展到更多行(使用一些虚拟文本),
\documentclass[12pt,a4paper]{article}
\usepackage[margin=3cm]{geometry}% http://ctan.org/pkg/geometry
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\usepackage{booktabs}
\usepackage{multirow}
\usepackage{tabularx}
\newcolumntype{C}[1]{>{\hsize=#1\hsize%
                       \centering\arraybackslash}X}
\NewExpandableDocumentCommand\mcxx{m}
{\multicolumn{2}
             {>{\centering\arraybackslash}p{%
                    \dimexpr.3\linewidth+2\tabcolsep+\arrayrulewidth}}
             {#1}
}



\begin{document}
\setlength\extrarowheight{2pt}%%precisei definir isso para dar meis espaço para a bottom rule da tabela
\noindent
\small
\renewcommand\multirowsetup{\centering}%
\begin{tabularx}{\textwidth}{@{}    C{0.15} C{0.15}
                                    c
                                    C{0.3}  C{0.3}
                             @{}}
    \toprule
\multirow{2}{=}{Dimensão da Teoria do Fluxo}
    &   \multirow{2}{=}{Componente do Framework}
        & \multicolumn{3}{c}{Heurísticas}           \\
    \cmidrule(l){3-5}
    &   &   N
            &   Descrição detalhada
                &       Referências CALL            \\
    \midrule
\mcxx{some quite long text over three columns}
            &   &                                   \\
    \midrule
A   & B & C & D & E                                 \\
    \bottomrule
  \end{tabularx}
\end{document}

在此处输入图片描述

(红线表示文档页面布局)

相关内容