我有一个包含很多列的表格,这些列只包含一些短值,但标题却很长。我认为,如果我能让标题交替排列,两端重叠,那么这个表格就能够适合单个(横向)页面的宽度。
我怎样才能实现这个目标?
(我尝试使用 编写两个标题行,其中一半的列名在一行中,另一半在另一行中\multicolumn
,但我无法使它们与列整齐对齐。)
\documentclass[]{article}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{ccc}
\toprule
Lengthy words which & make my columns too wide like & antidisestablishmentarianism\\
\midrule
1 & 0 & 0\\
3 & 7 & 5\\
\bottomrule
\end{tabular}
\end{document}
或者,使用 booktabs 的带有旋转列标签的大表带有长标题的表格的首选布局是什么?我不太愿意使用它,因为已经有足够多的行需要在多个页面上重复标题;使它们更高会加剧这个问题。
答案1
我首先想到的答案是这样的:
\documentclass{article}
\usepackage{array}
\usepackage{rotating}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{ccc}
\toprule
\begin{sideways} Lengthy words which \end{sideways} &
\begin{sideways} make my columns too wide like \end{sideways} &
\begin{sideways} antidisestablishmentarianism \end{sideways} \\
\midrule
1 & 0 & 0\\
3 & 7 & 5\\
\bottomrule
\end{tabular}
\end{document}
但我认为这又指向了错误的目标。虽然你可以用列来包装标题p
,或者tabularx
使用多列,或者将标题旋转 90 度,或者使用其他技巧,但对于这种情况,没有好的 LaTeX 解决方案,因为表格仍然可能看起来很糟糕。只需比较以下四个表格:
第一个表格的tabularx
标题太可怕了,四行之间还有很大的空白。如果你想减少这个空白(第二个表格),标题会更长(更可怕)。像上面 MWE 那样旋转标题会迫使读者做一些有趣的颈部练习。LaTeX 可以最好地处理给定的文本,但不是奇迹。主要问题是表格设计不好,解决方案是重新设计表格。哪种表格更好?
我知道这太明显了,而且在这种情况下肯定不会因为某些充分的理由而被考虑,但一般来说,长标题的最佳解决方案只是(1)使用较短的标题(包括使用首字母缩略词,预定义标签等)或(2)转置列和行:
\documentclass[]{article}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{lcc}
\toprule
Some long to explain & a & b \\
\midrule
Lengthy words which & 1 & 3 \\
make my columns too wide like & 0 & 7 \\
antidisestablishmentarianism & 0 & 5 \\
\bottomrule
\end{tabular}
答案2
编辑:在第一个解决方案中,表格中的长单词无法正确连字。这是因为如果有一个长单词,LaTeX 不会为其连字,因为它从不为段落的第一个单词连字。解决方法是告诉 LaTeX 这个词不是段落的第一个单词,只需在给定单词前添加一个空空格即可。
一个解决方案是使用p
而不是c
来定义列。
\begin{tabular}{p{.2\textwidth} p{.2\textwidth} p{.2\textwidth}}
\toprule
Lengthy words which & make my columns too wide like & \hspace{0pt}antidisestablishmentarianism\\
\midrule
1 & 0 & 0\\
3 & 7 & 5\\
\bottomrule
\end{tabular}
据我所知,它似乎有效,但在正确剪切长单词(如 anti...)时存在问题;不幸的是,\hyphenation
它对这个问题没有太大帮助......
另一种可能性是使用\multicolumn
,如下所示:
\begin{tabular}{c c c c c}
\toprule
\multicolumn{2}{c}{Lengthy words which} & & \multicolumn{2}{c}{antidisestablishmentarianism} \\
& \multicolumn{3}{c}{make my columns too wide like} & \\
\midrule
1 & \multicolumn{3}{c}{0} & 0\\
3 & \multicolumn{3}{c}{7} & 5\\
\bottomrule
\end{tabular}
c
您可以通过更改一些明确定义的来改善输出p
。