久保の部屋 — LaTeX
MENU   JAPANESEENGLISH

Tips 2: オペレータ命令の再定義

パッケージ amsmath.sty を利用すると,\DeclareMathOperator 命令を用いて,新しいオペレータ命令を定義できる.

\DeclareMathOperator\Hom{Hom}

しかし,すでに定義済みなオペレータ命令(\Re, Im)などを置き換えることはできない.そこで再定義用の \ReDeclareMathOperator 命令を書いてみる.

マクロ定義

5:\makeatletter
6:\newcommand\ReDeclareMathOperator[2]{%
7:  \begingroup \escapechar\m@ne\xdef\@gtempa{{\string#1}}\endgroup
8:  \expandafter\@ifundefined\@gtempa
9:    {\@latex@error{Command \string#1 undefined}\@ehc}%
10:    \relax
11:  \let\@ifdefinable\@rc@ifdefinable
12:  \DeclareMathOperator#1{#2}}
13:\makeatother

そこそこLaTeXマクロに詳しい人向けの解説

実は再定義するには \DeclareMathOperator 命令を呼び出す前に,\let#1\relax とするだけでこと足りるのだが,それだと未定義のときも機能してしまうので,あえて \renewcommand 命令のチェック機能を利用し,未定義の場合のエラー処理を入れてある(7〜11行目).

使い方

プリアンブル部(\begin{document} より前)で \DeclareMathOperator のように使う.

定義部分(プリアンブル部)

15:\ReDeclareMathOperator\Re{Re}
16:\ReDeclareMathOperator\Im{Im}

使用部分

19:  \[
20:    x = \Re z,\quad y = \Im z
21:  \]

出力結果

\[ x = \operatorname{Re} z,\quad y = \operatorname{Im} z \]

サンプルコード