如何使用LaTeX创建一个带有标题的自定义表环境?

时间:2009-09-07 16:19:24

标签: latex tex latex-environment newenvironment

我有一个使用\ 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 个答案:

答案 0 :(得分:4)

您需要存储标题和标签参数,以后再使用它们。 (另外,\标签应出现在\ caption之后。)

这样的事情应该有效:

\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}

我还没有测试过这段代码。

答案 1 :(得分:-2)

使用剪切和粘贴代替新环境?我是仙女肯定的\ newenv。并不意味着以这种方式使用。有什么意义呢?不是每次都打出来?