Espaciado adecuado entre varias columnas

Espaciado adecuado entre varias columnas

Me encuentro con un problema simple pero no puedo encontrar una solución. Quiero crear una matriz donde todos los elementos de una fila tengan el mismo ancho. Como esto:

Objetivo de la mesa

Mi enfoque fue 12 columnas (+1 columna inicial) y luego trabajar con varias columnas. El problema que tengo es que las filas no están escaladas al mismo ancho que en esta imagen.

ingrese la descripción de la imagen aquí

Probé tabularx como en esta pregunta pero no funcionó como deseaba. (Usando 12 veces X como encabezado)Espaciado de tablas, varias columnas

Alguien me puede explicar donde esta el error de que tabularx tampoco funciona?

Código para el entorno de tabla simple.

\documentclass{article}
\begin{document}
\begin{table}[h]
\begin{tabular}{|c|cllcclclccll|}
\hline
N & \multicolumn{12}{c|}{Chance}                                                                                  \\ \hline
1 & \multicolumn{12}{c|}{100}                                                                                     \\ \hline
2 & \multicolumn{6}{c|}{50}                               & \multicolumn{6}{c|}{50}                               \\ \hline
3 & \multicolumn{4}{c|}{22}             & \multicolumn{4}{c|}{56}            & \multicolumn{4}{c|}{22}            \\ \hline
4 & \multicolumn{3}{c|}{12.5} & \multicolumn{3}{c|}{37.5} & \multicolumn{3}{c|}{37.5} & \multicolumn{3}{c|}{12.5} \\ \hline
\end{tabular}
\end{table}
\end{document}

Respuesta1

Con columnas de ancho fijo:

\documentclass{article}
\usepackage{array}

\newlength{\blockwidth}

\begin{document}

\begin{table}[htp]
\centering

% local settings
\setlength{\blockwidth}{0.5cm}
\newcommand{\block}[2]{% #1 = number of blocks to span, #2 = text
  \multicolumn{#1}{w{c}{\dimeval{#1\blockwidth+10\arrayrulewidth*\f{#1}/#1}}|}{#2}%
}
\newcommand{\f}[1]{\inteval{4*(#1-3)}}
%%%

\begin{tabular}{|>{$\vphantom{\bigg|}}c<{$}|*{12}{c}}
\hline
N & \block{12}{Chance} \\ \hline
1 & \block{12}{100} \\ \hline
2 & \block{6}{50} & \block{6}{50} \\ \hline
3 & \block{4}{22} & \block{4}{56} & \block{4}{22} \\ \hline
4 & \block{3}{12.5} & \block{3}{37.5} & \block{3}{37.5} & \block{3}{12.5} \\ \hline
\end{tabular}

\caption{A caption}

\end{table}

\end{document}

ingrese la descripción de la imagen aquí

Probablemente un TikEl enfoque basado en Z es mejor para este caso. O tal vez incluso un árbol en lugar de una mesa.

Respuesta2

Solo por diversión:

\multicolumncoloca todo el espacio "extra" en la última columna utilizada, y muchas de estas columnas nunca se usan individualmente.

\documentclass{article}
\usepackage{tabularx}
\begin{document}
\begin{table}[h]
\begin{tabularx}{\textwidth}{|c|XXXXXXXXXXXX|}
\hline
 &&&&&&&&&&&& \\[-\normalbaselineskip]% hidden
N & \multicolumn{12}{c|}{Chance}                                                                                  \\ \hline
1 & \multicolumn{12}{c|}{100}                                                                                     \\ \hline
2 & \multicolumn{6}{c|}{50}                               & \multicolumn{6}{c|}{50}                               \\ \hline
3 & \multicolumn{4}{c|}{22}             & \multicolumn{4}{c|}{56}            & \multicolumn{4}{c|}{22}            \\ \hline
4 & \multicolumn{3}{c|}{12.5} & \multicolumn{3}{c|}{37.5} & \multicolumn{3}{c|}{37.5} & \multicolumn{3}{c|}{12.5} \\ \hline
\end{tabularx}
\end{table}
\end{document}

Respuesta3

No estoy seguro de si esto es lo que quieres decir, pero si quieres que los cuadros sean proporcionales en tamaño a los números, puedes usar TikZ. chains​Básicamente, la primera columna es una cadena llamada " nir hacia abajo", y cada fila numerada es una cadena que va hacia la derecha. No hay verificación de errores, por lo que sus filas pueden tener menos o más de 100.

Puede cambiar el valor de \widthfactorpara ajustar el ancho de la tabla.

ingrese la descripción de la imagen aquí

También hay un argumento opcional que puede establecer TikOpciones Z para toda la tabla, por ejemplo:

\chancetable[thick, orange, text=blue]{{100},{50,50},{22,56,22},{12.5,37.5,37.5,12.5}}

trabajaría.

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{chains}
\newcommand{\widthfactor}{1}

\tikzset{rect/.style={draw, minimum width=#1, minimum height=5mm, inner sep=0pt}}

\newcommand{\chancetable}[2][]{\tikz[node distance=-\pgflinewidth, #1]{
    \node[rect=\widthfactor*5mm, start chain=n going below](N0){N}; \node[rect=\widthfactor*100mm, right=of N0]{Chance};
    \foreach \r[count=\n, evaluate=\n as \k using {int(\n-1)}] in {#2} {
        \node[rect=\widthfactor*5mm, below=of N\k, start chain=\n, on chain=\n](N\n){\n};
        \foreach \p in \r {\node[on chain=\n, rect=\widthfactor*\p mm]{\p};} 
    }
}}

\begin{document}

\chancetable{{100},{50,50},{22,56,22},{12.5,37.5,37.5,12.5}}

\end{document}

información relacionada