如何显示比列的其余部分更宽的表头?

如何显示比列的其余部分更宽的表头?

我有一个包含很多列的表格,这些列只包含一些短值,但标题却很长。我认为,如果我能让标题交替排列,两端重叠,那么这个表格就能够适合单个(横向)页面的宽度。

我怎样才能实现这个目标?

(我尝试使用 编写两个标题行,其中一半的列名在一行中,另一半在另一行中\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

相关内容