2010-10-21 16 views
27

Non riesco a scoprire come suddividere la linea all'interno del multirow in tabulare. Ho bisogno di creare una tabella in cui ho una cella alta due righe e ho un testo lungo, ma non interrompe la linea e il testo si sovrappone a un'altra cella sul lato sinistro.Latex: come rompere la linea in multirow all'interno del tabulare

Qualche suggerimento?

Esempio di codice:

\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} 

risposta

9

si potrebbe provare a minipage esso:

\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} 

Tuttavia, nel vostro caso particolare, il mio suggerimento sarebbe semplicemente quello di allentare le restrizioni del altre colonne, perché c'è troppo spazio sprecato lì. Con ogni p{}, che impone alle altre colonne una certa larghezza, non c'è spazio sufficiente per la prima colonna.

il seguente codice sembrava presentabile a me quando ho compilato:

\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

Non posso usare solo il parametro "l" nel comando tabulare, perché la cella era in larghezza, ma "\ begin {minipage} {2cm} Testo lungo da spezzare \ end {minipage} "mi ha aiutato, grazie. – kokosing

30

p colonna e \parbox funziona anche:

\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

Grazie, funziona bene per me. Tuttavia, penso che dovresti usare '\ parbox' al posto di TeX' \ vbox' –

+0

Grazie! Ho aggiornato la risposta. Parbox gestisce lo spazio sopra il testo. – Tombart

6

Per me ha funzionato per usare la build -in comando di "multirow" - il {*} è "{width}"

9

per me la più breve e più pratico risposta:

uso \linewidth come la lunghezza del parametro {width}.

\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} 

Questo è tutto!

L'unico problema possibile è che, nel caso improbabile che il testo nelle altre celle è davvero breve se può sembrare che: Broken text in the right width but sadly going out of the table

Tuttavia, se in genere la tabella ha più testo sulle altre cellule rispetto solo "sth1" sarà perfetto: enter image description here

+1

Come si impedisce l'overflow nella colonna multipla? – Midiparse

+0

@Midiparse Mi dispiace, non sono in grado di darti una risposta. Una possibilità potrebbe essere quella di mettere il testo in una scatola e usare questa scatola nell'ambiente multirow [solo indovinando (!)] –