2009-04-26 34 views
317

Estoy creando un informe en LaTeX que implica algunas tablas. Estoy atrapado en eso ya que los datos de mi celda en la tabla exceden el ancho de la página. ¿Puedo de alguna manera ajustar el texto para que caiga en la siguiente línea en la misma celda de la tabla?Cómo ajustar el texto en tablas LaTeX?

¿Está relacionado de alguna manera con el ancho de la tabla? Pero como está sobrepasando el ancho de la página, no hará la diferencia, ¿verdad?

Respuesta

344

Utilice p {width} para los especificadores de columna en lugar de l/r/c.

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

Buena solución, pero pierde el '|' si no quieres un borde alrededor de la mesa. Entonces se convertiría en '\ begin {tabular} {p {1cm} p {3cm}}' – Andrejas

+62

¿Hay alguna manera de hacerlo mientras se sigue especificando la alineación en cada celda? –

+5

¡Encontré una forma de especificar la alineación en cada celda! Crea una macro! \ newcolumntype {L} {> {\ centering \ arraybackslash} m {.8 cm}} \ begin {table *} [t] % \ pequeña \ caption {Comparación} \ centrado % \ begin {tabular} {| l | L | L | L | L | L | L | L | L | L | L | L | L |} – Veridian

115

Con el ambiente regular tabular, que desea utilizar el tipo de p{width} columna, como se indica marcog. Pero eso te obliga a dar anchos explícitos.

Otra solución es el entorno 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} 

columnas Todos x obtienen la misma anchura. Puede influir esto estableciendo \hsize en la declaración formato:

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

pero entonces todos los factores tienen que resumir a 1, supongo (Tomé esto desde el compañero de látex). También está el paquete tabulary que ajustará el ancho de las columnas para equilibrar las alturas de las filas. Para más detalles, puede obtener la documentación de cada paquete con texdoc tabulary (en TeXlive).

+3

Interesante, que se ve muy útil. ¿Qué tan inteligente es cuando se trata de seleccionar anchos de columna? Por ejemplo, si tiene dos columnas que deben ser envueltas pero una con texto mucho más largo que la otra, ¿todavía les asigna el mismo ancho? – marcog

+2

Edité mi respuesta. Pero en la práctica trato de simplificar mis tablas, de modo que solo necesito X para una sola columna. Acabo de descubrir tabulary :) –

39

Otra opción es insertar un minipágina en cada celda donde se desea el ajuste de texto, por ejemplo:

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

Gracias, esto me permitió colocar listas 'itemize' en mis celdas. –

5

Si desea envolver su texto, sino mantener la alineación luego se puede envolver esa célula en un minipage o varwidth entorno (varwidth viene del paquete varwidth). Varwidth será "tan ancho como su contenido pero no más ancho que X". Se puede crear un tipo de columna a medida que actúa como "p {xx}", pero se encoge para ajustarse utilizando

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

que puede requerir el paquete array. Luego, cuando utilizas algo como \begin{tabular}{llM{2in}}, las dos primeras columnas se alinean a la izquierda y la tercera columna se alinea a la izquierda, pero si se ensancha más de 2 pulgadas, el texto se cerrará.

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

me gusta la simplicidad de tabulary paquete:

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

En el ejemplo, a organizar todo el ancho de la tabla con respecto a \ textwidth. Por ejemplo, 0.4 de ella. Luego, el resto se completa automáticamente con el paquete.

La mayor parte del ejemplo está tomado de http://en.wikibooks.org/wiki/LaTeX/Tables.

+0

gracias :) esto se adapta bien a las tablas basadas en texto. – sb32134

Cuestiones relacionadas