[Tex/LaTex] Table exceeds the page width

tableswidth

I have a large table, and I don't want it to exceed the page limit. Please see the code below.

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

Best Answer

The table is much too wide for a normal portrait page.

  • Therefore the following example rotates it via environment sidewaystable of package rotating.

  • The width of the table is still too large, therefore it is decreased by reducing the space between columns via setting \tabcolsep to a smaller value.

  • The background color is set by a simple \colorbox instead of coloring each column individually with the same color. \colorbox uses an additional margin, which is controlled by \fboxsep, which is set to zero here locally.

  • The lines are set by the macros of package booktabs, which have a nicer spacing behavior.

  • Package caption fixes the vertical spacing around table caption, which appear on top of the tabular.

Example file:

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

Result