Создание таблицы с разным количеством ячеек в строках в LaTeX

Как сделать такую таблицу в LaTeX?

Суть в том, что первый и последний столбцы должны быть выровнены по ширине.
Ячейки посередине должны выглядеть следующим образом: в первых двух строках между первым и вторым столбцом идут пять одинаковых по ширине ячеек, в третьей строке - четыре, и в последних двух строках - тоже пять.

Фотография выражает структуру таблицы.

Таблица для вычисления значения величины с погрешностью по результатам нескольких измерений.

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Vladimir

Если бы автор вопроса приложил свою попытку сделать такую таблицу, то я мог бы использовать данные оттуда (чтобы самому не тратить время на ввод формул). Но раз примера не было, то приведу таблицы с минимальным содержанием.

Для создания такой таблицы можно сделать вложенную таблицу и использовать команду \multicolumn. Проблема будет с отбивками, которые тех вставляет вокруг ячеек - у вложенной таблицы они будут отличаться от внешней. Поэтому, проще всего будет избавиться от всех этих отбивок (командой @{} в преамбуле каждой из таблиц). Для задания ячеек будет удобнее использовать один из спецификаторов столбцов из пакета array: p, m или b - они позволяют руками задать требуемую ширину столбца (это касается первого и последнего, которые должны быть шире остальных). Далее можно использовать тот же тип и для всех внутренних столбцов, но тогда понадобится размер подбирать точно, чтобы вертикальные линии совпадали. Либо можно воспользоваться спецификатором столбцов X из пакета tabularx и окружением для таблиц tabularx, которое позволяет задать ширину всей таблицы. Далее пара примеров.

Первый вариант: использовно обычное окружение tabular и ручной подбор ширины столбцов.

\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{array}

\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

\begin{document}

\centering
\begin{tabular}{ |@{}C{20mm}@{}|*{5}{@{}C{8mm}@{}|}@{}C{20mm}@{}| }
    \hline
    a & b & c & d & e & f & g\\  \hline
    a & b & c & d & e & f & g\\  \hline
    start & 
            \multicolumn{5}{@{}l@{}}{ 
                \begin{tabular}{*{4}{@{}C{10.1mm}@{}|}} 
                    1 & 2 & 3 & 4 %\\ \hline 1 & 2 & 3 & 4 \\ 
                \end{tabular}}
    & end \\  \hline
    a & b & c & d & e & f & g\\  \hline
    a & b & c & d & e & f & g\\  \hline
\end{tabular}

\end{document}

Результат выглядит так: введите сюда описание изображения

Второй вариант, с автоматическим вычислением ширины внутренних столбцов и окружением tabularx мне кажется более удобным; здесь нужно указать только ширину таблиц целиком и ширины первого и последнего столбца (для вложенной и внешней таблиц эти значения должны, конечно же, совпадать):

\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{array}
\usepackage{tabularx}

\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

\begin{document}

\centering
\begin{tabularx}{100mm}{ |@{}C{15mm}@{}|*{5}{@{}>{\centering\arraybackslash}X@{}|}@{}C{15mm}@{}| }
    \hline
    a & b & c & d & e & f & g \\ \hline
    a & b & c & d & e & f & g \\ \hline
    \multicolumn{7}{@{}l@{}}{
        \begin{tabularx}{100mm}{ |@{}C{15mm}@{}|
                @{}*{4}{@{}>{\centering\arraybackslash}X@{}|}
                @{}C{15mm}@{}|}
            start  & 1 & 2 & 3 & 4 & stop %\\ \hline     start  & 1 & 2 & 3 & 4 & stop \\ 
    \end{tabularx}} \\ \hline
    a & b & c & d & e & f & g\\ \hline
    a & b & c & d & e & f & g\\ \hline
\end{tabularx}

\end{document}    

Соответственно, результат для этого варианта: введите сюда описание изображения

В обоих случаях для столбцов фиксированной ширины использовался определенный мной в преамбуле формат C, а для формата с автоподбором ширины я не стал переопределять столбец, а просто явно добавил в преамбулу таблиц команду >{\centering\arraybackslash} - она просто должна выравнивать содержимое ячейки по центру.

Также, в обоих случаях я оставил закомментированной для вложенной таблицы вторую строку - можно раскомментировать и посмотреть, как будут выглядеть таблицы в этом случае.

→ Ссылка