使用 tabularx 在文档边缘拆分多列文本

使用 tabularx 在文档边缘拆分多列文本

我在用着表格型在文档边缘打破某一列的内容(参见文档边缘的表格单元格中出现换行符)。但是当我\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在桌子的右边缘。

相关内容