LaTeX の執筆環境を TeXworks から VSCode へ

目次

TeX Live によって LaTeX を導入すると、標準のエディタとして TeXworks がついてくる。私は長らく TeXworks で不満なく教材を書いてきたが、VSCode の入力支援やダークモードは評判がよいため、乗り換えてみることにした。

ここでは、高等学校数学科教員としての立場から、講義資料(授業プリント)を念頭におき、VSCode による LaTeX 執筆環境を整える。

背景

経緯

LaTeX で文書を書くにあたっては、コマンド入力やタイプセットを支援するために、LaTeX をサポートするエディタを使うことが多い。

TeX Live によって LaTeX を導入すると、標準のエディタとして TeXworks がついてくる。TeXworks は細かな設定なしに手軽に使いはじめられ、最低限の機能もある。私は長らく TeXworks で不満なく教材を書いてきた。

しかし、新たな組版ソフトである typst を試すにあたって、汎用のエディタである Visual Studio Code (以降すべて VSCode と略す)を導入した。VSCode は、よく書く表現などをスニペットとして登録し tab キーで呼び出せるなど、執筆を支える拡張機能が多く作られている。そこで、LaTeX 原稿の執筆も VSCode で行ってみるべく環境を整えることとした。

TeXworks の使い勝手

私は、執筆環境を TeXworks から VSCode へ移して便利になったと感じている。しかし、設定に時間がかかったことは事実である。ほぼすべての講義資料を LaTeX で書いているのであれば、乗り換える恩恵は大きい。しかし、日頃は Studyaid D.B. や Microsoft Word を使っていて、LaTeX で原稿を書くのはときどきだということであれば、そこまでしなくともよいかもしれない。

そこで、この節では TeXworks のままで、その使い勝手をよりよくする方法をまとめるVSCode への移行を決めているようであれば、飛ばしてもらって差しつかえない

まず、TeXworks を Windows で自然に使っていると、tab キーを用いて入力補完が使えることを知らない例が多いのではなかろうか。私もかなりの間知らずにいた。Windows において TeXworks の入力補完を設定するには、次の Re: 以降で示されているように設定を編集する。ただし、年度の数字は読みかえる。

この補完は、ある程度打ったのちに tab キーを押せば前方一致で表示をしてくれるものである。Tab キーを押すごとに、登録されている候補が切り替わる。どのような補完ができるかは C:\Users\$USERNAME$\.texlive$YEAR$\texmf-config\texworks\completion\tw-latex.txt にある。この中身は、次の記事にまとめられている。残念ながら、個人的にはあまりわかりやすいショートカットには思えなかった。とはいえ、 \frac などは明らかに便利である。前方が重なるものは tab を押すたびに丸ごと切り替わる。

また、LaTeX におけるコマンドのルールに従って色もつけてくれるなど、いくつか機能がある。詳しくは、次の記事に譲る。

TeXworks で充分そうだということなら、快適な環境づくりには次の記事が参考になるだろう。

解決

はじめに

ここから先、私なりの設定をまとめる。先人の知恵を借りながら手直ししているので、やや長い手続きになる。

この節では、難しいと感じたとき、ひとまず慣れるために記事そのままで使える例を示す。

VSCode について何も知らない状態から易しいのは次であろうか。

もう少し便利にということであれば、次をすすめる。私も VSCode はほぼ初めてだが、見よう見まねで何とかなった。

実際、次の記事を下敷きに手を加えたものをこれから述べる。

ソフトウェアのインストール

この記事は、ソフトウェアのインストールが済んだのちの設定が本題である。とはいえ、一般の高校教員にとって、(数学の教員であれば LaTeX はさておき)VSCode などは知らないことが多いだろう(私もそうであった)。

次の記事に、必要最低限の導入方法がまとめられている。

  • VSCode
  • TeX Live
  • LaTeX Workshop

次の記事のうち、冒頭から [VSCodeの設定(Win Mac共通) 1. 拡張機能のインストール]までを行う。[2. setting.jsonの編集]以降はせずに、次に移る。

VSCode はプログラミングを念頭に作られているため、いわゆるテキストエディタとは少し操作感が異なる。LaTeX 文書を作るにあたっては、まずファイルを開くのではなくフォルダを開き、その中で複数のファイルを編集する点を意識すればよい。

