最近のplatexと自前で定義したページスタイル

最近のplatexと自前で定義したページスタイル

- TAKENO Shigeharu の投稿
返信数: 3

platex で自前で定義したページスタイルを使っていたのですが、最近 texlive-2025 に更新された方の platex ではそれが通らなくなりました。

従来の platex (FreeBSD の texlive-20240312): 

This is e-pTeX, Version 3.141592653-p4.1.1-230214-2.6 (euc) (Web2C 2024) (preloaded format=platex)
pLaTeX2e <2023-02-14>+1, based on
LaTeX2e <2024-06-01> pre-release-1 (develop 2025-2-25 branch)

新しい方の platex (FreeBSD の texlive-20250308):

This is e-upTeX, Version 3.141592653-p4.1.2-u2.00-250202-2.6 (euc) (Web2C 2025) (preloaded format=platex)
pLaTeX2e <2023-02-14>+1, based on
LaTeX2e <2025-06-01> pre-release-2 (develop 2025-6-18 branch)

自前のページスタイルは以下の通り:

----- ここから -----

\makeatletter
\def\mydraft{}
\def\ps@mypages{\let\@mkboth=\@gobbletwo
  \def\@oddhead{\underline{\hbox to \textwidth{\rightmark \hfil\thepage}}}
  \def\sectionmark##1{\markright{\uppercase{%
        \ifnum \c@secnumdepth >\z@
          \thesection. \ \fi ##1}}}%
  \def\@evenhead{}\def\@oddfoot{\mydraft\hfil}\def\@evenfoot{}%
}
\def\ps@mypagesii{\let\@mkboth=\@gobbletwo
  \def\@oddhead{\underline{\hbox to \textwidth{\rightmark \hfil\thepage}}}
  \def\chaptermark##1{\markright{\uppercase{%
        \ifnum \c@secnumdepth >\m@ne
          \@chapapp\ \thechapter. \ \fi ##1}}}%
  \def\sectionmark##1{\markright{\uppercase{%
        \ifnum \c@secnumdepth >\z@
          \thesection. \ \fi ##1}}}%
  \def\@evenhead{}\def\@oddfoot{}\def\@evenfoot{}%
}
\makeatother
\pagestyle{mypages}

----- ここまで -----

\section{} がひらがなだけなら通るのですが、セクションに漢字が入るとだめみたいで、

「! Missing } inserted.」とか「! Extra }, or forgotten $.」とか怒られます。

\documentclass{jarticle}

(上の定義)

\begin{document}

\section{漢字}

\end{document]

位でうちでは再現されます。

どなたか対処をご存知でしたらよろしくお願い致します。

TAKENO Shigeharu への返信

Re: 最近のplatexと自前で定義したページスタイル

- 和田 勇 の投稿

回答ではなく、同じ障害が macOS 環境でも発生していることの報告です。

最後の \end{document] はタイポだとして} に修正して検証してみました。

macOS 環境ですが、TL2024 では問題なく処理できます。 TL2025 ではそのままでは以下のエラーです。

! Extra }, or forgotten $.
\@outputpage ...or \hb@xt@ \textwidth {\@thehead }
                                                  \color@endbox }\dp \@tempb...
l.30 \end{document}

しかし\section{ABC} \section{漢字} とすると問題なく通ります。

以下は、 TAKENO Shigeharu さんの示されたものを TL2024, TL2025 で処理した際 に生成されるログの比較です。

--- 2025-06-18-3972-2024.log    2025-06-18 17:01:54.540107213 +0900
+++ 2025-06-18-3972-2025.log    2025-06-18 17:01:27.717822677 +0900
@@ -1,4 +1,4 @@
-This is e-upTeX, Version 3.141592653-p4.1.1-u1.30-230214-2.6 (utf8.euc) (TeX Live 2024) (preloaded format=platex 2025.2.18)  18 JUN 2025 17:01
+This is e-upTeX, Version 3.141592653-p4.1.2-u2.00-250202-2.6 (utf8.euc) (TeX Live 2025) (preloaded format=platex 2025.5.4)  18 JUN 2025 17:01
 entering extended mode
  restricted \write18 enabled.
  %&-line parsing enabled.
@@ -6,39 +6,38 @@
 (./2025-06-18-3972.tex
 pLaTeX2e +1, based on
 LaTeX2e  patch level 2
-L3 programming layer 
-(/usr/local/texlive/2024/texmf-dist/tex/platex/base/jarticle.cls
+L3 programming layer 
+(/usr/local/texlive/2025/texmf-dist/tex/platex/base/jarticle.cls
 Document Class: jarticle 2020/09/30 v1.8f Standard pLaTeX class

なお、先ほど TL2025 を最新に更新しましたが、同じ現象でした。

和田 勇 への返信

Re: 最近のplatexと自前で定義したページスタイル

- はやて (h20y6m) の投稿
TeX Live 2025 の e-upTeX エンジンの \uppercase プリミティブで和文文字が壊れているような気がします。

> euptex "\uppercase{\immediate\write16{吾輩は猫である}}\bye"

[TeX Live 2024]
---
This is e-upTeX, Version 3.141592653-p4.1.1-u1.30-230214-2.6 (utf8.uptex) (TeX Live 2024) (preloaded format=euptex)
restricted \write18 enabled.
entering extended mode
吾輩は猫である
No pages of output.
Transcript written on texput.log.
---

[TeX Live 2025]
---
This is e-upTeX, Version 3.141592653-p4.1.2-u2.00-250202-2.6 (utf8.uptex) (TeX Live 2025) (preloaded format=euptex)
restricted \write18 enabled.
entering extended mode
Runaway text?
Ϩ\BAD.Ϩ\BAD.ϨϨϨ}
! Forbidden control sequence found while scanning text of \write.
<inserted text>
                }
<to be read again>
                  \bye
<*> ...mediate\write16{吾輩は猫である}}\bye

?
---
はやて (h20y6m) への返信

Re: 最近のplatexと自前で定義したページスタイル

- Yamamoto Munehiro "munepi" の投稿
はやてさんがおっしゃっているとおりですね。

これはpTeXだけのことでないですね。
latex3/latex2e: Case conversions (\uppercase etc) are completely broken in UTF-8 #103
https://github.com/latex3/latex2e/issues/103

一般に、LaTeXではTeX primitiveの\uppercaseでなく、\MakeUppercaseを使いますね。

----------<8----------<8----------
%#!ptex2pdf -l d3972
\documentclass{jarticle}

\makeatletter
\def\mydraft{}
\def\ps@mypages{%
  \let\ps@jpl@in\ps@mypages
  \let\@mkboth=\@gobbletwo
  \def\@oddhead{\underline{\hbox to \textwidth{\rightmark \hfil\thepage}}}%
  \def\sectionmark##1{\markright{%
      \ifnum\c@secnumdepth>\z@
        \thesection.\space
      \fi
      \MakeUppercase{##1}%\uppercase{##1}%
    }}%
  \def\@evenhead{}%
  \def\@oddfoot{\mydraft\hfil}%
  \def\@evenfoot{}%
}
\makeatother
\begin{document}
\pagestyle{mypages}\setcounter{page}{2}

\section{漢字}
\section{abcdefg}

\end{document}
----------<8----------<8----------