卒論執筆で便利なツール【卒論】【修論】【LaTeX】【Python】 

# この記事について


LaTeXでの執筆時に同期の友達（LaTeXを使い慣れていない人）が口を揃えて言っていたのが、「ググる時間が半端ない」です。文法やLatexの仕様に関して必要な知識は多いので、皆さんも苦戦した時期があったと思います。

LaTeXで卒論を書く際に、自分が使っていた**面倒な作業を減らすためのツール**を共通したいと思います。
無駄な作業は省いて、じっくり文章を推敲しましょう。

# 以下の人向けの記事になっています。

- 卒論・修論執筆でLaTeXを使用する人
- 研究でPythonを利用する人


# 卒論執筆で便利なツール

## 1. [VSCode](https://azure.microsoft.com/ja-jp/products/visual-studio-code/) 
LaTeX を実際に書いていくエディタにはVSCodeを採用しました。LaTeXの拡張機能が充実していることが理由の1つです。

インストールは以下のQiita記事を参考にしてください。
[Mac] [MacOSでVisual Studio Codeをインストールする手順](https://qiita.com/watamura/items/51c70fbb848e5f956fd6)
[Windows] [VScodeのインストール手順@Windows10](https://qiita.com/Shi-nakaya/items/c43fb6c1e638d51bf1c8)

※ LaTeXをインストールせずとも、Webブラウザ上でLaTeXを使用できるサービスはいくつか存在します(Cloud LaTeX, Overleaf, Share LaTeXなど)。しかし、通信の関係上画面が固まってしまう問題や、資料をweb上にアップロードする必要など不便な面が目立ちます。筆者は1度だけCloud LaTeXを使用したことがありますが、画像を多くアップロードすると、画面のカクツキが酷くなるなどが見られたためローカルでの執筆に切り替えました。

### LaTeX Workshop （VSCodeの拡張機能）
 - 入力補完、候補表示
 - 保存時にコンパイルを実行
 - 分割画面でpdfプレビュー
 - Snippets
 - マウスオーバー機能

これらの作業を補助してくれるので、作業時間が大幅に減ります。

インストールは以下の記事を参考にしてください。
[LaTeX Workshopってなに？どうやって使うの？調べてみた！](https://qiita.com/moinslut/items/bc1d1b1e13cb38377406)

## 2. [Mathpix Snipping Tool](https://mathpix.com/) 

Web上や論文内に含まれる数式を、スクリーンショットで撮影するだけで**自動的にLaTeXの数式記法に変換してくれる機能**です。数式を引用する場合に、論文と照らし合わせながら数式を記述するのは、大きな時間ロスになってしまいます。

ググる内容も数式関係は多くなりがち...

機械学習分野などは理論の説明も多くなることがありますので、このツールは便利だと思います。

使い方も非常にシンプルです。
アプリケーションを起動し、スクリーンショットを部分的に撮影します。
![???](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585927/543aac15-ad4f-9bec-5165-3f71d1fbbf4e.png)

その後、正しく変換されているか確認します。もし、修正点があればその場で書き直すこともできます。後は、好みの記法をコピーして貼り付けるだけで終了です。
![???](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585927/83ebf1a4-1f08-5f97-746a-eacb63526143.png)

LaTeX きっかけで数式嫌いになるのは馬鹿らしいですもんね。

## 3. [LaTeX Tables Generator](http://www.tablesgenerator.com/)
**Web上で表を簡単に作れるサイト**です。Excel、PowerPointやKeynoteで表を作成する要領で、直感的に表を作成することができます。

表を作成したら、Generateボタンを押してコードをコピペするだけです。
![???](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585927/1ff9559e-fc50-8087-8aab-723c12cbd2ad.png)


詳しい説明は[こちら](https://tech.jastin.net/tables-generator/)が参考になると思います。

[LaTeX Complex Table Editor](https://www.latex-tables.com/)というサイトもあります。

## 4. Pythonで画像生成する際の注意
Jupyter NotebookやJupyter Lab、Google Colaboratoryなどでプログラムを動かしている人が多いと思います。そこで、論文に載せる資料（画像）をPythonで描画する人に意識してほしいことがあります。

### グラフのフォントサイズ
Jupyter Labなどでグラフを描画する際は、パソコンの大きな画面で見ているためにグラフのラベル文字・メモリが小さいと思うことは少ないです。
しかし、画像を論文に貼り付けた時に文字が小さくて見にくい！印刷した時に潰れてしまった！ということがよく起きます。

**図を描画する際に、フォントサイズを大きくしましょう。**

|Before|After|
|:--:|:--:|
|![sc0.png](https://qiita-image-store.s3.amazonaws.com/0/40987/4e6592af-4775-66b5-64b4-0afe77187750.png)|![sc1.png](https://qiita-image-store.s3.amazonaws.com/0/40987/1e9b5902-b7b1-7916-d1c2-709e4c3e9740.png)|
[この記事](https://qiita.com/Tatejimaru137/items/4ee6a73114d07d85bfd7)より引用させていただきました。詳しい方法が紹介されています。

例えば、各グラフに対してフォントサイズを設定する場合↓

```Python:フォントサイズ設定
~
plt.title("Title", fontsize=18)
plt.xlabel("xlabel", fontsize=18)
plt.ylabel("ylabel", fontsize=18)
plt.legend(fontsize=18)
plt.tick_params(labelsize=18)
~
```

まとめてフォントサイズを設定する場合↓

```Python:まとめてフォントサイズ設定
plt.rcParams["font.size"] = 18
```

### 画像は余白詰めて保存する 
LaTeXで画像を添付するとき、その画像の下部分に余白があるとCaptionと画像間に大きな空白が生じてしまいます。これを回避するためにあらかじめ余白がない画像を保存するようにしましょう。

```Python:余白を詰めて保存
# pad_inchesで余白の大きさ指定
plt.savefig("Chart.jpg", bbox_inches='tight', pad_inches=0)
```


### 画像はEPS形式かPDF形式で保存する

LaTeXに画像を添付する際は、**eps拡張子**か**pdf拡張子**の画像が推奨されています。理由として、jpg形式などの画像を添付すると、印刷やプレビューの際にぼやけた表示になってしまうことがあります。（png形式は比較的綺麗です。）

**画像を保存する際は拡張子を指定するだけでOKです。**

```Python:eps,pdf拡張子で保存
# eps形式で保存
plt.savefig('image.eps')
# pdf形式で保存
plt.savefig('image.pdf')
```

**jpgなどの画像をpdf形式に変換するコード（png画像は不可）**
インターネットから取得した画像などを使用する際にはこの作業が必要になると思います。

```Python:pdf形式に変換
from matplotlib.backends.backend_pdf import PdPages
import img2pdf

# pdfファイルへ変換
cov_pdf = img2pdf.convert("image.jpg")

# pdfファイルを読み込み（pdf_nameで指定したpdfがない場合、pdf_nameをファイル名として新規にpdfファイルを作成）
file = open(pdf_name , "wb")

# pdfファイルを書き込み
file.write(cov_pdf)

# 開いているファイルを閉じる
file.close()
```

**png画像をpdf形式に変換**
png画像はアルファチャネルが存在するため、一度jpg形式に変換する必要があります。

```Python:png→pdf
from matplotlib.backends.backend_pdf import PdPages
import img2pdf
from PIL import Image


# 画像読み込み
png_img = Image.open("image.png")

# RGBA→RGBに変換
rgb_img = png_img.convert('RGB')

# jpgに保存し直す
rgb_img.save("image.jpg", quality=99)

# pdfファイルへ変換
cov_pdf = img2pdf.convert("image.jpg")

# pdfファイルを読み込み（pdf_nameで指定したpdfがない場合、pdf_nameをファイル名として新規にpdfファイルを作成）
file = open(pdf_name , "wb")

# pdfファイルを書き込み
file.write(cov_pdf)

# 開いているファイルを閉じる
file.close()
```

画像を作り直したり、画像編集ツールを使用したり、煩わしい作業は最初から対策しておきましょう。

## 5. 参考文献は可能な限り、手作業で書かない
### BiBTeX
BiBTeXはLaTeXにおける参考文献データベースと説明されます。
つまり、自分自身で参考文献リストを作成し、その名前を指定するだけで自動的に参考文献欄への記述を行ってくれる仕組みです。参考文献の書き方にはルールが存在するため、自力で記述するとなると時間がかかってしまいます。

参考文献データベースを作成するには、**filename.bib**に文献情報をコピペしていきます。

[BiBTeX入門](http://mikilab.doshisha.ac.jp/dia/seminar/latex/doc/bib.html)
[BiBTeXとは](https://qiita.com/SUZUKI_Masaya/items/14f9727845e020f8e7e9)



### [Google Schlar](https://scholar.google.co.jp/)
Googleが運営する文献検索サイトです。
検索する際に欲しい論文のbibtexも取得することができます。

1. 論文を検索し、引用マークをクリックします。
![google.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585927/e22568b0-fef3-e22e-bad2-5cbbc34198d7.png)

2. BibTexを選択し、filename.bibにコピペしたら終了です。
![google2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585927/6ddeace0-20d0-1dca-ab22-a2133d991fc3.png)


[arXiv](https://arxiv.org/)などの他の論文検索サイトでも必ずbibtexを取得できますので、論文読みの際に同時に保存しておきましょう。
書籍の参考文献なら[ Lead2Amazon ](http://lead.to/amazon/jp/)がオススメです。




## 個人的に地味に便利と思ったLaTeXの文法
### 行文章番号
教授や先輩に添削をお願いする場合などに行番号があると、添削コメントをスムーズに書きやすくなると思います。

```TeX:行番号設定
% パッケージ
\usepackege{lineno}
~
\section{文章番号}
% 行番号のカウントを始めたい部分に記述
\linenumbers
卒業論文修士論文博士論文...
```

![16236018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585927/3e0de01f-2f3d-d703-792e-ef1b602b9612.png)

### 強制的に図を配置する
図を自分が指定した場所に載せたいときに使用します。通常の指定では自動で場所が変更されることがありますが、それを無効化します。参考記事は[こちら](https://qiita.com/poemn/items/9142339749c87ebdb536)

```tex:強制的に図を配置
% パッケージに追加
\usepackage{here}
~
% "H"で指定
\begin{figure}[H]
```
### 図のサイズをページ幅で指定
```tex:ページ幅
% ページ幅の50%を指定
\begin{minipage}{0.50\hsize}        
```

### \begin{equation}の前は空白を入れない
数式を書く際に\begin{equation}の前に空白を入れると、数式の前後のスペースのバランスがおかしくなります。

```tex:空白を入れる
０１２３４５６７８９...
%%%%%空白部分%%%%%
\begin{equation}
   x^2 - 6x + 1 = 0	
\end{equation}

...０１２３４５６７８９
```
![スクリーンショット 2020-02-17 23.03.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585927/d5112178-ce1e-85f6-d7df-e9a66f4531c5.png)
数式の前後のスペースの大きさがアンバランスです。

空白を消してみましょう。

```tex:空白を入れない
０１２３４５６７８９...
\begin{equation}
   x^2 - 6x + 1 = 0	
\end{equation}
...０１２３４５６７８９
```

![スクリーンショット 2020-02-17 23.04.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585927/66aa45bf-0112-306e-3e0b-6b817aec6c3d.png)

数式の前後に綺麗にスペースが入っています。

# 終わりに

最後までお読みいただきありがとうございます。
今回の卒論執筆でお世話になったツールや文法を紹介させていただきました。
お役に立てれば光栄です。