# Tablas

## Estructura de una tabla (<table>)

Una tabla XHTML (<table>) es una rejilla rectangular de celdas, formada por los siguientes elementos:

- Leyenda (<caption>)
- Cabecera de tabla (<thead>)
- Cuerpos de tabla (<tbody>)
- Pie de tabla (<tfoot>)

Esto es la leyenda | Leyenda (<caption>)
|  | ... |  |
... | ... | ... | ... | ...
|  | ... |  |
| Cabecera de tabla (<thead>)
|  | ... |  |
... | ... | ... | ... | ...
|  | ... |  |
...
|  | ... |  |
... | ... | ... | ... | ...
|  | ... |  |
| Cuerpos de tablas (<tbody>)
|  | ... |  |
... | ... | ... | ... | ...
|  | ... |  |
| Pie de tabla (<tfoot>)

A su vez, tanto los cuerpos de tabla como la cabecera y el pie de tabla están formados por varias filas (<tr>) formadas por varias celdas (<td> o <th>). Todas las filas tienen el mismo número de celdas (aunque también se pueden unir celdas horizontal y verticalmente).

Celda | Celda | ... | Celda | Celda |
| ... |
| Fila (<tr>)

La leyenda (<caption>) es texto explicativo opcional que se muestra fuera de la tabla (normalmente, arriba). Además la leyenda no puede incluir párrafos ni otros elementos de bloque.

Tanto a cabecera de la tabla (<thead>) como el pie de tabla (<tfoot>) son opcionales y sólo puede haber uno de cada por tabla. En el código fuente, la etiqueta <tfoot> se encuentra situada antes del primer <tbody>, aunque los navegadores la muestran al final de la tabla. Al imprimir una tabla que ocupa varias páginas, Mozilla repite al principio y al final de cada página las cabeceras y pies de tabla. Internet Explorer sólo los imprime al principio y al final de la tabla.

El cuerpo de tabla (<tbody>) es obligatorio y puede haber tantos como se quiera.

Cada celda de la tabla está marcada con la etiqueta <td>, aunque también se pueden marcar con la etiqueta <th>. Se supone que las celdas <th> son las que sirven de cabecera para la fila o columna, por lo que los navegadores las muestran resaltadas (en negrita y centradas en horizontal).

En una tabla también puede haber etiquetas <col /> y <colgroup>, que permiten hacer referencia a columnas de la tabla.

Volver al índice

## Crear una tabla

Puede crearse una tabla mediante el menú XHTML > Tabla > Tabla (table) o el botón de creación de tabla . En la caja de diálogo,se puede elegir el número de columnas, el número de filas y el grosor del borde exterior.

Para crear un párrafo después de una tabla, hay que seleccionar la tabla completa `F2` y pulsar `Intro`. También se puede seleccionar la tabla completa `F2`, elegir el menú XHTML > Editar > Añadir detrás y a continuación escribir el texto.

Para crear un párrafo antes de una tabla, hay que seleccionar la tabla completa `F2` y pulsar `Intro`. También se puede seleccionar la tabla completa `F2`, elegir el menú XHTML > Editar > Insertar delante y a continuación escribir el texto.

Volver al índice

## Leyenda (<caption>)

Al crear un tabla en Amaya, el cursor se sitúa en la leyenda. Si se borra la leyenda, se puede añadir nuevamente mediante el menú XHTML > Tabla > Leyenda (caption).

Los navegadores dan a la leyenda el mismo ancho que a la tabla, por lo que si una leyenda es larga y la tabla estrecha, la leyenda ocupará varias líneas.

Volver al índice

## Añadir y borrar encabezados, pies y cuerpos de tabla

Al crear una tabla en Amaya, ésta se crea con un único <tbody> y sin <thead> o <tfoot>.

Para crear el <thead>, hay que elegir la opción de menú XHTML > Tabla > thead. Para crear el <tfoot>, hay que elegir la opción de menú XHTML > Tabla > tfoot.

