bottomrule 在自制环境中不起作用

bottomrule 在自制环境中不起作用

我的 LaTeX 文档中存在以下用于一致表格的环境:

\newenvironment{defaultTable}[2] {
 \@float{table}[h]
 \noindent
 \tabularx{\textwidth}{#1}
 \specialrule{0.5pt}{10pt}{0pt}
 \rowcolor[gray]{.9}
 \gdef\mycaption{#2}
} {
 \bottomrule
 \endtabularx
 \emph{\caption{\mycaption}}
 \end@float
}

不幸的是,该行\bottomrule导致了这个错误,我不明白:

! Misplaced \noalign. \bottomrule
->\noalign 
               {\ifnum 0=`}\fi \@aboverulesep =\aboverulesep
\global... l.27 \end{defaultTable}

当我在环境中使用它时,它可以工作

\begin{defaultTable}{X X}{Blablah Table}
(..)
\bottomrule
\end{defaultTable}

我究竟做错了什么?

答案1

可以使用以下方法避免此错误environ包。例如,这是使用\NewEnviron该包对代码进行的有效修改:

\documentclass{article}
\usepackage{tabularx} 
\usepackage{booktabs} 
\usepackage[table]{xcolor}
\usepackage{environ}
\makeatletter
\NewEnviron{defaultTable}[2] {
 \@float{table}[h]
 \noindent
 \tabularx{\textwidth}{#1}
 \specialrule{0.5pt}{10pt}{0pt}
 \rowcolor[gray]{.9}
 \gdef\mycaption{#2}
 \BODY
 \bottomrule}[
 \endtabularx
 \emph{\caption{\mycaption}}
 \end@float
]
\makeatother
\begin{document}

\begin{defaultTable}{X X}{Test Table}
1 & 2 \\
\end{defaultTable}

\end{document}

替代文本

注意:要么也结束最后一行\\(要么在之后执行\BODY)。(在原始环境中定义\\之前\bottomrule没有帮助。)

相关内容