it-swarm.dev

Jak kodować tabele za pomocą komórek wieloliniowych

Próbuję napisać krótki artykuł za pomocą LaTeX i muszę dodać tabelę z 3 kolumnami.

+-------------+-----------------+--------------------------------------+
| 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 |
+-------------+-----------------+--------------------------------------+

Niestety nie mogę znaleźć właściwego idiomu, aby to zrobić.


Próbowałem:

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

Ale LaTeX nie wykonuje żadnych podziałów linii ani formatowania wewnątrz komórki. Zakładam, że muszę to powiedzieć, żeby to zrobić. Ale jak?

52
lexu

Użyj deskryptora kolumny p:

Zmiana

\begin{tabular}{lll} 

do

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

Aby jawnie wstawiać podziały wierszy:

CCCCCCCC  & DDDD & \parbox{5cm}{Betty Botter Thought: \\ If I Put This Bitter Butter in My Batter it Will Make My Batter Bitter}
70
aioobe

Oto odpowiedź, którą do tej pory znalazłem dla moich potrzeb: Link tutaj .

Tworzy nowe polecenie, które sprawi, że stół znajdzie się w tabeli w bardziej odpowiedni sposób:

\newcommand{\specialcell}[2][c]{%
\begin{tabular}[#1]{@{}[email protected]{}}#2\end{tabular}}

Jeśli chcesz zrobić wymuszone przerwanie linii w komórce, jak tutaj:

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

W końcu użyjesz takiego kodu:

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

Wyrównanie w poziomie można kontrolować w deklaracji nowego polecenia, zmieniając c @ na l @ lub r @

Wszystkie kredyty są przekazywane do egreg z forum Tex

5
3nrique0

Jak napisał @aioobe w swojej odpowiedzi, w tym przypadku można przełączyć się z lewego wyrównania

\begin{tabular}{lll}

do wyrównania paragraph, przynajmniej w trzeciej kolumnie, w której niestandardowy podział linii musi być wstawiony ręcznie:

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

Po tej edycji można użyć polecenia \par (zamiast \newline), aby zaimplementować podział na komórki.

Ten kod:

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

generuje żądane wyjście:

 screenshot of output

0
MattAllegro