もちろん、あらかじめ作っておいた .tex ファイルを右クリックや関連付けで VSCode で開いてもよい。

LaTeX Workshop の設定

私は、次の記事に従って LaTeX Workshop を設定した。

ここから先は、この記事どおりに設定したことを前提に書かれている。ほかの設定では、必要に応じて読みかえてもらいたい。この設定を選んだ理由は次である。

  • Windows を前提に書かれている。
  • latexmk を使っていない。すなわち、設定がいろいろなファイルに散らばらない。コンピュータを買い替えたときや、2台のコンピュータに同じ設定をするなどにおいてこちらのほうが手間が少ない。高度な原稿(論文や書籍)であれば latexmk を使うほうがよいだろう。しかし、ここでの前提は高校数学の講義資料なので、手軽さのほうがありがたい。
  • LuaLaTeX の設定がある。
  • ひとまずコピーすれば済むコードブロックがある。

次が手順である。LaTeX Workshop を使いこなすを見ていることを踏まえて書かれている。

  1. 書かれているように settings.json を開く

  2. [settings.json まとめ(折りたたみ)]の中身をコピー&ペーストする。

  3. [Ctrl]+[F]キーで検索窓を出し、
    latex-workshop.latex.autoBuild.run
    と入力する。すると
    "latex-workshop.latex.autoBuild.run": "never",
    とあるが、neveronSave に書き換える。すなわち
    "latex-workshop.latex.autoBuild.run": "onSave",
    とする。 末尾のカンマを忘れるとエラーになるので気をつける。

    • これにより、保存するたびにタイプセットが走るようになる。
    • 大きな資料を作るのであれば負荷がかかるかもしれない。しかし、今はA3 または B4 用紙1枚に収めることを意識しながら資料を作るのであれば、このほうがよい。
  4. upLaTeX から LuaLaTeX に変えるため、upLaTeX を設定している部分へ移る。[Ctrl]+[F]キーで検索窓を出し、
    latex-workshop.latex.tools
    と入力する。見つかった部分から、次にある
    "latex-workshop.latex.recipes": [
    の終わりまで("uplatex2pdf" が3回連続して出てくるあとの ], まで)を選ぶ。

  5. ▼ その他の tools と recipes から、[Using LuaLaTeX(折りたたみ)]を選び、上書きする部分をコピーしてする。"latex-workshop.latex.recipes": [ から ], まで、すなわちすべてである。

    1. で選んだ upLaTeX 用設定を、6. で選んだ LuaLaTeX 用設定に置きかえる(コピー&ペーストで上書きする)。
    • このままの設定では、LuaLaTeX は常に2回タイプセットされる。大きな資料を作るつもりではないこと、保存するたびにタイプセットを行うようにしていることを踏まえて、タイプセットを1回に減らす
  6. [Ctrl]+[F]キーで検索窓を出し、
    latex-workshop.latex.recipes
    と入力する。すると {...} (おそらく青でハイライトされる)に囲まれた
    "name": "#LuaLaTeX: 2 time Build", ...
    から始まる記述が見つかる。この直前に、次をコピーする。

          {
            "name": "#LuaLaTeX Single",
            "tools": [
              "lualatex=single",
            ]
          },
    
    • 順序は本質的である。保存にあたって自動で行われるタイプセットは、一番上にあるものになるからだ。
    • まだ lualatex=single は登録されていない。これを登録する。
  7. [Ctrl]+[F]キーで検索窓を出し、latex-workshop.latex.tools と入力する。すると {// LuaLaTeX non-SyncTeX mode ...} (おそらく青でハイライトされる)に囲まれた "name": "lualatex=non-synctex", から始まる記述が見つかる。この上に、次をコピーする。

          {// LuaLaTeX Single
          "name": "lualatex=single",
          "command": "lualatex",
          "args": [
            "-synctex=1",
            "-interaction=nonstopmode",
            "-file-line-error",
            "%DOC%",
          ]
          },
    

これで、LaTeX Workshop の設定が済んだ。

既定のフォルダを決める

  1. VSCode を立ちあげる。
  2. 左下の歯車アイコンから[設定]を選ぶ。
  3. [設定の検索]欄に
    files.dialog.defaultPath
    と入力する。
  4. Files ? Dialog: Default Path という項目が現れるので、既定としたいフォルダのパスを入力する。
    • フォルダのパスは、既定としたいフォルダをエクスプローラで開いたとき、上部にある ... > ... > ... をクリックするとコピーできる。

原稿を書く

  1. VSCode を立ちあげる。
  2. [ファイル]→[フォルダーを開く]を選ぶ。
    • ここまでは、エクスプローラでフォルダを作ったうえで右クリックから[Code で開く]を選んでもよい。
  3. すでに設定した初期フォルダが現れるので、左上の[新しいフォルダー]からこれから書く原稿のフォルダを作り、作ったフォルダを選ぶ。
    • 実験的に、フォルダ名・ファイル名に日本語を用いてもタイプセットできた。
    • 日本語ファイル名がどのような処理にも差しつかえないかについては、私はわかっていない。
  4. 左側の列[エクスプローラー]に、今名づけたフォルダが表示されている。フォルダ名にフォーカスするとアイコンが現れるので、[新しいファイル]を選び、ファイル名を拡張子(.tex まで)入力する。
  5. すでに作ったスニペットからプリアンブルを入力し、原稿を書く。
    • スニペット名を入力しはじめると自動補完が働くので、適当なところで選んで[Tab]キーを押せばよい。
  6. ここでの設定では、[Ctrl]+[S]で保存とともにタイプセットが始まる。
    • こまめに保存していれば、おおむね様子が見えるので書きやすいだろう。
    • 相互参照などの「??」が残っていれば、原稿はそのままでもふたたび保存すればタイプセットしてくれる。

入力における既定のスニペット(よく書くソースをまとめておき、簡単な入力で貼り付けられるようにしたもの)・ショートカットは次にまとめられている。

スニペットの追加

いつも入力する \documentclass{...} などはあらかじめ登録しておきたい。このために、私は Easy Snippet を用いている。かなり直観的なので、説明は次に譲る。

ふつうに使っていれば問題は起こらないと思うが、次のような報告があるので残しておく。

補足

PDF タブビューワの色調

PDF タブビューワの色調はあらかじめ設定してくれているが、私は次のように書き換えた。コメントアウトでもとの設定を残してある。

// CSS 反転: 0; 0-1
"latex-workshop.view.pdf.invert": 0.88, //0.92,
// 明るさ調整: 1; 0-2
"latex-workshop.view.pdf.invertMode.brightness": 1.0, //1.3,
// グレースケール: 0.6; 0-1
"latex-workshop.view.pdf.invertMode.grayscale": 0.6,
// CSS 色相回転の角度: 180; 0-360
"latex-workshop.view.pdf.invertMode.hueRotate": 180,
// セピア色調整: 0; 0-1
"latex-workshop.view.pdf.invertMode.sepia": 0.13,

和文用設定

私は、次の記事をもとに和文の設定を加えている。ただし、すでに行った設定にただ書き加えると、重複が生じてしまう。この点をわかっていて、解決できるのであれば、おすすめである。

私は editor.unicodeHighlight.allowedCharacters に全角スペースも加えた。フォントが全角スペースを見せるようになっているからである。

TeX-style shebang

私は基本的に LuaLaTeX で文書を処理しているが、emath によるグラフ作成のために upLaTeX を使うことがある。emath は LuaLaTeX 版もあるのだが、「微調整してタイプセット」が何度もあるとなれば、LuaLaTeX と upLaTeX の時間差は大きい

今の VSCode 標準のタイプセットは、いくつかのレシピを使い分けるには手間がかかる。

これを克服するために、TeX-style shebang がある。

自作プリアンブルの取り扱い

自作のプリアンブルを \input{...} したり \usepackage{...} したりしても、残念ながら入力補完(インテリセンス)が効かない。

これについて、本来はパッケージに対応した .json ファイルを作成すべきであるようだが、私は Easy Snippet によって最小限追加することで対処しようと考えている。

[当面の間作業中]

参考

経緯

TeXworks の使い勝手

はじめに

ソフトウェアのインストール

LaTeX Workshop の設定

既定のフォルダを決める

原稿を書く

スニペットの追加

TeX-style shebang

PDF タブビューワの色調

和文用設定

自作プリアンブルの取り扱い