Inicio > Latex > Alineación vertical de texto e imágenes en tablas LaTeX

Alineación vertical de texto e imágenes en tablas LaTeX

Jueves, 3 de abril de 2008 Dejar un comentario Ir a comentarios

Lyon Latex

Esta entrada es una de estas reseñas que me gusta publicar de vez en cuando de cosas con las que la gente pierde muchísimo tiempo. En esta ocasión me he estado peleando un buen rato intentando alinear de forma correcta el texto que aparecía en una tabla donde también insertaba imágenes. La solución ha sido jugar con las alineaciones de las celdas. Como muchos sabréis, la sintaxis para la creación de tablas con el paquete tabular es la siguiente:

\begin{tabular}[pos]{cols}
columna 1 & columna 2 ... & columna n \\
...
..
\end{tabular}

El campo cols es el que nos interesa y podemos especificar en él los siguientes valores (entre otros):

  • l – Alineación de objetos a la izquierda (Horizontal)
  • r – Alineación de objetos a la derecha (Horizontal)
  • c – Alineación de objetos al centro (Horizontal)
  • p{ancho} – Párrafo con texto alineado arriba (Vertical)
  • m{ancho} – Párrafo con texto alineado en el medio (Vertical)
  • b{ancho} – Párrafo con texto alineado abajo (Vertical)

Pues bien, mi duda era colocar imágenes y texto de la siguiente forma:

Alineación de imágenes y tablas en Latex

Y para ello lo que hay que hacer es colocar las dos columnas (tanto la que contiene las imágenes como la de texto) con el parámetro m. Si lo haces solo en una columna no funcionará. Aquí os pongo el código en cuestión:

\begin{table}[!h]
\begin{tabular}{m{2cm}m{12cm}}
\multicolumn{2}{l}{Usted es libre de:} \\[0.5cm]
\includegraphics{imagenes/licencia/share.png} & copiar, distribuir y comunicar públicamente la obra \\
\includegraphics{imagenes/licencia/remix.png} & hacer obras derivadas \\
\end{tabular}
\end{table}

Por último hay que mencionar que es necesario utilizar el paquete array por lo que tenemos que escribir antes del \begin{document} lo siguiente:

