LaTeX を 2020-02-07 版に更新すると、\newtheorem でエラー

LaTeX を 2020-02-07 版に更新すると、\newtheorem でエラー

- 栃折 成紀 の投稿
返信数: 12
W32TeX 2020/02/07版に更新して、次のtest.texをタイプセットしてみるとエラーとなります。
# 試運転をしているだけです
これについては、どのような対応がよいでしょうか。
%test.tex---------------------------------------------------------------------------------------
\documentclass[a4paper]{jarticle}
\usepackage{amsmath}

\newtheorem{defi}{定義}

\begin{document}

\begin{defi}
$a$
\end{defi}

\end{document}
%test.log---------------------------------------------------------------------------------------
! Use of \@item doesn't match its definition.
<write> ...Font Warning: Font shape `\reserved@a '
undefined\MessageBreak us...
l.9 $
a$
?
栃折 成紀 への返信

Re: LaTeX を 2020-02-07 版に更新すると、\newtheorem でエラー

- 渡部 卓雄 の投稿
解決策でなくてすみません。MacTeX 2019で各パッケージを最新にしたところ、thebibliography環境でもplatexで同様のエラーが発生するようになりました。このエラーですが、platexではなくlatexにすると発生しません。また、{\em Journal}の部分をJournalあるいは\emph{Journal}にすると発生しなくなります(といっても学会指定のスタイルファイルを使ってBiBTeXで生成した内容に {\em ...} が含まれるので難儀しています)。

\documentclass{article}

\begin{document}

Foo\cite{foo}.

\begin{thebibliography}{10}

\bibitem{foo} A. Author, Foo, {\em Journal}, Vol. 1, No. 1, 2020.

\end{thebibliography}

\end{document}

This is e-pTeX, Version 3.14159265-p3.8.2-190131-2.6 (utf8.euc) (TeX Live 2019) (preloaded format=platex)

restricted \write18 enabled. entering extended mode (./foo.tex pLaTeX2e <2020-02-02>+1 (based on LaTeX2e <2020-02-02> patch level 1) L3 programming layer <2020-02-03> (/usr/local/texlive/2019/texmf-dist/tex/latex/base/article.cls Document Class: article 2019/12/20 v1.4l Standard LaTeX document class (/usr/local/texlive/2019/texmf-dist/tex/latex/base/size10.clo)) (/usr/local/texlive/2019/texmf-dist/tex/latex/l3backend/l3backend-dvips.def) (./foo.aux) ! Use of \@item doesn't match its definition. <write> ...Font Warning: Font shape `\reserved@a ' undefined\MessageBreak us... l.5 \bibitem{foo} A. Author, Foo, {\em Journal}, Vol. 1, No. 1, 2020. ?

渡部 卓雄 への返信

Re: LaTeX を 2020-02-07 版に更新すると、\newtheorem でエラー

- 渡部 卓雄 の投稿

これでも同様のエラーになりますね。スタイルファイルをjsarticleにするとエラーは出なくなりますが、jarticleやarticleだとダメです。また、\em の代わりに \it や \sl でも同様のエラーになりますが、 \rm, \sf, \tt の場合はエラーになりません。\emph や \textit, \textsl でもエラーになりません。


 

渡部 卓雄 への返信

Re: LaTeX を 2020-02-07 版に更新すると、\newtheorem でエラー

