von kripa » Mi 2. Mär 2011, 00:44
Hallo,
nachdem ich meistens die Probleme durch Google und Forumsbeiträge selbst überwinden konnte, musste ich aber nun kapitulieren...
Das Ziel:
Eine Pyramide anhand einer Tabelle zu erzeugen. Da in eine Zelle das Resultat einer Operation der zwei unterhalb liegenden Zellen geschrieben wird, müssen die Zellen aus den verschiedenen Zeilen sich überlappen.
Mein Gedanke war, dass dies mit multicolumn in einer Tabelle mit festeingestellten Zellenbreiten funktionnieren sollte. Macht es aber nicht.
Minimalbeispiel:
\documentclass[a4paper,10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{tabularx,multirow,multicol}
\begin{document}
\begin{center}
\begin{tabular}[m]{p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}}
\cline{4-5}&&&\multicolumn{2}{|c|}{}&&&\\%
\cline{3-6}&&\multicolumn{2}{|c|}{}&\multicolumn{2}{|c|}{}&&\\
\cline{2-7}&\multicolumn{2}{|c|}{}& \multicolumn{2}{|c|}{}&\multicolumn{2}{|c|}{}&\\
\hline\multicolumn{2}{|c|}{$7-4,5$}& \multicolumn{2}{|c|}{$4,5-9,1$}&\multicolumn{2}{|c|}{$2,1-1,8$}&\multicolumn{2}{|c|}{$-2,1-1,4$}\\
\hline
\end{tabular}
\end{center}
\end{document}
Bei mir ist die Zelle in der oberen Zeile zu klein, dadurch auch die mittlere in der 3. Zeile.
Nun habe ich zwei Möglichkeiten gefunden, dies zu beheben, beide in meinen Augen aber unbefriedigend.
Alternative 1:
di obere Zelle wird in zwei Zellen aufgespaltet:
\documentclass[a4paper,10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{tabularx,multirow,multicol}
\begin{document}
\begin{center}
\begin{tabular}[m]{p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}}
\cline{4-5}&&&\multicolumn{1}{|p{0.8cm}}{}&\multicolumn{1}{p{0.8cm}|}{}&&&\\%
\cline{3-6}&&\multicolumn{2}{|c|}{}&\multicolumn{2}{|c|}{}&&\\
\cline{2-7}&\multicolumn{2}{|c|}{}& \multicolumn{2}{|c|}{}&\multicolumn{2}{|c|}{}&\\
\hline\multicolumn{2}{|c|}{$7-4,5$}& \multicolumn{2}{|c|}{$4,5-9,1$}&\multicolumn{2}{|c|}{$2,1-1,8$}&\multicolumn{2}{|c|}{$-2,1-1,4$}\\
\hline
\end{tabular}
\end{center}
\end{document}
Dann sieht die Pyramide so aus, wie ich das gerne haben möchte.
Wenn ich allerdings in die oberste Zelle etwas zentriert schreiben möchte, wird dies schwierig, da es ja eigentlich zwei Zellen sind.
Alternative 2:
\documentclass[a4paper,10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{tabularx,multirow,multicol}
\begin{document}
\begin{center}
\begin{tabular}[m]{p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}}
\cline{4-5}&&&\multicolumn{2}{|c|}{}&&&\\%
\cline{3-6}&&\multicolumn{2}{|c|}{}&\multicolumn{2}{|c|}{}&&\\
\cline{2-7}&\multicolumn{2}{|c|}{}& \multicolumn{2}{|c|}{}&\multicolumn{2}{|c|}{}&\\
\hline\multicolumn{2}{|c|}{$7-4,5$}& \multicolumn{2}{|c|}{$4,5-9,1$}&\multicolumn{2}{|c|}{$2,1-1,8$}&\multicolumn{2}{|c|}{$-2,1-1,4$}\\
\hline &&&&&&&
\end{tabular}
\end{center}
\end{document}
Auf diese Idee bin ich gekommen als ich gemerkt habe, dass Tabellen richtig dargestellt werden, sobald es eine Zeile gibt, in der alle Spalten einzeln ausgeführt werden.
Allerdings bringt diese Methode einen grösseren Leerraum unter der Tabelle mit sich.
Meine Fragen:
1. Ist der Ansatz mit multicolumn richtig?
2. Kennt einer eine bessere Lösung?
Vielen Dank schon mal im Voraus,
Patrick
PS: Soll ich die drei Minimalbeispiele in eins packen?
Hallo,
nachdem ich meistens die Probleme durch Google und Forumsbeiträge selbst überwinden konnte, musste ich aber nun kapitulieren...
Das Ziel:
Eine Pyramide anhand einer Tabelle zu erzeugen. Da in eine Zelle das Resultat einer Operation der zwei unterhalb liegenden Zellen geschrieben wird, müssen die Zellen aus den verschiedenen Zeilen sich überlappen.
Mein Gedanke war, dass dies mit multicolumn in einer Tabelle mit festeingestellten Zellenbreiten funktionnieren sollte. Macht es aber nicht.
Minimalbeispiel:
[code]
\documentclass[a4paper,10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{tabularx,multirow,multicol}
\begin{document}
\begin{center}
\begin{tabular}[m]{p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}}
\cline{4-5}&&&\multicolumn{2}{|c|}{}&&&\\%
\cline{3-6}&&\multicolumn{2}{|c|}{}&\multicolumn{2}{|c|}{}&&\\
\cline{2-7}&\multicolumn{2}{|c|}{}& \multicolumn{2}{|c|}{}&\multicolumn{2}{|c|}{}&\\
\hline\multicolumn{2}{|c|}{$7-4,5$}& \multicolumn{2}{|c|}{$4,5-9,1$}&\multicolumn{2}{|c|}{$2,1-1,8$}&\multicolumn{2}{|c|}{$-2,1-1,4$}\\
\hline
\end{tabular}
\end{center}
\end{document}[/code]
Bei mir ist die Zelle in der oberen Zeile zu klein, dadurch auch die mittlere in der 3. Zeile.
Nun habe ich zwei Möglichkeiten gefunden, dies zu beheben, beide in meinen Augen aber unbefriedigend.
Alternative 1:
di obere Zelle wird in zwei Zellen aufgespaltet:
[code]
\documentclass[a4paper,10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{tabularx,multirow,multicol}
\begin{document}
\begin{center}
\begin{tabular}[m]{p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}}
\cline{4-5}&&&\multicolumn{1}{|p{0.8cm}}{}&\multicolumn{1}{p{0.8cm}|}{}&&&\\%
\cline{3-6}&&\multicolumn{2}{|c|}{}&\multicolumn{2}{|c|}{}&&\\
\cline{2-7}&\multicolumn{2}{|c|}{}& \multicolumn{2}{|c|}{}&\multicolumn{2}{|c|}{}&\\
\hline\multicolumn{2}{|c|}{$7-4,5$}& \multicolumn{2}{|c|}{$4,5-9,1$}&\multicolumn{2}{|c|}{$2,1-1,8$}&\multicolumn{2}{|c|}{$-2,1-1,4$}\\
\hline
\end{tabular}
\end{center}
\end{document}[/code]
Dann sieht die Pyramide so aus, wie ich das gerne haben möchte.
Wenn ich allerdings in die oberste Zelle etwas zentriert schreiben möchte, wird dies schwierig, da es ja eigentlich zwei Zellen sind.
Alternative 2:
[code]
\documentclass[a4paper,10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{tabularx,multirow,multicol}
\begin{document}
\begin{center}
\begin{tabular}[m]{p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}p{0.8cm}}
\cline{4-5}&&&\multicolumn{2}{|c|}{}&&&\\%
\cline{3-6}&&\multicolumn{2}{|c|}{}&\multicolumn{2}{|c|}{}&&\\
\cline{2-7}&\multicolumn{2}{|c|}{}& \multicolumn{2}{|c|}{}&\multicolumn{2}{|c|}{}&\\
\hline\multicolumn{2}{|c|}{$7-4,5$}& \multicolumn{2}{|c|}{$4,5-9,1$}&\multicolumn{2}{|c|}{$2,1-1,8$}&\multicolumn{2}{|c|}{$-2,1-1,4$}\\
\hline &&&&&&&
\end{tabular}
\end{center}
\end{document}[/code]
Auf diese Idee bin ich gekommen als ich gemerkt habe, dass Tabellen richtig dargestellt werden, sobald es eine Zeile gibt, in der alle Spalten einzeln ausgeführt werden.
Allerdings bringt diese Methode einen grösseren Leerraum unter der Tabelle mit sich.
Meine Fragen:
1. Ist der Ansatz mit multicolumn richtig?
2. Kennt einer eine bessere Lösung?
Vielen Dank schon mal im Voraus,
Patrick
PS: Soll ich die drei Minimalbeispiele in eins packen?