有时我们需要渲染不适合页面的表格,因为表格太宽。现在,既然longtable
渲染不适合页面长度的表格,我们如何才能构建不适合页面宽度的包?
我在建议的软件包中寻找的功能包括:
功能 1
当表格宽度超出页面宽度时自动分割列。
\begin{tabular}{*{40}{c}}
H1&H2&H3&H4&H5&H6&H7&H8&H9&H10&H11&H12&H13&H14&H15&H16&H17&H18&H19&H20&H21&H22&H23&H24&H25&H26&H27&H28&H29&H30&H31&H32&H33&H34&H35&H36&H37&H38&H39&H40\\
1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40
\end{tabular}
在上面的代码中,由于所有列都无法容纳在页面宽度内,因此它将自动在适当的列处拆分表格。
功能 2
重复左侧的列。
\begin{tabular}{ll*{40}{c}}
Name&ID&H1&H2&H3&H4&H5&H6&H7&H8&H9&H10&H11&H12&H13&H14&H15&H16&H17&H18&H19&H20&H21&H22&H23&H24&H25&H26&H27&H28&H29&H30&H31&H32&H33&H34&H35&H36&H37&H38&H39&H40\\
A&00001&1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40
\end{tabular}
当表格在适当的列处被拆分时,应该有一个可选的规定来重复最左边的两列。
功能 3
当标题单元格由多列组成时,规定不要中断列。
\begin{tabular}{ll*{40}{c}}
\multicolumn{2}{c}{Particulars}&\multicolumn{5}{c}{Subject 1}&\multicolumn{10}{c}{Subject 2}&\multicolumn{7}{c}{Subject 3}&\multicolumn{8}{c}{Subject 4}&\multicolumn{10}{c}{Subject 5}\\
Name&ID&H1&H2&H3&H4&H5&H6&H7&H8&H9&H10&H11&H12&H13&H14&H15&H16&H17&H18&H19&H20&H21&H22&H23&H24&H25&H26&H27&H28&H29&H30&H31&H32&H33&H34&H35&H36&H37&H38&H39&H40\\
A&00001&1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40
\end{tabular}
表格不会在中间点分割任何多列Subject n
标题。
这些是我能想到的主要功能。一旦该软件包诞生,可能会添加更多功能。
令人惊讶的是,所有主要的电子表格都具备上述全部或大部分功能。
(为什么我没有写上面的包?很简单,这超出了我的知识范围。这就是我问这个问题的原因。)
(也许你可能想看看这个相关问题。这个问题在我这边已经好几年没解决了。)
答案1
使用 ConTeXt行表。这方面的文档基本上不存在,但你可以阅读源代码(非常易读)。
\starttext
\startlinetable
\NC[nx=2] Particulars \NC[nx=5] Subject 1 \NC[nx=10] Subject 2 \NC[nx=7] Subject 3 \NC[nx=8] Subject 4 \NC[nx=10] Subject 5 \NC\NR
\NC Name \NC ID \NC H1 \NC H2 \NC H3 \NC H4 \NC H5 \NC H6 \NC H7 \NC H8 \NC H9 \NC H10 \NC H11 \NC H12 \NC H13 \NC H14 \NC H15 \NC H16 \NC H17 \NC H18 \NC H19 \NC H20 \NC H21 \NC H22 \NC H23 \NC H24 \NC H25 \NC H26 \NC H27 \NC H28 \NC H29 \NC H30 \NC H31 \NC H32 \NC H33 \NC H34 \NC H35 \NC H36 \NC H37 \NC H38 \NC H39 \NC H40 \NC\NR
\NC A \NC 00001 \NC 1 \NC 2 \NC 3 \NC 4 \NC 5 \NC 6 \NC 7 \NC 8 \NC 9 \NC 10 \NC 11 \NC 12 \NC 13 \NC 14 \NC 15 \NC 16 \NC 17 \NC 18 \NC 19 \NC 20 \NC 21 \NC 22 \NC 23 \NC 24 \NC 25 \NC 26 \NC 27 \NC 28 \NC 29 \NC 30 \NC 31 \NC 32 \NC 33 \NC 34 \NC 35 \NC 36 \NC 37 \NC 38 \NC 39 \NC 40 \NC\NR
\stoplinetable
\stoptext