アルファベットの書体(mathbb, mathcal, etc.)マクロ
ソースコード
\usepackage{amssymb}
\usepackage{mathrsfs}
\makeatletter
\newcommand{\MyAlphabet}[1]{\@tfor\Ch@r:=#1\do{
\expandafter\edef\csname bb\Ch@r\endcsname{\noexpand\mathbb{\Ch@r}}
\expandafter\edef\csname cal\Ch@r\endcsname{\noexpand\mathcal{\Ch@r}}
\expandafter\edef\csname frak\Ch@r\endcsname{\noexpand\mathfrak{\Ch@r}}
\expandafter\edef\csname scr\Ch@r\endcsname{\noexpand\mathscr{\Ch@r}}
}}
\makeatother
\MyAlphabet{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}
解説
例えば複素数体の記号をLaTeXで出力するには\mathbb{C}と入力する必要がある. しかし毎回\mathbb{C}とか\mathbb{R}とか記述するのはなかなか大変である. そこでマクロを定義して, より短い入力で済むようにすることができる.
\newcomamand{\C}{\mathbb{C}}
しかし上記のようにすると, そのマクロが黒板太字(mathbb)のCなのか筆記体(mathcal)のCなのかドイツ文字(mathfrak)のCなのか花文字(mathscr)のCなのか一目ではよく分からない. そこで私は以下のようにマクロを記述することを推奨したい.
\newcomamand{\bbC}{\mathbb{C}}
\newcomamand{\calC}{\mathcal{C}}
\newcomamand{\frakC}{\mathfrak{C}}
\newcomamand{\scrC}{\mathscr{C}}
マクロの文字数は多少増えてしまったが, 元の入力文字数よりも短く, 他と区別できるマクロができた. あとはCだけではなくてA~Zまでマクロを記述したいところだが, その場合4行*52種類(大小区別)で208行もプリアンブルに記述することになる(\mathbb{a}等の記号は用意されてないので実際はもっと少ないが). そんなときにプリミティブなマクロを用いることで208行を短く書くことができる.
\usepackage{amssymb}
\makeatletter
\newcommand{\MyAlphabet}[1]{\@tfor\Ch@r:=#1\do{
\expandafter\edef\csname bb\Ch@r\endcsname{\noexpand\mathbb{\Ch@r}}
}}
\makeatother
\MyAlphabet{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}
詳細の説明はここではしないが, \MyAlphabet変数に入れた文字に対してfor文で\newcommand{\bbC}{\mathbb{C}}を記述しているだけである.