Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Vertikales Ausrichten in Tabellen, die zig-te

47 views
Skip to first unread message

Torsten Munkelt

unread,
May 10, 2004, 4:37:17 PM5/10/04
to
Hallo, zusammen,

ich brauche eine Tabelle, die ueber mehrere Seiten gehen kann,
die ich auf eine bestimmte Breite austreiben kann und die ihre
Spaltenbreite selbst anpasst. Eine solche Tabelle habe ich mit
Hilfe des Packages ltxtable erstellt. Hier ein Minimal(?)beispiel:

\documentclass[12pt]{dinbrief}
\usepackage{ltxtable}

\begin{filecontents}{tbl.tex}
\begin{longtable}{|r|X|}\hline
Eine Minipage &
\begin{minipage}{\linewidth}
Zeile 1\\
Zeile 2\\
Zeile 3
\end{minipage}\\ \hline
\end{longtable}
\end{filecontents}

\begin{document}
\LTXtable{\textwidth}{tbl}
\end{document}

Jetzt bin ich am Verzweifeln: Mir gelingt es nicht, den Text
in der ersten Zelle der (ersten) Zeile ('Eine Minipage') vertikal
oben (an 'Zeile 1') auszurichten. Der Text wird vertikal mittig
(an 'Zeile 2') ausgerichtet.

Ich habe bereits Frau Gruppen-Google gefragt, die FAQ
gelesen und Parboxen/Minipages mit entsprechenden
Positionierungsparametern ausprobiert, aber nichts hat geholfen.
Wie richte ich diesen Text ('Eine Minipage') vertikal oben aus?

Zusatzfrage: Wenn ich eine Minipage/Parbox um den Text
('Eine Minipage') lege, wie lege ich dann die Breite der
Minipage/Parbox so fest, dass sie der (automatisch
generierten?) Beite der ersten Spalte entspricht? Bei der
Minipage in der zweiten Spalte hat \linewidth geklappt,
aber in der ersten Spalte funktioniert das nicht.

Vielen Dank fuer Eure Antworten im voraus.

Schoene Gruesse - Torsten


Georg Hicker

unread,
May 10, 2004, 5:07:20 PM5/10/04
to
Hi!

Meinst du wirklich vertikal?

Wenn ja, dann könnte ich mir vorstellen, dass dir multirow
weiterhelfen könnte. Damit kan nman eine Zelle über mehrere weitere
verlängern (also Zellen vertikal verbinden).

Ist das nicht ganz das wonach du suchst, dann tut mir das leid.

Greets

Georg Hicker

Tom Kink

unread,
May 11, 2004, 2:45:16 AM5/11/04
to
Torsten Munkelt wrote:
> Hallo, zusammen,
>
> ich brauche eine Tabelle, die ueber mehrere Seiten gehen kann,
> die ich auf eine bestimmte Breite austreiben kann und die ihre
> Spaltenbreite selbst anpasst. Eine solche Tabelle habe ich mit
> Hilfe des Packages ltxtable erstellt. Hier ein Minimal(?)beispiel:
>
(...)

>
> Jetzt bin ich am Verzweifeln: Mir gelingt es nicht, den Text
> in der ersten Zelle der (ersten) Zeile ('Eine Minipage') vertikal
> oben (an 'Zeile 1') auszurichten. Der Text wird vertikal mittig
> (an 'Zeile 2') ausgerichtet.

Hast Du schon mal das array Paket kombiniert mit \multirow versucht?
dort kannst Du Dir verschiedene Formatierungen (inkl. Ausrichtung)
definieren und dann mittels dem \multirow-Befehl einzelnen Zellen
zuweisen. Vergleiche dazu auch das Tutorium "Satz von Tabellen" von Axel
Reichert. Müßte auch bei Deiner lokalen Installation dabei sein, sonst
auf dem ctan-Server.

Tom

Torsten Munkelt

unread,
May 11, 2004, 4:13:13 AM5/11/04
to
Hallo, Georg,

> Meinst du wirklich vertikal?

Ja. Guck Dir einfach das Beispiel an. Es muesste
lauffaehig sein. Der Text links soll _oben_ angeordnet
werden. Horizintal waere doch lechts oder rinks.

> Wenn ja, dann könnte ich mir vorstellen, dass dir multirow
> weiterhelfen könnte.

