coenig
18-10-2012, 00:45
Hallo,
ich versuche mir gerade ein Makro zu schreiben, das Dreieckstabellen erzeugt (also Tabellen mit zwei Spalten in der ersten Zeile, in der zweiten drei usw.). Die letzte Zeile hat gleich viele Spalten wie die vorletzte, weil da die Überschriften drinstehen (ebenso in der ersten Spalte).
Als Parameter werden dem Makro die einzelnen Tabellenzeilen übergeben, bspw. eine ganz kleine mit nur zwei Zeilen:
\dreieckstabelle
{$s_1$ & $A_1$}
{ & $s_2$}
{}
{}
{}
{}
{}
{}
{}
Mein Code sieht wie folgt aus (nicht ganz ein Minimalbeispiel, aber so versteht man die Struktur besser):
\newcommand{\dreieckstabelle}[9]{
\ifthenelse{\equal{#3}{}}{\begin{tabular}{|r|*{2}{ c|}}}
{\ifthenelse{\equal{#4}{}}{\begin{tabular}{|r|*{3} {c|}}}
{\ifthenelse{\equal{#5}{}}{\begin{tabular}{|r|*{4} {c|}}}
{\ifthenelse{\equal{#6}{}}{\begin{tabular}{|r|*{5} {c|}}}
{\ifthenelse{\equal{#7}{}}{\begin{tabular}{|r|*{6} {c|}}}
{\ifthenelse{\equal{#8}{}}{\begin{tabular}{|r|*{7} {c|}}}
{\ifthenelse{\equal{#9}{}}{\begin{tabular}{|r|*{8} {c|}}}
{\begin{tabular}{|r|*{9}{c|}}}}}}}}}
%
\ifthenelse{\equal{#3}{}}{\cline{1-2} #1 \\ \cline{1-2} \multicolumn{1}{c|}{~} #2 \\ \cline{2-2}}{}
\end{tabular}
}
Die oberen IF-Blöcke erzeugen eine Tabular-Umgebung mit unterschiedlich vielen Spalten, je nachdem, wie viele Parameter (nichtleer) übergeben wurden.
Ganz unten wird die Umgebung beendet.
Dazwischen möchte ich den Tabelleninhalt einfügen, also die übergebenen Zeilen, stoße dabei aber auf ein Problem, das ich absolut nicht verstehe.
Der einzufügende Inhalt ist (für die ganz kleine Tabelle von oben) der \cline... - Block, der in dem untersten IF-Block steht (größere Tabellen sollen später mit weiteren IFs eingebaut werden). Wenn ich den \cline... - Block ohne IF hinschreibe funktioniert es. Wenn ich es aber so lasse wie oben, dann kommt ein "Misplaced omit"-Fehler.
Ich wäre wirklich sehr dankbar, wenn jemand da eine hilfreiche Idee hätte; ich komme gerade echt nicht weiter.
Vielen Dank und Grüße
Lukas König
ich versuche mir gerade ein Makro zu schreiben, das Dreieckstabellen erzeugt (also Tabellen mit zwei Spalten in der ersten Zeile, in der zweiten drei usw.). Die letzte Zeile hat gleich viele Spalten wie die vorletzte, weil da die Überschriften drinstehen (ebenso in der ersten Spalte).
Als Parameter werden dem Makro die einzelnen Tabellenzeilen übergeben, bspw. eine ganz kleine mit nur zwei Zeilen:
\dreieckstabelle
{$s_1$ & $A_1$}
{ & $s_2$}
{}
{}
{}
{}
{}
{}
{}
Mein Code sieht wie folgt aus (nicht ganz ein Minimalbeispiel, aber so versteht man die Struktur besser):
\newcommand{\dreieckstabelle}[9]{
\ifthenelse{\equal{#3}{}}{\begin{tabular}{|r|*{2}{ c|}}}
{\ifthenelse{\equal{#4}{}}{\begin{tabular}{|r|*{3} {c|}}}
{\ifthenelse{\equal{#5}{}}{\begin{tabular}{|r|*{4} {c|}}}
{\ifthenelse{\equal{#6}{}}{\begin{tabular}{|r|*{5} {c|}}}
{\ifthenelse{\equal{#7}{}}{\begin{tabular}{|r|*{6} {c|}}}
{\ifthenelse{\equal{#8}{}}{\begin{tabular}{|r|*{7} {c|}}}
{\ifthenelse{\equal{#9}{}}{\begin{tabular}{|r|*{8} {c|}}}
{\begin{tabular}{|r|*{9}{c|}}}}}}}}}
%
\ifthenelse{\equal{#3}{}}{\cline{1-2} #1 \\ \cline{1-2} \multicolumn{1}{c|}{~} #2 \\ \cline{2-2}}{}
\end{tabular}
}
Die oberen IF-Blöcke erzeugen eine Tabular-Umgebung mit unterschiedlich vielen Spalten, je nachdem, wie viele Parameter (nichtleer) übergeben wurden.
Ganz unten wird die Umgebung beendet.
Dazwischen möchte ich den Tabelleninhalt einfügen, also die übergebenen Zeilen, stoße dabei aber auf ein Problem, das ich absolut nicht verstehe.
Der einzufügende Inhalt ist (für die ganz kleine Tabelle von oben) der \cline... - Block, der in dem untersten IF-Block steht (größere Tabellen sollen später mit weiteren IFs eingebaut werden). Wenn ich den \cline... - Block ohne IF hinschreibe funktioniert es. Wenn ich es aber so lasse wie oben, dann kommt ein "Misplaced omit"-Fehler.
Ich wäre wirklich sehr dankbar, wenn jemand da eine hilfreiche Idee hätte; ich komme gerade echt nicht weiter.
Vielen Dank und Grüße
Lukas König