我正在尝试制作一些一致的表格并研究命令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}