PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabellenspalte mit manuellen Umbrüchen an Breite anpassen?



rstuby
15-03-2011, 12:43
Hallo!
Ich soll/will jetzt die ganze Innenseite unserer Broschüre mit einer großen Tabelle füllen.
Das funktioniert, wenn man Warnungen ignoriert, und ist jetzt gar nicht mein Problem (außer einer hat eine wirklich viel bessere Idee). Sonst kann ich auch ein noch minimaleres Beispiel mit scrartcl oder so machen und den ganzen leaflet-spezifischen Kram weglassen, wenn das hilft.
Es geht jetzt nämlich nur darum, dass ich eine dreispaltige Tabelle habe, wo in der ersten Spalte jeweils ein Datum steht, das nicht umgebrochen werden soll, in der zweiten ein eftl. auch längerer Text, der bei Bedarf automatisch umgebrochen soll, und in der dritten zwei oder drei Namen mit manuellen Umbrüchen dazwischen.
Die Tabelle soll eine feste Breite haben. Die erste Spalte soll sich nach der maximalen Textbreite richten, das funktioniert gut mit r. Die zweite kann variabel sein, ich habe sie zur Zeit als X-Spalte in einer tabularx-Tabelle.

Die dritte sollte sich ab besten wieder an die maximale Textbreite anpassen, mit l geht das ja aber nicht, weil dann keine Umbrüche innerhalb der Tabellenzeile zugelassen sind. Gibt es eine einfache Möglichkeit, das umzusetzen?


\documentclass[notumble]{leaflet}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\usepackage{calc}
\usepackage{blindtext}
\newlength{\tablewidth}
\setlength{\tablewidth}{2\paperwidth+\textwidth}
\begin{document}
\section{Herzlich Willkommen!}
\blindtext
\clearpage
\section{\mbox{Lehrmodule des Theologischen Seminars im Studienjahr 2011/2012}}
\begin{tabularx}{\tablewidth}{rXp{1.1\textwidth}}
Datum & Modul & Dozenten: \cr\hline
12.--26.09.2011 & Einfuehrungsmodul: Jeder, der einen Studienabschluss anstrebt, sollte das Einfuehrungsmodul - wenn es geht, am Anfang des Studiums - besuchen. Fuer Gasthoerer ist es nicht verpflichtend, aber empfehlenswert.
& Bischoeflicher Vikar der ELKER N. Hintz, Deutschland \newline
Cand. phil. Elena Bondarenko, Russland \newline
Rektor des TS Pastor Dr. Anton Tichomirov, Russland\cr\hline
\end{tabularx}
\clearpage
\mbox{}
\clearpage
\mbox{}
\clearpage
\section{Bedingungen und Kosten}
\blindtext
\clearpage
\section{So finden Sie uns:}
\blindtext
\end{document}

Xenara
15-03-2011, 13:02
Wie wärs für die dritte Spalte mit einer Tabelle in der Tabelle?

\documentclass[notumble]{leaflet}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\usepackage{calc}
\usepackage{blindtext}
\newlength{\tablewidth}
\setlength{\tablewidth}{2\paperwidth+\textwidth}
\begin{document}
\section{Herzlich Willkommen!}
\blindtext
\clearpage
\section{\mbox{Lehrmodule des Theologischen Seminars im Studienjahr 2011/2012}}
\begin{tabularx}{\tablewidth}{rXl}
Datum & Modul & Dozenten: \cr\hline
12.--26.09.2011 & Einfuehrungsmodul: Jeder, der einen Studienabschluss anstrebt, sollte das Einfuehrungsmodul - wenn es geht, am Anfang des Studiums - besuchen. Fuer Gasthoerer ist es nicht verpflichtend, aber empfehlenswert.
& \begin{tabular}[t]{@{}l@{}}
Bischoeflicher Vikar der ELKER N. Hintz, Deutschland\tabularnewline
Cand. phil. Elena Bondarenko, Russland \tabularnewline
Rektor des TS Pastor Dr. Anton Tichomirov, Russland
\end{tabular}
\end{tabularx}
\clearpage
\mbox{}
\clearpage
\mbox{}
\clearpage
\section{Bedingungen und Kosten}
\blindtext
\clearpage
\section{So finden Sie uns:}
\blindtext
\end{document}

rstuby
15-03-2011, 13:22
Wie würde das dann über mehrere Zeilen hinweg aussehen? Muss dann in jeder Zeile die dritte Spalte aus einer ganzen Tabelle bestehen?

Xenara
15-03-2011, 13:39
Ja, klar. Es formatiert ja nur den Inhalt dieser einen Zelle und hat mit den restlichen Zeilen nix zu tun.
Wieso verwendest du eigentlich kein booktabs für die Tabellenformatierung?


\documentclass[notumble]{leaflet}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\usepackage{calc}
\usepackage{blindtext}
\newlength{\tablewidth}
\setlength{\tablewidth}{2\paperwidth+\textwidth}

