なぜWSL2?
Windows10にTeXを直乗せして動かしたくせない理由として,vscodeの拡張機能であるlatex workshopからtexに備わる一括コンパイル機能であるlatexmkを最優先に使用したいのに,その手法がwindowsと致命的に相性が悪いことが挙げられます.
ご存知の通りにwindowsのパスの区切りはバックスラッシュ(円記号)ですが,macOSやLinuxと同じ設定のままlatex workshopからlatexmkを起爆すると,なぜかtex関係ファイルの絶対パスがスラッシュ/
とバックスラッシュ\
が入り混ざったものとして生成されてしまい,ただちにundefined control sequence
やI can't find file
コでンパイルエラーを吐かれてしまいます.
どこに原因があるか詳しくはわかりませんが,vscodeで開いているルートフォルダの直前にだけ\
が入っているならまだしも,それ以外の場所にも\
が入っていたりするために,個人的にはこの問題の解決のためだけに労力を割くのは面倒だと思いました.
現状ではUNIXやLinuxのパス表記が圧倒的に正義である(とても強い主張)以上は,OSも拡張機能もデフォルトでパス表記に/
を使う認識が共有されているmacOSもしくはLinuxを常に使用することこそ非常に正しい選択肢であり,マシンリソースが十分にあるならばWSL2の採用を検討すべきでしょう.マルチプラットフォームな作業を目指すなら,尚更にPowerShellを含めたWindowsのデフォルト環境を直ちに捨てることこそが,余計な労力を減らすことに繋がります.ここではそのやり方についてメモをしていきたいと思います.
PowerShellの導入
これがないと話になりません,絶対に必要なので速やかに導入しましょう.
WSL2の導入
頻繁に更新されているらしいので,バージョン違いは気をつけましょう.これは2021年12月における最新の情報のはずです.
OSアップグレードと導入
現行最新版のWindows10 21H2ならWSL2が簡単に利用できます.WSLと比べて処理性能が格段に向上しているため,直ちにアップグレードして簡単なWSL2の導入環境を整えましょう.幾らか古い版でも導入こそできますが,マニュアルを見つつ行う手動でのインストールは非常にダルい上に下らないミスを誘発しかねませんので,やめた方がお得です.
Window11ならデフォルトでOKです,その後は以下の手順に従います.
種類は主にUbuntu・Debian・KaliLinuxですが,特に需要がなければ素直にUbuntuで良いでしょう.
お互いのファイルを参照するには
例えばWindowsからWSLもしくはWSLからWindowsでファイルを交換したい場合,Windowsから見て
\\wsl$\<環境の名前>
がWSLのルートディレクトリであり(ネットワークドライブ),その逆にLinuxから見て
/mnt/c
がcドライブになります(他のドライブも同様)(マウントドライブ).
環境(ディストリビューション)の複製
WSL2では動作環境をtarしながらexport
もしくはimport
することができます.基本的にパッケージ扱いであるため,C:\Users\<ユーザーの名前>\AppData\Local\Packages
の中に紛れ込んでいるのですが,これを行えばバージョン管理や環境保全ができます.そのためには以下を参考にします.
前者ではDockerのimageからLinuxを叩き起こしそれを吸い取るやり方が載ってますが,Windowsから供給されるバージョンでよければ無視して良いです.Dockerの導入は以下を参照してください(必ずwsl2を設定し終わってからやりましょう,すると\\wsl$\
にDocker系が入ってきてくれます).
この記事においては本質ではないのでパスします.より難しいことは以下を読みましょう.
ディストリビューションの実体
デフォルトでは
C:\Users\<ユーザーの名前>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuWindows_<謎のハッシュ値>\LocalState\ext4.vhdx C:\Users\<ユーザーの名前>\AppData\Local\Packages\KaliLinux.<謎のハッシュ値>\LocalState\ext4.vhdx C:\Users\<ユーザーの名前>\AppData\Local\Packages\TheDebianProject.DebianGNULinux_<謎のハッシュ値>\LocalState\ext4.vhdx
にありますが,前述したexport
およびimport
を行い丸ごとdドライブに移行することも可能です.
zshの導入
Ubuntuを適切に導入した場合のシェルはおそらくbash
ですが,より新しく多機能なzsh
をお勧めします.そのためにはまずsudo apt
でUbuntuをアップデートしてからzsh
を入れます.
sudo apt update sudo apt upgrade sudo apt install zsh sudo chsh -s $(which zsh)
必要な依存パッケージがインストールされるかと思いますが,上手くいけば
echo $SHELL #->zsh?
が得られます.この後で~/.zprofile
や~/.zshrc
を作成しても構いません.
それぞれの役割
前者はログインシェルの起動時に読み込まれ,後者はそれに加えてインタラクティブシェルの起動時に読み込まれます.これは後述しますが,パス設定は後者に行う方が良いでしょう.
texをダウンロード
まずはmacOSに倣って~/Downloads
を作成しましょう.そこに移動したら次に
curl -O http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet/install-tl-unx.tar.gz
で一式を落とします.
余力があればで良いですが,こういたデフォルトのツールも古めだと思われるので,macOSに倣ってhomebrew
を導入し完全なパッケージの管理体制を整えましょう.
sudo apt-get install build-essential procps curl file git /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
texのインストール
先ほどのファイルを
tar -xvf install-tl-unx.tar.gz
で解凍し,install-tlがある位置に移動します.次に
sudo ./install-tl --repository http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet
でインストールを実行します.
この際にインストールオプションを聞かれますが,とりあえずはフルセットで導入しても構いません.またインストールには時間がそこそこかかります,もし失敗した際は設定したオプションを使い回す
--profile installation.profile
をコマンドに追加して繰り返し挑戦してみましょう.
GUIは必要か
wslでguiが使えるwslgなるプラグインこそあるそうですが,windows10の21H2のwsl2ですら現状では使えていません(windows11のデベロッパ向けのinsider previewでのみ使えるようです).
texの組版においてguiを使う場面があるとすれば生成したpdfを見る時くらいですが,それは前述した方法でファイルにアクセスすれば良いので,ぶっちゃけコマンドさえあればOKです.
パスを通す
現状ではzshにパスが通っていない上にmacOSのように便利なシンボリックリンクも作られていませんので,vscodeの拡張機能は実行ファイルを見つけられません.そのためmacOSに倣って以下の手順でパスを通します.デフォルトでは\usr\local\texlive\2021\bin\x86_64-linux
にあります.
シンボリックリンクの作成
まず/Library/TeX/bin
を作成し(sudo
が必要です),そこに/usr/local/texlive/[]/bin/x86_64-linux
をリンクします.これはわかりやすいようにディレクトリ名を揃えていますが,お好みで構いません.
sudo ln -s /usr/local/texlive/<バージョン年度>/bin/x86_64-linux /Library/TeX/bin/x86_64-linux
もしバージョンが変わった場合は適宜に年度を変更してリンクし直しましょう,ちなみにmac texではデフォルトでこの作業をやってくれます(なのでhomebrewとの食い合わせがよろしくないですね).
パスを作成する
~/.zshrc
の最後にこの場所を書き加えます,これよりも上位の設定ファイルは弄らない方が吉です,手動でやらない場合でも以下を行えば結構です.
echo 'export PATH="/Library/TeX/bin/x86_64-linux":$PATH' >> ~/.zshrc
念の為にwhich latexmk
で見つかるかどうかを確認しておきましょう.
vscodeを導入そして設定
microsoft謹製のvscodeならデフォルトでwsl2の中を扱えます,以下を参考に導入しましょう.
この時点でubuntuが立ち上がり次第で自由にファイルの編集が行えるだろうと思われます.
gitとlatexmkを設定
ここから先はwsl2に限らない汎用な設定になりますので,以下を参照してください.
私の環境ではmacOSに倣った設定を流用して特に問題はありませんでした,すなわちvscode
の設定ファイルを同期させても問題が起きないため,wsl2を使用する恩恵が受けられるというものです.