在 tabularx 环境中有子表和子选项

在 tabularx 环境中有子表和子选项

我试图在 tabularx 环境中拥有两个大型子表,因为这两个表每个都超过一页。这意味着它们每个都应该分开并有自己的子标题。我提供了一个最小工作示例(它有一些错误,但它可以编译),其中包含较短的表格以提高可读性,以及一些我想要实现的指标。

我正在遵循日记模板,因此如果可能的话,我希望避免手动编写标题之类的技巧。这本来可以轻松完成,table但我需要每个打破桌子。我很高兴听到一个替代方案。

\documentclass[12p]{article}
\usepackage{setspace}
\usepackage{caption}
\usepackage{tabularx,ltablex}
\usepackage{multirow}
\usepackage{pbox}
\usepackage{subcaption,booktabs,float}

\begin{document}

\begin{tabularx}

\small

\subfloat{

\begin{tabularx}{\linewidth}{cccccccccccc}
\toprule
    ~ & XX & XX & XX & XX & ~ & XX & XX & XX & XX \\   
\midrule
\endfirsthead
\toprule
    ~ & XX & XX & XX & XX & ~ & XX & XX & XX & XX \\   
\midrule
\endhead
\midrule
\multicolumn{12}{r}{\footnotesize( To be continued)}
\endfoot
%\bottomrule
\endlastfoot
BBB & \multicolumn{2}{c}{BBBBBB} & ~ & ~ & ~ & \multicolumn{2}{c}{BBBBBB} & ~ \\      \hline
    
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ 
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\  
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ 
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\  
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ 
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\  
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ 
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ \hline

\caption{This should be a subcaption: (s) Sth sth sth} 
\end{tabularx}
}

\vspace{2\floatsep}   

\subfloat{

\small
\begin{tabularx}{\linewidth}{cccccccccccc}

\toprule
    ~ & XX & XX & XX & XX & ~ & XX & XX & XX & XX \\  
\midrule
\endfirsthead
\toprule
    ~ & XX & XX & XX & XX & ~ & XX & XX & XX & XX \\  
\midrule
\endhead
\midrule
\multicolumn{12}{r}{\footnotesize( To be continued)}
\endfoot
\endlastfoot

     BBB & \multicolumn{2}{c}{BBBBBB} & ~ & ~ & ~ & \multicolumn{2}{c}{BBBBBB} & ~ \\ \hline
     
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ 
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\  
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ 
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\  
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ 
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\  
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ 
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ \hline

\caption{This should be a subcaption: (b) Sth sth sth}        
\end{tabularx}
}

\end{tabularx}

There should be a caption here: Table X: sth sth sth\\ 
  \scriptsize{\textit{Note:} Random notes.}  
\end{document}

答案1

  • 嗯,非常不寻常的要求……
  • 坦率地说,我看不出这种连续的表格有什么意义。
  • 无论如何,你应该知道:
    • 长表格跨越多页,不能放在任何框中,就像你试图将它们插入subfloattabularx
    • tabularx表格中,你应该规定表格宽度,以及所有表格所需的列类型数量
    • 表中tabularx至少有一列应属于其类型X或来自其派生类型。
    • 表格中的列数应与表格序言中规定的列数相一致。在您的例子中,您规定了 10 列,但在表格中,您需要一个multicolumn单元格,该单元格应跨越 12 列
    • ltablex重新定义X列宽,所以如果你愿意的话,
    • 它们的行为与纯表相同tabularx,因此您应该在前言中添加命令 \keepXColumns

希望以下 MWE 能提供一些与您所追求的内容相近的内容:

\documentclass[12p]{article}
\usepackage{booktabs, multirow, ltablex}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\keepXColumns
\usepackage[skip=1ex]{caption}
\usepackage{subcaption}

\begin{document}

\begin{tabularx}{\linewidth}{@{} X cccc c cccc @{}}
\caption*{(a) This should be a subcaption}   \\
\toprule
    ~ & XX & XX & XX & XX & ~ & XX & XX & XX & XX \\
\midrule
\endfirsthead
\caption*{(a) This should be a subcaption}   \\
\toprule
    ~ & XX & XX & XX & XX & ~ & XX & XX & XX & XX \\
\midrule
\endhead
\midrule
\multicolumn{10}{r}{\footnotesize( To be continued)}
\endfoot
%\bottomrule
\endlastfoot
BBB BBB BBB BBB BBB BBB BBB BBB 
      & \multicolumn{2}{c}{BBBBBB} & ~ & ~ & ~ & \multicolumn{2}{c}{BBBBBB} & ~ \\      \hline

    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ \hline
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ \hline
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ \hline
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ \hline
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ \hline
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ \hline
\end{tabularx}

\medskip
\begin{tabularx}{\linewidth}{c cccc c cccc}
\caption*{(b) This should be a subcaption} \\
\toprule
    ~ & XX & XX & XX & XX & ~ & XX & XX & XX & XX \\
\midrule
\endfirsthead
\caption*{(b) This should be a subcaption}   \\
\toprule
    ~ & XX & XX & XX & XX & ~ & XX & XX & XX & XX \\
\midrule
\endhead
\midrule
\multicolumn{10}{r}{\footnotesize( To be continued)}
\endfoot
\endlastfoot

     BBB & \multicolumn{2}{c}{BBBBBB} & ~ & ~ & ~ & \multicolumn{2}{c}{BBBBBB} & ~ \\ \hline

    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ \hline
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ \hline
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ \hline
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ \hline
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ \hline
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\
    A & 1 & 1 & 1 & 1 & ~ & 1 & 1 & 1 & 1 \\ \hline
\end{tabularx}

\addtocounter{table}{-2}
\captionof{table}{This is main caption}

 \scriptsize{\textit{Note:} Random notes.}
\end{document}

笔记

  • 在上面的 MWE 中,第一列是X类型,因此表格宽度等于,\textwidth第一列中较长的文本分成两行
  • 第二个表只有c列,因此表行为是标准的longtable

在此处输入图片描述

相关内容