Alineación vertical de texto e imágenes en tablas 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:
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}
loading...



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
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}
loading...
Ieee, muchas gracias. Me faltaba el paquete “array”, ahora funciona al 100 % muchísimas gracias.
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
.
loading...
Una preguntilla… ¿y si quiero alinear al mismo tiempo verticalmente y horizontalmente una misma columna?
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}.
loading...
Mil gracias por el aporte, era justo lo que necesitaba y estoy muy corto de tiempo.
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}
%———————————————-
loading...
Gracias, llevaba tiempo con ese problema.!!
loading...
se me olvidaba, utilice \usepackage{array} por sin el la primera vez q lo intente no salio.
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!
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… :-(
loading...
Hola Flor, y esa tabla ¿con cuantas columnas contaría? A ver si puedo echarte un cable
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!
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}
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…
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
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 =)
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
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 =)
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
loading...
111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111
11111111111111111111espacio11111111111111111111
11111111111111111111espacio11111111111111111111
11111111111111111111espacio11111111111111111111
11111111111111111111espacio11111111111111111111
111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111
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}
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
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
loading...
Ok =)
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).
loading...
Hola Jose, gracias por la contribución
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? ?
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*}
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.
loading...
espero pudieras ayudarme u orientarme. Gracias de nuevo
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.
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???
loading...
Oiep, muchas gracias. Me ha sido muy útil!
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.
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.
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}
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.
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