- Z. R. の投稿
\def\merge@kanji@series@#1#2#3\@nil{%
  \def\@reserveda{#3}%
  \ifx\@reserveda\@empty
    \set@target@series@kanji{#2}%
  \else
    \begingroup\let\f@encoding\k@encoding\let\f@family\k@family
      \maybe@load@fontshape\endgroup
    \edef\@reserveda{\k@encoding /\k@family /#1/\k@shape}%
     \ifcsname \@reserveda \endcsname
       \set@target@series@kanji{#1}%

ここで \reserved@a でなくて \@reserveda となっているのが気になりますね。単なるミスなのか、それとも欧文側と名前を変える必要があるのか。

Z. R. への返信

Re: LaTeX を 2020-02-07 版に更新すると、\newtheorem でエラー

- 北川 弘典 の投稿
> ここで \reserved@a でなくて \@reserveda となっているのが気になりますね。

以前は欧文側も \@reserveda だったのですが,LaTeX2e <2020-02-02> patch level 1 で
\reserved@a に変更されたそうです( https://github.com/latex3/latex2e/issues/264 ).
Z. R. への返信

Re: LaTeX を 2020-02-07 版に更新すると、\newtheorem でエラー

- Akira Kakuto の投稿
> ここで \reserved@a でなくて \@reserveda となっているのが
> 気になりますね。

ありがとうございます。
試験的に plcore.ltx において
\@reserveda ---> \reserved@a
に変更して,format を作りなおすと,エラーが
なくなりました。
従って,platex が更新されるまで
\RequirePackage[2019/10/01]{platexrelease}
\documentclass...
Akira Kakuto への返信

Re: LaTeX を 2020-02-07 版に更新すると、\newtheorem でエラー

- aminophen の投稿
本家 LaTeX2e 2020-02-02 のミス?を
pLaTeX2e 2020-02-02 (+1) にも引き継いでしまっていました。
LaTeX2e 2020-02-02 patch level 1 で修正されたことに昨日気づいて
https://github.com/texjporg/platex/commit/b1868fa56d1587641e22afe091c0056f0c30e1f4
のとおり pLaTeX2e 開発版では直したのですが,実害が出ていたのですね。
今夜修正版 pLaTeX2e 2020-02-02 +2 版として出します。
aminophen への返信

Re: LaTeX を 2020-02-07 版に更新すると、\newtheorem でエラー

- aminophen の投稿
今日 (2020-02-09) 付けで
  pLaTeX2e <2020-02-02>+2
をリリースしました。
https://github.com/texjporg/platex/releases/tag/2020-02-09
明日朝には TeX Live のメインサーバに取り込まれることを期待。

=====

ついでにお知らせなのですが,TeX Live 2019 は 2020-02-28 で更新が終了 (frozen) し,
翌日からは TeX Live 2020 の準備期間に入ります。
(参考: https://www.tug.org/texlive/ )
そのタイミングに合わせて,「もっと新しい pLaTeX」を
  pLaTeX2e <2020-03-01>
としてリリースしようと考えています。採用予定の修正は
https://github.com/texjporg/platex/issues/89
に列挙しています。

本日リリースした pLaTeX2e <2020-02-02>+2 に収録された「exppl2e.sty」には,
上記の「もっと新しい pLaTeX」と同等のコードを含めてあります。そのため,

* pLaTeX2e <2020-02-02>+2 にアップデートしたうえで,
* お手許のソースファイルの冒頭に \RequirePackage{exppl2e} という行を加えれば,

TeX Live 2020 に収録されるであろう「もっと新しい pLaTeX」を簡単に模擬することができます。
テストに役立つと思いますので,事前に試していただけると助かります。
aminophen への返信

Re: LaTeX を 2020-02-07 版に更新すると、\newtheorem でエラー

- 栃折 成紀 の投稿
pLaTeX2e <2020-02-02>+2 (W32TeX 2020-02-10版) でタイプセットできるようになりました。

修正いただいた方々、返信いただいた皆様ありがとうございます。

aminophen への返信

Re: LaTeX を 2020-02-07 版に更新すると、\newtheorem でエラー

- aminophen の投稿
今日 TeX Live に本家 LaTeX2e の 2020-02-02 patch level 3 版が入りました。
新 NFSS で発生した https://github.com/latex3/latex2e/issues/277 の問題への
対処を意図しているようです。

pLaTeX2e の方は多忙につき時間が取れず,
追随作業に取りかかれそうにありません。
TeX Live 2019 のフリーズ(2/28予定)に間に合わない
可能性が高いので,もし不都合あれば
ソース冒頭に \RequirePackage[2019/10/01]{platexrelease} と書く
“例の巻き戻し”で難を逃れてください。
aminophen への返信

Re: LaTeX を 2020-02-07 版に更新すると、\newtheorem でエラー

- 本田 知亮 の投稿
情報ありがとうございます.
ぜんぜん気が付いてませんでした,
巻き込まれると致命的でした・・危ない。。。

issue277のタイトルの通りの現象なんですね.


\documentclass{article}
\begin{document}\thispagestyle{empty}
%\def\rmdefault{ptm}%%この二行を
%\def\sfdefault{pcr}%%コメントアウトしたり生かしたりするとわかる
\fontfamily{ptm}\selectfont%%%timesにする
\begin{description}
\item[hello]%%cmr/bx/n ??? ptm/b/nでは?
hello~%%ptm/m/nになっててOK
\textbf{\sffamily hello}~%%cmss/b/n ??? cmss/bx/nでは?
{\bfseries\sffamily hello}~%%cmss/b/n ??? cmss/bx/nでは?
{\fontseries{bx}\sffamily hello}%%cmss/bx/nでOK
\end{description}
\showoutput
\end{document}
\end{document}

\textXXとか\XXfamilyのような
ユーザ向けのコマンドを使った際に,
\f@familyを参照しないといけないのに
\XXdefaultを使ってしまって,
結果的に,\XXdefaultと\f@familyが一致していないときに
familyまで変わってしまっている

というような理解をしました.

対症療法としては
こまめに\XXdefaultも変えればなんとかなるのかもしれません


#issue277のミッテルバッハさんのコード・・・追えない
#そもそも2020/02/02のコードの変更点が追い切れていない

aminophen への返信

Re: LaTeX を 2020-02-07 版に更新すると、\newtheorem でエラー

- aminophen の投稿
pLaTeX が追いつかないうちに,本家 LaTeX がさらに新しくなって
LaTeX2e 2020-02-02 patch level 4 になりました。
…が,今度は https://github.com/latex3/latex2e/issues/293 のバグが
入ってしまったとのこと。
pLaTeX 側はもう TeX Live 2019 の間は敢えて何もせず,
LaTeX の新 NFSS の状況が収まるまで静観することにします。
栃折 成紀 への返信

Re: LaTeX を 2020-02-07 版に更新すると、\newtheorem でエラー

- aminophen の投稿
念のため:今朝 LaTeX2e 2020-02-02 patch level 5 が出ました。
前回コメントに書いた https://github.com/latex3/latex2e/issues/293 のバグは消えたようです。

=====

さて,現在の TeX Live 2019 最新版

* LaTeX2e 2020-02-02 patch level 5
* pLaTeX2e 2020-02-02 +2

において,本スレッドの冒頭の投稿で報告されている

\documentclass[a4paper]{jarticle}
\usepackage{amsmath}

\newtheorem{defi}{定義}

\begin{document}

\begin{defi}
$a$
\end{defi}

\end{document}

というソースを処理すると以下の警告が出ます(シリーズが空っぽ)。

LaTeX Font Warning: Font shape `JT1/mc//it' undefined
(Font) using `JT1/mc//n' instead on input line 9.

LaTeX Font Warning: Font shape `JY1/mc//it' undefined
(Font) using `JY1/mc//n' instead on input line 9.

以前のバージョン

* LaTeX2e 2019-10-01 patch level 3
* pLaTeX2e 2019-10-01 +1

の頃は,以下のような警告でした。

LaTeX Font Warning: Font shape `JT1/mc/m/it' undefined
(Font) using `JT1/mc/m/n' instead on input line 10.

LaTeX Font Warning: Font shape `JY1/mc/m/it' undefined
(Font) using `JY1/mc/m/n' instead on input line 10.

なぜ変わったかはこれから調べ,直し方を検討する必要がありますが,
前回コメントしたとおり本家 LaTeX がまだ不安定のため当面保留します。


% [edit]
% すぐに原因がわかりました。
% \series@drop@one@m という LaTeX2e 内部命令の定義が変わったからですね…。
%
% しかも
% * LaTeX2e 2020-02-02 patch level 5
% * 開発版 https://github.com/latex3/latex2e の 'develop' ブランチ
% の間で \series@maybe@drop@one@m の定義が変わっていてさらに面倒くさい…。