我正在创建一个非常简单的表格,其中包含三列和一行。每列的对齐方式和内容如下:
- 第 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}