在下面的 MWE 中,加载siunitx
会导致编译错误! Package array Error: Illegal pream-token (\l_rn_tableFormat_tl): c' used
。我发现该包array
最近已被完全重写,此外,它在我的MiKTeX 2.9
发行版中与标准捆绑在一起LaTeX tools
;最终确定包siunitx
是罪魁祸首。
\documentclass{article}
% RN. 12 Nov 2017
% `siunitx ` clashes with `array` and `tabular environment`.
%=======================
\usepackage[check-declarations]{expl3}
\usepackage{xparse}
% \usepackage{siunitx}
%-----------------------
\ExplSyntaxOn
\tl_new:N \l_rn_tableFormat_tl
\tl_new:N \l_rn_tableHeader_tl
\tl_new:N \l_rn_tableContent_tl
\NewDocumentCommand\myTable{}
{
\group_begin:
\tl_gset:Nn \l_rn_tableFormat_tl {|c|c|c|c|}
% Format:~\l_rn_tableFormat_tl\\
\tl_gset:Nn \l_rn_tableHeader_tl {\hline \textbf{Item} & \textbf{col~1} & \textbf{col~2} & \textbf{col~3} \\\hline\hline}
\tl_gset:Nn \l_rn_tableContent_tl {\#1 &\textit{italic} & $\alpha$ & 3.14159 \\\hline}
\tl_gput_right:Nn \l_rn_tableContent_tl {\#2 & XYZ & $\zeta$ & 3.14159 \\\hline}
\tl_gput_right:Nn \l_rn_tableContent_tl {\#3 & 1 & 2 & a \\\hline}
\tl_gput_right:Nn \l_rn_tableContent_tl {\#4 & A & Z & XX \\\hline}
\tl_gput_right:Nn \l_rn_tableContent_tl {\#5 & sdf & wrtw45 & 54qge \\\hline}
\begin{tabular}{\l_rn_tableFormat_tl}
\l_rn_tableHeader_tl
\l_rn_tableContent_tl
\end{tabular}
\group_end:
} % \myTable
\ExplSyntaxOff
%-----------------------
\begin{document}
\myTable
\end{document}
答案1
array
加载时,\begin{tabular}
不执行强制参数的扩展,因此必须事先完成。使用起来expl3
很简单。
\documentclass{article}
% RN. 12 Nov 2017
% `siunitx ` clashes with `array` and `tabular environment`.
%=======================
\usepackage[check-declarations]{expl3}
\usepackage{xparse}
% \usepackage{siunitx}
%-----------------------
\ExplSyntaxOn
\tl_new:N \l_rn_tableFormat_tl
\tl_new:N \l_rn_tableHeader_tl
\tl_new:N \l_rn_tableContent_tl
\NewDocumentCommand\myTable{}
{
\group_begin:
\tl_gset:Nn \l_rn_tableFormat_tl {|c|c|c|c|}
% Format:~\l_rn_tableFormat_tl\\
\tl_gset:Nn \l_rn_tableHeader_tl {\hline \textbf{Item} & \textbf{col~1} & \textbf{col~2} & \textbf{col~3} \\\hline\hline}
\tl_gset:Nn \l_rn_tableContent_tl {\#1 &\textit{italic} & $\alpha$ & 3.14159 \\\hline}
\tl_gput_right:Nn \l_rn_tableContent_tl {\#2 & XYZ & $\zeta$ & 3.14159 \\\hline}
\tl_gput_right:Nn \l_rn_tableContent_tl {\#3 & 1 & 2 & a \\\hline}
\tl_gput_right:Nn \l_rn_tableContent_tl {\#4 & A & Z & XX \\\hline}
\tl_gput_right:Nn \l_rn_tableContent_tl {\#5 & sdf & wrtw45 & 54qge \\\hline}
\__rn_tablebegin:V \l_rn_tableFormat_tl % \begin{tabular}
\l_rn_tableHeader_tl
\l_rn_tableContent_tl
\end{tabular}
\group_end:
} % \myTable
\cs_new_protected:Nn \__rn_tablebegin:n { \begin{tabular}{#1} }
\cs_generate_variant:Nn \__rn_tablebegin:n { V }
\ExplSyntaxOff
%-----------------------
\begin{document}
\myTable
\end{document}