Aquiestá \multirow
a documentação (onde não encontrei minha resposta) e aqui está meu MWE (mas não funcionando como esperado, ilustrando o 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}
O comportamento que eu gostaria de ter é não exceder células, seja esticando as células ou forçando uma nova linha dentro das células.
Responder1
Usar *
in \multirow
faz com que a largura da célula seja a largura de seu conteúdo. Você pode usar um comprimento adequado fixo no 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}
É claro que, dependendo do conteúdo real da tabela, as especificações das colunas podem mudar (se a quebra automática de texto for necessária, é melhor usar p{<length>}
colunas).