Visual Studio Code > LaTeX
Visual Studio Code 上で LaTeX の統合環境を構築する拡張機能(extension)としては LaTeX Workshop や CaTeX(軽鳥/怪鳥)などがあります。高機能でもっとも普及しているのは James Yu 氏による LaTeX Workshop です。
左端のアクティビティバーから拡張機能をクリックし,検索フィールドに latex と入力すれば関連拡張機能の一覧が示されます。そこから適切な拡張機能をインストールします。(このとき Japanese Language Pack for VS Code を導入するとメニューや各種設定の説明も日本語化できます。)
CaTeX は LaTeX Workshop と共に使うことを想定し,LaTeX Workshop にない機能を追加します。ギリシア文字補完,イメージ補完,フォント補完の機能をもつほか,Ctrl-c s と入力することで「セクション」「環境」「\maketitle」「{\Large }」のタイプの補完が可能となります。また,CaTeX では自作コマンドの補完をその場で辞書登録する機能も搭載しています。一方,LaTeX Workshop の数式の「@補完」とかぶるところもあり,併用すると「@補完」はやや使いにくくなります。
LaTeX Utilities は LaTeX Workshop への add-on で,LaTeX Workshop にない機能を追加します。文書全体をコンパイルすることなく tikzpicture 環境中の図表を単独プレビューする機能はこの add-on の機能として分離しました。
LaTeX Workshop は Visual Studio Code に LaTeX の統合環境を追加する extension です。入力支援,複数のコンパイル設定の使い分け,文書のアウトライン表示,マウスを合わせたときの数式や引用のプレビューやパッケージのドキュメントの表示,などの機能があります。
(VS Code の機能)
Ctrl+Comma (Cmd+Comma) で「設定(Settings)」 タブを開きます。「設定の検索」フィールドに適切な用語を入力して必要な設定を絞り込むことができます。代表的な設定はこの画面上で設定できますが,詳細な設定は settings.json に直接書きこみます。「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 が実行されます。)
Ctrl+Comma (Cmd+Comma) で設定(Settings) タブを開きます。 「設定の検索」で「Tools」と入力して「Latex-workshop > Latex: Tools」を探し,「settings.json で編集」をクリックするとユーザー設定 (settings.json) が開かれます。
LuaLaTeXmk (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/bibtexu %O %B/", "-e", "$biber=q/biber %O --bblencoding=utf8 -u -U --output_safechars %B/", "-e", "$makeindex=q/upmendex %O -o %D %S/", "-norc", "-gg", "-pdflua", "%DOC%" ] } ]
upLaTeXmk (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/bibtexu %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", "-gg", "-pdfdvi", "%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) でビルドコマンドを実行します。
コンパイル時のエラーや警告は「問題(Problems)パネル」にまとめられて表示されます。ログは「出力(Output)パネル」から確認できます。
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 アイコンをクリックで以下のコマンドのリストがサイドバーに表示されます。リストの項目からコマンド(Command)を選択すると実行されます。
Build LaTeX project
Clean up auxiliary files
Terminate current compilation
Recipe: latexmk
Recipe: pdflatex ➞ bibtex ➞ pdflatex × 2View LaTeX PDF
View in VSCode tab
View in web browser
View in external browser
Set default viewer
Refresh all viewersView Log messages
View LaTeX Workshop extension log
View LaTeX compiler logNavigate, select, and edit
SyncTeX from cursor
Navigate to matching begin/end
Select current environment name
Close current environment
Surround with begin{}...\end{}
Insert %!TeX root magic commentMiscellaneous
Open citation browser
Count words in LaTeX project
Reveal output folder in OS
「\+先頭アルファベット」で入力補完モードとなって候補がポップアップし,それ以降の入力文字は順不同で絞り込みに用いられます。読み込んである自作マクロなどに含まれる命令も補完候補に含まれます。なお,下の表に示された文字列は「\」なしに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 と入力すれば見つけられます。)
テキストを選択した状態で「$」「(」「{」「[」「'」「`」「"」を入力すると,これらの文字(と対応する閉じ括弧)で選択テキストを囲みます。
言語ごとのスニペット,またはグローバルなスニペット(またはワークスペースやフォルダ専用のスニペット)を作成できます。
メニューの Code−基本設定(Preferences)−ユーザースニペット(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でクリップボードの内容など |
「$」「}」「\」は"\"によってエスケープします。選択肢要素中はコンマ「,」とパイプ文字「|」も"\"でエスケープします。
keybindings.json を編集することで,自作のショートカットキーで特定の動作をさせることができます。(Code−基本設定(Preferences)−キーボードショートカット (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 のマジックコメントをサポートしています。
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", "-gg", "-pdflua", "%DOC%" ]
LaTeX 文書の root ファイル(メインファイル)に以下の行を追加します。
% !TEX program = latexmk
Ctrl+S(Cmd+S) で保存あるいは Ctrl+Alt+B(Cmd+opt+B) でビルドコマンドを実行すると Latexmk-LuaLaTeX が実行されます。
PDF を表示させる際に「その都度決定する」「VS Code のタブで開く」「既定のブラウザで開く」「指定された外部ビューワーで開く」ことができます。
Ctrl+Comma (Cmd+Comma) で「設定(Settings)」 タブを開き,「設定の検索」で pdf と打って絞り込むと PDF に関わる各種設定を一覧できます。Latex-workshop > View > Pdf: Viewer で PDF 表示のビューワーを設定します。(自動的に settings.json 中に "latex-workshop.view.pdf.viewer" の設定として書きこまれます。)
"latex-workshop.view.pdf.viewer": "設定"
設定 | 説明 |
none | 既定の PDF ビューワーを設定しない |
tab | PDF をタブ表示する |
browser | 既定の web ブラウザで開く |
external | 外部ビューワーで開く |
external を指定した際には,さらにそのビューワーを latex-workshop.view.pdf.external.command で別途指定します。(指定されていない場合は,OS のデフォルトの PDF ビューワーが用いられます。)
settings.json の {} の中に以下の設定を追加・保存します。<ユーザー名>の部分は自分のユーザー名に置き換えてください。
"latex-workshop.view.pdf.external.synctex.command": "C:/Users/<ユーザー名>/AppData/Local/SumatraPDF/SumatraPDF.exe", "latex-workshop.view.pdf.external.synctex.args": [ "-reuse-instance", "%PDF%", "-forward-search", "%TEX%", "%LINE%", "-inverse-search", "\"C:\\Users\\<ユーザー名>\\AppData\\Local\\Programs\\Microsoft VS Code\\bin\\code.cmd\" -r -g \"%f:%l\"" ]
settings.json の {} の中に以下の設定を追加・保存します。<ユーザー名>の部分は自分のユーザー名に置き換えてください。
"latex-workshop.view.pdf.external.synctex.command": "C:/Users/<ユーザー名>/AppData/Local/SumatraPDF/SumatraPDF.exe", "latex-workshop.view.pdf.external.synctex.args": [ "-reuse-instance", "%PDF%", "-forward-search", "%TEX%", "%LINE%" ]
SumatraPDF の [☰] > [設定(S)] > [オプション(O)...] の「逆順検索コマンドラインの設定」に以下の設定をします。<ユーザー名>の部分は自分のユーザー名に置き換えてください。
"C:\Users\<ユーザー名>\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd" -r -g "%f:%l"
settings.json に設定を記述することでVS Code や LaTeX Workshop の動作を変更できます。Ctrl+Comma (Cmd+Comma) で「設定(Settings)」 タブを開き,「設定の検索」で適切なキーワードで絞り込んでビジュアルに設定することもできます。
自動削除するファイルの拡張子を設定し,コンパイル後の自動削除の設定を記述します。常に自動削除する設定とした場合は,目次作成や synctex に必要なファイルが削除されないよう,一覧から".toc"や"*.synctex.gz"は外しておく必要があります。(".toc"が削除されると目次が生成されず,"*.synctex.gz"が削除されると,synctex が効かなくなります。)
"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 | コンパイルのたびに上記の拡張子のファイルを自動削除 |
synctex を有効にしてコンパイルしたときに,tex 文書のカーソル位置で PDF を表示するように設定できます。
"latex-workshop.synctex.afterBuild.enabled": true
true/false で設定が切り替わります。(この設定値には引用符は必要ありません。)
単語移動を行いやすくするため日本語の句読点や括弧類を単語区切りとして設定します。
"editor.wordSeparators": "./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~?.。,、()「」[]{}《》",
助詞も単語区切りに設定するならば,以下のように設定します。
"editor.wordSeparators": "./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~?.。,、()「」[]{}《》てにをはがのともへでや",
和文フォントでイタリック体や斜体などが指定されていないときに出る "LaTeX Font Warning: Font shape `JY1/mc/m/it' undefined" などの警告が「問題(Problems)パネル」に表示されないよう設定できます。実際のログは「出力(Output)パネル」から確認できます。
"latex-workshop.message.latexlog.exclude":["(Font shape `(JY1|JT1|JY2|JT2)(/.*)(sl|it|sc)'.*|Some font shapes were not available.*)"]
VS Code の不具合。対応策として,その制御文字を自動的に取り除くため拡張機能の Remove backspace control character を導入します。
LaTeX Workshop と同時に使用すると CPU 負荷が高くなり,大きなファイルで作業するときに Enter キーへの反応が遅くなります。