有人可以帮我修复这张桌子吗?:
\documentclass{article}
\usepackage{siunitx,booktabs,caption}
\newcommand{\splitcell}[1]{%
\begin{tabular}{@{}c@{}}\strut#1\strut\end{tabular}%
}
\begin{document}
\begin{table}[htp]
\centering
\caption{The table caption}
\begin{tabular}{
S[table-format=2.0]
S[table-format=1.0]
S[table-format=1.6]
S[table-format=1.4]
S[table-format=1.3]
}
\toprule
{$t$ (\si{\nano\meter})} &
{$W$ (\si{\micro\meter})} &
\multicolumn{3}{c}{My results} \\
\cmidrule{3-5}
& &
{Re} &
{\splitcell{Theor.\\Overlap\\factor}} &
{\splitcell{Theor.\\MPA\\(\si{dB/mm})}} \\
\midrule
25 & 8 & 1.447413 & 0.9627 & 2.128 \\
& 4 & 1.446128 & 0.9538 & 1.20 \\
\midrule
31 & 8 & 1.448499 & 0.9377 & 4.196 \\
& 4 & 1.446889 & 0.9571 & 2.78 \\
\bottomrule
\multicolumn{3}{c}{Her results} \\
\cmidrule{6-8}
& &
{Re} &
{\splitcell{Theor.\\Overlap\\factor}} &
{\splitcell{Theor.\\MPA\\(\si{dB/mm})}} \\
\midrule
25 & 8 & 1.447413 & 0.9627 & 2.128 \\
& 4 & 1.446128 & 0.9538 & 1.20 \\
\midrule
31 & 8 & 1.448499 & 0.9377 & 4.196 \\
& 4 & 1.446889 & 0.9571 & 2.78 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案1
(从同一个OP的帖子中迁移了以下答案,请参阅整理桌子(后来被认为是重复的)
这是一个解决方案,它使用tabularx
包和该包的列类型的修改形式X
来排版标题第二行中的六个多行标题单元格。以这种方式使用的一个令人高兴的副作用tabularx
是不需要使用宏\splitcell
。
\documentclass{article}
\usepackage{siunitx,booktabs,tabularx,ragged2e}
\sisetup{group-digits=false} % optional
\newcolumntype{C}{>{\Centering\arraybackslash}X}
\newcommand\mC[1]{\multicolumn{1}{@{}C@{}}{#1}} % handy shortcut macro
\begin{document}
\begin{table}
\caption{The table caption}\label{tab:mine-and-hers}
\begin{tabularx}{\textwidth}{%
@{} cc *{2}{S[table-format=1.6]
S[table-format=1.4]
S[table-format=1.3]} @{} }
\toprule
$t$ (\si{\nano\meter}) & $W$ (\si{\micro\meter}) &
\multicolumn{3}{c}{My results} & \multicolumn{3}{c}{Her results} \\
\cmidrule(lr){3-5} \cmidrule(l){6-8}
& &
\mC{Re} & \mC{Theor.\ Overlap factor} & \mC{Theor.\ MPA (\si{dB/mm})} &
\mC{Re} & \mC{Theor.\ Overlap factor} & \mC{Theor.\ MPA (\si{dB/mm})}\\
\midrule
25 & 8 & 1.447413 & 0.9627 & 2.128 & 1.447413 & 0.9627 & 2.128\\
& 4 & 1.446128 & 0.9538 & 1.20 & 1.446128 & 0.9538 & 1.20\\
\midrule
31 & 8 & 1.448499 & 0.9377 & 4.196 & 1.448499 & 0.9377 & 4.196\\
& 4 & 1.446889 & 0.9571 & 2.78 & 1.446889 & 0.9571 & 2.78\\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
答案2
嗯,我不明白您到底要用表格做什么,或者您是否理解如何在 LaTeX 中创建表格。
根据我从您的表格和 MWE 中理解的内容,我会这样写
\documentclass{article}
\usepackage{siunitx,booktabs,caption}
\newcommand{\splitcell}[1]{%
\begin{tabular}{@{}c@{}}\strut#1\strut\end{tabular}%
}
\begin{document}
\begin{table}[htp]
\centering
\caption{The table caption}
\begin{tabular}{S[table-format=2.0] S[table-format=1.0] S[table-format=1.6] S[table-format=1.4] S[table-format=1.3]}
\toprule
{$t$ (\si{\nano\meter})} & {$W$ (\si{\micro\meter})} & \multicolumn{3}{c}{My results} \\
\cmidrule{3-5}
& & {Re} & {\splitcell{Theor.\\Overlap\\factor}} & {\splitcell{Theor.\\MPA\\(\si{dB/mm})}} \\
\midrule
25 & 8 & 1.447413 & 0.9627 & 2.128 \\
& 4 & 1.446128 & 0.9538 & 1.20 \\
\midrule
31 & 8 & 1.448499 & 0.9377 & 4.196 \\
& 4 & 1.446889 & 0.9571 & 2.78 \\
\bottomrule
& & \multicolumn{3}{c}{Her results} \\
\cmidrule{3-5} % 6-8
& & {Re} & {\splitcell{Theor.\\Overlap\\factor}} & {\splitcell{Theor.\\MPA\\(\si{dB/mm})}} \\
\midrule
25 & 8 & 1.447413 & 0.9627 & 2.128 \\
& 4 & 1.446128 & 0.9538 & 1.20 \\
\midrule
31 & 8 & 1.448499 & 0.9377 & 4.196 \\
& 4 & 1.446889 & 0.9571 & 2.78 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
请注意,我加宽了行以便对齐它们,这样可以更容易地看到表格的构建方式。所以如您所见,表格只有 5 列。如果您需要更多,则必须在定义环境的同一行中添加它们tabular
。但不要将行与列混淆。
更新
最后你问是否有可能让她的结果接近你的结果而不是低于你的结果?
当然可以,但这取决于LaTeX
你是否正确定义表格。你展示的示例有 5 列,如果你需要结果与你的连续,那么你必须改变桌子的尺寸从一开始就。
像这样:
\documentclass{article}
\usepackage{siunitx,booktabs,caption}
\newcommand{\splitcell}[1]{%
\begin{tabular}{@{}c@{}}\strut#1\strut\end{tabular}%
}
\begin{document}
\begin{table}[htp]
\centering
\caption{The table caption}
\begin{tabular}{
S[table-format=2.0] % Column 1
S[table-format=1.0] % Column 2
S[table-format=1.6] % Column 3
S[table-format=1.4] % Column 4
S[table-format=1.3] % Column 5
S[table-format=1.6] % Column 6 same width than 3
S[table-format=1.4] % Column 7 same width than 4
S[table-format=1.3] % Column 8 same width than 5
}
\toprule
{$t$ (\si{\nano\meter})} & {$W$ (\si{\micro\meter})} & \multicolumn{3}{c}{My results} & \multicolumn{3}{c}{Her results} \\
\cmidrule{3-5} \cmidrule{6-8}
& & {Re} & {\splitcell{Theor.\\Overlap\\factor}} & {\splitcell{Theor.\\MPA\\(\si{dB/mm})}} & {Re} & {\splitcell{Theor.\\Overlap\\factor}} & {\splitcell{Theor.\\MPA\\(\si{dB/mm})}}\\
\midrule
25 & 8 & 1.447413 & 0.9627 & 2.128 & 1.447413 & 0.9627 & 2.128\\
& 4 & 1.446128 & 0.9538 & 1.20 & 1.446128 & 0.9538 & 1.20\\
\midrule
31 & 8 & 1.448499 & 0.9377 & 4.196 & 1.448499 & 0.9377 & 4.196\\
& 4 & 1.446889 & 0.9571 & 2.78 & 1.446889 & 0.9571 & 2.78\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
您需要在行中添加\begin{tabular}{...
最后 3 列以获得相同的列宽,即:S[table-format=1.6] S[table-format=1.4] S[table-format=1.3]
。
技巧的第二部分是用这三列的内容填充行。
在第 29 行,您现在可以添加\cmidrule{6-8}
而不会出现错误。
在您的 MWE 中,第 6 列和第 8 列中的数据相同,如果这是真的,那么这将是多余的,因为您只需要添加(我认为)她的结果列。在这种情况下,表格会更窄,更简单。