Quebre o texto de várias colunas na margem do documento com tabularx

Quebre o texto de várias colunas na margem do documento com tabularx

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

insira a descrição da imagem aqui


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}

insira a descrição da imagem aqui

Responder1

A seguir está uma versão do seu segundo MWE. Observe que como a largura de todo o tabularxambiente é 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, \xlengthe \ylength. \xlengthé definido como a largura da primeira coluna (+ 4\tabcolsep); então, \ylengthé calculado como \mylength-\xlength.

insira a descrição da imagem aqui

\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 \xlengthao longo das linhas fornecidas no código acima énecessárioporque a primeira coluna, que é do tipo l, não possui largura pré-especificada. Se você desejar alterar o tipo de coluna para p, 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 o tabularxambiente da seguinte forma:

    \begin{tabularx}{\mylength}{p{\xlength}lX}
    

    Observe que \xlengthagora é puramente a largura da primeira coluna, ou seja, não inclui o termo 4\tabcolsep.

    Então, mais tarde neste tabularxambiente, você poderia especificar a largura das duas colunas \multicolumn(do tipo p, como no exemplo anterior) da seguinte forma:

    \multicolumn{2}{p{\dimexpr\mylength-\xlength-4\tabcolsep}}{<stuff>}
    
  • O termo 4\tabcolsepé a soma de

    • 1\tabcolsepna borda esquerda da mesa,
    • 2\tabcolseppara a quantidade de espaço em branco entre as colunas 1 e 2, e
    • 1\tabcolsepna borda direita da mesa.

informação relacionada