Aquíhay \multirow
documentación (donde no encontré mi respuesta), y aquí está mi MWE (pero no funciona como estaba previsto, lo que ilustra el problema):
\documentclass[twoside,a4paper,11pt,chapterprefix=true]{scrbook}
\usepackage[UTF8]{inputenc} %encodage clavier
\usepackage[T1]{fontenc} %encodage police
\usepackage[francais]{babel} %langue
\usepackage{multirow}
\begin{document}
\begin{tabular}{|c|c|c|c|}
\hline
\multicolumn{4}{|c|}{my little 1rst line} \\
\hline
\multicolumn{2}{|c|}{blabla} & \multicolumn{2}{c|}{blabla} \\
\hline
blabla & blabla & \multirow{2}{*}{whaou there is so much text here, that's embarassing, look the cell goes beyond the tabular, and even beyond the page, the worst being : you don't even get a warning for going out of the page, and i'm not even talking about the margins...} \\
\cline{1-2}
\multicolumn{2}{|c|}{blabla} & \\
\hline
\end{tabular}
\end{document}
El comportamiento que me gustaría tener es que no se exceda ninguna celda, es decir, estirando las celdas o forzando una nueva línea dentro de las celdas.
Respuesta1
Usar *
in \multirow
hace que el ancho de la celda sea el ancho de su contenido. En su lugar, puedes utilizar una longitud adecuada fija en el segundo argumento:
\documentclass[twoside,a4paper,11pt,chapterprefix=true]{scrbook}
\usepackage[utf8]{inputenc} %encodage clavier
\usepackage[T1]{fontenc} %encodage police
\usepackage[francais]{babel} %langue
\usepackage{multirow}
\usepackage{array}
\begin{document}
\noindent\begin{tabular}{|c|c|c|c|}
\hline
\multicolumn{4}{|c|}{my little 1rst line} \\
\hline
\multicolumn{2}{|c|}{blabla} & \multicolumn{2}{>{\centering\arraybackslash}p{5cm}|}{blabla} \\
\hline
blabla & blabla & \multirow{2}{5cm}{whaou there is so much text here, that's embarassing} \\
\cline{1-2}
\multicolumn{2}{|c|}{blabla} & \\
\hline
\end{tabular}
\end{document}
Por supuesto, dependiendo del contenido real de la tabla, las especificaciones de sus columnas pueden cambiar (si se requiere ajuste de texto, es mejor usar p{<length>}
columnas).