我正在尝试使用 booktabs 包将一个大表格放入我的文档中,但它太宽了。下面给出了表格中几行的示例。我使用行是\noindent\makebox[\textwidth]{%
因为以前它似乎对我有用,但现在没有帮助。
例子:
\usepackage{graphicx}
\usepackage{booktabs}
\begin{document}
\begin{table}
\small
\begin{center}
\noindent\makebox[\textwidth]{%
\begin{tabular}{lcccccccccccccccccc}
\toprule
Event & \multicolumn{2}{c}{Counts}& \multicolumn{8}{c}{Genres} &\multicolumn{8}{c}{Genres blabla} \\
\cmidrule(r){1-1} \cmidrule(r){2-3} \cmidrule(r){4-11}\cmidrule(r){12-19}
&&&&&&&&&&&&&&&&&&\\
\midrule
Test1 & 138 & 8 & 0 & 0 & 60 & 4 & 61 & 4 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 16 & 0\\
Test2 & 162 & 136 & 0 & 0 & 71 & 63 & 89 & 72 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 2 & 1\\
Test3 & 161 & 120 & 0 & 0 & 66 & 40 & 85 & 77 & 0 & 0 & 0 & 0 & 0 & 0 & 6 & 3 & 4 & 0\\
Test4 & 122 & 109 & 0 & 0 & 55 & 48 & 63 & 61 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 3 & 0\\
Test5 & 126 & 3 & 1 & 0 & 45 & 1 & 36 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 43 & 1\\
\bottomrule
\end{tabular}
}
\end{center}
\end{table}
\end{document}
其次,&&&&&&&&&&&&&&&&&&\\
我需要在行上添加列名。但是这些列名很长,所以我想将它们旋转大约 45 度并彼此靠近。我试过了,\rotatebox{45}{sentence1} & \rotatebox{45}{sentence2} & ... ,
但那并没有完全达到我想要的效果。使用\rotatebox
, 的头部sentence2
将从 的尾部sentence1
结束的地方开始。我希望 的头部sentence2
紧挨着 的头部sentence1
。
下面是我的意思的一个例子。编译此代码时,3 个标题之间有很大的间距。我希望第二个标题的单词“this”紧挨着第一个标题的“this”。等等。
\documentclass[12pt]{article}
\usepackage{graphicx}
\begin{document}
\begin{table}
\begin{tabular}{ccc}
\rotatebox{45}{This is a very long heading} & \rotatebox{45}{This is a very long heading} & \rotatebox{45}{This is a very long heading}
\end{tabular}
\end{table}
\end{document}
我希望这是有道理的
答案1
您可以尝试减少\tabcolsep
(列开头和其内容之间的空间;默认值为6pt
)并更改为较小的字体大小。
编辑:将标题旋转 45 度然后重叠并不是一个好主意,因为它可能会在视觉上造成混淆;更好的方法是将标题旋转 90 度;这可以通过旋转环境minipage
来实现。turn
旋转包裹:
\documentclass{article}
\usepackage{rotating}
\usepackage{array}
\usepackage{booktabs}
\newcolumntype{R}[1]{>{\begin{turn}{90}\begin{minipage}{#1}\scriptsize}l%
<{\end{minipage}\end{turn}}%
}
\begin{document}
\begin{table}
\footnotesize
\setlength\tabcolsep{3pt}
\centering
\begin{tabular}{lcccccccccccccccccc}
\toprule
Event & \multicolumn{2}{c}{Counts}& \multicolumn{8}{c}{Genres} &
\multicolumn{8}{c}{Genres blabla} \\
\cmidrule(r){1-1} \cmidrule(r){2-3} \cmidrule(r){4-11}\cmidrule(l){12-19}
\multicolumn{1}{R{2cm}}{some long long\\ heading}
& \multicolumn{1}{R{2cm}}{some long long\\ heading}
& \multicolumn{1}{R{2cm}}{some long long\\ heading}
& \multicolumn{1}{R{2cm}}{short heading}
& \multicolumn{1}{R{2cm}}{some long long\\ heading}
& \multicolumn{1}{R{2cm}}{some long long\\ heading}
& \multicolumn{1}{R{2cm}}{short heading}
& \multicolumn{1}{R{2cm}}{some long long\\ heading}
& \multicolumn{1}{R{2cm}}{some long long\\ heading}
& \multicolumn{1}{R{2cm}}{short heading}
& \multicolumn{1}{R{2cm}}{some long long\\ heading}
& \multicolumn{1}{R{2cm}}{short heading}
& \multicolumn{1}{R{2cm}}{some long long\\ heading}
& \multicolumn{1}{R{2cm}}{short heading}
& \multicolumn{1}{R{2cm}}{some long long\\ heading}
& \multicolumn{1}{R{2cm}}{short heading}
& \multicolumn{1}{R{2cm}}{short heading}
& \multicolumn{1}{R{2cm}}{short heading}
& \multicolumn{1}{R{2cm}}{short heading} \\
\cmidrule(r){1-1} \cmidrule(rl){2-2} \cmidrule(rl){3-3} \cmidrule{4-4} \cmidrule(rl){5-5}
\cmidrule(rl){6-6} \cmidrule{7-7} \cmidrule(rl){8-8} \cmidrule(rl){9-9} \cmidrule{10-10}
\cmidrule(rl){11-11} \cmidrule{12-12} \cmidrule(rl){13-13} \cmidrule{14-14}
\cmidrule(rl){15-15} \cmidrule(r{1pt}){16-16} \cmidrule(l{1pt}r{1pt}){17-17}
\cmidrule(l{1pt}r{1pt}){17-17}\cmidrule(l{1pt}r{1pt}){18-18}\cmidrule(l{1pt}){19-19}
Test1 & 138 & 8 & 0 & 0 & 60 & 4 & 61 & 4 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 16 & 0 \\
Test2 & 162 & 136 & 0 & 0 & 71 & 63 & 89 & 72 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 2 & 1 \\
Test3 & 161 & 120 & 0 & 0 & 66 & 40 & 85 & 77 & 0 & 0 & 0 & 0 & 0 & 0 & 6 & 3 & 4 & 0 \\
Test4 & 122 & 109 & 0 & 0 & 55 & 48 & 63 & 61 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 3 & 0 \\
Test5 & 126 & 3 & 1 & 0 & 45 & 1 & 36 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 43 & 1 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
如果以上方法都不适用,另一个选择是旋转整个桌子,例如使用旋转包裹。
答案2
{NiceTabular}
这是一种使用(≥ 6.22 2023-08-14)构建该表的方法,nicematrix
其中标签旋转 90°,如 Gonzalo Medina 所建议的那样。
\documentclass{article}
\usepackage{booktabs}
\usepackage{nicematrix}
\begin{document}
\begin{table}
\footnotesize
\setlength\tabcolsep{3pt}
\centering
\begin{NiceTabular}{l*{18}{c}}
\toprule
Event & \Block{1-2}{Counts} && \Block{1-8}{Genres} &&&&&&&&
\Block{1-8}{Genres blabla} \\
\cmidrule(r){1-1} \cmidrule(r){2-3} \cmidrule(r){4-11}\cmidrule(l){12-19}
\RowStyle{\rotate\scriptsize}
\Block{}{some long long\\ heading}
& \Block{}{some long long\\ heading}
& \Block{}{some long long\\ heading}
& short heading
& \Block{}{some long long\\ heading}
& \Block{}{some long long\\ heading}
& short heading
& \Block{}{some long long\\ heading}
& \Block{}{some long long\\ heading}
& short heading
& \Block{}{some long long\\ heading}
& short heading
& \Block{}{some long long\\ heading}
& short heading
& \Block{}{some long long\\ heading}
& short heading
& short heading
& short heading
& short heading \\
\cmidrule(r){1-1} \cmidrule(rl){2-2} \cmidrule(rl){3-3} \cmidrule{4-4} \cmidrule(rl){5-5}
\cmidrule(rl){6-6} \cmidrule{7-7} \cmidrule(rl){8-8} \cmidrule(rl){9-9} \cmidrule{10-10}
\cmidrule(rl){11-11} \cmidrule{12-12} \cmidrule(rl){13-13} \cmidrule{14-14}
\cmidrule(rl){15-15} \cmidrule(r{1pt}){16-16} \cmidrule(l{1pt}r{1pt}){17-17}
\cmidrule(l{1pt}r{1pt}){17-17}\cmidrule(l{1pt}r{1pt}){18-18}\cmidrule(l{1pt}){19-19}
Test1 & 138 & 8 & 0 & 0 & 60 & 4 & 61 & 4 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 16 & 0 \\
Test2 & 162 & 136 & 0 & 0 & 71 & 63 & 89 & 72 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 2 & 1 \\
Test3 & 161 & 120 & 0 & 0 & 66 & 40 & 85 & 77 & 0 & 0 & 0 & 0 & 0 & 0 & 6 & 3 & 4 & 0 \\
Test4 & 122 & 109 & 0 & 0 & 55 & 48 & 63 & 61 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 3 & 0 \\
Test5 & 126 & 3 & 1 & 0 & 45 & 1 & 36 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 43 & 1 \\
\bottomrule
\end{NiceTabular}
\end{table}
\end{document}