Para crear un nuevo <tbody> a continuación de otro, se puede seleccionar el <tbody> ya existente con `F2` y pulsar `Intro`. También se puede crerar un nuevo<tbody> con la opción de menú XHTML > Tabla > thead. Si el cursor se encuentra en la celda superior izquierda de la tabla, el nuevo <tbody> se creará antes del <tbody> ya existente; si el cursor se encuentra en cualquier otra celda, el nuevo <tbody> se creará después del <tbody> ya existente.

Para borrar cualquier <thead>, <tbody> o <tfoot>, hay que pulsar `F2` hasta seleccionar el elemento que se desea borrar y pulsar `Borrar` o `Suprimir`.

Volver al índice

## Añadir y borrar filas y columnas

### Añadir una fila

Para insertar una nueva fila antes de otra fila, hay que situar el cursor en cualquier posición de la fila y elegir la opción de menú XHTML > Tabla > Insertar fila delante. Para añadir una nueva fila después de otra fila, hay que situar el cursor en cualquier posición de la fila y elegir la opción de menú XHTML > Tabla > Añadir fila detrás. También se puede añadir una nueva fila después de otra fila, seleccionando la fila completa con `F2` y pulsando `Intro`.

### Borrar una fila

Para borrar una fila, hay que seleccionar la fila completa con `F2` (o mediante el menú XHTML > Tabla > Seleccionar fila) y pulsar `Suprimir` o `Borrar`.

### Añadir una columna

Para insertar una nueva columna antes de otra columna, hay que situar el cursor en cualquier posición de la columna y elegir la opción de menú XHTML > Tabla > Insertar columna delante. Para añadir una nueva columna después de otra columna, hay que situar el cursor en cualquier posición de la columna y elegir la opción de menú XHTML > Tabla > Añadir columna detrás. También se puede añadir una nueva columna después de otra columna, seleccionando una celda cualquiera de la columna con `F2` y pulsando `Intro`.

### Borrar una columna

Para borrar una columna, hay que seleccionar la columna completa y pulsar `Suprimir` o `Borrar`. La columna se puede seleccionar seleccionando con el ratón un par de celdas de la misma columnna y pulsando dos veces `F2`, o bien mediante el menú XHTML > Tabla > Seleccionar columna.

## Celdas de datos (<td>) y celdas de cabecera (<th>)

Al crear una tabla en Amaya, todas las celdas están marcadas con la etiqueta <td>. Para convertir una celda de datos <td> en una celda de cabecera <th>, hay que situar el cursor en la celda y elegir la opción de menú XHTML > Tabla > Cambiar a celda de cabecera. Se pueden convertir varias celdas contiguas seleccionándolas con el ratón, pulsando `F2` y eligiendo la opción de menú XHTML > Tabla > Cambiar a celda de cabecera. Para convertir una celda de datos <th> en una celda de cabecera <td>, hay que situar el cursor en la celda y elegir la opción de menú XHTML > Tabla > Cambiar a celda de datos. Se pueden convertir varias celdas contiguas seleccionándolas con el ratón, pulsando `F2` y eligiendo la opción de menú XHTML > Tabla > Cambiar a celda de datos.

Volver al índice

## Unir celdas

Aunque las tablas XHTML sean rectangulares, es decir, tengan el mismo número de celdas en cada fila, se pueden unir varias celdas horizontal o verticalmente mediante los atributos colspan y rowspan, respectivamente.

El menú XHTML > Tabla > Unir con celda derecha permite unir dos celdas contiguas, como se explica en el siguiente ejemplo:

1º. Situar el cursor en la celda izquierda de las dos que se quieren unir. |
Esto es una tabla
celda a1 | celda b1 | celda c1
celda a2 | celda b2 | celda c2
celda a3 | celda b3 | celda c3
2º Elegir el menú XHTML > Tabla > Unir con celda derecha. Nota: El contenido de ambas celdas, en su caso, se conserva en la nueva celda (el contenido de cada celda, menos la primera, en un párrafo <p> distinto). |
Esto es una tabla
celda a1 celda b1 | celda c1
celda a2 | celda b2 | celda c2
celda a3 | celda b3 | celda c3

