diffcoeff パッケージのすゝめ

**LaTeX で偏微分を書くのは面倒くさい!**

```math
\nabla^2 = \frac{1}{r^2}\frac{\partial}{\partial r}\left(r^2\frac{\partial}{\partial r}\right)+\frac{1}{r^2\sin\theta}\frac{\partial}{\partial\theta}\left(\sin\theta\frac{\partial}{\partial\theta}\right)+\frac{1}{r^2\sin^2\theta}\frac{\partial^2}{\partial\varphi^2}
```

これ直打ちするとこう

```latex
\nabla^2 =
\frac{1}{r^2}\frac{\partial}{\partial r}\left(r^2\frac{\partial}{\partial r}\right) + 
\frac{1}{r^2\sin\theta}\frac{\partial}{\partial\theta}\left(\sin\theta\frac{\partial}{\partial\theta}\right) +
\frac{1}{r^2\sin^2\theta}\frac{\partial^2}{\partial\varphi^2}
```

diffcoeff パッケージを使うとこう!

```latex
% \usepackage{diffcoeff}
\nabla^2 =
\frac{1}{r^2}\diffp*{\left(r^2\diffp{}r\right)}r +
\frac{1}{r^2\sin\theta}\diffp*{\left(\sin\theta\diffp{}\theta\right)}\theta +
\frac{1}{r^2\sin^2\theta}\diffp*[2]{}\varphi
```

あんまり短くなってない? うるせえ!

diffcoeff パッケージを使うと、短く書けるだけでなく、適切にスペースを入れてくれるのできれいに書けるぞ!

# パッケージの読み込み

普通に usepackage するだけ。

```latex
\usepackage{diffcoeff}
```

## ISO オプション

ISO 80000-2 にしたがった表記になるオプション。

```latex
\usepackage[ISO]{diffcoeff}
```

左が普通に読み込んだときのイメージ、右が ISO を付けて読み込んだときのイメージ。

```math
\left.\frac{d\hspace{1mu}f(x)}{d\hspace{1mu}x}\right|_{x=x_0}\qquad\left(\frac{\mathrm{d}f(x)}{\mathrm{d}x}\right)_{\hspace{-6mu}x=x_0}
```

## 細かい指定

ファイルから読み込む方法と、LaTeX でオプション指定する方法がある。
後者を紹介する。

`\diffdef` コマンドで、オプションをリストにして表記する。

```latex
\usepackage{diffcoeff}
\diffdef{}{
  op-symbol = \bigstar ,
  op-symbol-alt = \heartsuit ,
  left-delim = \left[ ,
  right-delim = \right]
}
```

これで上と同じ数式を出すとこんな感じになる。

```math
\left[\frac{\bigstar\hspace{1mu}f(x)}{\heartsuit\hspace{1mu}x}\right]_{x=x_0}
```

ISO オプションは次のように指定したのと同じ。

```latex
\diffdef{}{
  op-symbol = \mathrm{d} ,
  op-order-sep = 0mu ,
  left-delim = \left( ,
  right-delim = \right) ,
  subscr-nudge = -6mu
}
```

細かなオプションはマニュアル参照のこと。

## 特定の場合だけテンプレートを指定する方法

熱力学のときだけ ISO っぽい表記をしたい、みたいなとき。
`\diffdef` の第一引数に名前を指定すると、使用時にオプションとしてテンプレートが選べるようになる。

```latex
\diffdef{hoge}{
  op-symbol = \bigstar ,
  op-symbol-alt = \heartsuit ,
  left-delim = \left[ ,
  right-delim = \right]
}
```

としておいて、

```latex
\diff{f(x)}{x}[x=x_0] \qquad
\diff.hoge.{f(x)}{x}[x=x_0]
```

とすると、

```math
\left.\frac{d\hspace{1mu}f(x)}{d\hspace{1mu}x}\right|_{x=x_0}\qquad
\left[\frac{\bigstar\hspace{1mu}f(x)}{\heartsuit\hspace{1mu}x}\right]_{x=x_0}
```

となる。

デフォルトで有効なのは次の 3 つ。

### p

偏微分モード。

```latex
\diff.p.yx[x=3]
```

```math
\left(\frac{\partial\hspace{1mu}y}{\partial\hspace{1mu}x}\right)_{\hspace{-6mu}x=a}
```

### delta / Delta

微分の記号がデルタになる。

```latex
\diff.delta.y/x
```

```math
\delta\hspace{1mu}y/\delta\hspace{1mu}x
```

なお、`diffd` / `Diffd` コマンドでも代用できる。
上の式は `\diffd y/x` でも出せる。

### D

ISO オプション時のみ有効。
微分の記号が `\mathrm{D}` になる。

```latex
\diff.D.y/x
```

```math
\mathrm{D}y/\mathrm{D}x
```

# 使い方

## 微分

