ptex2pdfコマンドで処理が止まる

ptex2pdfコマンドで処理が止まる

- 大山 竜彦 の投稿
返信数: 16
texlive2019をインストールしているのですが、タイプセットの際にptex2pdfでタイプセットできません。
This is ptex2pdf[.lua] version 20181212.0.
Processing test.tex
ptex2pdf processing of test.tex failed.
というメッセージが出て処理が途中で止まるのです。
動作環境はWindows10です。
色々調べてみてTeXWorksのタイプセットの設定でpLaTeX(ptex2pdf)の設定を確認し、
プログラム:ptex2pdf.exe
引数:-l
-ot
-kanji=utf8 $synctexoption
$filename
であることを確認しました。この設定で問題ないはずです。
関連プログラムのパスも確認し、
C:\texlive\2019\bin\win32
C:/texlive/2019/tlpkg/texworks
c:\texlive\2019\tlpkg\tlgs\bin
c:/texlive/2019/bin
C:/texlive/2019/texmf-dist
C:/texlive/2019/tlpkg
であることを確認しました。
コマンドプロンプトで
platex test.tex
dvipdfmx test.dvi
とコマンドを分けて打つと上手くタイプセットでき、PDFも生成されます。
ptex2pdf -l test.tex
も試しましたが結果は同じで
This is ptex2pdf[.lua] version 20181212.0.
Processing test.tex
ptex2pdf processing of test.tex failed.
と表示されました。
ptex2pdf.luaのスクリプトのソースコードを読んで、os.execute()の部分がちゃんと動作してないことが原因だとわかりました(戻り値でー1を返す)。luaの環境がちゃんと整っていないのかそれともまだTexLiveの設定に問題があるのかどちらか分かりません。解決法ご存知の方何卒宜しくお願い致します。
  • TeXLive2019(ネットワークインストーラからインストール)
  • Windows10
大山 竜彦 への返信

Re: ptex2pdfコマンドで処理が止まる

- Yamamoto Munehiro "munepi" の投稿
> ptex2pdf.luaのスクリプトのソースコードを読んで、os.execute()の部分がちゃんと動作してないことが原因だとわかりました(戻り値でー1を返す)。

そのご推察で正しいです。

おそらくお手元のコマンドプロンプト cmd.exe 上で

>echo %PATH%

なさった出力に、

C:\WINDOWS\system32;C:\WINDOWS;

が足りていません。
これらの場所がシステム環境変数側の PATH に適切に設定しないと、
ptex2pdf の texlua の os.exit() さえもまともに動きません。
Yamamoto Munehiro "munepi" への返信

Re: ptex2pdfコマンドで処理が止まる

- 大山 竜彦 の投稿
回答ありがとうございます。
echo %PATH%の出力結果を見てみると、
C:\WINDOWS\system32;C:\WINDOWS;
が見つかりました。試しにptex2pdf test.texで再タイプセットしてみても、
This is ptex2pdf[.lua] version 20181212.0.
Processing test.tex
ptex2pdf processing of test.tex failed.
と結果は変わりませんでした。
大山 竜彦 への返信

Re: ptex2pdfコマンドで処理が止まる

- aminophen の投稿
echo %PATH%
の結果を丸ごと貼っていただく事は可能ですか?
aminophen への返信

Re: ptex2pdfコマンドで処理が止まる

- 大山 竜彦 の投稿
echo %PATH%の結果は以下で全てです。

