如何获得列间距相等且不超过页面范围的表格?

如何获得列间距相等且不超过页面范围的表格?

我对 Latex 还不太熟悉,我正在尝试编写如下表格:

在此处输入图片描述

经过几个小时的搜索,这是我能得到的最好的结果:

在此处输入图片描述

使用此代码:

\documentclass{report}
\usepackage{graphicx}

\begin{document}
    \begin{table}[!ht]
        \def\arraystretch{1.5}
        \centering
        \resizebox{\textwidth}{!}{%
            \begin{tabular}{|l|c|l|l|l|l|l|l|l|}
                \hline
                Bit & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 \\ \hline
                byte 1 & \multicolumn{4}{c|}{Tipo de Paquete de Control} & \multicolumn{4}{c|}{Flags específicos de cada Paquete de Control} \\ \hline
                byte 2 & \multicolumn{8}{c|}{Longitud restante} \\ \hline
            \end{tabular}%
        }
        \caption{Formato del Header Fijo}
    \end{table}
\end{document}

这对我来说非常好,除了“4”和“0”列与其他列相比确实很大之外,这些列的分布不太好。

我尝试过“X”类型的列,但表格总是超出页面范围。这应该很简单,但我在 Microsoft Word 环境中创建表格时遇到了困难(目前)。

非常感谢任何帮助或指导!

答案1

像这样?

在此处输入图片描述

(红线表示页面布局)

使用该包tabularx,您可以获得宽度相等的单元格,7直到`0˙,只要正确计算出四单元格分组单元格的可用宽度即可

\documentclass{report}
\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X} % usable width: '\hsize'
\newcolumntype{Y}{>{\hsize=\dimexpr4\hsize+6\tabcolsep+3\arrayrulewidth}C}


%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\begin{document}
    \begin{table}[!ht]
    \def\arraystretch{1.5}
    %\centering % no longer needed
    \begin{tabularx}{\linewidth}{|l|*{8}{C|}}
    \hline
    Bit & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 \\ 
    \hline
    byte 1 & \multicolumn{4}{Y|}{Tipo de Paquete de Control}
           & \multicolumn{4}{Y|}{Flags específicos de cada Paquete de Control} \\ 
   \hline
   byte 2  & \multicolumn{8}{c|}{Longitud restante} \\ 
   \hline
   \end{tabularx}%
   \caption{Formato del Header Fijo}
   \end{table}
\end{document}

相关内容