Combinar varias celdas de una tabla en una sola —lo que se llama combinar celdas— se divide claramente por dirección y herramienta. Para abarcar columnas horizontalmente está el comando estándar \multicolumn; para abarcar filas verticalmente, \multirow del paquete multirow; y combinando ambos se fusiona un bloque rectangular. Si solo quieres que una celda se parta en varias líneas, eso no es una combinación: es tarea de makecell. Esta página recorre estas cuatro herramientas, incluidos los problemas de alineación.
Combinación horizontal — \multicolumn
\multicolumn combina columnas adyacentes dentro de una misma fila. Está integrado en LaTeX estándar, sin paquete adicional. Su forma es \multicolumn{n}{spec}{text}: n es el número de columnas que abarca, spec indica cómo se alinea la celda resultante (una especificación de una sola columna) y text es su contenido. Por ejemplo, \multicolumn{2}{c}{Header} combina dos columnas en una celda y la centra.
El punto crucial es que spec describe la única columna combinada, no una herencia de las n columnas originales. Por eso debes escribir exactamente uno de l, c o r. spec también puede contener una regla vertical | o @{…}, que sobrescriben las reglas y el espacio intercolumnar solo para esa celda combinada. Si una de dos celdas \multicolumn adyacentes termina con | y la siguiente empieza con uno, se dibuja una sola regla, no dos.
\begin{tabular}{lcc}
\hline
\multicolumn{3}{c}{売上集計} \\
\hline
項目 & 上期 & 下期 \\
\hline
国内 & 120 & 145 \\
海外 & 80 & 96 \\
\hline
\end{tabular}La primera fila usa aquí \multicolumn{3}{c}{Sales summary} para plegar lo que serían tres columnas en una sola celda centrada, que sirve de título para toda la tabla. Incluso en una fila combinada, las celdas de esa fila deben sumar el número declarado de columnas, aquí 3. Como \multicolumn{3}{…} cubre las tres, esta fila no necesita &.
También conviene recordar el uso de poner n en 1. \multicolumn{1}{…}{…} no abarca columnas, pero puede sobrescribir la alineación de esa celda o quitar la regla vertical | en esa posición. Para centrar solo el encabezado de una columna numérica (r), escribe \multicolumn{1}{c}{Header}; para suprimir la regla vertical de una sola celda en una tabla enmarcada, escribe \multicolumn{1}{c}{…} sin | en la especificación.
Combinación vertical — multirow
Una celda que abarca varias filas verticalmente no puede hacerse con un comando estándar; hay que cargar el paquete multirow (\usepackage{multirow} en el preámbulo). Su núcleo es \multirow{n}{width}{text}: n es el número de filas que abarca, width el ancho de la celda y text su contenido. Pasar * como ancho compone el texto en su ancho natural; \multirow{3}{*}{Label} es la forma más directa.
La regla decisiva es dejar vacías las celdas inferiores que abarca \multirow. Coloca \multirow en la fila superior y en las filas siguientes escribe solo &, sin contenido, en esa posición de columna. Si olvidas vaciarlas, el contenido de las filas inferiores se superpondrá al texto puesto por \multirow. Un n positivo abarca “esta fila y las n−1 filas inferiores”; un valor negativo abarca “esta fila y las −n−1 filas superiores”.
\usepackage{multirow}
% ...
\begin{tabular}{|l|l|c|}
\hline
\multirow{2}{*}{果物} & りんご & 380 \\
& みかん & 120 \\
\hline
\multirow{2}{*}{野菜} & 人参 & 90 \\
& 大根 & 150 \\
\hline
\end{tabular}Aquí “Fruit” y “Vegetable” en la columna 1 abarcan dos filas verticalmente cada uno. La clave es que \multirow{2}{*}{Fruit} va en la fila superior, y la celda inferior en la columna 1 se pasa con & y nada escrito. Como width es *, la etiqueta se compone en su ancho natural y queda centrada verticalmente sobre las dos filas.
\multirow también toma dos argumentos opcionales. El [vpos] inicial fija la alineación vertical (por omisión centrada c, arriba t, abajo b). El [vmove] después de text es una longitud de ajuste fino que desplaza el texto hacia arriba, o hacia abajo si es negativa. Cuando el centrado vertical se ve ligeramente desfasado respecto a las reglas, ajústalo con un valor pequeño, como \multirow{3}{*}[2pt]{…}. Ten en cuenta que dar un width absoluto (por ejemplo \multirow{2}{4em}{…}) compone el contenido como una parbox de ese ancho, de modo que una etiqueta larga se ajusta.
| Argumento | Función | Notas |
|---|---|---|
[vpos] | Alineación vertical (opcional, inicial) | Predeterminado c; también t / b |
n | Filas que abarca (obligatorio) | Positivo hacia abajo, negativo hacia arriba |
width | Ancho de celda (obligatorio) | * para ancho natural; valor absoluto ajusta como parbox |
[vmove] | Ajuste fino de posición (opcional, tras text) | Positivo sube, negativo baja |
Combinar un bloque — \multirow dentro de \multicolumn
Para hacer un bloque rectangular que abarque ambas direcciones, combina \multirow y \multicolumn. El orden es fijo: pon \multirow dentro de \multicolumn. La documentación oficial da \multicolumn{2}{c}{\multirow{3}{*}{Multi-multi}} como ejemplo y afirma claramente que anidarlos al revés “will not work”. Recuerda: el \multicolumn exterior controla la extensión horizontal y el \multirow interior la vertical.
Para trazar alrededor del bloque, usa una regla limitada a un rango de columnas en lugar de \hline, que recorre todo el ancho, para no cortar la zona combinada. La herramienta estándar es \cline{i-j} (columnas i a j); con booktabs es \cmidrule{i-j}. Al excluir de la regla el rango situado bajo la celda combinada, delineas limpiamente solo el bloque.
\usepackage{multirow}
% ...
\begin{tabular}{|l|l|c|}
\hline
\multicolumn{2}{|c|}{\multirow{2}{*}{地域・分類}} & 件数 \\
\multicolumn{2}{|c|}{} & \\
\hline
東日本 & 関東 & 12 \\
\cline{1-3}
西日本 & 関西 & 9 \\
\hline
\end{tabular}Aquí se construye un bloque rectangular de 2 columnas × 2 filas en la esquina superior izquierda. En la primera fila, \multicolumn{2}{|c|}{\multirow{2}{*}{Region / class}} combina dos columnas y dos filas, y la segunda fila recibe la misma posición con un \multicolumn{2}{|c|}{} vacío; como \multirow abarca las filas, la parte del bloque en la fila inferior se deja vacía. \cline{1-3} separa las filas del cuerpo, mientras que \hline cierra el bloque por arriba y por abajo.
Partir líneas dentro de una celda — makecell
Conviene hacer una distinción: querer que una sola celda se parta en varias líneas no es combinar celdas. Como las columnas l, c y r no se ajustan, escribir \\ directamente dentro de una celda así es un error. Cuando solo quieres partir una cadena corta donde tú elijas, la herramienta más sencilla es \makecell{…} del paquete makecell (\usepackage{makecell}).
\makecell{line1\\line2} compone su contenido como un pequeño tabular de una columna y usa \\ para un salto de línea forzado. Un argumento opcional fija la alineación —\makecell[l]{…} (izquierda), \makecell[t]{…} (arriba)— pasando una letra para la alineación vertical y otra para la horizontal; por omisión ambas van centradas. Para encabezados de columna también existe \thead{…}, con fuente y espaciado comunes.
\usepackage{makecell}
% ...
\begin{tabular}{lc}
\hline
\thead{項目} & \thead{前年比\\(\%)} \\
\hline
売上高 & \makecell[r]{+8.2\\(過去最高)} \\
\hline
\end{tabular}Aquí el encabezado “Year-on-year (%)” se apila en dos líneas con \thead{Year-on-year\\(\%)}, y la cifra del cuerpo se pone en dos líneas alineadas a la derecha con \makecell[r]{+8.2\\(record high)}. Ambos solo parten líneas dentro de una sola celda; observa que ninguno se combina con una celda vecina. Cuando el contenido es largo y quieres que se ajuste automáticamente por ancho, la vía correcta es una columna p{width} o similar, no \makecell.
Problemas de alineación y elección de herramienta
Resumen de los tropiezos comunes. Primero, centrado vertical: el texto de \multirow se centra en la fila por omisión, pero puede verse un poco alto o bajo según la altura de fila y el grosor de las reglas; elige t / b mediante [vpos] o ajusta con un pequeño [vmove]. Segundo, consistencia de fila: incluso en una fila con \multicolumn, el número de & más las extensiones combinadas debe igualar el número declarado de columnas. Y tercero, orden de anidamiento: para combinar un bloque, siempre coloca \multirow dentro de \multicolumn.
Elegir herramienta es sencillo: abarca columnas con \multicolumn, filas con \multirow, usa ambas para un rectángulo y recurre a \makecell solo para partir líneas dentro de una celda. Para ajustar prosa larga por ancho, la vía correcta es una columna p{width} (o m{width} de array para centrado vertical), dejando que se ajuste automáticamente. Las especificaciones de columna se cubren en “especificación de columnas, alineación y ancho”, y las tablas que desbordan la página en “entornos de tabla avanzados”.