我有两个表格,由于空间原因,我需要将它们并排显示。表格每列的大多数条目都很短,但偶尔会有一个很长。
我想要指定表格的宽度,如果一行无法容纳该宽度,则将其分成两行。
棘手的一点是,有时单元格包含不易分解的数学运算,因此在这种情况下,我想让长数学运算超出其列的宽度,并将行的剩余列放在下面一行,这样文本就不会重叠。
这个答案这表明 tabularx 可能会有帮助,但我不确定如何让事情超越他们的专栏。
这可能吗?有没有办法将两个表并排放置并优雅地处理长行,而无需手动调整有问题的行?
下面是我有两个版本的 MWE。第一个是我开始使用的,带有小页面的表格,它们只是溢出。
第二个是大致我希望得到什么样的结果。我最想知道的是:
- 有没有办法可以自动实现这一点,即无需手动将内容分成多行并使用
mathrlap
或诸如此类? - 为什么版本中有多余的垂直空间
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}