Ich werde mir das zu Gemuete fuehren, zumal Tom das
in seinem Beitrag auch vorschlaegt.

> Damit kan nman eine Zelle über mehrere weitere
> verlängern (also Zellen vertikal verbinden).

Das will ich nicht, oder zumindest glaube ich, dass
ich das nicht will. ;-)

> Ist das nicht ganz das wonach du suchst, dann tut mir das leid.

Quatsch! In jedem Falle: Danke fuer Deine Antwort. :-)

Schoene Gruesse - Torsten


Ulrike Fischer

unread,
May 11, 2004, 4:35:24 AM5/11/04
to
"Torsten Munkelt" <Torsten.Munk...@TU-Ilmenau.DE> schrieb:

\begin{minipage}[t]{\linewidth}

und denke daran, dass die filecontents-Umgebung die Datei tbl nicht
updated. Wenn du die Datei immer wieder neu beschreiben willst, hilft
eventuell verbatimwrite aus dem moreverb-Paket.


> Zusatzfrage: Wenn ich eine Minipage/Parbox um den Text
> ('Eine Minipage') lege, wie lege ich dann die Breite der
> Minipage/Parbox so fest, dass sie der (automatisch
> generierten?) Beite der ersten Spalte entspricht? Bei der
> Minipage in der zweiten Spalte hat \linewidth geklappt,
> aber in der ersten Spalte funktioniert das nicht.

Nimm \begin{tabular}[t]{@{}l@{}} statt minipage.


--
Ulrike Fischer
e-mail: zusätzlich meinen Vornamen vor dem @ einfügen.
e-mail: add my first name between the news and the @.

Torsten Munkelt

unread,
May 11, 2004, 5:16:23 AM5/11/04
to
Hallo, Ulrike,

vielen Dank fuer Deine Antwort.

> > [...] Mir gelingt es nicht, den Text


> > in der ersten Zelle der (ersten) Zeile ('Eine Minipage') vertikal
> > oben (an 'Zeile 1') auszurichten. Der Text wird vertikal mittig

> > (an 'Zeile 2') ausgerichtet. [...]


> > Wie richte ich diesen Text ('Eine Minipage') vertikal oben aus?
>
> \begin{minipage}[t]{\linewidth}

Das funktioniert mit meinem Beispiel leider nicht.
Die \linewidth macht die erste Spalte ganz breit,
und die zweite wird dadurch sehr schmal, und der
Text wird nicht oben ausgerichtet, sondern bleibt
vertikal zentriert Aber selbst dann, wenn ich eine
feste Breite {3.5cm} setze, bleibt der Text vertikal
zentriert. :-(

> und denke daran, dass die filecontents-Umgebung die Datei tbl nicht
> updated.

Danke, das habe ich bereits mitbekommen. Ich habe das hier
auch nur so geschrieben, damit es ein zusammenhaengendes
Minimalbeispiel wird. In der 'Produktivversion' pflege ich
explizit eine extra Datei und schreibe keine in eine andere.

> Wenn du die Datei immer wieder neu beschreiben willst, hilft
> eventuell verbatimwrite aus dem moreverb-Paket.

Danke fuer den Tip; werde ich aber vermutlich nicht brauchen.

> > Zusatzfrage: Wenn ich eine Minipage/Parbox um den Text
> > ('Eine Minipage') lege, wie lege ich dann die Breite der
> > Minipage/Parbox so fest, dass sie der (automatisch
> > generierten?) Beite der ersten Spalte entspricht? Bei der
> > Minipage in der zweiten Spalte hat \linewidth geklappt,
> > aber in der ersten Spalte funktioniert das nicht.
>
> Nimm \begin{tabular}[t]{@{}l@{}} statt minipage.

Das hat den Vorteil, dass ich keine Breite angeben muss
und die Breite vermutlich korrekt berechnet wird. :-)
Das eigentliche Problem bleibt aber auch hier bestehen:
Der relevante Text bzw. die Minipage bzw. die Tabelle
werden vertikal zentriert und nicht am oberen Rand der
Zelle der uebergeordneten Tabelle ausgerichtet.
Ueberzeuge Dich durch Loeschen der korrespondierenden
Kommentarzeichen selbst:

\documentclass[12pt]{dinbrief}
\usepackage{ltxtable}

\begin{filecontents}{tbl.tex}
\begin{longtable}{|r|X|}\hline

