newcommandでオプション引数を使う

newcommandでオプション引数を使いたくて調べていた。
2ch \chapter{\TeX} % 第五章より引用。

136 :名無しさん@お腹いっぱい。:2006/09/23(土) 14:06:17
    \newcommand に第 2 オプション引数があるときには、
    “定義しているマクロにオプション引数があり、かつ、
    定義しているマクロのオプション引数のデフォルト値が
    \newcommand の第 2 オプション引数となる”。

    \newcommand\forloop[5][1]{...} の場合なら、
    \forloop の 5 個の引数のうちの最初の 1 個はオプション引数で、
    そのデフォルト値が 1 となる。
    したがって、\forloop{n}{0}{...}{...} は \forloop[1]{n}{0}{...}{...} と同じこと。
    もちろん、\forloop にオプション引数を与えたらそれはそのまま用いられる。
    # これ以上のことについは、latex.ltx での \newcommand の定義を直接調べてくれ。 

要は1つ目の[ ]に引数の(オプションも含めた)個数を、そのあとの[ ]に順次1個目、2個目、...、n個目のデフォルトの値を入れておけば、最初のn個の引数がオプション引数になる。完全に勘違いしていたので修正。オプション引数にできるのは最初の一個のみ。オプション引数まで含め最大9個の引数が指定可能。たとえば

\newcommand{\hoge}[3][\today]{
#2 #3!

Today is #1.
}

\hoge{Hello}{Jack}

\hoge[Thursday]{Hi}{Cathy}

とか書いておけば

Hello Jack!
Today is October 16, 2008.

Hi Cathy!
Today is Thursday.

てな具合で出力されるわけだ。


以下追記:
挙げた例がひどい気がしてきたので最近自分で使ってるやつを載せてみる。

\newcommand{\fig}[3][width=15cm]{
\begin{figure}[ht]
\begin{center}
 \includegraphics[#1]{figs/#2}
\end{center}
\caption{#3}
\label{fig:#2}
\end{figure}}

\newcommand{\fref}[1]{\ref{fig:#1}}

とりあえずこれで、ソースファイルがあるフォルダにfigsというフォルダを作ってepsファイルを入れておけば、たとえば\fig{oscillo}{オシロスコープの画面スケッチ}
でfigs/oscillo.epsが幅15cmで出力され、キャプションとして「オシロスコープの〜」が付く。幅を変えたい場合がオプション引数で
\fig[width=5cm]{osciilo}{オシロスコープの画面スケッチ}
とか書く。
\fref{oscillo}で図番号を参照できる。