Comportamiento extraño de tabular cuando se agrega una segunda \multicolumn

Comportamiento extraño de tabular cuando se agrega una segunda \multicolumn

Elpregunta originalSe trata de colocar figuras dentro de un tabular e intentar ajustarlas así:

2

con un código similar a este:

\documentclass{article}
\usepackage{graphicx}
\usepackage{array}
\begin{document}
\begin{tabular}{|c|>{\centering\arraybackslash}p{17.5mm}|>{\centering\arraybackslash}p{17.5mm}|c|}
  \includegraphics[width=35mm]{example-image-a} &   \multicolumn{2}{c|}{\includegraphics[width=35mm]{example-image-b}} &  \includegraphics[width=35mm]{example-image-c} \\
\multicolumn{2}{|c}{\includegraphics[width=35mm]{example-image-a}} & \multicolumn{2}{|c|}{\includegraphics[width=35mm]{example-image-b}}
\end{tabular}
\end{document}

Eso por alguna razón da este resultado:

3

¿Por qué sucede esto?

Por supuesto, hay mejores opciones para colocar figuras así y la respuesta en la pregunta vinculada es una de ellas. Pero intentar desarrollar el código con la tabla ayudará a comprender algunas cosas sobre la celda adicional que, si se usa en combinación con \multicolumnel comando, reducirá nuestras columnas y esto puede ser inesperado.

Respuesta1

Debe tener en cuenta la reciente adición del wtipo de columna en el paquete array: para columnas de ancho fijo con alineación central (y sin texto fluido), puede usar

w{c}{17.5mm}

