Espaçamento adequado de múltiplas colunas

Espaçamento adequado de múltiplas colunas

Me deparo com um problema simples, mas não consigo encontrar uma solução para ele. Quero criar uma matriz onde todos os elementos em uma linha tenham largura igual. Assim:

Objetivo da mesa

Minha abordagem foi 12 colunas (+1 coluna inicial) e depois trabalhar com multicolunas. O problema que recebo é que as linhas não são dimensionadas para a mesma largura desta imagem.

insira a descrição da imagem aqui

Tentei tabularx como nesta pergunta mas não funcionou como desejado. (Usando 12 vezes X como cabeçalho)Espaçamento entre tabelas, múltiplas colunas

Alguém pode me explicar onde está o erro de que o tabularx também não funciona?

Código para o ambiente de tabela simples

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

Responder1

Com colunas de largura fixa:

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

insira a descrição da imagem aqui

Provavelmente um TikA abordagem baseada em Z é melhor, para este caso. Ou talvez até uma árvore em vez de uma mesa.

Responder2

Apenas por diversão:

\multicolumncoloca todo o espaço "extra" na última coluna usada, e muitas dessas colunas nunca são usadas 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}

Responder3

Não tenho certeza se é isso que você quer dizer, mas se quiser que as caixas sejam proporcionais em tamanho aos números, você pode usar TikZ. chains​Basicamente, a primeira coluna é uma cadeia chamada nde baixo, e cada linha numerada é uma cadeia que vai para a direita. Não há verificação de erros, portanto suas linhas podem ser menores ou maiores que 100.

Você pode alterar o valor de \widthfactorpara ajustar a largura da tabela.

insira a descrição da imagem aqui

Há também um argumento opcional que pode definir TikOpções Z para toda a tabela, por exemplo:

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

podia funcionar.

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

informação relacionada