![高度可变的表格单元格中的垂直对齐](https://linux22.com/image/267974/%E9%AB%98%E5%BA%A6%E5%8F%AF%E5%8F%98%E7%9A%84%E8%A1%A8%E6%A0%BC%E5%8D%95%E5%85%83%E6%A0%BC%E4%B8%AD%E7%9A%84%E5%9E%82%E7%9B%B4%E5%AF%B9%E9%BD%90.png)
我有代码:
\documentclass{article}
\usepackage[a4paper]{geometry}
\usepackage{tabularx}
\usepackage{lipsum}
\begin{document}
\begin{tabularx}{\textwidth}{ | X | c | }
\hline
\lipsum[1] & top\\
\hline
\lipsum[1] & center\\
\hline
\lipsum[1] & bottom\\
\hline
\end{tabularx}
\end{document}
给出这个:
顶行已对齐顶部。我怎样才能将中间行垂直对齐到中心?并将底行垂直对齐到底部?
答案1
行“c”的垂直调整与使用说明符的列类型X的定义有关p
。
您需要m
对 进行居中调整,b
对 进行底部调整。这可以通过 来实现\multicolumn
,但必须保存线宽(我不知道有什么好的解决方案)。
以下是一个例子:
\documentclass{article}
\usepackage[a4paper]{geometry}
\usepackage{tabularx}
\usepackage{lipsum}
\begin{document}
\begin{tabularx}{\textwidth}{ | X | c | }
\hline
\lipsum*[1]\xdef\tempwidth{\the\linewidth} & top\\\hline
\multicolumn{1}{|m{\tempwidth}|}{\lipsum*[1]} & center\\\hline
\multicolumn{1}{|b{\tempwidth}|}{\lipsum*[1]} & bottom\\\hline
\end{tabularx}
\end{document}
答案2
\documentclass{article}
\usepackage[a4paper]{geometry}
\usepackage{tabularx}
\usepackage{lipsum}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{ | X | c | }
\hline
\lipsum[1] & top\\
\hline
\noindent\parbox[c]{\hsize}{\lipsum[1]} & center\\
\hline
\noindent\parbox[b]{\hsize}{\lipsum[1]} & bottom\\
\hline
\end{tabularx}
\end{document}
答案3
另一种方法是使用minipage
环境而不是tabularx
包:
\documentclass{article}
\usepackage{lipsum}
\usepackage[a4paper]{geometry}
\begin{document}
\begin{tabular}{|l|c|}
\hline
\begin{minipage}[t]{0.85\textwidth}\lipsum[1]\end{minipage} & top\\
\hline
\begin{minipage}{0.85\textwidth}\lipsum[1]\end{minipage} & center\\
\hline
\begin{minipage}[b]{0.85\textwidth}\lipsum[1]\end{minipage} & bottom\\
\hline
\end{tabular}
\end{document}
答案4
使用,您可以使用命令及其键,和{NiceTabularX}
来更改第二列单元格的垂直对齐方式。您不必更改第一列中的任何内容。nicematrix
\Block
T
v-center
B
\documentclass{article}
\usepackage[a4paper]{geometry}
\usepackage{nicematrix}
\usepackage{lipsum}
\begin{document}
\noindent
\begin{NiceTabularX}{\textwidth}{ | X | c | }
\hline
\lipsum[1] & \Block[T]{}{top} \\
\hline
\lipsum[1] & \Block[v-center]{}{center} \\
\hline
\lipsum[1] & \Block[B]{}{bottom} \\
\hline
\end{NiceTabularX}
\end{document}
事实上,使用nicematrix
,可以用稍微短一点的代码获得相同的输出:
\documentclass{article}
\usepackage[a4paper]{geometry}
\usepackage{nicematrix}
\usepackage{lipsum}
\begin{document}
\noindent
\begin{NiceTabular}{Xc}[hvlines]
\lipsum[1] & \Block[T]{}{top} \\
\lipsum[1] & \Block[v-center]{}{center} \\
\lipsum[1] & \Block[B]{}{bottom} \\
\end{NiceTabular}
\end{document}
输出是一样的。