在另一个环境中创建环境?

在另一个环境中创建环境?

为什么我不能定义一个包含另一个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并且不受环境内容的影响,那么您将需要它。

相关内容