🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
LaTeX

LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。

Q&A

解決済

2回答

12547閲覧

LaTex環境構築においてlatexmkのエラー

dotuuuuuun

総合スコア1

LaTeX

LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。

0グッド

0クリップ

投稿2021/01/27 14:26

編集2021/01/28 09:28

問題

LaTexの環境構築を
VSCode で LaTeX を書く (2018)
などを参考にしているが、latexmkをコマンドプロンプトで実行したとき、エラーが出力される。

追記(21-01-28)
platex + dvipdfmx を手動で行ったときにはpdfビルドできるが、VScodeのコマンドからlatexmkでビルドしようと文字化けしうまくいかない。

###環境

  • Windows 10 Home
  • Latexmk, John Collins, 26 Dec. 2019. Version 4.67

発生している問題・エラーメッセージ (更新:21-01-28)

VScodeのコマンドでpdfをビルドしようとすると文字化けがおこり、.dviファイルの生成に失敗する。

Rc files read: C:/Users/Username/.latexmkrc Latexmk: This is Latexmk, John Collins, 29 September 2020, version: 4.70b. Latexmk: Removing all generated files Rule 'latex': The following rules & subrules became out-of-date: 'latex' ------------ Run number 1 of rule 'latex' ------------ ------------ Running ''platex' '-kanji=utf8 -no-guess-input-env' -synctex=1 -interaction=nonstopmode -file-line-error -recorder "c:\Users\Username\Documents\code\example.tex"' ------------ Latexmk: applying rule 'latex'... ''platex'' �́A�����R�}���h�܂��͊O���R�}���h�A ����”\�ȃv���O�����܂��̓o�b�` �t�@�C���Ƃ��ĔF������Ă��܂���B Latexmk: fls file doesn't appear to have been made. Failure to make 'example.dvi' Needed source file 'example.pdf' does not exist. Latexmk: Errors, in force_mode: so I tried finishing targets For rule 'view', running '&if_source( )' ... Collected error summary (may duplicate other messages): latex: Command for 'latex' gave return code 1 Refer to 'example.log' for details view: Command for 'view' gave return code -1 ---------------------- This message may duplicate earlier message. Latexmk: Failure in processing file 'c:/Users/Username/Documents/code/example': *LaTeX didn't generate the expected log file 'example.log' ---------------------- C:\texlive\2020\bin\win32\runscript.tlu:915: command failed with exit code 12: perl.exe c:\texlive\2020\texmf-dist\scripts\latexmk\latexmk.pl -f -gg -pv -latex='platex' "-latexoption='-kanji=utf8 -no-guess-input-env'" -synctex=1 -interaction=nonstopmode -file-line-error c:/Users/Username/Documents/code/example

試したこと

  • TexLiveの再インストール
  • TexLiveのtlmgrによるアップデート

setting.jsonと.latexmkrcの中身はVSCode で LaTeX を書く (2018)
のとおりですが、一応掲載します。

###.latexmkrc
ホームディレクトリに以下の中身のファイルを置いています。

通常の 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';
}

#setting.json (VScode)

{
// editor.wordSeparators: 単語単位での移動を行う場合の区切り文字を指定
// 日本語文書で単語移動を使うため、助詞や読点、括弧を区切り文字として指定する
"editor.wordSeparators": "./()"'-:,.;<>!@#$%^&*|+=[]{}`? 、。「」【】『』()!?てにをはがのともへでや",
// 設定: 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",
"editor.fontLigatures": null,
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

latexmkをコマンドプロンプトで実行したとき、エラーが出力される。

表示されているエラーはlatexmkをコマンドライン引数なしで実行していることが原因です。latexmk ファイル名のように、LaTeXで書かれた文書ファイルをコマンドライン引数に設定してください。

参考: Ubuntu 20.04 で「latexmk」だけで実行した結果。

$ latexmk Latexmk: This is Latexmk, John Collins, 26 Dec. 2019, version: 4.67. Latexmk: No file name specified, and I couldn't find any Use latexmk -help to get usage information

投稿2021/01/28 02:49

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dotuuuuuun

2021/01/28 09:49

ご回答ありがとうございます。引数にtexファイルを置くことで、uplatexやlualatexのエンジンでは無事にpdfファイルのビルドができたのですが、platexの場合、処理の途中で文字化けしビルドできませんでした。 初心者質問で申し訳ないのですが、対応をご教授いただければ幸いです。よろしくお願いいたします。
guest

0

ベストアンサー