C:\texlive\2019\bin\win32;C:\Python27\;C:\Python27\Scripts;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;"C:\Program Files\Java\jdk1.8.0_202\bin;C:\ProgramData\Oracle\Java\javapath";C:\Program Files\Intel\WiFi\bin\;c:\Program Files (x86)\Intel\iCLS Client\c:\Program Files\java\jre7\bin;c:\Program Files\Intel\iCLS Client\;C:\opencv341\install\x64\vc15\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.8.0_171\bin;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Common Files\Intel\WirelessCommon\;c:\Program Files (x86)\Sony\VAIO BIOS Data Transfer Utility\;C:\Program Files (x86)\Sony\VAIO Startup Setting Tool;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Skype\Phone\;C:\Program Files (x86)\cmake-3.10.0-rc3-win64-x64\cmake-3.10.0-rc3-win64-x64\bin;C:\Users\○○\Downloads\opencv\build\x64\vc14\bin;\Users\○○\Downloads\opencv3.3.1\build\java\x64;C:\w32tex\bin;C:\Program Files (x86)\gs\gs9.23\bin;C:\Program Files (x86)\gs\gs9.23\lib;C:\Users\tatsuya\opencv-3.4.1\build\x64\vc15\bin;C:\Users\tatsuya\opencv-3.4.1\build\java\x64;C:\MinGW\bin;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\gnuplot\bin;C:\Program Files\Git\cmd;C:\Program Files\Git\usr\bin;C:\Program Files\TortoiseGit\bin;C:\Users\○○\Downloads\apache-maven-3.6.0\bin;C:\Program Files\nodejs\;C:\ProgramData\chocolatey\bin;C:\Program Files\php;C:\ProgramData\ComposerSetup\bin;C:\PHP73;C:\Users\○○\AppData\Local\Programs\Python\Python37\Scripts\;C:\Users\○○\AppData\Local\Programs\Python\Python37\;C:\Program Files\Java\jdk1.8.0_171\bin;C:\Users\○○\AppData\Local\Microsoft\WindowsApps;C:\Users\○○\AppData\Roaming\npm;C:\Program Files\php;C:\Users\○○\AppData\Roaming\Composer\vendor\bin;C:\Users\○○\AppData\Local\Programs\Microsoft VS Code\bin;C:\texlive\2019\bin\win32;C:\w32tex\bin;
大山 竜彦 への返信

Re: ptex2pdfコマンドで処理が止まる

- aminophen の投稿
ネット上を漁ると,Java に関係するパスが
C:\WINDOWS\system32;C:\WINDOWS;
より前にあると ptex2pdf が失敗したという
発言が見つかりました。

C:\WINDOWS\system32;C:\WINDOWS;
をもっと前に持ってくるとどうなるでしょうか?
aminophen への返信

Re: ptex2pdfコマンドで処理が止まる

