TeX記法による数式の記述をする機会って結構ありますよね。Qiitaやはてなブログのような主要なブログでもサポートしてますし、TyporaやNotionのようなメモ帳アプリでも使えます。
そんなときに自分で記号を定義したいこともありますよね。$\newcommand{\argmin}{\mathop{\rm arg~min}\limits} \argmin_{\theta} L(\theta)$のarg minのようにデフォルトのTeXでは存在しない記号が欲しい状況があったり、あるいは複雑で書くのが面倒な記号(例えば$\hat{\boldsymbol{\beta}}_i^{(k)}$ \hat{\boldsymbol{\beta}}_i^{(k)}
とか)により短いエイリアス(別名)を与えて書きやすくしたい場合もあります。
そのへんのやり方をメモしておきます。
定義の方法
新たな記号を定義するときは\def
や\newcommand
を使います。
\def
\def\コマンド名#引数1#引数2...{ コマンドが呼び出されたとき実行される処理 }
例(引数なし)
TeXコード:
\def\t{ \top }
A^\t
実行結果:
$$
\def\t{ \top }
A^\t
$$
例(引数あり)
\def\d#1#2{ \frac{ \partial #1 }{ \partial #2 } }
\d{y}{x}
$$
\def\d#1#2{ \frac{ \partial #1 }{ \partial #2 } }
\d{y}{x}
$$
\newcommand
\newcommand{ \コマンド名 }[ 引数の数(省略可) ]{ コマンドが呼び出されたとき実行される処理 }
例(引数なし)
\newcommand{ \g }{ \gamma }
\g
$$
\newcommand{ \g }{ \gamma }
\g
$$
例(引数あり)
\newcommand{\b}[1]{ \boldsymbol{#1} } % 定義
\b{a}^\top \b{x} % 文字を入れて呼び出してみる
$$
\newcommand{\b}[1]{ \boldsymbol{#1} }
\b{a}^\top \b{x}
$$
\DeclareMathOperator
新たに演算子を定義するときには手軽でよい選択肢のように思います。
amsmath
パッケージで定義されているコマンドですが、QiitaやJupyterなど多くの環境で使えるようです。
\DeclareMathOperator{新しいコマンド}{表示される演算子}
\DeclareMathOperator*{新しいコマンド}{表示される演算子}
*
をつけると$\lim$のように下付き文字が真下に出るようになります。
例
\DeclareMathOperator*{\plim}{plim}
\plim_{n \to \infty} \beta
$$
\DeclareMathOperator*{\plim}{plim}
\plim_{n \to \infty} \beta
$$
(参考)一時的に演算子を使いたい場合
一度しか使わない場合に向いていそうな方法もあるようなのでメモしておきます
\operatorname
\operatorname{Cov}(X, Y)
$$
\operatorname{Cov}(X, Y)
$$
\operatorname*{arg min}_{\theta \in \Theta} f(\theta)
$$
\operatorname*{arg min}_{\theta \in \Theta} f(\theta)
$$
\mathop
x^{(k+1)} := \alpha \mathop{ \text{sign} } f(x^{(k)})
$$
x^{(k+1)} := \alpha \mathop{ \text{sign} } f(x^{(k)})
$$
個人的によく使うユーザー定義コマンドの例
argmin / argmax
% newcommandを使う場合
\newcommand{\argmin}{\mathop{\rm arg~min}\limits}
% DeclareMathOperatorを使う場合
\DeclareMathOperator*{\argmax}{arg max}
使用例:
$$
\newcommand{\argmin}{\mathop{\rm arg~min}\limits}
\argmin_{w} L(w)
$$
$$
\DeclareMathOperator*{\argmax}{arg max}
\argmax_{\theta} \ell(\theta)
$$
独立(確率論)
\newcommand{\indep}{\perp\!\!\!\perp} % 他サイトでは問題ないがQiitaだと崩れる(\!は負のスペース)
\newcommand{\indep}{\perp\hspace{-1em}\perp} % Qiitaでも崩れない方法
使用例:
$$
\newcommand{\indep}{\perp\hspace{-1em}\perp}
\displaystyle % これを明示しないと横スクロールバーが表示される
(Y^{(0)}, Y^{(1)}) \indep D
$$
確率極限
\DeclareMathOperator*{\plim}{plim}
使用例:
$$
\DeclareMathOperator*{\plim}{plim}
\plim_{n \to \infty} \sum_i X_i / n
$$