我使用这个宏来堆叠一个标题:\newcommand*{\textstackrel}[2]{\ensuremath{\stackrel{\hbox{#1}}{\hbox{#2}}}}
。这会使其他单行标题底部对齐,看起来很糟糕。
因此,我尝试了一些我知道但无济于事的多行技巧,例如:
assign column name/.code={\multicolumn{1}{c}{\multirow{2}{*}{#1}}}
大多数时候我都会遇到这个错误信息:
! siunitx error: "duplicate-exponent-token"
! Duplicate exponent marker token '\token_to_str:N d' in input.
我该如何正确地做到这一点?
附言:当我有(更多)时间并且在此之前没有答案时,MWE 将会跟进。
答案1
在准备 MWE 时,我发现了一个可能的解决方案。欢迎改进它或发布另一个解决方案。
\documentclass{article}
\usepackage{multirow}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{siunitx}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread{
size min max avg med
1 2e-03 3e-03 2.5e-03 2.4e-03
10 2.02e-03 3.02e-03 2.72e-03 2.32e-03
123456789 2.02 123.72e9 2.72e9 2.32e-03
}{\loadedtable}
\pgfplotstableset{
begin table=\begin{longtable},
end table=\end{longtable},
}
\sisetup{
table-format = 3.2e+3,
round-precision=2,
round-mode=places,
scientific-notation=engineering,
group-digits=integer,
group-separator={,},
exponent-product = \cdot,
}
\pgfplotstabletypeset[
header=true,
string type,
multicolumn names,
columns={size,med,min,avg,max},
assign column name/.code={%
\pgfkeyssetvalue{/pgfplots/table/column name}{\multicolumn{1}{c}{\multirow{2}{*}{#1}} }%
},
columns/size/.style ={column name={\shortstack{Instance\\Size}}, column type={S[scientific-notation=false,table-format=9]}, int detect},
columns/min/.style ={column name=Minimum, column type=S},
columns/avg/.style ={column name=Average, column type=S},
columns/med/.style ={column name=Median, column type=S},
columns/max/.style ={column name=Maximum, column type=S},
every head row/.style={before row=\toprule, after row=\\\midrule\endhead},
every last row/.style={after row=\bottomrule},
]{\loadedtable}
\end{document}
重点是:
- 使用
\pgfkeyssetvalue
于assign column name/.code
,和 - 样式中的附加
\\
换行符。after row
every head row