代码:
\begin{table}[htb]
\begin{flushleft}
\begin{minipage}{.55\textwidth}
{\tiny{table1}\newline\newline}
\input{"/path/to/table1.txt"}
\end{minipage}
\hfill
\begin{minipage}{.4\textwidth}
{\tiny{table2}\newline\newline}
\input{"/path/to/table2.txt"}
\end{minipage}
\end{flushleft}
\end{table}
表1.txt:
{\tiny
\begin{tabularx}{\textwidth}{p{.45\textwidth}|rr}
\hline
& B1 & B2 \\
\hline
A1 & 80 & 12 \\
A2 & 1 & 2 \\
B & 1 & 5 \\
C & 3 & 1 \\
C & 3 & 1 \\
C & 3 & 1 \\
C & 3 & 1 \\
\hline
\end{tabularx}
}
表2.txt:
{\tiny
\begin{tabularx}{\textwidth}{p{.45\textwidth}|rr}
\hline
& A1 & A2 \\
\hline
A & 1 & 2 \\
B & 1 & 5 \\
C & 2 & 5 \\
D & 3 & 8 \\
\hline
\end{tabularx}
}
问题:
两个表不在同一层级,table2 的行长小于 table1 的行长,因此 table2 设置为以 table1 为中心。
如果 table1 和 table2 的行长不相等,如何将它们放在一行中?
答案1
请始终使您的代码可运行(R
例如默认情况下不是定义的列类型)但您可能希望\begin{minipage}[t]{...}
在\begin{tabularx}{<width>}[t]{...}
两种情况下它们都在顶部对齐。
尽管更简单的方法是拥有,但是根本没有[t]
minipagetabularx
和 flushleft 环境,因为它们没有做任何非常有用的事情,您可以在同一行上拥有两个表,而不必将它们包装在 minipage 中。
答案2
除了[t]
在两个minipage
声明中添加定位说明符外,还应使用\caption
命令并删除一些未使用的代码。对于tabularx
环境,请使用X
而不是p{0.45\textwidth}
。
\documentclass{article}
\usepackage{tabularx,caption}
\captionsetup{skip=0.5\baselineskip} % whitespace below caption
\begin{document}
\begin{table}[htb]
\scriptsize % Don't use "\tiny" unless you have contempt for your readers
\captionsetup{font=scriptsize}
\begin{minipage}[t]{.55\textwidth}
\caption{table1}
\begin{tabularx}{\linewidth}{@{}X|rr@{}}
\hline
& B1 & B2 \\
\hline
A1 & 80 & 12 \\
A2 & 1 & 2 \\
B & 1 & 5 \\
C & 3 & 1 \\
C & 3 & 1 \\
C & 3 & 1 \\
C & 3 & 1 \\
\hline
\end{tabularx}
\end{minipage}
\hspace{\fill} % Maximize the horizontal separation
\begin{minipage}[t]{.4\textwidth}
\caption{table2}
\begin{tabularx}{\linewidth}{@{}X|rr@{}}
\hline
& B1 & B2 \\
\hline
A1 & 80 & 12 \\
A2 & 1 & 2 \\
B & 1 & 5 \\
C & 3 & 1 \\
C & 3 & 1 \\
\hline
\end{tabularx}
\end{minipage}
\end{table}
\end{document}