Theисходный вопросзаключается в размещении цифр в таблице и попытке отрегулировать их следующим образом:
с кодом, подобным этому:
\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}
По какой-то причине это дает такой вывод:
Почему это происходит?
Конечно, есть лучшие варианты для размещения цифр таким образом, и ответ в связанном вопросе - один из них. Но попытка разработать код с табличным поможет понять некоторые вещи о дополнительной ячейке, которая, если будет использоваться в сочетании с
\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
Первый шаг...
Хорошо, у меня есть 5 фигур, и мне нужно, чтобы 3 были сверху и две снизу, я хочу контролировать их размещение... Мне кажется, что таблица будет хорошим решением...
Давай подумаем:
Три сверху: {ccc}
первый ряд по центру, а ячейки я разделю через \multicolumn
второй, чтобы разделить пространство... Но...
\begin{tabular}{ccc}
\include..&\include..&\include..\\
\multicolumn{2}{c}&\multicolumn{2}{c}
\end{tabular}
О! Написав вторую часть, \multicolumn
я понял, что они стали 4 столбцами... Даже не компилирую...
Кажется, мне нужна четвертая колонка:
Давай попробуем:
- Второй шаг...четыре столбца:
Я разделю верхние средние столбцы следующим образом \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 столбцов?
- Третий шаг...Давайте посмотрим на вертикальные линии, прежде чем сообщать об ошибке... Но я должен это сделать!
Полный код:
\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,5 мм по центру в обоих средних столбцах:
\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&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's ответумнее!!! По крайней мере я нашел проблему!
PS: Мой "двойной пост" требует внимания модератора... но я думаю, что это исключение и я должен предложить его этому сайту, поскольку первый вопрос был о размещении фигур, и я только что обнаружил, что мне есть что сказать здесь, чего не нашли больше нигде, и это полезно и о
tabulars
...\multicolumn
Если один из двух постов следует удалить, я полагаю, что удаление первого (мой ответ на исходный вопрос) будет лучшим выбором, потому что он кажется мне более полезным. Поэтому, пожалуйста (рецензенты), добавьте комментарий, прежде чем помечать для удаления.