Как кодировать таблицы с многострочными ячейками - PullRequest
55 голосов
/ 24 мая 2010

Я пытаюсь написать небольшую статью с 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 не выполняет разрывов строк и форматирования внутри ячейки. Я полагаю, мне нужно сказать, чтобы сделать это .. Но как?

Ответы [ 4 ]

73 голосов
/ 24 мая 2010

Используйте дескриптор столбца 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 голосов
/ 05 января 2016

Это ответ, который я нашел для своих нужд: Ссылка здесь .

Создает новую команду, которая сделает таблицу внутри таблицы более правильным способом:

\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

0 голосов
/ 08 февраля 2019

Как писал @aioobe в своем ответе, в этом случае можно перейти от выравнивания по левому краю

\begin{tabular}{lll}

к выравниванию по , по крайней мере, в третьем столбце, где пользовательскийперевод строки должен быть вставлен вручную:

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

После этого редактирования можно использовать команду \par (вместо \newline) для реализации переноса строки в ячейке.

Этот код:

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

производит запрошенный вывод:

screenshot of output

0 голосов
/ 15 апреля 2017

Вот ответ без причудливого кодирования. Напишите ваши строки в отдельных строках. Опустите \ hline для всех, кроме последнего ряда (строки). Он быстрый и грязный, но, эй, он работает и в любом случае дает мне именно то, что я хочу, для простых таблиц. Я делал рекламу, чтобы ездить на автомобильных ветровых стеклах. У меня есть 3 центрированных ряда в каждой клетке

iTutor Grahamstown
Mathematics Tutor
0793296211

Я хотел это в своей таблице. Я просто пропустил \ hline для первых двух строк. Несколько \ hlines и '|' облегчают нарезку распечатки.

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

Надеюсь, это поможет.

...