%\begin{minipage}[t]{\linewidth}
%\begin{minipage}[t]{3.5cm}
%\begin{tabular}[t]{@{}l@{}} % hier lieber ein r
Eine Minipage
%\end{minipage}
%\end{tabular}


&
\begin{minipage}{\linewidth}
Zeile 1\\
Zeile 2\\
Zeile 3
\end{minipage}\\ \hline
\end{longtable}
\end{filecontents}

\begin{document}
\LTXtable{\textwidth}{tbl}
\end{document}

Falls Du mir noch weiterhelfen kannst,
wuerde ich mich sehr freuen.

Schoene Gruesse - Torsten


Ulrike Fischer

unread,
May 11, 2004, 6:16:32 AM5/11/04
to
"Torsten Munkelt" <Torsten.Munk...@TU-Ilmenau.DE> schrieb:

> Hallo, Ulrike,
>
> vielen Dank fuer Deine Antwort.
>

> Das eigentliche Problem bleibt aber auch hier bestehen:

Tja. Da kann ich nur sagen: das kommt davon, wenn man die Lösung nicht
an seinem eigenen Minimalbeispiel testet: in deinem ersten Beispiel
hast du *eine* minipage. Hier hast du zwei. Und die zweite wird
(mangels Positionsangabe) standardmäßig relativ zur Grundlinie
zentriert. Die erste wird mit ihrer obersten Zeile auf der Grundlinie
ausgerichtet. Mach bei beiden [t].

Torsten Munkelt

unread,
May 11, 2004, 8:33:11 AM5/11/04
to
Hallo, Ulrike,

> Tja. Da kann ich nur sagen: das kommt davon, wenn man die Lösung nicht
> an seinem eigenen Minimalbeispiel testet:

ich habe all meine Minimalbeispiele wirklich mehrfach getestet.

> in deinem ersten Beispiel
> hast du *eine* minipage.

Ja, eine in der _zweiten_ Zelle der ersten und einzigen Zeile.

> Hier hast du zwei.

Nein, das Beispiel ist das gleiche, nur dass ich fuenf
Kommentarzeilen eingefuegt habe, die, wenn das %
paarweise passend entfernt wird, auf Deine Loesung
mit der Minipage bzw. mit der Tabelle fuer die _erste_
Zelle der ersten und einzigen Zeile hinauslaufen.

> Und die zweite wird
> (mangels Positionsangabe) standardmäßig relativ zur Grundlinie
> zentriert.

Das ist der entscheidende Gedanke. :-)

> Die erste wird mit ihrer obersten Zeile auf der Grundlinie
> ausgerichtet. Mach bei beiden [t].

Das klappt hervorragend. :-) Nochmals vielen Dank.

Auch auf die Gefahr hin, dass ich eine auf die Muetze
bekomme: Wenn ich in die zweite Minipage ein
Bild setze und die innere Tabelle und die Minipage
bzw. deren Inhalt mit \vspace{0pt} aneinander oben
ausrichte, sitzt das Bild ein Stueck tiefer als der Text.
Wie bekomme ich es hin, dass Bild und Text oben
genau abschliessen? _Getestetes_ Minimalbeispiel
mit \rule anstelle von \includegraphics:

\documentclass[12pt]{dinbrief}
\usepackage{ltxtable}

\usepackage{graphicx}

\begin{filecontents}{tbl.tex}
\begin{longtable}{|r|X|}\hline

\begin{tabular}[t]{@{}r@{}}
\vspace{0pt}%
Ein Bild
\end{tabular}
&
\begin{minipage}[t]{\linewidth}
\vspace{0pt}%
\rule{5.0cm}{7.0cm} %\includegraphics{pic01}


\end{minipage}\\ \hline
\end{longtable}
\end{filecontents}

\begin{document}
\LTXtable{\textwidth}{tbl}
\end{document}

Das ist schon alles gar nicht so einfach. *seufz*

Schoene Gruesse - Torsten


Ulrike Fischer

unread,
May 11, 2004, 8:57:31 AM5/11/04
to
"Torsten Munkelt" <Torsten.Munk...@TU-Ilmenau.DE> schrieb:

> Hallo, Ulrike,
>
>> Tja. Da kann ich nur sagen: das kommt davon, wenn man die Lösung nicht
>> an seinem eigenen Minimalbeispiel testet:
>
> ich habe all meine Minimalbeispiele wirklich mehrfach getestet.

