2010-10-21 6 views
27

Ich kann nicht herausfinden, wie man die Zeile innerhalb der MultiRow in tabellarisch zu brechen. Ich muss eine Tabelle erstellen, wo ich eine Zelle habe, die zwei Zeilen hoch ist, und ich habe einen langen Text darin, aber es bricht die Zeile nicht und Text überlappt eine andere Zelle auf der linken Seite.Latex: wie man die Zeile in MultiRow innerhalb der Tabelle bricht

Irgendwelche Vorschläge?

Probe Code:

\begin{center} 
    \begin{tabular}{|p{1cm}|p{2.5cm}|p{2cm}|p{2cm}|p{2cm}|p{2cm}|} 
    \hline 
    \multirow{2}{*}{Long text to break} % HERE IS A PROBLEM 
     & Thing & \multicolumn{2}{|c|}{Thing 2} & \multicolumn{2}{|c|}{Thing 3}  
    \\ \cline{2-6} 
     & sth 1 & sth 1 & sth 2 & sth 1 & sth 2 \\ \hline 
\hline 
\end{tabular} 
\end{center} 

Antwort

9

Sie zu minipage es versuchen könnten:

\begin{center} 
\begin{tabular}{|l|l|l|l|l|l|} 
    \hline 
    \multirow{2}{*}{\begin{minipage}{0.5in}Long text to break\end{minipage}} 
    & Thing & \multicolumn{2}{|c|}{Thing 2} & \multicolumn{2}{|c|}{Thing 3} \\ 
    \cline{2-6} 
    & sth 1 & sth 1 & sth 2 & sth 1 & sth 2 \\ 
    \hline 
    \hline 
\end{tabular} 
\end{center} 

jedoch in Ihrem speziellen Fall, mein Vorschlag wäre, einfach sein, die Einschränkungen des lockern andere Spalten, weil dort zu viel Platz verschwendet wird. Mit jedem p{}, der die anderen Spalten dazu zwingt, eine bestimmte Breite zu haben, ist also nicht genug Platz für die erste Spalte.

der folgende Code sah mir ansehnlich, wenn ich es zusammengestellt:

\begin{center} 
\begin{tabular}{|l|l|l|l|l|l|} 
    \hline 
    \multirow{2}{*}{Long text to break} 
    & Thing & \multicolumn{2}{|c|}{Thing 2} & \multicolumn{2}{|c|}{Thing 3} \\ 
    \cline{2-6} 
    & sth 1 & sth 1 & sth 2 & sth 1 & sth 2 \\ 
    \hline 
    \hline 
\end{tabular} 
\end{center} 
+0

Ich kann nicht einfach "l" Parameter in tabellarischen Befehl verwenden, weil die Zelle zu Breite war, aber die "\ begin {minipage} {2cm} Langer Text zu brechen \ end {minipage} "hat mir geholfen, danke. – kokosing

30

p Spalt und \parbox auch funktionieren:

\usepackage{multirow} 

\begin{document} 
\begin{center} 
\begin{tabular}{|p{1.5cm}|l|l|l|l|l|} 
    \hline 
    \multirow{2}{*}{\parbox{1.5cm}{Long text to break}} 
    & Thing & \multicolumn{2}{|c|}{Thing 2} & \multicolumn{2}{|c|}{Thing 3} \\ 
    \cline{2-6} 
    & sth 1 & sth 1 & sth 2 & sth 1 & sth 2 \\ 
    \hline 
    \hline 
\end{tabular} 
\end{center} 
\end{document} 

parbox in latex document

+0

Danke, funktioniert gut für mich. Aber ich denke, Sie sollten '\ parbox' statt der TeX '\ vbox' –

+0

verwenden Danke! Ich habe die Antwort aktualisiert. Parbox behandelt Platz über dem Text. – Tombart

6

Für mich ist es funktionierte die Build verwenden -in Befehl von "multirow" - das {*} ist "{Breite}"

9

für mich die kürzeste und praktischste Antwort:

Verwendung \linewidth als Länge für die {width} Parameter.

\usepackage{multirow} 
\begin{document} 

\begin{center} 
\begin{tabular}{|p{1cm}|p{2.5cm}|p{2cm}|p{2cm}|p{2cm}|p{2cm}|} 
\hline 
\multirow{2}{\linewidth}{Long text to break} % HERE IS A PROBLEM 
    & Thing & \multicolumn{2}{|c|}{Thing 2} & \multicolumn{2}{|c|}{Thing 3}  
\\ \cline{2-6} 
    & sth 1 & sth 1 & sth 2 & sth 1 & sth 2 \\ \hline 
\hline 
\end{tabular} 
\end{center} 

\end{document} 

Das ist es!

Das einzig mögliche Problem ist, dass in dem unwahrscheinlichen Fall, dass der Text in den anderen Zellen wirklich kurz ist es so aussehen: Broken text in the right width but sadly going out of the table

Allerdings, wenn die Regel Ihre Tabelle mehr Text auf den anderen Zellen hat als nur "sth1" wird es gut aussehen:

+1

Wie verhindere ich den Überlauf in der Multirow-Säule? – Midiparse

+0

@ Midiparse Es tut mir leid, ich kann Ihnen keine Antwort geben. Eine Möglichkeit wäre, Ihren Text in eine Box zu stellen und diese Box in der Multi-Row-Umgebung zu verwenden [nur raten (!)] –