添加第二個 \multicolumn 時表格的奇怪行為

添加第二個 \multicolumn 時表格的奇怪行為

原問題是將數字放入表格中並嘗試像這樣調整它們:

2

與類似的程式碼:

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

由於某種原因,給出了這個輸出:

3

為什麼會出現這種情況?

當然,還有更好的選擇來放置這樣的數字,連結問題中的答案就是其中之一。但是嘗試使用表格開發程式碼將有助於理解有關附加單元格的一些事情,如果與\multicolumn命令結合使用將減少我們的列,這可能是意想不到的!

答案1

您應該知道最近w在套件中新增的列類型array:對於具有中心對齊(並且沒有流動文字)的固定寬度的列,您可以使用

w{c}{17.5mm}

而不是笨拙的>{\centering\arraybackslash}{p{17.5mm}

現在回到你的問題。

第二列在兩行中合併:先與第三列合併,然後與前導列合併。因此,依照規則,表的建置就像從未指定該列一樣。這解釋了你的輸出。

您需要六個相等的欄位:

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

在此輸入影像描述

答案2

  1. 第一步...

    好的,我有 5 個數字,我需要頂部 3 個,底部兩個,我想控制它們的位置...表格對我來說似乎是一個很好的解決方案...

讓我們想想:

上面三個:{ccc} 第一行正常居中,我將透過\multicolumn第二行分割單元格以共享空間......但是......

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

哦!寫第二個\multicolumn我意識到它們變成了 4 列......甚至不編譯......

看來我需要第四列:

咱們試試:

  1. 第二步...四列:

我將用以下命令分割頂部中間的列\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 個,下排 4 個…完美!我們來編譯一下

在此輸入影像描述

看來我沒算對……來數一下吧……

  • 上方第 4 行儲存格中間 2 個合併
  • 第 2 行和第 2 行儲存格下方...

為什麼第二行的第一個儲存格不與第二行合併?這應該給出第四個數字,如第五個一樣,以兩個第一列為中心......為什麼?

我需要新增第五列嗎?

讓我們來看看:

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

在此輸入影像描述

第四張圖片停在第二列之前...讓我們想想...我需要 5 列嗎?

  1. 第三步...讓我們看看那裡的垂直線?在報告錯誤之前......但我應該!

完整程式碼:

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

在此輸入影像描述

他們需要錯誤報告...但是...

好吧...我想我明白了:

第二列沒有第三列的寬度...當然...那裡不需要寬度...讓我們增加一個寬度:

……好吧,我將在中間的兩列中添加居中的 17.5mm:

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

在此輸入影像描述

為什麼是我?我們去 stackexchange 問問吧...我要離開這裡了!

  1. 沒有更多步驟:一些解釋:

讓我們在後面加上 1&2&3&4 行:

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

在此輸入影像描述

完美...但是發生了什麼事?

LaTeX 僅使用3 列,因為每行所需的最大單元格為3 個...因此,第一列是單列,而不是真正的多列...通過添加這些幫助數字...我們實際上很幸運,並且發現發生了什麼事...

讓我們來看一個更簡單的例子:

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

在此輸入影像描述

因此,在我們先前的「失敗」案例中,我們可以:

新增帶有空白儲存格的完整行(但所有儲存格)...

然後刪除該行的多餘垂直空間[-1em]...

另外,透過一些簡單的想法,第二行單元格不應該居中,因為第一列和最後一列的額外寬度...可能是r並且l是一個更好的選擇...並且\tabcolsep固定寬度會有所幫助. ..相同的距離(\tabcolsep在行之間):

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

在此輸入影像描述

但為什麼不把它做成一個更簡單的表格(3 列)呢?

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

不錯……聰明!

@egreg 的回答更聰明了!至少我發現問題了!

PS:我的「雙重貼文」需要版主注意……但我認為這是一個例外,必須向該網站提供,因為第一個問題是關於放置數字,我剛剛發現我有話要說,但沒有在其他地方找到它是有用的並且關於tabulars...\multicolumn如果應該刪除兩個帖子之一,我想刪除第一個帖子(我對原始問題的回答)將是一個更好的選擇,因為這裡對我來說似乎更有用。因此,請(審閱者)在標記刪除之前新增評論。

相關內容