表格超出页面宽度

表格超出页面宽度

我有一个很大的表格,我不希望它超出页面限制。请参阅下面的代码。

\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} 

在此处输入图片描述

相关内容