Seltsames Verhalten von tabular, wenn eine zweite \multicolumn hinzugefügt wird

Seltsames Verhalten von tabular, wenn eine zweite \multicolumn hinzugefügt wird

Derursprüngliche Fragegeht es darum, Zahlen in eine Tabelle einzufügen und zu versuchen, sie folgendermaßen anzupassen:

2

mit einem Code ähnlich diesem:

\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}

Aus irgendeinem Grund führt dies zu dieser Ausgabe:

3

Warum passiert das?

Natürlich gibt es bessere Möglichkeiten, die Zahlen so zu platzieren, und die Antwort in der verlinkten Frage ist eine davon. Aber der Versuch, den Code mit der Tabelle zu entwickeln, wird uns helfen, einige Dinge über die zusätzliche Zelle zu verstehen, die, wenn sie in Kombination mit \multicolumndem Befehl verwendet wird, unsere Spalten reduziert, und das kann unerwartet sein!

Antwort1

Beachten Sie bitte die kürzliche Ergänzung des wSpaltentyps im Paket array: Für Spalten mit fester Breite und zentrierter Ausrichtung (und ohne Fließtext) können Sie

w{c}{17.5mm}

statt des ungeschickten >{\centering\arraybackslash}{p{17.5mm}.

Nun zurück zu Ihrem Problem.

Die zweite Spalte wird in beiden Zeilen zusammengeführt: zuerst mit der dritten Spalte, dann mit der führenden. Die Tabelle wird also in der Regel so aufgebaut, als wäre diese Spalte nie angegeben worden. Dies erklärt Ihre Ausgabe.

Sie möchten sechs gleiche Spalten:

\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}

Bildbeschreibung hier eingeben

Antwort2

  1. Erster Schritt...

    Ok, ich habe 5 Figuren und brauche 3 oben und zwei unten, ich möchte ihre Platzierung kontrollieren... Eine Tabelle scheint mir eine gute Lösung zu sein...

Denken wir nach:

Drei oben: {ccc} Erste Reihe normal zentriert und ich werde die Zellen \multicolumnin der zweiten aufteilen, um den Platz zu teilen... Aber...

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

Oh! Als ich das schrieb, \multicolumnwurde mir klar, dass es vier Spalten geworden waren ... Ich kompiliere nicht einmal ...

Scheint, als bräuchte ich eine vierte Spalte:

Lass es uns versuchen:

  1. Zweiter Schritt...vier Spalten:

Ich werde die oberen mittleren Spalten mit folgendem teilen \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 in der oberen Reihe, 4 in der nächsten... perfekt! Lass uns kompilieren

Bildbeschreibung hier eingeben

Scheint, als hätte ich falsch gezählt ... Zählen wir ...

  • Oberhalb von Zeile 4 sind die mittleren 2 Zellen zusammengeführt
  • Unter den Zellen von Zeile 2 und 2 ...

Warum wird die erste Zelle der zweiten Zeile nicht mit der zweiten verschmolzen? Dies sollte die vierte Zahl zentriert in den ersten beiden Spalten ergeben, wie die fünfte ... Warum?

Muss ich eine fünfte Spalte hinzufügen?

Mal sehen:

\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}

Bildbeschreibung hier eingeben

Das vierte Bild endet vor der zweiten Spalte ... Lassen Sie uns überlegen ... Brauche ich 5 Spalten?

  1. Dritter Schritt...Sehen wir uns die vertikalen Linien dort an, bevor wir einen Fehler melden ... Aber das sollte ich!

Vollständiger Code:

\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}

Bildbeschreibung hier eingeben

Sie brauchen den Fehlerbericht ... Aber ...

Ok... ich glaube, ich habe es verstanden:

Die zweite Spalte hat nicht die Breite der dritten... Natürlich... Hier ist keine Breite erforderlich... Fügen wir eine Breite hinzu:

... Ok, ich werde in den beiden mittleren Spalten zentriert 17,5 mm hinzufügen:

\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}

Bildbeschreibung hier eingeben

Warum ich???Fragen wir bei Stackexchange ... Ich bin hier raus!

  1. Keine weiteren Schritte: Einige Erklärungen:

Fügen wir dort hinten die Zeilen 1&2&3&4 hinzu:

\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}

Bildbeschreibung hier eingeben

Perfekt... Aber was ist passiert?

LaTeX verwendete nur 3 Spalten, da maximal 3 Zellen pro Zeile benötigt wurden... Die erste Spalte war also eine Einzelspalte und nicht wirklich eine Mehrspalte... Durch das Hinzufügen dieser Hilfsnummern... hatten wir tatsächlich Glück und fanden heraus, was passiert war...

Sehen wir es uns an einem einfacheren Beispiel an:

\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}

Bildbeschreibung hier eingeben

In unserem vorherigen „fehlgeschlagenen“ Fall können wir also:

Fügen Sie eine vollständige Zeile mit leeren Zellen (aber allen Zellen) hinzu ...

Entfernen Sie dann den zusätzlichen vertikalen Abstand der Zeile mit [-1em]...

Außerdem sollten die Zellen der zweiten Zeile aufgrund der zusätzlichen Breite der ersten und letzten Spalte mit ein paar einfachen Überlegungen nicht zentriert werden. Dies könnte reine lbessere Wahl sein und eine \tabcolsepfeste Breite würde helfen. Auch der gleiche Abstand (wie \tabcolsepzwischen den Zeilen) sollte eingehalten werden:

\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}

Bildbeschreibung hier eingeben

Aber warum wurde es nicht in einer einfacheren Tabelle (mit 3 Spalten) gemacht?

\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}

Schön... clever!

Aber@egregs Antwortist schlauer!!! Zumindest habe ich das Problem gefunden!

PS: Mein „Doppelbeitrag“ erfordert die Aufmerksamkeit eines Moderators … aber ich denke, es ist eine Ausnahme und ich muss dieser Site etwas anbieten, da die erste Frage sich um das Platzieren von Figuren drehte und ich gerade herausgefunden habe, dass ich hier etwas zu sagen habe, was ich nirgendwo anders gefunden habe und was nützlich ist und was tabularsmit \multicolumn… zu tun hat. Wenn einer der beiden Beiträge gelöscht werden sollte, wäre es vermutlich die bessere Wahl, den ersten (meine Antwort auf die ursprüngliche Frage) zu löschen, da er mir nützlicher erscheint. Fügen Sie also (Rezensenten) bitte einen Kommentar hinzu, bevor Sie ihn zum Löschen markieren.

verwandte Informationen