VSCodeにおいてエラーが出力されずビルドを続けてしまう

VSCodeにおいてエラーが出力されずビルドを続けてしまう

- x Zen の投稿
返信数: 4
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を添付します。
追加で必要な情報などありましたら教えてください。よろしくお願いします。
x Zen への返信

Re: VSCodeにおいてエラーが出力されずビルドを続けてしまう

- 和田 勇 の投稿
  • 提供されたログから settings.json の内容がわかり対策の検討ができました
  • settings.jsonlatex-workshop.latex.tools の uplatex/platex コマンドの args-interaction=STRING を追加してみてください

  • STRING に指定できる文字列(``uplatex -help``` などで調べることができます)

   1. batchmode    2. nonstopmode    3. scrollmode    4. errorstopmode

和田 勇 への返信

Re: VSCodeにおいてエラーが出力されずビルドを続けてしまう

- x Zen の投稿
回答ありがとうございます。
"-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"を追加したから
コードが正しければちゃんと動くし、間違っていたらエラーが出てビルドが止まるので現状問題ないが少し気になる。
x Zen への返信

Re: VSCodeにおいてエラーが出力されずビルドを続けてしまう

- 和田 勇 の投稿

Table of Contents

  1. 参考URL
  2. Multiple filename arguments?云々 の警告
  3. お使いの settings.json について(敢えて助言します)

参考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":ptex2pdfargs に指定するオプションやビルドターゲットファイルの指定の順序 等が把握できると思います

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 について(敢えて助言します)

  • recipestools について

    • 現状

      {
       "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"
       ]
      }
      
      • このようにしておけば、今回の対象は toolsptex2pdf 一箇所のみでよかった
        • 原理的には Step 1: ptex2pdf のところだけでも良いのですが、おそらく 34 も 念の為修正されたと思いますが …
    • どうしても4つのツールをというのなら Step 1 ptex2pdfStep 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]
      
和田 勇 への返信

Re: VSCodeにおいてエラーが出力されずビルドを続けてしまう

- x Zen の投稿
ご回答ありがとうございます。
問題が解決できたとともに助言によって新たに学ぶことができて感謝しております。