Заполните доступное пространство в табличном квадрате

Заполните доступное пространство в табличном квадрате

Я пытаюсь, чтобы внутренний текст каждого квадрата моего \tabularзаполнил все доступное пространство. Например, в таблице ниже я хотел бы, чтобы мои a2 и b2 занимали все columnпод s2 таким образом, чтобы не было видно пустых мест там, где будут c2 и d2.

\usepackage{amssymb}
\usepackage{multirow}

...

\begin{center}\begin{tabular}{|c|c|c|c|}
  \hline
  \multicolumn{4}{|c|}{\bf title}\\
  \hline \hline
  \bf s1 & \bf s2 & \bf s3 & \bf s4\\
  \hline \hline
  \multirow{4}{*}{$\varnothing$} & a2 & a3 & a4\\
  & b2 & b3 & b4\\
  & & c3 & c4\\
  & & d3 &\\
  \hline
\end{tabular}\label{table}\end{center}

Может, кто-нибудь подскажет?


Редактировать:

\usepackage{amssymb}
\usepackage{multirow}

...

\begin{center}\begin{tabular}{|c|c|c|c|}
  \hline
  \multicolumn{4}{|c|}{\bf Requête}\\
  \hline \hline
  \bf s1 & \bf s2 & \bf s3 & \bf s4\\
  \hline \hline
  \multirow{5}{*}{$\varnothing$} & \multirow{2}{*}{a2} & a3 & \multirow{3}{*}{a4}\\
  & \multirow{2}{*}{b2} & b3 & \multirow{3}{*}{b4}\\
  & & c3 & \multirow{3}{*}{c4}\\
  & & d3 &\\
  & & e3 &\\
  \hline
\end{tabular}\end{center}

После поста Игнаси я популяризировал всю таблицу. Но под 's2' появляется неисправность:Стол

решение1

Вы можете использовать \multirowнекоторые приемы расстановки пробелов, чтобы получить этот результат (см. первую таблицу ниже), но, не зная больше о ваших данных, трудно понять, как это поможет читателю.

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


Обратите внимание, что \bfэто устаревшая команда; используйте \textbf{}вместо нее. Еще лучше, как я показываю здесь, определить семантическую команду, например, \tableheaderотделить стиль от контента. Существуют пакеты таблиц, которые сделают это еще проще.

Я бы также предложил использовать заголовок таблицы вместо строки заголовка и использовать его etoolboxдля центрирования всех таблиц.


\documentclass{article}
\usepackage{multirow} % for \multirow
\usepackage{amssymb} % for \varnothing
\usepackage[position=above]{caption} % for table caption positioned above

\usepackage{booktabs} % for more attractive table spacing and rules
\usepackage{etoolbox} % center the tables
\AtEndEnvironment{table}{\centering}

\newcommand{\tableheader}[1]{\textbf{#1}}

\begin{document}
\begin{table}
\caption{Title}
\label{table}
\begin{tabular}{|c|c|c|c|}
\hline
%\multicolumn{4}{|c|}{\tableheader{title}}\\ % use caption instead?
%\hline \hline
\tableheader{s1} & \tableheader{s2} & \tableheader{s3} & \tableheader{s4}\\
\hline \hline
\multirow{4}{*}{$\varnothing$} & 
    \multirow{4}{*}{%
        \vspace*{\fill}
        \renewcommand{\arraystretch}{2}
        \begin{tabular}{@{}c}
        a2\\
        b2\\
        \end{tabular}%
        \vspace*{\fill}%
    } & a3 & a4\\
 & & b3 & b4\\
 & & c3 & c4\\
 & & d3 &\\
\hline
\end{tabular}
\end{table}

%***************************************
\begin{table}
\caption{Rotated}
\label{table:rotated}
\begin{tabular}{*{5}c}
\toprule
S-value & \multicolumn{4}{c}{Result}\\
\midrule
s1      & $\varnothing$ & $\varnothing$ & $\varnothing$ & $\varnothing$\\
s2      & a2 & b2 & &\\
s3      & a3 & b3 & c3 & d3\\
s4      & a4 & b4 & c4 & d4\\
\bottomrule
\end{tabular}
\end{table}

\end{document}

В будущем, пожалуйста, опубликуйте полный пример, включая все используемые пакеты (в данном случае multirowи amssymb).

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

решение2

Не уверен, что понял вопрос, но что-то вроде этого?

\documentclass{article}
\usepackage{multirow}
\usepackage{amsmath,amssymb}

\begin{document}
\begin{center}\begin{tabular}{|c|c|c|c|}
  \hline
  \multicolumn{4}{|c|}{\bf title}\\
  \hline \hline
  \bf s1 & \bf s2 & \bf s3 & \bf s4\\
  \hline \hline
  \multirow{4}{*}{$\varnothing$} & \multirow{2}{*}{a2} & a3 & a4\\
  & & b3 & b4\\
  & \multirow{2}{*}{b2} & c3 & c4\\
  & & d3 &\\
  \hline
\end{tabular}\label{table}\end{center}
\end{document}

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

Предложенное решение необходимо корректировать с любой новой строкой, которая добавляется в исходную таблицу. В случае, если оно расширено до пяти строк, multirowможет быть применено только к четвертому столбцу, в то время как второй столбец составлен для неправильно размещенных обычных ячеек.

\documentclass{article}
\usepackage{multirow}
\usepackage{amsmath,amssymb}

\begin{document}
\begin{center}\begin{tabular}{|c|c|c|c|}
  \hline
  \multicolumn{4}{|c|}{\bf title}\\
  \hline \hline
  \bf s1 & \bf s2 & \bf s3 & \bf s4\\
  \hline \hline
  \multirow{5}{*}{$\varnothing$} &  & a3 & \multirow{2}{*}{a4}\\
  & a2 & b3 & \\
  & & c3 & b4\\
  & b2 & d3 &\multirow{2}{*}{c4}\\
  & & e3 &\\
  \hline
\end{tabular}\label{table}\end{center}
\end{document}

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

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