作为更大显示的一部分,我将两个表格环境放在一起,一个在另一个之上。这两个环境将出现在更大表格的一列中,我希望这两个环境具有相同的宽度。我宁愿不使用tabular*
,因为我不想猜测宽度并随着内容的变化不断调整它。
我尝试将它们设置为单个tabular
,但这样两列就太宽了,导致总数太宽,阅读起来不愉快。换句话说,它不会让两个表共享第一列,因为该列太宽,第一个表无法阅读。它们也不能共享第二列,因为第二个表实际上没有空间容纳该宽度的第二列。
然而,如果他们有相同的全部的宽度,一切都应该看起来不错。但我不知道如何找到总宽度,除了玩猜谜游戏tabular*
和明确的宽度。
有没有办法改变以下 MWE,以便将第二个表格设置为第一个表格的宽度?(使用合适的\extracolsep
)。
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\thispagestyle{empty}
\begin{center}
\begin{tabular}[t]{@{}l@{}}
\begin{tabular}{@{}ll@{}}
\multicolumn2{c}{(a) Names}\\[\medskipamount]
\toprule
$x, f$&Name of a variable (or function)\\
$X$& Name of a module\\
$K$& Name of a value constructor\\
$t$& Name of a type\\
$T$& Name of a module type\\
\bottomrule
\end{tabular}
\\
\begin{tabular}{@{}ll@{}}
\strut\\
\multicolumn2{c}{(b) Declarations in the theory}\\[\medskipamount]
\toprule
\mbox{(abstype $t$)}&$t :: *$ or $t :: * \mathrel @ \pi$\\
\mbox{(type $t$ $\tau$)}&$t = \tau$\\
\mbox{(val $x$ $\tau$)}&$x : \tau$\\
\bottomrule
\end{tabular}
\end{tabular}
\end{center}
\end{document}
答案1
我将在外部(主要)中设置标题和规则,tabular
并使用两个内部来tabular
存储实际数据:
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{@{} l @{}}
\multicolumn{1}{@{} c @{}}{(a) Names} \\[\medskipamount]
\toprule
\begin{tabular}{@{} l l @{}}
$x, f$ & Name of a variable (or function) \\
$X$ & Name of a module \\
$K$ & Name of a value constructor \\
$t$ & Name of a type \\
$T$ & Name of a module type
\end{tabular} \\
\bottomrule \\[\dimexpr-\normalbaselineskip+\bigskipamount]
\multicolumn{1}{@{} c @{}}{(b) Declarations in the theory} \\[\medskipamount]
\toprule
\begin{tabular}{@{} l l @{}}
(abstype $t$) & $t :: *$ or $t :: * \mathrel{@} \pi$ \\
(type $t$ $\tau$) & $t = \tau$ \\
(val $x$ $\tau$) & $x : \tau$
\end{tabular} \\
\bottomrule
\end{tabular}
\end{document}
答案2
修订版:在这里,没有 tabular*
。
我采用了 OP 的 MWE,并将较大宽度的tabular
部分放在其自己的子部分中tabular
,用来\multicolumn
放置它。
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\thispagestyle{empty}
\begin{center}
\begin{tabular}[t]{@{}l@{}}
\begin{tabular}{@{}ll@{}}
\multicolumn2{c}{(a) Names}\\[\medskipamount]
\toprule
\multicolumn2{@{}c@{}}{\begin{tabular}{@{}ll@{}}
$x, f$&Name of a variable (or function)\\
$X$& Name of a module\\
$K$& Name of a value constructor\\
$t$& Name of a type\\
$T$& Name of a module type\\
\end{tabular}}\\
\bottomrule
\strut\\
\multicolumn2{c}{(b) Declarations in the theory}\\[\medskipamount]
\toprule
\mbox{(abstype $t$)}&$t :: *$ or $t :: * \mathrel @ \pi$\\
\mbox{(type $t$ $\tau$)}&$t = \tau$\\
\mbox{(val $x$ $\tau$)}&$x : \tau$\\
\bottomrule
\end{tabular}
\end{tabular}
\end{center}
\end{document}
答案3
使用嵌套表格:
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\thispagestyle{empty}
\begin{center}
\begin{tabular}{@{}ll@{}}
\multicolumn2{c}{(a) Names}\\[\medskipamount]
\toprule
$x, f$&Name of a variable (or function)\\
$X$& Name of a module\\
$K$& Name of a value constructor\\
$t$& Name of a type\\
$T$& Name of a module type\\
\bottomrule
\strut\\
\multicolumn2{c}{(b) Declarations in the theory}\\[\medskipamount]
\toprule
\multicolumn{2}{@{}l@{}}{\begin{tabular}{@{}ll@{}}
\mbox{(abstype $t$)}&$t :: *$ or $t :: * \mathrel @ \pi$\\
\mbox{(type $t$ $\tau$)}&$t = \tau$\\
\mbox{(val $x$ $\tau$)}&$x : \tau$\\
\end{tabular}}\\
\bottomrule
\end{tabular}
\end{center}
\end{document}