Wenn ich die Frage richtig interpretiere, dann hättest Du gern folgenden Output:
Dabei scheinst Du gerne die ersten beiden Zellen in einer internen Tabelle setzen zu wollen. Das wird (man belehre mich, wenn ich mich irre) nicht gehen, wenn man diese Zellen mit einem &
getrennt werden, da sie dann als zur äußeren Tabelle gehörig eingelesen werden. Sie zu gruppieren ({ bla & blub } & drei & vier
) wird ebenfalls lediglich zu Fehlern führen (! Missing } inserted.
). Dein Tabelleninput müsste, selbst wenn die T
-Spaltendefinition geklappt hätte, den Fehler
! Extra alignment tab has been changed to \cr.
ausgeben.
Ich umgehe im Code unten das Problem mit einem alternativen Trenner für die ersten beiden Zellen: |
. Du kannst aber natürlich auch einen anderen wählen, er sollte nur nicht in der ersten Zelle anderweitig verwendet werden. (Das müsste dann in der Definition des \@coltab
-Makros angepasst werden, also statt \def\@coltab#1|#2\@stop
entsprechend ein anderes Symbol.)
Die erste Zelle der Tabelle wird mithilfe des collcell
Paketes von Martin Scharrer eingesammelt und an ein Makro weitergereicht, das den Inhalt dann in die interne Tabelle setzt. Damit das dann bequem eingegeben werden kann, wird das Einsammeln mit einem neuen Spaltentyp erledigt. Das gibt Dir denn auch eine mögliche Antwort auf Deine konkrete Frage.
\documentclass{article}
\usepackage{array}
\usepackage{collcell}
% mache @ als Buchstaben verwendbar:
\makeatletter
% leite das Argument an ein Helfermakro weiter:
\newcommand\coltab[1]{\@coltab#1\q@stop}
% das erste Argument ist alles bis zum ersten nicht in {} versteckten |,
% das zweite Argument ist alles bis \q@stop;
% beide Argumente werden in einer Tabelle gesetzt:
\long\def\@coltab#1|#2\q@stop{%
\begin{tabular}{rp{4cm}}
#1 & #2
\end{tabular}%
}
\makeatother
% definiere einen Spaltentyp, der die Zellen jeweils einsammelt und an unser Makro
% als Argument weiterreicht:
\newcolumntype{T}{>{\collectcell\coltab}l<{\endcollectcell}}
% Dummy-Text um Getippe zu sparen:
\def\sampletext{Ein Text der mehrere Zeilen umfasst.}
\def\sample{\sampletext\ \sampletext\ \sampletext}
\begin{document}
\begin{tabular}{T*2{m{3cm}}}
a | \sample & Mitte & Mitte \\
b | \sample & Mitte & Mitte
\end{tabular}
\end{document}
beantwortet
30 Jul '13, 16:16
cgnieder
22.1k●25●34●63
Akzeptiert-Rate:
60%