PR

【LaTeX】新しい演算子を定義するDeclareMathOperatorの使い方

LaTeX
記事内に広告が含まれています。

\log \lim のようなコマンドは,\log, \lim のように既に演算子が定義されていますが,新しい演算子を定義したいときがあるでしょう。
今回は,新しい演算子を定義するために使う \DeclareMathOperator の使い方を紹介します。最後には,\operatorname コマンドというのも紹介します。

\DeclareMathOperator を使うためには amsmath パッケージが必要です。ほとんどの場合,読み込んでいると思うので差し支えないでしょう。

\newcommand を用いて新しい演算子を定義することも可能ですが,演算子専用のものでないため,余白の調整が適切ではありません。\DeclareMathOperator が使えるのであれば,これを使いましょう。

DeclareMathOperatorコマンドの使い方

このコマンドは,\DeclareMathOperator{新しいコマンド}{出力される演算子} または \DeclareMathOperator*{新しいコマンド}{出力される演算子} の形で使います。*がつくかどうかは,添え字の付き方の違いです。

\DeclareMathOperator{\ope}{ope} 

とすると,本文数式中で \ope_a f のようにすることで, \log_a b と同様に添え字が斜めにつく“log型”の作用素

\Large \color{red}\operatorname{ope}_a f


が定義できます(強調のため色は変えています)。また,\ope_a^b f とすると,

\Large\color{red}\operatorname{ope}_a^b f


とできます。一方,

\DeclareMathOperator*{\ope}{ope}

のように,*をつけると,本文数式中に \ope_a f とすることで, \displaystyle \lim_{n\to\infty} a_n と同様に添え字が下につく“lim型”の作用素

\Large \color{red} \operatorname*{ope}_a f


が定義できます。また,\ope_a^b f のようにすれば,

\Large \color{red} \operatorname*{ope}_a^b f


のように上下に装飾を付けることも可能です。

ただし,インラインモードで出力するときは, \lim_{n\to\infty} a_n \max_x f(x) のように,斜め下につきます。実際,インラインでは, \color{red} \operatorname*{ope}_a f のようになります。

コマンドの例

いくつかコマンドの定義の例を挙げておきましょう。コピペして使ってもらって構いません。

% log type
\DeclareMathOperator{\sgn}{sgn}
\DeclareMathOperator{\sign}{sign}
\DeclareMathOperator{\Supp}{Supp}
\DeclareMathOperator{\tr}{tr}
\DeclareMathOperator{\Tr}{Tr}
\DeclareMathOperator{\Det}{Det}
\DeclareMathOperator{\Log}{Log}
\DeclareMathOperator{\rank}{rank}
\DeclareMathOperator{\rk}{rk}
\DeclareMathOperator{\diag}{diag}
\DeclareMathOperator{\corank}{corank}
\DeclareMathOperator{\Res}{Res}
\DeclareMathOperator{\Ker}{Ker}
\DeclareMathOperator{\coker}{coker}
\DeclareMathOperator{\Coker}{Coker}
\DeclareMathOperator{\Var}{Var}
\DeclareMathOperator{\Cov}{Cov}
\DeclareMathOperator{\sech}{sech}
\DeclareMathOperator{\csch}{csch}
\DeclareMathOperator{\arcsec}{arcsec}
\DeclareMathOperator{\arccot}{arccot}
\DeclareMathOperator{\arccsc}{arccsc}
\DeclareMathOperator{\arccosh}{arccosh}
\DeclareMathOperator{\arcsinh}{arcsinh}
\DeclareMathOperator{\arctanh}{arctanh}
\DeclareMathOperator{\arcsech}{arcsech}
\DeclareMathOperator{\arccsch}{arccsch}
\DeclareMathOperator{\arccoth}{arccoth}
\DeclareMathOperator{\grad}{grad}
\DeclareMathOperator{\div}{div}
\DeclareMathOperator{\rot}{rot}
% limit type
\DeclareMathOperator*{\argmin}{arg~min}
\DeclareMathOperator*{\argmax}{arg~max}

ここで arg~min などの ~ は,「改行禁止のスペース」を表します。

operatornameコマンド

amsmath パッケージには,\DeclareMathOperator コマンドと類似のものに,\operatorname, \operatorname* コマンドがあります。これは数式モードにおいて,たとえば

\operatorname{ope}_a f, \operatorname*{ope}_b g

とかくと,

\operatorname{ope}_a f, \operatorname*{ope}_b g

のようになります。
これは,「一度しか使わないため,わざわざ別途のコマンドとして定義する必要がない」場合や,複雑なことをしたい場合に役に立ちます。

定義済みの数学関数

\sin \log などは,わざわざ自分で定義しなくとも,すでに定義されています。このような関数は,以下の記事を参照してください。

その他の特殊コマンド記事一覧

参考

  1. amsmath – AMS mathematical facilities for LATEX