Latexmkを用いる前にdvipdfmxによるビルドが正しく行えるかの確認をお願いします。
また、.latexmkrcファイルが正しいディレクトリに置かれておらず読み込めていないようにも思えるので、こちらの設定という節を参考に置いたディレクトリが正しいかを確認してください。

投稿2021/01/28 00:12

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dotuuuuuun

2021/01/28 09:36

回答ありがとうございます。.latexmkrcのディレクトリは正しい位置の置かれていることを確認いたしました。 またplatex+dvipdfmxを手動で行ったときにはビルドできることを確認できたのですが、VScodeのレシピからlatexmkを動作させようとしたとき、処理の途中で文字化けして.dviを生成できていません。 本文を更新いたしましたので、ご覧いただければ幸いです。よろしくお願いします。
退会済みユーザー

退会済みユーザー

2021/01/28 09:44 編集

承知しました。 latexmkが使えるかを確認するために、 latexmk hoge.tex を実行した際にビルドできるかを確認してください。更新した本文については後ほど確認します。
dotuuuuuun

2021/01/28 10:16

ご回答ありがとうございます。 .latexmkrcにて、ビルドコマンドを設定している"uplatex"で書かれているtexファイルの時、latexmk hoge.texで問題なくビルドできました。"lualatex", "xelatex"に関しても latexmk -lualatex hoge2.tex と実行することで、同様にビルドできました。 platexで書かれたものは、.latexmkrcで定義していないため?以下のようなメッセージが表示され、失敗します。 C:\texlive\2020\bin\win32\runscript.tlu:915: command failed with exit code 10: perl.exe c:\texlive\2020\texmf-dist\scripts\latexmk\latexmk.pl -platex example
退会済みユーザー

退会済みユーザー

2021/01/28 10:32

今まで気づいていませんでしたが、.latexmkrcで定義していないのが原因です。 settings.jsonのplatexの設定を全て消すとVSCode上では問題なく動きますか?
dotuuuuuun

2021/01/28 10:55

"platex",uplatex","lualatex", "xelatex"という4つあるレシピのうち、platexに関する"Tools"および"Recipe"を削除し、platexのビルドコマンドをなくすということでしょうか。 platex以外の3つのエンジンを用いたtexファイルはVScode上でも正常に動作しているため、platexのビルドコマンドを削除することで問題なくVScodeを利用することができました。ただ理想としては"platex"と"uplatex"の2種類は残したいと考えています。
退会済みユーザー

退会済みユーザー

2021/01/28 11:06

理解しました。 ちなみに、texファイルのdocumentclassはどうなっていますか?
dotuuuuuun

2021/01/28 11:16

platex ⇒ \documentclass{jsreport} uplatex ⇒ \documentclass{ujreport} lualatex ⇒ \documentclass[lualatex,ja=standard]{bxjsreport} xelatex ⇒ \documentclass[xelatex,ja=standard]{bxjsreport} というようにそれぞれ設定しています。
退会済みユーザー

退会済みユーザー

2021/01/28 11:25

.latexmkrcの-kanji=utf8のオプションを消すと、latexmkでplatexを用いたビルドは可能ですか?
dotuuuuuun

2021/01/28 12:08

$ latexmk -pdfdvi -latex=platex hoge.tex をコマンドプロンプトが入力したとき、latexmkでplatexを用いたビルドが行えました。また-kanji=utf8を削除にしたとき、残したときのどちらもlatexmkでplatexを用いたビルドは成功しました。
退会済みユーザー

退会済みユーザー

2021/01/28 12:56

承知しました。そこまで確認することができればあとはsettings.jsonの問題のみのはずです。 ちなみに、「latex-workshop.latex.tools: Tool の定義」と書いてある部分はコメントアウトしてありますか?
退会済みユーザー

退会済みユーザー

2021/01/28 13:00

あと、"latex-workshop.latex.clean.fileTypes"の"*.log"を除いてからVSCodeを再起動するとどうですか?
dotuuuuuun

2021/01/28 13:43

https://qiita.com/musubi05/items/80b5d914bc18b0e59060 を参考に、settings.jsonの設定を見直し、platexのcommandの引数を "args": [ "-pdfdvi", "-latex=platex -kanji=utf-8 -synctex=1 %O %S", "-e", "$dvipdf=\"dvipdfmx %O %S\";$bibtex=\"pbibtex -kanji=utf-8\";$makeindex=\"mendex\";", "%DOC%" ] というように変更してみたら無事にplatexでのビルドが行えました! 長々と質問に答えていただき本当にありがとうございました。 m(_ _)m
退会済みユーザー

退会済みユーザー

2021/01/28 22:57

解決したようであれば良かったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問