[2020/04/12編集]
以前はsettings.jsonにコンパイルコマンドを一とおり書く内容でしたが、latexmkを使う方法に書き換えました。
はじめに
私の周辺で、Windows PCの細かいところまでは不慣れでLaTeX初めての人が、とりあえずVisual Studio Code (VSCode)でLaTeXを書けるようになるまでの手順を記します。
関連記事
上記の関連記事との主な違いは以下です。
- TeX Liveのインストール方法を、ISOファイルの一括ダウンロードにする
- (個人的な好みで)
- settings.jsonの設定を、latexmkを使うようにする
- settings.jsonをワークスペース単位で設定する
- 作る文章によってLaTeXのコンパイル方法を変えなきゃいけないことがあり、その場合はsetting.jsonを微修正&latexmkを大幅修正したほうがトータルで楽そうなので
- いちばん下の補足1に絡んで
-
uplatexを使用する
- (比較的新しい方法なので。uplatex以外についてはいちばん下の補足2を参照。)
想定環境
- Windows 10 1909
- ファイルの拡張子を表示する設定になっているものとします( https://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=017779 )
- TeX Live 2020 (20200406)
- TeX Liveではなく、(TeXインストーラ 3などを利用して)Win32TeXをインストールした場合、latexmkを利用するには別途Perlインタプリタが必要だそうです(参考: https://texwiki.texjp.org/?Latexmk )
- Visual Studio Code 1.44.0 (user setup)
- Pythonプログラミングなどを行う用途として、すでにインストール済みで、日本語化されているものとします。
- (VSCode + Pythonについては例えば https://qiita.com/surei/items/9f25d7efa7c67d55d98f が参考になります。)
- 以下、インストールの際の**「追加タスクの選択」で、全部に☑を入れている**前提でお話をします。
- LaTeXの場合、いくつかのファイル(.tex, .bib, 画像など)を用意したり、最終的にPDFができるまでに中間ファイルが吐かれたりするので、1つの文章は1つのフォルダー(ディレクトリ)単位(VSCodeのことばで言うとワークスペース単位)で管理したほうがよいです。なので、特に「エクスプローラーのディレクトリ コンテキスト メニューに[Code で開く] アクションを追加する」にはチェックを入れることをお勧めします。これは、対象とするフォルダを右クリックで指定してVSCodeで開くことができるようにするというものです。
- Pythonプログラミングなどを行う用途として、すでにインストール済みで、日本語化されているものとします。
- LaTeX Workshop 8.8.0
手順
TeX Liveをダウンロード&インストール
ダウンロード
全部入りのファイルをごっそりダウンロードします。
https://texwiki.texjp.org/?TeX%20Live%2FWindows
「Acquiring TeX Live as an ISO image」 → 「download from a nearby CTAN mirror」 → 「texlive2020-20200406.iso」
(※ 3.7GBほどあるので、しばらくお待ちください。)
インストール
「texlive2020-20200406.iso」をダブルクリック → 「install-tl-windows.bat」をダブルクリック → そのままポチポチ
(※ インストールに時間がかかるので、しばらくお待ちください。)
(インストールが終わったら、ISOファイルは削除してもよいです。が、ISOファイルをダブルクリックしたときに、そのファイルがD:とかE:などのドライブとしてマウントされているので、「PC」フォルダーで該当ドライブを右クリックして「取り出し(J)」をクリックしてからであれば、ISOファイルを削除できます。または、PCを再起動すれば、取り出しの作業なしにISOファイルを削除できるはずです。)
LaTeX WorkShopのインストール
VSCodeを立ち上げ → 拡張機能のアイコン(左はしにある□が4つのアイコン)をクリック → 「latex」と打つ → 「LaTeX WorkShop」の「インストール」をクリック → インストールが終わったらVSCodeをいったん「×」で閉じる
LaTeX文章の作成
文章フォルダー(ワークスペース)の作成
- これから中にLaTeX文章を作っていくフォルダーを作成
- フォルダーを右クリック → 「Code で開く」
ここで開いたフォルダー = 今回の作業の対象となるVSCodeのワークスペースのルートフォルダーとなります。
(ワークスペースのルートフォルダー)/.vscode/setting.jsonの生成と初期設定
-
https://blog-and-destroy.com/25199 を参考に、歯車アイコン → 設定 → ワークスペース → 右上のアイコンをクリック(→
(ワークスペースのルートフォルダー)/.vscode/setting.json
が生成されます)- 設定をクリックしたあと、デフォルトでは「ユーザー」が選択されているので、「ワークスペース」をクリックするのを忘れないでください。
-
settings.json
に最初から書いてある{}
を消して、以下をコピペ
{
"latex-workshop.latex.tools":
[
{
"name": "latexmk",
"command": "latexmk",
"args":
[
"-pdfdvi",
"%DOC%",
],
},
],
"latex-workshop.latex.recipes":
[
{
"name": "latexmk",
"tools":
[
"latexmk",
]
},
],
"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", "*.synctex.gz",
"_minted*", "*.nav", "*.snm", "*.vrb",
],
"latex-workshop.latex.autoClean.run": "onFailed",
"latex-workshop.latex.autoBuild.run": "onFileChange",
"latex-workshop.synctex.afterBuild.enabled": true,
"latex-workshop.view.pdf.viewer": "tab",
}
→ 「ファイル(F)」 → 「保存 Ctrl+S」
(ワークスペースのルートフォルダー)/.latexmkrcの作成
- 「ファイル(F)」 → 「新規ファイル Ctrl+N」をクリック
- 表示された未保存の空のファイル(
Untitled-1
などといった名前で表示される)に、以下をコピペ
#!/usr/bin/env perl
$latex = 'uplatex -synctex=1 -halt-on-error -interaction=nonstopmode -file-line-error';
$latex_silent = 'uplatex -synctex=1 -halt-on-error -interaction=nonstopmode -file-line-error';
$bibtex = 'upbibtex';
$dvipdf = 'dvipdfmx %O -o %D %S';
$max_repeat = 6;
$pdf_mode = 3;
$pvc_view_file_via_temporary = 0;
→ 「ファイル(F)」 → 「保存 Ctrl+S」 → .vscode
フォルダーから、ワークスペースのルートフォルダーに移動 → ファイルの種類(T)を「すべてのファイル (*.*)」 → ファイル名(N)を.latexmkrc
にして保存
文章の作成とコンパイル
- 「ファイル(F)」 → 「新規ファイル Ctrl+N」をクリック
- LaTeXの文章(例えば以下)を書く
\documentclass[uplatex, dvipdfmx]{jsarticle}
\begin{document}
数式をだしてみます:$Ax = b$。
\end{document}
→ 「ファイル(F)」 → 「保存 Ctrl+S」 → ワークスペースのルートフォルダーが選択されているか確認し、選択されていなければルートフォルダーに移動 → ファイルの種類(T)を「LaTeX (*.tex;*.ltx;*.ctx)」 → ファイル名(N)を(好きなファイル名).tex
にして保存
あとは、少し編集して保存するたびに、ワークスペースのルートフォルダーにPDFが生成されるはずです。VSCodeの右上のほうにある虫眼鏡のアイコンをクリックすると、VSCode内のPDFビューワーが起動して、生成されたPDFファイルが見られます。
補足1:参考文献アウトプットの細かい調整
論文誌や学会によっては、参考文献の書式を指定し、参考文献スタイルファイル(~.bst
)を提供しているところがあります。が、提供された参考文献スタイルファイルを使ってコンパイルしても、細かいところで指定の書式どおりの出力が得られない場合があります。
まあこれは提供側の問題なのですが、自分で直すとしたら、以下の手順でできます。
- まずは通常どおり、以下のように.bstを使ってコンパイルする
\bibliographystyle{~.bst}
\bibliography{./~~.bib}
- 作成された
~~.bbl
ファイルを、サブフォルダーに移動する -
~~.bbl
ファイルを編集する - 上記の
\biblio~
の2行をコメントアウトし、代わりに以下を書いてコンパイルする
\input{./(サブフォルダー名)/~~.bbl}
※ なぜ.bblファイルをサブフォルダーに移動しているかというと、settings.jsonで、コンパイルに失敗した場合はワークスペースのルートフォルダーにある.bblファイルを削除する設定にしているからです。
なお、settings.jsonに、latexmkではなくuplatex → upbibtex → uplatex → uplatexというコマンドの流れを書くやり方だと、このような手順で参考文献を微修正する際にsettings.jsonを書き換える必要がでてくると思いますす。そういう理由もあって、latexmkをお勧めしています。
余談ですが、.bstファイルをカスタマイズするのは、(少なくとも私には)難易度が高いので、お勧めしません。文法が逆ポーランド記法のようです。代わりに、↓の「jecon.bst」をカスタマイズするという手段があります。
http://shirotakeda.org/ja/tex-ja/jecon-ja.html
(私もお世話になりました。ありがたいです。)
補足2:uplatex以外の使用
上記のsettings.jsonと.latexmkrcの設定に基づくuplatex
でのコンパイルがうまくいかない場合があります。以下、考えられるケースと、対処の方向性はこうなんじゃないかなという推測をメモします。
-
国際的な論文誌・学会のスタイル|
pdflatex
使用が前提?-
pdflatex
は.texから(.dviを中間ファイルとして吐かずに)PDFを直接生成するので、settings.jsonの-pdfdvi
あたりのオプションの記述の変更が必要? - .latexmkrcも、
pdflatex
を使うように記述の変更が必要? - .texファイルで、\documentclassから
uplatex, dvipdfmx
を削除
-
-
日本の(過去との互換性を考えた)論文誌・学会のスタイル|
platex
が前提?- .latexmkrcで、
platex
を使うように記述の変更が必要? - .texファイルで、\documentclassから
uplatex
を削除
- .latexmkrcで、
https://texwiki.texjp.org/?Latexmk がたいへん参考になります。最初からこのページのとおりに設定ファイルを記述しとけばよいのに…という話もありますが、この記事は不慣れな人がとりあえずVSCodeでLaTeXをコンパイルできるようになるのが目標なので、設定ファイルの記述もできるだけ少ないほうがよいと思いました。
感想
2020/04/12に記事をまとめ直してみましたが、相変わらずLaTeXの環境構築は敷居が高いですね。もっと簡単な方法があれば指摘ください。
クラウドサービス上で書ける(La)TeXもあるんですが、細かい設定ができないので、やはりローカルにイチから環境構築が必よ…あっ今はDockerがあるのか……