Visual Studio Code > LaTeX



LaTeX 環境の整備

Visual Studio Code 上で LaTeX の統合環境を構築する拡張機能(extension)としては LaTeX Workshop や CaTeX(軽鳥/怪鳥)などがあります。高機能でもっとも普及しているのは James Yu 氏による LaTeX Workshop です。

左端のアクティビティバーから拡張機能をクリックし,検索フィールドに latex と入力すれば関連拡張機能の一覧が示されます。そこから適切な拡張機能をインストールします。(好みにより Japanese Language Pack for VS Code を導入することもできます。)

LaTeX Workshop と CaTeX の併用

CaTeX は LaTeX Workshop と共に使うことを想定し,LaTeX Workshop にない機能を追加します。ギリシア文字補完,イメージ補完,フォント補完の機能をもつほか,Ctrl-c s と入力することで「セクション」「環境」「\maketitle」「{\Large }」のタイプの補完が可能となります。また,CaTeX では自作コマンドの補完をその場で辞書登録する機能も搭載しています。一方,LaTeX Workshop の数式の「@補完」とかぶるところもあり,併用すると「@補完」はやや使いにくくなります。

LaTeX Workshop

LaTeX Workshop は Visual Studio Code に LaTeX の統合環境を追加する extension です。入力支援,複数のコンパイル設定の使い分け,マウスを合わせたときの数式や引用のプレビューやパッケージのドキュメントの表示,などの機能があります。

各種設定

(VS Code の機能)

Ctrl+Comma (Cmd+Comma) で「設定(Settings)」 タブを開きます。「設定の検索」フィールドに適切な用語を入力して必要な設定を絞り込むことができます。「settings.json で編集」をクリックすると「ユーザー設定(settings.json)」が開きます。初回は{}しか記述されていない画面が開きますので,その{}内に各種設定を書きこみます。

「ユーザー設定(settings.json)」は「既定の設定(defaultSettings.json)」に優先します。「既定の設定」を確認するには,Ctrl+shift+P (Cmd+shift+P)から default を検索すると見つかります。

コンパイルのデフォルト設定

文書コンパイル時,LaTeX Workshop は設定された recipe にしたがって一連のコマンド(tool)を順次実行します。

デフォルトでは,latexmk と pdflatex ➞ bibtex ➞ pdflatex×2 の2種類の recipe が定義されています。(defaultSettings.json に記述されています。)

"latex-workshop.latex.recipes": [
{
	"name": "latexmk 🔃",
	"tools": [
	"latexmk"
	]
},
{
	"name": "pdflatex ➞ bibtex ➞ pdflatex × 2",
	"tools": [
	"pdflatex",
	"bibtex",
	"pdflatex",
	"pdflatex"
	]
}
]

recipe 内の tools で指定されている tool は latex-workshop.latex.tools で設定されている必要があります。「既定の設定(defaultSettings.json)」では以下のように設定されています。

"latex-workshop.latex.tools": [
{
	"name": "latexmk",
	"command": "latexmk",
	"args": [
	 "-synctex=1",
	 "-interaction=nonstopmode",
	 "-file-line-error",
	 "-pdf",
	 "%DOC%"
	]
},
{
	"name": "pdflatex",
	"command": "pdflatex",
	"args": [
	 "-synctex=1",
	 "-interaction=nonstopmode",
	 "-file-line-error",
	 "%DOC%"
	]
},
{
	"name": "bibtex",
	"command": "bibtex",
	"args": [
	 "%DOCFILE%"
	]
}
]

どのような recipe があるかは .tex ファイルを開いているときに示されるアクティビティバーのTeXアイコンからサイドバーを開いて確認できます。複数の recipe が設定されていればそれを選択することでそれぞれの設定でのコンパイルが可能になります。(複数の recipe が用意されているとき,デフォルトでは最初の recipe が実行されます。)

recipe/tool を日本語文書用に設定

Ctrl+Comma (Cmd+Comma) で Settings タブを開きます。 「設定の検索」で「Tools」を入力して「Latex-workshop > Latex: Tools」を探し「settings.json で編集」をクリックします。 左側に既定の設定(defaultSettings.json),右側にユーザー設定 (settings.json) が開かれます。

Windows で Latexmk-upLaTeX を使用する場合は右側に表示されている settings.json の {} の中に以下の設定を追加・保存して既定のユーザー設定を上書きします。

