概要
LaTeXをVScodeで使えるようにしたいと思い、VScodeにLaTeX Workshopをインストール後、こちらのブログに書かれている通りに設定し、
%!TEX encoding = UTF-8
% ビルドレシピは「pLaTeX」を選択する
\documentclass{jsreport}
\begin{document}
\chapter{はじめに}
\section{概要}
これは \LaTeX が Visual Studio Code でビルドできるかどうかのテスト文章である。
\chapter{おわりに}
これが表示されていれば成功である。
\end{document}
という内容のuntitled-1.texをビルドレシピpLaTeXでビルドしてみましたが、
Recipe terminated with fatal error: spawn latexmk ENOENT.
というエラーが返ってきて処理が進みません。
環境
- windows10(64bit)
- TeXLive2017(LaTeX2e美文章作成入門改訂第7版のDVD-ROMでインストール)
- ホームディレクトリはC:\Users\ユーザー
- untitled-1.texの置き場はC:\Users\ユーザー\tex練習
- .latexmkrcファイルの置き場はC:\Users\ユーザー\tex練習
.latexmkrcファイルの内容
#!/usr/bin/env perl
# OS によって実行ファイル名が異なるので、OSを判断する
# Windows の場合
if ($^O eq 'MSWin32') {
# 通常の LaTeX ドキュメントのビルドコマンド
$latex = 'uplatex %O -kanji=utf8 -no-guess-input-enc -synctex=1 -interaction=nonstopmode %S';
# pdfLaTeX のビルドコマンド
$pdflatex = 'pdflatex %O -synctex=1 -interaction=nonstopmode %S';
# LuaLaTeX のビルドコマンド
# 追記(2019/06/02): @skytomo221 さんの指摘に基づき修正
$lualatex = 'lualatex %O -synctex=1 -interaction=nonstopmode %S';
# XeLaTeX のビルドコマンド
$xelatex = 'xelatex %O -no-pdf -synctex=1 -shell-escape -interaction=nonstopmode %S';
# Biber, BibTeX のビルドコマンド
$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B';
$bibtex = 'upbibtex %O %B';
# makeindex のビルドコマンド
$makeindex = 'upmendex %O -o %D %S';
# dvipdf のビルドコマンド
$dvipdf = 'dvipdfmx %O -o %D %S';
# dvipd のビルドコマンド
$dvips = 'dvips %O -z -f %S | convbkmk -u > %D';
$ps2pdf = 'ps2pdf.exe %O %S %D';
# PDF の作成方法を指定するオプション
# $pdf_mode = 0; PDF を作成しません。
# $pdf_mode = 1; $pdflatex を利用して PDF を作成します。
# $pdf_mode = 2; $ps2pdf を利用して .ps ファイルから PDF を作成します。
# $pdf_mode = 3; $dvipdf を利用して .dvi ファイルから PDF を作成します。
# $pdf_mode = 4; $lualatex を利用して .dvi ファイルから PDF を作成します。
# $pdf_mode = 5; xdvipdfmx を利用して .xdv ファイルから PDF を作成します。
$pdf_mode = 3;
# PDF ビュアーの設定 for Windows
# Windows では SyncTeX が利用できる SumatraPDF が推奨されている。
# SumatraPDF: https://www.sumatrapdfreader.org/free-pdf-reader.html
if (-f 'C:/Program Files/SumatraPDF/SumatraPDF.exe') {
$pdf_previewer = '"C:/Program Files/SumatraPDF/SumatraPDF.exe" -reuse-instance';
} elsif (-f 'C:/Program Files (x86)/SumatraPDF/SumatraPDF.exe') {
$pdf_previewer = '"C:/Program Files (x86)/SumatraPDF/SumatraPDF.exe" -reuse-instance';
} else {
# SumatraPDF が存在しない場合は、TeXworks で開くように設定されている。
# 別のアプリケーション(Adobe Reader 等)で開きたい場合はここに実行ファイルのパスを設定する
$pdf_previewer = 'texworks';
}
# Windows 以外の OS の場合 (Linux, macOS)
} else {
$latex = 'uplatex %O -synctex=1 -interaction=nonstopmode %S';
$pdflatex = 'pdflatex %O -synctex=1 -interaction=nonstopmode %S';
$lualatex = 'lualatex %O -synctex=1 -interaction=nonstopmode %S';
$xelatex = 'xelatex %O -no-pdf -synctex=1 -shell-escape -interaction=nonstopmode %S';
$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B';
$bibtex = 'upbibtex %O %B';
$makeindex = 'upmendex %O -o %D %S';
$dvipdf = 'dvipdfmx %O -o %D %S';
$dvips = 'dvips %O -z -f %S | convbkmk -u > %D';
$ps2pdf = 'ps2pdf %O %S %D';
$pdf_mode = 3;
# macOS の場合のみの設定
if ($^O eq 'darwin') {
# 一時ファイルの作成を抑止するオプション(0: 抑止)
# Skim 等の変更検知機構のあるビュアーで変更箇所を検知できるようにするため
$pvc_view_file_via_temporary = 0;
# PDF ビュアーの設定 for macOS
# macOS では SyncTeX が利用できる Skim が推奨されている。
$pdf_previewer = 'open -ga /Applications/Skim.app';
} else {
# PDF ビュアーの設定 for Linux
# Linux ではディストリビューションによってインストールされているアプリケーションが
# 異なるため、ディストリビューションに依存しない xdg-open で開くようにする
$pdf_previewer = 'xdg-open';
}
}
setting.jsonの内容
{
"C_Cpp.updateChannel": "Insiders",
"code-runner.executorMap": {
"code-runner.executorMap":"",
"code-runner.clearPreviousOutput": true,
"code-runner.runInTerminal": true,
"javascript": "node",
"typescript.tsdk": "node_modules\\typescript\\lib",
"editor.detectIndentation": false,
"editor.tabSize": 4,
"editor.formatOnSave": true,
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
"c": "cd $dir && gcc -fexec-charset=CP932 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"php": "php",
"python": "python -u",
"perl": "perl",
"perl6": "perl6",
"ruby": "ruby",
"go": "go run",
"lua": "lua",
"groovy": "groovy",
"powershell": "powershell -ExecutionPolicy ByPass -File",
"bat": "cmd /c",
"shellscript": "bash",
"fsharp": "fsi",
"csharp": "scriptcs",
"vbscript": "cscript //Nologo",
"typescript": "ts-node",
"coffeescript": "coffee",
"scala": "scala",
"swift": "swift",
"julia": "julia",
"crystal": "crystal",
"ocaml": "ocaml",
"r": "Rscript",
"applescript": "osascript",
"clojure": "lein exec",
"haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",
"rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
"racket": "racket",
"scheme": "csi -script",
"ahk": "autohotkey",
"autoit": "autoit3",
"dart": "dart",
"pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
"d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",
"haskell": "runhaskell",
"nim": "nim compile --verbosity:0 --hints:off --run",
"lisp": "sbcl --script",
"kit": "kitc --run",
"v": "v run",
"sass": "sass --style expanded",
"scss": "scss --style expanded",
"less": "cd $dir && lessc $fileName $fileNameWithoutExt.css",
"FortranFreeForm": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"fortran-modern": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"fortran_fixed-form": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"fortran": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
},
"workbench.colorTheme": "Monokai",
"workbench.startupEditor": "welcomePage",
"editor.fontLigatures": false,
// 設定: LaTeX Workshop
// LaTeX Workshop ではビルド設定を「Tool」と「Recipe」という2つで考える
// Tool: 実行される1つのコマンド。コマンド (command) と引数 (args) で構成される
// Recipe: Tool の組み合わわせを定義する。Tool の組み合わせ (tools) で構成される。
// tools の中で利用される Tool は "latex-workshop.latex.tools" で定義されている必要がある。
// latex-workshop.latex.tools: Tool の定義
"latex-workshop.latex.tools": [
// latexmk を利用した xelatex によるビルドコマンド
{
"name": "Latexmk (XeLaTeX)",
"command": "latexmk",
"args": [
"-f", "-gg", "-pv", "-xelatex", "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%"
]
},
// latexmk を利用した uplatex によるビルドコマンド
{
"name": "Latexmk (upLaTeX)",
"command": "latexmk",
"args": [
"-f", "-gg", "-pv", "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%"
]
},
// latexmk を利用した platex によるビルドコマンド
// 古い LaTeX のテンプレートを使いまわしている (ドキュメントクラスが jreport や jsreport ) 場合のため
{
"name": "Latexmk (pLaTeX)",
"command": "latexmk",
"args": [
"-f", "-gg", "-pv", "-latex='platex'", "-latexoption='-kanji=utf8 -no-guess-input-env'", "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%"
]
},
// latexmk を利用した lualatex によるビルドコマンド
{
"name": "Latexmk (LuaLaTeX)",
"command": "latexmk",
"args": [
"-f", "-gg", "-pv", "-lualatex", "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%"
]
}
],
// latex-workshop.latex.recipes: Recipe の定義
"latex-workshop.latex.recipes": [
// XeLaTeX で書かれた文書のビルドレシピ
{
"name": "XeLaTeX",
"tools": [
"Latexmk (XeLaTeX)"
]
},
// LaTeX(upLaTeX) で書かれた文書のビルドレシピ
{
"name": "upLaTeX",
"tools": [
"Latexmk (upLaTeX)"
]
},
// LaTeX(pLaTeX) で書かれた文書のビルドレシピ
{
"name": "pLaTeX",
"tools": [
"Latexmk (pLaTeX)"
]
},
// LuaLaTeX で書かれた文書のビルドレシピ
{
"name": "LuaLaTeX",
"tools": [
"Latexmk (LuaLaTeX)"
]
}
],
// latex-workshop.latex.magic.args: マジックコメント付きの LaTeX ドキュメントをビルドする設定
// '%!TEX' で始まる行はマジックコメントと呼ばれ、LaTeX のビルド時にビルドプログラムに解釈され、
// プログラムの挙動を制御する事ができる。
// 参考リンク: https://blog.miz-ar.info/2016/11/magic-comments-in-tex/
"latex-workshop.latex.magic.args": [
"-f", "-gg", "-pv", "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%"
],
// latex-workshop.latex.clean.fileTypes: クリーンアップ時に削除されるファイルの拡張子
// LaTeX 文書はビルド時に一時ファイルとしていくつかのファイルを生成するが、最終的に必要となるのは
// PDF ファイルのみである場合などが多い。また、LaTeX のビルド時に失敗した場合、失敗時に生成された
// 一時ファイルの影響で、修正後のビルドに失敗してしまう事がよくある。そのため、一時的なファイルを
// 削除する機能 (クリーンアップ) が LaTeX Workshop には備わっている。
"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.view.pdf.viewer: PDF ビューアの開き方
// VSCode 自体には PDF ファイルを閲覧する機能が備わっていないが、
// LaTeX Workshop にはその機能が備わっている。
// "tab" オプションを指定すると、今開いているエディタを左右に分割し、右側に生成されたPDFを表示するようにしてくれる
// この PDF ビュアーは LaTeX のビルドによって更新されると同期して内容を更新してくれる。
"latex-workshop.view.pdf.viewer": "tab",
// latex-workshop.latex.autoClean.run: ビルド失敗時に一時ファイルのクリーンアップを行うかどうか
// 上記説明にもあったように、ビルド失敗時に生成された一時ファイルが悪影響を及ぼす事があるため、自動で
// クリーンアップがかかるようにしておく。
"latex-workshop.latex.autoClean.run": "onFailed",
// latex-workshop.latex.autoBuild.run: .tex ファイルの保存時に自動的にビルドを行うかどうか
// LaTeX ファイルは .tex ファイルを変更後にビルドしないと、PDF ファイル上に変更結果が反映されないため、
// .tex ファイルの保存と同時に自動的にビルドを実行する設定があるが、文書が大きくなるに連れてビルドにも
// 時間がかかってしまい、ビルドプログラムの負荷がエディタに影響するため、無効化しておく。
"latex-workshop.latex.autoBuild.run": "never",
}
ビルド時のログ
[17:34:21] Initializing LaTeX Workshop.
[17:34:21] Extension root: c:\Users\ユーザー\.vscode\extensions\james-yu.latex-workshop-8.15.0
[17:34:21] Creating PDF file watcher.
[17:34:21] Cannot run pdflatex to determine if we are using MiKTeX
[17:34:21] Creating LaTeX Workshop http and websocket server.
[17:34:21] LaTeX Workshop initialized.
[17:34:21] Current workspace folders: undefined
[17:34:21] Current workspaceRootDir:
[17:34:21] Found root file from active editor: c:\Users\ユーザー\tex練習\untitled-1.tex
[17:34:21] Root file changed: from undefined to c:\Users\ユーザー\tex練習\untitled-1.tex
[17:34:21] Start to find all dependencies.
[17:34:21] Root file languageId: latex
[17:34:21] Instantiating a new file watcher for c:\Users\ユーザー\tex練習\untitled-1.tex
[17:34:21] Creating Bib file watcher.
[17:34:21] Parsing a file and its subfiles: c:\Users\ユーザー\tex練習\untitled-1.tex
[17:34:21] Parse fls file.
[17:34:21] Cannot find fls file: c:\Users\ユーザー\tex練習\untitled-1.fls
[17:34:21] Server created on 127.0.0.1:63598
[17:34:21] Added to file watcher: c:\Users\ユーザー\tex練習\untitled-1.tex
[17:34:21] Snippet data loaded.
[17:34:21] LaTeX Workshop version: 8.15.0
[17:34:25] RECIPES command invoked.
[17:34:25] BUILD command invoked.
[17:34:25] The document of the active editor: file:///c%3A/Users/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC/tex%E7%B7%B4%E7%BF%92/untitled-1.tex
[17:34:25] The languageId of the document: latex
[17:34:25] Current workspace folders: undefined
[17:34:25] Current workspaceRootDir:
[17:34:25] Found root file from active editor: c:\Users\ユーザー\tex練習\untitled-1.tex
[17:34:25] Keep using the same root file: c:\Users\ユーザー\tex練習\untitled-1.tex
[17:34:25] Building root file: c:\Users\ユーザー\tex練習\untitled-1.tex
[17:34:25] Build root file c:\Users\ユーザー\tex練習\untitled-1.tex
[17:34:26] Recipe step 1: latexmk, -f,-gg,-pv,-latex='platex',-latexoption='-kanji=utf8 -no-guess-input-env',-synctex=1,-interaction=nonstopmode,-file-line-error,c:/Users/ユーザー/tex練習/untitled-1
[17:34:26] Recipe step env: undefined
[17:34:26] cwd: c:\Users\ユーザー\tex練習
[17:34:26] LaTeX build process spawned. PID: 900.
[17:34:26] LaTeX fatal error: spawn latexmk ENOENT, 'latexmk' �́A�����R�}���h�܂��͊O���R�}���h�A
����\�ȃv���O�����܂��̓o�b�` �t�@�C���Ƃ��ĔF������Ă��܂���B
. PID: 900.
[17:34:26] Does the executable exist? PATH: C:\MinGW\bin;C:\Perl64\site\bin;C:\Perl64\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\MinGW\bin;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\ユーザー\AppData\Local\Microsoft\WindowsApps;C:\Users\ユーザー\AppData\Local\Programs\Microsoft VS Code\bin;
[17:34:26] The environment variable $SHELL: undefined
[17:34:29] LOG command invoked: default
なお、日本語のLaTeXworkshop環境構築ブログには片っ端から目を通し、どの方法も試してみましたが、同様のエラーが返ってくるばかりでした。
最終的には前述のこのブログに書かれてあるような、latexmkを利用したpLaTeXによるコンパイルができる環境を作りたいです。
長々と失礼しました。解決方法がございましたらご教授いただけますと幸いです。