SublimeText3でLaTeXとR（ちょこっとPython）の環境構築(Windows)

# SublimeText3でLaTeXとR（ちょこっとPython）<br>を使いやすくする


## はじめに
自分のメモ用です。意外にSublimeでのTeXについてまとめられているサイトを見ないと思ったので、
自分が設定した環境(友人Jの丸パクリ)について書いてみようと思いました。

SublimeText3で、LaTeXとR (ちょっとPython) を使いやすくするための一連の設定手順を記載します。
Sublimeは適宜再起動するようにしてください。

※windowsユーザー向けの記事です。


## 準備するソフトウェア
- Sublime Text 3
- TeXLive 2019
- SumatraPDF
- R-3.6.2


## ソフトウェアの準備手順
### TeXLive 2019
[TeX Live - TeX Wiki](https://texwiki.texjp.org/?TeX%20Live#n4073ab3 "TeX Live - TeX Wiki") を参考にしながらTeX Liveをインストールします。
Windowsの場合、 [TeX Live/Windows - TeX Wiki](https://texwiki.texjp.org/?TeX%20Live%2FWindows "TeX Live/Windows - TeX Wiki") を参考に、インストーラをダウンロードします。
著者は**ネットワークインストーラの場合**を参考に、 [Installing TeX Live over the Internet](https://www.tug.org/texlive/acquire-netinstall.html "Installing TeX Live over the Internet")  の `install-tl-windows.exe` を利用してTeXLive 2019をインストールしました。

正常にインストールできているかの確認として、`Windowsキー + R`を押し、`cmd`と入力、コマンドプロンプトを起動します。コマンドラインに`latexmk`と入力した際、以下のような反応があればインストールは成功です。

```
C:\Users\(User名)>latexmk
Latexmk: This is Latexmk, John Collins, 26 Dec. 2019, version: 4.67.

Latexmk: No file name specified, and I couldn't find any
Use
   latexmk -help
to get usage information
C:\texlive\2019\bin\win32\runscript.tlu:907: command failed with exit code 10:
perl.exe c:\texlive\2019\texmf-dist\scripts\latexmk\latexmk.pl
```


### Sublime Text 3
公式HP [Sublime Text 3](http://www.sublimetext.com/ "Sublime Text 3") の`DOWNLOAD FOR WINDOWS`よりダウンロードし、
`Sublime Text Build 3211 x64 Setup.exe`よりインストールを行います。


### SumatraPDF
TeX Wikiの[Download SumatraPDF](https://texwiki.texjp.org/?SumatraPDF "Download SumatraPDF")を参考に、
公式HP [SumatraPDF](https://www.sumatrapdfreader.org/free-pdf-reader.html "SumatraPDF") の
`Installer : SumatraPDF-3.1.2-64-install.exe`よりインストーラをダウンロードし、
`Sublime Text Build 3211 x64 Setup.exe`を実行してインストールを行います。


### R-3.6.2
[The Comprehensive R Archive Network](https://cran.r-project.org/ "The Comprehensive R Archive Network") `(Download R for Windows -> base)`
[R-3.6.2 for Windows](https://cran.r-project.org/bin/windows/base/ "R-3.6.2 for Windows") の`Download R 3.6.2 for Windows`よりインストーラをダウンロードし、
`R-3.6.2-win.exe`よりインストールを行います。


## 設定手順
まずはじめに、Sublime Textを開き`Ctrl+Shift+P`を押し、Command Paletteを開き、
`install Package installer`とPaletteに入力、決定。
これで**Package Control**のインストールは完了です。

次に、以下3つのPackageをインストールします。

- LaTeXTools
- R-Box
- SendCode


### LaTeXTools
**Package Control**の手順と同様に、`Ctrl+Shift+P`を押し、Command Paletteを開きます。
次に、`Package Control: Install Package`とPaletteに入力し決定します。
出てきたPaletteに`LaTeXTools`と入力、決定すれば**LaTeXTools**がインストールされます。
(インストールが完了するとSublime Text上でメッセージが表示されます。)

次に**LaTeXTools**の設定をします。Sublime Textの上欄のメニュー、
右から2つ目の`[Preferences]`から
`[Preferences]-> [Package Settings] -> [LaTeXTools] -> [Settings-User]`
と選択します。

`\Sublime Text 3\Packages\User\LaTeXTools.sublime-settings`が存在しない場合には、

```
You do not currently have a personalized
LaTeXTools.sublime-setting file.

Create a copy of the default settings file in your
User directory?
```

上記のようなメッセージが表示されるので`[OK]`をクリックします。

Sublime Text上で表示された`LaTeXTools.sublime-settings`に対して、`Ctrl + F`を押し、
出てきた検索欄に`builder_settings`と入力し、(398行目)の"builder_settings"を見つけます。

そして、
`(398行目) "builder_settings"`から
`(406行目) // General settings:`の間に、以下の内容を追加します。

```python:\User\LaTeXTools.sublime-settings

398 "builder_settings" : {
        "command" : ["latexmk", "-cd",
                "-e", "$latex = 'uplatex %O -no-guess-input-enc -kanji=utf8 -interaction=nonstopmode -synctex=1 %S'",
                "-e", "$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B'",
                "-e", "$bibtex = 'upbibtex %O %B'",
                "-e", "$makeindex = 'upmendex %O -o %D %S'",
                "-e", "$dvipdf = 'dvipdfmx %O -o %D %S'",
                "-f", "-%E", "-norc", "-gg", "-pdfdvi"],
406     // General settings:
```

上記の内容を追加した後`Ctrl + S`で保存を行います。

LaTeXのコンパイルができるかどうかを確認します。以下の内容の
`text.tex`をSublime Text上で作成した後、`Ctrl + B`を押します。
初回はBuildの方法を聞いてくるので`Build With LaTeX - Traditional`を選びます。
`[Tool]->[Build With...]`からもビルド方法の選択は可能です。

Buildingの動作(画面下のバーに動作状況が表示されます)が終了した後、自動的にSumatraPDFが起動され、内容が正常に表示されていれば、確認は完了です。

```LaTeX:test.tex

\documentclass[a4j]{ujarticle}
\title{ {\LaTeX} testファイル }
\author{ほげ-やま-ふが}
\date{\today}

\begin{document}
\maketitle

\section{はじめに}
Hell

\subsection*{おわりに}
World 

\end{document}
```

> **！！！注意！！！**
 \documentclass[a4j]{**jarticle**}  ではなく
 \documentclass[a4j]{**<font color="Red">u</font>jarticle**} を使ってください！

>documentclassが**jarticle**となっている場合、正常にコンパイル出来ないようです...
理由が分かる方は、助言をよろしくお願いします。

>**追記(2020/04/30)**
![unknown.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586441/9cbf9cbc-9917-73d1-59a3-38a7338f9147.png)
>友人より、上記のような修正でも良いと教えていただきました。

#### 環境変数を通して便利にしよう！
この記事の中で一番ややこしい所だと思われます。

環境変数を通すことで、**SumatraPDF**上で文章をダブルクリックすると、
**Sublime Text**で該当部分のソースコードを開くことができるようになります。

`Windowsキー + R`を押し、`control`と入力、コントロールパネルを開きます。
右上の検索欄に`環境変数`と入力し表示された一覧から、
`[システム - システム環境変数の編集] -> 環境変数(N)`を選択します。
[システム環境変数(S)]の一覧から[Path]を選択し、ダブルクリックもしくは[編集(I)]を押します。
`[環境変数名の編集] -> [新規(N)]`から以下のPathを追加します。

```
C:\Program Files\Sublime Text 3\
```

**SumatraPDF**を起動して、左上の一覧をクリックして`[設定(S)]->[オプション(O)]`を選択します。
逆順検索コマンドラインの設定を以下の内容にします。

```
sublime_text %f:%l
```

以上で**環境変数の設定**は完了です。

確認をするために、`test.tex`を**SumatraPDf**で開き、
そして**SumatraPDF**上の文章で[1 はじめに]の部分をダブルクリックして、
**Sublime Text**で`(10行目) \section{はじめに}`を開くようになっていたら成功です。

> **！！！注意！！！**
 `.tex`ファイルを置いているフォルダ名には**スペースを入れないようにしてください！！**
例 `hoge fuga`フォルダに置いた`test.tex` で上記の確認を行ってみるとわかります。


### R-Box
**LaTeXTool**の手順と同様に、
`Package Control: Install Package`から**R-Box**をインストールします。

**R-Box**に関しては特に設定する必要はありません。


### SendCode
**LaTeXTool**の手順と同様に、
`Package Control: Install Package`から**SendCode**をインストールする。

**SendCode**の設定を行います。こちらも**LaTeXTool**の設定、の手順と同様に、
`[Preferences] -> [Package Settings] -> [SendCode] -> [Settings]`を選択します。

その後設定が表示されるので、その設定欄の右側に以下の内容を記載します。

```python:\User\SendCode.sublime-settings
{
    "prog": "r",
    "r": {
        "prog": "r"
    },
}
```

上記の内容を追加すれば、Sublime Text上で書いた**R**のコードを`Ctrl + Enter`で**RGui**に送信できるようになります。
但し、あらかじめ**RGui**を立ち上げておく必要があるので注意してください。

正常に動作するかどうかを確認します。

```r:R.r
curve(dnorm(x) , -5, 5)
```

この行を入力した状態で`Ctrl+Enter`を押せば、**RGui**に送信されます。
**RGui**上に正規分布のグラフが現れれば成功です。

### Pythonのためのシンタックス設定

#### Pythonのインデントについて
Pythonのコード内において、インデントはブロックを区別する役割があり、
主に`半角space 4つ , Tab , 半角space 2つ`の流儀があります。(space 2つ は殆ど見ませんが)
Sublime Textの、Pythonのシンタックス設定において、`Tab = space 4つ分`としておけば、
`tab`を使っても`space 4つ`のコードと混同しないようにします。
(混同することは推奨されていないため)

まず、はじめに何でもいいので`.py`のファイルをSublime Textで開きます。
(適当にメモ帳を作って、拡張子を`.py`に変えたものを開いたら大丈夫です)

後は、**LaTeXTool**等の設定、と同様におこないます。
`[Preferences] -> [Settings-Syntax Specific]`を選択します。

その後設定が表示されるので、その設定欄の右側に以下の内容を記載します。

```python:\User\Python.sublime-settings
// These settings override both User and Default settings for the Python syntax
{
    "tab_size": 4,
    "translate_tabs_to_spaces": true
}
```

`Tab`を押して、`半角space 4つ`が出力されていれば設定完了です。


## 使い方まとめ
### LaTeX
- `Ctrl + B` でビルドができる。

- **SumatraPDF**上で文章をダブルクリックすると、<br> **Sublime Text**で該当部分のソースコードを開くことができる。

### R
- **RGui**を起動したのち、**Sublime Text**において、<br> `Ctrl + Enter`を押すことで、コードの送信、および実行ができる。

### Python
- `Tab`を押せば`半角space 4つ`を出力することができる。


## Sublimeに入れたら便利そうなもの
以上で基本的な環境構成は完了ですが、
ほかに加えたら便利だと思われるPackageを以下に記載します。


- Japanize
Sublime Textを日本語化してくれます。
細かい設定等が英語だと困ることがあると思ったので入れました。


- ConvertToUTF8
文字コード関連の問題を解決してくれる(らしい)Packageです。
UTF-8を基準にするなら入れていて悪いことはないかと思います。


- Alignment
とても便利なPackageです。

例えば、以下のようなコードについて。

```c:sample.c
int x = 0;
double y = 1;
int z = 10;
```

このコードの全範囲を選択し、`Ctrl + Alt + A`と入力することにより、

```c:sample.c
int x    = 0;
double y = 1;
int z    = 10;
```

`=`を基準にして、インデントを調節してくれます。**Alignment**の設定`Settings-User`を

```python:Settings-User
{
	"alignment_space_chars": ["=","-"],
}
```

上記のように設定することにより、`-`も基準に調節してくれるようになり、
**R**を使うにあたって便利になります。
また、**Alignment**の設定`Key Bindings-User`を
設定することにより、コマンドを変更することができます。
(私は`Ctrl + Shift + A`に変更しています。)



## 参考文献
- [TeX Wiki](https://texwiki.texjp.org/)

- [SublimeText3でUTF-8のLaTeX環境を構築する（Windows） - Qiita](https://qiita.com/DaiHasegawa/items/d5729edab7ce4600264e)

- [Windowsに、Sublime Text3でPython開発環境を構築 - naritoブログ](https://torina.top/detail/155/)


- [LaTeX の「アレなデフォルト」 傾向と対策 - Qiita](https://qiita.com/zr_tex8r/items/297154ca924749e62471)

- [SublimeText3+LaTeXTools+TeXLive2015でWindowsなplatex執筆環境構築 - さわっても熱くない花火](https://yanoshi.hatenablog.jp/entry/2016/01/21/165454)

- [Sublime Text 3を試してみた(Texのコンパイル用） - ひまねこあっとりんくす](http://himaneko8lynx.blog.fc2.com/blog-entry-479.html)