LATEX で tipa という発音記号を扱うパッケージを使っている。
ところが、某 Mac で組版しようとしていてエラーになった。
たまたま MacTeX 2024 が残っていて、そちらで組版したら正常に終了する。
でも、MacTeX 2025 でもちゃんと動く Mac もある。
色々試して、次のような .tex でもエラーが生じることがあることが分かった。
\documentclass[12pt,leqno,dvipdfmx]{ujarticle}
\usepackage{tipa}
\begin{document}
Hello
\end{document}
|
| うまく行く場合 |
% uplatex foobar.tex This is e-upTeX, Version 3.141592653-p4.1.2-u2.00-250202-2.6 (utf8.uptex) (TeX Live 2025) (preloaded format=uplatex) restricted \write18 enabled. entering extended mode (./foobar.tex pLaTeX2e <2023-02-14u04>+1, based on LaTeX2e <2025-06-01> patch level 1 L3 programming layer <2025-10-24> (/usr/local/texlive/2025/texmf-dist/tex/uplatex/base/ujarticle.cls Document Class: ujarticle 2020/09/30 v1.8f-u00 Standard upLaTeX class (/usr/local/texlive/2025/texmf-dist/tex/latex/base/leqno.clo) (/usr/local/texlive/2025/texmf-dist/tex/uplatex/base/ujsize12.clo)) (/usr/local/texlive/2025/texmf-dist/tex/latex/tipa/tipa.sty (/usr/local/texlive/2025/texmf-dist/tex/latex/base/fontenc.sty (/usr/local/texlive/2025/texmf-dist/tex/latex/tipa/t3enc.def))) (/usr/local/texlive/2025/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def) (./foobar.aux) (/usr/local/texlive/2025/texmf-dist/tex/latex/tipa/t3cmr.fd) [1] (./foobar.aux) ) Output written on foobar.dvi (1 page, 220 bytes). Transcript written on foobar.log. % |
| うまく行かない場合 |
% uplatex foobar.tex
This is e-upTeX, Version 3.141592653-p4.1.2-u2.00-250202-2.6 (utf8.uptex) (TeX Live 2025) (preloaded format=uplatex)
restricted \write18 enabled.
entering extended mode
(./foobar.tex
pLaTeX2e <2023-02-14u04>+1, based on
LaTeX2e <2025-11-01>
L3 programming layer <2025-10-24>
(/usr/local/texlive/2025/texmf-dist/tex/uplatex/base/ujarticle.cls
Document Class: ujarticle 2020/09/30 v1.8f-u00 Standard upLaTeX class
(/usr/local/texlive/2025/texmf-dist/tex/latex/base/leqno.clo)
(/usr/local/texlive/2025/texmf-dist/tex/uplatex/base/ujsize12.clo))
(/usr/local/texlive/2025/texmf-dist/tex/latex/tipa/tipa.sty
(/usr/local/texlive/2025/texmf-dist/tex/latex/base/fontenc.sty
(/usr/local/texlive/2025/texmf-dist/tex/latex/tipa/t3enc.def
! Missing \endcsname inserted.
<to be read again>
\target@series@value
l.357 {\sffamily
\xdef\@sffamilyname{\f@family}}
?
|
見れば分かるけれど、違いは LaTeX2e のパッケージのバージョンである。 LaTeX2e <2025-06-01> patch level 1 では動いて、 新しい LaTeX2e <2025-11-01> では動かない。 そうか、それで (古い) MacTeX 2024 では動いたのか。
新しいので動かないのは、面倒なことだな、と思ったのだが、 ChatGPT 様に尋ねたら驚きのアドバイス。
\documentclass の前に (ほとんどファイル先頭に書け、 ということだな)
\RequirePackage[2025/06/01]{platexrelease}
|
半信半疑で試してみたら
% uplatex foobar.tex
This is e-upTeX, Version 3.141592653-p4.1.2-u2.00-250202-2.6 (utf8.uptex) (TeX Live 2025) (preloaded format=uplatex)
restricted \write18 enabled.
entering extended mode
(./foobar.tex
pLaTeX2e <2023-02-14u04>+1, based on
LaTeX2e <2025-11-01>
L3 programming layer <2025-10-24>
(/usr/local/texlive/2025/texmf-dist/tex/platex/base/platexrelease.sty
(/usr/local/texlive/2025/texmf-dist/tex/latex/base/latexrelease.sty
(/usr/local/texlive/2025/texmf-dist/tex/latex/base/utf8.def
(/usr/local/texlive/2025/texmf-dist/tex/latex/base/omsenc.dfu)
(/usr/local/texlive/2025/texmf-dist/tex/latex/base/ot1enc.dfu)
(/usr/local/texlive/2025/texmf-dist/tex/latex/base/t1enc.dfu)
(/usr/local/texlive/2025/texmf-dist/tex/latex/base/ts1enc.dfu)))
Package platexrelease Warning: Version of `latexrelease' is newer than
(platexrelease) what `platexrelease' knows.
Package platexrelease Warning: The current package is for pLaTeX 2023-02-14:
(platexrelease) It has no patches beyond that date
(platexrelease) There may be an updated version
(platexrelease) of this package available from CTAN.
(/usr/local/texlive/2025/texmf-dist/tex/platex/base/plexpl3.sty
(/usr/local/texlive/2025/texmf-dist/tex/latex/l3kernel/expl3.sty
(/usr/local/texlive/2025/texmf-dist/tex/latex/l3backend/l3backend-dvips.def)))
(/usr/local/texlive/2025/texmf-dist/tex/platex/base/plexpl3.ltx))
(/usr/local/texlive/2025/texmf-dist/tex/uplatex/base/ujarticle.cls
Document Class: ujarticle 2020/09/30 v1.8f-u00 Standard upLaTeX class
(/usr/local/texlive/2025/texmf-dist/tex/latex/base/leqno.clo)
(/usr/local/texlive/2025/texmf-dist/tex/uplatex/base/ujsize12.clo))
(/usr/local/texlive/2025/texmf-dist/tex/latex/tipa/tipa.sty
(/usr/local/texlive/2025/texmf-dist/tex/latex/base/fontenc.sty
(/usr/local/texlive/2025/texmf-dist/tex/latex/tipa/t3enc.def)))
LaTeX Warning: Unused global option(s):
[dvipdfmx].
(./foobar.aux) (/usr/local/texlive/2025/texmf-dist/tex/latex/tipa/t3cmr.fd)
[1] (./foobar.aux) )
Output written on foobar.dvi (1 page, 252 bytes).
Transcript written on foobar.log.
mk@mk-MacBook-light work %
|
おお、通った。でも、これはいつでもうまく行くものではないのでは? 質問してみる。
| これまでこういうことをしたことはありません。 古いパッケージを利用するように指定したということですが、 これはいつも使えるものでしょうか?例えば新しくインストールした場合など、 古いパッケージがインストールされていないように思えます。 |
ChatGPT の回答
|
「古い pLaTeX/LaTeX を使うように指定したのに、
その古い版が本当に存在するのか?」
という疑問はもっともです。 結論から言うと:
**\RequirePackage[〈日付〉]{platexrelease}
は「古いファイルを要求する」のではなく、
「新しい pLaTeX/LaTeX が 自分の内部に持っている“互換モード”パッチを使って、古い版として振る舞う」 と宣言するだけです。 つまり、古いファイルそのものをインストールする必要はありません。 これは LaTeX2e の公式設計で、常に使える「将来に渡って安定した運用方法」です。 |
| 知らなかったので大変驚きました。実現するのがとても大変そうな仕掛けですね。 |
|
LaTeX/pLaTeX の内部事情は、普段表に出ないだけで意外と “精密な互換レイヤー”
が広く張り巡らされていて、知ると驚かれる方が多いです。今回のご質問は、
その典型例を完全に踏んでいましたので、むしろとても良いタイミングでした。
もし今後も TeX Live のアップデートで「昨日まで動いたのに今日壊れた」 という現象に遭遇したら、
\RequirePackage[YYYY/MM/DD]{platexrelease}
を“安全弁”として試すことを覚えておくと、本当に助けになります。
|
へー。