概要
WSL2 上に LaTeX を導入し,VS Code で編集できるようになるまでの手順をまとめました.
- 最終目標を達成するまでの所要時間:1時間
- 実行環境:Windows 11
- LaTeX のドキュメントクラス:platex, uplatex
なお,WSL2 の LaTeX は Windows よりも高速で動くようです
WSL2 のインストール方法については以下の記事をご覧ください.
目次
- LaTeX のインストール
- VS Code 拡張機能のインストール
- これからの流れ
- 作業1. latexmkrc の作成
- 作業2. LaTeX Workshop の tool と reccipe の設定
1. LaTeX のインストール
Ubuntu を起動後,sudo apt install texlive-full と入力してインストールを開始します.
sudo apt install texlive-full
結構重いので,30分くらい掛かります.
2. VS Code 拡張機能のインストール
- VS Code を開いて,次の二つの拡張機能をインストールします
- Japanese Language Pack for Visual Studio Code
- WSL
- 一度 VS Code を閉じて,再度開きます (再起動)
- 拡張機能の下にある「リモート エクスプローラー」をクリックします
- テレビのようなマークです
- 拡張機能 WSL をインストールしたことで表示されるようになります
- Ubuntu を選択し,「現在のウィンドウで接続する」もしくは「新しいウィンドウで接続する」のどちらかを実行します
- リモート接続できたら,その画面から次の拡張機能をインストールします
- LaTeX Workshop
- 拡張機能のインストールが完了したら,左下の「WSL: Ubuntu」をクリックして,「リモート接続を終了する」を実行してください
- 以上で下準備が完了したので,VS Code を一度閉じてください
必ずリモート接続した状態で LaTeX Workshop をインストールしてください.
リモート接続していない場合としている場合では,VS Code の拡張機能が異なるので注意してください.
3. これからの流れ
ここから先は基本的にコピペ作業になるので,先に全体の流れを確認しておきます.
そもそも最終目標は「VS Code 上で LaTeX ソースを PDF 化すること」です.
このために,必要な作業を次のように分割します.
- LaTeX ソースから PDF を作成する操作を自動化する
- 上の作業を VS Code 上で実現する
作業1.LaTeX ソースから PDF を作成する操作を自動化する
五月雨式に重要事項を書きます.
- 通常,LaTeX ソースを PDF 化する流れは次の通りです
TeX ファイル > DVI ファイル > PDF ファイル ( '>' はコンパイルを意味します) - つまり,複数回のコンパイルが必要となります
- これを自動化してくれるコマンドが
latexmkです -
latexmkの設定は.latexmkrcに書きます -
.latexmkrcにはビルドの方法やコンパイルオプションなどを書きます - 利便性から
.latexmkrcは~/.latexmkrcに置きます
従って,作業1では .latexmkrc を適切に設置することが目標となります.
DVI (device-independent) ファイルには,整形された文書イメージがバイナリー形式で書かれます.これはマシンに非依存な形式として書かれるそうです.
作業2.作業1を VS Code 上で実現する
上記から,作業2では VS Code 上で .latexmkrc を実行するための環境整備を行います.
同じく,五月雨式に重要事項を書きます.
- LaTeX Workshop により
latexmkが VS Code 上で適切に実行されます - LaTeX Workshop では tool と recipe という概念で実行環境を制御します
- tool には実行コマンドを書き,recipe には 実際に使う tool の組み合わせを書きます
- tool と recipe には,それぞれ name と command という引数が用意されています
- tool の name には識別ラベルを,command には
latexmkを書きます
識別ラベルは,upLaTex や LuaLaTeX などでコンパイル条件を変更する場合に役立ちます - recipe の name には「使う tool の name」を,commad には識別ラベルを書きます
この場合のラベルは,LaTeX Workshop で recipe を選択するのに使います - LaTeX Workshop のデフォルト設定では,最初に書かれた recipe が適用されます
従って,作業2では LaTeX Workshop の tool と recipe を設定することが目標となります.
使用する LaTeX 形式が一種類なら,tool と recipe に一つずつ登録すれば OK です.
私は upLaTeX 一筋の人間なので,これに該当します.
4. 【作業1】latexmkrc の作成
- Ubuntu を起動させます
-
cd /home/ユーザー名もしくはcd ~と入力して,作業用ディレクトリに移動します -
vim .latexmkrcと入力し.latexmkrcを作成します -
iと入力して,書き込みモードにします - 以下の
.latexmkrcをコピペ後,escを押し:wqを入力して終了します - 念のため,
cat .latexmkrcで確認しましょう
#!/usr/bin/env perl
$latex = 'uplatex -synctex=1 -interaction=nonstopmode -file-line-error %O %S';
$bibtex = 'pbibtex %O %S';
$makeindex = 'mendex %O %S';
$dvipdf = 'dvipdfmx %O %S';
$pdf_mode = 3;
$max_repeat = 5;
$pvc_view_file_via_temporary = 0;
$pdf_previewer = 'wsl-open %S'
中身の説明
- 1行目の
#!/usr/bin/env perlでは,インタプリタを指定しています-
perlとすることで,登録している PATH から自動で選択されるようになります
-
-
$latexで,LaTeX ソースから DVI ファイルを出力します-
uplatexの部分には,platexかuplatexを書いてください
その他の LaTeX エンジンの書き方は後述の参考文献を確認してください -
-の付いた部分はコンパイルオプションで,ここでは以下を用意しました-
-synctex=1: LaTeX の編集画面と PDF 画面の相互参照を有効にする -
-interaction=nonstopmode: エラーが出てもコンパイルを中断せずに続ける -
-file-line-error: エラー表示にファイル名と行番号を表示させる
-
-
%Oにはその他のコンパイルオプションが代入されます -
%Sは入力ファイル名 (DVI ファイル) が代入されます
-
-
$bibtexは bibtex の設定でpbibtexを使用します -
$makeindexは index の設定でmendexを使用します -
$dvipdfで,DVI ファイルから PDF ファイルを出力します -
$pdf_modeで PDF の作成方法を指定します- 0:
$latexにより DVI のみを出力 (PDF は出力せず) - 1:
pdflatexにより DVI を経由せず PDF を作成 - 2:
latexにより DVI を生成後,$dvipsで PS を生成し$ps2pdfで PDF を作成 - 3:
latexにより DVI を生成し,$dvipdfにより PDF を作成
- 0:
-
$max_repeatでコンパイル回数の上限を指定します
-
$pvc_view_file_via_temporary=0で前回の出力ファイルに上書きするようにしています- デフォルトでは,古い出力ファイルが毎回保存され,一定数に達すると古いものから順に削除されていきます
-
$pdf_previewer = "wsl-open %S"で PDF プレビュー を行うプログラムを指定しています- 本来の Linux なら
xdg-openでファイルを開くため,"xdg-open %S"とします - 一方,WSL2 では
xdg-openの代わりに,wsl-openを使用します - 後ほど,設定方法を紹介します
- 本来の Linux なら
.latexmkrc の作成には,以下の記事を参考にさせて頂きました.
upLaTeX や pLaTeX 以外の TeX エンジンを使う場合は適宜参照してください.
4-1. WSL2 を使って PDF や html を開くための準備
デフォルトの WSL2 では PDF や html を開くことが出来ません.
そこで,これらの実行環境を整備しておきましょう.
VS Code では PDF ビューワーが付いているので,この機能は使いません
以下の記事を参考にさせて頂きました.
- Ubuntu を起動させます
-
sudo apt install npmを実行します (所要時間1分) -
sudo apt updateを実行します -
sudo npm install -g wsl-openを実行します
これで準備が完了しました.
wsl-open 開きたいファイル または 'リンク' とすれば,Windows 側で登録しているブラウザが起動します.
4-2. WSL2 で LaTeX を動かしてみる
WSL2 を使って LaTeX が動くようになったはずなのでテストしてみましょう.
- Ubuntu を起動させます
-
cd /home/ユーザー名もしくはcd ~で,作業用ディレクトリに移動します -
mkdir testで test という名前のディレクトリを作成します -
cd testで作成した test ディレクトリに移動します -
vim sample.texを実行して,sample という名前の TeX ソースを作成します -
iを押して書き込みモードとし,以下のupLaTeX templateをコピペします -
escを押し:wqを入力して保存しましょう -
latexmk sample.texを実行すると,コンパイルが自動で行われ,PDF が作成されます - 試しに
lsを実行して確認しましょう >>sample.pdfがどこかにあれば成功です -
wsl-open sample.pdfを実行すると,PDF が見られるはずです
\documentclass[11pt,a4paper,uplatex]{jsarticle}
\begin{document}
\title{\LaTeX の書き方}
\author{名前}
\maketitle
\section{見出し}
見出し部分は勝手に番号が付きます.
\subsection{小見出し}
小見出しも同様です.数式は$E=mc^{2}$のように書くか
\begin{equation}
E=mc^{2}
\end{equation}
と書きます.
\end{document}
5. 【作業2】LaTeX Workshop の tool と reccipe の設定
- VS Code を開いて,リモートエクスプローラーから Ubuntu を起動します
- 拡張機能から LaTeX Workshop を探します
- 管理 (⚙マーク) をクリックし,「拡張機能の設定」を選択します
- 右上の「設定(JSON)を開く」(紙マーク) をクリックして,setting.json ファイルを開きます
- 一番最後の
}の前に以下latex_tool_recipeをコピペしてください
※ インデントは一つ下に設定します - VS Code を再起動します
"latex-workshop.latex.tools": [
{
"name": "latexmk-uplatex-tool",
"command": "latexmk",
"args": [
"-outdir=%OUTDIR%",
"%DOC%"
],
},
],
"latex-workshop.latex.recipes": [
{
"name": "latexmk for uplatex",
"tools": [
"latexmk-uplatex-tool"
],
},
],
setting.json ファイルに元々書いてあるものは消さないでください
中身の説明
-
toolsは"name","command","args"から構成されます-
"name": tool の名前 (任意に設定可) -
"command": コマンドlatexmkを実行 -
"args": 引数を指定-
"%DOC%": LaTeX ソースの PATH が代入される -
"-outdir=%OUTDIR%": LaTeX ソース と同じディレクトリに DVI と PDF の出力
-
-
-
recipesは"name","tools"から構成されます-
"name": recipe の名前 (任意に設定可) -
"tools": 使う tools の名前を記述
-
5-1. 【ゴール】LaTeX を VS Code で編集する
以上で準備は全て整いました.試しに,先ほど作った sample.tex を編集してみます.
- VS Code を開いて,リモートエクスプローラーから Ubuntu を起動します
- 左上の「エクスプローラー」から「フォルダーを開く」を選択します
- 先ほど作った test ディレクトリがあるはずなので,これを選択します
- ディレクトリが開けたら,sample.tex をクリックして編集画面を開きます
- 右上の「View LaTeX PDF file」ボタンをクリックすると,PDF が表示されます
- 試しに,TeX ソースのどこかを編集して,
ctrl + sを押してください - PDF が変更されれば OK です
なお,VS Code の LaTeX Workshop には,以下のコマンドが用意されています.
-
ctrl + s: 保存 + コンパイル -
ctrl + alt + v: PDF ビューワーの起動 - PDF 上で
ctrl + クリック: TeX ソースの該当箇所を表示 - TeX 上で
ctrl + alt + j: PDF の該当箇所を表示
5-2. (おまけ) WSL2 の LaTeX にフォントを追加する
WSL2 は Windows に登録されたフォントを引用できないので,LaTeX でこだわりのフォントを使いたい場合はひと手間必要です.本記事の最後に,WSL2 の LaTeX で任意のフォントを使う方法を紹介します.
こちらの記事を参考にさせて頂きました.
前提
- 使いたいフォントが Windows 側にインストールされている
Windows に登録されているフォントの在処は c/Windows/fonts 以下です.
一方,WSL2 では /usr/share/fonts/truetype 以下となります.
方法
以下の例では BIZ-UDMinchoM.ttc というフォントを LaTeX に導入します.
- Ubuntu を起動します
-
fc-list 'BIZ-UDMinchoM.ttc'を実行し,WSL2上にフォントがあるか確認します
※ 未登録な場合は応答がありません - 以下を実行し,Windows のフォントを WSL2 にコピーします
Ubuntu
sudo cp /mnt/c/Windows/fonts/BIZ-UDMinchoM.ttc /usr/share/fonts/truetype - LaTeX ソースのプリアンブルに
\usepackage[noalphabet]{pxchfon}というパッケージを追加し,\setminchofont[0]{BIZ-UDMinchoM.ttc}を追加すれば OK です
\documentclass[11pt,a4paper,uplatex]{jsarticle}
\usepackage[noalphabet]{pxchfon}
\setminchofont[0]{BIZ-UDMinchoM.ttc}
\begin{document}
\title{\LaTeX の書き方}
\author{名前}
\maketitle
\section{見出し}
見出し部分は勝手に番号が付きます.
\subsection{小見出し}
小見出しも同様です.数式は$E=mc^{2}$のように書くか
\begin{equation}
E=mc^{2}
\end{equation}
と書きます.
\end{document}
まとめ
WSL2 上にインストールされた LaTex を VS Code で編集できるようになるまでの手順をまとめました.編集する際は「リモートエクスプローラー」を忘れずに起動してくださいね.
また,WSL2 上に Python やFortran の実行環境を構築する方法をまとめた記事も書いておりますので,興味のある方はご覧ください.
参考文献
- (公式) WSL2
- (公式) LaTeX
- (公式) Visual Studio Code
- WSL2のLaTeXは速い (Qiita @moinslut)
- TEX Wiki LaTeX
- Latexmkから学ぶPDF化までの処理の流れ (Qiita @Rumisbern)
- VSCode で最高の LaTeX 環境を作る (Qiita @rainbartown)
- VS CodeでLaTeX環境を構築する
- [初心者]LaTeXのインストールから使い方までこれ一本! (Qiita @alpaca-honke)
- latexmkの設定
- wsl-open:WSL で xdg-open する (Neo's World)
- Linux フォント関連コマンドまとめ (Qiita @aosho235)
- WSL上のXサーバで、Windows 10にインストールされているフォントを利用する (Tech TIPS)