```latex
\diff{f(x)}{x}
```

これで

```math
\frac{d\hspace{1mu}f(x)}{d\hspace{1mu}x}
```

となる。

## 偏微分

```latex
\diffp{f(x,t)}{x}
```

これで

```math
\frac{\partial\hspace{1mu}f(x,t)}{\partial\hspace{1mu}x}
```

となる。

## n 階の微分・偏微分

```latex
\diffp[n]{f(x,t)}{x}
```

これで

```math
\frac{\partial^n\hspace{1mu}f(x,t)}{\partial\hspace{1mu}x^n}
```

こう。

## 変数が複数のとき

```latex
\diffp{F}{x,y}
```

これで

```math
\frac{\partial^{2}\hspace{1mu}F}{\partial\hspace{1mu}x\hspace{2mu}\partial\hspace{1mu}y}
```

こう。さらに、

```latex
\diffp[n+1,2n+1,m]{f(t,u,v)}{t,u,v}
```

これで

```math
\frac{\partial^{3n+m+2}\hspace{1mu}f(t,u,v)}{\partial\hspace{1mu}t^{n+1}\hspace{2mu}\partial\hspace{1mu}u^{2n+1}\hspace{2mu}\partial\hspace{1mu}v^m\hspace{1mu}}
```

こう。最高。

分母の次数を勝手に計算してほしくないときは、オプションで指定できる。

```latex
\diffp[a,b,c][N]{f(t,u,v)}{t,u,v}
```

```math
\frac{\partial^{N}\hspace{1mu}f(t,u,v)}{\partial\hspace{1mu}t^a\hspace{2mu}\partial\hspace{1mu}u^b\hspace{2mu}\partial\hspace{1mu}v^c\hspace{1mu}}
```

## 微分される関数を外に出したいとき

アスタリスクをつける。

```latex
\diff*{\diff{f(x)}{x}}{x}
```

これで

```math
\frac{d}{d\hspace{1mu}x}\frac{d\hspace{1mu}f(x)}{d\hspace{1mu}x}
```

こんなふうになる。

## ある点での微分

$x=a$ のときの値を示すやつ。最後につければよい。

```latex
\diff[2]{f(x)}{x}[x=a]
```

これはこうなる。

```math
\left.\frac{d^2\hspace{1mu}f(x)}{d\hspace{1mu}x^2}\right|_{x=a}
```

## 偏微分の周りにカッコを付ける

最後のカッコに何も入れないことで、偏微分全体をカッコで囲える。
これは上の $x=a$ できるやつが縦棒表記のときも有効。

```latex
\diffp{L}{q_i}-\diff*{\diffp{L}{\dot{q}_i}[]}{t}=0
```

```math
\frac{\partial\hspace{1mu}L}{\partial\hspace{1mu}q_i}-\frac{d}{d\hspace{1mu}t}\left(\frac{\partial\hspace{1mu}L}{\partial\hspace{1mu}\dot{q}_i}\right)=0
```

みんな大好きオイラー＝ラグランジュ方程式。

## 1 行表記

分母分子の間にスラッシュを入れると 1 行で出力してくれる。
インラインの場合などに便利。

```latex
\diffp[2,3]{F(x,y)}/{x,y}[x=a,y=b]
```

```math
\left(\partial^5\hspace{1mu}F(x,y)/\partial\hspace{1mu}x^2\hspace{2mu}\partial\hspace{1mu}y^3\right)_{x=a,y=b}
```

## ヤコビアン

`\jacob` コマンド。謎の機能。

```latex
\left|\jacob{x,y}{r,\theta}\right|
= \left|\begin{matrix}\cos\theta & -r\sin\theta \\ \sin\theta & r\cos\theta \end{matrix}\right|
= r
```

```math
\left|\frac{\partial(x,y)}{\partial(r,\theta)}\right| = \left|\begin{matrix}\cos\theta & -r\sin\theta \\ \sin\theta & r\cos\theta \end{matrix}\right| = r
```

## 詳細な順序

`diff` コマンドは次のオプションが指定できる。

- 1: テンプレートの名前
- 2: 分子の関数を外に出すオプション（`*`）
- 3: 微分の次数
- 4: 合計次数のオーバーライド
- 5: 微分されるもの
- 6: スラッシュ
- 7: 微分する変数のリスト
- 8: 右下の評価する点

全部使うと次のようになる。

```latex
\diff.p.*[n,m,l][p]{F(x,y,z)}/{x,y,z}[(x,y,z)=(a,b,c)]
```

これは次のようになる。

```math
\left(\left(\partial^p/\partial\hspace{1mu}x^n\hspace{1mu}y^m\hspace{1mu}z^l\right)F(x,y,z)\right)_{(x,y,z)=(a,b,c)}
```

# まとめ

diffcoeff パッケージでよい偏微分ライフを。