tabularx 环境中的文本换行,多行

tabularx 环境中的文本换行,多行

我已经在这上面花了太多时间,请检查:

\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}

要求:

  1. 使整个表格适合页面宽度(这就是为什么使用 tabularx 而不是 tabular 的原因),
  2. 将文本整齐地换行在第 2、3、4、5 列中;
  3. 将剩余宽度均匀分布在第 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}

在此处输入图片描述

相关内容