答案1
我认为第一个表格有两个主要挑战:
如何使其适合文本块?基本
tabular
环境不能保证这个 17 列表格确实适合。如何排版标题行(“进程 ID...”)?
为了应对这些挑战,我建议您使用 (a)tabular*
宽度设置为的环境\textwidth
和 (b)\multicolumn
指令,如下面的代码所示。顺便说一句,我会右对齐数字,而不是左对齐。
第三个挑战可能是如何用浅灰色背景呈现整个表格材料。在下面的代码中,我使用了这个答案应对这一挑战。
关于第二张表,我认为将数字材料设置为用花括号括起来的(数学)矩阵是不对的。更重要的是将标题单元格与其对应的列对齐。另外,我还想说,为了便于阅读,将数字与各自的小数点对齐也很重要。因此,我将使用环境tabular
以及包S
的列类型siunitx
来表示四个“真实”数据列。
\documentclass{article}
\usepackage{booktabs,siunitx,xcolor}
\definecolor{lightgray}{gray}{0.85} % define a suitable version of "light gray"
\newcommand\mytab[1]{\smash{%
\begin{tabular}[t]{@{}c@{}}#1\end{tabular}}}
\begin{document}
\noindent
\begingroup % localize scope of next two instructions
\setlength\tabcolsep{0pt} % make LaTeX figure out inter-column whitespace
\setlength\fboxsep{0pt} % see https://tex.stackexchange.com/a/63897/5001
\colorbox{lightgray}{%
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} *{17}{r}}
\toprule
\multicolumn{6}{@{}l}{Process ID: 3939}\\[0.5ex]
105 & 104& 104& 106& 105& 104& 104& 106& 105& 104& 104& 106& 5& 4& 5& 5 &0 \\
40 & 41 & \dots \\
3 & 3 & \dots \\
3 & 12 & \dots \\
\bottomrule
\end{tabular*}}
\endgroup
\bigskip
\begin{center}
\begin{tabular}{@{}c *{2}{S[table-format=1.3]}
c *{2}{S[table-format=1.3]} @{}}
\toprule
\mytab{Distinct\\System Call} &
\multicolumn{5}{c}{Trace} \\
\cmidrule(l){2-6}
& {1} & {2} & & {$m-1$} & {$m$} \\
\midrule
1 & 0.051 & 0.055 & \dots & 0.049 & 0.051 \\
2 & 0.122 & 0.125 & \dots & \\
&{\vdots}&{\vdots}&{\vdots}& \\
155& 0.101 & 0.1 & \dots & \\
167& 0.03 & 0.03 & \dots & 0.02 & 0.03 \\
\bottomrule
\end{tabular}
\end{center}
\end{document}