\usepackage{array}
GD Star Rating
loading...
Alineación vertical de texto e imágenes en tablas LaTeX, 9.2 out of 10 based on 14 ratings
Share
Categories: Latex Tags: , ,
  1. Jordi
    Domingo, 20 de abril de 2008 a las 13:41 | #1
    GD Star Rating
    loading...

    Buenas,

    es exactamente lo que quiero hacer yo, pero no lo puedo hacer… :( He copiado exactamente tu código y cuando voy a compilar me dice…

    !LaTeX Error: Illegal character in array arg.
    See the LaTeX manual or LaTeX Companion for explanation.

    …..

    1.53 \begin{tabular}{m{2cm}m{12cm}}

    El error es por el parámetro m, que no me lo acepta. Si lo cambio por un “l” “c” o “r” me deja compilar, pero después no obtengo los resultados deseados. Alguna idea???

    Gracias

  2. Domingo, 20 de abril de 2008 a las 13:54 | #2
    GD Star Rating
    loading...

    Jumm nunca he visto ese error, ¿usas la distribución texlive o tetex?. Te dejo a continuación los paquetes que suelo incluir en todos los documentos por si te ayuda, quizás ese parámetro esté definido en alguno de estos paquetes. Si eso dime si consigues solucionar el problema o no e intento echarte una mano ;).

    \documentclass[12pt,a4paper,spanish]{article}
    \usepackage{geometry}
    \geometry{vmargin={2.5cm,3cm}} %Márgenes
    \usepackage[spanish]{babel} % Para separar correctamente las palabras de multitud de idiomas
    \usepackage[utf8]{inputenc} %Este paquete permite poner acentos directamente y eñes
    \usepackage[T1]{fontenc}
    \usepackage{indentfirst} %Espaciado de primera lnea de cada párrafo
    \usepackage{graphicx} %Para gestionar imagenes JPG
    \usepackage{float}
    \usepackage{fancyhdr}
    \usepackage{graphicx}
    \usepackage[pdftex=true,colorlinks=true,linkcolor=red,hyperfigures=true,citecolor=green,urlcolor=red,plainpages=false]{hyperref}
    \usepackage{multirow}
    \usepackage{colortbl}
    \usepackage{amsmath}
    \usepackage{listings}
    \usepackage{titlesec}
    \usepackage{longtable}
    \usepackage{array}
    \usepackage[spanish,plain]{flexbib}

  3. Jordi
    Domingo, 20 de abril de 2008 a las 15:12 | #3
    GD Star Rating
    loading...

    Ieee, muchas gracias. Me faltaba el paquete “array”, ahora funciona al 100 % muchísimas gracias.

  4. Domingo, 20 de abril de 2008 a las 16:11 | #4
    GD Star Rating
    loading...

    Me alegro :-D. Ahora que recuerdo incluí ese paquete porque cuando creaba tablas con el editor de kile me introducía un comentario en el que me indicaba que metiese ese paquete ;).

  5. Nestor
    Viernes, 25 de abril de 2008 a las 13:18 | #5
    GD Star Rating
    loading...

    Una preguntilla… ¿y si quiero alinear al mismo tiempo verticalmente y horizontalmente una misma columna?

  6. Viernes, 25 de abril de 2008 a las 15:51 | #6
    GD Star Rating
    loading...

    Hola Nestor. Una vez que utilizas el caracter “m” para que te centre verticalmente, dentro de una celda puedes usar el comando \centering para centrar el párrafo o creo que incluso puedes meter los que quieras entre \begin{center} \end{center}.

  7. litux1516
    Lunes, 5 de mayo de 2008 a las 21:42 | #7
    GD Star Rating
    loading...

    Mil gracias por el aporte, era justo lo que necesitaba y estoy muy corto de tiempo.

  8. hdon
    Martes, 14 de octubre de 2008 a las 21:13 | #8
    GD Star Rating
    loading...

    Gracias.. ya pude hacer lo que queria!!! Alinear o alineacion horizontal de texto con una imagen!!! y ademas centrar el texto en el espacio que queda:

    %———————————————-
    \documentclass{article}
    \usepackage{graphicx}
    \usepackage{array}

    \begin{document}

    %\begin{table}[htdp]
    \begin{center}
    \begin{tabular}{m{4cm}b{12cm}}
    \includegraphics[width=4cm]{./logouam.png} & \multicolumn{1}{m{12cm}}{
    \begin{center}
    ARQUITECTURA DE COMPUTADORAS\\
    \vspace{1em}
    \small{
    \sc{profesor}\\
    Nombre Misterioso X\\
    \vspace{1em}
    \sc{alumno}\\
    Nombre Misterioso Y\\
    \vspace{1em}
    Proyecto: Tarea 2\\
    Fecha de entrega: 10 de Octubre de 2008
    }
    \end{center}
    }
    \end{tabular}
    \end{center}
    %\end{table}

    \end{document}

    %———————————————-

  9. Nicolas
    Miércoles, 12 de noviembre de 2008 a las 03:06 | #9
    GD Star Rating
    loading...

    Gracias, llevaba tiempo con ese problema.!!

  10. Nicolas
    Miércoles, 12 de noviembre de 2008 a las 03:10 | #10
    GD Star Rating
    loading...

    se me olvidaba, utilice \usepackage{array} por sin el la primera vez q lo intente no salio.

  11. Miércoles, 12 de noviembre de 2008 a las 15:51 | #11
    GD Star Rating
    loading...

    Me alegro de haberos ayudado ;). Efectivamente Nicolás, a otra persona le pasó lo mismo y ya comentó que le faltaba ese paquete. Voy a editar la entrada para indicarlo.

    Saludos!

  12. Flor
    Miércoles, 17 de diciembre de 2008 a las 02:32 | #12
    GD Star Rating
    loading...

    Hola!
    Yo quiero una tabla donde la primera fila es texto y el resto son ecuaciones. Ya logré ampliar el espacio entre renglones usando \renewcommand{\arraystretch}{1.5}, pero las fracciones las sigue dejando muy pequeñas y no me gusta como se ve. He intentado con entornos definidos en amsmath (gather, align) que me han sido útiles en otras ocasiones, pero sale error! He probado con array y tabular, pero nada… :-(

  13. Miércoles, 17 de diciembre de 2008 a las 07:41 | #13
    GD Star Rating
    loading...

    Hola Flor, y esa tabla ¿con cuantas columnas contaría? A ver si puedo echarte un cable

  14. Flor
    Jueves, 18 de diciembre de 2008 a las 01:04 | #14
    GD Star Rating
    loading...

    Hola, son sólo 2 columnas, con una línea entre ellas. Te agradezco mucho, pero ya encontré como solucionarlo. Me enteré de la existencia de un \dfrac{}{} con el que se puede sustituir \frac{}{}, y entonces las fracciones ya quedan bien! :o

    MUCHAS GRACIAS DE TODAS FORMAS!
    Salu2!

  15. Martes, 13 de enero de 2009 a las 07:08 | #15
    GD Star Rating
    loading...

    Hola,
    buen tutorial!…pero tengo un problema, cuando compilo, el documento final , tanto el dvi como el pdf, me sale con la primera hoja en blanco y en la segunda hoja aparece la portada.
    No se a que se debra eso, ya que anteriormente habia hecho un documento parecido(report) y la primera hoja era la portada.y uso el mismo codigo.
    No se que hacer, me podrias ayudar por favor?

    Te dejo el codigo de la cabecera, donde se ponen los usepackage y la parte de la portada :
    %\documentclass[a4paper,10pt]{report}
    %\documentclass[a4paper,10pt]{report}
    \documentclass[12pt,a4paper,spanish]{report}
    \usepackage[dvips]{graphicx}
    \usepackage{subfigure}
    \usepackage[spanish]{babel}
    %\usepackage[latin1]{inputenc}
    \usepackage{array}
    \usepackage[
    dvips=true,
    dvipdfm=true,
    dvipdfmx=true,
    %pdftex=true, --esto cuando compilo directo a pdflatex
    colorlinks=true,linkcolor=black,urlcolor=black,%quitando molesta caja roja
    bookmarks=true,
    bookmarksopen=true,
    pdftitle={ERS},
    pdfsubject={ERS},
    pdfauthor={NEOSOFT - DSOFT CicloII - Cenfotec}
    ]{hyperref}

    % Title Page
    \title{\Huge ERS – PROYECTO SSMS\\[5cm]\textit{Especificaciones de Requerimientos de Software}\\[5cm]}
    \author{\Huge NEOSOFOT\\[1cm]DSOFT – Ciclo II\\[1cm]\huge Cenfotec}

  16. Martes, 13 de enero de 2009 a las 07:26 | #16
    GD Star Rating
    loading...

    jeje, yo otra vez…..ya solucione el problema.
    era que le doy demasiado:[5cm] en title.
    Le di [3cm] y problema resuelto.
    por si a alguien mas le sirve, tendra que ser un newbie como yo…

  17. christopher
    Jueves, 28 de mayo de 2009 a las 03:40 | #17
    GD Star Rating
    loading...

    Hola amigo gracias por el how to

    tengo un problema, me resulto lo que dijiste anteriormente, pero lo que no he podido lograr es dejar la imagen abajo de un cuadro de texto, ¿se entiende?, como puedo lograr esto?.

    un cuadro de texto arriba de la imagen

  18. Lore
    Sábado, 6 de junio de 2009 a las 03:03 | #18
    GD Star Rating
    loading...

    quisiera q mi abstract salga en el medio de la hoja y el resto del texto en dos columnas, como puedo hacerlo, jejej gracias =)

  19. Sábado, 6 de junio de 2009 a las 20:05 | #19
    GD Star Rating
    loading...

    Hola Lore, supongo que me estás hablando de hacer un artículo para una revista especializada. Existen algunas revistas que suministran una plantilla a partir de la cual puedes crear un artículo de forma muy sencilla, y que ya vienen preparadas para que no tengas que pelearte con ese tipo de detalles. Te recomiendo que le eches un vistazo a esta de Elsevier:
    http://www.elsevier.com/wps/find/authorsview.authors/elsarticle

  20. Lore
    Domingo, 7 de junio de 2009 a las 03:15 | #20
    GD Star Rating
    loading...

    si, masomenos, pero es q cuando intento compilar el documento, salen una serie de errores, pensaba crearla yo misma, igual a la anterior, pero paso a paso para ver en que fallaba
    Gracias de todas formas =) creo q seria muy util tambien darle una miradita a la página =) gracias =)

  21. Lore
    Jueves, 18 de junio de 2009 a las 03:20 | #21
    GD Star Rating
    loading...

    umm jeje
    podrian decirme, como puedo poner el texto en dos columnas en medio del texto general nose algo como

    111111111111111111111111111111111111111111111111111
    111111111111111111111111111111111111111111111111111

    11111111111111111111 11111111111111111111
    11111111111111111111 11111111111111111111
    11111111111111111111 11111111111111111111
    11111111111111111111 11111111111111111111

    111111111111111111111111111111111111111111111111111
    111111111111111111111111111111111111111111111111111

    como podria ponerlo ? =) gracias

  22. Lore
    Jueves, 18 de junio de 2009 a las 03:24 | #22
    GD Star Rating
    loading...

    111111111111111111111111111111111111111111111111111
    111111111111111111111111111111111111111111111111111

    11111111111111111111espacio11111111111111111111
    11111111111111111111espacio11111111111111111111
    11111111111111111111espacio11111111111111111111
    11111111111111111111espacio11111111111111111111

    111111111111111111111111111111111111111111111111111
    111111111111111111111111111111111111111111111111111

  23. Jueves, 18 de junio de 2009 a las 07:30 | #23
    GD Star Rating
    loading...

    Hola Lore, menuda maraña de “l” has puesto jeje. En esta página te explican como se hace lo que estás buscando, pero está en inglés: http://physical-thought.blogspot.com/2008/09/two-column-layouts-in-latex.html.

    Básicamente tienes que incluir el paquete:
    \usepackage{multicol}

    y después utilizar el entorno:
    \begin{multicols}{2}
    TEXTO….
    \end{multicols}

  24. Lore
    Jueves, 18 de junio de 2009 a las 23:23 | #24
    GD Star Rating
    loading...

    jeje si lo siento jejeje

    Si lo hice, pero al ponerle esto, cambia todo el documento en dos columnas, incluido el título, io solo quiero una parte, pero no se xq lo convierte todo

  25. Viernes, 19 de junio de 2009 a las 06:54 | #25
    GD Star Rating
    loading...

    Lore pues a mi me funcionó correctamente, lo probé con una página escriba normal y otra a doble columna y no tuve problema. Si quieres mandame el código que has escrito a mi correo (piponazo@plagatux.es) y te intento echar una mano ;)

  26. Lore
    Viernes, 19 de junio de 2009 a las 23:46 | #26
    GD Star Rating
    loading...

    Ok =)

  27. Jose
    Lunes, 22 de junio de 2009 a las 02:15 | #27
    GD Star Rating
    loading...

    Hola,
    Yo he visitado tu pagina varias veces, por lo de LaTeX.
    Bueno, he hecho una pequeña aplicación, para que genbere el codigo de una tabla.Esta hecha un poco a la carrera, es como ejemplo de lo queestoy aprendiendo, quizas mas adelante tenga tiempo para dedicarme a hacer algo mas decente jeje.Pero por lo menos a alguien ha de servirle.Se necesita el framework 3.5 de .net.
    Este es mi blog(mis apuntes, mi cuaderno de programador):
    http://moleskinformatico.blogspot.com/
    (esto no es spam, solo a ver si a alguien le sirve, ya que yo me servi de esta pagina).

  28. Lunes, 22 de junio de 2009 a las 07:20 | #28
    GD Star Rating
    loading...

    Hola Jose, gracias por la contribución ;)

  29. Lore
    Miércoles, 24 de junio de 2009 a las 07:46 | #29
    GD Star Rating
    loading...

    una ayudita si? =)
    quiero poner una imagen, pero.
    Mi articulo esta en dos columnas, quiero poner una imagen en uno de las columnas, pero quiero q aparezca a la izquerda de la columna, y que el resto del texto salga a lado de la figura, y debajo tambien como podría hacer eso? ?

  30. Miércoles, 24 de junio de 2009 a las 08:06 | #30
    GD Star Rating
    loading...

    Lore te invito a que me escribas directamente a mi correo (piponazo@plagatux.es) para resolver cuestiones que no están relacionadas con las entradas del blog.

    De todos modos ya te contesto. Para insertar una imagen en una columna, en un documento a dos columnas tienes que utilizar el entorno “figure*”

    \begin{figure*}

    \end{figure*}

  31. amictlan
    Jueves, 30 de julio de 2009 a las 21:58 | #31
    GD Star Rating
    loading...

    hola.
    No se si esté directamente relacionado con este post, pero es el que vi mas cercano. El problema es el siguiente: tengo una tabla con 3 columnas y muchas filas, pero por el espaciado entre filas hace que la tabla rebace la pagina cortando los datos. La idea es que esa tabla debe quedar en una sola pagina, pero por más que he buscado y probado no he encontrado la forma de cambiar sólo el interlineado de la tabla sin afectar el resto del documento (como sucede cuando se modificala configuracion del interlineado en el preámbulo del documento).

    Gracias de antemano. Te felicito pues he visitado anteriormente tu blog y he encontrado cosas muy interesantes.

  32. amictlan
    Jueves, 30 de julio de 2009 a las 21:59 | #32
    GD Star Rating
    loading...

    espero pudieras ayudarme u orientarme. Gracias de nuevo

  33. Jueves, 30 de julio de 2009 a las 23:40 | #33
    GD Star Rating
    loading...

    Hola amictlan! Gracias por tu comentario ;).

    La verdad es no se si se puede hacer eso que comentas con el interlineado, pero tienes otra alternativa que es usar el paquete longtable. Con dicho paquete puedes escribir tablas de forma prácticamente igual que las tablas normales, pero con la peculiaridad de que estas automáticamente se dividen en las páginas que haga falta. A mi me ha salvado muchas veces el pellejo ese paquete para hacer documentaciones de bases de datos, atributos de entidades, etc.

  34. Sábado, 22 de agosto de 2009 a las 18:37 | #34
    GD Star Rating
    loading...

    una preguntita, al principio ya en el archivo compilado me sale despues de el indice general una hoja en blanco, como hago para que no me salga esa hoja en blanco???

  35. Lunes, 14 de febrero de 2011 a las 22:10 | #35
    GD Star Rating
    loading...

    Oiep, muchas gracias. Me ha sido muy útil!

  36. javalina
    Miércoles, 26 de octubre de 2011 a las 21:06 | #36
    GD Star Rating
    loading...

    Hola tengo un problema con la ubicación de las tablas. Cuando muestra una tabla me la muestra en la siguiente página o en medio de una hoja. Si una tabla no cupe, entonces se va la siguiente hoja y la coloca entera y la hoja anterior se queda en blanco. Solo quiero que aparezca una a continuación de otra o una en cada hoja pero me lo descuadra todo y me desespero….
    Muchísimas gracias.

  37. Jose
    Jueves, 27 de octubre de 2011 a las 04:59 | #37
    GD Star Rating
    loading...

    @javalina
    debes usar el especificador de posición ‘!’ y ‘h’, así:
    \begin{table} [!h]
    \begin{tabular}{…}
    … contenido de tabla …
    \end{tabular}
    \end{table}

    Donde:
    ! le dice a LaTex que la tabla debe posicionarse justo en el lugar que la declaras, esto en la mayoría de los casos funciona, pero si una tabla es demasiado grande y solo entar en una página entera pues Latex colocará la tabla en la siguiente página…esto no debería ser un gran problema ya que puedes referenciar a tu tabla desde cualquier parte edl documento, para eso debes ponerle un ‘label’ a tu tabla:

    \begin{table} [!h] \label{tab:tablaUno}
    \begin{tabular}{…}
    … contenido de tabla …
    \end{tabular}
    \end{table}

    Luego, en cualquier parte del documento podrías poner algo como

    ….bla bla bla ….como se pude apreciar en la tabla ~\reff{tab:tablaUno}

    He visto este tipo de referencias en más de un libro así que, como te dije, no debería ser un problema.

    Por cierto, todo lo anterior expuesto aplica también para las imágenes(subfigure).

    Puedes buscar en google con las siguintes etiquetas:
    Floats,_Figures_and_Captions latex
    Labels_and_Cross-referencing latex

    Hace tiempo me hice un manual, muy básico eso sí, pero creo que suficiente para hacer documentos no tan complejos, lo comparto:
    http://cid-c8a56dd7becc4c8d.office.live.com/self.aspx/P%c3%bablico/ArchivosPDF/Documentos%5E_LaTeX%5E_Ubuntu%5E_Windows.pdf

    En este blog aprendí varias cosas de LaTeX.

  38. Jose
    Jueves, 27 de octubre de 2011 a las 05:03 | #38
    GD Star Rating
    loading...

    Perdón, se me fuerin unos dedazos, corrección:

    debes usar el especificador de posición ‘!’ y ‘h’, así:

    \begin{table} [!h]
    \begin{tabular}{…}
    … contenido de tabla …
    \end{tabular}
    \end{table}

    Donde:
    [!h] le dice a LaTex que la tabla debe posicionarse justo en el lugar que la declaras, esto en la mayoría de los casos funciona, pero si una tabla es demasiado grande y solo entar en una página entera pues Latex colocará la tabla en la siguiente página…esto no debería ser un gran problema ya que puedes referenciar a tu tabla desde cualquier parte edl documento, para eso debes ponerle un ‘label’ a tu tabla:

    \begin{table} [!h] \label{tab:tablaUno}
    \begin{tabular}{…}
    … contenido de tabla …
    \end{tabular}
    \end{table}

    Luego, en cualquier parte del documento podrías poner algo como

    ….bla bla bla ….como se pude apreciar en la tabla ~\ref{tab:tablaUno}

  39. Christopher Sáez
    Domingo, 6 de noviembre de 2011 a las 11:34 | #39
    GD Star Rating
    loading...

    Estimado usuarios,

    Me encuentro en la elaboración de un pequeño articulo, usando el formato elsarticle, a dos columnas, sin embargo, necesito alguna manera de generar que algunas tablas y figuras me ocupen en ancho de la hoja como si se utilizará una sola columna…alguna ayuda, se agradece de ante mano.

  40. Domingo, 6 de noviembre de 2011 a las 14:51 | #40
    GD Star Rating
    loading...

    @Christopher Sáez
    Hola Christopher, si no recuerdo mal si trabajas con dos columnas y quieres meter una tabla o imagen de forma que abarque todo el ancho de la página, debes añadir un asterisco a los entornos que uses. Es decir, en vez de usar \begin{figure} y \end{figure} debes usar \begin{figure*} y \end{figure*} para las imágenes, y lo para las tablas lo mismo. Te agradecería que me confirmases si te funciona, llevo mucho tiempo sin escribir en LaTeX ;)

  41. Elena
    Miércoles, 10 de octubre de 2012 a las 14:32 | #41
    GD Star Rating
    loading...

    Muchas gracias, estaba a punto de perder demasiado tiempo con esto y justo he encontrado tu entrada. Genial! :)

  42. Nuria
    Jueves, 12 de septiembre de 2013 a las 11:09 | #42
    GD Star Rating
    loading...

    Hola, yo tengo un problema con el titulo de tabla, me tiene que salir en 2 lineas diferentes:

    Table1.
    Y aquí el titulo que yo quiera darle.

    Hasta aquí bien, lo que pasa es que lo necesito en la parte izquierda de la tabla y no centrado (aunque la tabla si que debe estar centrada…) sabéis si hay alguna forma de hacerlo? He probado con \leftline y con \flushleft pero no hay manera. Muchísimas gracias!

  1. Miércoles, 24 de junio de 2009 a las 18:45 | #1

Current ye@r *