我似乎找不到一种方法来使用类似@{blah blah}
自定义列类型的东西,这些自定义列类型涉及带有参数siunitx
的S
列类型[…]
。(问题似乎>{}
也发生在,但这不是我现在需要的。)下面是一个可以让这一切更清楚的例子。前五个表格工作正常,而第六个表格导致“非法前置标记”错误,尽管在我看来,最后一个表格显然是前几个表格的后续……
\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{siunitx}
\begin{document}
\newcommand{\stuff}{\hspace{2\tabcolsep}}
\begin{tabular}{c @{\stuff} c}
1 & 1 \\
\end{tabular}
\newcolumntype{C}{c}
\begin{tabular}{C @{\stuff} C}
2 & 2 \\
\end{tabular}
\begin{tabular}{S @{\stuff} S}
3 & 3 \\
\end{tabular}
\newcolumntype{t}{S}
\begin{tabular}{t @{\stuff} t}
4 & 4 \\
\end{tabular}
\begin{tabular}{S[table-format = 1] @{\stuff} S[table-format = 1]}
5 & 5 \\
\end{tabular}
\newcolumntype{T}{{S[table-format = 1]}}
\begin{tabular}{T @{\stuff} T}
6 & 6 \\
\end{tabular}
\end{document}
S[…]
因此,和\newcolumntype
的组合@{…}
似乎是问题的根源。我想我在这里忽略了一些愚蠢的东西……希望你能帮忙。谢谢!
顺便说一下,在我的真实的文档中,自定义列类型如下:
\newcolumntype{e}[3]{%
{S[
table-format = #1.#2e-#3,
exponent-base = e,
exponent-product = {\,}
]}%
}
(周围的额外括号S[…]
似乎是必要的,因为\newcolumntype
似乎以一种奇怪的方式解析东西。)
在我找到更好的解决方案之前,我想我会\sisetup
在我的环境开始时使用一个table
或类似的...不是很漂亮。o(+_+)o
编辑:使用提供的解决方案,我的真实列类型现在如下所示:
\newcolumntype{e}[3]{%
S[{
table-format = #1.#2e-#3,
exponent-base = e,
exponent-product = {\,}
}]%
}
并且可以像这样使用:\begin{tabular}{e121 @{\hspace{2\tabcolsep}} e121}
,等等。
答案1
\newcolumntype{T}{S[table-format = 1]}
不是
\newcolumntype{T}{{S[table-format = 1]}}
或者对于出现在参数中的字母,用内部保护参数{}
\newcolumntype{e}{S[{table-format = 1}]}