我正在尝试在 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}
(红线表示文档页面布局)