
Ich habe eine Tabelle, die ich der Kürze halber wie folgt vereinfacht habe:
\begin{tabular}{ |l|l|c c c|l|l|l| }
\hline
Problem $I_k$ & Solved $C_k$ & \multicolumn{3}{ |c| }{Solution to $C_k$} & Current & Pursue & Stored\\
& & $x_1$ & $x_2$ & $z$ & & & \\ \hline
\end{tabular}
Das Ergebnis ist folgende
Nun habe ich zwei Fragen, die sich beide auf die Mehrspaltigkeit beziehen. Erstens: Ist es möglich, einen Teil zu generieren \hline
, der nur die dritte Spalte betrifft (indem das Label „Lösung für C_k“ und die drei Variablen getrennt werden)?
Zweitens sieht es so aus, als ob $x_1$, $x_2$ und $z$ nicht zentriert sind. Wie kann das behoben werden?
Antwort1
Eine punktuelle Asymmetrie der c
Spaltenbreite ergibt sich aus der Tatsache, dass \multicolumn{3}{c}{Solution to $C_k$}
diese breiter ist als die Summe der Breiten der überspannten Spalten. Folglich wird der Spalteninhalt $z$ erweitert, um der Breite der mehrspaltigen Zelle zu entsprechen.
Um alle c
Spalten gleich breit zu machen, musste man deren Breite vorgeben, zum Beispiel mit Hilfe des Spaltentyps p{<width>}
:
\documentclass{article}
\usepackage{array}% needed for column redefinition
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}
\begin{tabular}{ |l|l|*{3}{C{2em}}|l|l|l| }
\hline
Problem $I_k$ & Solved $C_k$ & \multicolumn{3}{c|}{Solution to $C_k$}
& Current & Pursue & Stored \\
\cline{3-5}
& & $x_1$ & $x_2$ & $z$ & & & \\
\hline
\end{tabular}
\end{document}
Ich würde die Tabelle jedoch lieber folgendermaßen gestalten:
\documentclass{article}
\usepackage{array, booktabs}% needed for column redefinition and nicer looks
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}
\begin{tabular}{ ll *{3}{C{2em}} lll}
\toprule
& & \multicolumn{3}{c}{Solution to $C_k$} & & & \\
\cmidrule(lr){3-5}
Problem $I_k$ & Solved $C_k$ & $x_1$ & $x_2$ & $z$ & Current & Pursue & Stored \\
\midrule
\end{tabular}
\end{document}
Antwort2
Hier ist eine Variante, die das tabularx
Paket verwendet, um die Tabelle automatisch auf die Textbreite auszudehnen, ohne die Spaltenbreiten manuell anzugeben.
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{ |l|l|*3{>{\centering\arraybackslash}X}|l|l|l| }
\hline
Problem $I_k$ & Solved $C_k$ & \multicolumn{3}{ c| }{Solution to $C_k$} & Current & Pursue & Stored\\\cline{3-5}
& & $x_1$ & $x_2$ & $z$ & & & \\ \hline
\end{tabularx}
\end{document}