无法在新环境中使用字幕

无法在新环境中使用字幕

我正在尝试制作一些一致的表格并研究命令nenenvironment。但是,我无法同时使用标题和定义的环境。

新环境定义:

\newenvironment{mytable}[1]
{
    \begin{table}[ht]
        #definitions go here
            \begin{tabular}{#1}
}
{
            \end{tabular}
    \end{table}
}

如果我有这个,我不会收到任何错误,并且一切正常:

\begin{mytable}{ccc}
cell & cell & cell \\
\end{mytable}

但是,如果我仅添加\caption如下命令:

\begin{mytable}{ccc}
cell & cell & cell \\
\caption{caption}
\end{mytable}

我收到此错误:

Missing \endgroup inserted. [\caption{caption}]

答案1

这是定义环境的方法,借用以下代码\empty 和 \@empty 之间有什么区别?

\newenvironment{mytable}[2][]{%
    \begin{table}[ht]
        %definitions go here
        \if\relax\detokenize{#1}\relax
        \else
        \caption{#1}
        \fi
        \centering
            \begin{tabular}{#2}
}
{%
            \end{tabular}
    \end{table}
}

需要一个强制的参数(对齐,例如ccc),以及一个选修的参数,即caption。它可以用作

\begin{mytable}[caption]{ccc}

或者

\begin{mytable}{ccc}

不过,我并不认为这是一个好主意——你仍然可以使用label,但这似乎不自然。另一个不容易解决的问题是,该caption命令需要一个写入的可选参数lof。你可以使用xparse包,但所有这一切都是为了节省时间:)

\documentclass{article}


\newenvironment{mytable}[2][]{%
    \begin{table}[ht]
        %definitions go here
        \if\relax\detokenize{#1}\relax
        \else
        \caption{#1}
        \fi
        \centering
            \begin{tabular}{#2}
}
{%
            \end{tabular}
    \end{table}
}

\begin{document}

\begin{mytable}[caption]{ccc}
    1   &   2   &   3   \\
\end{mytable}
\end{document}

相关内容