Suppose you want the \monthname command defined
in the previous section to have an optional argument instead
of a mandatory argument. If the argument is omitted, the current
month will be used. The LaTeX code will now look like:
\newcommand{\monthname}[1][\month]{%
\ifcase#1
\or January%
\or February%
\or March%
\or April%
\or May%
\or June%
\or July%
\or August%
\or September%
\or October%
\or November%
\or December%
\fi}
The Perl subroutine &do_cmd_monthname will now need
to use the subroutine &get_next_optional_argumentname=&get_next_optional_argument,sort=getnextoptionalargument,description=Extracts optional argument
at the start of $_ and returns
($argument, $pattern).&get_next_optional_argument.
This returns two parameters: the contents of the optional
argument and the pattern. For example, if $_ contains
the string
[1] is a very chilly month in Britain.then
($month,$pat) = &get_next_optional_argument;will result in
$month="1" and $pat="[1]", and
$_ will now contain the string:
is a very chilly month in Britain.The subroutine &do_cmd_monthname can now be modified as follows:
sub do_cmd_monthname{
local($_) = @_;
local($sec,$min,$hr,$day,$month,$pat);
($month,$pat) = &get_next_optional_argument;
if ($month eq '')
{
($sec,$min,$hr,$day,$month) = localtime(time);
$month++;
}
$Month[$month] . $_;
}
Note: be careful not to do:
$month = &get_next_optional_argument;