\documentclass[a4paper,12pt]{report}
\usepackage[margin=1 in]{geometry}
\usepackage{booktabs}
\begin{document}
\section{report Advanced Tables}
\newcommand{\ra}[1]{\renewcommand{\arraystretch}{#1}}
\begin{table}[b]
\ra{1}
\begin{adjustbox}
\small
\begin{tabular}{c{}ccc{}ccc}\toprule
&& \multicolumn{3}{c}{Geometric Arguements} && \multicolumn{3}{c}{Line Arguments} \\
\hline
$A_b$ & & $(B/C)_{circle}$ & $(D/E)_{Rect}$ & $(F/G)_{square}$ & & $H_{line}$ & $h_s/h_{avg}$ & $G_a/n_{nor}$ \\ \hline
$P_{p}/T_{t} = 4.15$ \\
2.56 && 3.56 & 7.89 & 9.97 && 4.52 & 8.80 & 80.78 \\
$P_{p}/T_{t} = 5.15$ \\
56.5 && 3.09 & 1.45 & 3.56 && 2.12 & 1.72 & 59.94 \\
77.1 && 8.89 & 1.96 & 4.60 && 1.47 & 1.74 & 90.45 \\
\hline
\end{tabular}
\end{adjustbox}
\caption{\label{tab:table_one}report class advanced table}
\end{table}
\end{document}
代码输出如下:
如果\documentclass
改为memoir
它说
Fatal error occured
和
没有生成 PDF 文件的输出。是否有人可以在 中生成相同的输出memoir
?
答案1
主要错误是由于缺少必需的参数而导致的\begin{adjustbox}
。另一方面,在表格周围加上
\begin{adjustbox}{}
<table>
\end{adjustbox}
除了本地化字体大小更改外,什么也不做。但保留它以供将来调整并无害。
{}
您对 和 的论证也存在错误,tabular
而&&
实际上应该简单地是&
。
这是修复后的版本,用于siunitx
更好地对齐数字。我还修复了文本下标,使其变为直立字体。
\documentclass[a4paper,12pt]{memoir}
\usepackage[margin=1in]{geometry}
\usepackage{booktabs,siunitx,adjustbox}
\begin{document}
\section{report Advanced Tables}
\begin{table}[b]
\centering
\begin{adjustbox}{}
\small
\begin{tabular}{
S[table-format=2.2]
*{5}{S[table-format=1.2]}
S[table-format=2.2]
}
\toprule
& \multicolumn{3}{c}{Geometric Arguments} & \multicolumn{3}{c}{Line Arguments} \\
\cmidrule(lr){2-4}\cmidrule(lr){5-7}
{$A_b$} &
{$(B/C)_{\mathrm{circle}}$} &
{$(D/E)_{\mathrm{Rect}}$} &
{$(F/G)_{\mathrm{square}}$} &
{$H_{\mathrm{line}}$} &
{$h_s/h_{\mathrm{avg}}$} &
{$G_a/n_{\mathrm{nor}}$} \\
\midrule
\multicolumn{7}{@{}l}{$P_{p}/T_{t} = \num{4.15}$} \\
2.56 & 3.56 & 7.89 & 9.97 & 4.52 & 8.80 & 80.78 \\
\midrule
\multicolumn{7}{@{}l}{$P_{p}/T_{t} = \num{5.15}$} \\
56.5 & 3.09 & 1.45 & 3.56 & 2.12 & 1.72 & 59.94 \\
77.1 & 8.89 & 1.96 & 4.60 & 1.47 & 1.74 & 90.45 \\
\bottomrule
\end{tabular}
\end{adjustbox}
\caption{Report class advanced table\label{tab:table_one}}
\end{table}
\end{document}
答案2
这是一个无需机制即可实现的解决方案,并且可与和文档类adjustbox
一起编译。它使用环境来确保表格占据文本块的整个宽度。report
memoir
tabularx
\documentclass[a4paper,12pt]{report}
\usepackage[margin=1in]{geometry}
\usepackage{booktabs,amsmath,tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\section{Report Advanced Tables}
\begin{table}[h]
\begin{tabularx}{\textwidth}{@{} cc *{5}{C} c @{}}
\toprule
$P_{p}/T_{t}$ & $A_b$
& \multicolumn{3}{c}{Geometric Arguments}
& \multicolumn{3}{c@{}}{Line Arguments} \\
\cmidrule(lr){3-5} \cmidrule(l){6-8}
& &
$(B/C)_{\textit{circle}}$ & $(D/E)_{\textit{Rect}}$ & $(F/G)_{\textit{square}}$ &
$H_{\textit{line}}$ & $h_s/h_{\textit{avg}}$ & $G_a/n_{\textit{nor}}$ \\
\midrule
4.15 & 2.56 & 3.56 & 7.89 & 9.97 & 4.52 & 8.80 & 80.78 \\
\addlinespace
5.15 & 56.5 & 3.09 & 1.45 & 3.56 & 2.12 & 1.72 & 59.94 \\
& 77.1 & 8.89 & 1.96 & 4.60 & 1.47 & 1.74 & 90.45 \\
\bottomrule
\end{tabularx}
\caption{report class advanced table} \label{tab:table_one}
\end{table}
\end{document}
答案3
我没有看到adjustbox
在您的表格中使用(它是在 MWE 中提供的,导致错误)的任何好处,我对其进行了评论(以便将来可能正确使用)。
删除所有多余的“与”符号并对表格进行稍微“美化”后,我在回忆录文档类中得到了以下结果:
\documentclass[a4paper,12pt]{memoir}
\usepackage[margin=1 in,showframe]{geometry}
\usepackage{array,booktabs,makecell,multirow}
\usepackage{adjustbox}
\newcommand{\ra}[1]{\renewcommand{\arraystretch}{#1}}
\begin{document}
\chapter*{Report Advanced Tables}
\begin{table}[htb]\centering
\ra{1}
\setlength{\tabcolsep}{9pt}
%\begin{adjustbox}{} %<-- added missing part
\small
\begin{tabular}{*{8}{>{$}c<{$}}}
\toprule
\multirowcell{2}{P_{p}/T_{t}}
& \multirowcell{2}{A_b}
& \multicolumn{3}{c}{Geometric Arguments}
& \multicolumn{3}{c}{Line Arguments} \\
\cmidrule(lr){3-5}\cmidrule(lr){6-8}
&
& (B/C)_{circle}
& (D/E)_{Rect}
& (F/G)_{square}
& H_{line}
& h_s/h_{avg}
& G_a/n_{nor} \\
\midrule
4.15 & 2.56 & 3.56 & 7.89 & 9.97 & 4.52 & 8.80 & 80.78 \\
5.15 & 56.5 & 3.09 & 1.45 & 3.56 & 2.12 & 1.72 & 59.94 \\
& 77.1 & 8.89 & 1.96 & 4.60 & 1.47 & 1.74 & 90.45 \\
\bottomrule
\end{tabular}
\end{adjustbox}
\caption{report class advanced table}
\label{tab:table_one}
\end{table}
geometry
我在参数之间添加了一些内容showframes
以便更好地查看表格的宽度。
编辑(1): 看到 Mico 的回答后,我意识到我错误地解码了表格数据 :-( 它实际上有 8 列,而不是像我从您的 MWE 中认识到的那样有 7 列。现在我纠正这个问题,并添加了两个包:˙makecell˙ 和multirow
。我使用它们来为前两列制作列头。我还扩大了列间距。这样表格宽度几乎等于文本宽度。当然,使用 可以获得更精确的文本拟合, tabularx
正如 Mico 在他的回答中所展示的那样。
如果您希望将表格宽度与文本宽度相同,那么最简单的解决方案就是使用tabularx
表格环境。
编辑(2):关于 的使用,adjustbox
我纠正了自己。如果使用正确,也可以memoir
像他的回答中精心设计的那样使用,并在评论中指出了我。现在我还添加了缺失的包makecell
和multirow
,我在 MWE 中使用它们。