表格:允许溢出并将剩余的列移至下一行吗?

表格:允许溢出并将剩余的列移至下一行吗?

我有两个表格,由于空间原因,我需要将它们并排显示。表格每列的大多数条目都很短,但偶尔会有一个很长。

我想要指定表格的宽度,如果一行无法容纳该宽度,则将其分成两行。

棘手的一点是,有时单元格包含不易分解的数学运算,因此在这种情况下,我想让长数学运算超出其列的宽度,并将行的剩余列放在下面一行,这样文本就不会重叠。

这个答案这表明 tabularx 可能会有帮助,但我不确定如何让事情超越他们的专栏。

这可能吗?有没有办法将两个表并排放置并优雅地处理长行,而无需手动调整有问题的行?

下面是我有两个版本的 MWE。第一个是我开始使用的,带有小页面的表格,它们只是溢出。

第二个是大致我希望得到什么样的结果。我最想知道的是:

  1. 有没有办法可以自动实现这一点,即无需手动将内容分成多行并使用mathrlap或诸如此类?
  2. 为什么版本中有多余的垂直空间tabularx?我需要在哪里输入X布局规范才能正确地从 tabular 转换为 tabularx?

代码如下:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage{amsmath}

\usepackage{mathtools}

\begin{document}
\begin{minipage}{0.48\textwidth}
\begin{tabular}{@{}l@{}l@{\ \ }c@{\ \ }ll@{}llll@{}}
\\ & & $\mid$ & $loooooonnnnngggg$ & & $info$ & $Comment$
\\ & & $\mid$ & $info$ & & $info$ & Long long long long comment
\\ & & $\mid$ & $info$ & & $info$ & $Comment$
\end{tabular}
\end{minipage}
\begin{minipage}{0.48\textwidth}
\begin{tabular}{@{}l@{}l@{\ \ }c@{\ \ }ll@{}llll@{}}
\\ & & $\mid$ & $info$ & & $info$ & $Comment$
\\ & & $\mid$ & $info$ & & $info$ & $Comment$
\\ & & $\mid$ & $info$ & & $info$ & $Comment$
\end{tabular}
\end{minipage}

\begin{minipage}{0.48\textwidth}
\begin{tabularx}{\textwidth}{@{}l@{}l@{\ \ }c@{\ \ }ll@{}XXXX@{}}
\\ & & $\mid$ & $\mathrlap{loooooonnnnngggg}$ & &  & 
\\ & &  &  & & $info$ & $Comment$

\\ & & $\mid$ & $info$ & & $info$ & Long long long long comment
\\ & & $\mid$ & $info$ & & $info$ & $Comment$
\end{tabularx}
\end{minipage}
\begin{minipage}{0.48\textwidth}
\begin{tabular}{@{}l@{}l@{\ \ }c@{\ \ }ll@{}llll@{}}
\\ & & $\mid$ & $info$ & & $info$ & $Comment$
\\ & & $\mid$ & $info$ & & $info$ & $Comment$
\\ & & $\mid$ & $info$ & & $info$ & $Comment$
\end{tabular}
\end{minipage}

\end{document}

答案1

我删除了没有做任何事情的迷你页面,因为tabular已经是一个盒子,而.5\textwidth不是.48

\z测量其参数,如果很长则提前结束该行。

您的数据只有三列,但表格规范有九列,所以我简化了它,也许您的实际数据需要放回一些列规范。

在此处输入图片描述

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}


\usepackage{mathtools}
\makeatletter
\def\z#1{\sbox{0}{$#1$}%
  \ifdim\wd0>0.2\textwidth
     \expandafter\@firstoftwo
   \else
     \expandafter\@secondoftwo
    \fi
    {\rlap{\usebox{0}}\\\multicolumn{1}{l}{}}{\usebox{0}}}
\makeatother
\begin{document}

\noindent
\begin{tabularx}{.5\textwidth}{!{$\mid$}llX}
\z{loooooonnnnngggg} & $info$ & $Comment$\\
\z{info} & $info$ & Long long long long comment\\
\z{info} & $info$ & $Comment$
\end{tabularx}%
\begin{tabularx}{.5\textwidth}{!{$\mid$}llX}
$info$ & $info$ & $Comment$\\
$info$ & $info$ & $Comment$\\
$info$ & $info$ & $Comment$
\end{tabularx}


\end{document}

相关内容