我在使用以下代码时遇到了问题,并且我尝试了各种方法来诊断问题(即:注释掉内容),但我未能成功找到错误。
代码如下:
\documentclass{beamer}
\usepackage{booktabs,makecell,multirow,tabularx}
\usepackage{ragged2e}
\renewcommand\theadfont{\normalfont\bfseries}
\newcolumntype{L}{>{\RaggedRight\arraybackslash}X}
\newcolumntype{C}{>{\Centering\arraybackslash}X}
\newcommand\mc[1]{\multicolumn{2}{c}{#1}}
\setlength\parindent{0pt}
%\usepackage[justification=centering]{caption}
\usepackage{siunitx}
\usepackage{tikz}
\usepackage{adjustbox}
\begin{document}
\begin{frame}[shrink=30]{Summary Statistics}
\vspace*{2em}
\setlength{\tabcolsep}{4pt}
\begin{tabularx}{\textwidth}{@{} l L *{10}{S[table-format=3.3]} @{}}
\toprule
\thead[lc]{Benchmark} & \thead{(1,1)} & {\thead{(2,1)}} & {\thead{(3,1)}} & {\thead{(4,1)}} & {\thead{(5,1)}} & {\thead{(6,1)}} \
& {\thead{(7,1)}} & \thead{(8,1)} & {\thead{(9,1)}} & {\thead{(10,1)}} & {\thead{(11,1)}} & {\thead{(12,1)}} \\
\midrule
(1,1) & 0.00 & 0.01 & 0.02 & 0.02 & 0.03 & 0.03 & 0.05 & 0.02 & 0.01 & 0.01 & 0.09 & 0.00 \\
\bottomrule
\end{tabularx}
\end{frame}
我收到的消息是:“extra } or $”,但我检查了所有地方,没有发现任何问题。因此,我将不胜感激任何帮助和建议。
答案1
如果目标是使表格的宽度等于文本块的宽度,则使用环境tabular*
而不是环境tabularx
(具有单个 X 形列)似乎是更好的选择。
顺便说一句,您可能需要重新考虑使用粗体字作为标题行。将标题行夹在和之间\toprule
足以\midrule
使其具有所需的所有视觉突出性;过多的粗体材料很快就会产生粗俗的外观。下面屏幕截图中的第二个表格表明(在我看来)粗体字是完全没有必要的。
\documentclass{beamer}
\usepackage{booktabs}
\begin{document}
\begin{frame}[shrink=30]{Summary Statistics}
\vspace*{2em}
% Let LaTeX determine amount of intercolumn whitespace
\setlength{\tabcolsep}{0pt}
\begin{tabular*}{\textwidth}{l @{\extracolsep{\fill}} *{12}{c}}
\toprule
\textbf{Benchmark}& \textbf{(1,1)}
& \textbf{(2,1)} & \textbf{(3,1)} & \textbf{(4,1)} & \textbf{(5,1)}
& \textbf{(6,1)} & \textbf{(7,1)} & \textbf{(8,1)} & \textbf{(9,1)}
& \textbf{(10,1)} & \textbf{(11,1)} & \textbf{(12,1)} \\
\midrule
(1,1) & 0.00 & 0.01 & 0.02 & 0.02 & 0.03 & 0.03 & 0.05 & 0.02 & 0.01 & 0.01 & 0.09 & 0.00 \\
\bottomrule
\end{tabular*}
\vspace*{2cm}
\begin{tabular*}{\textwidth}{l
@{\extracolsep{\fill}} *{12}{c}}
\toprule
{Benchmark}& (1,1)
& (2,1) & (3,1) & (4,1) & (5,1) & (6,1) & (7,1)
& (8,1) & (9,1) & (10,1)& (11,1) & (12,1) \\
\midrule
(1,1) & 0.00 & 0.01 & 0.02 & 0.02 & 0.03 & 0.03 & 0.05 & 0.02 & 0.01 & 0.01 & 0.09 & 0.00 \\
\bottomrule
\end{tabular*}
\end{frame}
\end{document}
答案2
在这种情况下,我使用更容易处理的包rccol
。如果你不需要三位小数,那么可以R[.]{1}{2}
使用
\documentclass{beamer}
\usepackage{booktabs,tabularx}
\usepackage{ragged2e}
\newcommand\MC[1]{\multicolumn{1}{c}{\bfseries#1}}
\usepackage{rccol}
\begin{document}
\begin{frame}[shrink=30]{Summary Statistics}
\bigskip\noindent\setlength{\tabcolsep}{2pt}
\begin{tabular}{@{} l *{12}{R[.]{1}{3}} @{}}\toprule
Benchmark & \MC{(1,1)} & \MC{(2,1)} & \MC{(3,1)} & \MC{(4,1)} & \MC{(5,1)} & \MC{(6,1)}
& \MC{(7,1)} & \MC{(8,1)} & \MC{(9,1)} & \MC{(10,1)} & \MC{(11,1)} & \MC{(12,1)} \\\midrule
(1,1) & 0.00 & 0.01 & 0.02 & 0.02 & 0.03 & 0.03 & 0.05 & 0.02 & 0.01 & 0.01 & 0.09 & 0.00 \\
\bottomrule
\end{tabular}
\end{frame}
\end{document}
答案3
实际错误是缺少多列条目并声明了错误的列数,但是正如其他答案所评论的那样,tabularx
对于数字表来说,使用的环境是错误的。
\documentclass{beamer}
\usepackage{booktabs,makecell,multirow,tabularx}
\usepackage{ragged2e}
\renewcommand\theadfont{\normalfont\bfseries}
\newcolumntype{L}{>{\RaggedRight\arraybackslash}X}
\newcolumntype{C}{>{\Centering\arraybackslash}X}
\newcommand\mc[1]{\multicolumn{2}{c}{#1}}
\newcommand\m[1]{\multicolumn{1}{c}{#1}}
\setlength\parindent{0pt}
\usepackage{siunitx}
\begin{document}
\begin{frame}[shrink=30]{Summary Statistics}
\vspace*{2em}
\setlength{\tabcolsep}{4pt}
\begin{tabularx}{\textwidth}{@{} l L *{11}{S[table-format=3.3]} @{}}
\toprule
\m{\thead[lc]{Benchmark}} & \m{\thead{(1,1)}} & \m{\thead{(2,1)}} & \m{\thead{(3,1)}} & \m{\thead{(4,1)}} & \m{\thead{(5,1)}} & \m{\thead{(6,1)}}
& \m{\thead{(7,1)}} & \m{\thead{(8,1)}} & \m{\thead{(9,1)}} & \m{\thead{(10,1)}} & \m{\thead{(11,1)}} & \m{\thead{(12,1)}} \\
\midrule
(1,1) & 0.00 & 0.01 & 0.02 & 0.02 & 0.03 & 0.03 & 0.05 & 0.02 & 0.01 & 0.01 & 0.09 & 0.00 \\
\bottomrule
\end{tabularx}
\end{frame}
\end{document}