我已经在这上面花了太多时间,请检查:
\documentclass{article}
\usepackage{geometry}
\geometry{
a4paper,
left=25.4mm,
top=25.4mm,
}
\usepackage{ragged2e}
\usepackage{tabularx}
\usepackage{tabularray}
\usepackage{float}
\usepackage{booktabs}
\usepackage{multirow}
\begin document
\noindent
\begin{tabularx}{\linewidth}{|X|c|c|c|c|X|X|X|X|X|}
\hline
\multirow{2}{*}{ID} & \multirow{2}{1cm}{\# of sections} & \multirow{2}{1cm}{\# cylinders per section} & \multirow{2}{1cm}{Total \# of cylinders} & \multirow{2}{1cm}{Storage capacity} & \multicolumn{2}{c|}{Pressure range (MPa)} & \multicolumn{3}{c|}{Dimensions (mm)}\\
\cline{6-10}
& & & & & minimum & maximum & L & W & H\\
\hline
1 & 4 & 1 & 4 & 53 & 1 & 70 & 1,200 & 1,200 & 2,700\\
\hline
\end{tabularx}
\end{document}
要求:
- 使整个表格适合页面宽度(这就是为什么使用 tabularx 而不是 tabular 的原因),
- 将文本整齐地换行在第 2、3、4、5 列中;
- 将剩余宽度均匀分布在第 1、6、7、8、9、10 列。
答案1
这是一个使用 的解决方案tabularray
,它合并了大多数以前的表格相关软件包的大多数功能,包括tabularx
。语法使其易于调整。
width
当 时,实际上没有必要指定\textwidth
。- 如果
\textwidth
太低,包装就会开始寻找可以减少的空间,并且X
列的宽度将不再相等。
\documentclass{article}
\usepackage{tabularray}
\usepackage[margin=1.2cm]{geometry}
\begin{document}
\noindent
\begin{tblr}{
width=\textwidth,
colspec={X[1,c]Q[c,1.2cm]Q[c,1.2cm]Q[c,1.2cm]Q[c,1.2cm]X[1,c]X[1,c]X[1,c]X[1,c]X[1,c]},
hlines,
vlines,
cell{1}{1-5}={r=2}{m},
cell{1}{6}={c=2}{c},
cell{1}{8}={c=3}{c},
}
ID & \# of sections & \# cylinders per section & Total \# of cylinders & Storage capacity & Pressure range (MPa) & & Dimensions (mm) & & \\
& & & & & minimum & maximum & L & W & H\\
1 & 4 & 1 & 4 & 53 & 1 & 70 & 1,200 & 1,200 & 2,700
\end{tblr}
\end{document}
答案2
带tabularx
包装(根据需要):
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{multirow, tabularx}
\newcolumntype{C}[1]{>{\hsize=#1\hsize\centering\arraybackslash}X}
\begin{document}
\begin{table}[ht]
\setlength\tabcolsep{3pt}
\small
\begin{tabularx}{\linewidth}{|c|C{0.9}| C{1.3}| C{1.2}|C{1}| C{1.1}|C{1.1}| C{0.8}|C{0.8}|C{0.8}|}
\hline
\multirow{2}{*}{ID}
& \multirow{2}{=}{\# of sections}
& \multirow{2}{=}{\# cylinders per section}
& \multirow{2}{=}{Total \# of cylinders}
& \multirow{2}{=}{Storage capacity}
& \multicolumn{2}{c|}{Pressure range (MPa)}
& \multicolumn{3}{c|}{Dimensions (mm)}\\
\cline{6-10}
& & & & & minimum & maximum & L & W & H\\
\hline
1 & 4 & 1 & 4 &53 & 1 & 70 & 1,200 & 1,200 & 2,700\\
\hline
\end{tabularx}
\end{table}
\end{document}
编辑:
假设该表有多行,并且最后三列(dimensions (mm)
)中的数据不同,那么最后三列属于S
列类型可能是合理的。这可能也适用于其他列,但由于缺乏有关表内容的信息,因此这一点并不明显)。这次使用tabularray
包:
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{tabularray}
\UseTblrLibrary{siunitx}
\begin{document}
\begin{table}[ht]
\sisetup{table-format=4.0,
group-minimum-digits=4,
group-separator={,}
}
\small
\begin{tblr}{hlines, vlines,
colspec = {c X[0.9,c] X[1.3,c] X[1.2,c] X[c]
*{2}{X[1.1,c]} *{3}{X[c, si]} },
colsep = 3pt,
cell{1}{1-5}={r=2}{m},
cell{1}{6}={c=2}{c},
cell{1}{8}={c=3}{c},
row{1,2} = {guard}
}
ID & \# of sections
& \# cylinders per section
& Total \# of cylinders
& Storage capacity
& Pressure range (MPa)
& & Dimensions (mm)
& & \\
& & & & & minimum & maximum & L & W & H \\
1 & 4 & 1 & 4 &53 & 1 &70 & 1200 & 1200 & 2700 \\
2 & 4 & 1 & 4 &53 & 1 &70 & 920 & 880 & 880 \\
\end{tblr}
\end{table}
\end{document}