![tabularx 单元格的垂直对齐方式](https://linux22.com/image/308581/tabularx%20%E5%8D%95%E5%85%83%E6%A0%BC%E7%9A%84%E5%9E%82%E7%9B%B4%E5%AF%B9%E9%BD%90%E6%96%B9%E5%BC%8F.png)
我有一张 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}