The fields posName and posDoc must be non-empty strings for the argument
to be listed with its documentation under the section posSec of generated
help.

Optional arguments

An optional argument is specified on the command line by a name possibly
followed by a value.

The name of an option can be short or long.

A short name is a dash followed by a single alphanumeric character:
-h, -q, -I.

A long name is two dashes followed by alphanumeric characters and dashes:
--help, --silent, --ignore-case.

More than one name may refer to the same optional argument. For example in
a given program the names -q, --quiet, and --silent may all stand for
the same boolean argument indicating the program to be quiet. Long names can
be specified by any non-ambiguous prefix.

There are three ways to assign values to an optional argument on the command
line.

As the next token on the command line: -o a.out, --output a.out.

Glued to a short name: -oa.out.

Glued to a long name after an equal character: --output=a.out.

Glued forms are necessary if the value itself starts with a dash, as is the
case for negative numbers, --min=-10.

Assignable options

optv ai is an optional argument that yields v in absence, or an
assigned value in presence. If the option is present, but no value is
assigned, it is considered a user-error and usage is printed on exit.

defaultOptAlldef vs ai is like optAll except that if it is present
without being assigned a value, the value def takes its place in the list
of results.

Positional arguments

Positional arguments are tokens on the command line that are not option names
or the values being assigned to an optional argument.

Since positional arguments may be mistaken as the optional value of an
optional argument or they may need to look like an optional name, anything
that follows the special token --(with spaces on both sides) on the command
line is considered to be a positional argument.

Positional arguments are listed in documentation sections iff they are
assigned both an argName and an argDoc.

Arguments as Terms

This is used for required positional arguments. There is nothing
stopping you from using it with optional arguments, except that they
would no longer be optional and it would be confusing from a user's
perspective.