为什么我不能定义一个包含另一个tabularx
环境的环境?
例如,为什么我不能这样做:
\newenvironment{customTabular}{
% This is the begin code
\begin{tabularx}{\linewidth}{l l X}
}
{
% This is the end code
\end{customTabular}
}
然后像这样使用它:
\begin{customTabular}
Blah & Blah & Blah\\
\end{customeTabular}
答案1
这些tabular
扩展都是基于对 TeX 对齐系统的破解,这需要一些扩展复杂性(这是我所了解的)。一个有时有效的技巧是使用低于 LaTeX 抽象一级的控制序列。这有效:
\documentclass{article}
\usepackage{tabularx}
\newenvironment{customTabular}{
% This is the begin code
\begingroup
\tabularx{\linewidth}{l l X}
}
{
% This is the end code
\endtabularx
\endgroup
}
\begin{document}
\begin{customTabular}
Blah & Blah & Blah\\
\end{customTabular}
\end{document}
编辑:\begingroup
...\endgroup
在那里是因为\begin{tabularx}
开始了一个组然后扩展\tabularx
。但由于\begin{customTabular}
开始了自己的组,对于这种简单情况,您不需要它。我想,如果您希望之后有额外的代码,\endtabular
并且不受环境内容的影响,那么您将需要它。