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 で行ってみるべく環境を整えることとした。
- https://texwiki.texjp.org/?Visual Studio Code/LaTeX
- (Wiki)
- Visual Studio Code/LaTeX
- TeX Wiki
- 参照 2024-11-17
TeXworks の使い勝手
私は、執筆環境を TeXworks から VSCode へ移して便利になったと感じている。しかし、設定に時間がかかったことは事実である。ほぼすべての講義資料を LaTeX で書いているのであれば、乗り換える恩恵は大きい。しかし、日頃は Studyaid D.B. や Microsoft Word を使っていて、LaTeX で原稿を書くのはときどきだということであれば、そこまでしなくともよいかもしれない。
そこで、この節では TeXworks のままで、その使い勝手をよりよくする方法をまとめる。VSCode への移行を決めているようであれば、飛ばしてもらって差しつかえない。
まず、TeXworks を Windows で自然に使っていると、tab キーを用いて入力補完が使えることを知らない例が多いのではなかろうか。私もかなりの間知らずにいた。Windows において TeXworks の入力補完を設定するには、次の Re: 以降で示されているように設定を編集する。ただし、年度の数字は読みかえる。
- https://okumuralab.org/tex/mod/forum/discuss.php?d=2864
- (Forum)
- TeXworksの補完が起動しない
- 奥村研究室
- 参照 2024-11-16
この補完は、ある程度打ったのちに tab キーを押せば前方一致で表示をしてくれるものである。Tab キーを押すごとに、登録されている候補が切り替わる。どのような補完ができるかは C:\Users\$USERNAME$\.texlive$YEAR$\texmf-config\texworks\completion\tw-latex.txt
にある。この中身は、次の記事にまとめられている。残念ながら、個人的にはあまりわかりやすいショートカットには思えなかった。とはいえ、 \frac
などは明らかに便利である。前方が重なるものは tab を押すたびに丸ごと切り替わる。
- https://zenn.dev/nikogoli/scraps/128bac9a32df89
- nikogoli
- TeXworks で利用可能な入力補完の一覧
- Zenn
- 参照 2024-11-16
また、LaTeX におけるコマンドのルールに従って色もつけてくれるなど、いくつか機能がある。詳しくは、次の記事に譲る。
- https://texwiki.texjp.org/?TeXworks/使い方
- (Wiki)
- TeXworks/使い方
- TeX Wiki
- 参照 2024–
TeXworks で充分そうだということなら、快適な環境づくりには次の記事が参考になるだろう。
- https://qiita.com/Yarakashi_Kikohshi/items/311b079f460aaf851d45
- @Yarakashi_Kikohshi
- 初心者に優しいTeXworks?
- Qiita
- 参照 2024-11-16
- http://qiita.com/matyapiro31/items/338b1293fddb6b922479
- matyapiro31
- TeXworksでIntellisenseみたいなことがしたい
- Qiita / Internet Archive
- 参照 2024-11-16
解決
はじめに
ここから先、私なりの設定をまとめる。先人の知恵を借りながら手直ししているので、やや長い手続きになる。
この節では、難しいと感じたとき、ひとまず慣れるために記事そのままで使える例を示す。
VSCode について何も知らない状態から易しいのは次であろうか。
- https://qiita.com/Yarakashi_Kikohshi/items/e9270af54569640fe80f
- @Yarakashi_Kikohshi
- なるべくデフォルトのまま使いたい人へ
- Qiita
- 参照 2024–
もう少し便利にということであれば、次をすすめる。私も VSCode はほぼ初めてだが、見よう見まねで何とかなった。
- https://qiita.com/Yarakashi_Kikohshi/items/a9357dd469320ffb65a0
- @Yarakashi_Kikohshi
- LaTeX Workshop を使いこなす
- Qiita
- 参照 2024-11-16
実際、次の記事を下敷きに手を加えたものをこれから述べる。
ソフトウェアのインストール
この記事は、ソフトウェアのインストールが済んだのちの設定が本題である。とはいえ、一般の高校教員にとって、(数学の教員であれば LaTeX はさておき)VSCode などは知らないことが多いだろう(私もそうであった)。
次の記事に、必要最低限の導入方法がまとめられている。
- VSCode
- TeX Live
- LaTeX Workshop
次の記事のうち、冒頭から [VSCodeの設定(Win Mac共通) 1. 拡張機能のインストール]までを行う。[2. setting.jsonの編集]以降はせずに、次に移る。
- https://zenn.dev/hash_yuki/articles/31855fbdb5fdf7
- hash
- VSCodeでのLaTeXの環境構築
- Zenn
- 参照 2024-11-16
VSCode はプログラミングを念頭に作られているため、いわゆるテキストエディタとは少し操作感が異なる。LaTeX 文書を作るにあたっては、まずファイルを開くのではなくフォルダを開き、その中で複数のファイルを編集する点を意識すればよい。
もちろん、あらかじめ作っておいた .tex
ファイルを右クリックや関連付けで VSCode で開いてもよい。
LaTeX Workshop の設定
私は、次の記事に従って LaTeX Workshop を設定した。
- https://qiita.com/Yarakashi_Kikohshi/items/a9357dd469320ffb65a0
- @Yarakashi_Kikohshi
- LaTeX Workshop を使いこなす
- Qiita
- 参照 2024-11-16
ここから先は、この記事どおりに設定したことを前提に書かれている。ほかの設定では、必要に応じて読みかえてもらいたい。この設定を選んだ理由は次である。
- Windows を前提に書かれている。
- latexmk を使っていない。すなわち、設定がいろいろなファイルに散らばらない。コンピュータを買い替えたときや、2台のコンピュータに同じ設定をするなどにおいてこちらのほうが手間が少ない。高度な原稿(論文や書籍)であれば latexmk を使うほうがよいだろう。しかし、ここでの前提は高校数学の講義資料なので、手軽さのほうがありがたい。
- LuaLaTeX の設定がある。
- ひとまずコピーすれば済むコードブロックがある。
次が手順である。LaTeX Workshop を使いこなすを見ていることを踏まえて書かれている。
-
[settings.json まとめ(折りたたみ)]の中身をコピー&ペーストする。
-
[Ctrl]+[F]キーで検索窓を出し、
latex-workshop.latex.autoBuild.run
と入力する。すると
"latex-workshop.latex.autoBuild.run": "never",
とあるが、never
をonSave
に書き換える。すなわち
"latex-workshop.latex.autoBuild.run": "onSave",
とする。 末尾のカンマを忘れるとエラーになるので気をつける。- これにより、保存するたびにタイプセットが走るようになる。
- 大きな資料を作るのであれば負荷がかかるかもしれない。しかし、今はA3 または B4 用紙1枚に収めることを意識しながら資料を作るのであれば、このほうがよい。
-
upLaTeX から LuaLaTeX に変えるため、upLaTeX を設定している部分へ移る。[Ctrl]+[F]キーで検索窓を出し、
latex-workshop.latex.tools
と入力する。見つかった部分から、次にある
"latex-workshop.latex.recipes": [
の終わりまで("uplatex2pdf"
が3回連続して出てくるあとの],
まで)を選ぶ。 -
▼ その他の tools と recipes から、[Using LuaLaTeX(折りたたみ)]を選び、上書きする部分をコピーしてする。
"latex-workshop.latex.recipes": [
から],
まで、すなわちすべてである。 -
- で選んだ upLaTeX 用設定を、6. で選んだ LuaLaTeX 用設定に置きかえる(コピー&ペーストで上書きする)。
- このままの設定では、LuaLaTeX は常に2回タイプセットされる。大きな資料を作るつもりではないこと、保存するたびにタイプセットを行うようにしていることを踏まえて、タイプセットを1回に減らす。
-
[Ctrl]+[F]キーで検索窓を出し、
latex-workshop.latex.recipes
と入力する。すると{...}
(おそらく青でハイライトされる)に囲まれた
"name": "#LuaLaTeX: 2 time Build", ...
から始まる記述が見つかる。この直前に、次をコピーする。{ "name": "#LuaLaTeX Single", "tools": [ "lualatex=single", ] },
- 順序は本質的である。保存にあたって自動で行われるタイプセットは、一番上にあるものになるからだ。
- まだ
lualatex=single
は登録されていない。これを登録する。
-
[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 の設定が済んだ。
既定のフォルダを決める
- VSCode を立ちあげる。
- 左下の歯車アイコンから[設定]を選ぶ。
- [設定の検索]欄に
files.dialog.defaultPath
と入力する。 Files ? Dialog: Default Path
という項目が現れるので、既定としたいフォルダのパスを入力する。- フォルダのパスは、既定としたいフォルダをエクスプローラで開いたとき、上部にある
... > ... > ...
をクリックするとコピーできる。
- フォルダのパスは、既定としたいフォルダをエクスプローラで開いたとき、上部にある
原稿を書く
- VSCode を立ちあげる。
- [ファイル]→[フォルダーを開く]を選ぶ。
- ここまでは、エクスプローラでフォルダを作ったうえで右クリックから[Code で開く]を選んでもよい。
- すでに設定した初期フォルダが現れるので、左上の[新しいフォルダー]からこれから書く原稿のフォルダを作り、作ったフォルダを選ぶ。
- 実験的に、フォルダ名・ファイル名に日本語を用いてもタイプセットできた。
- 日本語ファイル名がどのような処理にも差しつかえないかについては、私はわかっていない。
- 左側の列[エクスプローラー]に、今名づけたフォルダが表示されている。フォルダ名にフォーカスするとアイコンが現れるので、[新しいファイル]を選び、ファイル名を拡張子(
.tex
まで)入力する。 - すでに作ったスニペットからプリアンブルを入力し、原稿を書く。
- スニペット名を入力しはじめると自動補完が働くので、適当なところで選んで[Tab]キーを押せばよい。
- ここでの設定では、[Ctrl]+[S]で保存とともにタイプセットが始まる。
- こまめに保存していれば、おおむね様子が見えるので書きやすいだろう。
- 相互参照などの「??」が残っていれば、原稿はそのままでもふたたび保存すればタイプセットしてくれる。
入力における既定のスニペット(よく書くソースをまとめておき、簡単な入力で貼り付けられるようにしたもの)・ショートカットは次にまとめられている。
- https://github.com/James-Yu/LaTeX-Workshop/wiki/Snippets
- James-Yu
- Snippets
- GitHub
- 参照 2024-11-16
スニペットの追加
いつも入力する \documentclass{...}
などはあらかじめ登録しておきたい。このために、私は Easy Snippet を用いている。かなり直観的なので、説明は次に譲る。
- https://www.aura-office.co.jp/blog/easy-snippet/
- 野口
- VSCodeで簡単にスニペット登録ができる「Easy Snippet」でコーディングを効率よくする
- 株式会社アウラ
- 参照 2024-11-16
ふつうに使っていれば問題は起こらないと思うが、次のような報告があるので残しておく。
- https://zenn.dev/sato_7f/articles/3e8078501ed6a0
- tami
- 【VSCode】プロファイル別のEasy Snippetの設定で躓いた
- Zenn
- 参照 2024-11-16
補足
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,
和文用設定
私は、次の記事をもとに和文の設定を加えている。ただし、すでに行った設定にただ書き加えると、重複が生じてしまう。この点をわかっていて、解決できるのであれば、おすすめである。
- https://qiita.com/Yarakashi_Kikohshi/items/cd823b4432cf23136285
- @Yarakashi_Kikohshi
- VSCode で和文を編集するときのオススメ設定
- Qiita
- 参照 2024-11-16
私は editor.unicodeHighlight.allowedCharacters
に全角スペースも加えた。フォントが全角スペースを見せるようになっているからである。
TeX-style shebang
私は基本的に LuaLaTeX で文書を処理しているが、emath によるグラフ作成のために upLaTeX を使うことがある。emath は LuaLaTeX 版もあるのだが、「微調整してタイプセット」が何度もあるとなれば、LuaLaTeX と upLaTeX の時間差は大きい。
今の VSCode 標準のタイプセットは、いくつかのレシピを使い分けるには手間がかかる。
これを克服するために、TeX-style shebang がある。
- https://qiita.com/munepi/items/a30c68133cfffbf4d189
- Munehiro Yamamoto
- TeXworks、TeXShop、VSCodeでTeX-style shebangしてみた
- Qiita
- 参照 2024-11-16
自作プリアンブルの取り扱い
自作のプリアンブルを \input{...}
したり \usepackage{...}
したりしても、残念ながら入力補完(インテリセンス)が効かない。
これについて、本来はパッケージに対応した .json
ファイルを作成すべきであるようだが、私は Easy Snippet によって最小限追加することで対処しようと考えている。
[当面の間作業中]
- https://code.visualstudio.com/docs/editor/userdefinedsnippets
- Microsoft
- Snippets in Visual Studio Code
- Visual Studio Code
- 参照 2024-11-18
参考
経緯
- https://texwiki.texjp.org/?TeX Live
- (Wiki)
- TeX Live
- TeX Wiki
- 参照 2024-11-17
- https://texwiki.texjp.org/?TeXworks
- (Wiki)
- TeXworks
- TeX Wiki
- 参照 2024-11-17
- https://texwiki.texjp.org/?Visual Studio Code/LaTeX
- (Wiki)
- Visual Studio Code/LaTeX
- TeX Wiki
- 参照 2024-11-17
TeXworks の使い勝手
- https://okumuralab.org/tex/mod/forum/discuss.php?d=2864
- (Forum)
- TeXworksの補完が起動しない
- 奥村研究室
- 参照 2024-11-16
- https://zenn.dev/nikogoli/scraps/128bac9a32df89
- nikogoli
- TeXworks で利用可能な入力補完の一覧
- Zenn
- 参照 2024-11-16
- https://texwiki.texjp.org/?TeXworks/使い方
- (Wiki)
- TeXworks/使い方
- TeX Wiki
- 参照 2024–
- https://qiita.com/Yarakashi_Kikohshi/items/311b079f460aaf851d45
- @Yarakashi_Kikohshi
- 初心者に優しいTeXworks?
- Qiita
- 参照 2024-11-16
- http://qiita.com/matyapiro31/items/338b1293fddb6b922479
- matyapiro31
- TeXworksでIntellisenseみたいなことがしたい
- Qiita / Internet Archive
- 参照 2024-11-16
はじめに
- https://qiita.com/Yarakashi_Kikohshi/items/e9270af54569640fe80f
- @Yarakashi_Kikohshi
- なるべくデフォルトのまま使いたい人へ
- Qiita
- 参照 2024–
- https://qiita.com/Yarakashi_Kikohshi/items/a9357dd469320ffb65a0
- @Yarakashi_Kikohshi
- LaTeX Workshop を使いこなす
- Qiita
- 参照 2024-11-16
ソフトウェアのインストール
- https://zenn.dev/hash_yuki/articles/31855fbdb5fdf7
- hash
- VSCodeでのLaTeXの環境構築
- Zenn
- 参照 2024-11-16
LaTeX Workshop の設定
- https://qiita.com/Yarakashi_Kikohshi/items/a9357dd469320ffb65a0
- @Yarakashi_Kikohshi
- LaTeX Workshop を使いこなす
- Qiita
- 参照 2024-11-16
- https://qiita.com/zr_tex8r/items/e179b0327ddba7b17095
- zr_tex8r
- 重点解説! LuaLaTeXを遅くしない方法
- Qiita
- 参照 2024-11-16
既定のフォルダを決める
- https://www.webdesignleaves.com/wp/htmlcss/2315/
- Web Design Leaves
- VS Code 「フォルダーを開く」で開くディレクトリ(デフォルトフォルダ)を設定
- Web Design Leaves
- 参照 2024-11-16
原稿を書く
- https://github.com/James-Yu/LaTeX-Workshop/wiki/Snippets
- James-Yu
- Snippets
- GitHub
- 参照 2024-11-16
スニペットの追加
- https://www.aura-office.co.jp/blog/easy-snippet/
- 野口
- VSCodeで簡単にスニペット登録ができる「Easy Snippet」でコーディングを効率よくする
- 株式会社アウラ
- 参照 2024-11-16
- https://zenn.dev/sato_7f/articles/3e8078501ed6a0
- tami
- 【VSCode】プロファイル別のEasy Snippetの設定で躓いた
- Zenn
- 参照 2024-11-16
TeX-style shebang
- http://emath.la.coocan.jp/
- tDB
- LaTeX 初等数学プリント作成マクロ emath
- LaTeX 初等数学プリント作成マクロ emath
- 参照 2024-11-16
- http://emath.s40.xrea.com/teisei.htm
- tDB
- 訂正版(lualatex 対応の emath)
- LaTeX 初等数学プリント作成マクロ emath
- 参照 2024-11-16
- https://zrbabbler.hatenablog.com/entry/20170730/1501402087
- ZR-TeXnobabbler
- LuaTeX が実はそんなに遅くないかも知れない件
- LuaTeX が実はそんなに遅くないかも知れない件
- 参照 2024-11-16
- https://qiita.com/munepi/items/a30c68133cfffbf4d189
- Munehiro Yamamoto
- TeXworks、TeXShop、VSCodeでTeX-style shebangしてみた
- Qiita
- 参照 2024-11-16
PDF タブビューワの色調
- https://qiita.com/Yarakashi_Kikohshi/items/a9357dd469320ffb65a0
- @Yarakashi_Kikohshi
- LaTeX Workshop を使いこなす
- Qiita
- 参照 2024-11-16
和文用設定
- https://qiita.com/Yarakashi_Kikohshi/items/cd823b4432cf23136285
- @Yarakashi_Kikohshi
- VSCode で和文を編集するときのオススメ設定
- Qiita
- 参照 2024-11-16
自作プリアンブルの取り扱い
- https://qiita.com/Yarakashi_Kikohshi/items/165d1180aa515655aebd
- @Yarakashi_Kikohshi
- LaTeX Workshop のインテリセンスをカスタマイズする
- Qiita
- 参照 2024-11-16
- https://qiita.com/take_me/items/c3cd95492ff88a7e43ee
- @take_me
- Latex-workshopにサポートされていないパッケージ(physics2)の補完を追加する
- Qiita
- 参照 2024-11-16