ich moechte in einer longtable-Tabelle innerhalb einer Zelle die Zeile
umbrechen. Ich habe es mit einem Befehl der longtable-Umgebung versucht,
der glaube ich /tabnewline heisst. Allerdings lande ich damit in nicht
in der naechsten Zeile der Zelle, sondern wieder ganz am Anfang der
Zeile. Mache ich etwas falsch? Gibt es einen anderen Befehl?
Peter
--
It's never too late to have a happy childhood.
Peter Poeml
po...@uni-muenster.de
[siehe Subject]
http://www.dante.de/faq/de-tex-faq/txt/de-tex-faq.txt
Stichwort "tabularnewline".
Tschoe!
--
Axel Reichert -- http://www.axel-reichert.de
Ich habe mich geirrt mit dem Namen des Befehls, \tabularnewline statt
\tabnewline. Meinte den gleichen Befehl. Allerdings ist meine Frage
vielleicht nicht genau genug formuliert gewesen. Ich moechte in einer
Tabelle folgendes erreichen (Beispiel):
Eins Dies ist ein
fortlaufender
Text mit einer
Art Liste danach:
1=bla
2=blubb
3=etc
Zwei Wieder ein Text.
1=und
2=so
3=weiter
Wie gesagt, \tabularnewline fuehrt ja zurueck in die linke Spalte. Der
Text in Spalte 2 wird ja automatisch umgebrochen, so weit so gut, aber
manchmal wuerde ich eben gerne einen gewollten Umbruch einfuegen.
Peter
Peter
Eins & Kurzer Text. & 1=bla \\
& & 2=blubb \\
& & 3=blaeh \\
Zwei & Dies ist ein & 1=bla \\
laengerer fort-
laufender <--- Diese Luecke soll weg...
Text
& & 2=blubb \\
& & 3=blaeh \\
Die rechte Spalte ist leider nicht so schmal, dass sich das Problem
dadurch loesen wuerde. Da steht naemlich gelegentlich auch etwas
laengerer Fliesstext drin.
Gibt es denn keine Moeglichkeit, den Zeilenumbruch innerhalb einer Zelle
zu beeinflussen?
Kann man eine minipage Umgebung in eine Tabellenzelle packen, oder
parbox, oder sonst aehnliches? \newline, und Leerzeile funktionieren
so jedenfalls nicht.
Oder vielleicht ein \hfill anhaengen, als unsichtbaren Auffueller?
Immer noch dankbar fuer Ideen zum ausprobieren
Versuch' mal
\documentclass{article}
\usepackage{longtable}
\usepackage{array}
\begin{document}
\begin{longtable}{lp{3cm}>{\raggedright}p{2cm}}
Eins & Kurzer Text. & 1=bla \\ 2=blubb \\ 3=blaeh \tabularnewline
Zwei & Dies ist ein laengerer fortlaufender Text
& 1=bla \\ 2=blubb \\ 3=blaeh
\end{longtable}
\end{document}
AFAIK hat Axel Reichert eine Methode, das etwas systematischer zu
machen. Hast Du mal in seinem tabsatz.ps nachgeschaut?
>
> Kann man eine minipage Umgebung in eine Tabellenzelle packen, oder
> parbox, oder sonst aehnliches?
Klar, aber eine p-Zelle ist ja schon eine parbox.
Gruss
Stephan
--
Stephan Lehmke Stephan...@cs.uni-dortmund.de
Fachbereich Informatik, LS I Tel. +49 231 755 6434
Universitaet Dortmund FAX 6555
D-44221 Dortmund, Germany
Donnerschlag. Es funktioniert.
Also doch \tabularnewline, wie Axel vorgeschlagen hatte. Was ich bisher
nicht ausprobiert hatte, war die Spalte als raggedright zu definieren.
Soweit ich es verstehe, ist das der Moment wo \\ umdefiniert wird und
der Befehl \tabularnewline seinen Sinn bekommt.
Bin gestern abend (nein, eher nachts) auch noch auf die raggedright-Idee
gestossen und hatte mir vorgenommen es heute auszuprobieren. Du warst
schneller!
>AFAIK hat Axel Reichert eine Methode, das etwas systematischer zu
>machen. Hast Du mal in seinem tabsatz.ps nachgeschaut?
Ja, schon. Aber hatte nicht kapiert, dass raggedright eigentlich genau
das ist was ich will. Und ohne laeuft's anscheinend nicht.
>> Kann man eine minipage Umgebung in eine Tabellenzelle packen, oder
>> parbox, oder sonst aehnliches?
>
>Klar, aber eine p-Zelle ist ja schon eine parbox.
Waere ich froh, wenn ich die Hintergruende so kennen wuerde wie manch
anderer -- dann muesste ich nicht staendig "Versuch macht kluch"
anwenden... :-)
Allerherzlichsten Dank!!!
funktioniert soweit ganz gut, aber wie kriegt man das hin, wenn
man die spaltenbreite nicht selbst angeben will/kann?
ich benutze bis jetzt auch:
eins & a \tabularnewline
& b \tabularnewline
& c \tabularnewline
zwei & a \tabularnewline
& b \tabularnewline
& c \tabularnewline
das problem dabei (ausser, dass es nicht wirklich sauber ist):
die a/b/c's bleiben bei einem seitenumbruch nicht auf der selben
seite!
Moa
* Sent from RemarQ http://www.remarq.com The Internet's Discussion Network *
The fastest and easiest way to search and participate in Usenet - Free!
>\begin{longtable}{lp{3cm}>{\raggedright}p{2cm}}
> eins & a \tabularnewline
> & b \tabularnewline
> & c \tabularnewline
> zwei & a \tabularnewline
> & b \tabularnewline
> & c \tabularnewline
> die a/b/c's bleiben bei einem seitenumbruch nicht auf der selben
> seite!
Sie blieben, wenn du
eins & a \\ b \\ c \tabularnewline
benutztest.
In l-, r- und c-Spalten ist kein Zeilenumbruch innerhalb der Zelle
moeglich, \\ oder \tabularnewline beenden die Tabellenzeile. In
p-Spalten erreicht man einen Zeilenumbruch innerhalb der Zelle mit \\,
\tabularnewline beendet die Tabellenzeile.
Wer sich das nicht merken kann, sollte sich angewoehnen,
grundsaetzlich \tabularnewline fuer neue Tabellenzeilen zu benutzen
und nur innerhalb von Zellen \\.
Das kannst Du vermeiden, indem Du alle \tabularnewline, an denen kein
Seitenumbruch erfolgen soll, mit einem * versiehst.
Eine `saubere' Loesung kann man wohl nur erhalten, wenn man die
`optimale' Spaltenbreite dynamisch bestimmt. Sowas habe ich fuer zwei
Spalten mal vor Urzeiten durch systematisches Ausprobieren realisiert,
ging eigentlich nicht schlecht, selbst auf einem Atari ST ;-)
Etwa so:
\documentclass{article}
\usepackage{ifthen}
\usepackage{calc}
\newlength{\maximalbreite}
\newcounter{zaehler}
\newcounter{zaehleroptimum}
\newlength{\hoehe}
\newlength{\bestehoehe}
\newcommand{\optimieretabelle}[5]
{%
\setlength{\maximalbreite}{#4}%
\setcounter{zaehler}{0}%
\setlength{\bestehoehe}{\maxdimen}%
\whiledo{\value{zaehler} < #1}
{%
\stepcounter{zaehler}%
\settoheight{\hoehe}
{%
\setlength{#2}{\maximalbreite / #1 * \value{zaehler}}%
\setlength{#3}{\maximalbreite - #2}%
#5%
}%
\ifthenelse{\hoehe < \bestehoehe}{\setlength{\bestehoehe}{\hoehe}\setcounter{zaehleroptimum}{\value{zaehler}}}{}%
}%
\setlength{#2}{\maximalbreite / #1 * \value{zaehleroptimum}}%
\setlength{#3}{\maximalbreite - #2}%
#5%
}
\newlength{\erstespalte}
\newlength{\zweitespalte}
\begin{document}
\hrule
\noindent
\optimieretabelle
{100}{\erstespalte}{\zweitespalte}{\linewidth-8\tabcolsep-1.5cm-\widthof{sieben}}
{%
\begin{tabular}{lp{1.5cm}p{\erstespalte}p{\zweitespalte}}
eins & bla bla bla & blubb blubb blubb blubb blubb & quack \\
zwei & bla bla bla & blubb blubb & quack quack quack quack \\
drei & bla bla bla & blubb blubb & quack quack quack quack \\
vier & bla bla bla & blubb & quack quack quack quack quack \\
f"unf & bla bla bla & blubb & quack quack quack quack quack \\
sechs & bla bla bla & blubb blubb blubb blubb blubb & quack \\
sieben & bla bla bla & blubb blubb blubb blubb & quack quack \\
acht & bla bla bla & blubb blubb blubb blubb & quack quack quack
\end{tabular}%
}
\hrule
\end{document}
(nicht zu ernst nehmen, ist jetzt ziemlich schnell programmiert, aber
man kann vielleicht das Prinzip erkennen... ;-)