Hoe te wikkelen tekst in latextafels?

Ik maak een rapport in latex dat een paar tafels omvat. Ik zit vast dat mijn celgegevens in de tabel de breedte van de pagina overschrijden. Kan ik de tekst op de een of andere manier wikkelen, zodat het in de volgende regel in dezelfde cel van de tafel valt?

Is het op de een of andere manier gerelateerd aan de breedte van de tabel? Maar omdat het de breedte van de pagina overschrijdt, maakt het dan een verschil?


Antwoord 1, Autoriteit 100%

Gebruik P {WIDTH} voor uw kolomspecificaties in plaats van L / R / C.

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

Bewerken: (op basis van de opmerkingen)

\begin{table}[ht]
    \centering
    \begin{tabular}{p{0.35\linewidth} | p{0.6\linewidth}}
      Column 1  & Column2 \\ \hline
      This text will be wrapped & Some more text \\
      Some text here & This text maybe wrapped here if its tooooo long \\
    \end{tabular}
    \caption{Caption}
    \label{tab:my_label}
\end{table}

We krijgen:


Antwoord 2, Autoriteit 26%

Met de gewone tabularMILIEU, wilt u de p{width}kolomtype gebruiken, aangezien Marcog aangeeft. Maar dat dwingt u om expliciete breedtes te geven.

Een andere oplossing is de tabularxMILIEU:

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

Alle X-kolommen krijgen dezelfde breedte. U kunt dit beïnvloeden door het instellen van \hsizein de opmaakverklaring:

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

Maar dan moeten alle factoren maximaal 1 bedragen, denk ik (ik nam dit uit de latex-metgezel). Er is ook het pakket tabularydat kolombreedtes zal aanpassen aan balkhoogtes. Voor de details kunt u de documentatie voor elk pakket ontvangen met texdoc tabulary(in TexLive).


Antwoord 3, Autoriteit 9%

Een andere optie is om een ​​minipagina in elke cel in te voegen waar tekstverpakking gewenst is, b.v.:

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

Antwoord 4, Autoriteit 7%

Ik hou van de eenvoud van tabularyPAKKET:

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

In het voorbeeld rangschik je de hele breedte van de tabel ten opzichte van \textwidth. Bijvoorbeeld 0,4 ervan. Dan wordt de rest automatisch gedaan door het pakket.

De meeste voorbeelden zijn afkomstig uit http://en.wikibooks.org/wiki/LaTeX/Tables.


Antwoord 5, autoriteit 5%

Eenvoudig als een stuk CAKE!

U kunt een nieuw kolomtype definiëren, zoals (lin dit geval) terwijl de huidige uitlijning behouden(c, rof l):

\documentclass{article}
\usepackage{array}
\newcolumntype{L}{>{\centering\arraybackslash}m{3cm}}
\begin{document}
\begin{table}
    \begin{tabular}{|c|L|L|}
        \hline
        Title 1 & Title 2 & Title 3 \\
        \hline 
        one-liner & multi-line and centered & \multicolumn{1}{m{3cm}|}{multi-line piece of text to show case a multi-line and justified cell}   \\
        \hline
        apple & orange & banana \\
        \hline
        apple & orange & banana \\
        \hline
    \end{tabular}
\end{table}
\end{document}


Antwoord 6

Als u uw tekst wilt laten teruglopen maar de uitlijning wilt behouden, kunt u die cel in een minipageof varwidth-omgeving plaatsen (varwidth komt van het varwidth-pakket). Varwidth zal “zo breed zijn als de inhoud, maar niet breder dan X”. U kunt een aangepast kolomtype maken dat zich gedraagt als “p{xx}”, maar kleiner wordt zodat het past door gebruik te maken van

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

waarvoor mogelijk het pakket arraynodig is. Als u dan iets als \begin{tabular}{llM{2in}}gebruikt, zijn de eerste twee kolommen normaal links uitgelijnd en de derde kolom normaal links uitgelijnd, maar als deze breder wordt dan 2in dan wordt de tekst ingepakt.


Antwoord 7

Om de tekst ABte veranderen in A \r Bin een tabelcel, plaats je deze in de celpositie: \makecell{A \\ B}.

Voordat je dat doet, moet je ook pakket makecelltoevoegen.


Antwoord 8

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

Other episodes