我有一个很大的表格,我不希望它超出页面限制。请参阅下面的代码。
\documentclass{article}
\usepackage[table,xcdraw]{xcolor}
\begin{document}
\begin{table}[]
\centering
\caption{My caption}
\label{my-label}
\begin{tabular}{
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l
>{\columncolor[HTML]{EFEFEF}}l }
\hline
DM & Option & States & & & & & & & & & & & & & & & & & & & & & & & & & \\ \hline
X & Option A & N & Y & N & N & Y & N & N & Y & N & Y & N & N & Y & N & N & Y & N & N & Y & N & N & Y & N & N & Y & N \\
& Option B & N & N & Y & N & N & Y & N & N & N & N & Y & N & N & Y & N & N & Y & N & N & Y & N & N & Y & N & N & Y \\
Y & Option C & N & N & N & Y & Y & Y & N & N & N & N & N & Y & Y & Y & N & N & N & N & N & N & Y & Y & Y & N & N & N \\
& Option D & N & N & N & N & N & N & Y & Y & N & N & N & N & N & N & Y & Y & Y & N & N & N & N & N & N & Y & Y & Y \\
Z & Option E & Y & Y & Y & Y & Y & Y & Y & Y & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N \\
& Option F & N & N & N & N & N & N & N & N & Y & Y & Y & Y & Y & Y & Y & Y & Y & N & N & N & N & N & N & N & N & N \\
& Option G & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & Y & Y & Y & Y & Y & Y & Y & Y & Y \\ \hline
Label & & 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 \\ \hline
\end{tabular}
\end{table}
\end{document}
答案1
该表格对于正常的肖像页来说太宽了。
因此,以下示例通过
sidewaystable
包的环境对其进行旋转rotating
。\tabcolsep
表格的宽度仍然太大,因此通过将其设置为较小的值来减少列之间的空间。背景颜色通过简单的设置来设置,
\colorbox
而不是用相同的颜色为每一列单独着色。\colorbox
使用额外的边距,由控制\fboxsep
,在这里将其本地设置为零。线条由包的宏设置
booktabs
,具有更好的间距行为。该包
caption
修复了表格标题周围的垂直间距,该标题出现在表格的顶部tabular
。
示例文件:
\documentclass{article}
\usepackage{booktabs}
\usepackage{caption}
\usepackage[table,xcdraw]{xcolor}
\usepackage{rotating}
\begin{document}
\begin{sidewaystable}
\caption{My caption}
\label{my-label}
\setlength{\fboxsep}{0pt}%
\setlength{\tabcolsep}{.73\tabcolsep}%
\colorbox[HTML]{EFEFEF}{%
\begin{tabular}{*{28}{l}}%
\toprule
DM & Option & \multicolumn{26}{c}{States} \\
\midrule
X & Option A & N & Y & N & N & Y & N & N & Y & N & Y & N & N & Y & N & N & Y & N & N & Y & N & N & Y & N & N & Y & N \\
& Option B & N & N & Y & N & N & Y & N & N & N & N & Y & N & N & Y & N & N & Y & N & N & Y & N & N & Y & N & N & Y \\
Y & Option C & N & N & N & Y & Y & Y & N & N & N & N & N & Y & Y & Y & N & N & N & N & N & N & Y & Y & Y & N & N & N \\
& Option D & N & N & N & N & N & N & Y & Y & N & N & N & N & N & N & Y & Y & Y & N & N & N & N & N & N & Y & Y & Y \\
Z & Option E & Y & Y & Y & Y & Y & Y & Y & Y & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N \\
& Option F & N & N & N & N & N & N & N & N & Y & Y & Y & Y & Y & Y & Y & Y & Y & N & N & N & N & N & N & N & N & N \\
& Option G & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & Y & Y & Y & Y & Y & Y & Y & Y & Y \\
\midrule
Label & & 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 \\
\bottomrule
\end{tabular}%
}%
\end{sidewaystable}
\end{document}
答案2
假设您的文档使用“正常”纸张大小(A4 或美国信纸)、“正常”页边距(例如 1 英寸)和 10pt 字体大小,则可以(尽管只是)使表格适合文本块,而无需将其旋转为“横向”模式。我建议您
通过合并表头和表尾行来重新组织表头,并将标签“States”置于第 3 至第 28 列的中心,
消除“选项”列中的一些冗余内容。
使用
tabular*
环境将表格的宽度设置\textwidth
为
另外,我还想建议您使用booktabs
包中的线条绘制宏(而不是\hline
),并在某些行之间添加一些空白。这些更改将有助于读者的眼睛浏览丰富的材料。
\documentclass{article}
\usepackage[a4paper,margin=2.5cm]{geometry} % set page and text block parameters
\usepackage{booktabs}
\usepackage[skip=0.5\baselineskip]{caption}
\usepackage[table]{xcolor}
\begin{document}
\begin{table}
\caption{My caption}
\label{my-label}
\setlength{\fboxsep}{0pt}
\setlength{\tabcolsep}{0pt} % let "tabular*" figure out intercolumn widths
\colorbox[HTML]{EFEFEF}{% % see http://tex.stackexchange.com/a/326578/5001
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}*{28}{l}}
\toprule
DM & Option & \multicolumn{26}{c}{States}\\
\cmidrule{3-28}
& & 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 \\
\midrule
X & A & N & Y & N & N & Y & N & N & Y & N & Y & N & N & Y & N & N & Y & N & N & Y & N & N & Y & N & N & Y & N \\
& B & N & N & Y & N & N & Y & N & N & N & N & Y & N & N & Y & N & N & Y & N & N & Y & N & N & Y & N & N & Y \\
\addlinespace
Y & C & N & N & N & Y & Y & Y & N & N & N & N & N & Y & Y & Y & N & N & N & N & N & N & Y & Y & Y & N & N & N \\
& D & N & N & N & N & N & N & Y & Y & N & N & N & N & N & N & Y & Y & Y & N & N & N & N & N & N & Y & Y & Y \\
\addlinespace
Z & E & Y & Y & Y & Y & Y & Y & Y & Y & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N \\
& F & N & N & N & N & N & N & N & N & Y & Y & Y & Y & Y & Y & Y & Y & Y & N & N & N & N & N & N & N & N & N \\
& G & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & N & Y & Y & Y & Y & Y & Y & Y & Y & Y \\
\bottomrule
\end{tabular*}}
\end{table}
\end{document}
答案3
为什么不交换行和列呢?这里有一种方法可以做到:
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage[table,xcdraw, svgnames]{xcolor}
\usepackage{booktabs, caption, multirow, stackengine}
\setstackEOL{\\}
\begin{document}
\begin{table}[]
\centering
\caption{My caption}
\label{my-label}
\setlength\extrarowheight{\belowrulesep}
\rowcolors{1}{white}{Lavender!90!lightgray}
\setlength\belowrulesep{0pt}
\begin{tabular}{crl*{9}{c}c}
\toprule
\rowcolor{white} & DM: & \multicolumn{2}{c}{X} & & \multicolumn{2}{c}{Y} & & \multicolumn{3}{c}{Z} \\
\cmidrule {3-4} \cmidrule{6-7} \cmidrule{9-11}
\rowcolor{white} Label & Options: & A & B & & C & D & & E & F & G \\
\midrule
1 & & N & N & & N & N & & Y & N & N \\
2 & & Y & N & & N & N & & Y & N & N \\
3 & & N & Y & & N & N & & Y & N & N \\
4 & & N & N & & Y & N & & Y & N & N \\
5 & & Y & N & & Y & N & & Y & N & N \\
6 & & N & Y & & Y & N & & Y & N & N \\
7 & & N & N & & N & Y & & Y & N & N \\
8 & & Y & N & & N & Y & & Y & N & N \\
9 & & N & N & & N & N & & N & Y & N \\
10 & & Y & N & & N & N & & N & Y & N \\
11 & & N & Y & & N & N & & N & Y & N \\
12 & & N & N & & Y & N & & N & Y & N \\
13 & & Y & N & & Y & N & & N & Y & N \\
14 & & N & Y & & Y & N & & N & Y & N \\
15 & & N & N & & N & Y & & N & Y & N \\
16 & & Y & N & & N & Y & & N & Y & N \\
17 & & N & Y & & N & Y & & N & Y & N \\
18 & & N & N & & N & N & & N & N& Y \\
19 & & Y & N & & N & N & & N & N& Y \\
20 & & N & Y & & N & N & & N & N& Y \\
21 & & N & N & & Y & N & & N & N& Y \\
22 & & Y & N & & Y & N & & N & N& Y \\
23 & & N & Y & & Y & N & & N & N& Y \\
24 & & N & N & & N & Y & & N & N& Y \\
25 & & Y & N & & N & Y & & N & N& Y \\
26 & \multirow{-26}{*}[2ex]{\setlength\fboxrule{0.8pt}\fcolorbox{ VioletRed!80!}{white}{\scshape \Shortstack{s\\t\\a\\t\\e\\s}}} %
& N & Y & & N & Y & & N & N& Y \\
\bottomrule
\end{tabular}
\end{table}
\end{document}