为什么此表会导致“出现问题 - 也许缺少\item?

为什么此表会导致“出现问题 - 也许缺少\item?
\begin{table} [htbp]
\label{tab:test}
\centering
\begin{tblr}{
    colspec={X[l]X[l]X[c]X[c]X[c]X[c]X[c]X[c]X[c]X[c]X[c]},
    row{1}={font=\bfseries},
    row{even}={bg=gray!10},
}
    \toprule
    \scriptsize{\\$\mathbf{100\%}$} & {} & {\\\scriptsize{best}} & {\scriptsize{test\\=\\off}} & {\scriptsize{test\\=\\1}} & {\scriptsize{test\\=\\off}} & {\scriptsize{test\\=\\off}} & {\scriptsize{test\\=\\1}} & {\scriptsize{test\\=\\1}} & {\scriptsize{test\\=\\1}} & {\scriptsize{test\\=\\1}}\\
    \midrule
    {} & {\scriptsize{test}} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize{test}} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize{test}} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize{test}} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize{test}} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    \midrule
    \scriptsize{\\$\mathbf{90\%}$} & & & & & & & & & &\\
    {} & {\scriptsize{L1 Position}} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize{L1 Size}} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize{L1 Rotation}} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize{Class}} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize{1}} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    \bottomrule
\end{tblr}
\caption{test}
\end{table}

答案1

  • 您的表格似乎是由某些在线表格生成器生成的,该生成器在使用tabularray包时没有“意识”或没有能力按预期生成表格代码,因此表格代码充满了错误书面指令的混乱{\scriptsize{test\\=\\off}},最终会{\scriptsize test\\=\\off}
  • tblr表格中,您可以简单地规定整个列和行的字体大小和字体,例如使用row{1} = {font=\scriptsize},然后将所有实例放在第一行。第二列也可以这样做。
  • 关于如何简化代码和改善表格外观的其他题外建议是:
    • 对于百分比的书写,我建议使用siunitx包 - 它提供更好的格式。
    • 前两行的内容非常清楚,可能是我误解了。
    • \scriptsize建议重新设计表格后,第二列不再需要使用字体。
    • 由于使用了粗体字体,因此只有前两行可以使用较小的字体大小 (\small)。由于这一变化,表格的排版统一了,因此外观更好了。
    • 第一列和前两行字体大小的改变可以在表序中进行。

上述 MWE 的一个示例是:

\documentclass{article}
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{booktabs, siunitx}
\usepackage{etoolbox}
\usepackage{etoolbox}
\newrobustcmd\B{\DeclareFontSeriesDefault[rm]{bf}{b}    \bfseries} % for bold of siunitx quantities

\begin{document}
    \begin{table} [htbp]
    \label{tab:test}
    \centering
\sisetup{detect-weight} 
\begin{tblr}{colspec = {Q[r, preto=\B,font=\small]  % `\B is trigger for the boldface font in siunitx 
                        Q[l] 
                        *{9}{X[c]} },
             cell{1}{3} = {c=9}{c,font=\small\bfseries},
             row{2}     = {font=\small\bfseries},
             row{even}  = {bg=gray!10}, 
            }
    \toprule
    &               &   test
                        &   &   &   &   &   &   &   &   \\
    \cmidrule{3-11}
\B \qty{100}{\%}
    &       test    & test  
                        &   off
                            & 1 &   off
                                    &   off
                                        & 1 & 1 & 1 & 1 \\
    \midrule
    & text          & 1 & 2 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    & text          & 1 & 2 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    & text          & 1 & 2 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    & text          & 1 & 2 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    & text          & 1 & 2 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    \midrule
\qty{90}{\%}
    &               &   &   &   &   &   &   &   &   &   \\
    & L1 Position   & 1 & 2 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    & L1 Size       & 1 & 2 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    & L1 Rotation   & 1 & 2 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    & Class         & 1 & 2 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    & 1             & 1 & 2 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    \bottomrule
\end{tblr}
\caption{test}
    \end{table}
\end{document}

在此处输入图片描述

附录:
不过,我假设下表设计与上面的仅在前三行表格设计上有所不同:

    \toprule
    &               &   test
                        &   &   &   &   &   &   &   &   \\
    \cmidrule{3-11}
    &       test    & test  
                        &   off
                            & 1 &   off
                                    &   off
                                        & 1 & 1 & 1 & 1 \\
    \midrule
\B \qty{100}{\%}
    &               &   &   &   &   &   &   &   &   &   \\

更合理的做法是:

在此处输入图片描述

答案2

注意:\scriptsize不是带参数的命令,而是开关。所以\scriptsize{…}没有意义,但至少应该总是{\scriptsize …}(有时甚至是)\par{\scriptsize …\par}

此示例可以正常运行:

\documentclass{article}
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}
\begin{document}
\begin{table} [htbp]
\label{tab:test}
\centering
\begin{tblr}{
    colspec={X[l]X[l]X[c]X[c]X[c]X[c]X[c]X[c]X[c]X[c]X[c]},
    row{1}={font=\bfseries},
    row{even}={bg=gray!10},
}
    \toprule
    {\scriptsize\\$\mathbf{100\%}$} & {} & {\\\scriptsize best} & {\scriptsize
      test\\=\\off} & {\scriptsize test\\=\\1} & {\scriptsize test\\=\\off} &
    {\scriptsize test\\=\\off} & {\scriptsize test\\=\\1} & {\scriptsize
      test\\=\\1} & {\scriptsize test\\=\\1} & {\scriptsize test\\=\\1}\\
    \midrule
    {} & {\scriptsize test} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize test} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize test} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize test} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize{test}} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    \midrule
    {\scriptsize \\$\mathbf{90\%}$} & & & & & & & & & &\\
    {} & {\scriptsize L1 Position } & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize L1 Size} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize L1 Rotation } & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize Class} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    {} & {\scriptsize 1} & {1} & {2} & {1} & {1} & {1} & {1} & {1} & {1} & {1} \\
    \bottomrule
\end{tblr}
\caption{test}
\end{table}
\end{document}

但恕我直言,几个等的括号{1}也可以(也许应该)删除。并且您应该将\scriptsizealso 移动到,row{1}={\font=\bfseries\scriptsize}而不是在行的每个单元格中使用它。您应该对第二列执行类似操作。

注意:请始终展示最小的工作示例,而不是仅仅代码片段。

相关内容