Ich habe etliche komplexere Tabellen und möchte mit dem array-Paket einen Spaltentyp definieren, der eine Tabelle enthält. Mein Ansatz am Beispiel von stefans Antwort zur meiner Frage "Wie kann ich innerhalb einer Tabellenzelle vertikal zentrieren?"

Open in writeLaTeX
\documentclass{article}
\usepackage{array}
\newcolumntype{T}{>{\begin{tabular}{rp{1cm}}}l<{\end{tabular}}}
\begin{document}
\begin{tabular}{T*2{m{1cm}}}
  Oben & Oben ausgerichtet & Mitte & Mitte
\end{tabular}
\end{document}

Das klappt noch nicht, ich erhalte den Fehler;

Open in writeLaTeX
! Emergency stop.
<template> ...hskip 1sp\d@llarbegin \ignorespaces

l.6   O
       ben & Oben ausgerichtet & Mitte & Mitte
!  ==> Fatal error occurred, no output PDF file produced!

Wie kann ich so einen Spaltentyp mit implizitem tabular definieren und benutzen?

gefragt 30 Jul '13, 09:14

Student's gravatar image

Student
4702577103
Akzeptiert: 96%

bearbeitet 24 Mär '14, 15:08

Clemens's gravatar image

Clemens
19.0k112960


Wenn ich die Frage richtig interpretiere, dann hättest Du gern folgenden Output:

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}
Permanenter link

beantwortet 30 Jul '13, 10:16

Clemens's gravatar image

Clemens
19.0k112960

bearbeitet 30 Jul '13, 13:35

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×185
×6
×3

Frage gestellt: 30 Jul '13, 09:14

Frage wurde angeschaut: 3,461 Mal

Zuletzt aktualisiert: 24 Mär '14, 15:08