卒論を LaTeX で書こう！

本記事は、[U-TOKYO AP Advent Calendar 2017](https://qiita.com/advent-calendar/2017/ut_ap) の19日目です。
続編は[こちら](https://qiita.com/aya-chan/items/6d0e175d8f42fc4f53de)。
計数工学科の $\rm\LaTeX$ テンプレートについては[こちら](https://qiita.com/aya-chan/items/4a7b9a369bac753ea743)。

**目次**
- [概要](#概要)
- [ローマン体とイタリック体: JIS に基づいた数式の書き方](#ローマン体とイタリック体-jis-に基づいた数式の書き方)
- [スペースの制御](#スペースの制御)
続編の目次（参考）
-括弧
-行列
-スペースとハイフンについて

#概要
計数工学科[^keisu]の4年生が卒業論文の執筆にとりかかる時期になりました。
計数工学科では、卒論の書き方について、杉原 (2001, 第6章) に基づいた指導が行われています。
そこで、本記事では、学術論文の書き方に関連した $\rm\LaTeX$ tips を紹介します[^suuri]。

[^suuri]: 先日の数理演習で言われた注意点を振り返り、その実践方法を紹介します。
[^keisu]: 東京大学工学部計数工学科。

##おことわり
本記事では、$\rm\LaTeX$ 文書の基本的な書き方は知っているものとして話を進めていきます。論文執筆で使えるコマンドを紹介していきますが、普段から $\rm\LaTeX$ で文書を作っている人にとっては基本的なコマンドを説明している箇所もあります。
主に数式モード中でのコマンドを紹介します。全体を通して必要なパッケージは amsmath です。他のパッケージが必要なコマンドはその都度説明します。
また、論文の書き方は分野や雑誌によって様々ですので、執筆する際にはまず投稿先の規定を確認してください。

#ローマン体とイタリック体: JIS に基づいた数式の書き方
数理系の論文には

```math
F(\omega) = \int_{-\infty}^{\infty} f(t) \exp(-\mathrm{i} \omega t)\, \mathrm{d} t \qquad \cdots (1)
```

といった数式が出てきます。
これを $\rm\LaTeX$ で打ってみましょう。`\[ F(\omega) = \int_{-\infty}^{\infty} f(t) exp(-i \omega t) dt \]` と打ってコンパイルすれば、

```math
F(\omega) = \int_{-\infty}^{\infty} f(t) exp(-i \omega t) dt \qquad \cdots (2)
```

となるはずです[^kihon1]。
最初の式(1)と見比べてみましょう。少し見ためが違っていますね。式(1)では、 exp や i, d *t* の d がまっすぐのローマン体になっています。
このように、（手書きではなく）印刷物に書かれる数式では、一部の文字を立てて書く決まりが JIS（日本工業規格）の中にあります。JIS Z 8201-1981「数学記号」（リンク: [JIS検索](http://www.jisc.go.jp/app/jis/general/GnrJISSearch.html) 中の「JIS規格番号からJISを検索」の検索窓に「Z8201」と打って検索してください[^JIS_HTML]。）に、
[^kihon1]: 【基本的な注意1】`\[` と `\]` で囲まれた部分は別行立て数式になります。
[^JIS_HTML]: ただしこれはダウンロードできないので、代わりに丸写しした [HTML文書](http://kikakurui.com/z8/Z8201-1981-01.html) を見ても良いでしょう。

>**5. 印刷上の注意**
印刷する場合の字体は，次のようにする。
(1) 数値が一般的に定められている定数の記号は，原則として立体とする。
(2) 演算の記号は，原則として立体とする。
(3) 変数の記号は，斜体とする。

とあります。手書きでは気にする必要の無いことですが、印刷する場合は、読みやすくするためにこれらの注意事項を守ると良いでしょう。
以下、スペース節約のため、ローマン体（アップライト体とも言います。）を立体、イタリック体を斜体と書きます。

##変数の記号を斜体にする
まず(3)ですが、$\rm\LaTeX$ の数式モード中ではラテン文字を自動的に斜体にしてくれます。例えば、`$f(x)$` と打てば $f(x)$ となります[^kihon2]。
逆に、数式モード中に立体で表示したいときには `\mathrm` を使います。
[^kihon2]: 【基本的な注意2】本文中でドル記号「\$」で囲むと数式モードになります。

**例**

- `$a b c$`, `$A B C$`
>$a b c$, $A B C$

- `$\mathrm{a} \mathrm{b} \mathrm{c}$`, `$\mathrm{A} \mathrm{B} \mathrm{C}$`
>$\mathrm{a} \mathrm{b} \mathrm{c}$, $\mathrm{A} \mathrm{B} \mathrm{C}$

以下、数式モードにするためのドル記号 `$` は省略します。

###ギリシャ文字について
数式モード中ではギリシャ文字のコマンドが使えます。
**例**

- `\alpha`, `\beta`, `\gamma`

>$\alpha$ $\beta$ $\gamma$

大文字もありますが、一つ注意しなければならないのは、**デフォルトで立体**になっているということです。コマンドの始めに `var` を付け足すと、斜体のギリシャ文字大文字が表示できます。
**例**

- `\Gamma`, `\varGamma`; `\Delta`, `\varDelta`

>$\Gamma$, $\varGamma$; $\Delta$, $\varDelta$

ギリシャ文字のうちいくつかは大文字がラテンアルファベットと同じ形です。その場合、大文字のコマンドはありません。例えば、$\alpha$ の大文字は $A$ なので、単に `$A$` と打てば OK です。

####やわらかいファイ
数年前ですが、電磁気学の講義で先生が $\varphi$ を（$\phi$ と区別して）「やわらかいファイ」と呼んでいました。$\rm\LaTeX$ には両者に対応するコマンドが用意されていて、$\phi$ が `\phi`, $\varphi$ が `\varphi` です。このように、一部のギリシャ文字小文字には変体が用意されています。`\varepsilon`, `\vartheta`, `\varpi`, `\varrho`, `\varsigma`, `\varphi` と打つと、それぞれ

```math
\begin{align}
\varepsilon && \vartheta && \varpi && \varrho && \varsigma && \varphi
\end{align}
```

になります。

**注意** 両方のコマンドがあるからと言って、一つの論文中に `var` の付かないギリシャ文字と付くものを混在させるのはやめましょう。

##演算の記号を立体にする
次に(2)です。
何も気にせずに `sin x` と打つと、$sin x$ と表示されます。普段は意識して見ていないかもしれませんが、斜体の 'sin' は滅多に見かけないと思います。ふつう見るのは $\sin x$ ですよね。
広く使われている関数や演算子の記号は立体にするのが原則です。よく使われる関数記号にはコマンドが用意されていて、
`\sin x` と打てば $\sin x$ になります。（ちなみに、 $\rm\LaTeX$ では原則としてスペースは無視されるので、最初の $sinx$ は $s \times i \times n \times x$ という意味になってしまいます。）
使いたい記号が用意されているかは、試しにコマンドを打ってみるのが一番早いです。もし打ったコマンドが存在しなくても、「（使いたい記号の名前） tex」で Google 検索すれば大抵の場合は見つかります。
微分の d も JIS に従うと[^jisniyoruto]立体にする必要があります。例えば、$\frac{\mathrm{d}}{\mathrm{d}t} f \left( x \right)$ です。

ここまでのまとめです。

- 悪い例:

>$\DeclareMathOperator*{\itlim}{\mathit{lim}} \displaystyle \mu_x = \itlim_{\varDelta t \to 0}{\frac{l_x - l_{x + \varDelta t}}{l_x \varDelta t}} = -\frac{1}{l_x} \frac{d l_x}{dx} = -\frac{d \left(log\, l_x \right)}{dx}$

- 良い例:

    `\mu_x
    = \lim_{\varDelta t \to 0} \frac{l_x - l_{x + \varDelta t}}{l_x \varDelta t}
    = -\frac{1}{l_x} \frac{\mathrm{d} l_x}{\mathrm{d}x}
    = -\frac{\mathrm{d} \left( \log l_x \right)}{\mathrm{d}x}`

>$\displaystyle \mu_x = \lim_{\varDelta t \to 0} \frac{l_x - l_{x + \varDelta t}}{l_x \varDelta t} = -\frac{1}{l_x} \frac{\mathrm{d} l_x}{\mathrm{d}x} = -\frac{\mathrm{d} \left( \log l_x \right)}{\mathrm{d}x}$


本節のここから先（「*」の付いている小節・小々節）はかなりマニアックなことを書いているので読み飛ばして、次の節: [スペースの制御](#スペースの制御)に進んでも構いません。

###演算の記号を自作する*
それでは、コマンドが無いときにはどうすれば良いのでしょうか。
コマンドが無いなら自分で作ってしまいましょう。`\DeclareMathOperator` で数学記号のコマンドを作ることができます。例えば、プリアンブルに `\DeclareMathOperator{\grad}{\mathrm{grad}}` と書いておいて、`\grad` と打つと $\DeclareMathOperator{\grad}{\mathrm{grad}}\grad$ が出せます。
これだけだとあんまり御利益が感じられないのですが、実は、`\DeclareMathOperator` で作った数学記号には、総和の記号 $\displaystyle\sum_{i=1}^n$ のように、（別行立てのときに）添字を上下に付けることができます。ただし、`\DeclareMathOperator` の後に `*` を挿入してください。例えば、`\DeclareMathOperator*{\MO}{\mathrm{MathOperator}}` として、 `\MO_{i=1}^{\infty}` と打てば $\DeclareMathOperator*{\MO}{\mathrm{MathOperator}}\MO_{i=1}^{\infty}$と表示されます。

##定数の記号を立体にする*
最後に(1)です。これが厄介です。
式中に定数を表す文字が登場することがあります。例えば、円周率 π, 自然対数の底 e などです。
JIS によると[^jisniyoruto]、定数の記号は立体にします。自然対数の底 e は約2.718と値の決まった定数ですから、単に `e` ($e$) と書くのではなく、`\mathrm{e}` ($\mathrm{e}$) とする必要があります。虚数単位 i（又は j）も同様に `\mathrm{i}` ($\mathrm{i}$), `\mathrm{j}` ($\mathrm{j}$) としなければなりません[^imaginarynumber]。
[^jisniyoruto]: 「JIS に従うと」と強調しているのは、筆者が普段読む論文では定数が立体になっていないことの方が多いからです。
[^imaginarynumber]: 虚数単位は $\sqrt{-1}$ を使うのも一つの手です。

###πを立てる*
円周率 π も立ててみましょう[^uppi]。
いくつかの方法がありますが、ここでは簡単な upgreek パッケージを使う方法を紹介します。
プリアンブルに `\usepackage{upgreek}` と書いて `\uppi` とするだけです。これで立体の π が表示されます。他のギリシャ文字についても、同様にコマンドの始めに `up` を挿入すれば OK です。
※記事中ではパッケージが使えないので、どのように表示されるかは載せていません。
[^uppi]: 筆者は立体の π を使った本や論文を見たことがないので、これはやらなくていいとは思いますが、JIS Z 8201 を読むと、5(1)の例として、驚くべきことに π が挙げられています！

###∂も立てる*
ルール(2)によれば、偏微分記号 ∂ も立てた方が良いかもしれません。
こちらもさまざまな方法がありますが、Kp-Fonts パッケージを使う方法を挙げておきます。プリアンブルに `\usepackage[partialup]{kpfonts}` と書いておけば、`\partial` が自動的に立体になります[^partialup]。
ただし、この方法を使うと、数式中の欧文フォントがすべて変更されてしまいます。∂ だけを立てたい場合は、Stack Exchange の[こちら](https://tex.stackexchange.com/questions/80104/how-to-get-an-upright-partial)を参照してください。
[^partialup]: オプション (`[partialup]`) 無しでパッケージを入れると、`\partial` は斜体の、`\partialup` は立体の偏微分記号になります。

##結局どうすればいいのか*
上記 JIS のルールだけだと判断に迷うケースも出てきます。投稿規定を確認するのが第一ですが、決まりがないときには自分で判断しなければなりません。そこで、ここまで扱ってきた JIS の方法以外の、立体にするか斜体にするか決める方法を紹介してこの節はおしまいにしましょう。（括弧の中は、各ルールに従った場合の表記例です。）

- 1文字なら斜体 ( $f(x)$, $\varGamma(x)$), 複数文字なら立体($\sin x$)
- 略語は立体 ($\sin$ (sine), $\exp$ (exponential), $\gcd(a, b)$ (**g**reatest **c**ommon **d**ivisor))[^Landau]
- 固有名詞的なものは立体、一般的なものは斜体 ( $f(x)$, $\exp x$, $\mathrm{E}[X] = \int_{\varOmega} X(\omega)\, dP(\omega)$)

[^Landau]: オーダー記法の Landau の記号 O 等もこれによれば立体にします。

###それでも決められない*
微分の d は JIS によれば[^jisniyoruto]立体 ($\mathrm{d}$) にする必要がありますが、積分 $\int f\, d\mu$ の d は演算子であるとは言えないのでどっちにするか迷います。TeX Wiki の [表記の哲学](https://texwiki.texjp.org/?%E8%A1%A8%E8%A8%98%E3%81%AE%E5%93%B2%E5%AD%A6) でも別ページに分けて議論されるほど（闇が）深い話題です。

#スペースの制御
数式をポチポチ打ってコンパイルしてみると、「こことここの間にもうちょっと隙間がほしいなあ」となることがあると思います。例えば、

```math
\int_{-\pi}^{\pi} \sin x \mathrm{d}x = 0 \qquad \cdots (3)
```

という式は、 $\sin x$ の '$x$' と $\mathrm{d}x$ がくっついており、$\sin (x\mathrm{d}x)$ であるかのように見えます。

```math
\int_{-\pi}^{\pi} \sin x\, \mathrm{d}x = 0 \qquad \cdots (4)
```

というように、$x$ と $\mathrm{d}x$ の間に隙間を入れることで、式が見やすくなります。
そこで、本節では、スペースの調整方法について説明します。

##スペースのコマンド
数式中にスペースを挿入するコマンドを列挙します。

- `\`` `, `\quad`, `\,`, `\>`, `\;`, `\qquad`
- 負のスペース `\!`
- `\hspace`, `\hphantom`

以下、各コマンドについて説明していきます。

###スペースを挿入する
まず、半角スペースに相当するのが `\␣`（バックスラッシュの後に半角スペース）、全角スペースに相当するのが `\quad` です。`\,`, `\>`, `\;`, `\qquad` は、それぞれ `\quad` の 3/18 倍、4/18 倍、5/18 倍、2 倍です。つまり、スペースの大きさの順に並べると、

```math
\begin{align}
 \text{\,} & < \text{\>} < \text{\;} < \text{\quad} < \text{\qquad}, & \text{\␣} & \fallingdotseq \text{\>}
\end{align}
```

です。式(4)の $\sin x\, \mathrm{d}x$ の $x$ と $\mathrm{d}$ の間には `\,` が挿入されています[^space]。
[^space]: `\sin`($\sin$) や `\log`($\log$) のような演算記号コマンドの前後には、デフォルトで適切なスペースが入るので基本的には自分でスペースを挿入する必要はありません。

###スペースを減らす
次に `\!` ですが、これは不要なスペースを削るときに使います。`\!` は `\quad` の -1/6 倍のスペースを挿入します。
**例** `\int_{-\infty}^{\infty} \mathrm{d}x` と `\int_{-\infty}^{\infty} \!\!\! \mathrm{d}y` を比べてみます。

>```math
\int_{-\infty}^{\infty} \mathrm{d}x \int_{-\infty}^{\infty} \mathrm{d}y\, \frac{1}{2 \pi} \exp \left(\frac{x^2 + y^2}{2} \right) = 1
```
>```math
\int_{-\infty}^{\infty} \!\!\! \mathrm{d}x \int_{-\infty}^{\infty} \!\!\! \mathrm{d}y\, \frac{1}{2 \pi} \exp \left(\frac{x^2 + y^2}{2} \right) = 1
```

使いすぎには気を付けましょう。
余談ですが、積分範囲を書かない場合は、`\iint` ($\iint$) 等のコマンドが予め用意されていますので、そちらを使いましょう。

###特定の幅のスペースを作る
`\hspace` は、引数の長さ（横幅）のスペースを作るコマンドです。使える単位には、pt や cm, mm 等があります。
**例**
`$a b$`（上）、`$a \hspace{10pt} b$`（下）
>$a b$
>$a \hspace{10pt} b$

`\hspace{-10pt}` のようにすれば負のスペースを入れられます。また、縦にスペースを入れるには `\vspace` を使います。

`\hphantom` は、引数の文字列と同じ幅のスペースを作るコマンドです。`\hspace` は引数に長さ（`10pt` など）を取るのに対して、`\hphantom` はある文字と同じ分だけスペースを空けたいときに使います。
**例**
`$A^{x y z}_{x y z}$`, `$A^{x \hphantom{y} z}_{\hphantom{x} y \hphantom{z}}$`

>```math
\begin{align}
A^{x y z}_{x y z} && A^{x \hphantom{y} z}_{\hphantom{x} y \hphantom{z}}
\end{align}
```

縦にスペースを入れたい（特定の高さを確保したい）場合は `vphantom` を使います。
**例**
上段: `\sqrt{g}`, `\sqrt{h}`, `\sqrt{g h}`
下段: `\sqrt{g \vphantom{h}}`, `\sqrt{\vphantom{g} h}`, `\sqrt{g h}`

>```math
\begin{align}
\sqrt{g} && \sqrt{h} && \sqrt{g h} \\
\sqrt{g \vphantom{h}} && \sqrt{\vphantom{g} h} && \sqrt{g h}
\end{align}
```

上段では、根号の高さが自動で調節され、全て異なっています。下段では全ての根号の中身に g, h の高さが確保されているため、高さが同じになっています[^vspaceexample]。
[^vspaceexample]: コマンドの使用例として根号の中に `\vphantom` を入れましたが、論文執筆時に根号や括弧の高さを揃えなければならないという訳ではないです。

#参考文献
- 奥村晴彦・黒木裕介 (2013) 『［改訂第6版］$\rm\LaTeX2_{\varepsilon}$ 美文書作成入門』（技術評論社）
- 杉原厚吉 (2001) 『どう書くか ―理科系のための論文作法―』 （共立出版）
- 小田忠雄 (1999) 『数学の常識・非常識―由緒正しい $\rm\TeX$ 入力法』（数学通信, 第4巻第1号, pp.95–112.） https://www.math.tohoku.ac.jp/tmj/oda_tex.pdf （**PDF注意！**）

[続編「卒論を LaTeX で書こう！！」はこちら](https://qiita.com/aya-chan/items/6d0e175d8f42fc4f53de)。