I've used the following code to create a table. This is roughly what I want, and it looked close enough with a different page size.
Now with a new page size, the cells in the bottom right are too narrow. I need each of them to each have width = 1/8 of the overall table width.
Is there a better way to scale them according to a fraction of the page size?
\documentclass[letterpaper,10pt,english]{article}
\usepackage{tabularx}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\title{My Awesome Table}
\author{Kyle Gregory}
\begin{document}
\pagenumbering{arabic}
\maketitle
\begin{tabularx}{\textwidth}{| *8{Y} *8{Y} |}
\multicolumn{1}{l}{\tiny $_{31}$} & \multicolumn{14}{Y}{ } & \multicolumn{1}{r}{\tiny $_{24}$} \\
\hline
\multicolumn{16}{| c |}{Reserved} \\
\hline
\multicolumn{16}{| c |}{\tiny N/A} \\
\hline
\end{tabularx}
\begin{tabularx}{\textwidth}{| *8{Y} *8{Y} |}
\multicolumn{1}{l}{\tiny $_{23}$} & \multicolumn{14}{Y}{ } & \multicolumn{1}{r}{\tiny $_{16}$} \\
\hline
\multicolumn{16}{| c |}{Reserved} \\
\hline
\multicolumn{16}{| c |}{\tiny N/A} \\
\hline
\end{tabularx}
\begin{tabularx}{\textwidth}{| *8{Y} *8{Y} |}
\multicolumn{1}{l}{\tiny $_{15}$} & \multicolumn{14}{Y}{ } & \multicolumn{1}{r}{\tiny $_8$} \\
\hline
\multicolumn{16}{| c |}{Reserved} \\
\hline
\multicolumn{16}{| c |}{\tiny N/A} \\
\hline
\end{tabularx}
\begin{tabularx}{\textwidth}{| *8{Y} |}
\multicolumn{1}{l}{\tiny $_7$} & \multicolumn{6}{Y}{ } & \multicolumn{1}{r}{\tiny $_0$} \\
\hline
\multicolumn{4}{| Y |}{Reserved} & \multicolumn{1}{c |}{XPPS} & \multicolumn{1}{c |}{SROL} & \multicolumn{1}{c |}{ROG} & \multicolumn{1}{c |}{FRWL} \\
\hline
\multicolumn{4}{| Y |}{\tiny N/A} & \multicolumn{1}{c |}{\tiny R/W (0)} & \multicolumn{1}{c |}{\tiny R (0)} & \multicolumn{1}{c |}{\tiny R (0)} & \multicolumn{1}{c |}{\tiny R (0)} \\
\hline
\end{tabularx}
\end{document}
Column type Y is defined as follows. I tried setting all of the columns as type Y, but I found that it would scale the \multicolumn{4} cells to be the same width as a single cell.
\newcolumntype{Y}{>{\centering\arraybackslash}X}
It produces the following output:

\documentclass{...}and ending with\end{document}where in preamble should be loaded necessary packages and commands definitions. – Zarko Dec 14 '16 at 18:28\newcolumntype{M}[1]{>{\centering\arraybackslash}c{#1}}– kjgregory Dec 14 '16 at 19:13\newcolumntype{P}[1]{>{\RaggedRight\arraybackslash}p{#1}}to\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}and than use lenghts as proposed in answer. – Zarko Dec 14 '16 at 19:19\oneeigthdefined properly as a length, then you can use2\oneeight, etc. – Pieter van Oostrum Dec 14 '16 at 19:38