VSCodeでTeX（.mdファイルと.texファイル）

# 1. 概要

TeXやTeX入りのMarkdownファイル（.md)をVisual Studio Code（VSCode）で快適に編集するための設定をしたときの個人的な記録です。

拡張機能のインストールと設定（setting.json の編集）で

- 数式入りの.mdファイルのプレビューやhtml，pdfの出力
- .texファイルのコンパイル（pdf作成）やプレビュー
 
ができるようになりました。

## 1-1 インストールした拡張機能

インストールしたのは次の3個です。

- Markdown Preview Enhanced （[→2.](#2-Markdownファイル中の数式のプレビューのために)）
- Markdown＋Math（[→2.](#2-Markdownファイル中の数式のプレビューのために)）
- LaTeX Workshop（[→3.](#3-VScodeでTeXのコンパイルとpdfの表示をするために)）

【拡張機能のインストールの方法】
VSCode画面の左側に並んだマークの中の四角（3+1個の正方形）のマーク（カーソルをあてると「Extentions」と出る）をクリックして検索窓（「Marketplaceで拡張機能を検索」）に名前を入れると見つかるので「Install」をクリックするだけ。再起動や再読み込みをすると確実かもしれません。


## 1-2 環境
PCはWindows10（64bit），TeXはW32TeX（abtexinst_0_91.zip利用），VSCodeのバージョンは1.40.0です。


# 2. Markdownファイル中の数式のプレビューのために

Markdownファイル（.md）の中でTeX書式で書かれた数式をちゃんとした（？）数式にしてプレビューしたり，htmlファイルやpdfファイルを出力したりが簡単にできるようにします。

参考にしたページ：「VS CodeでMarkdownとLaTeXで遊ぶ」 http://takacity.blog.fc2.com/blog-entry-224.html 

## 2-1 拡張機能のインストールと設定

次の2つの拡張機能をインストールします。設定は特に必要ありません。

- Markdown Preview Enhanced (以下，MPE)<br>
（Markdownのプレビューやhtml，pdfの出力をするための拡張機能）
- Markdown＋Math<br>
（数式をLaTeXで出力するための拡張機能）

## 2-2 使い方など
数式入りのプレビュー，htmlファイル，pdfファイルが簡単に出せます（ファイル出力は同じフォルダ内。hoge.texの場合はhoge.html，hoge.pdf）。プレビューは編集と同時に更新されるのですごく便利です。

<strong>pdfの表示：</strong> 右上の虫眼鏡付きのファイルのマークのうち左側ほう（「Markdown Preview Enhanced: Open Preview to the Side」）をクリックするとTeX書式が数式になったプレビュー画面が出ます。
※右側の虫眼鏡付きファイルのマーク（「プレビューを横に表示」）はデフォルトのプレビューです（数式はTeX書式のまま表示されます）。

<strong>htmlの出力：</strong> プレビュー画面上で右クリック→HTML→「HTML(offline)」か「HTML(cdn hosted）」を選んでクリック
※「HTML(offline)」，「HTML(cdn hosted）」のどちらでも同じようにできました。

<strong>pdfの出力：</strong> プレビュー画面上で右クリック→ Chrome(Puppeteer) →　PDF をクリック
※右クリックで出るメニューには「PDF(prince)」もありますが，「"princexml" is required to be installed.」と出て使えませんでした。

## 2-3 注意とか
数式の表示には内部でKaTeXというのを用いているそうです。うまくいかないときはKaTeXで検索して調べてみるとよいかもしれません。


# 3. VScodeでTeXのコンパイルとpdfの表示をするために

texファイルの編集だけでなく，コンパイル(pdf作成）までVSCodeでできるようにします。

参考にしたページ：

- 「VS CodeでTeXを使う方法」http://elecho.hatenablog.com/entry/2017/04/27/175500
※まずはこれを参考に

- 「とりあえずVisual Studio CodeでLaTeXを書く」https://qiita.com/keisukesato-ac/items/e0de3ada8960a6b69a69
※ 設定（setting.json）は基本的に，こちらをベースに

- 「LaTeXでより簡単に執筆できる環境をつくる [Windows/macOS] | MKTIAの備忘録」https://blog.mktia.com/create-environment-to-edit-latex-easily
※ setting.jsonの細かい設定の参考に


## 3-1 拡張機能のインストールと設定

拡張機能の LaTeX Workshop をインストールし，setting.json を編集してコンパイル等の設定をします。

「Ctrl」+「,」（または，左下の歯車のマークをクリック→「設定」）で設定画面を開き，右上のファイルみたいなマーク（カーソルをあてると「設定（JSON)を開く」と出る）をクリックするとsetting.json が開いて編集できるので，以下の記述を追加します。
<strong>（注意）</strong> { }の中（既存の設定に追加するときは，一番外の{ }の中）に追加します。前の設定の最後に「,」がなければ，「,」を加えてから追加。


```setting.json
// TeXのコンパイルのための設定
"latex-workshop.latex.tools": [{
  "name": "ptex2pdf (platex)",
  "command": "ptex2pdf",
  "args": [
    "-l",
    "-ot",
    "-kanji=utf8 -synctex=1",
    "%DOC%"
  ]
 },
],
"latex-workshop.latex.recipes": [
{
  "name": "ptex2pdf (platex) * 1",
  "tools": [
    "ptex2pdf (platex)"
  ]
 },
],
"latex-workshop.synctex.afterBuild.enabled": true, //コンパイル時に PDF をカーソル位置で表示
"latex-workshop.view.pdf.viewer": "tab", //pdfの表示。"tab"でタブ表示
"latex-workshop.chktex.enabled": true, // 構文チェック
"latex-workshop.latex.autoClean.run": "onBuilt", //補助ファイルの自動削除

"editor.wordWrap": "on", // "on"でテキストを右端で折り返す。
```

<strong>(補足)</storong>

- `"latex-workshop.latex.toolchain"`による設定の形式は昨年あたりに廃止されたみたいです。
 参考：「VSCodeでTeXがいじれなくなった」http://lyncs.hateblo.jp/entry/2018/04/15/055543

- `"latex-workshop.chktex.enabled": true` について
 構文チェックですが，chktexは日本を理解しないのでエラーがたくさん出たりするらしいです。困るようなら`false`に。

- `"latex-workshop.latex.autoClean.run": "onBuilt"`について
 コンパイル時に .aux や .log などの補助ファイルを削除してくれます（synctex.gzファイルは残りますが）。
※`"latex-workshop.latex.clean.enabled": true,` を使っているものもありました。

- `"editor.wordWrap": "on"` （右端での折り返し）は，作業によっては`"off" `のほうが使いやすい場合もあるかも。


## 3-2 使い方

ファイルを保存すると.texがコンパイルされてpdfファイルが作成されます。
右上の虫眼鏡付きのファイルのマーク（「View LaTeX PDF file」）をクリックするとタブに表示されます。保存のたびにコンパイルしなおしたものが表示されるのでとても便利。


# 4.おぼえがき

- （投稿：2019/11/10）
- 最初，setting.json の編集（追加）の仕方を間違えて，設定が反映されなくて困った。
- （オプション）LaTeX Language Support（拡張機能）は入れなかった（「今はなくてもよい」みたいな記事を読んだので）。
- コンパイルの設定はもっと詳しくやっているのもあったが，基本的にはこれで十分なので，ひとまずこれで。shell-escapeオプションつきのコンパイルなどはできないけど（setting.jsonでオプションを追加したらできる？）。難しければTeXWorksでコンパイルすればいいし。

- 自動削除の設定をしても`.synctex.gz`ファイルは残る（`.dvi`が生成されたらこれも残るらしい）。消す方法はあるみたい。
 参考：「vscodeのLaTeX環境で.auxなどの補助ファイルを自動で消去」https://geniusium.hatenablog.com/entry/2018/09/21/143304

- `"latex-workshop.latex.recipes"` の `"name": "ptex2pdf (platex) * 1",` のところは，「* 1」でなく「* 2」がよいかもしれない（2回コンパイルするということで「* 2」らしい。目次の作成等では2回のコンパイルが必要なこともある）。とりあえず１回のままで。