アルファベットの書体(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}}を記述しているだけである.