I'm setting up a new environment for my latex document for consistent tables. It looks like this:
\newenvironment{defaultTable}[2] {
\begin{table}[h]
\noindent
\tabularx{\textwidth}{#1}
\specialrule{0.5pt}{10pt}{0pt} \rowcolor[gray]{.9}
} {
\bottomrule
\endtabularx
\caption{#2}
\end{table}
}
It doesn't seem to find the \end{table} though:
! LaTeX Error: \begin{table} on input line 23 ended by \end{document}.
Is there a way to avoid this?
Best Answer
Replace
\begin{table}
with\@float{table}
and replace\end{table}
with\end@float
.The
\@float
and\end@float
are LaTeX's internal commands for starting and ending the float environment.You'll also want to follow Alexey's advice on the #2 parameter. Store it in the first part of your environment (
\gdef\mycaption{#2}
) and then recall it later\caption{\mycaption}
in the second part. Put\def\mycaption{\relax}
just before the\begin{defaultTable}
line.Also, since
\@float
and\end@float
have@
signs in them, if this code is in the preamble of your document file (instead of say, a.sty
file), you'll need to put\makeatletter
before your\begin{defaultTable}
and also\makeatother
after\end{defaultTable}
.