我怎样才能将两列合并为一列?我的意思是,我制作一个有 7 列的表格,但每两列都应该合并在表格顶部。而且我只使用固定宽度的列。
我的代码是:
documentclass{article}
\setlength{\arrayrulewidth}{0.5mm}
\setlength{\tabcolsep}{18pt}
\renewcommand{\arraystretch}{1.5}
\begin{document}
\begin{table} [h!]
\centering
\setlength{\tabcolsep}{5pt}
\renewcommand{\arraystretch}{1.5}
\caption{Table of description}
\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}
\begin{tabular}{|P{3cm}|P{2cm}|P{2cm}|P{2cm}|P{2cm}|P{2cm}|P{2cm}|}
\hline
\ name & par & &par& &par& & \\
\hline
\ & & & & & & & \\
\end{document}
答案1
您的问题标题没有反映问题内容。您可能的意思是多列表格,列合并从问题内容来看。
您可以使用合并相邻单元格
\multicolumn<number of columns>}{<align>}{<content>}
或tabularray
等效
\SetCell[c=<number of columns>]{<align>} ...content...
当您使用这个新颖、功能强大的表格编写包时。
编辑:
我忽略了表格中第一列比其他列更宽这一点。X
可以通过“更改”因子轻松实现列的不同列宽,该因子会更改标准列宽(在X[l]
或 处X[1,l]]
)。此因子相当于>{\hsize=<factor>\hsize}X
在tabularx
表格处。
对于您的示例,在您的例子中,第一列的宽度3cm/2cm = 1.5
比其他列的宽度宽,因此第一列的规格是X[1.5,l]
或X[1.5.l,m]
。
现更正此错误:
\documentclass{article}
\usepackage{tabularray}
\begin{document}
\begin{table} [ht]
\caption{Table of description}
\begin{tblr}{hlines = 0.5mm, vlines=0.5mm,
colspec = {X[1.5,l]*{6}{X[l]}},
}
name & \SetCell[c=2]{c} par
& & \SetCell[c=2]{c} par
& & \SetCell[c=2]{c} par
& \\
1 & 2 & 3 & 4 & 5 & 6 & 7 \\
& & & & & & \\
\end{tblr}
\end{table}
or
\begin{table} [ht]
\caption{Table of description}
\begin{tblr}{hlines, vlines,
colspec = {X[1.5,l,m]*{7}{X[l]}},
row{1} = {font=\bfseries}
}
name & \SetCell[c=2]{c} par
& & \SetCell[c=2]{c} par
& & \SetCell[c=2]{c} par
& \\
text in two lines
& 2 & 3 & 4 & 5 & 6 & 7 \\
& & & & & & \\
\end{tblr}
\end{table}
\end{document}
以上是使用列类型 来实现单元格宽度相等X
。通过使用它,表格宽度将等于\textwidth
。tabularray
对于此列类型,定义许多选项,例如l
单元格内容左对齐、r
右对齐、c
居中、m
垂直居中等。这些选项可以组合在一起,如第二个示例所示(我更喜欢这个示例而不是第一个示例)。有关详细信息,请参阅包文档。
答案2
很难理解你想要什么。你想要这样的东西吗?
\documentclass{article}
\usepackage{geometry}
\usepackage{array}
\setlength{\arrayrulewidth}{0.5mm}
\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}
% \setlength{\tabcolsep}{18pt}
\begin{document}
\begin{table} [h!]
\centering
\setlength{\tabcolsep}{5pt}
\renewcommand{\arraystretch}{1.5}
\caption{Table of description}
\begin{tabular}{|P{3cm}|*{6}{P{2cm}|}}
\hline
name & \multicolumn{2}{c|}{par} &\multicolumn{2}{c|}{par} &\multicolumn{2}{c|}{par} \\
\hline
& & & & & & \\
\hline
\end{tabular}
\end{table}
\end{document}
要合并两列(或更多列),您可以使用该\multicolumn{}{}{}
命令,其中第一个参数是需要合并的列数,第二个参数是列的水平对齐方式(l
,c
或 ,r
),第三个参数是列的内容。
现在,您的表格中出现了一些错误。您需要为列(n-1)
添加列分隔符(&
)n
(您使用了 7 &
)。您需要array
包来定义新的列类型。另一个问题是您的表格宽度超出了文本宽度。因此,我建议减小一些列的宽度。
此外,如果您有多个相同类型的列,则可以使用命令来定义它们,其中列数为*{n}{<columnType>}
。n