Richtiger Abstand zwischen mehreren Spalten

Richtiger Abstand zwischen mehreren Spalten

Ich habe ein einfaches Problem, aber ich kann keine Lösung dafür finden. Ich möchte eine Matrix erstellen, in der alle Elemente in einer Zeile die gleiche Breite haben. So:

Ziel der Tabelle

Mein Ansatz bestand darin, 12 Spalten (+1 Anfangsspalte) zu verwenden und dann mit mehreren Spalten zu arbeiten. Das Problem dabei ist, dass die Zeilen nicht auf die gleiche Breite skaliert sind wie in diesem Bild.

Bildbeschreibung hier eingeben

Ich habe tabularx wie in dieser Frage ausprobiert, aber es hat nicht wie gewünscht funktioniert. (12-mal X als Überschrift verwenden)Tabellenabstand, mehrspaltig

Kann mir jemand erklären wo der Fehler liegt, dass auch Tabularx nicht funktioniert?

Code für die einfache Tabel-Umgebung

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

Antwort1

Mit Spalten fester Breite:

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

Bildbeschreibung hier eingeben

Wahrscheinlich ein TikIn diesem Fall ist ein Z-basierter Ansatz besser. Oder vielleicht sogar ein Baum statt einer Tabelle.

Antwort2

Nur zum Spaß:

\multicolumnfügt den gesamten „zusätzlichen“ Platz in die zuletzt verwendete Spalte ein und viele dieser Spalten werden nie einzeln verwendet.

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

Antwort3

Ich bin nicht sicher, ob Sie das meinen, aber wenn Sie möchten, dass die Größe der Kästchen proportional zu den Zahlen ist, können Sie Ti verwenden.kZ. chainsIm Grunde ist die erste Spalte eine Kette, die nach nunten geht, und jede nummerierte Zeile ist eine Kette, die nach rechts geht. Es gibt keine Fehlerprüfung, Ihre Zeilen können also kürzer oder länger als 100 sein.

Sie können den Wert ändern, \widthfactorum die Breite der Tabelle anzupassen.

Bildbeschreibung hier eingeben

Es gibt auch ein optionales Argument, mit dem Ti festgelegt werden kannkZ-Optionen für die gesamte Tabelle, zum Beispiel:

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

würde funktionieren.

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

verwandte Informationen