\usepackage{booktabs}

\begin{document}
\section{Herzlich Willkommen!}
\blindtext
\clearpage
\section{\mbox{Lehrmodule des Theologischen Seminars im Studienjahr 2011/2012}}

\begin{tabularx}{\tablewidth}{rXl}
\toprule
Datum & Modul & Dozenten: \\\midrule
12.--26.09.2011 & Einfuehrungsmodul: Jeder, der einen Studienabschluss anstrebt, sollte das Einfuehrungsmodul - wenn es geht, am Anfang des Studiums - besuchen. Fuer Gasthoerer ist es nicht verpflichtend, aber empfehlenswert.
& %
\begin{tabular}[t]{@{}l@{}}
Bischoeflicher Vikar der ELKER N. Hintz, Deutschland\tabularnewline
Cand. phil. Elena Bondarenko, Russland \tabularnewline
Rektor des TS Pastor Dr. Anton Tichomirov, Russland
\end{tabular}\\
12.--26.09.2011 & Einfuehrungsmodul: Jeder, der einen Studienabschluss anstrebt, sollte das Einfuehrungsmodul - wenn es geht, am Anfang des Studiums - besuchen. Fuer Gasthoerer ist es nicht verpflichtend, aber empfehlenswert.
& %
\begin{tabular}[t]{@{}l@{}}
Bischoeflicher Vikar der ELKER N. Hintz, Deutschland\tabularnewline
Cand. phil. Elena Bondarenko, Russland \tabularnewline
Rektor des TS Pastor Dr. Anton Tichomirov, Russland
\end{tabular}\\
\bottomrule
\end{tabularx}

\clearpage
\mbox{}
\clearpage
\mbox{}
\clearpage
\section{Bedingungen und Kosten}
\blindtext
\clearpage
\section{So finden Sie uns:}
\blindtext
\end{document}

rstuby
15-03-2011, 13:56
Ich habe gerade das paket usepackage{pbox} entdeckt. Damit geht es dann noch ein bisschen einfacher:

\begin{tabularx}{\tablewidth}{rXl}
Datum & Modul & Dozenten: \cr\hline
12.--26.09.2011 & Einfuehrungsmodul: Jeder, der einen Studienabschluss anstrebt, sollte das Einfuehrungsmodul - wenn es geht, am Anfang des Studiums - besuchen. Fuer Gasthoerer ist es nicht verpflichtend, aber empfehlenswert.
& \pbox[t]{1.5\textwidth}{Bischoeflicher Vikar der ELKER N. Hintz, Deutschland \\
Cand. phil. Elena Bondarenko, Russland \\
Rektor des TS Pastor Dr. Anton Tichomirov, Russland}\cr\hline
\end{tabularx}
Aber kann man das nicht irgendwie in die Spaltendefinition einbauen?

Was ist denn an booktabs so empfehlenswert? Ich habe in meinem Original colortbl benutzt. Hier tut es ja aber nichts zur Sache.

Xenara
16-03-2011, 08:30
Hi rstuby,

ich hab das nochmal versucht zu vereinfachen, bin aber grandios gescheitert.
Hier im Code meine Versuche und Kommentare, auch ein Beispiel zu mit und ohne booktabs (in der booktabs-Doku auf Seite 2 ist das auch gezeigt):

\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\usepackage{calc}
\usepackage{blindtext}
\usepackage{booktabs}
\usepackage{array}
\usepackage{pbox}

\begin{document}

\section*{So siehts ohne booktabs aus:}

\begin{tabularx}{\textwidth}{rXl}
\hline
Text & Überschrift & Weitere Überschrift \\
\hline
Zelle 1 & Zelle 2 & Zelle 3\\
Zelle 1 & Zelle 2 & %
\begin{tabular}[t]{@{}l@{}}
Zelle 3 erste Zeile\tabularnewline
Zelle 3 zweite Zeile
\end{tabular}\\
Zelle 1 & Zelle 2 & Zelle 3\\
\hline
\end{tabularx}


\section*{So gehts, ist aber umständlich:}

\begin{tabularx}{\textwidth}{rXl}
\toprule
Text & Überschrift & Weitere Überschrift \\
\midrule
Zelle 1 & Zelle 2 & Zelle 3\\
Zelle 1 & Zelle 2 & %
\begin{tabular}[t]{@{}l@{}}
Zelle 3 erste Zeile\tabularnewline
Zelle 3 zweite Zeile
\end{tabular}\\
Zelle 1 & Zelle 2 & Zelle 3\\
\bottomrule
\end{tabularx}

\section*{So gehts, ist aber auch umständlich; ausserdem ist der Abstand unter der pbox-Zeile anders:}

