PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mehrzeiliger Text in multicolumn-Spalte



momo
10-09-2009, 12:49
Hallo,

ich möchte mehrzeiligen Text mit 'raggedright' in eine multicolumn-Spalte schreiben, siehe Minimalbeipiel:
Es gibt eine Fehlermeldung:
"..something's wrong perhaps a missing item"
Was mache ich da falsch?

Danke für Eure Hilfe!



\documentclass[landscape]{article}
\usepackage[left=10mm,right=1mm,top=5mm,bottom=20mm,showframe]{geometry}
%
\begin{document}
\begin{tabular}{|p{6cm}|p{5cm}|p{6cm}|p{5cm}|}
\multicolumn{2}{@{}l}{
\raggedright
bla bla bla1\\
bla bla bla1
}
&
\raggedright
Definition:\\
bla bla bla2\\
bla bla bla2\\
bla bla bla2
&
14
\\\hline
21
&
22
&
23
&
24
\\\hline
\end{tabular}
\end{document}

Xenara
10-09-2009, 13:13
Du definierst die multicolumn-Zelle nur mit "l", aber in einer l-Spalte kann nicht umbrochen werden, das geht nur in p-Spalten. Also musst du die Breite definieren. Wenn die Zelle exakt gleich breit sein soll wie die beiden Spalten zusammen, wäre der Code so:


\documentclass[landscape]{article}
\usepackage[left=10mm,right=1mm,top=5mm,bottom=20mm,showframe]{geometry}
\usepackage{calc}
%
\begin{document}
\begin{tabular}{|p{6cm}|p{5cm}|p{6cm}|p{5cm}|}
\multicolumn{2}{@{}p{11cm+3\tabcolsep}}{%
\raggedright
bla bla bla1\newline
bla bla bla1%
}
&
\raggedright
Definition:\\
bla bla bla2\\
bla bla bla2\\
bla bla bla2
&
14
\\\hline
21
&
22
&
23
&
24
\\\hline
\end{tabular}
\end{document}

momo
10-09-2009, 13:29
.. vielen lieben Dank, xenara, für die schnelle Antwort! Das hilft mir sehr viel weiter und das habe ich nirgendwo gefunden bisher.

..bedeutet "+4", plus tabcolsep 4 ? in welcher Einheit? Gibt es eine Doku in der so etwas beschrieben ist, vielleicht mit Beispiel?

Gruß
Annette

Xenara
10-09-2009, 13:55
Beim Formulieren der Erklärung fällt mir gerade auf, dass ich im MB falsch gerechnet habe, es muss 3\tabcolsep statt 4\tabcolsep heissen, habs korrigiert.

Die Erklärung:
Die Breite, die du mit den p-Spalten angeben kannst, ist die, die der Text an Platz einnehmen darf. Damit zwischen den Spalten aber noch etwas Platz bleibt, ist ein kleiner Abstand dazwischen. Dieser Abstand ist \tabcolsep\tabcolsep wird jeweils direkt am Anfang einer Spalte und am Ende eingefügt, also 2x pro Spalte.
In deinem Fall muss man es 3x für die 2 Spalten hinzuzählen, weil du die multicolumn mit @{} dazu zwingst, ihren eigentlichen Einzug (also \tabcolsep) am Anfang zu ignorieren. Der \tabcolsep-Abstand zur 3. Spalte soll nicht geändert werden. Das ginge, wenn man am Ende der Breitendefinition der multicolumn nochmal ein @{} einfügt. Dann müssten es 4\tabcolsep sein.

Mit dem Paket calc ist es dann möglich, Längenangaben nicht absolut setzen zu müssen, sondern LaTeX berechnet sie selbst (sonst müsste man wissen, wie breit \tabcolsep wirklich ist).
Setzt man also "11cm+\tabcolsep", dann werden die 11cm absolut genommen (die ja auch so über die p-Spalten definiert sind) und \tabcolsep wird als Variable behandelt.
Den Wert dieser Variablen kennt LaTeX ja (sonst könnte er es nicht setzen).
Vorteil ist auch, wenn du den Wert von \tabcolsep aus irgendwelchen Gründen änderst, wir das mit berücksichtigt.

Eine Doku, in der alle LaTeX-Längen beschrieben sind, habe ich leider noch nicht gefunden.

momo
10-09-2009, 14:04
.. danke, dass Du mir das so ausführlich erklärst, so dass ich es auch verstehen kann, das hat für mich unheimlichen Wert und motiviert, super!

Xenara
10-09-2009, 14:58
Dann viel Spass weiterhin mit LaTeX :)