こんにちは。9月中旬にも関わらず今月初投稿になってしまったRockinWoolです。
ここ最近は富士山登山やピアノの発表会など、休職期間を活かして普段はできないことに全力を注いでました。病院から処方される睡眠導入剤?との相性がすこぶる良いようで、かなりの悩みごとがあっても寝れるようになったことが大きいですね。かつての上司によって傷んだ部分が少しずつ良くなって集中力も改善されたように感じます。
さて、今回はその勢いでVSCode+LaTeXをUbuntuに導入した備忘録をまとめてみました。私のようにPCを頻繁に分解して初期化する輩にとってLaTeXは毎回どうやって入れたのか思い出すが難しいソフトです。最近はVSCodeに良い拡張があるとのことでしたので、これをうまく活用してやって行こうと思います。
Contents
TeXLiveのインストール
LaTeXはそもそもコンパイル環境がなければ使えません。ということで、まずはTeXLiveをインストールします。下記コマンドでダウンロードと解凍までやりましょう。
wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
zcat install-tl-unx.tar.gz | tar xf -
cd install-tl*
無事にインストーラが解凍できたら下記コマンドでインストールができます。インストール完了後にターミナルにてPATHの追加を求められるので、exportで追加しておきましょう。.bashrcに追記することも忘れずに。今回はPATHは私の環境での値を書いていますので、皆さんの場合は画面を見ながら指示にしたがってほしいです。
sudo perl ./install-tl --scheme=small --no-interaction
export PATH=$PATH:/usr/local/texlive/2023/bin/x86_64-linux
ちなみにこの後sudo権限でインストールしたコマンドを使うタイミングがあるのでvisudoでsecurity_pathにも`/usr/local/texlive/2023/bin/x86_64-linux`を追加しておく必要があります。
日本語対応ライブラリのインストール
無事にPATHが追加できたら下記コマンドで必要なライブラリを追加インストールします。これでTeX環境が日本語に対応することになります。
sudo tlmgr install collection-langjapanese collection-langcjk
ここでの注意点はsudo権限を使ってのインストールであることです。security_pathにパスを追加していないとここでヘタることになります。
LaTeX-Workshopの導入
ここからはVSCodeでの作業になります。VSCodeの左側にある拡張機能ボタンからLaTeX Workshopを探してインストールします。その後、VSCodeの左下にある設定歯車から設定を選択して、latex-workshop.latex.recipesと検索します。settings.jsonで編集すると出てくるので、latex-workshop.latex.recipesの部分を下記で上書きします。settings.jsonには他の拡張の情報も乗っているので、あくまで該当部分の上書きに留めてください。ちなみにこの情報源はTeXwiki様です。年々アップデートされているようですので、失敗したら最新版を追うことをおすすめします。
“latex-workshop.latex.recipes”: [ { “name”: “ptex2pdf”, “tools”: [ “ptex2pdf”, ] } ], “latex-workshop.latex.tools”: [ { “name”: “ptex2pdf”, “command”: “ptex2pdf”, “args”: [ “-u”, “-l”, “-ot”, “-kanji=utf8 -synctex=1 -interaction=nonstopmode -file-line-error”, “%DOC%” ] } ]
すべてが完了したら.texファイルをctrl+sでセーブするごとにビルドが走ってpdfが生成されるようになります。ヤッター。
エラー対処法
さて、LaTeX初心者、ひいてはTeXLive初心者である私はもう少しインストールに苦労しました。というより、.texの自動ビルドがうまく行かずに止まることが何度かありました。覚えている範囲で対処法をメモしておきます。
自動ビルドが走らない
まずこの現象に遭遇したら、エラーの切り分けを試みてください。主に下記3つの可能性があります。
- TeXLiveのインストールに失敗している
- .texの書き方が悪く、ビルドに失敗している
- settings.jsonの記載内容に間違いがあり失敗している
このとき、まずは上から対応することを心がけましょう。これは持論ですが、VSCodeのような自動化ツールは、その大本となるツールがバグっていれば当然正しい挙動をしてくれません。つまりは根本の方を優先して調査したほうが早く解答にたどり着くわけです。これは自戒を込めて強調しておきます。
さて、まずはTeXLiveの動作確認をしましょう。LaTeX, サンプルみたいに検索して出てきた適当なサンプルコードをptex2pdfでビルドできるか確かめてください。このとき、ptex2pdfが見つからなければ何らかのインストールエラーまたはPATHの設定ミスがあり得ます。逆にptex2pdfが動作するにも関わらず途中で止まる場合は.texの書き方が悪い可能性があります。エラーメッセージを調べると良いでしょう。私はサンプルコードを手動でビルドすることができたのですが、このときにサンプルコードの日本語指定が私の環境と異なっていたため、インタラクションを必要としてました。なのでVSCodeの自動化が途中で止まってしまったわけです(settings.json内に-interaction=nonstopmodeを記述しているため、この場合はエラーで止まる)。無事日本語の設定を直せばビルドに成功するようになりました。
PDFがVSCodeで見れない
VSCodeでPDFを見ようとすると’ServiceWorker: The document is in an invalid state’と表示されて見れない現象が発生しました。エラー文を読んだりGithubのissueを読む限り2つの事象が関連しているようです。
- VSCodeのバージョンが古くweb-viewのバグが治っていない
- vscode-pdfとlatex-workshopの相性が良くないため競合する
おすすめの方法はvscode-pdfを無効化しVSCodeを最新版にすることです。ただし、結構根が深い問題らしく、これでも時々動作しない場合があります。海外ニキも結構Issueを投げている話題なので、そのうちに改善されるのを待つのが良さそうです。
あとがき
今回はUbuntu22.04にVSCodeとLaTeXを連携させて使えるようにしました。バグが発生した際は慌てずに、まず自分が他の人と異なった設定を行った場所を重点的に調べることが大切ですね。自責を忘れずに頑張りたいものです。それではここまで読んでくださってありがとうございました。