en lugar de los torpes >{\centering\arraybackslash}{p{17.5mm}.

Ahora volvamos a tu problema.

La segunda columna se fusiona en ambas filas: primero con la tercera columna, luego con la principal. Entonces, por regla general, la tabla se construye como si esa columna nunca se hubiera especificado para empezar. Esto explica su resultado.

Quieres seis columnas iguales:

\documentclass{article}
\usepackage{graphicx}
\usepackage{array}
\begin{document}

\begin{tabular}{@{} *{6}{w{c}{17.5mm}} @{}}
  \multicolumn{2}{c}{\includegraphics[width=35mm]{example-image}} &
  \multicolumn{2}{c}{\includegraphics[width=35mm]{example-image}} &
  \multicolumn{2}{c}{\includegraphics[width=35mm]{example-image}} \\
  &
  \multicolumn{2}{c}{\includegraphics[width=35mm]{example-image}} &
  \multicolumn{2}{c}{\includegraphics[width=35mm]{example-image}} &
\end{tabular}

\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

  1. Primer paso...

    Ok, tengo 5 figuras y necesito 3 arriba y dos abajo, quiero controlar su ubicación... Un tabular me parece una buena solución...

Pensemos:

Tres en la parte superior: {ccc} Primera fila normal centrada y dividiré las celdas \multicolumnen la segunda para compartir el espacio... Pero...

\begin{tabular}{ccc}
\include..&\include..&\include..\\
\multicolumn{2}{c}&\multicolumn{2}{c}
\end{tabular}

¡Oh! escribiendo el segundo \multicolumnme di cuenta que se convirtieron en 4 columnas... Ni siquiera compilar...

Parece que necesito una cuarta columna:

Intentemos:

  1. Segundo paso...cuatro columnas:

Dividiré las columnas centrales superiores con \multicolumn:

\begin{tabular}{cccc}
\include...&\multicolumn{2}{c}{\include...}&\include...\\ %Nice... Let's finish with the next row
\multicolumn{2}{c}{\include...}&\multicolumn{2}{c}{\include}
\end{tabular}

4 en la fila de arriba 4 en la siguiente... ¡perfecto! vamos a compilar

ingrese la descripción de la imagen aquí

Parece que no conté correctamente... Vamos a contar...

  • Arriba de la fila 4 celdas del medio 2 fusionadas
  • Debajo de las filas 2 y 2 celdas...

¿Por qué la primera celda de la segunda fila no se fusiona con la segunda? Esto debería dar la cuarta figura centrada en dos primeras columnas como la quinta... ¿Por qué?

¿Necesito agregar una quinta columna?

Vamos a ver:

\begin{tabular}{cccc}
1&2&3&4\\
\include...&\multicolumn{2}{c}{\include...}&\include...\\ %Nice... Let's finish with the next row
\multicolumn{2}{c}{\include...}&\multicolumn{2}{c}{\include}
\end{tabular}

ingrese la descripción de la imagen aquí

La cuarta imagen se detiene antes de la segunda columna... Pensemos... ¿Necesito 5 columnas?

  1. Tercer paso...¿Veamos las líneas verticales allí? antes de informar un error... ¡Pero debería hacerlo!

Código completo:

\documentclass{article}
\usepackage{graphicx}
\usepackage{xcolor}
\begin{document}
\begin{tabular}{|c|c|c|c|}
1&2&3&4\\
  \includegraphics[width=35mm]{example-image-a} &   \multicolumn{2}{c}{\includegraphics[width=35mm]{example-image-b}} &  \includegraphics[width=35mm]{example-image-c} \\
\multicolumn{2}{|c}{\includegraphics[width=35mm]{example-image-a}} & \multicolumn{2}{|c|}{\includegraphics[width=35mm]{example-image-b}}
\end{tabular}
\end{document}

ingrese la descripción de la imagen aquí

Necesitan el informe de error... Pero...

Ok... creo que lo entendí:

La segunda columna no tiene el ancho de la tercera... Por supuesto... No se necesita ancho allí... Agreguemos un ancho:

... Ok, agregaré 17,5 mm centrados en ambas columnas del medio:

\documentclass{article}
\usepackage{graphicx}
\usepackage{array}
\begin{document}
\begin{tabular}{|c|>{\centering\arraybackslash}p{17.5mm}|>{\centering\arraybackslash}p{17.5mm}|c|}
  \includegraphics[width=35mm]{example-image-a} &   \multicolumn{2}{c|}{\includegraphics[width=35mm]{example-image-b}} &  \includegraphics[width=35mm]{example-image-c} \\
\multicolumn{2}{|c}{\includegraphics[width=35mm]{example-image-a}} & \multicolumn{2}{|c|}{\includegraphics[width=35mm]{example-image-b}}
\end{tabular}
\end{document}

ingrese la descripción de la imagen aquí

¿¿¿Por qué yo???Preguntemos en stackexchange... ¡Me voy de aquí!

  1. No más pasos: Alguna explicación:

Agreguemos la fila 1, 2, 3 y 4 allí atrás:

\documentclass{article}
\usepackage{graphicx}
\usepackage{array}
\begin{document}
\begin{tabular}{|c|>{\centering\arraybackslash}p{17.5mm}|>{\centering\arraybackslash}p{17.5mm}|c|}
1&2&3&4\\
  \includegraphics[width=35mm]{example-image-a} &   \multicolumn{2}{c|}{\includegraphics[width=35mm]{example-image-b}} &  \includegraphics[width=35mm]{example-image-c} \\
\multicolumn{2}{|c}{\includegraphics[width=35mm]{example-image-a}} & \multicolumn{2}{|c|}{\includegraphics[width=35mm]{example-image-b}}
\end{tabular}
\end{document}

ingrese la descripción de la imagen aquí

Perfecto... ¿Pero qué pasó?

LaTeX usó solo 3 columnas ya que el máximo de celdas necesarias era 3 por fila... Entonces, la primera columna era una sola columna y no realmente una columna múltiple... Al sumar estos números de ayuda... en realidad tenemos suerte y se enteró de lo que pasó...

Veámoslo en un ejemplo más sencillo:

\documentclass{article}
\usepackage{graphicx}
\usepackage{parskip}
\usepackage{array}
\setlength{\parskip}{0.5cm}

\begin{document} 


Just four columns:

\begin{tabular}{|c|c|c|c|}\hline
test&\multicolumn{2}{c|}{test}&test\\\hline
test&test&test&test\\\hline
\end{tabular}

\vspace{1cm}

If we decide to replace with a \verb|\multicolumn| the first two columns of the second row\ldots we can (inocently) imagine the above table to be like:

\begin{verbatim}
    | test |     test     | test |
    ----------------------------
    |     test     | test | test |
\end{verbatim}

BUT we get:

\begin{tabular}{|c|c|c|c|}\hline
test&\multicolumn{2}{c|}{test}&test\\\hline
\multicolumn{2}{|c|}{test}&test&test\\\hline
\end{tabular}

Because now the first \verb|multicolumn| makes the first row three columns size and the second places the ``\verb|multicolumned|'' cells as one cell under the first cell of the first row!
\end{document}

ingrese la descripción de la imagen aquí

Entonces, en nuestro caso "fallido" anterior podemos:

agregue una fila completa con celdas vacías (pero todas las celdas)...

Luego elimine el espacio vertical extra de la línea con [-1em]...

Además, con algunas ideas simples, las celdas de la segunda fila no deberían estar centradas debido al ancho adicional de la primera y la última columna... Puede ser ry les una mejor opción... y un \tabcolsepancho fijo ayudaría... la misma distancia también (como \tabcolsepentre filas):

\documentclass{article}
\usepackage{graphicx}
\usepackage{array}
\begin{document}
\setlength{\tabcolsep}{1mm}
\begin{tabular}{c>{\centering\arraybackslash}p{17.5mm}>{\centering\arraybackslash}p{17.5mm}c}
    &&&\\[-1em]
\includegraphics[width=35mm]{example-image-a} &   \multicolumn{2}{c}{\includegraphics[width=35mm]{example-image-b}} &  \includegraphics[width=35mm]{example-image-c} \\[1mm]
\multicolumn{2}{r}{\includegraphics[width=35mm]{example-image-a}} & \multicolumn{2}{l}{\includegraphics[width=35mm]{example-image-b}}
\end{tabular}
\end{document}

ingrese la descripción de la imagen aquí

Pero, ¿por qué no lo hizo en una tabla más simple (de 3 columnas)?

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\setlength{\tabcolsep}{1mm}
\begin{tabular}{ccc}
\includegraphics[width=35mm]{example-image-a}& \includegraphics[width=35mm]{example-image-b}&\includegraphics[width=35mm]{example-image-c}\\[1mm]
\multicolumn{3}{c}{\includegraphics[width=35mm]{example-image-a}\hspace{2mm}\includegraphics[width=35mm]{example-image-b}}
\end{tabular}
\end{document}

Genial... ¡Inteligente!

PeroLa respuesta de @egreg¡¡¡Es más inteligente!!! ¡Al menos encontré el problema!

PD: Mi "doble publicación" necesita la atención del moderador... pero creo que es una excepción y tengo que ofrecerla a este sitio ya que la primera pregunta fue sobre la colocación de figuras y acabo de descubrir que tengo algo que decir aquí que no era así. encontrado en otro lugar y es útil y sobre tabularscon \multicolumn... Si se debe eliminar una de las dos publicaciones, supongo que eliminar la primera (mi respuesta a la pregunta original) sería una mejor opción porque aquí me parece más útil. Entonces, por favor (los revisores) agreguen un comentario antes de marcar para eliminación.

información relacionada