使用 \NewDocumentCommand 重新定义表规则

使用 \NewDocumentCommand 重新定义表规则

我试图\lightrule用新的语法重新定义旧命令xparse

当我尝试\newlightrule意外使用时,它会显示Misplaced \noalign错误。

最小工作示例和预期结果如下。


在此处输入图片描述


\documentclass[margin=2mm]{standalone}

\usepackage[table]{xcolor}
\usepackage{booktabs}

\newcommand{\lightrule}{
    \arrayrulecolor{black!30}%
    \midrule[\lightrulewidth]%
    \arrayrulecolor{black}%
}

\usepackage{xparse}
\NewDocumentCommand{\newlightrule}{}{
    \arrayrulecolor{black!30}%
    \midrule[\lightrulewidth]%
    \arrayrulecolor{black}%
}

\begin{document}

\begin{tabular}{c l}
\toprule
    test & test\\
\midrule
    test & test\\
\lightrule
    test & test\\
\bottomrule
\end{tabular}

\end{document}

答案1

您应该使用\NewExpandableDocumentCommand来定义。正如 David 所说,xparse除非您有旧的乳胶版本,否则不需要。

我还建议您使用它tabularray来排版您的表格,它很容易使用。

\documentclass[margin=2mm]{standalone}

\usepackage[table]{xcolor}
\usepackage{booktabs}

% \newcommand{\lightrule}{
%     \arrayrulecolor{black!30}%
%     \midrule[\lightrulewidth]%
%     \arrayrulecolor{black}%
% }

% \usepackage{xparse}
\NewExpandableDocumentCommand{\newlightrule}{}{
    \arrayrulecolor{black!30}%
    \midrule[\lightrulewidth]%
    \arrayrulecolor{black}%
}

\usepackage{tabularray}

\begin{document}

\begin{tabular}{c l}
\toprule
    test & test\\
\midrule
    test & test\\
\newlightrule
    test & test\\
\bottomrule
\end{tabular}

\begin{tblr}
{
colspec={Q[c,m]Q[l,m]},
hline{1,Z}={wd=.08em},
hline{2}={wd=.05em},
hline{3}={wd=.05em,fg=black!30},
}
test & test\\
test & test\\
test & test\\
\end{tblr}

\end{document}

在此处输入图片描述

相关内容