[Tex/LaTex] tabularx inside a \newenvironment

environmentstablestabularx

There's something wrong with this code:

\newenvironment{Tbl}
{\begin{tabularx}{\textwidth}{|l|X|} \hline}
{\end{tabularx}}

but this is fine:

\newenvironment{Tbl}
{\begin{tabular}{|l|l|} \hline}
{\end{tabular}}

Why? And how can I get the first to work?

Here is the full LaTeX file:

\documentclass[a4paper, 12pt]{article}
\usepackage{tabularx}

\newenvironment{Tbl}
{\begin{tabularx}{\textwidth}{|l|X|} \hline}
{\end{tabularx}}

\begin{document}

\begin{Tbl}
\end{Tbl}

\end{document}

latex test.tex

produces:

This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6)
 %&-line parsing enabled.
entering extended mode
(./test.tex
LaTeX2e <2005/12/01>
Babel <v3.8h> and hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, arabic, basque, bulgarian, coptic, welsh, czech, slovak, german, ng
erman, danish, esperanto, spanish, catalan, galician, estonian, farsi, finnish,
 french, greek, monogreek, ancientgreek, croatian, hungarian, interlingua, ibyc
us, indonesian, icelandic, italian, latin, mongolian, dutch, norsk, polish, por
tuguese, pinyin, romanian, russian, slovenian, uppersorbian, serbian, swedish, 
turkish, ukenglish, ukrainian, loaded.
(/usr/share/texmf/tex/latex/base/article.cls
Document Class: article 2005/09/16 v1.4f Standard LaTeX document class
(/usr/share/texmf/tex/latex/base/size12.clo))
(/usr/share/texmf/tex/latex/tools/tabularx.sty
(/usr/share/texmf/tex/latex/tools/array.sty)) (./test.aux))
Runaway argument?
 \par 
! File ended while scanning use of \TX@get@body.
<inserted text> 
                \par 
<*> test.tex

? 

Best Answer

This is considered "status by design" for tabularx. See the tabularx documentation (section 5 The Macros, p 4).

The way around it is the use the "command form" of the tabularx environment:

\newenvironment{Tbl}
  {\tabularx{\textwidth}{|l|X|} \hline}
  {\endtabularx}
Related Question