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
\]
サンプルコード
- operator.tex [LaTeX/490B]
- operator.pdf [PDF/3.87KB]