- 大山 竜彦 の投稿
仰る通りのPATHを上に持ってくると
This is ptex2pdf[.lua] version 20181212.0.
Processing test.tex
This is pTeX, Version 3.14159265-p3.8.3 (utf8.sjis) (TeX Live 2019/W32TeX) (preloaded format=ptex)
restricted \write18 enabled.
(./test.tex(guessed encoding: UTF-8 = utf8)
! Undefined control sequence.
l.3 \documentclass
[11pt,a4j]{jsbook}
?
という風にメッセージが変わりました。これで少し前進しました。ありがとうございます。
大山 竜彦 への返信

Re: ptex2pdfコマンドで処理が止まる

- aminophen の投稿
% あの書き込みが当たりだったことに正直驚いている…。

> ! Undefined control sequence.
> l.3 \documentclass

ptex2pdf test.tex
ではなく
ptex2pdf -l test.tex
とすれば,pTeX ではなく pLaTeX が起動しますのでそうしてください。
aminophen への返信

Re: ptex2pdfコマンドで処理が止まる

- 和田 勇 の投稿
#何がバッティングしているか興味がありネットを漁ったけど該当のが見つからなかった :-(

さて検証環境がないので ガセ かもしれませんが気になる記事を見つけたので

>C:\WINDOWS\system32;C:\WINDOWS;
>をもっと前に持ってくるとどうなるでしょうか?

TeXLive だけであればこの対応でもよいかと思いますが、
ちょっと古いですが 以下の URL を見ると eclipse など JAVA を使っていると別の問題を引き起こす可能性があるように思います。

https://qiita.com/tetsukay/items/4891dde0771fedbb6dec
【Windows】java -versionの結果が期待値と異なる



和田 勇 への返信

Re: ptex2pdfコマンドで処理が止まる

- aminophen の投稿
> 該当の

https://twitter.com/Metaru992/status/1213464961986383872

これです。原因の切り分けが十分ではないので
* Java の何かと衝突したのか
* PATH の空白文字か何かがまずいのか
* PATH が長すぎるのか
など,切り分けして ptex2pdf 側で対策を打てるようなら考えたいとは思います。

% 単に C:\WINDOWS\system32;C:\WINDOWS; を前に持ってくるだけだと,
% 和田さんが御指摘のとおり Java で問題が起きるのですよね。
% そうすると,-shell-escape で Java を起動する何かがまずそうだし…。
% (restricted shell escape でも texosquery-jre8 がまずいかも)
aminophen への返信

Re: ptex2pdfコマンドで処理が止まる

- はやて (h20y6m) の投稿
PATH環境変数にパスとして不正なものが含まれているとそこでエラーになるようです。

質問者さんの場合は以下の2つがまずそうです。

"C:\Program Files\Java\jdk1.8.0_202\bin;C:\ProgramData\Oracle\Java\javapath"

c:\Program Files (x86)\Intel\iCLS Client\c:\Program Files\java\jre7\bin
はやて (h20y6m) への返信

Re: ptex2pdfコマンドで処理が止まる

- aminophen の投稿
> PATH環境変数にパスとして不正なものが含まれているとそこでエラーになる

ありがとうございます。本当ですね。
Windows 7 (!) で試してみました。

============================================
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\winuser>path
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\texlive\2019\bin\win32

C:\Users\winuser>ptex2pdf -l x
This is ptex2pdf[.lua] version 20181212.0.
Processing x
This is e-pTeX, Version 3.14159265-p3.8.2-190131-2.6 (utf8.sjis) (TeX Live 2019/W32TeX) (preloaded format=platex)
restricted \write18 enabled.
entering extended mode
(c:/texlive/2019/texmf-dist/tex/latex/tools/x.tex
pLaTeX2e <2019-10-01>+1 (based on LaTeX2e <2019-10-01> patch level 3)

ptex2pdf processing of x failed.


C:\Users\winuser>set PATH=C:\C:;%PATH%

C:\Users\winuser>path
PATH=C:\C:;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\texlive\2019\bin\win32

C:\Users\winuser>ptex2pdf -l x
This is ptex2pdf[.lua] version 20181212.0.
Processing x
ptex2pdf processing of x failed.


C:\Users\winuser>
============================================

これは texlua インタプリタの側でなんとかならないでしょうか?

ちなみに set PATH=C:\C:;%PATH% の代わりに
set PATH=D:\D:;%PATH% だと大丈夫でした。

※追記: os.execute の戻り値:
TeX コマンド起動に成功して,TeX がエラー終了した場合: 1
TeX コマンド起動に成功して,TeX が正常終了した場合: 0
TeX コマンド起動に失敗した場合: -1
aminophen への返信

Re: ptex2pdfコマンドで処理が止まる

- Akira Kakuto の投稿
> これは texlua インタプリタの側でなんとかならないでしょうか?

PATH に不正なものを含めないのは,ユーザの責任にする
ほうが良いと思います。
Akira Kakuto への返信

Re: ptex2pdfコマンドで処理が止まる

- aminophen の投稿
> PATH に不正なものを含めないのは,
> ユーザの責任にする

わかりました。
ptex2pdf でこの問題がよく報告されているのは事実
(原因は
* cmd.exe が PATH に入ってない
* cmd.exe が PATH に入ってはいるが,それより前に不正
のいずれか)
なので,ptex2pdf.lua で不正なパスに対して警告する方向で考えます。
大山 竜彦 への返信

Re: ptex2pdfコマンドで処理が止まる

- aminophen の投稿
> ptex2pdf.lua で不正なパスに対して警告する

ptex2pdf version 20200119.0 では,
  ptex2pdf processing of  filename failed.
というエラーの前に
  Invalid PATH setting found. Please ensure that cmd.exe can be found.
というメッセージが出るようにしてみました。
aminophen への返信

Re: ptex2pdfコマンドで処理が止まる

- はやて (h20y6m) の投稿
今更ですが……
どうやら CRT の _spawnlp, _spawnvp がエラーを出すようです。

また \write18 も同じ状況でエラーになるようです。
====
C:\work>PATH=C:\texlive\2019\bin\win32;C:\WINDOWS\system32;C:\WINDOWS

C:\work>ptex \relax
This is pTeX, Version 3.14159265-p3.8.2 (utf8.sjis) (TeX Live 2019/W32TeX) (preloaded format=ptex)
restricted \write18 enabled.

*\immediate\write18{extractbb --version}

This is extractbb Version 20191114

Copyright (C) 2008-2019 by Jin-Hwan Cho and Matthias Franz

This is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

*\bye
No pages of output.
Transcript written on texput.log.

C:\work>PATH=C:\C:;C:\texlive\2019\bin\win32;C:\WINDOWS\system32;C:\WINDOWS

C:\work>ptex \relax
This is pTeX, Version 3.14159265-p3.8.2 (utf8.sjis) (TeX Live 2019/W32TeX) (preloaded format=ptex)
restricted \write18 enabled.

*\immediate\write18{extractbb --version}
system returned with code -1

*\bye
No pages of output.
Transcript written on texput.log.

C:\work>
====

他の TeX 関連ツールのシェルコマンド実行機能でも発生するかもしれません。


一方、 \input "|command" は正常に動作するようです。