Конечно, ты почти понял. (Хотя есть ли причина, по которой вы используете заголовки разделов, а не заголовки таблиц?)
\newenvironment{tablesection}[2][\section]{
#1*{#2}
\begin{tabular*}
}{
\end{tabular*}
}
и используйте его как
\begin{tablesection}[\subsection]{Table Name}{cc}
a & bb \\
aa & b \\
\end{tablesection}
Если вы опустите необязательный аргумент в квадратных скобках, по умолчанию используется \section
.
Помните (La) TeX работает с расширением макроса, поэтому любой поток токенов, который вы передаете во входные данные, может использоваться в качестве текста замены в определении макроса. (С некоторыми ограничениями для «специальных символов», таких как %
и т. Д.)