Texlive2023を使いVSCodeにおいてplatexを使っています。
OS: Windows 11 Home 23H2
platexを導入する際にあたって活用したサイトはこちらです: https://qiita.com/warper/items/cae0ea700bd49106f059
(settings.jsonもこちらにあるものと変わりません)
問題: 本来ならばエラーが起きるであろうlatexファイルをコンパイルするとエラーを出力せずビルドを続けてしまう。
直したいこと: エラーをちゃんと出力し、エラーがあったらビルドを止めてほしい
現状: コンパイラーログにはエラーが表示される。ただ、PROBLEMSの欄に出てこないでビルドを続ける(左下のぐるぐるマークが回転したまま)になる。エラーが出て直した後に再コンパイルするには手作業でコンパイルを一度中止(ずっとコンパイルしてるので)してから再度Ctrl+Alt+bを押す必要がある。
具体的な例:
\documentclass[dvipdfmx,a4paper, 12pt]{jsarticle}
\usepackage{amsmath}
\begin{document}
こんにちは。
\begin{equation*}
x_x_2
\end{equation*}
\end{document}
のようなエラーを含むファイル(この場合はdouble subscript)をコンパイルしたときにエラーが出ないでビルドを続ける
コンパイラーログ:
This is ptex2pdf[.lua] version 20200520.0.
Processing c:/Workspace/Temp/assign1
This is e-upTeX, Version 3.141592653-p4.1.0-u1.29-230214-2.6 (utf8.sjis) (TeX Live 2023) (preloaded format=platex)
restricted \write18 enabled.
entering extended mode
(c:/Workspace/Temp/assign1.tex
pLaTeX2e <2023-02-14>+1, based on
LaTeX2e <2023-11-01>
L3 programming layer <2023-12-11>
(c:/texlive/2023/texmf-dist/tex/platex/jsclasses/jsarticle.cls
Document Class: jsarticle 2023/02/23 jsclasses (okumura, texjporg)
(c:/texlive/2023/texmf-dist/tex/platex/jsclasses/jslogo.sty)) (c:/texlive/2023/texmf-dist/tex/latex/amsmath/amsmath.sty
For additional information on amsmath, use the `?' option.
(c:/texlive/2023/texmf-dist/tex/latex/amsmath/amstext.sty (c:/texlive/2023/texmf-dist/tex/latex/amsmath/amsgen.sty)) (c:/texlive/2023/texmf-dist/tex/latex/amsmath/amsbsy.sty) (c:/texlive/2023/texmf-dist/tex/latex/amsmath/amsopn.sty)) (c:/texlive/2023/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def)
No file assign1.aux.
! Double subscript.
l.7 x_x_
2
?
ファイルにVS Code立ち上げ→エラーを含むファイル(上の例)をコンパイルした際のLATEX Workshop Extension Logを添付します。
追加で必要な情報などありましたら教えてください。よろしくお願いします。
OS: Windows 11 Home 23H2
platexを導入する際にあたって活用したサイトはこちらです: https://qiita.com/warper/items/cae0ea700bd49106f059
(settings.jsonもこちらにあるものと変わりません)
問題: 本来ならばエラーが起きるであろうlatexファイルをコンパイルするとエラーを出力せずビルドを続けてしまう。
直したいこと: エラーをちゃんと出力し、エラーがあったらビルドを止めてほしい
現状: コンパイラーログにはエラーが表示される。ただ、PROBLEMSの欄に出てこないでビルドを続ける(左下のぐるぐるマークが回転したまま)になる。エラーが出て直した後に再コンパイルするには手作業でコンパイルを一度中止(ずっとコンパイルしてるので)してから再度Ctrl+Alt+bを押す必要がある。
具体的な例:
\documentclass[dvipdfmx,a4paper, 12pt]{jsarticle}
\usepackage{amsmath}
\begin{document}
こんにちは。
\begin{equation*}
x_x_2
\end{equation*}
\end{document}
のようなエラーを含むファイル(この場合はdouble subscript)をコンパイルしたときにエラーが出ないでビルドを続ける
コンパイラーログ:
This is ptex2pdf[.lua] version 20200520.0.
Processing c:/Workspace/Temp/assign1
This is e-upTeX, Version 3.141592653-p4.1.0-u1.29-230214-2.6 (utf8.sjis) (TeX Live 2023) (preloaded format=platex)
restricted \write18 enabled.
entering extended mode
(c:/Workspace/Temp/assign1.tex
pLaTeX2e <2023-02-14>+1, based on
LaTeX2e <2023-11-01>
L3 programming layer <2023-12-11>
(c:/texlive/2023/texmf-dist/tex/platex/jsclasses/jsarticle.cls
Document Class: jsarticle 2023/02/23 jsclasses (okumura, texjporg)
(c:/texlive/2023/texmf-dist/tex/platex/jsclasses/jslogo.sty)) (c:/texlive/2023/texmf-dist/tex/latex/amsmath/amsmath.sty
For additional information on amsmath, use the `?' option.
(c:/texlive/2023/texmf-dist/tex/latex/amsmath/amstext.sty (c:/texlive/2023/texmf-dist/tex/latex/amsmath/amsgen.sty)) (c:/texlive/2023/texmf-dist/tex/latex/amsmath/amsbsy.sty) (c:/texlive/2023/texmf-dist/tex/latex/amsmath/amsopn.sty)) (c:/texlive/2023/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def)
No file assign1.aux.
! Double subscript.
l.7 x_x_
2
?
ファイルにVS Code立ち上げ→エラーを含むファイル(上の例)をコンパイルした際のLATEX Workshop Extension Logを添付します。
追加で必要な情報などありましたら教えてください。よろしくお願いします。
回答ありがとうございます。
"-interaction=nonstopmode"を追加することで解決できました。
後学のために少し書かせていただきます。
(注) "-interaction=nonstopmode"を追加するのはargsの中の"%DOC%"よりも前に書く。(最後に入れると以下のようなエラーが出る)
Multiple filename arguments? OK, I'll take the latter one.
This is ptex2pdf[.lua] version 20200520.0.
File cannot be found with kpathsea: -interaction=nonstopmode[.tex, .ltx]
-読んでためになった記事: https://qiita.com/Yarakashi_Kikohshi/items/4ede21b06d094ad3b89e
-上の記事を読んで知ったが"-file-line-error"をargsに入れるとエラーの場所をソースコード内でちゃんと示してくれるので良い
(疑問点)
特に動作に問題はないがCompiler logの最初に
Multiple filename arguments? OK, I'll take the latter one.
Multiple filename arguments? OK, I'll take the latter one.
と出てくる。おそらく"-interaction=nonstopmode"と"-file-line-error"を追加したから
コードが正しければちゃんと動くし、間違っていたらエラーが出てビルドが止まるので現状問題ないが少し気になる。
"-interaction=nonstopmode"を追加することで解決できました。
後学のために少し書かせていただきます。
(注) "-interaction=nonstopmode"を追加するのはargsの中の"%DOC%"よりも前に書く。(最後に入れると以下のようなエラーが出る)
Multiple filename arguments? OK, I'll take the latter one.
This is ptex2pdf[.lua] version 20200520.0.
File cannot be found with kpathsea: -interaction=nonstopmode[.tex, .ltx]
-読んでためになった記事: https://qiita.com/Yarakashi_Kikohshi/items/4ede21b06d094ad3b89e
-上の記事を読んで知ったが"-file-line-error"をargsに入れるとエラーの場所をソースコード内でちゃんと示してくれるので良い
(疑問点)
特に動作に問題はないがCompiler logの最初に
Multiple filename arguments? OK, I'll take the latter one.
Multiple filename arguments? OK, I'll take the latter one.
と出てくる。おそらく"-interaction=nonstopmode"と"-file-line-error"を追加したから
コードが正しければちゃんと動くし、間違っていたらエラーが出てビルドが止まるので現状問題ないが少し気になる。
Table of Contents
参考URL
vscode で latex ファイルをビルドする際のコマンドとオプションの関係についてですが、 すでに参考になさっていると思いますが ‥‥‥ まずは以下を参考にしてください。
- TeX Wiki Visual Studio Code/LaTeX
- 今回のケースでは
recipe/tool を日本語文書用に設定
のptex2pdf
の項を参考にすれば良いと思います。- ただし同項は
uplatex
用なので-u
オプションを取り除いてください
- ただし同項は
- 今回のケースでは
- TeX Wiki ptex2pdf
- TeX Wiki Visual Studio Code/LaTeX からもリンクはされていますが‥‥‥
"latex-workshop.latex.tools"
におけるxx"command":ptex2pdf
のargs
に指定するオプションやビルドターゲットファイルの指定の順序 等が把握できると思います
Multiple filename arguments?云々
の警告
ptex2pdf には
-interaction
オプションも-file-line-error
はあり ませんが-ot
オプションに続けて platex や uplatex など TeX 用追加オ プションを指定してあげる必要があります- コマンドプロンプトで
ptex2pdf -help
あるいはplatex -help
を 実行すると使い方やオプションの説明が表示されます
- コマンドプロンプトで
なので
-file-line-error
などを単独で指定するとビルドターゲットファイ ル扱いになってしまうため、件のMultiple filename 云々
の警告が発せら れます対策は
-file-line-error
も-ot
の中に取り込む以下はツール
ptex2pdf
に対して適用していますが、少なくともStep 1: ptex2pdf
には適用してください。latex-workshop.latex.tools : [ {"command" :"ptex2pdf", "args" :[ "-l", "-ot", "-kanji=utf8 -synctex=1 -interaction=nonstopmode -file-line-error", "%DOC%" ], "name" :"Step 1: ptex2pdf" }, {... 以下省略 ...}, ]
お使いの settings.json について(敢えて助言します)
recipes
とtools
について現状
{ "name":"pt2p-bib-pt2p-pt2p", "tools":[ "Step 1: ptex2pdf", "Step 2: pbibtex", "Step 3: ptex2pdf", "Step 4: ptex2pdf" ] }
私だったら4つのツールを新設する代わりに pbibtex は新設しますが ptex2pdf はそのまま利用して以下のようにします。
{ "name":"pt2p-bib-pt2p-pt2p", "tools":[ "ptex2pdf", "pbibtex", "ptex2pdf", "ptex2pdf" ] }
- このようにしておけば、今回の対象は
tools
のptex2pdf
一箇所のみでよかった- 原理的には
Step 1: ptex2pdf
のところだけでも良いのですが、おそらく3
と4
も 念の為修正されたと思いますが …
- 原理的には
- このようにしておけば、今回の対象は
どうしても4つのツールをというのなら
Step 1 ptex2pdf
とStep 3 ptex2pdf
ではpdf
を作る必要がないので-s
オプション付 きのツールにした方が良いかもしれませんが
Step2: pbibtex
の記述は?現状
{ "command" :"pbibtex", "args" :["%DOCFILE%","-kanji=utf8"], ← ここがおかしい "name" :"Step 2: pbibtex" },
修正案(順番を変えるだけ)
{ "command" :"pbibtex", "args" :["-kanji=utf8","%DOCFILE%"], "name" :"Step 2: pbibtex" },
根拠は
pbibtex -help
の冒頭部分の Usage(利用方法)の説明からpbibtex --help Usage: upbibtex [OPTION]... AUXFILE[.aux]