指定表格中逐列的垂直对齐方式

指定表格中逐列的垂直对齐方式

我正在创建一个非常简单的表格,其中包含三列和一行。每列的对齐方式和内容如下:

  • 第 1 列 - (H) 居中,(V) 中间,单个字符
  • 第 2 列 - (H) 左侧,(V) 顶部,多行带分隔符
  • 第 3 列 - (H)左侧,(V)顶部,换行文本字符串

这似乎是一项简单的任务。我在这里和其他地方查看了无数问题,但似乎找不到办法做到这一点。以下是我尝试过的几件事:

尝试 1

唯一需要的就是让第一列垂直居中。修改此代码是我的首选,因为它非常简单。

\documentclass{article}
\usepackage{lipsum}
\usepackage{array}

\begin{document}

\begin{tabular}{|>{\centering\arraybackslash}p{0.5in}|p{2in}|p{2in}|}
    \hline
    A &
    Line 1 \newline Line 2 \newline Line 3 \newline Line 4 &
    \lipsum*[75] \\
    \hline
\end{tabular}

\end{document}

在此处输入图片描述

第二次尝试

与上文相同,但最后一列位于 内\parbox。这样可根据需要使第一列垂直居中,但调整后的基线会导致第二列从单元格的中间位置开始。

\documentclass{article}
\usepackage{lipsum}
\usepackage{array}

\begin{document}

\begin{tabular}{|>{\centering\arraybackslash}p{0.5in}|p{2in}|p{2in}|}
    \hline
    A &
    Line 1 \newline Line 2 \newline Line 3 \newline Line 4 &
    \parbox{2in}{\lipsum*[75]} \\
    \hline      
\end{tabular}

\end{document}

在此处输入图片描述

第三次尝试

创建一个具有多行的表格并\multirow用于对齐第一列,但不允许文本在第三列换行。

\documentclass{article}
\usepackage{lipsum}
\usepackage{array}
\usepackage{multirow}

\begin{document}

\begin{tabular}{|>{\centering\arraybackslash}p{0.5in}|p{2in}|p{2in}|}
    \hline
    \multirow{4}{*}{A} & Line 1 & \multirow{4}{*}{\lipsum*[75]} \\
    & Line 2 & \\
    & Line 3 & \\
    & Line 4 & \\
    \hline  
\end{tabular}

\end{document}

在此处输入图片描述

有什么建议吗?我正在寻找一种使用额外软件包的简单方法。此代码将在相当大的规模上编译和运行服务器端,因此依赖项越少越好。

答案1

在此处输入图片描述

\documentclass{article}
\usepackage{lipsum}
\usepackage{array}

\begin{document}

\setlength\extrarowheight{2pt}

\begin{tabular}{|>{\centering\arraybackslash}m{0.5in}|c|}
    \hline
    A &
    \begin{tabular}{@{}p{2in}|p{2in}@{}}
    Line 1 \newline Line 2 \newline Line 3 \newline Line 4 &
    \lipsum*[75]
  \end{tabular} \\
    \hline
\end{tabular}

\end{document}

答案2

您可能想尝试cals以下包:

在此处输入图片描述

\documentclass{article}
\usepackage{lipsum}
\usepackage{cals}

\begin{document}

\begin{calstable}
\colwidths{{0.5in}{1.5in}{2.5in}}

% Add frame around the table
\makeatletter \def\cals@framecs@width{.4pt}\def\cals@framers@width{.4pt}

\brow
\alignC\cell{\vfil A}\alignL
\cell{Line 1 \newline Line 2 \newline Line 3 \newline Line 4}
\cell{\lipsum*[75]}
\erow
\end{calstable}

\end{document}

相关内容