tabularx 单元格的垂直对齐方式

tabularx 单元格的垂直对齐方式

我有一张 tabularx 表,其中包含:

  • 左侧可变宽度的 X 列
  • 右侧有嵌套表格的单元格

就像这样:

\begin{tabularx}{\textwidth}{ | X | c | }
\lipsum[1-1]
&
\begin{tabular}{rl}
test&test\\
test&test\\
test&test\\
test&test\\
test&test\\
test&test\\
\end{tabular}
\end{tabularx}

现在我遇到的问题是,由于某种原因,它看起来像这样:

在此处输入图片描述

我希望它看起来像这样:

正确的

我该怎么办?

答案1

您正在将段落的顶行与表格的中心对齐。

使用

\begin{tabular}[t] 

这样表格的顶行将作为对齐点,然后与第一列段落的顶行对齐。

答案2

如果您使用包,您可以使用更简单的语法来实现这一点makecell,该包允许使用\makecell命令引入的通用格式、垂直/水平对齐和单元格换行符。一个小补丁允许将单元格的垂直和水平对齐作为可选参数(默认为cc- 垂直和水平居中)。此外,它还可以提供一些单元格的垂直填充:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{array, tabularx}
\usepackage{makecell}
\setcellgapes{3pt}
\let\oldmakecell\makecell
\renewcommand\makecell[2][cc]{\renewcommand\cellalign{#1}\oldmakecell{#2}}
\usepackage{lipsum} 

\begin{document}

\begin{table}[h]
\makegapedcells
\begin{tabularx}{\textwidth}{ | X | rl | }
\lipsum[1-1]\leavevmode\vspace*{-\baselineskip}
& \makecell[tr]{test\\test\\test\\test\\test\\tests}
& \makecell[tl]{test\\test\\test\\test\\test\\tests}\\
\end{tabularx}
\end{table}

\end{document} 

在此处输入图片描述

答案3

我认为您需要对代码做两处调整:

  • 首先,正如 David Carlisle 所指出的,您需要将[t]位置说明符添加到内部tabular环境中。

  • 其次,您需要删除内部环境周围的多余空格tabular——请记住,c外部tabularx环境的列类型已经提供了空格(数量为\tabcolsep)。无需重复。我建议您插入@{}指令以防止插入多余的空格。

总结一下,内部tabular环境应该设置如下:

\begin{tabular}[t]{@{} rl @{}}

在此处输入图片描述

\documentclass{article}
\usepackage{tabularx,lipsum}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{ | X | c | }
\lipsum*[1]
&
\begin{tabular}[t]{@{} rl @{}}
test&test\\
test&test\\
test&test\\
test&test\\
test&test\\
test&test\\
\end{tabular}
\end{tabularx}
\end{document}

相关内容