高度可变的表格单元格中的垂直对齐

高度可变的表格单元格中的垂直对齐

我有代码:

\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\BlockTv-centerB

\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}

输出是一样的。

相关内容