estou a usartabularxquebrar o conteúdo de uma coluna na margem do documento (cf.Quebra de linha na célula da tabela na margem do documento). Mas quando uso \multicolumn
em tal tabela, a instrução para quebrar o texto naquela coluna é ignorada. Como posso aplicá-lo?
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\newlength{\mylength}
\setlength{\mylength}{\linewidth}
\addtolength{\mylength}{-\parindent}
\hrule
\begin{tabularx}{\mylength}{lX}
Lorem ipsum dolor sit amet, consectetuer & adipiscing elit. Ut purus elit, vestibulum ut, placerat ac\\
\multicolumn{2}{l}{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac}\\
\end{tabularx}
\hrule
\end{document}
Em resposta à pergunta de Mico:
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\newlength{\mylength}
\setlength{\mylength}{\linewidth}
\addtolength{\mylength}{-\parindent}
\hrule
\begin{tabularx}{\mylength}{llX}
Lorem ipsum dolor & sit amet, consectetuer & adipiscing elit. Ut purus elit\\
\end{tabularx}
\hrule
\begin{tabularx}{\mylength}{llX}
Lorem ipsum dolor & sit amet, consectetuer & adipiscing elit. Ut purus elit\\
Lorem ipsum dolor sit & \multicolumn{2}{p{\mylength}}{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit}\\
\end{tabularx}
\hrule
\end{document}
Responder1
A seguir está uma versão do seu segundo MWE. Observe que como a largura de todo o tabularx
ambiente é dada por \mylength
, você não deve usar esse parâmetro para a largura combinada da segunda e terceira colunas. Para calcular a largura correta, utilizo duas variáveis de comprimento extras, \xlength
e \ylength
. \xlength
é definido como a largura da primeira coluna (+ 4\tabcolsep
); então, \ylength
é calculado como \mylength-\xlength
.
\documentclass{article}
\usepackage{tabularx}
\hyphenation{ad-ip-is-cing} % no idea if this is correct...
\newlength\xlength
\settowidth\xlength{Lorem ipsum dolor sit}
\addtolength\xlength{4\tabcolsep}
\newlength\mylength
\setlength\mylength{\linewidth}
\addtolength\mylength{-\parindent}
\newlength\ylength
\setlength\ylength\mylength
\addtolength\ylength{-\xlength}
\begin{document}
\hrule
\begin{tabularx}{\mylength}{llX}
Lorem ipsum dolor & sit amet, consectetuer &
adipiscing elit. Ut purus elit\\
Lorem ipsum dolor sit &
\multicolumn{2}{p{\ylength}}{Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Ut purus elit}\\
\end{tabularx}
\hrule
\end{document}
Termo aditivoAlgumas respostas às perguntas de acompanhamento do OP:
O cálculo
\xlength
ao longo das linhas fornecidas no código acima énecessárioporque a primeira coluna, que é do tipol
, não possui largura pré-especificada. Se você desejar alterar o tipo de coluna parap
, a largura dessa coluna poderá ser usada diretamente para calcular a largura da multicoluna.Por exemplo, se a largura da primeira coluna for dada por
\xlength
(cabe a você escolher seu valor...), você pode iniciar otabularx
ambiente da seguinte forma:\begin{tabularx}{\mylength}{p{\xlength}lX}
Observe que
\xlength
agora é puramente a largura da primeira coluna, ou seja, não inclui o termo4\tabcolsep
.Então, mais tarde neste
tabularx
ambiente, você poderia especificar a largura das duas colunas\multicolumn
(do tipop
, como no exemplo anterior) da seguinte forma:\multicolumn{2}{p{\dimexpr\mylength-\xlength-4\tabcolsep}}{<stuff>}
O termo
4\tabcolsep
é a soma de1\tabcolsep
na borda esquerda da mesa,2\tabcolsep
para a quantidade de espaço em branco entre as colunas 1 e 2, e1\tabcolsep
na borda direita da mesa.