这是我的代码。我想让网格和线性文本不接触顶线。但我做不到。
\begin{table*}[t]
\centering
\fontsize{15}{15}\selectfont
\caption{table}
\label{tab:table1}
\resizebox{17cm}{!}{
\begin{tabular}{|*{17}{c|}}
\cline{1-17}
%\cline{1-1} \cline{9-10}
\multicolumn{7}{|c|}{} & \multicolumn{5}{|c|} {Grid} & \multicolumn{5}{|c|}{Linear} \\[2ex]
\hline
N & Pmd & Pfa & N.Pmd & N.Pfa & 2N.Pmd & 2N.Pfa & N\textsubscript{gd}(N\textsubscript{gd}>2N.Pmd) & N\textsubscript{gd}(N\textsubscript{gd}>2N.Pfa) & h\textsubscript{gd1} & h\textsubscript{gd2} & h\textsubscript{opt\_gd} & N\textsubscript{ln}(N\textsubscript{ln}>2N.Pmd) & N\textsubscript{ln}(N\textsubscript{ln}>2N.Pfa) & h\textsubscript{ln1} & h\textsubscript{ln2} & h\textsubscript{opt\_lm} \\ [1ex]
\hline
10 & 0.05 & 0.10 & 0.5 & 1 & 1 & 2 & 5 & 5 & 1 & 1 & 1 & 3 & 3 & 1 & 1 & 1\\[1ex]
\hline
50 & 0.05 & 0.10 & 2.5 & 5 & 5 & 10 & 13 & 13 & 2 & 2 & 2 & 11 & 11 & 5 & 5 & 5\\[1ex]
\hline
\end{tabular}
}
\end{table*}
答案1
\arraystretch
您可以使用(这将全局更改)命令或具有所需高度但具有宽度的垂直规则来增加行高0pt
。在这里,我\Strut
为此目的定义了一个命令并在 中使用\multicolumn
。
\begin{table*}[t]
\centering
\fontsize{15}{15}\selectfont
\caption{table}
\label{tab:table1}
\renewcommand\arraystretch{1.5}
\newcommand\Strut[1]{\vrule height #1 width 0pt depth 0pt}
\resizebox{14cm}{!}{\begin{tabular}{|*{17}{c|}}
\cline{1-17}
%\cline{1-1} \cline{9-10}
\multicolumn{7}{|c|}{} & \multicolumn{5}{|c|} {Grid \Strut{2pc}} & \multicolumn{5}{|c|}{Linear}
\\[2ex]
\hline
N & Pmd & Pfa & N.Pmd & N.Pfa & 2N.Pmd & 2N.Pfa & N\textsubscript{gd} (N\textsubscript{gd}>2N.Pmd) & N\textsubscript{gd} (N\textsubscript{gd}>2N.Pfa) & h\textsubscript{gd1} & h\textsubscript{gd2} & h\textsubscript{opt\_gd} & N\textsubscript{ln}(N\textsubscript{ln}>2N.Pmd) & N\textsubscript{ln}(N\textsubscript{ln}>2N.Pfa) & h\textsubscript{ln1} & h\textsubscript{ln2} & h\textsubscript{opt\_lm} \\ [1ex]
\hline
10 & 0.05 & 0.10 & 0.5 & 1 & 1 & 2 & 5 & 5 & 1 & 1 & 1 & 3 & 3 & 1 & 1 & 1\\[1ex]
\hline
50 & 0.05 & 0.10 & 2.5 & 5 & 5 & 10 & 13 & 13 & 2 & 2 & 2 & 11 & 11 & 5 & 5 & 5\\[1ex]
\hline
\end{tabular}
}
\end{table*}
答案2
我提出了两种解决方案,使用更大的字体,不需要resizebox
:
一个带有垂直线的行。行的内容与包垂直居中cellspace
,确保以字母为前缀的列中的单元格顶部和底部具有最小的垂直填充S
。
看起来更专业的表格,只有水平规则,其中填充是通过包的\aboverulesep
和\belowrulesep
长度实现的booktabs
。
两种解决方案都使用makecell
,允许在单元格中换行。
最后,我冒昧地认为第 6 至第 7 列(对应于琐碎的计算)是不必要的,因为公式在第 8-9 列和第 13-14 列中提到——但也许我错了。结果是一个包含 13 列的表格,适合边距。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx,array, booktabs, caption}
\usepackage[textwidth=17cm, showframe, nomarginpar]{geometry}
\usepackage{makecell}
\usepackage{cellspace}
\setlength\cellspacetoplimit{4pt}
\setlength\cellspacebottomlimit{4pt}
\begin{document}
\null\vskip1cm
\begin{table}[!htb]
\centering\footnotesize\setlength\tabcolsep{3.6pt}
\caption{table1}
\label{tab:table1}
\begin{tabular}{|*{13}{Sc|}}
\cline{4-13}
\multicolumn{3}{c|}{} & \multicolumn{5}{Sc|} {Grid} & \multicolumn{5}{Sc|}{Linear} \\
\hline
N & Pmd & Pfa & \makecell{N\textsubscript{gd} \\(N\textsubscript{gd}>2N.Pmd)} & \makecell{N\textsubscript{gd}\\(N\textsubscript{gd}>2N.Pfa)} & h\textsubscript{gd1} & h\textsubscript{gd2} & h\textsubscript{opt\_gd} & \makecell{N\textsubscript{ln}\\(N\textsubscript{ln}>2N.Pmd)} & \makecell{N\textsubscript{ln}\\(N\textsubscript{ln}>2N.Pfa)} & h\textsubscript{ln1} & h\textsubscript{ln2} & h\textsubscript{opt\_lm} \\
\hline
10 & 0.05 & 0.10 & 5 & 5 & 1 & 1 & 1 & 3 & 3 & 1 & 1 & 1 \\
\hline
50 & 0.05 & 0.10 & 13 & 13 & 2 & 2 & 2 & 11 & 11 & 5 & 5 & 5 \\
\hline
\end{tabular}
\end{table}
\begin{table}[!htb]
\centering\footnotesize\setlength\tabcolsep{3.6pt}
\renewcommand\cellalign{bc}
\caption{table1}
\label{tab:table1}
\begin{tabular}{*{13}{c}}
\noalign{\vspace*{-\aboverulesep}}\cmidrule[\heavyrulewidth]{4-13}
\multicolumn{3}{c}{} & \multicolumn{5}{c} {Grid} & \multicolumn{5}{c}{Linear} \\
\cmidrule(lr){4-8}\cmidrule(lr){9-13}
N & Pmd & Pfa & \makecell{N\textsubscript{gd} \\(N\textsubscript{gd}>2N.Pmd)} & \makecell{N\textsubscript{gd}\\(N\textsubscript{gd}>2N.Pfa)} & h\textsubscript{gd1} & h\textsubscript{gd2} & h\textsubscript{opt\_gd} & \makecell{N\textsubscript{ln}\\(N\textsubscript{ln}>2N.Pmd)} & \makecell{N\textsubscript{ln}\\(N\textsubscript{ln}>2N.Pfa)} & h\textsubscript{ln1} & h\textsubscript{ln2} & h\textsubscript{opt\_lm} \\
\midrule
10 & 0.05 & 0.10 & 5 & 5 & 1 & 1 & 1 & 3 & 3 & 1 & 1 & 1 \\
\addlinespace
50 & 0.05 & 0.10 & 13 & 13 & 2 & 2 & 2 & 11 & 11 & 5 & 5 & 5 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案3
首先,请删除语句\fontsize{15}{15}\selectfont
。其次,删除间距指令[2ex]
和[1ex]
。第三,在后面添加诸如\renewcommand\arraystretch{1.5}
立即执行之类的指令。另外,请将(默认值:)\begin{table*}
的值减小为类似于的值,以防止由引起的字体大小的线性减小变得过于极端(并可能导致整个表格难以辨认)。最后,您应该删除第一个标题行中的双倍厚度垂直条。\tabcolsep
6pt
2pt
\resizebox
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{graphicx,array}
\usepackage[textwidth=17cm]{geometry}
\begin{document}
\begin{table*}[t]
%\fontsize{15}{15}\selectfont
\caption{table}
\label{tab:table1}
\renewcommand\arraystretch{1.5}
\setlength\tabcolsep{2pt} % default value: 6pt
\resizebox{\textwidth}{!}{
\begin{tabular}{|*{17}{c|}}
\hline
%\cline{1-1} \cline{9-10}
\multicolumn{7}{|c|}{} & \multicolumn{5}{c|}{Grid} & \multicolumn{5}{c|}{Linear} \\
\hline
N & Pmd & Pfa & N.Pmd & N.Pfa & 2N.Pmd & 2N.Pfa & N\textsubscript{gd}(N\textsubscript{gd}>2N.Pmd) & N\textsubscript{gd}(N\textsubscript{gd}>2N.Pfa) & h\textsubscript{gd1} & h\textsubscript{gd2} & h\textsubscript{opt\_gd} & N\textsubscript{ln}(N\textsubscript{ln}>2N.Pmd) & N\textsubscript{ln}(N\textsubscript{ln}>2N.Pfa) & h\textsubscript{ln1} & h\textsubscript{ln2} & h\textsubscript{opt\_lm} \\
\hline
10 & 0.05 & 0.10 & 0.5 & 1 & 1 & 2 & 5 & 5 & 1 & 1 & 1 & 3 & 3 & 1 & 1 & 1\\
\hline
50 & 0.05 & 0.10 & 2.5 & 5 & 5 & 10 & 13 & 13 & 2 & 2 & 2 & 11 & 11 & 5 & 5 & 5\\
\hline
\end{tabular}
}
\end{table*}
\end{document}
附录:在进一步研究了您的表格后,我发现,只要对标题行进行轻微的重新组织,就不再需要大幅调整表格材料的大小以使其适合文本块。通过指令简单地将尺寸线性缩小 10% 就足够\small
了。我还建议删除所有垂直规则,并\hline
用包中更复杂的宏替换booktabs
:\toprule
、、和。我还建议您将\midrule
各个标题条目替换为。\cmidrule
\bottomrule
.
\cdot
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{graphicx,array,booktabs,caption}
\usepackage[textwidth=17cm]{geometry}
\begin{document}
\begin{table}[t]
\small % 10% linear reduction of font size
\caption{table}
\label{tab:table1}
\renewcommand\arraystretch{1.5}
\setlength\tabcolsep{0pt} % let LaTeX figure out the intercolumn whitespace
\begin{tabular*}{\textwidth}{c @{\extracolsep{\fill}} *{16}{c} }
\toprule
\multicolumn{7}{c}{} & \multicolumn{5}{c}{Grid} & \multicolumn{5}{c}{Linear} \\
\cmidrule{8-12} \cmidrule{13-17}
N & Pmd & Pfa & N$\cdot$Pmd & N$\cdot$Pfa & 2N$\cdot$Pmd & 2N$\cdot$Pfa &
\multicolumn{2}{c}{N\textsubscript{gd} >} &
h\textsubscript{gd1} & h\textsubscript{gd2} & h\textsubscript{opt\_gd} &
\multicolumn{2}{c}{N\textsubscript{ln} >} &
h\textsubscript{ln1} & h\textsubscript{ln2} & h\textsubscript{opt\_lm} \\
\cmidrule{8-9} \cmidrule{13-14}
\multicolumn{7}{c}{} & 2N$\cdot$Pmd & 2N$\cdot$Pfa &
\multicolumn{3}{c}{} & 2N$\cdot$Pmd & 2N$\cdot$Pfa \\
\midrule
10 & 0.05 & 0.10 & 0.5 & 1 & 1 & 2 & 5 & 5 & 1 & 1 & 1 & 3 & 3 & 1 & 1 & 1\\
50 & 0.05 & 0.10 & 2.5 & 5 & 5 & 10 & 13 & 13 & 2 & 2 & 2 & 11 & 11 & 5 & 5 & 5\\
\bottomrule
\end{tabular*}
\end{table}
\end{document}