Actualizado el 21 de Marzo del 2018 (Publicado el 8 de Octubre del 2017)
1.576 visualizaciones desde el 8 de Octubre del 2017
319,4 KB
12 paginas
Creado hace 16a (18/11/2008)
Apuntes de LATEX
Capítulo 10: Conceptos avanzados sobre estructura de tablas
1. El paquete array
El paquete array introduce una serie de mejoras sobre el entorno tabular estándar. La tabla siguiente
describe los nuevos elementos introducidos por el paquete:
Argumentos de los entornos estándar tabular y array
l, r, c, p{Ancho}
| @{Objeto}
Formatos de columna, que mantienen su significado básico. Para
p{Ancho}, el texto se coloca justificado a la parte de arriba de la
casilla.
Mantienen su significado, aunque se introduce una mejora para ‘|’:
el espacio entre columnas se incrementa en el valor correspondiente
a la anchura de la raya vertical.
Nuevos argumentos con el paquete array
m{Ancho}
b{Ancho}
!{Objeto}
>{comando}
<{comando}
Nuevo especificador de columna, similar a p{Ancho}, con la dife-
rencia de que las entradas aparecen centradas en sentido vertical.
Similar al anterior, pero las entradas se justifican a la parte inferior.
Nuevo separador de columnas, similar a @{Objeto}. La diferencia
está en que no suprime el espacio normal entre columnas.
Se debe incluir antes de un especificador l, r, c, p, m, b. Tiene
el efecto de aplicar el comando a cada una de las casillas de la
columna.
Análogo al anterior, sólo que se utiliza después del especificador
de columna, y aplica el comando detrás de cada columna.
Para casillas tipo párrafo (p{Ancho}, m{Ancho} y b{Ancho}), es posible dividir el texto en varias
líneas, y justificarlo a cualquiera de los lados utilizando los comandos:
\raggedright −→ El texto se ajusta sólo por la izquierda
\centering −→ Texto centrado
\raggedleft −→ El texto se ajusta sólo por la derecha
Dentro de cada casilla, cada línea se separa utilizando el comando estándar \\. Es importante tener
en cuenta que, para la última casilla de una fila, se debe terminar con el comando \tabularnewline,
que indica a LATEX que hemos finalizado con esa fila de la tabla.
1
Ejemplo:
\begin{tabular}{|l|c|} \hline
\multicolumn{1}{|p{1.5cm}|}{\centering %
Planeta} & \multicolumn{1}{p{4cm}|}%
{\centering Distancia media al sol \\
(millones de km)} \tabularnewline \hline
Mercurio & 58.1 \\
Venus & 108.3 \\
Tierra & 150.0 \\ \hline
\end{tabular}
Planeta
Mercurio
Venus
Tierra
Distancia media al sol
(millones de km)
58.1
108.3
150.0
Cambiando los formatos “p{1.5cm}” y “p{4cm}” por “m{1.5cm}” y “m{4cm}” ó por “b{1.5cm}” y
“b{4cm}” obtendríamos, respectivamente:
Planeta
Mercurio
Venus
Tierra
Distancia media al sol
(millones de km)
58.1
108.3
150.0
Planeta
Mercurio
Venus
Tierra
Distancia media al sol
(millones de km)
58.1
108.3
150.0
Vemos en los ejemplo anteriores que los puntos de los decimales no quedan bien alineados. Una
posible solución sería colocar el signo “.” como separador de columna, de la siguiente forma:
\begin{tabular}{|l|r@{.}l|}
\hline
\multicolumn{1}{|m{1.5cm}|}{\centering %
Planeta} & \multicolumn{2}{m{4cm}|}%
{\centering Distancia media al sol \\
(millones de km)} \tabularnewline \hline
Mercurio &
Venus & 108&3 \\
Tierra &
150&1 \\
\hline
\end{tabular}
58&1 \\
Planeta
Mercurio
Venus
Tierra
Distancia media al sol
(millones de km)
58.1
108.3
150.1
Sin embargo, tal procedimiento no da buenos resultados para columnas muy anchas. La solución, para
este caso, se encuentra en utilizar el paquete dcolumn. Este paquete introduce un nuevo separador, de
sintaxis:
D{separador1}{separador2}{Num}
donde separador1 es el decimal que utilizamos en el fichero .tex, y separador2 es el decimal que LATEX
colocará en la salida. Num denota el número máximo de decimales en la columna (el valor -1 equivaldría
a cualquiera). Por ejemplo, obtendríamos el resultado deseado con:
2
\begin{center}
\begin{tabular}{|l|D{,}{.}{-1}|}
\hline
\multicolumn{1}{|m{1.5cm}|}{\centering %
Planeta} & \multicolumn{1}{m{4cm}|}%
{\centering Distancia media al sol \\
(millones de km)} \tabularnewline \hline
Mercurio & 58,1
Venus & 108,3
Tierra & 150,1
\hline
\end{tabular}
\end{center}
\\
\\
\\
Planeta
Mercurio
Venus
Tierra
Distancia media al sol
(millones de km)
58.1
108.3
150.1
Los argumentos >{comando} y <{comando} nos permiten hacer útiles manipulaciones por columnas.
Por ejemplo, si queremos poner en negrita, añadir color, etc... una columna en concreto, podemos
especificar:
\begin{center}
\begin{tabular}{|>{\bfseries}l|%
>{\color{red}}c|}
\hline
\multicolumn{1}{|m{1.5cm}|}{\centering %
Planeta} & \multicolumn{1}{m{4cm}|}%
{\centering Distancia media al sol \\
(millones de km)} \tabularnewline \hline
Mercurio & 58.1
Venus & 108.3
Tierra & 150.1
\hline
\end{tabular}
\end{center}
\\
\\
\\
Planeta
Mercurio
Venus
Tierra
Distancia media al sol
(millones de km)
58.1
108.3
150.1
La utilidad del comando de cierre <{comando} puede verse en el siguiente ejemplo:
\begin{tabular}{|c|>{$\displaystyle}c<{$}|}
\hline
Función & \text{Definición} \\ \hline
tangente & \frac{\sen(x)}{\cos(x)} \\ \hline
cosecante & \frac{\cos(x)}{\sen(x)} \\ \hline
\end{tabular}
Función Definición
tangente
cosecante
sen(x)
cos(x)
cos(x)
sen(x)
donde los contenidos de la segunda columna se escriben automáticamente en modo matemático tipo
párrafo.
Si un determinado formato de columna se va a repetir en varias tablas (ó columnas), es convenien-
te utilizar el siguiente comando, proporcionado por el paquete array, que permite construir nuevos
formatos:
\newcolumntype{Carácter}{Definición}
Así por ejemplo, la expresión >$\displaystyle}c<{$} en la tabla anterior puede ser abreviada a ‘X’,
utilizando previamente:
3
\newcolumntype{X}{>$\displaystyle}c<{$}}
En tablas con líneas horizontales, las letras mayúsculas pueden quedar demasiado cerca de las líneas;
para solventar ésto el paquete array proporciona la longitud \extrarowheight, que permite añadir una
pequeña altura a cada línea mejorando el resultado, como puede verse en el siguiente ejemplo (donde
además, se muestra la diferencia entre los separadores @ y ! )
\newcolumntype{L}{>{\itshape}r}
\begin{tabular}{|l|L@{---}l|}
\hline
& Nombre & Name \\ \hline
1 & uno & one \\
2 & dos & two \\
3 & tres & three \\ \hline
\end{tabular}
\par \bigskip
\setlength{\extrarowheight}{2pt}
\begin{tabular}{|l|L!{---}l|}
\hline
& Nombre & Name \\ \hline
1 & uno & one \\
2 & dos & two \\
3 & tres & three \\ \hline
\end{tabular}
2. El paquete multirow
Nombre—Name
uno—one
dos—two
tres—three
Nombre — Name
uno — one
dos — two
tres — three
1
2
3
1
2
3
El paquete multirow nos permite construir tablas en las que algunas celdas ocupan varias filas dentro
de un entorno tabular. Se utiliza la orden:
\multirow{nrow}{width}[vmove]{contenido}
donde: nrow es el número de filas a agrupar; width es el ancho de la columna; y vmove sirve para subir
o bajar el texto (opcional). Esta orden funciona de forma similar a \multicolumn, pero para filas.
Nótese que el formato m{Ancho} nos era de utilidad para centrar texto en el caso de columnas vecinas
de diferente altura; multirow es adecuado para centrar texto con respecto a varias columnas vecinas.
Por ejemplo:
\begin{tabular}{|l|r|r|}
\hline \multirow{4}{1.8cm}{Planeta}
& \multicolumn{2}{p{3.8cm}|}%
{\centering Distancia al sol \\
(millones de km)}\tabularnewline \cline{2-3}
& \multicolumn{1}{p{1.7cm}|}%
{\centering Maxima \\ distancia}
& \multicolumn{1}{p{1.7cm}|}%
{\centering Minima \\ distancia}
\tabularnewline \hline
Mercurio & 69.4
& 109.0
Venus
Tierra
& 152.6
\hline
\end{tabular}
& 46.8\\
& 107.6\\
& 147.4\\
4
Planeta
Mercurio
Venus
Tierra
Distancia al sol
(millones de km)
Maxima
distancia
69.4
109.0
152.6
Minima
distancia
46.8
107.6
147.4
Se aprecia que la entrada “Planeta” está justificada a la izquierda. Esto se debe a que el comando
\multirowsetup, que determina el modo en el que aparece el texto de \multirow, está definido por
defecto como \raggedright. Redefiniéndolo con \renewcommand*{\multirowsetup}{\centering} se
consigue un texto centrado:
\renewcommand{\multirowsetup}{\centering}
\begin{tabular}{|l|r|r|}
\hline \multirow{4}{1.8cm}{Planeta}
& \multicolumn{2}{p{3.8cm}|}%
{\centering Distancia al sol \\
(millones de km)}\tabularnewline \cline{2-3}
& \multicolumn{1}{p{1.7cm}|}%
{\centering Maxima \\ distancia}
& \multicolumn{1}{p{1.7cm}|}%
{\centering Minima \\ distancia}
\tabularnewline \hline
Mercurio & 69.4
& 109.0
Venus
Tierra
& 152.6
\hline
\end{tabular}
& 46.8\\
& 107.6\\
& 147.4\\
3. El paquete hhline
Planeta
Mercurio
Venus
Tierra
Distancia al sol
(millones de km)
Maxima
distancia
69.4
109.0
152.6
Minima
distancia
46.8
107.6
147.4
El paquete hhline define el comando \hhline, que produce rayas dobles ó simples, y añade capacidades
para producir intersecciones bien construidas entre líneas horizontales y verticales. El comando se utiliza
como:
\hhline{ColumnasEIntersecciones}
donde la especificación ColumnasEIntersecciones se hace utilizando los siguientes elementos:
= Una raya horizontal doble del ancho de una columna.
- Una raya horizontal simple del ancho de una columna.
˜ Una columna sin raya horizontal.
| Una raya vertical que corta a una horizontal (simple ó doble).
: Una raya vertical que es partida por una horizontal doble. Detrás ó delante debe haber =.
# Dos rayas verticales que cortan a una horizontal doble.
t La semiparte superior de una horizontal doble.
b La semiparte inferior de una horizontal doble.
* Podemos usar la abreviatura: *{3}{==#} (por ejemplo), que se expande como ==#==#==# (ésto
también es válido para el entorno tabular básico).
5
Los elementos anteriores se utilizan agrupados, para definir entrelazamientos con las rayas verticales.
Por ejemplo:
|t: −→ Esquina superior izquierda del cruce de dos rayas dobles ((cid:112)·)
:t| −→ Como el anterior, pero para la esquina superior derecha (·(cid:113))
|b: −→ Análogo, para esquina inferior izquierda ((cid:120)·)
:b| −→ Análogo, para esquina inferior derecha (·(cid:121))
|: −→ Una raya vertical seguida de otra vertical que se cruza con una horizontal doble
:| −→ Una raya vertical, que se ha cruzado con una horizontal doble,
Comentarios de: Apuntes de LATEX Capítulo 10: Conceptos avanzados sobre estructura de tablas (0)
No hay comentarios