web-dev-qa-db-fra.com

Comment coder des tables avec des cellules multilignes

J'essaie d'écrire un court article avec LaTeX et j'ai besoin d'ajouter un tableau avec 3 colonnes.

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

Malheureusement, je n'arrive pas à trouver le bon idiome pour le faire.


J'ai essayé:

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

Mais LaTeX ne fait pas de sauts de ligne ni de formatage dans la cellule. Je suppose que je dois lui dire de le faire .. Mais comment?

52
lexu

Utilisez le descripteur de colonne p:

Changement

\begin{tabular}{lll} 

à

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

Pour insérer explicitement des sauts de ligne:

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

C’est la réponse que j’ai trouvée jusqu’à présent pour mes besoins: lien ici .

Il crée une nouvelle commande qui créera une table à l'intérieur d'une table d'une manière plus appropriée:

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

Donc, si vous voulez faire une ligne forcée dans une cellule comme ici:

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

Vous finirez par utiliser un code comme celui-ci:

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

L'alignement horizontal peut être contrôlé dans la déclaration de la nouvelle commande en modifiant c @ en l @ ou r @.

Tout le crédit va à egreg du forum Tex)

5
3nrique0

Comme @aioobe l'a écrit dans sa réponse, dans ce cas, on peut passer de l'alignement de gauche

\begin{tabular}{lll}

à l'alignement paragraph, au moins dans la troisième colonne où le saut de ligne personnalisé doit être inséré manuellement:

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

Après cette modification, vous pouvez utiliser la commande \par (au lieu de \newline) pour implémenter le saut de ligne dans la cellule.

Ce code:

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

produit le résultat demandé:

 screenshot of output

0
MattAllegro