сложная таблица с разделенными и объединенными ячейками

сложная таблица с разделенными и объединенными ячейками

Я хотел бы создать таблицу, как на следующем снимке экрана. Я мог бы использовать \multicolumn для создания второй строки с S1,S2 и т. д. На следующем этапе я не мог разделить ячейки для 'V' и 'I'.сложная таблица

решение1

Чем меньше вертикальных линий в таблице, тем лучше.Если принять эту аксиому, то ноль — это правильное количество вертикальных линий. Они не служат никакой цели и просто мешают чтению.

Также горизонтальные линии следует использовать экономно, в основном для разделения фрагментов строк, которые связаны между собой. Смещение содержимого ячейки по вертикали не требуется: пустая ячейка в теле таблицы означает «повторить значение выше».

Итак, вот мое предложение по таблице, которое очень похоже на предложение Свенда Твескега, но отличается от него размещением заголовков строк.

Обратите внимание, что \cmidrule(lr)используется для пояснения того, как следует интерпретировать группы столбцов.

\documentclass{article}

\usepackage{booktabs}

\begin{document}

\begin{table}
\centering
\begin{tabular}{*{16}{l}}
\toprule
\multicolumn{2}{c}{Data1} & \multicolumn{14}{c}{Data2} \\
\cmidrule(lr){3-16}
&& \multicolumn{2}{c}{S1} & \multicolumn{2}{c}{S2}
 & \multicolumn{2}{c}{S3} & \multicolumn{2}{c}{S4}
 & \multicolumn{2}{c}{S5} & \multicolumn{2}{c}{S6}
 & \multicolumn{2}{c}{S7} \\
\cmidrule(lr){3-4}\cmidrule(lr){5-6}\cmidrule(lr){7-8}\cmidrule(lr){9-10}
\cmidrule(lr){11-12}\cmidrule(lr){13-14}\cmidrule(lr){15-16}
&& V & I      & V & I      & V & I      & V & I      & V & I      & V & I      & V & I      \\
\midrule
Subdata1 & Try1 &&&&&&&&&&&&&& \\
         & Try2 &&&&&&&&&&&&&& \\
\midrule
Subdata2 & Try1 &&&&&&&&&&&&&& \\
         & Try2 &&&&&&&&&&&&&& \\
\midrule
Subdata3 & Try1 &&&&&&&&&&&&&& \\
         & Try2 &&&&&&&&&&&&&& \\
\bottomrule
\end{tabular}
\end{table}

\end{document}

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

решение2

Вот как бы я это сделал (с предложениями отэгрегвключено):

\documentclass{article}

\usepackage[hmargin = 3cm]{geometry} % to avoid `overfull \hbox' warning
\usepackage{booktabs,multirow,makecell}

\def\mc#1#2{\multicolumn{#1}{c}{#2}}
\def\mr[#1]#2#3{\multirowcell{#2}[#1]{#3}}

\begin{document}

\begin{table}
\setlength\tabcolsep{9pt}
\centering
  \begin{tabular}{*{16}{l}}
   \toprule
      \mc{2}{Data1}
    & \mc{14}{Data2} \\
   \cmidrule{3-16}
   && \mc{2}{S1}
    & \mc{2}{S2}
    & \mc{2}{S3}
    & \mc{2}{S4}
    & \mc{2}{S5}
    & \mc{2}{S6}
    & \mc{2}{S7} \\
      \cmidrule(lr){3-4}
      \cmidrule(lr){5-6}
      \cmidrule(lr){7-8}
      \cmidrule(lr){9-10}
      \cmidrule(lr){11-12}
      \cmidrule(lr){13-14}
      \cmidrule(lr){15-16}
    && V & I & V & I & V & I & V & I & V & I & V & I & V & I \\
   \midrule
    \mr[-0.5ex]{2}{Subdata1} & Try1 &&&&&&&&&&&&&& \\
   \cmidrule(l){2-16}
                             & Try2 &&&&&&&&&&&&&& \\
   \midrule
    \mr[-0.5ex]{2}{Subdata2} & Try1 &&&&&&&&&&&&&& \\
   \cmidrule(l){2-16}
                             & Try2 &&&&&&&&&&&&&& \\
   \midrule
    \mr[-0.5ex]{2}{Subdata3} & Try1 &&&&&&&&&&&&&& \\
   \cmidrule(l){2-16}
                             & Try2 &&&&&&&&&&&&&& \\
   \midrule
                             &      &&&&&&&&&&&&&& \\
   \cmidrule(l){2-16}
                             &      &&&&&&&&&&&&&& \\
   \bottomrule
  \end{tabular}
\end{table}

\end{document}

выход

Обратите внимание на отсутствие вертикальных линий: они часто больше мешают, чем помогают.

решение3

Вам не нужно думать о разделении ячеек, но вы можете объединить разное количество ячеек. Как вы уже знаете, \multicolumnи его синтаксис довольно прост, вот способ создания первых трех строк с различным слиянием.

  • Я создаю строку со всеми простыми ячейками
  • Я сделал строку с объединенными 2-ячейками
  • Я вставил строку с объединенными 14 ячейками
  • Я позаботился о сохранении нужных строк, добавив их также в спецификации многоколоночного формата.

\documentclass{article}
\renewcommand*{\familydefault}{\sfdefault}
\renewcommand*{\arraystretch}{1.5}
\begin{document}
\begin{tabular}{|l|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
  \hline
  \multicolumn{2}{|l|}{Data1} & \multicolumn{14}{c|}{Data 2} \\
  \cline{3-16}
  \multicolumn{2}{|c|}{} & \multicolumn{2}{l|}{S1} & \multicolumn{2}{l|}{S2}
     & \multicolumn{2}{l|}{S3} & \multicolumn{2}{l|}{S4}
     & \multicolumn{2}{l|}{S5} & \multicolumn{2}{l|}{S5}
     & \multicolumn{2}{l|}{S7} \\
  \cline{3-16}
  \multicolumn{2}{|c|}{} & V & I & V & I & & & & & & & & & & \\
  \hline
\end{tabular}
\end{document}

Чтобы узнать больше об объединении, перейдите по ссылкам «Связанные» и «Связанные» справа.

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

Связанный контент