我试图在 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
- 嗯,非常不寻常的要求……
- 坦率地说,我看不出这种连续的表格有什么意义。
- 无论如何,你应该知道:
- 长表格跨越多页,不能放在任何框中,就像你试图将它们插入
subfloat
到tabularx
- 在
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