Ja, das glaube ich dir. Aber ich konnte ja nicht ahnen, dass du den
Hinweis auf [t] nicht in die bis dahin einzige minipage einsetzt,
sondern eine neue minipage baust.

> Auch auf die Gefahr hin, dass ich eine auf die Muetze
> bekomme: Wenn ich in die zweite Minipage ein
> Bild setze und die innere Tabelle und die Minipage
> bzw. deren Inhalt mit \vspace{0pt} aneinander oben
> ausrichte, sitzt das Bild ein Stueck tiefer als der Text.

Das klappt so nicht: das \vspace in der tabular befindet sich nicht am
Anfang der Tabelle sondern in der ersten Zelle, und da hat es überhaupt
keine Wirkung. Versuch

\begin{tabular}[t]{@{}r@{}}\noalign{\vspace{0pt}}
Ein Bild
\end{tabular}

Die obere Kante der Tabelle ist dann aber nicht genau oberhalb der
Buchstaben, da eine Zelle immer die Standardhöhe von \strut hat!

Torsten Munkelt

unread,
May 11, 2004, 10:45:16 AM5/11/04
to
Hallo, Ulrike,

> > Wenn ich in die zweite Minipage ein
> > Bild setze und die innere Tabelle und die Minipage
> > bzw. deren Inhalt mit \vspace{0pt} aneinander oben
> > ausrichte, sitzt das Bild ein Stueck tiefer als der Text.
>
> Das klappt so nicht: das \vspace in der tabular befindet sich nicht am
> Anfang der Tabelle sondern in der ersten Zelle, und da hat es überhaupt
> keine Wirkung. Versuch
>
> \begin{tabular}[t]{@{}r@{}}\noalign{\vspace{0pt}}
> Ein Bild
> \end{tabular}

Das klappt hervorragend. :-) Vielen Dank.

> Die obere Kante der Tabelle ist dann aber nicht genau oberhalb der
> Buchstaben, da eine Zelle immer die Standardhöhe von \strut hat!

Das empfinde ich als nicht so problematisch.

Schoene Gruesse - Torsten Munkelt


Torsten Munkelt

unread,
May 11, 2004, 10:51:46 AM5/11/04
to
Hallo, Tom,

> > [...] Mir gelingt es nicht, den Text


> > in der ersten Zelle der (ersten) Zeile ('Eine Minipage') vertikal
> > oben (an 'Zeile 1') auszurichten. Der Text wird vertikal mittig
> > (an 'Zeile 2') ausgerichtet.
>
> Hast Du schon mal das array Paket kombiniert mit \multirow versucht?
> dort kannst Du Dir verschiedene Formatierungen (inkl. Ausrichtung)
> definieren und dann mittels dem \multirow-Befehl einzelnen Zellen
> zuweisen. Vergleiche dazu auch das Tutorium "Satz von Tabellen" von Axel
> Reichert. Müßte auch bei Deiner lokalen Installation dabei sein, sonst
> auf dem ctan-Server.

Vielen Dank fuer Deine Hinweise. Ich habe mich
erst einmal auf Ulrikes Vorschlaege konzentriert,
weil ich mit ihnen schnell etwas bewerkstelligen
konnte. Mit array.sty und \multirow werde ich mich
noch auseinandersetzen. - Das Tutorium kenne ich,
komme allerdings nicht so gut mit ihm zurecht. Das
liegt aber an mir und nicht am Tutorium: Die
Erklaerungen sind fuer einen Anfaenger wie mich
einfach noch etwas zu spartanisch.

Schoene Gruesse - Torsten


Tom Kink

unread,
May 11, 2004, 12:27:56 PM5/11/04
to

Torsten,
das Tutorium zeigt auch eher allgemeine Fehler auf und gibt einen kurzen
Hinweis auf Lösungen. Das array-Paket habe ich selber erst 'entdeckt'
und schätzen gelernt. Ich denke, der kleine Aufwand, das genauer
anzusehen, lohnt immer. Ansonst kann ich auch noch das Paket booktabs
und "Publication quality tables in LaTeX" von S. Fear empfehlen - es
sieht meiner Meinung nach einfach besser aus.

Viel Spass!

Tom

0 new messages