Si se selecciona la celda con `F2` y se consulta el atributo colspan en la ventana de Atributos, se puede comprobar que el valor es 2. Se pueden unir tantas celdas contiguas como se desee. El valor del atributo colspan indica el número de celdas unidas horizontalmente. En caso de introducir manualmente un valor del atributo colspan superior al máximo posible (es decir, superior al número de celdas situadas a la derecha de la celda elegida), Amaya reduce el valor al máximo posible.

El menú XHTML > Tabla > Unir con celda inferior permite unir dos celdas contiguas, como se explica en el siguiente ejemplo:

1º. Situar el cursor en la celda superior de las dos que se quieren unir. |
Esto es una tabla
celda a1 | celda b1 | celda c1
celda a2 | celda b2 | celda c2
celda a3 | celda b3 | celda c3
2º Elegir el menú XHTML > Tabla > Unir con celda inferior. Nota: El contenido de ambas celdas, en su caso, se conserva en la nueva celda. (el contenido de cada celda, menos la primera, en un párrafo <p> distinto) |
Esto es una tabla
celda a1 celda a2 | celda b1 | celda c1
celda b2 | celda c2
celda a3 | celda b3 | celda c3

Si se selecciona la celda con `F2` y se consulta el atributo colspan en la ventana de Atributos, e puede comprobar que el valor es 2. Se pueden unir tantas celdas contiguas como se desee. El valor del atributo rowspan indicará el número de celdas unidas verticalmente. En caso de introducir manualmente un valor del atributo rowspan superior al máximo posible (es decir, superior al número de celdas situadas por debajo de la celda elegida), Amaya reduce el valor al máximo posible.

Una celda puede tener establecidos simultáneamente los atributos colspan y rowspan, como se explica en el siguiente ejemplo:

1º. Situar el cursor en la celda izquierda de las dos que se quieren unir. |
Esto es una tabla
celda a1 | celda b1 | celda c1
celda a2 | celda b2 | celda c2
celda a3 | celda b3 | celda c3
2º Elegir el menú XHTML > Tabla > Unir con celda derecha. Nota: El contenido de ambas celdas, en su caso, se conserva en la nueva celda. (el contenido de cada celda, menos la primera, en un párrafo <p> distinto) |
Esto es una tabla
celda a1 celda b1 | celda c1
celda a2 | celda b2 | celda c2
celda a3 | celda b3 | celda c3
3º. Situar el cursor en la celda superior de las que se quieren unir. |
Esto es una tabla
celda a1 celda b1 | celda c1
celda a2 | celda b2 | celda c2
celda a3 | celda b3 | celda c3
4º Elegir el menú XHTML > Tabla > Unir con celda inferior. Nota: El contenido de todas las celdas afectadas, en su caso, se conserva en la nueva celda. (el contenido de cada celda, menos la primera, en un párrafo <p> distinto) |
Esto es una tabla
celda a1 celda a2 celda b1 celda b2 | celda c1
celda c2
celda a3 | celda b3 | celda c3

- Las celdas se podrían haber unido primero en sentido vertical y después en horizontal.
- Al seleccionar la celda con `F2`, la ventana de atributos muestra que los atributos colspan y rowspan tienen el valor 2.
- Se pueden unir tantas celdas contiguas como se desee. El valor de los atributos colspan y rowspan indica respectivamente el número de celdas unidas horizontal y verticalmente.

Para dividir celdas anteriormente unidas, se puede utilizar los menús XHTML > Tabla > Reducir extensión horizontal y XHTML > Tabla > Reducir extensión vertical, que reducen respectivamente los atributos colspan y rowspan en una unidad. La nueva celda se crea sin contenido. No se pueden dividir celdas que no se hubieran unido anteriormente.

En caso de introducir manualmente valores de los atributos colspan y colspan superiores al máximo posible (es decir, superior al número de celdas situadas a la derecha o por debajo de la celda elegida), Amaya reduce en los valores valor al máximo posible.

Si todas las celdas de una columna tienen el atributo colspan mayor que uno, Amaya reduce todos los valores hasta que alguno sea igual a uno y lo elimina. En particular, si todas las celdas de una columna tienen el mismo valor del atributo colspan, Amaya elimina todos los atributos colspan.

