\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}
也可以(也许应该)删除。并且您应该将\scriptsize
also 移动到,row{1}={\font=\bfseries\scriptsize}
而不是在行的每个单元格中使用它。您应该对第二列执行类似操作。
注意:请始终展示最小的工作示例,而不是仅仅代码片段。