Atom+latexmkで卒論修論を爆速で仕上げる方法

## 環境
WSL Ubuntu 18.04
Windows 10

## 概要
- latexmkを用いてファイルの監視を行い、変更がある度自動でコンパイルを行いPDFを作成
- Atomとlatexmkを紐づけることで、Atomの内部ビューワーでPDFの更新を確認しながらtexファイルを執筆できる

## 1. TeX Live(latexmk)のインストール
latexをコンパイルするためのもろもろをインストールします。
OSごとの詳しいインストール方法は [TeX Wiki - TeX Live](https://texwiki.texjp.org/?Linux#texliveinstall) をご参照あれ。
自分の環境では、

```
$ wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz 
$ tar xvzf install-tl-unx.tar.gz
$ cd install-tl-yyyymmdd
$ sudo ./install-tl
```
PATHを通すため、~/.bash_profileに `export PATH='/usr/local/texlive/20xx/bin/x86_64-linux:$PATH'` を追記（20xxの部分はインストールした年によって違う）

Linuxの場合、パッケージ管理コマンド (aptなど) を使ってのインストールを紹介しているサイトも多いですが、かなり古いversionがインストールされる＋バージョンのアップデートがうまくできないらしいので、非推奨。

### latexmkについて
通常texファイルをpdfにコンパイルする際には、
uplatex → upbibtex → uplatex → uplatex → dvipdfmx
のように、複数回コマンドを打たねばならず、大変
コマンドについての詳細は [Latexmkから学ぶPDF化までの処理の流れ](https://qiita.com/Rumisbern/items/d9de41823aa46d5f05a8) が分かりやすい

**latexmkは、この一連の流れをすべてまとめてやってくれるツール（コマンド）です。**
TeX Liveをインストールすると自動でついてきます。
ただし、 `.latexmkrc` を作成し、コンパイラの設定をする必要があります（後述）


※latexmkを使わない場合は、Makeファイルでコマンドを定義しておくと楽
[TeX Wiki - Make](https://texwiki.texjp.org/?Make)

## 2. Atomのダウンロード＆インストール
[こちら](https://atom.io/)からダウンロード
コマンドラインから起動できるようにPATHを通しておくと良いかも（ただし起動は遅い）

## 3. Atomのパッケージをインストール
File → Settings → Installでパッケージ名を検索

|   パッケージ名　  |       概要        |  
|:----------------:|:-----------------:|
| latexer          | LateXスクリプトの自動補完 |       
| language-latex   | LaTeXのシンタックスハイライト|        
| pdf-view         | Atomの内部PDF viewer | 

## 4. Atomの設定を変更
Atomの内部ビューワーでPDFを表示するため、File → Config からConfig.csonを開き、以下を追記

``` config.cson
latex:
    alwaysOpenResultInAtom: true
```

## 5. .latexmkrcを作成
コンパイルの設定を記述します。ホームディレクトリにおいてもOK（らしい）ですが、使用するスタイルファイルによってLateXエンジン等の設定を変えることがあるので、プロジェクトごとに作成してます。

設定例

``` perl:.latexmkrc
#!/usr/bin/env perl

$latex                       = 'uplatex -synctex=1 -halt-on-error %O %S -kanji=utf8';
$bibtex                      = 'upbibtex -kanji=utf8 %O %B';
$dvipdf                      = 'dvipdfmx %O -o %D %S';
$makeindex                   = 'mendex -U %O -o %D %S';
$max_repeat                  = 5;
$pdf_mode                    = 3; # dvi → pdf

# 一時ファイルを出力する回数
$pvc_view_file_via_temporary = 0;

# pdf viewerの指定
#$pdf_previewer               = 'open -a /Applications/Skim.app';

```

詳細は割愛しますが、Atomのpdf viewerを使用したいので、` $pdf_previewer ` はコメントアウトしています。

設定はこれで完了！

## 6. latexmkでファイル監視
LateXの編集開始時に、コマンドラインで、プロジェクトフォルダの直下で

```
latexmk -pvc hogehoge.tex
```
と入力するだけ！
`-pvc` オプションは、hogehoge.texの変更を監視する命令です。
これで、hogehoge.texが更新されるたびに自動的にコンパイル→PDFを更新してくれます。
画像や参考文献の更新・`\input{}`コマンドで読み込んだ別のtexファイルの更新時にも自動でコンパイルされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423220/231ed0ce-131c-434d-f57c-4b7f18aed6b4.png)

## dvipdfmx:warningが出たら
```
dvipdfmx:warning: CMap has higher supplement number than CIDFont: Ryumin-Light
dvipdfmx:warning: Some chracters may not be displayed or printed.
dvipdfmx:warning: CMap has higher supplement number than CIDFont: GothicBBB-Medium
dvipdfmx:warning: Some chracters may not be displayed or printed.
```
PDFへの埋め込みフォントの警告。環境が変わってもPDFの和文が読み込めるよう、フォントを指定して埋め込みます。
現在の埋め込みの設定を `sudo kanji-config-updmap-sys status ` で確認

```
CURRENT family for ja: noEmbed
Standby family : ipa
Standby family : ipaex
```
`CURRENT family for ja: noEmbed` が問題っぽい。

```
sudo kanji-config-updmap-sys auto
```
auto を指定することで、埋め込むフォントを自動的に指定する。

```
$ kanji-config-updmap-sys status
CURRENT family for ja: ipa
Standby family : ipaex
```