我在用着表格型在文档边缘打破某一列的内容(参见文档边缘的表格单元格中出现换行符)。但是当我\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}
回答 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}
答案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}
附录对 OP 后续问题的几个回答:
\xlength
按照上面代码的计算是需要因为第一列的类型为l
,没有预先指定宽度。如果您愿意将其列类型更改为p
,则可以直接使用该列的宽度来计算多列的宽度。例如,如果第一列的宽度由
\xlength
(由您选择其值...)给出,您可以tabularx
按如下方式启动环境:\begin{tabularx}{\mylength}{p{\xlength}lX}
请注意,
\xlength
现在纯粹是第一列的宽度,即,它不包括术语4\tabcolsep
。然后,稍后在此
tabularx
环境中,您可以指定两列\multicolumn
(类型为p
,如前面的示例)的宽度,如下所示:\multicolumn{2}{p{\dimexpr\mylength-\xlength-4\tabcolsep}}{<stuff>}
该术语
4\tabcolsep
是1\tabcolsep
在表格的左边,2\tabcolsep
第 1 列和第 2 列之间的空白量,以及1\tabcolsep
在桌子的右边缘。