LaTeXをVScodeで使おうとしてもうまくいかない!という人へ
はじめに
この記事ではLaTeXをVScodeにて使う環境を整えようとするときにうまくいかない場合の列挙と,それらの考えられる対処を説明します.
自分は大学2年まではよくわからずTeXworksでLaTeXを使っていました.大学3年になってからどうやらVScodeのほうがいいらしいことに気づき導入したという具合です.しかしながらこれ,環境構築がなかなか難しいのです.10人いれば2億のエラーが出るといっても過言.それは過言だが,それくらい環境構築のハードルは高かったです.私の感想ですが.
また,よくありがちな躓きについてはVScodeの公式や他の方の記事などを見てください.聞いたことないなっていう失敗と,こうすれば直ったというのを簡単にまとめます.
そもそもLaTeXを使う前の謎の設定はなに?
本題に入る前に本題をスッと読めるようにLaTeXをVScodeで使う場合のコンピュータ内の仕組みを軽く説明します.自分もよくわかってないのでおざなりの説明でしょうけどね.
例えばGoogleでLaTeXをVScodeで使うことについて調べると以下の@rainbartown様の記事が出てきます.
大雑把に次の流れでLaTeXをVScodeで使えるようにするようです.
VScodeをパソコンにインストール
TeXliveをパソコンにインストール
LaTeX workshopのインストール
.latexmkrcの設定
jsonファイルの設定
LaTeXを使う
1,2はいいでしょう.3,4,5がナニコレ?という感じですよね.僕もそうでしたし今もよくわからんことがあります.
3のLaTeX workshopというのはVScodeの拡張機能でLaTeXの文書を作成する際の手助けなどをしてくれる便利なやつです.こいつがなくてもLaTeXは使えるでしょうが,あった方が明らかに便利です.例えば
LaTeXコマンドの予測変換
コマンドにカーソルを合わせた際の数式のプレビュー
コンパイラーの切り替え設定
とかそんなことをやってくれます.TeXworksでは多分こういうことはできても設定がもっとめんどくさい.
4の.latexmkrcと5のjsonファイルを一緒に説明します.そもそもLaTeXというのはマイクロソフトwordなどとは違ってプログラムのような命令文を記述することで文書を作成するためのものでした.そのプログラムはもちろん人間が打ちますから人間が分かりやすい見た目をしています.これを最後に「コンパイル」といってコンピュータに解析させ,最終的にPDFなどにするのでした.ここで,コンパイルをするシステムやその方法はたくさんあります.私もよくわかりませんがコンパイルをするシステムにも種類があるようです.この種類と方法を指定するのが.latexmkrcという謎のファイルです.1回のコンパイルの命令で何回連続でコンパイルするか,も指定できます.(実は2回コンパイルしないとうまくいかないことも文書によってはあり得るらしい.)そしてVScode側に.latexmkrcを読み込んでね,という命令を書いておくのがjsonファイルなわけです.この2つのどちらもうまく設定しないと失敗します.
失敗集とその対処集
1.コンパイルできない
まあこれが一番多いし,原因もたくさんあります.まず試すことは以下です.
\documentclass{jsarticle}
の部分を
\documentclass[uplatex, dvipdfmx]{jsarticle}
などと書き換えてみる.もしくはこれらのうち1個を[]内に書くとか.
これで直ることはあまりありません.次に確認すべきはjsonファイルです.VScodeの設定ということですね.ちなみにここの部分は私はこう書いてます.
{
// ===== Latex =====
// 使用パッケージのコマンドや環境の補完を有効にする
"latex-workshop.intellisense.package.enabled": true,
// ビルドのレシピ
"latex-workshop.latex.recipes": [
{
"name": "latexmk-uplatex",
"tools": [
"latexmk-uplatex"
]
}
],
// 生成ファイルを現在のディレクトリに吐き出す
"latex-workshop.latex.outDir": "",
// ビルドのレシピに使われるパーツ
"latex-workshop.latex.tools": [
{
"name": "latexmk-uplatex",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdfdvi",
"-outdir=%OUTDIR%",
"%DOCFILE%"
],
"env": {}
}
],
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
"code.cmd -r -g \"%f:%l\"",
"%PDF%"
],
"latex-workshop.latex.autoClean.run": "onBuilt",
"latex-workshop.latex.clean.fileTypes": [
"*.aux",
"*.bbl",
"*.blg",
"*.idx",
"*.ind",
"*.lof",
"*.lot",
"*.out",
"*.toc",
"*.acn",
"*.acr",
"*.alg",
"*.glg",
"*.glo",
"*.gls",
"*.ist",
"*.fls",
"*.log",
"*.fdb_latexmk",
"*.snm",
"*.nav",
"*.dvi",
"*.synctex.gz"
],
"workbench.editor.enablePreview": false,
"editor.formatOnSave": true,
"[latex]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "James-Yu.latex-workshop"
},
"latex-workshop.latexindent.path": "latexindent",
"latex-workshop.latexindent.args": [
"%TMPFILE%",
"-c=%DIR%/",
"-y=defaultIndent: '%INDENT%'"
],
"workbench.editorAssociations": {
"*.pdf": "latex-workshop-pdf-hook"
},
//これより下の設定は人それぞれかも
"latex-workshop.view.pdf.viewer": "tab",
"latex-workshop.chktex.enabled": false,
"latex-workshop.latex.autoBuild.run": "never",
"editor.minimap.enabled": false,
"window.zoomLevel": 0.2,
"grammarly.files.include": [
"**/readme.md",
"**/README.md",
"**/*.txt",
"**/*.tex"
],
"editor.wordWrap": "on",
"editor.unicodeHighlight.ambiguousCharacters": false
}
私はよくわかってないです.下の方の「//これより下の設定は人それぞれかも」以下のコードはコンパイルの成功失敗にはおそらく影響しません.コンパイル後にPDFを表示させるショートカットキーを押したらどこに表示されるか,とかウィンドウの大きさとかそんな設定しかありません.jsonファイルを書き換えたらCtrlを押しながらSのボタン(よくCtrl+Sとか書かれたりする.)を押して保存しましょう.
これを終えたらもう一度\documentclassの[]の部分を変えて失敗するか成功するか試しましょう.それでだめなら次は.latexmkrcの設定見直しです.まずこのファイルはWindowsの決まった場所に置く必要があります.場所は
C:\Users\(あなたが今使っているwindowsのアカウントに対応するフォルダ)
です.そして.latexmkrcは名前も決まっています.拡張子込みで「.latexmkrc」でなければなりません.よくあるミスとして,テキストファイルなどに張り付けてなまえを.latexmkrcにしている,つまりファイル名が拡張子も入れて「.latexmkrc.txt」となっている,というのがあります.これはミスです.拡張子を表示させて(やり方は調べてくれ~)拡張子「.latexmkrc」のファイルにするのです.ちなみに中身がぶっ壊れてる可能性がありますので私の「.latexmkrc」ファイルの中身を以下に貼り付けます.
#!/usr/bin/env perl
$latex = 'platex -synctex=1 -halt-on-error';
$latex_silent = 'platex -synctex=1 -halt-on-error -interaction=batchmode';
$bibtex = 'pbibtex';
$biber = 'biber --bblencoding=utf8 -u -U --output_safechars';
$dvipdf = 'dvipdfmx %O -o %D %S';
$makeindex = 'mendex %O -o %D %S';
$max_repeat = 10;
$pdf_mode = 3;
$pvc_view_file_via_temporary = 0;
$pdf_previewer = "open -ga /Applications/Skim.app";
途中の「$max_repeat = 10」の部分は1回のコンパイルをしろ,という命令で実際には何回コンパイルするか?その回数を指定できます.(なんでそんなことすんねん,という話は調べたら出てくるでしょう.相互参照が関係していることがほとんどです.気が向いたら説明します,よくわかってないけど.)多くても3回でだいたい正しいPDFができますが私は念のため10にしています.まあ5で十分でしょう.メモリ食っていいこともないですしね.
さて,ここで保存してもう一度VScodeに戻って\documentclassの[]を変えつつ試してみてください.
この時点でほとんどの人が成功しているはずです.
それでもだめなときはWindowsの言語設定を調べてみましょう.windowsの左下の窓のマーク押して設定に進んで言語の設定に進みます.そこに日本語がない場合,正しく動かないことがあります.日本語のパッケージを導入しましょう.コンパイルするシステムのうち「uplatex」というものは日本語専用のコンパイラなので日本語のパッケージをwindowsに入れとかないと正しく動かないことがあるようです.
これでもだめなら,最終手段ですね.TeXliveとVScodeを再インストールしましょう.時間かかるけど仕方ないですね.
2.VScodeのアクティビティバーにTeXが表示されない
アクティビティバーというのは既定だと左にあるこいつです.
ここにTeXが現れない場合は一旦気にせずVScodeでTeXファイルを作成してLaTeXを使ってみようとしてみてください.勝手に表れると思います.それでだめならちょっとわからん.
それでも失敗する場合
いろいろ試してもダメな場合は人に聞くのがいいでしょう.聞くは一時の恥といいますがそれも恥ではないですよ.
ということで私とかTwitterとかTeX Stack Exchangeとかに聞いてみるといいでしょう.今まで知られていなかったバグで発見をありがたがられるかもしれません.