ブログだと140字以上打てる

大学院生が数学の話とかしている.

VSCodeでLaTeXを書くと楽

おはようございます! しぐまです.

今回は,Visual Studio Code (以下VSCode)を使ってLaTeXを書けるようにする話です.

VSCodeを使ったきっかけ

以前の私は,LaTeXを用いて文書を作成する際にCloud LaTeXを用いていました*1. その際,不便に感じることがあったため有識者に相談すると「VSCodeとか使うと便利らしいよ」と教えてくれました*2. そんな話を聞いてからしばらくたった後,私も「VSCodeへ乗り換えよう!」と決意しました. しかし,実際にVSCodeLaTeXを打とうとすると,

  1. LaTeXをインストールする
  2. VSCodeLaTeXを書けるようにする
  3. VSCodeの機能でTe書き*3を便利にする

といった3つの作業が必要になり,実際に主要な環境として使用し始めるまで1月半ほどかかってしまいました. そこで,今回は私の環境構築の様子をそのまま書くことで,後からVSCodeLaTeXを書く人の助けになることを目指しています.

VSCodeと格闘した日々

参考にしたサイトのリンクと一緒に何をしたか書いていきます*4. 後から問題や便利なツールに気付くことがあったので,とりあえず一通り眺めた方が楽に環境構築できると思います. 私がWindowsを用いているため,その他のOSを用いている人は該当しないことも多いかもしれません. 私が楽なため,以下常体で書きます.

結果と必要な作業のまとめ

まず,2020年8月現在では,私のワークフローは次のようになった:

  • 使用しているエンジンはupTeX. それに応じて,一部の設定でptexplatexをuptex・uplatexに変更している.
  • 文書の作成はLaTeX Workshopの機能であるビルドレシピを,VSCodeの設定でCtrl+Alt+Bで行えるようにした *14
  • PDFはSumatra PDFで表示している.

次に,VSCodeLaTeXを書くために必要な作業と,それに該当する私の行った作業を記しておく. まず,最低限必要な作業は次の3つである:

  1. TeXLaTeXのインストール
    私が行った作業の中では,TeX Liveのインストール(03/15)が該当している.
  2. VSCodeLaTeXを使えるようにする
    日本語化とLaTeX Workshopのインストール(03/15)さえ行えばまずは充分だろう.
  3. 作業しながらPDFを見れるようにする
    私はSumatra PDFに設定した(04/15)が,特に不満がなければVSCode内で表示されるように設定すればよい(03/30)と思われる.

また,VSCodeの機能を利用して快適に作業を行うためには,加えて次のような作業が必要になる:

  1. 文書作成の簡略化
    私はビルドレシピを用いて,一連の作業(uplatexで3回コンパイルした後,dvipdfmxでpdfファイルを作成する)をコマンド1つで行えるようにした(03/15).
  2. スニペットの設定
    私は主にユーザースニペットの設定を行った(03/3004/13). LaTeX Workshopに元から用意されているコマンドも沢山あるため,それを知っておくとより便利だろう.
    Snippets · James-Yu/LaTeX-Workshop Wiki · GitHubLaTeX Workshopの公式ドキュメントのスニペットについての頁.
  3. inverse searchの設定
    私はTeX WikiやMyTeXpertのSumatra PDFの頁に書いてあることを参考に設定した(04/15).
  4. hover previewの設定
    簡単なコマンドを\newcommandなどを使って定義しているだけなら問題はないが,xparseパッケージの\NewDocumentCommandや,MathJaxでサポートされていないパッケージの命令(bmパッケージの\bmなど)を用いた際,他のコマンドも表示されなくなることを防ぐために,別個でtexファイルを用意する必要がある. 私はMathJaxのサポートしているコマンドを調べ(04/17),別個のtexファイルを用意した(04/18).

実際にVSCodeを使ってる感想

上記を見れば分かるように,明らかにPC初心者には負担が大きすぎる作業量である(たぶん)(知らんけど). しかし,実際にVSCodeLaTeXを書いていると,頑張って設定した色々のお陰で作業はすこぶる快適になった. だからこそ,多少大変でも使って欲しいと思い,こんな記事を書いたのである.

この記事が皆さんの快適なLaTeX生活の一助となれば幸いである.

謝辞

大学の友人たちは本記事の校閲を助けてくれました. ありがとう!

また,本記事の内容や,僕のLaTeXについての様々な質問に答えていただいたえぬぬんさんに感謝の意を表します. えぬぬんさんが「初心者が0から環境構築した流れを見たい」と言わなければ,この記事ができることはありませんでした.
ちなみに,えぬぬんさんが書いた以下の記事を読むと,どんなときに(Wordではなく)LaTeXを使うべきなのか,どのようにtexファイルを書くべきか,ということが分かるので是非読んでみてください! web.archive.org

追記

  • えぬぬんさんの書いた記事が消えて見れなくなっていたため,リンクをアーカイブに差し替えました.(2021/02/16)

  • Cloud LaTeXが便利になったみたいなので,実際に試してみました.(2021/02/16) drive.google.com

*1:追記に2021年2月時点におけるCloud LaTeXの使用感を書きました.

*2:ご本人は別のエディタを用いているらしい.

*3:texファイルを書くことをこう呼んでいます.会話で使うと手書きと紛らわしいです(だから面白い).

*4:リンクは問題があったら消します.

*5:この記事を公開した2020年8月現在にはTeX Live 2020が出ている.

*6:後になって,自分で設定したスニペット(labelとかも同時に出る)の方が便利であることに気付いた. しかし,figure環境を参照した際に「図n」と表示させるためにcrefnameが必要であり,役には立った.

*7:PDFからtexコードの該当箇所に飛ぶやつ.

*8:私がSumatra PDFを選んだ理由は,inverse searchがCloud LaTeXと同じダブルクリックで可能なためである.

*9:調べた際に「全角句読点を区切りとして設定すればよい」と出てきたが,設定してもなぜか上手く行かなかった. 解決法を知ってる方がいたら,教えてくださると助かります.

*10:カーソルを数式のコードに合わせたら数式が表示されるやつ.

*11:MathJaxで使用できる記号で代用するために理解する必要があった. その後も調べた結果,mleftrightパッケージを用いずに似た挙動を示すコマンドが作れることが分かった(括弧類で囲まれたものとコード上で波括弧で囲まれたものの扱いは本質的に違うが,周りとの間隔を減らすという役割は果たせる):
『数式組版』を組む技術:\leftと\right (2)|きえだゆうすけ(p_typo)|note

*12:MathJaxでサポートされたコマンド使って,普段用いているコマンドを書いたtexファイルを作成した. とても面倒だったので,良い対処方法を知ってる人は教えて下さい...

*13:基本的にLaTeXは勝手に間隔を調整してくれるので,普段書く際はその設定に沿った書き方をするべきである. 実際に設定を生かす例:
\newcommandを乱用するな、\DeclareMathOperatorを使え(LaTeXでの演算子の定義)

*14:ショートカットキーの設定は,このサイトにあるようにすればよい:
VSCodeでキーバインドを設定する。keybindings.jsonが無い時の対処法 - Qiita