я используютабличныйxчтобы разбить содержимое столбца на полях документа (см.Разрыв строки в ячейке таблицы на краю документа). Но когда я использую \multicolumn
в такой таблице, инструкция разбить текст в этом столбце игнорируется. Как мне это реализовать?
\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}
В ответ на вопрос Мико:
\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}
решение1
Ниже приведена версия вашего второго MWE. Обратите внимание, что поскольку ширина всей tabularx
среды задается как \mylength
, вы не должны использовать этот параметр для объединенной ширины второго и третьего столбцов. Чтобы вычислить правильную ширину, я использую две дополнительные переменные длины, \xlength
и \ylength
. \xlength
устанавливается на ширину первого столбца (+ 4\tabcolsep
); затем \ylength
вычисляется как \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}
ПриложениеПара ответов на дополнительные вопросы ОП:
Расчет
\xlength
по линиям, указанным в коде выше, выглядит следующим образом:нужныйпоскольку первый столбец, который имеет типl
, не имеет предопределенной ширины. Если вы готовы изменить его тип столбца наp
, ширина этого столбца может быть использована напрямую для расчета ширины многостолбца.Например, если ширина первого столбца задана
\xlength
(вы можете выбрать ее значение самостоятельно...), вы можете запуститьtabularx
среду следующим образом:\begin{tabularx}{\mylength}{p{\xlength}lX}
Обратите внимание, что
\xlength
now — это просто ширина первого столбца, т. е. она не включает термин4\tabcolsep
.Затем, позже в этой
tabularx
среде, вы можете указать ширину двух столбцов\multicolumn
(типаp
, как в предыдущем примере) следующим образом:\multicolumn{2}{p{\dimexpr\mylength-\xlength-4\tabcolsep}}{<stuff>}
Термин
4\tabcolsep
представляет собой сумму1\tabcolsep
на левом краю стола,2\tabcolsep
для количества пробелов между столбцами 1 и 2, и1\tabcolsep
на правом краю таблицы.