I have a custom table-environment defined with \newenvironment. I have a caption in this environment, but I want to have it at the end.
My environment looks (a little simplified) like this:
\newenvironment{mytable}[2]{\begin{table}[hbtp]\caption{#1}\label{#1}\begin{center}\begin{tabular}{#2}}{\end{tabular}\end{center}\end{table}}
I want to put the caption at the end, like this:
\newenvironment{mytable}[2]{\begin{table}[hbtp]\label{#1}\begin{center}\begin{tabular}{#2}}{\caption{#1}\end{tabular}\end{center}\end{table}}
But that doesn't work, because I cannot use the parameters in the end of the environment. How can I solve this problem?
You'll want to store the caption and label parameters and use them later. (Also, the \label should appear after the \caption.)
Something like this should work:
\newcommand{\templabel}{}% stores the label
\newcommand{\tempcaption}{}% stores the caption
\newenvironment{mytable}[3]{%
\gdef\templabel{#1}% store the label so we can use it later
\gdef\tempcaption{#2}% store the caption so we can use it later
\begin{table}[hbtp]%
\begin{center}%
\begin{tabular}{#3}%
}{%
\caption{\tempcaption}% use the stored caption
\label{\templabel}% use the stored label (*after* the caption)
\end{tabular}%
\end{center}%
\end{table}%
}
Use the environment like this:
\begin{mytable}{tab:example}{This is the caption for my example table.}{cc}
Row 1 & First \\
Row 2 & Second \\
Row 3 & Third \\
\end{mytable}
I haven't tested this code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With