"latex-workshop.latex.tools": [
{
	"name": "latexmk",
	"command": "latexmk",
	"args": [
	 "-e",
	 "$latex=q/uplatex %O -kanji=utf8 -no-guess-input-enc -synctex=1 -interaction=nonstopmode -file-line-error %S/",
	 "-e",
	 "$bibtex=q/upbibtex %O %B/",
	 "-e",
	 "$biber=q/biber %O --bblencoding=utf8 -u -U --output_safechars %B/",
	 "-e",
	 "$makeindex=q/upmendex %O -o %D %S/",
	 "-e",
	 "$dvipdf=q/dvipdfmx %O -o %D %S/",
	 "-norc",
	 "-pdfdvi",
	 "%DOC%"
	]
}
]

Windows で Latexmk-LuaLaTeX を使用する場合は右側に表示されている settings.json の {} の中に以下の設定を追加・保存して既定のユーザー設定を上書きします。

"latex-workshop.latex.tools": [
{
	"name": "latexmk",
	"command": "latexmk",
	"args": [
	 "-e",
	 "$lualatex=q/lualatex %O -synctex=1 -interaction=nonstopmode -file-line-error %S/",
	 "-e",
	 "$bibtex=q/upbibtex %O %B/",
	 "-e",
	 "$biber=q/biber %O --bblencoding=utf8 -u -U --output_safechars %B/",
	 "-e",
	 "$makeindex=q/upmendex %O -o %D %S/",
	 "-norc",
	 "-pdflua",
	 "%DOC%"
	]
}
]

macOS, Linux で Latexmk-upLaTeX を使用する場合は右側に表示されている settings.json の {} の中に以下の設定を追加・保存して既定のユーザー設定を上書きします。

"latex-workshop.latex.tools": [
{
	"name": "latexmk",
	"command": "latexmk",
	"args": [
	 "-e",
	 "$latex=q/uplatex %O -synctex=1 -interaction=nonstopmode -file-line-error %S/",
	 "-e",
	 "$bibtex=q/upbibtex %O %B/",
	 "-e",
	 "$biber=q/biber %O --bblencoding=utf8 -u -U --output_safechars %B/",
	 "-e",
	 "$makeindex=q/upmendex %O -o %D %S/",
	 "-e",
	 "$dvipdf=q/dvipdfmx %O -o %D %S/",
	 "-norc",
	 "-pdfdvi",
	 "%DOC%"
	]
}
]

macOS, Linux で Latexmk-LuaLaTeX を使用する場合は右側に表示されている settings.json の {} の中に以下の設定を追加・保存して既定のユーザー設定を上書きします。

"latex-workshop.latex.tools": [
{
	"name": "latexmk",
	"command": "latexmk",
	"args": [
	 "-e",
	 "$lualatex=q/lualatex %O -synctex=1 -interaction=nonstopmode -file-line-error %S/",
	 "-e",
	 "$bibtex=q/upbibtex %O %B/",
	 "-e",
	 "$biber=q/biber %O --bblencoding=utf8 -u -U --output_safechars %B/",
	 "-e",
	 "$makeindex=q/upmendex %O -o %D %S/",
	 "-norc",
	 "-pdflua",
	 "%DOC%"
	]
}
]

TeX Live に含まれている ptex2pdf を用いる場合は latex-workshop.latex.recipes に ptex2pdf を追加し,latex-workshop.latex.tools にその詳細設定を記します。(以下の ptex2pdf の設定は「upLaTeXでコンパイル」「synctex 有効」というものです。)

※この設定は「ptex2pdfを1度実行する」だけであるため、「2度以上のコンパイルが必要」「BibTeXやMakeindexの実行が必要」な文書に関しては正しい出力を得られないことに注意が必要です。

"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%"
	]
}
]

使い方

ファイルの内容を変更して Ctrl+S (Cmd+S) で保存するとビルドコマンドが実行されます。ファイルの内容を変更していない状態でビルドコマンドを実行したい場合は Ctrl+Alt+B (Cmd+opt+B) でビルドコマンドを実行します。

Ctrl+Alt+V (Cmd+opt+V) あるいは右上の PDF ファイルのアイコンを左クリックで指定した PDF ビューアで PDF ファイルを表示します。 タブで開く場合は右側に新しいタブで PDF ファイルを表示します。 ブラウザで開く場合は既定のブラウザで PDF ファイルを表示します。

synctex を有効にしている場合,tex ファイル上で Ctrl+Alt+J (Cmd+opt+J) すると forward search,PDF ファイル上で Ctrl+左クリック (Cmd+クリック)すると inverse search を行います。タブで開かれた PDF は synctex に対応しています。

Ctrl+Alt+X (Cmd+opt+XまたはCmd+B) あるいは左側のアクティビティバーの TeX アイコンをクリックで以下のリストがサイドバーに表示されます。リストの項目から Action を選択すると実行されます。