Si todas las celdas de una fila tienen el atributo rowspan mayor que uno, Amaya reduce todos los valores hasta que alguno sea igual a uno y lo elimina. En particular, si todas las celdas de una fila tienen el mismo valor del atributo rowspan, Amaya elimina todos los atributos rowspan.

Volver al índice

## Columnas

Aunque las celdas de una tabla estén organizadas en filas y grupos de filas (los cuerpos de tabla), también existen dos etiquetas que permiten hacer referencia a las columnas de una tabla: las etqieutas <col /> y <colgroup>. La etiqueta <col /> permite hacer referencia a una columna y la etiqueta <colgroup> permite definir grupos de columnas (de manera similar a como la etiqueta <tbody> define grupos de filas).

Las etiquetas <col /> y <colgroup> se encuentran situadas al principio de la tabla y en Amaya no se pueden seleccionar con `F2`, por lo que su edición debe realizarse en la vista de código fuente. Las etiquetas de columnas no se crean automáticamente, sino que el usuario debe añadirlas después de haber creado la tabla, y al crearlas o eliminarlas no se modifica la estructura de la tabla (ni se crean ni se eliminan celdas o filas).

El ejemplo siguiente muestra la situación de las estiquetas <col /> y <colgroup> en una tabla.

    1   <table border="1" >
    2     <caption>Leyenda</caption>
    3     <colgroup><col /><col /></colgroup><colgroup><col /></colgroup>
    4     <tbody>
    5       <tr>
    6         <td>1</td>
    7         <td>2</td>
    8         <td>3</td>
    9       </tr>
    10     </tbody>
    11  </table>

Cada etiqueta <col /> corresponde a una columna, en el mismo orden (la primera etiqueta <col /> corresponde a la primera columna, y así sucesivamente). En el ejemplo anterior, hay definidas tres columnas, agrupadas en dos grupos de columnas.

Puede haber menos etiquetas <col /> que columnas en la tabla (también puede haber más, pero serían innecesarias).

Nota: En Amaya 9.2.2, al crear por primera vez una etiqueta <col /> o <colgroup> después de haber abierto o actualizado la página aparece una ventana de aviso que dice "La nueva vista no puede sustituir a la anterior". El 29/11/05 envié un correo notificando este bug y parece que lo van a corregir.

Volver al índice

### Columnas (<col />)

Para insertar una etiqueta <col />, hay que situar el cursor en cualquier elemento de la tabla y elegir la opción de menú XHTML > Tabla > Columna (col). Las nuevas etiquetas se crean delante de las anteriores.

Nada más crear la etiqueta, se puede dar valor a los atributos (class, span, etc), pero si después de editar otros elementos se quiere modificar los atributos o incluso eliminar la etiqueta <col />, hay que hacerlo en la vista de código fuente, puesto que no hay forma de seleccionar la etiqueta <col /> en la vista normal.

Amaya permite insertar más etiquetas <col /> de las columnas que tiene la tabla, aunque no tengan ninguna utilidad.

Volver al índice

### Grupos de columnas (<colgroup>)

Para insertar una etiqueta <colgroup>, hay que situar el cursor en cualquier elemento de la tabla y elegir la opción de menú XHTML > Tabla > Grupo de columnas (colgroup). Las nuevas etiquetas se crean delante de las anteriores.

Nada más crear la etiqueta, se puede dar valor a los atributos (class, span, etc), pero si después de editar otros elementos se quiere modificar los atributos o incluso eliminar la etiqueta <colgroup>, hay que hacerlo en la vista de código fuente, puesto que no hay forma de seleccionar la etiqueta <colgroup> en la vista normal.

Cada grupo de columnas puede contener tantas etiquetas <col /> como se quiera.

Si hay un <colgroup>, todos los <col /> deben estar dentro de algún <colgroup>. Por eso en Amaya, si hay un <colgroup>, al crear un <col /> se crea dentro del primer <colgroup>.

Amaya permite insertar <colgroups> con más <col /> de las columnas que tiene la tabla, aunque no tengan ninguna utilidad.

Volver al índice