我想将这段代码提取到环境中
\begin{table}[H]
\begin{tabularx}{\textwidth}{lX}
\toprule
\textbf{a} & a \\ \midrule
\textbf{b} & b \\ \midrule
\textbf{c} & c \\ \midrule
\textbf{d} & d \\ \midrule
\textbf{e} &
\begin{enumerate}[leftmargin=*,label=\arabic*),nosep,after=\vspace{-\baselineskip},before=\vspace{-0.6\baselineskip}]
\item x
\item y
\end{enumerate} \\ \midrule
\textbf{f} & e \\ \bottomrule
\end{tabularx}
\label{tab:table}
\end{table}
所需用途:
\begin{ucbx}{a}{b}{c}{d}{e}
\item x
\item y
\end{ucbx}
我目前正在使用xparse
、、tabularx
和float
包booktabs
:enumitem
\NewDocumentEnvironment{ucbx}{+m+m+m+m+m}{%
\table[H]
\tabularx{\textwidth}{lX}
\toprule
\textbf{a} & #1 \\ \midrule
\textbf{b} & #2 \\ \midrule
\textbf{c} & #3 \\ \midrule
\textbf{d} & #4 \\ \midrule
\textbf{e} &
\enumerate[leftmargin=*,label=\arabic*),nosep,after=\vspace{-\baselineskip},before=\vspace{-0.6\baselineskip}]
}{%
\endenumerate \\ \midrule
\textbf{f} & #5 \\ \bottomrule
\endtabularx
\endtable
}
该代码没有产生想要的输出,并且还会抛出You can't use \relax' after \the.
、、和错误。Misplaced \noalign.
Undefined control sequence.
misplaced alignment tab character &.
LaTeX Error: There's no line here to end.
我用它XeLaTeX
来进行编译。
谢谢。
答案1
您不应该使用\enumerate
和\endenumerate
,而应该使用正确的\begin{enumerate}
和\end{enumerate}
,但这会与相冲突tabularx
。
解决方案:如果您不打算\verb
在项目中包含材料,则可以使用参数b
说明符。
\documentclass{article}
\usepackage{tabularx,booktabs,enumitem}
\NewDocumentEnvironment{ucbx}{+m+m+m+m+m +b}{%
\begin{center}
\begin{tabularx}{\textwidth}{lX}
\toprule
\textbf{a} & #1 \\ \midrule
\textbf{b} & #2 \\ \midrule
\textbf{c} & #3 \\ \midrule
\textbf{d} & #4 \\ \midrule
\textbf{e} &
\begin{enumerate}[
leftmargin=*,
label=\arabic*),
nosep,
after=\vspace{-\baselineskip},
before=\vspace{-0.6\baselineskip}
] #6
\end{enumerate} \\ \midrule
\textbf{f} & #5 \\ \bottomrule
\end{tabularx}
\end{center}
}{}
\begin{document}
\begin{ucbx}{a}{b}{c}{d}{e}
\item x
\item y
\end{ucbx}
\end{document}
table
如果没有标题就无需打电话。