Как создать самоопределенную табличную среду с заголовком в конце таблицы с помощью LaTeX?
У меня есть пользовательская табличная среда, определенная с помощью \ newenvironment. У меня есть подпись в этой среде, но я хочу иметь ее в конце.
Моя среда выглядит (немного упрощенно) так:
\newenvironment{mytable}[2]{\begin{table}[hbtp]\caption{#1}\label{#1}\begin{center}\begin{tabular}{#2}}{\end{tabular}\end{center}\end{table}}
Я хочу поставить подпись в конце, вот так:
\newenvironment{mytable}[2]{\begin{table}[hbtp]\label{#1}\begin{center}\begin{tabular}{#2}}{\caption{#1}\end{tabular}\end{center}\end{table}}
Но это не работает, потому что я не могу использовать параметры в конце среды. Как я могу решить эту проблему?
2 ответа
Решение
Вы захотите сохранить параметры заголовка и метки и использовать их позже. (Кроме того, метка \ должна появляться после подписи \).
Примерно так должно работать:
\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}%
}
Используйте среду как это:
\begin{mytable}{tab:example}{This is the caption for my example table.}{cc}
Row 1 & First \\
Row 2 & Second \\
Row 3 & Third \\
\end{mytable}
Я не проверял этот код.
Использовать вырезать и вставлять вместо новой среды? я уверен, что \newenv. не предназначен для использования таким образом. Какой в этом смысл? не печатать все это каждый раз?