2012.03.30 更新 スライド化しました. 新しいマクロ定義 以下に例を示す. \dev\hoge{ほげ} これにより,\hogeが「ほげ」に変換される.引数を使うには,以下のように記述する. \dev\hour#1{今は#1時です} 別の方法 上に示した処理は,以下のようにも記述できる. \newcommand{\hoge}{ほげ} \newcommand{\hour}[1]{今は#1時です} defとnewcommand違い defとnewcommandが異なる箇所として,以下が上げられる. 定義命令を定義している処理系 マクロを多重定義した場合の動作 引数のとり方 まず,定義されている処理系が異なる.defはtexで定義されており,newcommandは,latexで定義されている. 次に,多重定義した際の動作が異なる.defでは,新しい定義で上書きする.一方,newcommandではエラーを出力する. 最後に,defでは,引数のとり方としてパターンマッチングを利用できる.例えば,以下のマクロ定義があるとする. \def\Hatchr(#1,#2)(#3,#4)#5 これにより,以下に示すインターフェイスを実現する. \Hatchr(3,4)(7,8){hoge} マクロの複製 以下の処理では,\hogeの内容を\fugaに複製する. \let\fuga\hoge マクロの初期化 以下のコードで,\hogeを初期化する. \let\fuga\relax ここで,\relaxは初期化のために利用する空の定義である. マクロに文字を追加し再定義 defによる定義は,マクロの多重展開をおこなわない.例えば,以下のコードを考える. \def\hoge{ほげ} \def\hoge{\hogeふぇふぇ} この後,\hogeを利用すると「\hogeふぇふぇ」と展開される.つまり,一度だけしかマクロは展開されない. マクロを展開してから定義する際には,以下の記述を用いる. \edef\hoge{\hogeふぇふぇ} これに