LaTeXで論文を執筆するあなたへ届け

Hello, World! あーみーです．

みなさん$\LaTeX$を使って文書作成していますか？
専門分野にもよりますが，情報系の分野なら論文執筆は$\LaTeX$を使用することが多いと思います．

しかし，研究室で毎年配属される学部生に$\LaTeX$での文書作成を教えることはとてもコストがかかります．
そこで，この記事では，$\LaTeX$を使用した文書作成を，研究室に配属されたばかりの学部生が始められることを目的として，基本の必要な知識をまとめました．
また，文書作成時に役立つ小技もまとめてあります．

## 文書作成を始める
### 環境構築
この記事では，誰もが$\LaTeX$での文書作成を一旦試すことができるようにと，私も1から環境を構築するため，[このDockerコンテナ](https://hub.docker.com/r/dorowu/ubuntu-desktop-lxde-vnc/)を使用して$\LaTeX$環境を構築します．Dockerの使い方自体は[1日目の記事](https://qiita.com/Shunya078/items/17f42db80b787a9d1c59)など，様々な記事で説明がされているので割愛します．環境構築は自分のOSに合うように読み替えてもらえればと思います．

また，**この環境構築が面倒で，今すぐ$\LaTeX$で文書作成をしたいという人は，ブラウザ上で書ける[Overleaf](https://ja.overleaf.com/)や，[Cloud LaTeX](https://cloudlatex.io/)を使用するのがいいでしょう．**私も普段の報告書や講義のレポートはCloud LaTeXを使います．

#### 1. TeX Liveのインストール
まずは[TeX Live](https://texwiki.texjp.org/?TeX%E5%85%A5%E6%89%8B%E6%B3%95)のインストールをするため，先のリンクからダウンロードをしていきます．macOSの場合はTeX LiveをベースにしたmacOS専用ディストリビューションの`MacTeX`を，それ以外なら`TeX Live`をインストールすればいいと思います．それぞれのページを開きましょう．
ページ内の`インストール`セクションから自分のOSに合うようにイメージをダウンロードします．

私の仮想環境の場合は，Dockerfileを見ると`ubuntu:20.04`と書かれているので，それに合うように以下のGIFのようにダウンロードします．

![1606830833.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/210077/84641029-a3f1-3be2-6ae9-08913f1bed75.gif)


次にダウンロードしてきたイメージをインストールします．Ubuntuの場合は，以下の要領で`.deb`をインストールします．macOSの場合は，`.pkg`なので，ダブルクリックでインストールできるはずです．インストールには少し時間がかかります．

```shell:Ubuntuの場合
$ cd Downloads/ # イメージのあるディレクトリへ移動
$ apt-get update # アップデートしておく
$ apt install -y ./[ダウンロードしたイメージ].deb
```

インストールが完了したら，ターミナルで以下を実行して，正しくインストールが完了しているか確認してください．

```shell
$ platex --version
```


#### 2. Visual Studio Codeのインストール
エディタは，[Visual Studio Code](https://code.visualstudio.com/)をこの記事では採用します．このエディタがあれば，これからも大体のことは困らないと思います．先のリンクからダウンロードをして，1.と同様にインストールをしてください．

### 文書作成
ここからは実際にVisual Studio Codeでテキストを書いて，コンパイルし，PDFの文書を作成する手順を述べていきます．
#### 1. ファイルの作成
今回は，以下のようなディレクトリ構成でファイルを作成します．

```
Desktop/
└── report/
        └── contents.tex
```

`contents.tex`の中身は一旦，以下をコピペしておきましょう．

```tex:contents.tex
\documentclass{jarticle}

% ===== プリアンブル内 ===== %

\title{LaTeXでの文書作成入門}
\author{おなまえたろう}
\date{\today}



\begin{document}
% ===== document内 ===== %

\maketitle

\section{章のタイトル}
この文書はサンプルです．

\subsection{節のタイトル}
この文書はサンプルです．

\subsubsection{項のタイトル}
この文書はサンプルです．

\end{document}
```

プリアンブル内と書いた`\documentclass{jarticle} 〜 \begin{document}`までは設定などを記述していく部分で，document内と書いた`\begin{document} 〜 \end{document}`までは文書の内容を記述していく部分です．

#### 2.コンパイル
以下のコマンドを実行して，1.で作ったファイルをPDFの文書にコンパイルします．Visual Studio Codeからだと，ツールバーから`ターミナル`>`新しいターミナル`でターミナルを開くことができるので楽です．

```sh
$ platex contents.tex
$ dvipdfmx contents.dvi
```

`report/`内に以下のような`contents.pdf`が作成されていれば成功です．これで今日から$\LaTeX$で文書作成ができます．


|![CheatSheatのコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/210077/b2a520a2-610d-bb83-873d-32ce3146bc5a.png)|
|:-:|



#### Option1. Makefileでコンパイルする
2.のコンパイルを毎回実行するのは面倒ですし，参考文献のためBibtexなど入れた日にはそれどころではありません(`platex`>`pbibtex`>`platex`>`platex`>`dvipdfmx`)．多くの場合，1発でPDFの文書にコンパイルしてくれる`Makefile`を用意しておくのが主流です．(Visual Studio Codeでは，$\LaTeX$を自動でコンパイルする設定もでき，Qiitaにも多くの記事がありますが，私はどの設定もスムーズに成功したことがないので，初めは`Makefile`でコンパイルすることをお勧めします．)

先程のディレクトリに`Makefile`を作ります．

```
Desktop/
└── report/
        ├── contents.tex
        └── Makefile
```

`Makefile`の中身は以下をコピペしておきましょう．([参考サイト](https://texwiki.texjp.org/?Make#ae41f9a4))
>※ 今後のことを考えて，Bibtex対応の`Makefile`にしました

```makefile:Makefile
TARGET := contents.pdf
CNT := 2

.PHONY: all clean distclean
all: $(TARGET)

clean:
	$(RM) *.aux *.log *.dvi *.bbl *.blg

distclean: clean
	$(RM) $(TARGET)

%.pdf: %.dvi
	dvipdfmx $<

%.dvi: %.tex
	for i in `seq 1 $(CNT)`; do platex -interaction=batchmode $<; done
	-pbibtex $*
	for i in `seq 1 $(CNT)`; do platex -interaction=batchmode $<; done

```

ターミナルから以下のコマンドを叩くだけで，コンパイルができるようになりました．

```sh
$ make
```

**注意1**
`make`コマンドがインストールされていない場合，Ubuntuは以下のコマンドを実行して，macOSは[ここ](https://texwiki.texjp.org/?Make#g1b3ea4a)を参考にしてインストールをしてください．

```sh:Ubuntuの場合
$ apt install -y build-essential
```

**注意2**
`contents.pdf`がすでに存在していると，実行できないので，以下の順番で実行しましょう．

```sh
$ make distclean
$ make
$ make clean
```

`clean`はPDF文書作成時に生成される中間ファイルを消すコマンドが，`distclean`はPDF文書を消すコマンドが実行されています．

#### Option2. Makefileのコンパイルをショートカットキーで実行
Visual Studio Codeのターミナルからいちいち`make`を(しかも3つも)実行するのはまだ不便です．そこで，Visual Studio Codeの拡張機能を使って，`make`をショートカットキーで実行できるようにします．


1. 拡張機能から[terminal-command-keys](https://marketplace.visualstudio.com/items?itemName=petekinnecom.terminal-command-keys)をインストールする
1. Visual Studio Code上で`Ctrl-K, Ctrl-S`と続けて押し，キーボードショートカットを開く
2. ウィンドウの右上に以下のアイコンがあるので，一番**左**のファイルアイコンを押し，`keybindings.json`を開く

![スクリーンショット 2020-11-30 22.15.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/210077/3bdc6a94-2ee1-cdd6-f25c-387524006f72.png)
4. `keybindings.json`に以下のプログラムをコピペする

```json
[
    {
        "key": "ctrl+r", // Makefileを実行するときの任意のキーバインド
        "command": "terminalCommandKeys.run",
        "args": {
            "cmd": "cd `dirname \"${file}\"`;make distclean; make; make clean"
        }
    }
]
```

これで，`ctrl+r`のショートカットキーだけで，`make distclean`，`make`，`make clean`を一度に実行できるようになりました．


最後に，もし各々の研究室などの所属する機関で，スタイルファイルがあるなら，それを配置しましょう．
これで環境構築は完璧です．$\LaTeX$での文書作成をやっていきましょう！

### 文書作成時の参考サイト
基本的な$\LaTeX$の記法は以下のサイトなどで勉強をしていってください．だいたいのものは解決できます．

- [LaTeXコマンド集](http://www.latex-cmd.com/)
- [物理のかぎしっぽ TeX](http://hooktail.org/computer/index.php?TeX)


## 小技集
ここからは$\LaTeX$ができる人に向けた，文書作成時に役立つ小技を書いていきます．


### 複数行のコメントアウト
$\LaTeX$では`%`で，それから行末までをコメントアウトします．
複数行コメントアウトは，`comment`というパッケージで可能になります．

```TeX
% ===== プリアンブル内 ===== %
\usepackage{comment}

% ===== document内 ===== %
\begin{comment}
この複数行は
コメントアウト
されています．
\end{commnet}
```

### 1文字分空ける
段落の始め以外の文章中にスペースを空けたくなった場合，`em`単位で指定すると文字と同じスペースになるので，`\hspace{}`などで指定すると1文字分空けることができます．

```TeX
\hspace{1em}今日はいい天気ですね．
```

### 文章中の参照番号を改行させない
「図1に示す．」などの「図」と「1」の間で改行させないためには，以下のように`~(チルダ)`で「改行されない空白」を入れることで回避できます．

```TeX
結果を図~\ref{fig:hoge}に示す．
```

### 参照にハイパーリンクをつける
以下を記述しておくと，図表の参照にハイパーリンクが付き，クリックで相互に飛ぶことができます．

```TeX
% ===== プリアンブル内 ===== %
\usepackage[dvipdfmx]{hyperref}
```

また，URLを載せたい場合は，以下を記述します．

```TeX
% ===== プリアンブル内 ===== %
\usepackage{url}
\sloppy

% ===== document内 ===== %
\url{https://www.google.com/}
```

ここで**`\sloppy`**を一緒に記述しておくと，2カラムなどにした際に，URLの文字列が長く途中でいい感じにハイパーリンク付きURLが改行されない問題を解決してくれます．


### 目次がPDFリーダー内で文字化けする現象の改善する

`hyperref`でハイパーリンクが付いた文書をPDFリーダーで閲覧する際に，以下の画像のように目次が文字化けするときがあります．

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/210077/a39222b1-f265-ae85-3fad-10f4a12855f9.png" width="50%">

以下を記述しておくと，PDFリーダー内の目次の文字化けを改善できます．

```TeX
% ===== プリアンブル内 ===== %
\usepackage{pxjahyper}
```

### 表を簡単に作りたい

セルの内容をスクラッチするのは大変なので，私はよく[Tables Generator](https://www.tablesgenerator.com/latex_tables)や，[TableConvert Online](https://tableconvert.com/)を使用して，CSVなどから$\LaTeX$用のコードをコンバートしています．

### 図表を文章の直後に入れたい
図表の挿入位置は`htbp`で指定しますが，`h`の指定でもスペースによっては，そこに挿入できないときがあります．`here`パッケージにより，強制的に文章の直後に挿入できます．

```TeX
% ===== プリアンブル内 ===== %
\usepackage[dvipdfmx]{graphicx} % figureのため必要
\usepackage{here}

% ===== document内 ===== %
本プロジェクトのロゴ画像を図~\ref{fig:hoge}に示す．

\begin{figure}[H]
    \centering
    \includegraphics[width=0.8\linewidth]{figures/logo.pdf}
    \caption{本プロジェクトのロゴ画像}
    \label{fig:hoge}
\end{figure}
```
ページ数の決まっていない論文などはこちらの指定のほうが前から順番に読んでいけるので良いと思います．

### 表が長すぎてセンタリングされない
横に長過ぎる表は，はみ出るしセンタリングされないので，`\scalebox{}{}`を使用して，表のサイズを調整すると，キレイに示せます．

```TeX
% ===== プリアンブル内 ===== %
\usepackage[dvipdfmx]{graphicx}

% ===== document内 ===== %
弊社の10年分の売上高を表~\ref{tab:hoge}に示す．

\begin{table}[htbp]
    \centering
    \caption{弊社の10年分の売上高}
    \label{tab:hoge}
    \scalebox{0.8}{
		\begin{tabular}{c||r|r|r|r|r|r|r|r|r|r|r}
		\hline
		年      & 2010    & 2011    & 2012    & 2013    & 2014    & 2015    & 2016    & 2017    & 2018    & 2019    & 2020    \\ \hline
		売上高(円) & 110,000 & 110,000 & 120,000 & 130,000 & 150,000 & 180,000 & 230,000 & 310,000 & 440,000 & 650,000 & 990,000 \\ \hline
		\end{tabular}
    }
\end{table}
```


### 数式の参照に括弧を自動でつける
数式参照時に`mathtools`というパッケージをインポートして`\eqref{}`を使用すると自動で括弧をつけてくれます．

```TeX
% ===== プリアンブル内 ===== %
\usepackage{mathtools}

% ===== document内 ===== %
分散$s^2$は式~\eqref{eq:hoge}で算出される．

\begin{equation}
	\label{eq:hoge}
	s^2 = \frac{1}{n} \sum_{i=1}^{n} (x_i - \overline{x})^2
\end{equation}
```

### 数式をコンパイルせずに試す
数式をコンパイルせずに試すには，[TeXclip](https://texclip.marutank.net/)というサービスを使うと便利です．またこのサービスでは，記述した数式を画像ファイルとしてダウンロードもできるので，色々なところに活用できます．


### 参考文献の参照番号が連番ならまとめる
参考文献を3件以上参照するときに`[1,2,3]`となるのはあまりスマートじゃないので，参照番号が連番なら`[1-3]`とするには以下でできます．

```TeX
% ===== プリアンブル内 ===== %
\usepackage{cite}

% ===== document内 ===== %
数多くの研究がなされている\cite{thesis1, thesis2, thesis3}．

```

### BibTeXを自分で書きたくない
参考文献はBibTeXで本文中から参照すると思いますが，論文は[Google Scholar](https://scholar.google.co.jp/)で，書籍は[Google Books](https://books.google.co.jp/)で検索しBibTeXをコピペして集めるのが楽かなと思っています．

- Google Scholar
  1. BibTeX情報が欲しい論文を検索
  2. 1の検索結果の下にある`"`マークをクリック
  3. BibTeXボタンをクリック

- Google Books
  1. BibTeX情報が欲しい書籍を検索
  2. 1の検索結果から対象の書籍を探してクリック
  3. 左にある赤色の`Eブックを表示`ボタンをクリック
  4. ページ最下部にあるBibTeXボタンをクリック

また，Webサイトを参考文献としたい場合もたまにありますが，その時は[BibTeX entry from URL](https://chrome.google.com/webstore/detail/bibtex-entry-from-url/mgpmgkhhbjgkpnanlmlhibjfgpdpgjec)というChrome拡張機能などを使用すると便利です．

## おわりに
この記事では，$\LaTeX$を使用した文書作成を，研究室に配属されたばかりの学部生が始められることを目的として，基本の必要な知識をまとめました．また，文書作成時に役立つ小技もまとめました．

$\LaTeX$で文書作成するなら，やはり『[LaTeX2ε美文書作成入門](https://www.amazon.co.jp/%EF%BC%BB%E6%94%B9%E8%A8%82%E7%AC%AC8%E7%89%88%EF%BC%BDLaTeX2%CE%B5%E7%BE%8E%E6%96%87%E6%9B%B8%E4%BD%9C%E6%88%90%E5%85%A5%E9%96%80-%E5%A5%A5%E6%9D%91-%E6%99%B4%E5%BD%A6-ebook/dp/B08MZ98Z1Q/ref=tmm_kin_swatch_0?_encoding=UTF8&qid=&sr=)』に一度目を通しておくことをお勧めします．日常的に$\LaTeX$で文書作成する人は，改訂第8版が2020年11月に発売したばかりなので，手元に1冊あるととても重宝すると思います．
自分の中でやりたい書き方があり，いい方法が見つからない場合は，スタイルファイルを自分で書いたほうが速いかもしれませんね．

それでは，Happy Hacking! :smile: