Estoy usandotabularxdividir el contenido de una columna en el margen del documento (cf.Salto de línea en la celda de la tabla en el margen del documento). Pero cuando uso \multicolumn
una tabla de este tipo, se ignora la instrucción de dividir el texto en esa columna. ¿Cómo puedo hacerlo cumplir?
\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}
En respuesta a la pregunta 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}
Respuesta1
La siguiente es una versión de su segundo MWE. Tenga en cuenta que debido a que el ancho de todo el tabularx
entorno viene dado por \mylength
, no debe usar ese parámetro para el ancho combinado de la segunda y tercera columnas. Para calcular el ancho correcto, uso dos variables de longitud adicionales \xlength
y \ylength
. \xlength
se establece en el ancho de la primera columna (+ 4\tabcolsep
); entonces, \ylength
se calcula 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}
ApéndiceUn par de respuestas a las preguntas de seguimiento del OP:
El cálculo de
\xlength
acuerdo con las líneas dadas en el código anterior esnecesarioporque la primera columna, que es de tipol
, no tiene un ancho preespecificado. Si está dispuesto a cambiar su tipo de columna ap
, el ancho de esa columna podría usarse directamente para calcular el ancho de la multicolumna.Por ejemplo, si el ancho de la primera columna está dado por
\xlength
(usted debe elegir su valor...), puede iniciar eltabularx
entorno de la siguiente manera:\begin{tabularx}{\mylength}{p{\xlength}lX}
Tenga en cuenta que
\xlength
ahora es puramente el ancho de la primera columna, es decir, no incluye el término4\tabcolsep
.Luego, más adelante en este
tabularx
entorno, podría especificar el ancho de las dos columnas\multicolumn
(de tipop
, como en el ejemplo anterior) de la siguiente manera:\multicolumn{2}{p{\dimexpr\mylength-\xlength-4\tabcolsep}}{<stuff>}
El término
4\tabcolsep
es la suma de1\tabcolsep
en el borde izquierdo de la mesa,2\tabcolsep
para la cantidad de espacios en blanco entre las columnas 1 y 2, y1\tabcolsep
en el borde derecho de la mesa.