Hmmm. This makes me curious.
Are the parameters known at the time of procedure definition or are they unknown?
If you use the format like this:
ad_proc -public template::element { command form_id element_id args } {
Manage elements of form objects.
} {
This is called like so:
template::element create $form_id $element_id -label "Label" -widget "Widget" -html "html" etc...
You can have an arbitrary list of named parameters which will be in the "args" variable.
If you pass this list to get_opts it will parse them into an array. This seems like what you were asking for, but maybe I am confused.