\begin{tabularx}{\textwidth}{rXl}
\toprule
Text & Überschrift & Weitere Überschrift \\
\midrule
Zelle 1 & Zelle 2 & Zelle 3\\
Zelle 1 & Zelle 2 & %
\pbox[t]{1.5\textwidth}{Zelle 3 erste Zeile\\
Zelle 3 zweite Zeile}\\
Zelle 1 & Zelle 2 & Zelle 3\\
\bottomrule
\end{tabularx}

\clearpage

\section*{So hätt ichs gedacht, geht aber nicht. Wieso nicht???}

%\begin{tabularx}{\textwidth}{rX>{\begin{tabular}[t]{@{}l@{}}}l<{\end{tabular}}l}
%\toprule
%Text & Überschrift & Weitere Überschrift& \\
%\midrule
%Zelle 1 & Zelle 2 & Zelle 3&\\
%Zelle 1 & Zelle 2 & %
%Zelle 3 erste Zeile\tabularnewline
%Zelle 3 zweite Zeile &
%\\
%Zelle 1 & Zelle 2 & Zelle 3&\\
%\bottomrule
%\end{tabularx}

\section*{Nicht mal so vereinfacht klappts:}

%\begin{tabular}{rl>{\begin{tabular}{l}}l<{\end{tabular}}l}
%\toprule
%Text & Überschrift & Weitere Überschrift& \\
%\midrule
%Zelle 1 & Zelle 2 & Zelle 3&\\
%Zelle 1 & Zelle 2 & %
%Zelle 3 erste Zeile \tabularnewline
%Zelle 3 zweite Zeile %
%& \\
%Zelle 1 & Zelle 2 & Zelle 3&\\
%\bottomrule
%\end{tabular}

\section*{Und mit der pbox krieg ichs auch nicht hin; nichtmal der erste Teil des Befehls klappt in der Spaltendefinition, ganz abgesehen davon, dass irgendwie die geschweiften Klammern dann in der Spaltendefinition durch begingroup oder sowas ersetzt werden müssten, was auch nicht geklappt hat:}

%\begin{tabular}{rl>{\pbox[t]{1.5\textwidth}}ll}
%\toprule
%Text & Überschrift & Weitere Überschrift& \\
%\midrule
%Zelle 1 & Zelle 2 & Zelle 3\\
%Zelle 1 & Zelle 2 & %
%\begingroup Zelle 3 erste Zeile \\
%Zelle 3 zweite Zeile\endgroup\\
%Zelle 1 & Zelle 2 & Zelle 3\\
%\bottomrule
%\end{tabular}

\subsection*{Was hats mit begingroup...endgroup auf sich?}

\begin{tabular}{rlll}
\toprule
Text & Überschrift & Weitere Überschrift& \\
\midrule
Zelle 1 & Zelle 2 & Zelle 3\\
Zelle 1 & Zelle 2 & %
\pbox[t]{1.5\textwidth}\begingroup Zelle 3 erste Zeile \\
Zelle 3 zweite Zeile\endgroup\\
Zelle 1 & Zelle 2 & Zelle 3\\
\bottomrule
\end{tabular}

\end{document}



Versucht man, eine Tabelle in die Spaltendefintion zu packen, ergibt sich als Fehlermeldung aus dem log-File:

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

l.80 Text & Überschrift & W
eitere Überschrift& \\
(interwoven alignment preambles are not allowed)

Dazu finde ich:

"Interwoven alignment preambles are not allowed."
If you have been so devious as to get this message, you will understand
it, and you deserve no sympathy. -- Knuth, "The TeXbook"
Tja, ich verstehe trotzdem nicht...

Mit der pbox in der Spaltendefinition hats auch nicht hingehauen, im besten Fall wird darin nicht mehr umbrochen, was auch nicht so ganz Ziel der Sache ist.
Ist \begingroup...\endgroup nicht das Äquivalent zu geschweiften Klammern? Das funktioniert nämlich auch nicht (Fehlermeldung: "missing \endgroup inserted"). Allerdings wäre das meinem Verständnis nach essentiell wichtig, wenn man darüber nachdenken wollte, die pbox komplett in die Spaltendefinition zu packen.
Wieso nach einer pbox der Zeilenabstand anders ist, habe ich auch noch nicht verstanden.

Vielleicht kann mir da jemand von den Profis auf die Sprünge helfen? Bin langsam leicht frustriert.

Viele Grüsse,
Xenara

rstuby
16-03-2011, 08:57
Ach schade, das mit begingroup und endgroup hätte ich sonst als nächstes ausprobiert. Na dann muss ich wohl mit diesem relativ komplizierten Konstrukt leben.

rstuby
16-03-2011, 09:26
Und Booktabs ist ästhetisch wirklich ansprechender, da hast du Recht. Es könnte zwar sein, dass ich es am Schluss wieder rausnehme, um ein paar Millimeter zu sparen, aber erstmal werde ich es benutzen.