我试图让每个方块的内部文本\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}
在 Ignasi 发帖之后,我将其推广到整个表。但是在 '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}