個人的にあると便利なマクロや細かい設定の備忘録.記事一覧



大きなアスタリスク* \bigast の作り方

数学記号や文字を,\bigplus や \sum と同じように使いたいときがある.
日本語で解説しているページが見つからなかったので,備忘録として残すことにした.
英語のページはこちら.
How to create my own math operator with limits? - TeX - LaTeX Stack Exchange

ソース

\usepackage{graphicx}
\usepackage{calc}

\newcommand{\bigast}{
  \mathop{
    \vphantom{\bigoplus} 
    \mathchoice
      {\vcenter{\hbox{\resizebox{\widthof{$\displaystyle\bigoplus$}}{!}{$\ast$}}}}
      {\vcenter{\hbox{\resizebox{\widthof{$\bigoplus$}}{!}{$\ast$}}}}
      {\vcenter{\hbox{\resizebox{\widthof{$\scriptstyle\oplus$}}{!}{$\ast$}}}}
      {\vcenter{\hbox{\resizebox{\widthof{$\scriptscriptstyle\oplus$}}{!}{$\ast$}}}}
  }\displaylimits 
}

とやっとけば,\bigast で \ast が \bigoplus のように出力されます.
※私のPCだと,pdflatex だと上手くいかず dvi を経由しないといけないようです.

命令文の雑な解説

外側から順にいく.

\mathop{ }\displaylimits

余白調節系.{ }内を math operator として出すやつ.今回は \bigoplus と同じようなものを作りたいから,\mathop を使った.\otimes みたいなのを出すなら,\mathbin とかを使う.詳しくは
LaTeX 数式の縦/横の調整(Kodama's tips page)
を参照.後ろについている \displaylimits は添え字の付き方を指定している.他にも,\limits と \nolimits があるぞ!
(例えば,\sum と \int はディスプレイでの添え字の付き方が違う)

\vphantom{ }

余白調節系.{ }内の文字と同じ高さの空白を作る.幅は無視される.

\mathchoice{ }{ }{ }{ }

実のところ,これが面白くて今回記事を書いた.場所ごとに出力を指定できる.\mathchoice{ディスプレイ}{テキスト}{スクリプト}{スクリプトスクリプト}
の順番なので,それぞれに \bigoplus と同じように \ast を出すように命令を書く.例えば,

\newcommand{\hoge}{\mathchoice{a}{b}{c}{d}}

とすれば,場所によって,\hoge でa,b,c,dがそれぞれ出力される.

\vcenter{\hbox{ }}

正直よくわかってない.\vcenterは{ }内の垂直方向の中心が中心になるように出力してくれる,が内側に \hbox を入れないと 水平方向の余白がおかしくなる.例えば,

$\vcenter{\hbox{$\frac{a}{\frac{b}{c}}$}}=\frac{a}{\frac{b}{c}}$

とやると伝わるはず.

\resizebox{ }{ }{ }

graphicx.sty を使用.大きさを変える. \resizebox{幅}{高さ}{出力したいもの} の順.幅もしくは高さを指定したくないとき(片方決まれば残りも決まる)は ! を指定する.

\widthof{ }

calc.sty を使用.{ }内の幅.calc.styを使いたくない場合は,直接○○ptとかcmとかやれば良さそう.