![表格中表格的顶部对齐](https://linux22.com/image/475224/%E8%A1%A8%E6%A0%BC%E4%B8%AD%E8%A1%A8%E6%A0%BC%E7%9A%84%E9%A1%B6%E9%83%A8%E5%AF%B9%E9%BD%90.png)
我有两个预定义的表并想将它们粘贴到另一个表中。
如何让单元格内容在此处顶部对齐?
有办法吗尽可能简单?
\documentclass[]{article}
\usepackage{colortbl}
\usepackage{xcolor}
\begin{document}
\definecolor{mygreen}{HTML}{B9D5A5}
\setlength\arrayrulewidth{0.8125pt}% seems to be necessary
\setlength\tabcolsep{1pt}
\newcolumntype{P}{>{\centering\arraybackslash}p{3mm}}
\newcolumntype{Q}{>{\columncolor{mygreen}}P}
\def\cc{\cellcolor{mygreen}}
\def\x{\footnotesize\textsf{x}}
\def\I{\begin{tabular}{| P | P | Q |}
\multicolumn{1}{c}{L} & \multicolumn{1}{c}{M} & \multicolumn{1}{c}{R} \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
\end{tabular}
}
\def\II{\begin{tabular}{| P |}
\hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\end{tabular}
}
\begin{array} [t] { c c c }
\I & \rightarrow & \II
\end{array}
\end{document}
答案1
将箱子抬起-\height
。
\documentclass[]{article}
\usepackage{colortbl}
\usepackage{xcolor}
\begin{document}
\begin{center} % so definitions are local
\definecolor{mygreen}{HTML}{B9D5A5}
\setlength\arrayrulewidth{0.8125pt}% seems to be necessary
\setlength\tabcolsep{1pt}
\newcolumntype{P}{w{c}{3mm}}
\newcolumntype{Q}{>{\columncolor{mygreen}}P}
\newcommand\cc{\cellcolor{mygreen}}
\newcommand\x{\footnotesize\textsf{x}}
\newcommand\I{%
\begin{tabular}{| P | P | Q |}
\multicolumn{1}{c}{L} & \multicolumn{1}{c}{M} & \multicolumn{1}{c}{R} \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
\end{tabular}%
}
\newcommand\II{%
\begin{tabular}{| P |}
\hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\end{tabular}%
}
\raisebox{-\height}{\begin{tabular}{@{}cc} \I & ${}\rightarrow{}$ \end{tabular}}%
\raisebox{-\height}{\II}
\end{center}
\end{document}
请注意,列类型的定义更加简单P
。
你可能想要\x
定义
\newcommand{\x}{$\scriptstyle\times$}
而不是与\textsf{x}
。
如果你最后还是这么做了
\raisebox{\dimeval{-\height+\baselineskip}}{%
\begin{tabular}{@{}cc} \I & ${}\rightarrow{}$ \end{tabular}%
}%
\raisebox{-\height}{\II}
您将获得以下内容
答案2
由于 @cis 要求提供尽可能基本的解决方案,因此这里有一个替代方案。它使用 tikz,并且根据您的观点,它非常简单:使用 tikz 很容易直接对齐“节点”的内容。不要使用将两个数组组合成一个数组的最后一个数组环境,只需使用以下内容(我只展示了必要的更改):
% your latex header goes here, just add the next two lines:
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
% your definitions of the two tables etc goe here
\begin{tikzpicture}
\node (table1) {\I};
\node (arrow) [right=0cm of table1.east, anchor=west] {$\rightarrow$};
\node (table2) [right=0.6cm of table1.north east, anchor=north west] {\II};
\end{tikzpicture}
这也为您提供了定位物体的更多方法。
最后但同样重要的一点是,如果您决定(例如出于美观原因)要对齐表格的顶线,这也很容易实现。
答案3
这是一个使用multirow
(将箭头向下移动)的解决方案。可以使用[t]
每个 中的选项对两个堆栈进行顶部调整tabular
。[t]
最后一个选项array
不起作用,因为这些选项指定与周围文本/元素的对齐方式,而不是数组/表格内的对齐方式。
但是因为右侧框以 a 开头\hline
(这将是对齐点),而左侧框没有(因此第一行文本的基线将是对齐点),所以我\vskip0pt
在左侧框中添加了 a,使其成为对齐点。
然后我用 将箭头向下移动 5.4 行\multirow
。5.4 是通过实验发现的。
其余部分我保持不变。
\documentclass[]{article}
\usepackage{colortbl}
\usepackage{xcolor}
\usepackage{multirow}
\begin{document}
\definecolor{mygreen}{HTML}{B9D5A5}
\setlength\arrayrulewidth{0.8125pt}% seems to be necessary
\setlength\tabcolsep{1pt}
\newcolumntype{P}{>{\centering\arraybackslash}p{3mm}}
\newcolumntype{Q}{>{\columncolor{mygreen}}P}
\def\cc{\cellcolor{mygreen}}
\def\x{\footnotesize\textsf{x}}
\def\I{\begin{tabular}[t]{| P | P | Q |}
\noalign{\vskip0pt}
\multicolumn{1}{c}{L} & \multicolumn{1}{c}{M} & \multicolumn{1}{c}{R} \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
\end{tabular}
}
\def\II{\begin{tabular}[t]{| P |}
\hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\end{tabular}
}
\begin{array} { c c c }
\I & \multirow[b]{5.4}*{$\rightarrow$} & \II
\end{array}
\end{document}
答案4
我希望这对你有用。
\documentclass[]{article}
\usepackage{colortbl}
\usepackage{xcolor}
\begin{document}
\definecolor{mygreen}{HTML}{B9D5A5}
\setlength\arrayrulewidth{0.8125pt}% seems to be necessary
\setlength\tabcolsep{1pt}
\newcolumntype{P}{>{\centering\arraybackslash}p{3mm}}
\newcolumntype{Q}{>{\columncolor{mygreen}}P}
\def\cc{\cellcolor{mygreen}}
\def\x{\footnotesize\textsf{x}}
\def\I{\begin{tabular}[t]{| P | P | Q |}
\multicolumn{1}{c}{L} & \multicolumn{1}{c}{M} & \multicolumn{1}{c}{R} \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
& & \x \\ \hline
\end{tabular}
}
\def\II{\begin{tabular}[t]{| P |}
\hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\cc \\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\\ \hline
\end{tabular}
}
\begin{tabular} [t] { c c c }
\I & \parbox[t][2cm]{10pt}{\vfill $\rightarrow$} & \II
\end{tabular}
\end{document}