Comment envelopper le texte dans les tables LaTeX?

Je crée un rapport dans LaTeX qui implique quelques tables. Je suis coincé sur cela car mes données de cellule dans la table dépassent la largeur de la page. Puis-je en quelque sorte envelopper le texte pour qu’il entre dans la ligne suivante dans la même cellule de la table?

Est-ce en quelque sorte lié à la largeur de la table? Mais comme il dépasse la largeur de la page, cela ne changera rien, n’est-ce pas?

Utilisez p {width} pour vos spécificateurs de colonne au lieu de l / r / c.

\begin{tabular}{|p{1cm}|p{3cm}|} This text will be wrapped & Some more text \\ \end{tabular} 

Avec l’environnement tabular normal, vous souhaitez utiliser le type de colonne p{width} , comme l’indique marcog. Mais cela vous oblige à donner des largeurs explicites.

Une autre solution est l’environnement tabularx :

 \usepackage{tabularx} ... \begin{tabularx}{\linewidth}{ r X } right-aligned foo & long long line of blah blah that will wrap when the table fills the column width\\ \end{tabularx} 

Toutes les colonnes X ont la même largeur. Vous pouvez influencer ceci en définissant \hsize dans la déclaration de format:

 >{\setlength\hsize{.5\hsize}} X >{\setlength\hsize{1.5\hsize}} X 

mais alors tous les facteurs doivent se résumer à 1, je suppose (j’ai pris cela du compagnon LaTeX). Il y a aussi la liste des paquets qui ajustera la largeur des colonnes pour équilibrer les hauteurs de rangée. Pour les détails, vous pouvez obtenir la documentation de chaque paquet avec texdoc tabulary (dans TeXlive).

Une autre option consiste à insérer une minipage dans chaque cellule où l’enveloppe de texte est souhaitée, par exemple:

 \begin{table}[H] \begin{tabular}{l} \begin{minipage}[t]{0.8\columnwidth}% a very long line a very long line a very long line a very long line a very long line a very long line a very long line a very long line a very long line a very long line a very long line % \end{minipage}\tabularnewline \end{tabular} \end{table} 

J’aime la simplicité du forfait tabulary :

 \usepackage{tabulary} ... \begin{tabulary}{\linewidth}{LCL} \hline Short sentences & \# & Long sentences \\ \hline This is short. & 173 & This is much loooooooonger, because there are many more words. \\ This is not shorter. & 317 & This is still loooooooonger, because there are many more words. \\ \hline \end{tabulary} 

Dans l’exemple, vous organisez toute la largeur de la table en fonction de \ textwidth. Par exemple 0,4. Ensuite, le rest est automatiquement effectué par le package.

La plupart de l’exemple est tiré de http://en.wikibooks.org/wiki/LaTeX/Tables .

Si vous voulez envelopper votre texte tout en conservant l’alignement, vous pouvez envelopper cette cellule dans un environnement minipage ou varwidth (varwidth provient du package varwidth). Varwidth sera “aussi large que son contenu mais pas plus large que X”. Vous pouvez créer un type de colonne personnalisé qui se comporte comme “p {xx}”, mais réduit à sa taille en utilisant

 \newcolumntype{M}[1]{>{\begin{varwidth}[t]{#1}}l<{\end{varwidth}}} 

qui peut nécessiter le package de array . Ensuite, lorsque vous utilisez quelque chose comme \begin{tabular}{llM{2in}} les deux premières colonnes seront alignées à gauche et la troisième colonne sera alignée à gauche, mais si elle est plus large que 2in, le texte sera encapsulé.

 \begin{table} \caption{ Example of force text wrap} \begin{center} \begin{tabular}{|c|c|} \hline cell 1 & cell 2 \\ \hline cell 3 & cell 4 & & very big line that needs to be wrap. \\ \hline cell 5 & cell 6 \\ \hline \end{tabular} \label{table:example} \end{center} \end{table}