LaTeXにおける正しい論文の書き方

他人の論文や, ソースコードを見ているといろいろと思うことがあるので, 私が正しいと思っている書き方を以下に記す. 
あくまで自己流なので, 他の方のご意見 (コメント)も参照すると良いかと思います. 



追記：ウェブ上で簡単に見た目を試せるようにツールを用意しました↓（対応していない記法もあります）

https://birdwatcheryt.github.io/software/latex/index.html


# 正しい論文の書き方

- `,`(半角カンマ)や`.`(半角ピリオド)の後は必ず半角スペースをいれる
    - 日本語論文では, "半角カンマ+半角スペース"の代わりに"全角カンマ"を推奨しているところもある (ピリオドも同様に)
- 逆に`,`や`.`の前に不自然なスペースをいれない
- ソースコードは見やすいように, **インデント**と**改行**を心がける
    - 2回以上改行すると段落が変わるため注意
- 特別な理由がない限り, **ハイパーリンク**をつける: [こちら](https://qiita.com/birdwatcher/items/d354560dac9b0a991f1e)
- **略称は定義**して使うこと: (例) Support Vector Machine (SVM)
- **三点リーダー** (・・・)の使い分け
    - `\ldots`: カンマに使う. $i=1, 2, \ldots, n$
    - `\cdots`: 演算に使う. $1+2+\cdots+n$
- **数式モード**を正しく使い分けること
    - `$ $`: 文中の数式モード
    - `\[ \]`: 数式モード (式番号不要なとき)
    - `equation`: 数式モード (式番号が必要なとき)
    - `align`: 式変形などで数式を並べる場合 (`eqnarray`は使わない)
    - `multline`: 式が長くて折り曲がるとき
    - `gather`: 式をまとめて並べたいとき (すべて中央寄せになる)
- 数式中の**テキストは斜体を解除**する: (正) $[\lambda_{\rm begin}, \lambda_{\rm end}]$. (誤) $[\lambda_{begin}, \lambda_{end}]$
    - `\mathrm`や`\text`を使って斜体を解除できる (`\text`は本文と同じ字体になる)
    - 斜体を解除しないと**変数の積**とみなされる
    - 演算記号用の`\operatorname`というコマンドもある (要`amsmath`パッケージ)
- 数式中で既に予約されている文字を使う: `\max, \min, \log, \exp, \arg`
    - (正) $\max\\{x,0\\}$
    - (誤) $max\\{x,0\\}$
- **転置**の記号は`\top`がキレイ: $\boldsymbol a^\top \boldsymbol b$
- 場合分けは`\begin{cases}\end{cases}`を使う (`array`を使わないこと)
- 定義の記号`:=`は`\usepackage{mathtools}`で定義されている`\coloneqq`を使う
    - <img width="180" alt="coloneqq.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294661/80ba23f6-74a3-91a9-b053-5fb0ddbd8789.png">
    - `=:`は`\eqqcolon`
- **図や表は論文の上 or 下**にする: `\begin{figure}[tbp]`がよい
- 図や表のキャプションは詳しく書く
- 式番号や図番号, 文献は**必ず参照**する (直接書かない)
    - (例) `\label{eq:kkt}`で式にラベル付けし, `\eqref{eq:kkt}`で参照する
    - (例) `\label{fig:time}`で図にラベル付けし, `\ref{fig:time}`で参照する
    - (例) bibtexを使い, 文献を`\cite{boyd2004convex}`で参照する
- 表の**キャプション**は上, 図のキャプションは下
- **集合の縦棒**は`\mid`を使う (`|`を使わない)
    - (正) $\\{i\mid i=1,\ldots,n\\}$
    - (誤) $\\{i | i=1,\ldots,n\\}$
- 特別な理由がない限り, **図はVector型** (pdf, eps)にする: [こちら](https://qiita.com/birdwatcher/items/839356ed0a540121161b)
- 原則, 強制改行`\\`はしないこと
    - 文章が途中で折れ曲がるのは不自然
- 段落が変わるときは, ソースコードで2回以上改行 (Enter)する
    - `\par`コマンドもあるが, ソースコードの可視性から2回Enterがよい
- `figure`環境で`center`環境を**使わない**こと
    - `\centering`を使うのが正しい
    - `\begin{center}`を使ってしまうと無駄に余白があく
- ベクトルと行列は**ボールド**にする: $\boldsymbol x, \boldsymbol X$
    - 行列をボールドにするのは意見がわかれるが, 大文字の定数と区別するため
    - ベクトルであることが明らかな場合はボールドにしない場合もある
- 文献の引用は`bibtex`を使うこと
    - `.bib`ファイルを用意して, `pbibtex` (日本語) or `bibtex` (英語)でコンパイルする
    - `.bib`の作成には, [Google Scholar](https://scholar.google.co.jp/)を使うとよい
    - [こちら](https://qiita.com/birdwatcher/items/0dd3fe2e8ff5685cc3f7)と[こちら](https://qiita.com/SUZUKI_Masaya/items/14f9727845e020f8e7e9)が参考になる
- 引用していない文献は載せない (`bibtex`で自動的に実現される)
- **括弧のサイズ**を調整する
    - `\left( \right)`: 囲まれた範囲内に合わせられる (無駄に大きくなることがあるため, 以下を使うことも多い)
    - `\bigl( \bigr)`: 少し大きい括弧
    - `\Bigl( \Bigr)`: 大きい括弧
    - `\biggl( \biggr)`: 更に大きい括弧
    - `\Biggl( \Biggr)`: もっと大きい括弧
- 図の可視性
    - 文字は大きく見やすく
    - なるべくモノクロ印刷時にもプロットの線を識別できるようにしておく (破線, 点線など)
- 半角括弧の前にはスペースを入れる: 
    - (正) Mean Square Error (RMSE)
    - (誤) Mean Square Error(RMSE)
- ノルムを`|`二本で書かないこと
    - ノルムは`\|`を使うこと
    - (正) $\\|$
    - (誤) $||$
- `\bar`や`\tilde`, `\bm` (`\boldsymbol`) の範囲に気をつけること
    - 添字ごと囲まないようにする
    - (正) $\boldsymbol{x}_i$
    - (誤) $\boldsymbol{x_i}$
- まとまりとして意味のある数式が複数行にまたがる場合, 数式モード内で`split`を使うとよい
    - (例)
$$
\begin{split}
\min_x&~ f(x)\\\\
\mathrm{s.t.}&~x\ge 0
\end{split}
\tag{primal}
$$
- 図を貼るときは, `width=\linewidth`や`width=0.8\linewidth`のように, 相対的に書く
    - `\textwidth`や`\paperwidth`は, 余白を考慮していないため使用しない
    - `\linewidth`は, そこに書くことができる長さを表している
- 同じ`figure`環境内で複数の図を貼るときは, `\subfloat`で並べる
    - (例) `\subfloat[キャプション]{\includegraphics[width=0.4\linewidth]{ファイル.pdf} \label{fig:ラベル名}}`
    - `\usepackage{subfig}`が必要
    - 各図のキャプションに加えて, 全体のキャプションも忘れないようにする
- 囲み記号 " " は **`` ''** を使うこと
    - (正) $``\text{ ''}$
    - (誤) $\text{" "}$
- 尖った括弧$\langle~\rangle$は`\langle \rangle`を使う
    - $<~>$不等号を使わない
- $\ll$は`\ll`, $\gg$は`\gg`で書く (不等号2つで書かないこと)
    - (正) $\ll$
    - (誤) $<<$
- 表の線を引きすぎないようにする
    - <img width="734" alt="table.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294661/39777a31-f2fa-149f-2975-567d848cab0e.png">
- 空集合は`\emptyset`を使う (`\phi`を使わない)
    - (正) $\emptyset$
    - (誤) $\phi$
- 書いた文章は必ず読み返すこと
    - 当たり前なのにできてない人が多い
    - 文章を長くしすぎない


# 知っていてほしいこと

- `\西暦`コマンドを書いておくと, `\today`が西暦になる (日本語モードの場合)
- 数式モードは`*`をつけると式番号がなくなる: `align*`, `gather*`など
- 一部の数式番号を消したいときは`\nonumber`
- スペースの種類 (抜粋)
    - `(スペース)`: 連続使用しても1回分のスペース
    - `~`: 改行されないスペース (使用例`\figurename~\ref{fig:time}`)
    - `\(スペース)`: スペース
    - `\;`, `\:`, `\,`: それぞれサイズの違う小さいスペース
    - `\quad`, `\qquad`: 大きめのスペース
    - `\!`: 負のスペース (式がギリギリ収まらないときに=の前後で使うことがある)
- `\leq`は`\le`, `\geq`は`\ge`でよい
- 2カラム論文で, カラムをぶち抜いて図や表を貼るときは, `figure*`や`table*`を使う
- ナンバー$\\#$ (`\#`)とシャープ$\sharp$ (`\sharp`)は異なる
    - 個数を表す記号はナンバー$\\#$の方
- 英語論文のタイトルの表記について ([よくあるルール](http://next49.hatenadiary.jp/entry/20131102/p1))
    1. 基本的にすべての単語の1文字目は大文字にする
    2. ただし, 以下の単語は文頭でなければ上記の例外とする
        - 接続詞 (例: and, or, but)
        - 前置詞 (例: on, of, by, from, with, without, under)
        - 冠詞 (the, a, an)
- `\ell`で$\ell$を出力できる
    - $l$とは違う
- `\varepsilon`で$\varepsilon$を出力できる (`\epsilon`$\epsilon$とは異なる)
- `\subref`で`図1a`などの`(a)`だけを出力できる
- `\underbrace`で余白が空きすぎるときは, `\mathclap{}`を併用するとよい (mathtools必要)
    - 余白が空きすぎる例: 
        - `a+\underbrace{b}_{\text{長ーーーーーーーい説明}}+c`
        -  <img width="252" alt="default.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294661/de4cc174-75b8-d78e-7b88-a96e9adebc87.png">
    -  mathclap使用: 
        - `a+\underbrace{b}_{\mathclap{\text{長ーーーーーーーい説明}}}+c`
        - <img width="186" alt="mathclap.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294661/85a39048-aa7d-f41d-4d35-2d4ae3037f9c.png">
- 文字の高さや横幅の単位 (使用例: `\includegraphics[height=1zh]{fig.eps}`)
    - **em**: 書体の文字Mの横幅
    - **ex**: 書体の文字xの高さ 
    - **zw**: 全角漢字の横幅
    - **zh**: 全角漢字の高さ
- ひらがなの方が好まれる表記がある (日本語の場合) **※コメントでご指摘いただいた箇所を追加しました**
    - 「出来る」(補助動詞) →「～できる」
    - 「時」(場合, 条件) →「とき」
    - 「事」(用言の名詞化) →「こと」
    - 「及び」(接続詞) →「および」
    - 「尚」 →「なお」
    - 「沢山」→「たくさん」
    - 「従って」(接続詞) →「したがって」
    - 「例えば」→「たとえば」(このあたりは好みかも)
    - ...


# おまけ
発表スライド作成で気をつけてほしいこと:


- 明朝体を使用しない (横線が見にくいため)
    - 日本語はゴシック, 英語はサンセリフが基本
- 文字ばかりにしない
    - なるべく図を用意する
- 文を書く時は1行に収まるようにする
- どうしても文が長く場合は, **色付け**して, そこだけ見ればなんとなく伝わるようにしておく


**他にも思いついたら随時更新していきます.**