Build LaTeX project
View LaTeX PDF
View Log messages
Navigate, select, and exit
Miscellaneous

入力支援

「\+先頭アルファベット」で入力補完モードとなって候補がポップアップし,それ以降の入力文字は順不同で絞り込みに用いられます。読み込んである自作マクロなどに含まれる命令も補完候補に含まれます。なお,下の表に示された文字列は「\」なしに2文字目から補完モードとなります。詳細は以下に。

略記説明
BXY環境 XY... を入力補完BEQ, BEN, BIT,BCAS,...
SXY部・章・節などを入力補完SPA, SCH, SSE, SSS, SS2,...
@aなどギリシャ文字の入力補完@a, @b,@g,...
@(など数学記号の入力補完括弧類,分数,...
FXYフォント設定FRM, FTT, FIT, FBF,...
MXY数学フォント設定MRM, MBF, MBB,...

記述済みのテキストをコマンドで囲むときは,テキストを選択してから Ctrl+L, Ctrl+W (Cmd+L, Cmd+W) と連続入力すると,囲みコマンドの候補がポップアップします。複数選択に対しても有効です。

環境で囲むときは,Ctrl+shift+P (Cmd+shift+P)でコマンドパレットを呼び出してから LaTeX Workshop: Surround selection with \begin{}...\end{} を選択します。(コマンドパレットに latex sur と入力すれば見つけられます。)

テキストを選択した状態で「$」「(」「{」「[」「'」「`」「"」を入力すると,これらの文字(と対応する閉じ括弧)で選択テキストを囲みます。

スニペットを自作する(VS Code の機能)

言語ごとのスニペット,またはグローバルなスニペット(またはワークスペースやフォルダ専用のスニペット)を作成できます。

メニューの Code -基本設定- User Snippets から適切なファイルを選択します。(LaTeX 専用とするならば,latex.json を選択します。){}内に以下の例のように記述します。

"log": {
	"prefix": ["\\log", "@log"],
	"body": [
		"\\log_{${1:e}}{${2}}"
	],
	"description": "対数を入力"
},
"naki": {
	"prefix": "nakigao",
	"body": [
		"${1|(ToT),(;_;)|}"
	],
	"description": "泣き顔"
}
スニペット名他から参照するときにも用いられる
prefix呼び出しトリガー([...]内にコンマ区切りで複数のエイリアスも登録可能)
body展開される本体。[...]内にコンマ区切りの配列で記述すると改行される
descriptionスニペット呼び出し時のポップアップに表示される説明

body 内は空白もそのまま出力されます。また,タブでカーソルを移動させるタブストップを設定できます。

${1},${2};${1},${2}とタブを押すと順に移動する
${1:text}タブストップにデフォルト値を設定(タブ移動時に選択される)
${1|one, two|}パイプ文字(|)で囲った中に複数の選択肢をコンマ区切りで設定
$0カーソルの最終移動場所の指定
$変数$TM_SELECTED_TEXTで選択テキスト,$CLIPBOARDでクリップボードの内容など

$,},\は"\"によってエスケープします。選択肢要素中はコンマ(,)とパイプ文字(|)も"\"でエスケープします。

自作のショートカットキーでテキストを入力する/囲む(VS Code の機能)

keybindings.json を編集することで,自作のショートカットキーで特定の動作をさせることができます。(キーボードショートカット (Keyboard Shortcuts)の設定を開いた後で上部のタブの右側にある{}をクリックすると keybindings.json が開きます。)

特殊文字は"\"でエスケープします。

{//テキストの入力
   "key": "cmd+shift+h",
   "command": "type",
   "args":{"text": "\"Hello world!\""}
   "when": "editorTextFocus"
},
{//スニペットをショートカットキーで入力
   "key": "cmd+shift+a",
   "command": "editor.action.insertSnippet",
   "when": "editorTextFocus && editorLangId == latex",
   "args": {
       "snippet": "\\endnote{$TM_SELECTED_TEXT}"//選択部分を囲む
   }
},
{//設定済みのスニペットを呼び出して入力
   "key": "cmd+shift+n",
   "command": "editor.action.insertSnippet",
   "when": "editorTextFocus",
   "args": {
       "langId": "latex",//latex.json 中の snippet を呼び出す
       "name": "naki"
   }
}

マジックコメント

LaTeX Workshop は % !TEX root と % !TEX program のマジックコメントをサポートしています。

root ファイル(メインファイル)の指定

LaTeX Workshop は root ファイル(メインファイル)を自動判別しますがうまく動作しない場合はマジックコメントで指定することができます。 root ファイル(メインファイル)を指定する場合は

% !TEX root = relative/or/absolute/path/to/root/file.tex

のように設定します。

ビルドコマンドの一時的変更

「普段は Latexmk-upLaTeX を使うように設定しているけれど特定の文書だけ Latexmk-LuaLaTeX を使いたい」といった場合は設定を変更しなくてもマジックコメントを追加して Latexmk-LuaLaTeX を使用することができます。(ただし,これは後方互換性のために組み込まれた機能で,原則として recipe システムを利用することが推奨されています。)

settings.json の {} の中に以下の設定を追加・保存します。

"latex-workshop.latex.magic.args": [
	"-e",
	"$lualatex=q/lualatex %O -synctex=1 -interaction=nonstopmode -file-line-error %S/",
	"-e",
	"$bibtex=q/upbibtex %O %B/",
	"-e",
	"$biber=q/biber %O --bblencoding=utf8 -u -U --output_safechars %B/",
	"-e",
	"$makeindex=q/upmendex %O -o %D %S/",
	"-norc",
	"-pdflua",
	"%DOC%"
]

LaTeX 文書の root ファイル(メインファイル)に以下の行を追加します。

% !TEX program = latexmk

Ctrl+S(Cmd+S) で保存あるいは Ctrl+Alt+B(Cmd+opt+B) でビルドコマンドを実行すると Latexmk-LuaLaTeX が実行されます。

PDF 表示の設定

PDF を表示させる際に「その都度決定する」「VS Code のタブで開く」「既定のブラウザで開く」「指定された外部ビューワーで開く」ことができます。 settings.json の {} の中で latex-workshop.view.pdf.viewer を設定します。

"latex-workshop.view.pdf.viewer": "設定"
設定説明
none既定の PDF ビューワーを設定しない
tabPDF をタブ表示する
browser既定の web ブラウザで開く
external外部ビューワーで開く

external を指定した際には,さらにそのビューワーを latex-workshop.view.pdf.external.command で別途指定します。(指定されていない場合は,OS のデフォルトの PDF ビューワーが用いられます。)

SumatraPDF との synctex 連携

forward search

settings.json の {} の中に以下の設定を追加・保存します。

"latex-workshop.view.pdf.viewer": "external",
"latex-workshop.view.pdf.external.command": {
	"command": "C:/Program Files/SumatraPDF/SumatraPDF.exe",
	"args": [
	 "-reuse-instance",
	 "%PDF%"
	]
},
"latex-workshop.view.pdf.external.synctex": {
	"command": "C:/Program Files/SumatraPDF/SumatraPDF.exe",
	"args": [
	 "-reuse-instance",
	 "-forward-search",
	 "%TEX%",
	 "%LINE%",
	 "%PDF%"
	]
}

inverse search

SumatraPDF の [☰] > [設定(S)] > [オプション(O)...] の「逆順検索コマンドラインの設定」に以下の設定をします。

"C:\Program Files\Microsoft VS Code\bin\code.cmd" -g "%f:%l"

便利な設定

settings.json に設定を記述することでVS Code や LaTeX Workshop の動作を変更できます。

コンパイル時に生成されたファイルを自動削除

自動削除するファイルの拡張子を設定し,コンパイル後の自動削除の設定を記述します。(synctex を使いたい場合は,一覧から"*.synctex.gz"は外しておきます。)

"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",
	// for Beamer files
	"_minted*", "*.nav", "*.snm", "*.vrb",
],
"latex-workshop.latex.autoClean.run": "設定"
設定説明
never自動削除機能を利用しない
onFailedコンパイルに失敗したときにのみ上記の拡張子のファイルを自動削除
onBuiltコンパイルのたびに上記の拡張子のファイルを自動削除

コンパイル時に PDF をカーソル位置で表示

synctex を有効にしてコンパイルしたときに,tex 文書のカーソル位置で PDF を表示するように設定できます。

"latex-workshop.synctex.afterBuild.enabled": true

true/false で設定が切り替わります。(この設定値には引用符は必要ありません。)

日本語の単語区切りを設定する

単語移動を行いやすくするため日本語の句読点や括弧類を単語区切りとして設定します。

"editor.wordSeparators": "./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~?.。,、()「」[]{}《》",

助詞も単語区切りに設定するならば,以下のように設定します。

"editor.wordSeparators": "./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~?.。,、()「」[]{}《》てにをはがのともへでや",

Last-modified: 2019-05-19 (日) 12:09:01 (3d)