Zahlenpyramide mit multicolumn - mangelhafte Ausrichtung

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Zahlenpyramide mit multicolumn - mangelhafte Ausrichtung

von kripa » Mi 2. Mär 2011, 09:38

Hallo.

Danke!

Ich das mit p{} war mir bewusst, nur hatte dies auch nicht zu dem gewünschten Ergebnis geführt. Die Ursache habe ich bei dir gesehen: ich hatte vergessen (und wusste auch nicht wie) den tabcolsep miteinzurechnen. Eigentlich dumm, da ich diesen für Polynomdivision selbst schon verändert hatte.

Dein Ansatz mit den Boxen sieht gut aus. Denke das könnte wirklich deutlich einfacher gehen.

Liebe Grüsse
Patrick

von Xenara » Mi 2. Mär 2011, 09:20

Deine MBs sind prima :)

Man kann die Pyramide als Tabelle aufbauen, was ich persönlich aber etwas verwirrend finde. Dein Problem war, dass du nur multicolumns verwendet hast, die c-Spalten verwenden. Um aber die richtige Breite zu bekommen, willst du ja die 0.8cm pro Spalte, die dann nirgends zum Zuge kamen. Du musst also mindestens den multicolumns statt "c" ein "p{1.6cm}" zuweisen, plus den Abstand von der Tabellenlinie (plus eigentlich noch die Tabellenlinienbreite).
Ein anderer Ansatz wäre mit Boxen.

Hier im Code mal die beiden Möglichkeiten (inklusive ein paar kleiner Kniffe, um die Sache zu vereinfachen):
\documentclass[a4paper,10pt]{scrartcl} 
\usepackage[utf8]{inputenc} 
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{multicol} 
\usepackage{calc}

\begin{document} 

\section{Variante 1}

\newlength{\mucospalte}
\setlength{\mucospalte}{0.8cm+0.8cm+2\tabcolsep}
\newcommand{\mucoa}[1]{\multicolumn{2}{|>{\centering\arraybackslash}p{\mucospalte}|}{#1}}% Nur in der ersten Zelle verwenden!
\newcommand{\muco}[1]{\multicolumn{2}{>{\centering\arraybackslash}p{\mucospalte}|}{#1}}

\begin{center} 
\begin{tabular}{*{8}{p{0.8cm}}} 
\cline{4-5}
 & & & \mucoa{1} & & & \\% 
\cline{3-6}
 & & \mucoa{2}& \muco{3} & & \\% 
\cline{2-7}
 & \mucoa{4}& \muco{5} & \muco{6} & \\% 
\cline{1-8}
 \mucoa{7}& \muco{8}& \muco{9}& \muco{10}\\% 
\cline{1-8}
\end{tabular} 
\end{center} 


\section{Variante 2}

\begin{center}
\newlength{\vertikal}
\setlength{\vertikal}{.46\fboxsep}% Der Wert ist durch Ausprobieren entstanden
\newcommand{\mybox}[1]{\fbox{\parbox{1.6cm}{\centering #1}}}
\newcommand{\myspace}{\hspace{-\fboxrule}}
\newcommand{\mybreak}{\\[-\vertikal]}

\mybox{1}\mybreak
\mybox{2}\myspace\mybox{3}\mybreak
\mybox{4}\myspace\mybox{5}\myspace\mybox{6}\mybreak
\mybox{7}\myspace\mybox{8}\myspace\mybox{9}\myspace\mybox{10}\mybreak
\end{center}

\end{document}

Zahlenpyramide mit multicolumn - mangelhafte Ausrichtung

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?

Nach oben