platexでtypesetできなくなった件

platexでtypesetできなくなった件

- H H の投稿
返信数: 8
texlive2023を使っています。tlmgr updateを定期的にしていますが、最近(おそらく1週間以内?)、タイプセットできなくなりました。私だけでしょうか?なにか情報があればお教えください。よろしくお願いします。

% cat test.tex
\documentclass{article}
\begin{document}
test
\end{document}

% eptex -progname=platex test.tex
This is e-pTeX, Version 3.141592653-p4.1.0-230214-2.6 (utf8.euc) (TeX Live 2023) (preloaded format=platex)
restricted \write18 enabled.
entering extended mode
(./test.tex(guessed encoding #3: ASCII = utf8)
pLaTeX2e <2023-02-14>+1 (based on LaTeX2e <2022-11-01> patch level 1)
L3 programming layer <2023-02-22>
(/usr/local/texlive/2023/texmf-dist/tex/latex/base/article.cls(guessed encoding #5: ASCII = utf8)
Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
(/usr/local/texlive/2023/texmf-dist/tex/latex/base/size10.clo(guessed encoding #6: ASCII = utf8)))
(/usr/local/texlive/2023/texmf-dist/tex/latex/l3backend/l3backend-dvips.def(guessed encoding #5: ASCII = utf8)
! Undefined control sequence.
l.101 \cs_new:Npe
\__color_backend_devicen_colorants:n #1
?

H H への返信

Re: platexでtypesetできなくなった件

- 北川 弘典 の投稿
2023 年 6 月に,pLaTeX は e-upTeX エンジン(の,内部コードが EUC/Shift_JIS の状態)で動くことになりました.

% $ platex test
This is e-upTeX, Version 3.141592653-p4.1.0-u1.29-230214-2.6 (utf8.euc) (TeX Live 2024) (preloaded format=platex)
restricted \write18 enabled.
...

そのため,eptex ではなく euptex を呼び出すことにすると良いと思います.

% euptex -progname=platex test
This is e-upTeX, Version 3.141592653-p4.1.0-u1.29-230214-2.6 (utf8.uptex) (TeX Live 2024) (preloaded format=platex)
restricted \write18 enabled.
Kanji internal encoding incompatible with the preloaded format.
I'll stick to euc.
entering extended mode
(./test.tex(guessed encoding #3: ASCII = utf8)
pLaTeX2e <2023-02-14>+1, based on
LaTeX2e <2023-06-01> patch level 1
L3 programming layer <2023-10-10>
...
Output written on test.dvi (1 page, 248 bytes).
Transcript written on test.log.
北川 弘典 への返信

Re: platexでtypesetできなくなった件

- H H の投稿
ありがとうございます。typesetできました。直らない場合長年のTeXShopの設定をあちこちのPCで変更して回ることになりそうです。

検索すると、昨日のstackoverflowにも似たような質問がありました。
https://github.com/rstudio/tinytex/issues/424#issuecomment-1761658222
https://stackoverflow.com/questions/77291118/tinytex-or-knitr-error-undefined-control-sequence-l-128-cs-newnpe-color
https://stackoverflow.com/questions/77290665/did-i-break-r-markdown-every-file-i-try-gives-the-error-undefined-control-se
北川 弘典 への返信

Re: platexでtypesetできなくなった件

- でび まる の投稿
でびまる といいます。本題からは外れますが

> 2023 年 6 月に,pLaTeX は e-upTeX エンジン(の,内部コードが EUC/Shift_JIS の状態)で動くことになりました.

ここだけに反応します。現状では pTeX と upTeX の並列的な開発がされていますが
pTeX の当初の開発陣は既に(かなり以前から)活動してない様です。
また upTeX は pTeX の上位互換であり、既に実用的に pTeX と同じレベルになってると思います。
こういう状況なので開発は upTeX だけにして pTeX は現状に凍結するような形でも良いのではないでしょうか。
でび まる への返信

Re: platexでtypesetできなくなった件

- t tk の投稿
ptex, eptex, uptex, euptex の4個のバイナリがすべて存在する状態が長く続いており、そろそろ整理統合したい、という話は 2017年頃から議論されています。
https://github.com/texjporg/tex-jp-build/issues/32

TeX Live 2023は、pLaTeX も euptex エンジン(の,内部コードが EUC/Shift_JIS の状態)で動くようにしよう、と活動していましたが 2023年6月にずれ込みました、
というのが現状です。バイナリはeuptexエンジン一つに統合し、ptex, eptex, uptexはエイリアスにする方針で活動中です。やっとここまで来た、という感じです。

実際、内部のソースコードの構成は、日本語化の主要部分の機能は pTeX が持ち、文字コードのUnicode拡張( upTeX ), さらにe-TeX 拡張 ( epTeX, eupTeX ) という
つくり自体は何も変わっていません。
なので、組版の機能に関する部分、unicode化に関する部分、e-TeX拡張に関する部分、それぞれで触るソースコードが異なる状況です。
pTeXだけを凍結するのはかえって難しい構造になっています。
pTeXだけを凍結する、というイメージはあまりなくて、全部まとめてメンテナンスできるようにするイメージです。
t tk への返信

Re: platexでtypesetできなくなった件

- でび まる の投稿
返信ありがとうございました。
> https://github.com/texjporg/tex-jp-build/issues/32
とても興味深く読ませていただきました(が理解できかね時間かかってしまいました)。

そこでのやりとりで etex 拡張について
* eptex/euptex はそれぞれ ptex/uptex の上位互換である(ので)
ptex => eptex,uptex => euptex のエイリアスで済ませることはできないだろうか?
* ptex => eptex,uptex => euptex のエイリアスも不要で、ptex, uptexにetexの機能を入れてしまえばよい

の様な話がありますが、これをまねて unicode 拡張についても平行して考えれば
ptex/platex は倉庫に入れておいて表には uptex/uplatex (e も付けておいて)
だけでも良さそう(ラフな言い方ですが)と思ったのですが、それは「かえって難しい」という状況ということでしょうか。了解しました。(反応遅く申し訳ありません)
でび まる への返信

Re: platexでtypesetできなくなった件

- t tk の投稿
話がかみあっているようないないような、半端なもやもやした感じなのでもう少し続けてみます。
異論反論というわけではなく、開発側の悩みもあるし、多様なアイディアやヒントが得られるかもしれないと思いつつ。

githubでの議論で、バイナリやソースコードを整理統合しよう、という方向性は一致しているものの、唯一の正解があるわけでもなく、今の方向を選択している状況です。なので、「別の方針があったのでは?」のような論はあり得ると思います。

バイナリは、最終的にひとつにまとめる方向です。
ソースコードは、おそらく、ざっくり言って
( ( ( tex.web + tex.ch + ptex が生成できるチェンジファイル ) + uptex が生成できるチェンジファイル ) + euptex が生成できるチェンジファイル )
みたいな構成になると思います。

ptex のバイナリは既に TeX Live 2023では消えています。(これは倉庫に入ったことになる?)
ptex のエイリアスは残す方針です。ptex というコマンドを消す予定はありません。
なので、ユーザーから見て ptex は今後も動きますが、実体は ptex ではなく 「euptex (の ptex互換モード) 」になります。

で、「euptex (の ptex互換モード) 」を使った場合、( tex.web + tex.ch + ptex が生成できるチェンジファイル ) の部分を使うことになります。
それは、euptex の一部でもあるし、もとの ptex とほぼ変わらないとも言えます。
( tex.web + tex.ch + ptex が生成できるチェンジファイル ) で作ったバイナリ ( ptex そのもの ) はすでに消してあります。
こういう状態は「ptex が倉庫に入った」状態なのか、よく分かりません。
現在もエイリアスであるとはいえptex ほぼそのものを使っているとも言えるし、ptex のバイナリーはお蔵入りしているとも言えるように思います。

euptex の日本語組版に関するメンテナンスをする場合、(ptex が生成できるチェンジファイル) を変更することになります。
こういう状態を指して「ptex が倉庫に入った」と称していいのか、ぴんときません。
どちらかというと、私の感覚では ptex は euptex の体内でばりばり働いている臓器のようなイメージです。表から見えなくても現役バリバリです。止まると死んでしまいます。
なので倉庫に入れられていない感じです。感覚の話ですが。

「ptex/platex は倉庫に入れて」の意味は、
(1) ptex (拡張機能無し)のバイナリは用意しない
(2) コマンドとしてもデフォルトは用意しない
(3) 文字コード SJIS/EUC にまつわる機能はメンテナンスしない
(4) その他
いろいろ考えられると思います。
私の考えは、
(1)の意味ではすでに実現「倉庫に入っている」(バイナリは用意しない)
(2)の意味では「倉庫に入れない」(今後もエイリアスとしてデフォルトで用意する)
(3)の意味では「倉庫に入れる」(今後はメンテナンスしない)
(4)何があるのか思いつかない
といったところです。
ただ、(3)の路線は異論が多いと予想しています。

すれ違っているようなので、追加コメントでした。
t tk への返信

Re: platexでtypesetできなくなった件

- でび まる の投稿
多分開発者さん側の意識とユーザー側の意識の違いが、もやもや、の原因なのかも分りません。以下ちょっと明確でないのは承知の上で pTeX、upTeX を使ってます。

話を単純にすると、pTeX は上位互換な upTeX が開発されたので置き換える、で済むのですが
TeX の性格上 pTeX を削除するのは無理があるので両者共存になるのは理解できます。
ただ何らかの方法で pTeX は obsolete で現役なのは upTeX と明示できる方が良いのではないかと思いました。
その方法として最初は「凍結」を使ってみたけど、それはかえって難しくなりそうなので、実際どうするのかはおいておきイメージとして曖昧に「倉庫に入れる」と表現したというところです。
(なので「倉庫に入れる」は軽い意味です)
現実に倉庫に入れる方法には、過激な方法から穏かな方法まで色々考えられると思いますが、例えば
やや過激な方向に振ってみるなら pTeX はメインな TeXLive から TLContrib に移動するとかまあ色々考えられるかと思います。

> 「ptex/platex は倉庫に入れて」の意味は、
> (1) ptex (拡張機能無し)のバイナリは用意しない
> (2) コマンドとしてもデフォルトは用意しない
> (3) 文字コード SJIS/EUC にまつわる機能はメンテナンスしない
> (4) その他
上の様に元々曖昧な意味なのですが、上の TLContrib の例の様に(2)が想定に近いと思います。
更に誤解してなければ(3)も想定に近いです。時間かけても整理しきれてませんがこんな所です。