表格中多列显示投影仪错误

表格中多列显示投影仪错误

我正在尝试创建多列,但是按照以下帖子中的建议操作后,出现了错误,提示我遇到了“未定义的控制序列”:

多列表格

我的代码如下:

\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=25]{P-Values Of Conditional Predictive Test ($\tau = 1$)}   
\vspace*{2em}                  
\setlength{\tabcolsep}{0pt}  
\begin{tabular*}{\textwidth}{l           @{\extracolsep{\fill}} *{12}{c}} 
\toprule    {Test}& \multicol{12}{c}{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) & $\bullet$ & 0.00 & 0.00 & 0.02 & 0.02 & 0.04 & 0.03 & 0.05 & 0.02 & 0.01 & 0.01 & 0.09 \\
(2,1) & $\bullet$ & $\bullet$ & 0.89 & 0.17 & 0.16 & 0.35 & 0.12 & 0.35 & 0.11 & 0.03 & 0.01 & 0.08 \\
(3,1) & $\bullet$ & $\bullet$ & $\bullet$ & 0.82 & 0.21 & 0.29 & 0.08 & 0.31 & 0.07 & 0.01 & 0.01 & 0.03 \\
(4,1) & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & 0.30 & 0.66 & 0.17 & 0.32 & 0.08 & 0.01 & 0.01 & 0.01 \\
(5,1) & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & 0.96 & 0.21 & 0.72 & 0.11 & 0.01 & 0.00 & 0.00 \\
(6,1) & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & 0.11 & 0.61 & 0.10 & 0.05 & 0.01 & 0.01 \\
(7,1) & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & 0.92 & 0.35 & 0.24 & 0.13 & 0.00 \\
(8,1) & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & \textbf{0.15} & 0.11 & 0.00 & 0.00 \\
(9,1) & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & 0.43 & 0.49 & 0.00 \\ 
(10,1) & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & 0.20 & 0.00 \\
(11,1) & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & 0.00 \\ 
(12,1) & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ &  $\bullet$ & $\bullet$ & $\bullet$ \\ 
\bottomrule
\end{tabular*}     
\end{frame} 
\end{document}

基本上我想使用多列来放置一个列标题,上面写着“基准”,但我不确定为什么我会遇到这样的错误。如果有人能提供一些建议,告诉我我做错了什么,我将不胜感激。

谢谢

答案1

据我所知,您在定义多列单元格时犯了错误。相反,错误

\multicol{12}{c}{...}

你应该使用正确的

\multicolumn{12}{c}{...}

第二行也有一个错误。缺少一个“&”符号,因此列标题向左移动了一列。更正此错误后,我得到了下表:

在此处输入图片描述

表格的相关部分是:

\documentclass{beamer}
\usepackage{booktabs,tabularx}
\usepackage{adjustbox}

    \begin{document}
\begin{frame}[shrink=25]{P-Values Of Conditional Predictive Test ($\tau = 1$)}
\vspace*{2em}
\setlength{\tabcolsep}{0pt}
\begin{tabular*}{\textwidth}{l 
                             @{\extracolsep{\fill}}*{12}{c}}% 
\toprule    
    & \multicolumn{12}{c}{Benchmark}\\% <-- multicol
\cmidrule(lr){2-13}
Test & (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) & $\bullet$ & 0.00 & 0.00 & 0.02 & 0.02 & 0.04 & 0.03 & 0.05 & 0.02 & 0.01 & 0.01 & 0.09 \\

... < as in original table > ...

(12,1) & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ &  $\bullet$ & $\bullet$ & $\bullet$ \\
\bottomrule
    \end{tabular*}
\end{frame}
    \end{document}

答案2

通常情况下,我建议您使用该multicol包。不幸的是,它仅支持最多跨 10 列的元素,而您需要一个跨 12 列的元素。因此,我们必须采取一些措施才能使其正常工作。

模仿multicol

由于无法在表格内部创建跨列元素,因此只能在表格之前创建它,然后调整垂直间距。

因此,删除包含以下内容的表格行:\toprule{Test} & \multicol{12}{c}{Benchmark} \\

在表格之前,您必须模仿此行的效果。由于\toprule{Test}会导致misplaced \noalign错误,请使用\rule{\linewidth}{\heavyrulewidth}来产生类似的效果,然后将 Test 添加到下一行。

事情变得有点棘手:您必须手动设置“测试”和“基准”之间的空间\hspace。我弄了一会儿,发现它Test \hspace{60mm} Benchmark相当接近居中(如果您愿意,可以让它更接近)。

现在,你的表格的开头应该是这样的

\begin{frame}[shrink=25]{P-Values Of Conditional Predictive Test ($\tau = 1$)}   
   \vspace*{2em}                  
   \setlength{\tabcolsep}{0pt}
   \rule{\linewidth}{\heavyrulewidth} % because \toprule gives a misplaced \noalign
   Test \hspace{60mm} Benchmark % fiddle with the length in side \hspace until you're satisfied
   \begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}} *{12}{c}} 
   % \toprule{Test} & \multicols{12}{c}{Benchmark}  \\ % too many cols for multicols

    (1,1)  & (2,1)  & (3,1) & (4,1) & (5,1)  & (6,1) & (7,1)  & (8,1)  & (9,1) & (10,1)& (11,1) & (12,1) \\ 

此解决方法非常接近于您使用 获得的结果multicol。也就是说,包含单词“测试”和“基准”的行(在我看来)似乎需要在其与输出中的表格之间留出更多垂直间距。

调整垂直间距

如果要调整它,请导入命令verbatimbox的包addvbuffer。将环境的第一行更改tabular

\addvbuffer[2pt 0pt]{\begin{tabular*}{\textwidth}{1@{\extracolsep{\fill}} *{12}{c}}

并在表格环境的最后一行添加一个额外的法语括号end{tabular}}。这[12pt 0pt]是表格前后的空白量。我认为2pt这非常接近,尽管您可能想要不同的东西。

最后说明

不幸的是,使用\addvbuffer略微缩进会使整个表格看起来有点奇怪。如果您不介意表格前的垂直间距,那么就不要使用,\addvbuffer这样就不会出现奇怪的缩进。

如果您想修改垂直间距,但又不想让表格奇怪地缩进,您可能可以找到一种方法来缩进前面的段落(包含“测试”和“基准”)以匹配表格。

相关内容