如何编写带有多行单元格的表格

63

我正在尝试使用LaTeX撰写一篇短文,需要添加一个包括3列的表格。

+-------------+-----------------+--------------------------------------+
| AAAAAAAAAA  | BBBBBBBBBBBBBBB | Betty Botter Bought a Bit of Butter  |
|             |                 | but the Butter's Bitter              |
+-------------+-----------------+--------------------------------------+
| CCCCCCCC    | DDDD            | Betty Botter Thought:                |
|             |                 | If I Put This Bitter Butter in My    |
|             |                 | Batter it Will Make My Batter Bitter |
+-------------+-----------------+--------------------------------------+

很不幸,我似乎找不到正确的习语来做这件事。


我尝试过:

\begin{tabular}{lll} 
    AAAAAAAAAA  & BBBBBBBBBBBBBBB & Betty Botter Bought a Bit of Butter but 
    the Butter's Bitter  \\
    CCCCCCCC  & DDDD & Betty Botter Thought: \newline If I Put This Bitter Butter in My Batter it Will Make My Batter Bitter
 \end{tabular}

但是LaTeX在单元格内部不会进行任何换行或格式化。我猜我需要告诉它这样做...但是如何操作呢?


1
重复问题:https://dev59.com/mE3Sa4cB1Zd3GeqPuFT6(那个问题的范围更广)。 - Charles Stewart
4个回答

87
使用“p”列描述符:
更改
\begin{tabular}{lll} 

为了

\begin{tabular}{llp{5cm}}

为了明确插入换行符:
CCCCCCCC  & DDDD & \parbox{5cm}{Betty Botter Thought: \\ If I Put This Bitter Butter in My Batter it Will Make My Batter Bitter}

6
有没有一种方法可以将p{}与其他列描述符之一结合起来使用?也就是说,是否有一种方法可以指定p{5cm}列的对齐方式为左对齐、右对齐或居中对齐? - jja
作为在 p{} 内部实现右对齐的变通方法,我在每一行开头使用 \hfill。@jja - Frizi
1
可以使用 \newline 明确地插入换行符。 - Aryadegari
对于其他提问居中版本的人,请参考:https://tex.stackexchange.com/a/157400/108304 - andrew

10
这是我找到的与我的需求相关的答案:链接在此
它创建了一个新的命令,可以更加合适地将表格放在另一个表格中:
\newcommand{\specialcell}[2][c]{%
\begin{tabular}[#1]{@{}c@{}}#2\end{tabular}}

那么,如果想在单元格内进行强制换行,就像这样:

\begin{tabular}{|c|c|c|}
\hline
Foo bar & Foo <forced line break here> bar & Foo bar \\
\hline
\end{tabular}

您最终将使用以下代码:

您最终将使用以下代码:

Foo bar & \specialcell{Foo\\bar} & Foo bar \\    % vertically centered
Foo bar & \specialcell[t]{Foo\\bar} & Foo bar \\ % aligned with top rule
Foo bar & \specialcell[b]{Foo\\bar} & Foo bar \\ % aligned with bottom rule

通过将c@更改为l@r@,可以在新命令的声明中控制水平对齐。

所有功劳归功于egreg来自Tex论坛。请支持他的回答!


2
如@aioobe在他的回答中所写,在这种情况下,可以从左对齐切换。最初的回答。
\begin{tabular}{lll}

对于段落对齐,至少在第三列中必须手动插入自定义换行符:

最初的回答

\begin{tabular}{llp{.5\textwidth}}

在进行此编辑之后,您可以使用命令\par(而不是\newline)来实现单元格内的换行。

以下代码:

[Original Answer]

\documentclass{article}

\begin{document}

\begin{tabular}{llp{.5\textwidth}}
AAAAAAAAAA & BBBBBBBBBBBBBBB & Betty Botter Bought a Bit of Butter \par but the Butter's Bitter\\
CCCCCCCC & DDDD & Betty Botter Thought: \par If I Put This Bitter Butter in My \par Batter it Will Make My Batter Bitter\\
\end{tabular}

\end{document}

生成所请求的输出:

输出截图

最初的回答:


-1

这里有一个没有花哨编码的答案。将您的行写在单独的行中。除了最后一行(行)外,省略\hline。虽然它很快也很简单,但是它能够为我提供我想要的东西,特别是对于简单的表格而言。我正在制作用于汽车挡风玻璃上的广告。每个单元格中有3行居中对齐。

iTutor Grahamstown
Mathematics Tutor
0793296211

我想在我的表格中重复这个。我只是省略了前两行的 \hline。多个 \hline 和 '|' 是为了更容易地切割打印输出。

\begin{tabular}{||c||c||c||c||}
\hline\hline

iTutor Grahamstown &iTutor Grahamstown&iTutor Grahamstown &iTutor Grahamstown \\ %No \hline

Mathematics Tutor & Mathematics Tutor & Mathematics Tutor&Mathematics Tutor \\  %No \hline

0793296211 & 0793296211 & 0793296211 & 0793296211\\ \hline\hline\hline %\hline now


\end{tabular}  

我希望这可以帮助到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接