Как создать самоопределенную табличную среду с заголовком в конце таблицы с помощью 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. не предназначен для использования таким образом. Какой в ​​этом смысл? не печатать все это каждый раз?

Другие вопросы по тегам