texlive[67439] Master/texmf-dist: bxjscls (22jun23)

commits+karl at tug.org commits+karl at tug.org
Thu Jun 22 22:40:06 CEST 2023


Revision: 67439
          http://tug.org/svn/texlive?view=revision&revision=67439
Author:   karl
Date:     2023-06-22 22:40:06 +0200 (Thu, 22 Jun 2023)
Log Message:
-----------
bxjscls (22jun23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/bxjscls/README-ja.md
    trunk/Master/texmf-dist/doc/latex/bxjscls/README.md
    trunk/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.pdf
    trunk/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex
    trunk/Master/texmf-dist/doc/latex/bxjscls/bxjscls.pdf
    trunk/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
    trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls
    trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls
    trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty
    trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty
    trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def
    trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def
    trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def
    trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def
    trunk/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty
    trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls
    trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls

Modified: trunk/Master/texmf-dist/doc/latex/bxjscls/README-ja.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/bxjscls/README-ja.md	2023-06-22 19:34:01 UTC (rev 67438)
+++ trunk/Master/texmf-dist/doc/latex/bxjscls/README-ja.md	2023-06-22 20:40:06 UTC (rev 67439)
@@ -110,6 +110,8 @@
 更新履歴
 --------
 
+  * Version 2.8a 〈2023/06/20〉
+      - バグ修正。
   * Version 2.8  〈2023/06/14〉
       - jsclasses の 2023/02/23 と同期。
       - hyperref の unicode 設定に対する調整処理の見直し。

Modified: trunk/Master/texmf-dist/doc/latex/bxjscls/README.md
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex	2023-06-22 19:34:01 UTC (rev 67438)
+++ trunk/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex	2023-06-22 20:40:06 UTC (rev 67439)
@@ -12,8 +12,8 @@
 \bxtexlogoimport{*}
 \usepackage{shortvrb}
 \MakeShortVerb{\|}
-\newcommand{\PkgVersion}{2.8}
-\newcommand{\PkgDate}{2023/06/14}
+\newcommand{\PkgVersion}{2.8a}
+\newcommand{\PkgDate}{2023/06/20}
 \newcommand{\Pkg}[1]{\textsf{#1}}
 \newcommand{\Meta}[1]{$\langle$\mbox{}\nobr#1\nobr\mbox{}$\rangle$}
 \newcommand{\Note}{\par\noindent ※}

Modified: trunk/Master/texmf-dist/doc/latex/bxjscls/bxjscls.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx	2023-06-22 19:34:01 UTC (rev 67438)
+++ trunk/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx	2023-06-22 20:40:06 UTC (rev 67439)
@@ -56,7 +56,8 @@
 %<*driver>
 \ProvidesFile{bxjscls.dtx}
 %</driver>
-  [2023/06/14 v2.8  BXJS document classes]
+  [2023/06/20 v2.8a BXJS document classes]
+% [2023/06/14 v2.8  BXJS document classes]
 % based on jsclasses [2023/02/23]
 % [2022/04/10 v2.7a BXJS document classes]
 % [2022/03/30 v2.7  BXJS document classes]
@@ -205,16 +206,34 @@
 % \begin{quote}
 %   \begin{tabular}{lll}
 %     $\langle$\textsf{article}$\rangle$ & \texttt{bxjsarticle.cls}
-%      & 短いレポート(章なし) \\
+%      & 短いレポート(章なし)のクラス \\
 %     $\langle$\textsf{report}$\rangle$ & \texttt{bxjsreport.cls}
-%      & 長いレポート(章あり) \\
+%      & 長いレポート(章あり)のクラス \\
 %     $\langle$\textsf{book}$\rangle$    & \texttt{bxjsbook.cls}
-%      & 書籍用 \\
+%      & 書籍用のクラス \\
 %     $\langle$\textsf{slide}$\rangle$   & \texttt{bxjsslide.cls}
-%      & スライド用 \\
+%      & スライド用のクラス \\
+%     $\langle$\textsf{minimal}$\rangle$ & \texttt{bxjsja-minimal.def}
+%      & minimal和文ドライバ \\
+%     $\langle$\textsf{standard}$\rangle$ & \texttt{bxjsja-standard.def}
+%      & standard和文ドライバ \\
+%     $\langle$\textsf{modern}$\rangle$ & \texttt{bxjsja-modern.def}
+%      & modern和文ドライバ(未公開)\\
+%     $\langle$\textsf{pandoc}$\rangle$ & \texttt{bxjsja-pandoc.def}
+%      & pandoc和文ドライバ \\
+%     $\langle$\textsf{compat}$\rangle$ & \texttt{bxjscompat.sty}
+%      & 古いやつをどうにかする補助パッケージ \\
+%     $\langle$\textsf{cjkcat}$\rangle$ & \texttt{bxjscjkcat.sty}
+%      & modernドライバ用の補助パッケージ \\
+%     $\langle$\textsf{ancpandoc}$\rangle$ & \texttt{bxjspandoc.sty}
+%      & Pandoc用の補助パッケージ \\
 %   \end{tabular}
 % \end{quote}
 %
+% \Note このソースには\texttt{jsclasses.dtx}との差分を抑制する
+% ために“jspf”・“kiyou”・“minijs”のモジュール指定を残しているが、
+% これらの指定が行われることは想定していない。
+%
 % 本ドキュメントクラスは奥村晴彦氏および日本語TeX開発コミュニティ
 % による「p\LaTeXe 新ドキュメントクラス」に改変を加えたものである。
 % 本ドキュメントクラスに関する説明は全てこの形式の枠の中に記す。
@@ -331,51 +350,17 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \paragraph{BXJSクラス特有の設定 \ZRX}
-%
+% \paragraph{環境検査 \ZRX}
 % \mbox{}
-% \begin{ZRnote}
-% 長さ値の指定で式を利用可能にするため |calc| を読み込む。
-%    \begin{macrocode}
-\RequirePackage{calc}
-%    \end{macrocode}
-% クラスオプションでkey-value形式を使用するため |keyval| を読み込む。
-%    \begin{macrocode}
-\RequirePackage{keyval}
-%    \end{macrocode}
-% クラスの本体ではこの他に以下のパッケージが読み込まれる。
-% \begin{quote}
-%   |geometry|、|iftex|
-% \end{quote}
-% また状況によっては以下のパッケージが読み込まれる可能性がある。
-% \begin{quote}
-%   |bxwareki|、|jslogo|、|plautopatch|、|type1cm|
-% \end{quote}
 %
-% \begin{macro}{\jsAtEndOfClass}
-% このクラスの読込終了時に対するフック。
-% (補助パッケージ中で用いられる。)
-%    \begin{macrocode}
-\def\jsAtEndOfClass{%
-  \expandafter\g at addto@macro\csname\bxjs at clsname.cls-h@@k\endcsname}
-%    \end{macrocode}
-% \end{macro}
-%
-% 互換性のための補助パッケージを読み込む。
-%    \begin{macrocode}
-\IfFileExists{bxjscompat.sty}{%
-  \RequirePackage{bxjscompat}%
-}{}
-%    \end{macrocode}
-%
 % \begin{macro}{\jsDocClass}
 % 〔トークン〕
 % 文書クラスの種別。
-% 以下の定値トークンの何れかと同等:
-% |\jsArticle|=bxjsarticle、
-% |\jsBook|=bxjsbook、
-% |\jsReport|=bxjsreport、
-% |\jsSlide|=bxjsslide。
+% 以下の定値トークンの何れかと同値\Means
+% |\jsArticle|=bxjsarticle、
+% |\jsBook|=bxjsbook、
+% |\jsReport|=bxjsreport、
+% |\jsSlide|=bxjsslide。
 %    \begin{macrocode}
 \let\jsArticle=a
 \let\jsBook=b
@@ -388,9 +373,21 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\bxjs at test@engine}
+% |\bxjs at test@engine\制御綴{|\Meta{コード}|}|\Means
+% |\制御綴| の意味が同名のプリミティブである場合にのみ
+% \Meta{コード}を実行する。
+%    \begin{macrocode}
+\def\bxjs at test@engine#1#2{%
+  \edef\bxjs at tmpa{\string#1}%
+  \edef\bxjs at tmpb{\meaning#1}%
+  \ifx\bxjs at tmpa\bxjs at tmpb #2\fi}
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\jsEngine}
 % 〔暗黙文字トークン〕
-% エンジン({\TeX}の種類)の種別:
+% エンジン({\TeX}の種類)の種別\Means
 % |j|={\pTeX}系、
 % |x|={\XeTeX}、
 % |p|={\pdfTeX}(含DVIモード)、
@@ -401,10 +398,6 @@
 %
 %    \begin{macrocode}
 \let\jsEngine=n
-\def\bxjs at test@engine#1#2{%
-  \edef\bxjs at tmpa{\string#1}%
-  \edef\bxjs at tmpb{\meaning#1}%
-  \ifx\bxjs at tmpa\bxjs at tmpb #2\fi}
 \bxjs at test@engine\kanjiskip{\let\jsEngine=j}
 \bxjs at test@engine\jintercharskip{\let\jsEngine=J}
 \bxjs at test@engine\Omegaversion{\let\jsEngine=O}
@@ -414,6 +407,73 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% 非サポートのエンジンの場合は強制終了させる。
+% \Note NTT j{\TeX}とOmega系。
+%    \begin{macrocode}
+\let\bxjs at tmpa\relax
+\ifx J\jsEngine \def\bxjs at tmpa{NTT-jTeX}\fi
+\ifx O\jsEngine \def\bxjs at tmpa{Omega}\fi
+\ifx\bxjs at tmpa\relax \expandafter\@gobble
+\else
+  \ClassError\bxjs at clsname
+   {The engine in use (\bxjs at tmpa) is not supported}
+   {It's a fatal error. I'll quit right now.}
+  \expandafter\@firstofone
+\fi{\endinput\@@end}
+%    \end{macrocode}
+%
+% 現状での処理系バージョン要件は以下の通りである
+% ({\XeTeX}のみの設定で、しかも現実離れしている)。
+% \begin{itemize}
+% \item \XeTeX\Means 0.997版(2007年)以上
+% \end{itemize}
+% \TODO 以下で3.0版での予定について述べておく。
+%
+% 3.0版での処理系バージョン要件は以下の通りである。
+% \begin{itemize}
+% \item \TeX\Means    3.0版[1990/03]以上
+% \item \pTeX\Means   2.0版[1995/03]以上
+% \item \upTeX\Means  0.10版[2007/07]以上
+% \item \pdfTeX\Means 1.40版[2007/01]以上
+% \item \LuaTeX\Means 0.60版[2010/04]以上
+% \item \XeTeX\Means  0.9994版[2009/06]以上
+% \end{itemize}
+% \Note 標準和文ドライバについてはまた別に要件を定める。
+%
+% {\TeX}処理系のバージョンがサポート対象であるかを検査する。
+%    \begin{macrocode}
+\@tempswatrue
+\if x\jsEngine
+  \ifdim\the\XeTeXversion\XeTeXrevision\p@<0.997\p@
+    \@tempswafalse \fi
+\fi
+%    \end{macrocode}
+% 非サポートのバージョン場合は強制終了させる。
+%    \begin{macrocode}
+\if at tempswa \expandafter\@gobble
+\else
+  \ClassError\bxjs at clsname
+   {The engine in use is all too old}
+   {It's a fatal error. I'll quit right now.}
+  \expandafter\@firstofone
+\fi{\endinput\@@end}
+%    \end{macrocode}
+%
+% 万が一「2.09互換モード」になっていた場合は、
+% これ以上進むと危険なので強制終了させる。
+%    \begin{macrocode}
+\if at compatibility
+  \ClassError\bxjs at clsname
+   {Something went chaotic!\MessageBreak
+    (How come '\string\documentstyle' is there?)\MessageBreak
+    I cannot go a single step further...}
+   {If the chant of '\string\documentstyle' was just a blunder of yours,\MessageBreak
+    then there'll still be hope....}
+  \expandafter\@firstofone
+\else \expandafter\@gobble
+\fi{\typeout{Farewell!}\endinput\@@end}
+%    \end{macrocode}
+%
 % \begin{macro}{\ifjsWithupTeX}
 % 〔スイッチ〕
 % エンジンが(内部漢字コードがUnicodeの){\upTeX}であるか。
@@ -444,49 +504,18 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% 非サポートのエンジンの場合は強制終了させる。
-% \Note NTT j{\TeX}とOmega系。
+% \begin{macro}{\ifjsInPdfMode}
+% 〔スイッチ〕
+% {\pdfTeX}/{\LuaTeX}がPDFモードで動作しているか。
 %    \begin{macrocode}
-\let\bxjs at tmpa\relax
-\ifx J\jsEngine \def\bxjs at tmpa{NTT-jTeX}\fi
-\ifx O\jsEngine \def\bxjs at tmpa{Omega}\fi
-\ifx\bxjs at tmpa\relax \expandafter\@gobble
-\else
-  \ClassError\bxjs at clsname
-   {The engine in use (\bxjs at tmpa) is not supported}
-   {It's a fatal error. I'll quit right now.}
-  \expandafter\@firstofone
-\fi{\endinput\@@end}
+\newif\ifjsInPdfMode
+\@nameuse{jsInPdfMode\ifnum0%
+  \ifx\pdfoutput\@undefined\else\the\pdfoutput\fi
+  \ifx\outputmode\@undefined\else\the\outputmode\fi
+  >0 true\else false\fi}
 %    \end{macrocode}
-%
-% {\LuaTeX}の場合、本クラス用のLuaモジュールを用意する。
-%    \begin{macrocode}
-\ifx l\jsEngine
-  \directlua{ bxjs = {} }
-\fi
-%    \end{macrocode}
-%
-% \begin{macro}{\bxjs at protected}
-% {\eTeX}拡張が有効な場合にのみ |\protected|
-% の効果をもつ。
-%    \begin{macrocode}
-\ifjsWitheTeX \let\bxjs at protected\protected
-\else \let\bxjs at protected\@empty
-\fi
-%    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\bxjs at robust@def}
-% 無引数の頑強な命令を定義する。
-%    \begin{macrocode}
-\ifjsWitheTeX
-  \def\bxjs at robust@def{\protected\def}
-\else
-  \def\bxjs at robust@def{\DeclareRobustCommand*}
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
 % \begin{macro}{\ifbxjs at explIII}
 % 〔スイッチ〕
 % expl3がカーネルに組み込まれているか。
@@ -524,6 +553,89 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \paragraph{依存パッケージ読込 \ZRX}
+% \mbox{}
+%
+% 長さ値の指定で式を利用可能にするため |calc| を読み込む。
+%    \begin{macrocode}
+\RequirePackage{calc}
+%    \end{macrocode}
+% クラスオプションでkey-value形式を使用するため |keyval| を読み込む。
+%    \begin{macrocode}
+\RequirePackage{keyval}
+%    \end{macrocode}
+% PDFモードの判定を{\LaTeX}公式のパッケージに任せたいので、
+% もし「|iftex| の |\ifpdf|」が利用できるならば、
+% |jsInPdfMode| スイッチをその値に一致させる。
+% \Note |iftex| で |\ifpdf| が利用できるのは1.0版[2019/10/24]から。
+%    \begin{macrocode}
+\IfFileExists{iftex.sty}{%
+  \RequirePackage{iftex}
+}{}
+\begingroup\expandafter\endgroup
+\expandafter\ifx\csname ifpdf\endcsname\@undefined\else
+  \expandafter\let\csname ifjsInPdfMode\expandafter\endcsname
+      \csname ifpdf\endcsname
+\fi
+%    \end{macrocode}
+%
+% クラスの本体ではこの他に以下のパッケージが読み込まれる。
+% \begin{quote}
+%   |geometry|
+% \end{quote}
+% また状況によっては以下のパッケージが読み込まれる可能性がある。
+% \begin{quote}
+%   |bxwareki|、|jslogo|、|plautopatch|、|type1cm|
+% \end{quote}
+% \Note 和文ドライバがさらにパッケージを読み込むこともある。
+%
+% \begin{macro}{\jsAtEndOfClass}
+% このクラスの読込終了時に対するフック。
+% (補助パッケージ中で用いられる。)
+%    \begin{macrocode}
+\def\jsAtEndOfClass{%
+  \expandafter\g at addto@macro\csname\bxjs at clsname.cls-h@@k\endcsname}
+%    \end{macrocode}
+% \end{macro}
+%
+% 互換性のための補助パッケージを読み込む。
+%    \begin{macrocode}
+\IfFileExists{bxjscompat.sty}{%
+  \RequirePackage{bxjscompat}%
+}{}
+%    \end{macrocode}
+%
+% \paragraph{BXJSクラス特有の設定 \ZRX}
+% \mbox{}
+%
+% {\LuaTeX}の場合、本クラス用のLuaモジュールを用意する。
+%    \begin{macrocode}
+\ifx l\jsEngine
+  \directlua{ bxjs = {} }
+\fi
+%    \end{macrocode}
+%
+% \begin{macro}{\bxjs at protected}
+% {\eTeX}拡張が有効な場合にのみ |\protected|
+% の効果をもつ。
+%    \begin{macrocode}
+\ifjsWitheTeX \let\bxjs at protected\protected
+\else \let\bxjs at protected\@empty
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs at robust@def}
+% 無引数の頑強な命令を定義する。
+%    \begin{macrocode}
+\ifjsWitheTeX
+  \def\bxjs at robust@def{\protected\def}
+\else
+  \def\bxjs at robust@def{\DeclareRobustCommand*}
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\bxjs at CGHN}
 % {\LaTeX}カーネルの2021/11/15版の改修で「要素の順が変わった」
 % フック名について、“新仕様において正しい名前”を
@@ -567,20 +679,6 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\ifjsInPdfMode}
-% 〔スイッチ〕
-% {\pdfTeX}/{\LuaTeX}がPDFモードで動作しているか。
-%    \begin{macrocode}
-\RequirePackage{iftex}
-\newif\ifjsInPdfMode
-\@nameuse{jsInPdfMode\ifnum0%
-  \ifx\pdfoutput\@undefined\else\the\pdfoutput\fi
-  \ifx\outputmode\@undefined\else\the\outputmode\fi
-  >0 true\else false\fi}
-\ifx\pdffalse\@undefined\else \bxjs at csletcs{ifjsInPdfMode}{ifpdf}\fi
-%    \end{macrocode}
-% \end{macro}
-%
 % \begin{macro}{\bxjs at catopt}
 % |\bxjs at catopt{|\Meta{文字列1}|}{|\Meta{文字列2}|}|\Means
 % 2つの文字列を |,| で繋いだ文字列。
@@ -740,56 +838,15 @@
 \@onlypreamble\bxjs at tmpdo@d
 %    \end{macrocode}
 %
-% |\jsInhibitGlue| は |\inhibitglue| が定義されていればそれを
+% \begin{macro}{\jsInhibitGlue}
+% |\inhibitglue| が定義されていればそれを
 % 実行し、未定義ならば何もしない。
 %    \begin{macrocode}
 \bxjs at robust@def\jsInhibitGlue{%
   \ifx\inhibitglue\@undefined\else \inhibitglue \fi}
 %    \end{macrocode}
+% \end{macro}	
 %
-% \paragraph{環境検査 \ZRX}
-% 
-% {\TeX}処理系のバージョンがサポート対象であるかを検査する。
-% \Note 現状での処理系バージョン要件は
-% 「{\XeTeX}は0.997版(2007年頃)以上」
-% という現実離れしたものになっている。
-% \TODO 3.0版において、もっと現実的なバージョン要件を定める予定。
-% 多分「本体」と「標準和文ドライバ」で条件を分けることになる。
-%    \begin{macrocode}
-\@tempswatrue
-\if x\jsEngine
-  \ifdim\the\XeTeXversion\XeTeXrevision\p@<0.997\p@
-    \@tempswafalse \fi
-\fi
-%    \end{macrocode}
-% 非サポートのバージョン場合は強制終了させる。
-%    \begin{macrocode}
-\if at tempswa \expandafter\@gobble
-\else
-  \ClassError\bxjs at clsname
-   {The engine in use is all too old}
-   {It's a fatal error. I'll quit right now.}
-  \expandafter\@firstofone
-\fi{\endinput\@@end}
-%    \end{macrocode}
-%
-% 万が一「2.09互換モード」になっていた場合は、
-% これ以上進むと危険なので強制終了させる。
-%    \begin{macrocode}
-\if at compatibility
-  \ClassError\bxjs at clsname
-   {Something went chaotic!\MessageBreak
-    (How come '\string\documentstyle' is there?)\MessageBreak
-    I cannot go a single step further...}
-   {If the chant of '\string\documentstyle' was just a blunder of yours,\MessageBreak
-    then there'll still be hope....}
-  \expandafter\@firstofone
-\else \expandafter\@gobble
-\fi{\typeout{Farewell!}\endinput\@@end}
-%    \end{macrocode}
-%
-% \end{ZRnote}
-%
 % \section{オプション}
 %
 % これらのクラスは |\documentclass{jsarticle}|
@@ -930,11 +987,11 @@
     {\noexpand\bxjs at setpaper@bsize{\bxjs at tmpa}}%
 }\bxjs at next}
 %    \end{macrocode}
-% Pandocでは用紙サイズ指定について「後ろに |paper| を付けた名前
-% のオプション」を指定する。
+% Pandocで用紙サイズを指定した場合は出力{\LaTeX}ソースにおいて
+% 「後ろに |paper| を付けた名前のオプション」が指定される。
 % これに対処するため、後ろに |paper| をつけた形を用意する。
-% さらに、「用紙サイズを |custom| とすると何も設定しない」ように
-% するため |custompaper| というオプションを用意する。
+% さらに、「Pandocで用紙サイズを |custom| とすると実質的に何も設定しない」
+% ようにするため |custompaper| というオプションを用意する。
 %    \begin{macrocode}
 \DeclareOption{a4varpaper}{\bxjs at setpaper{{210truemm}{283truemm}}}
 \DeclareOption{b5varpaper}{\bxjs at setpaper{{182truemm}{230truemm}}}
@@ -993,7 +1050,8 @@
 % [2016-07-24] オプティカルサイズを調整するためにNFSSへパッチを当てるオプション \texttt{nomag*} を新設しました。
 %
 % \begin{ZRnote}
-% |\@ptsize| は |10pt|, |11pt|, |12pt| が指定された時のみ従来と同じ値とし、
+% |\@ptsize| は |10pt|, |11pt|, |12pt| が指定された時のみ
+% JSクラスと同じ値とし、
 % それ以外は |\jsUnusualPtSize|(= $-20$)にする。
 %
 %    \begin{macrocode}
@@ -1302,6 +1360,7 @@
 %
 % \begin{ZRnote}
 % \begin{macro}{\ifjsDraft}
+% 〔スイッチ〕
 % |draft| オプションが指定されているか。
 % \Note JSクラスの |\ifdraft| が廃止されたので、
 % BXJSクラスでも |\ifdraft| を2.0版で廃止した。
@@ -1486,6 +1545,7 @@
 % \mbox{}
 % \begin{ZRnote}
 % \begin{macro}{\bxjs at engine@given}
+% 〔暗黙文字トークン〕
 % オプションで明示されたエンジンの種別。
 %    \begin{macrocode}
 %\let\bxjs at engine@given\@undefined
@@ -1536,6 +1596,7 @@
 %    \end{macrocode}
 %
 % \begin{macro}{\bxjs at driver@given}
+% 〔暗黙文字トークン〕
 % オプションで明示されたドライバの種別。
 %    \begin{macrocode}
 %\let\bxjs at driver@given\@undefined
@@ -1619,6 +1680,7 @@
 % \end{macro}
 %
 % \begin{macro}{\ifbxjs at bigcode}
+% 〔スイッチ〕
 % {\upTeX}で有効化するToUnicode CMapとして
 % 「|UTF8-UCS2|」の代わりに「|UTF8-UTF16|」を使うか。
 % BMP外の文字に対応できる「|UTF8-UTF16|」の方が望ましいのであるが、
@@ -1639,6 +1701,7 @@
 %    \end{macrocode}
 %
 % \begin{macro}{\ifbxjs at oldfontcommands}
+% 〔スイッチ〕
 % |\allowoldfontcommands| を既定で有効にするか。
 %    \begin{macrocode}
 \newif\ifbxjs at oldfontcommands
@@ -1702,7 +1765,7 @@
 %    \Meta{enum名}|}{|\Meta{初期値}|}|\par
 % “\Meta{オプション名}|=|\Meta{値}”のオプション指定に対して、
 % |\|[|bxjs@|\Meta{enum名}] を |\|[|bxjs@|\Meta{enum名}|@@|\Meta{値}] に
-% 等値する(後者の制御綴が未定義の場合はエラー)、という動作を規定する。
+% 等置する(後者の制御綴が未定義の場合はエラー)、という動作を規定する。
 %    \begin{macrocode}
 \@onlypreamble\bxjs at declare@enum at option
 \def\bxjs at declare@enum at option#1#2#3{%
@@ -1830,6 +1893,11 @@
 % 和文ドライバの名前。
 %    \begin{macrocode}
 \let\bxjs at jadriver\relax
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\bxjs at jadriver@opt}
+% 明示された和文ドライバの名前。
+%    \begin{macrocode}
 %\let\bxjs at jadriver@opt\@undefined
 %    \end{macrocode}
 % \end{macro}
@@ -1937,7 +2005,7 @@
 % \end{macro}
 %
 % \begin{macro}{\ifbxjs at dvi@opt}
-% |dvi| オプションが指定されたか。
+% 〔スイッチ〕|dvi| オプションが指定されたか。
 %    \begin{macrocode}
 \newif\ifbxjs at dvi@opt
 %    \end{macrocode}
@@ -2523,7 +2591,7 @@
 \fi
 %    \end{macrocode}
 %
-% |js| オプション指定時は、jsarticle(または jsbook)クラスを
+% |disguise-js=true| 指定時は、jsarticle(または jsbook)クラスを
 % 読込済のように振舞う。
 % \Note 「2つのクラスを読み込んだ状態」は |\LoadClass| を使用した
 % 場合に出現するので、別に異常ではない。
@@ -2598,7 +2666,6 @@
 \ifx\stockheight\@undefined\newdimen\stockheight\fi
 \begingroup\expandafter\expandafter\expandafter\endgroup
 \expandafter\ifx\csname iftombow\expandafter\endcsname\csname iftrue\endcsname
-% \newdimen\stockwidth \newdimen\stockheight
   \setlength{\stockwidth}{\paperwidth}
   \setlength{\stockheight}{\paperheight}
   \advance \stockwidth 2in
@@ -2727,7 +2794,6 @@
   \RequirePackage{type1cm}
   \let\jsc at invscale\bxjs at invscale
 %    \end{macrocode}
-% ムニャムニャムニャ……。
 % \end{ZRnote}
 %    \begin{macrocode}
   \ifbxjs at TUenc
@@ -2841,8 +2907,543 @@
 %
 % \begin{ZRnote}
 % 和文フォントの設定は和文ドライバの管轄。
+%
+% ここでは、|jsclasse.dtx| との差分を抑制するために、
+% オリジナルのコードを無効化した状態で挿入しておく。
 % \end{ZRnote}
+%    \begin{macrocode}
+%</class>
+%<*jsclasses>
+%<*class>
+%    \end{macrocode}
 %
+% JISの1ポイントは0.3514mm(約1/72.28インチ),
+% PostScriptの1ポイントは1/72インチですが,
+% \TeX では1/72.27インチを1pt(ポイント),
+% 1/72インチを1bp(ビッグポイント)と表します。
+% QuarkXPressなどのDTPソフトは標準で1/72インチを1ポイント
+% としますが,以下ではすべて1/72.27インチを1ptとしています。
+% 1インチは定義により25.4mmです。
+%
+% さらにややこしいことに,\pTeX (アスキーが日本語化した\TeX )
+% の公称10ポイントの和文フォント(\texttt{min10} など)は,
+% 実寸(標準の字送り量)が9.62216ptです。
+% これは3.3818mm,写研の写植機の単位では13.527級,
+% PostScriptの単位では9.5862ポイントになります。
+% \texttt{jis} フォントなどもこの値を踏襲しています。
+%
+% この公称10ポイントのフォントを,ここでは13級に縮小して
+% 使うことにします。そのためには,$13/13.527 = 0.961$ 倍
+% すればいいことになります(\texttt{min10} や \texttt{jis} の場合)。
+% 9.62216ポイントの和文フォントをさらに0.961倍したことにより,
+% 約9.25ポイント,
+% DTPで使う単位(1/72インチ)では9.21ポイントということになり,
+% 公称10ポイントといっても実は9ポイント強になります。
+%
+% [2018-02-04] 上記のとおりの「クラスファイルが意図する
+% 和文スケール値($1\,\mathrm{zw} \div \textmc{要求サイズ}$)」を
+% 表す実数値マクロ |\Cjascale| を定義します。このマクロが定義されて
+% いる場合,OTFパッケージ(2018/02/01以降のバージョン)はこれに
+% 従います。jsarticle, jsbook, jsreportでは,
+% $9.62216\,\mathrm{pt} * 0.961 / 10\,\mathrm{pt} = 0.924690$ です。
+%
+%    \begin{macrocode}
+%</class>
+%<*minijs>
+%% min/goth -> jis/jisg (for pLaTeX only)
+\ifnum\jis"2121="3000 \else
+\@for\@tempa:=5,6,7,8,9,10,10.95,12,14.4,17.28,20.74,24.88\do{%
+  \expandafter\let\csname JY1/mc/m/n/\@tempa\endcsname\relax
+  \expandafter\let\csname JY1/gt/m/n/\@tempa\endcsname\relax
+  \expandafter\let\csname JT1/mc/m/n/\@tempa\endcsname\relax
+  \expandafter\let\csname JT1/gt/m/n/\@tempa\endcsname\relax
+}
+\def\Cjascale{0.924690}
+\DeclareFontShape{JY1}{mc}{m}{n}{<-> s * [0.961] jis}{}
+\DeclareFontShape{JY1}{gt}{m}{n}{<-> s * [0.961] jisg}{}
+\DeclareFontShape{JT1}{mc}{m}{n}{<-> s * [0.961] tmin10}{}
+\DeclareFontShape{JT1}{gt}{m}{n}{<-> s * [0.961] tgoth10}{}
+\fi
+%</minijs>
+%<*class>
+%<*!jspf>
+\def\Cjascale{0.924690}
+\ifmingoth
+  \DeclareFontShape{\jsc at JYn}{mc}{m}{n}{<-> s * [0.961] \jsc at pfx@ min10}{}
+  \DeclareFontShape{\jsc at JYn}{gt}{m}{n}{<-> s * [0.961] \jsc at pfx@ goth10}{}
+  \DeclareFontShape{\jsc at JTn}{mc}{m}{n}{<-> s * [0.961] \jsc at pfx@ tmin10}{}
+  \DeclareFontShape{\jsc at JTn}{gt}{m}{n}{<-> s * [0.961] \jsc at pfx@ tgoth10}{}
+\else
+  \ifjisfont
+    \DeclareFontShape{\jsc at JYn}{mc}{m}{n}{<-> s * [0.961] \jsc at pfx@ jis}{}
+    \DeclareFontShape{\jsc at JYn}{gt}{m}{n}{<-> s * [0.961] \jsc at pfx@ jisg}{}
+    \DeclareFontShape{\jsc at JTn}{mc}{m}{n}{<-> s * [0.961] \jsc at pfx@ tmin10}{}
+    \DeclareFontShape{\jsc at JTn}{gt}{m}{n}{<-> s * [0.961] \jsc at pfx@ tgoth10}{}
+  \else
+    \if at jsc@uplatex
+      \DeclareFontShape{JY2}{mc}{m}{n}{<-> s * [0.924690] upjisr-h}{}
+      \DeclareFontShape{JY2}{gt}{m}{n}{<-> s * [0.924690] upjisg-h}{}
+      \DeclareFontShape{JT2}{mc}{m}{n}{<-> s * [0.924690] upjisr-v}{}
+      \DeclareFontShape{JT2}{gt}{m}{n}{<-> s * [0.924690] upjisg-v}{}
+    \else
+      \DeclareFontShape{\jsc at JYn}{mc}{m}{n}{<-> s * [0.961] \jsc at pfx@ jis}{}
+      \DeclareFontShape{\jsc at JYn}{gt}{m}{n}{<-> s * [0.961] \jsc at pfx@ jisg}{}
+      \DeclareFontShape{\jsc at JTn}{mc}{m}{n}{<-> s * [0.961] \jsc at pfx@ tmin10}{}
+      \DeclareFontShape{\jsc at JTn}{gt}{m}{n}{<-> s * [0.961] \jsc at pfx@ tgoth10}{}
+    \fi
+  \fi
+\fi
+%</!jspf>
+%    \end{macrocode}
+%
+% 某学会誌では,
+% 和文フォントをPostScriptの9ポイントにするために,
+% $9/(9.62216*72/72.27) = 0.93885$ 倍します。
+%
+% [2018-02-04] 和文スケール値 |\Cjascale| は
+% $9.62216\,\mathrm{pt} * 0.93885 / 10\,\mathrm{pt} = 0.903375$ です。
+%
+%    \begin{macrocode}
+%<*jspf>
+\def\Cjascale{0.903375}
+\ifmingoth
+  \DeclareFontShape{\jsc at JYn}{mc}{m}{n}{<-> s * [0.93885] \jsc at pfx@ min10}{}
+  \DeclareFontShape{\jsc at JYn}{gt}{m}{n}{<-> s * [0.93885] \jsc at pfx@ goth10}{}
+  \DeclareFontShape{\jsc at JTn}{mc}{m}{n}{<-> s * [0.93885] \jsc at pfx@ tmin10}{}
+  \DeclareFontShape{\jsc at JTn}{gt}{m}{n}{<-> s * [0.93885] \jsc at pfx@ tgoth10}{}
+\else
+  \ifjisfont
+    \DeclareFontShape{\jsc at JYn}{mc}{m}{n}{<-> s * [0.93885] \jsc at pfx@ jis}{}
+    \DeclareFontShape{\jsc at JYn}{gt}{m}{n}{<-> s * [0.93885] \jsc at pfx@ jisg}{}
+    \DeclareFontShape{\jsc at JTn}{mc}{m}{n}{<-> s * [0.93885] \jsc at pfx@ tmin10}{}
+    \DeclareFontShape{\jsc at JTn}{gt}{m}{n}{<-> s * [0.93885] \jsc at pfx@ tgoth10}{}
+  \else
+    \if at jsc@uplatex
+      \DeclareFontShape{JY2}{mc}{m}{n}{<-> s * [0.903375] upjisr-h}{}
+      \DeclareFontShape{JY2}{gt}{m}{n}{<-> s * [0.903375] upjisg-h}{}
+      \DeclareFontShape{JT2}{mc}{m}{n}{<-> s * [0.903375] upjisr-v}{}
+      \DeclareFontShape{JT2}{gt}{m}{n}{<-> s * [0.903375] upjisg-v}{}
+    \else
+      \DeclareFontShape{\jsc at JYn}{mc}{m}{n}{<-> s * [0.93885] \jsc at pfx@ jis}{}
+      \DeclareFontShape{\jsc at JYn}{gt}{m}{n}{<-> s * [0.93885] \jsc at pfx@ jisg}{}
+      \DeclareFontShape{\jsc at JTn}{mc}{m}{n}{<-> s * [0.93885] \jsc at pfx@ tmin10}{}
+      \DeclareFontShape{\jsc at JTn}{gt}{m}{n}{<-> s * [0.93885] \jsc at pfx@ tgoth10}{}
+    \fi
+  \fi
+\fi
+%</jspf>
+%    \end{macrocode}
+%
+% 和文でイタリック体,斜体,サンセリフ体,
+% タイプライタ体の代わりにゴシック体を使うことにします。
+%
+% [2003-03-16] イタリック体,斜体について,和文でゴシックを当てていましたが,
+% 数学の定理環境などで多量のイタリック体を使うことがあり,ゴシックに
+% すると黒々となってしまうという弊害がありました。
+% |amsthm| を使わない場合は定理の本文が明朝になるように |\newtheorem|
+% 環境を手直ししてしのいでいましたが,
+% \TeX が数学で多用されることを考えると,イタリック体に明朝体を
+% 当てたほうがいいように思えてきましたので,
+% イタリック体・斜体に対応する和文を明朝体に変えることにしました。
+%
+% [2004-11-03] |\rmfamily| も和文対応にしました。
+%
+%    \begin{macrocode}
+% \DeclareFontShape{\jsc at JYn}{mc}{bx}{n}{<->ssub*gt/m/n}{} % in \jsc at JYnmc
+% \DeclareFontShape{\jsc at JYn}{gt}{bx}{n}{<->ssub*gt/m/n}{} % in \jsc at JYngt
+\DeclareFontShape{\jsc at JYn}{mc}{m}{it}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\jsc at JYn}{mc}{m}{sl}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\jsc at JYn}{mc}{m}{sc}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\jsc at JYn}{gt}{m}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc at JYn}{gt}{m}{sl}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc at JYn}{mc}{bx}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc at JYn}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
+% \DeclareFontShape{\jsc at JTn}{mc}{bx}{n}{<->ssub*gt/m/n}{} % in \jsc at JTnmc
+% \DeclareFontShape{\jsc at JTn}{gt}{bx}{n}{<->ssub*gt/m/n}{} % in \jsc at JTngt
+\DeclareFontShape{\jsc at JTn}{mc}{m}{it}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\jsc at JTn}{mc}{m}{sl}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\jsc at JTn}{mc}{m}{sc}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\jsc at JTn}{gt}{m}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc at JTn}{gt}{m}{sl}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc at JTn}{mc}{bx}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc at JTn}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
+%    \end{macrocode}
+%
+% [2020-02-02] \LaTeXe~2020-02-02でNFSSが拡張され,
+% それに伴いオリジナルの |\rmfamily| などの定義が変化しました。
+% |\DeclareRobustCommand| で直接定義すると,これを上書きして
+% NFSSの拡張部分を壊してしまいますので,
+% 新たに提供されたフックにコードを挿入します。
+% 従来のコードも\LaTeXe~2019-10-01以前のために残してありますが,
+% \texttt{mweights}パッケージ対策も施しました(forum:2763)。
+%
+% [2020-10-04] \LaTeXe~2020-10-01では |\AddToHook| を利用します。
+%
+% ^^A Note that |\AddToHook| is defined as follows:
+% ^^A \begin{itemize}
+% ^^A   \item Format date 2020-02-02 or older: undefined
+% ^^A   \item Format date 2020-10-01 or newer: available
+% ^^A   \item ... under \texttt{latexrelease} rollback: defined but no-op
+% ^^A \end{itemize}
+%
+%    \begin{macrocode}
+%</class>
+%<*class|minijs>
+%% ad-hoc "relation font"
+\@ifl at t@r\fmtversion{2020/10/01}
+    {\jsc at needsp@tchfalse}{\jsc at needsp@tchtrue}
+\ifjsc at needsp@tch          % --- for 2020-02-02 or older BEGIN
+\ifx\@rmfamilyhook\@undefined  % old
+\DeclareRobustCommand\rmfamily
+        {\not at math@alphabet\rmfamily\mathrm
+         \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
+\DeclareRobustCommand\sffamily
+        {\not at math@alphabet\sffamily\mathsf
+         \romanfamily\sfdefault\kanjifamily\gtdefault\selectfont}
+\DeclareRobustCommand\ttfamily
+        {\not at math@alphabet\ttfamily\mathtt
+         \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
+\AtBeginDocument{%
+  \ifx\mweights at init\@undefined\else  % mweights.sty is loaded
+    % my definitions above should have been overwritten, recover it!
+    % \selectfont is executed twice but I don't care about speed...
+    \expandafter\g at addto@macro\csname rmfamily \endcsname
+      {\kanjifamily\mcdefault\selectfont}%
+    \expandafter\g at addto@macro\csname sffamily \endcsname
+      {\kanjifamily\gtdefault\selectfont}%
+    \expandafter\g at addto@macro\csname ttfamily \endcsname
+      {\kanjifamily\gtdefault\selectfont}%
+  \fi}
+\else                          % 2020-02-02
+\g at addto@macro\@rmfamilyhook
+  {\prepare at family@series at update@kanji{mc}\mcdefault}
+\g at addto@macro\@sffamilyhook
+  {\prepare at family@series at update@kanji{gt}\gtdefault}
+\g at addto@macro\@ttfamilyhook
+  {\prepare at family@series at update@kanji{gt}\gtdefault}
+\fi
+\else % --- for 2020-02-02 or older END & for 2020-10-01 BEGIN
+\AddToHook{rmfamily}%
+  {\prepare at family@series at update@kanji{mc}\mcdefault}
+\AddToHook{sffamily}%
+  {\prepare at family@series at update@kanji{gt}\gtdefault}
+\AddToHook{ttfamily}%
+  {\prepare at family@series at update@kanji{gt}\gtdefault}
+\fi   % --- for 2020-10-01 END
+%</class|minijs>
+%<*class>
+%    \end{macrocode}
+%
+% \begin{macro}{\textmc}
+% \begin{macro}{\textgt}
+%
+% 次のコマンドはイタリック補正なども含めて定義されていますが,
+% 和文ではイタリック補正はあまり役に立たず,
+% 欧文・和文間のグルーが入らないという副作用もありますので,
+% 単純な定義に直します。
+%
+% [2016-08-26] 和欧文間の |\xkanjiskip| が入らない問題は,
+% plfonts.dtx v1.3i (2000/07/13)
+% の時点で修正されていました。逆に,\texttt{amsmath}パッケージを
+% 読み込んだ場合に,数式内の添字で文字サイズが変化するようになる
+% はずのところが,変わらなくなっていましたので,修正しました。
+%
+% [2017-09-03] Yue ZHANGさん作の\texttt{fixjfm}パッケージが
+% |\documentclass| より前に |\RequirePackage{fixjfm}| として
+% 読み込まれていた場合には,その定義を優先するため,
+% このクラスファイルでは再定義しません。
+%
+% [2017-09-19] 2010年の\pTeX の修正で,イタリック補正と和欧文間の
+% |\xkanjiskip| の衝突が起きなくなっていますから,もうここにある
+% ような単純化は必要ありません。ただし,このクラスファイルが
+% 古い\TeX 環境で利用される可能性も捨てきれないので,とりあえず
+% 残しておきます。
+%
+%    \begin{macrocode}
+\ifx\DeclareFixJFMCJKTextFontCommand\@undefined
+\DeclareRobustCommand\textmc[1]{%
+    \relax\ifmmode \expandafter\nfss at text \fi{\mcfamily #1}}
+\DeclareRobustCommand\textgt[1]{%
+    \relax\ifmmode \expandafter\nfss at text \fi{\gtfamily #1}}
+\fi
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% 新クラスでも \texttt{disablejfam} オプションを与えなければ数式内で
+% 日本語が使えるようにしました。
+%
+% さらに2005/12/01版のLaTeXに対応したpLaTeXに対応しました
+% (Thanks: ymtさん)。
+%
+% [2010-03-14] |http://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=411|
+% での山本さんのご指摘に従って修正しました。
+%
+%    \begin{macrocode}
+\def\reDeclareMathAlphabet#1#2#3{%
+  \edef\@tempa{\expandafter\@gobble\string#2}%
+  \edef\@tempb{\expandafter\@gobble\string#3}%
+  \edef\@tempc{\string @\expandafter\@gobbletwo\string#2}%
+  \ifx\@tempc\@tempa%
+    \edef\@tempa{\expandafter\@gobbletwo\string#2}%
+    \edef\@tempb{\expandafter\@gobbletwo\string#3}%
+  \fi
+  \begingroup
+    \let\protect\noexpand
+    \def\@tempaa{\relax}%
+    \expandafter\ifx\csname RDMAorg@\@tempa\endcsname\relax
+      \edef\@tempaa{\expandafter\def\expandafter\noexpand%
+        \csname RDMAorg@\@tempa\endcsname{%
+          \expandafter\noexpand\csname\@tempa\endcsname}}%
+    \fi
+    \def\@tempbb{\relax}%
+    \expandafter\ifx\csname RDMAorg@\@tempb\endcsname\relax
+      \edef\@tempbb{\expandafter\def\expandafter\noexpand%
+        \csname RDMAorg@\@tempb\endcsname{%
+          \expandafter\noexpand\csname\@tempb\endcsname}}%
+    \fi
+    \edef\@tempc{\@tempaa\@tempbb}%
+  \expandafter\endgroup\@tempc%
+  \edef#1{\noexpand\protect\expandafter\noexpand\csname%
+    \expandafter\@gobble\string#1\space\space\endcsname}%
+  \expandafter\edef\csname\expandafter\@gobble\string#1\space\space\endcsname%
+    {\noexpand\DualLang at mathalph@bet%
+      {\expandafter\noexpand\csname RDMAorg@\@tempa\endcsname}%
+      {\expandafter\noexpand\csname RDMAorg@\@tempb\endcsname}%
+  }%
+}
+\@onlypreamble\reDeclareMathAlphabet
+\def\DualLang at mathalph@bet#1#2{%
+  \relax\ifmmode
+    \ifx\math at bgroup\bgroup%     2e normal style     (\mathrm{...})
+      \bgroup\let\DualLang at Mfontsw\DLMfontsw at standard
+    \else
+      \ifx\math at bgroup\relax%    2e two letter style (\rm->\mathrm)
+        \let\DualLang at Mfontsw\DLMfontsw at oldstyle
+      \else
+        \ifx\math at bgroup\@empty% 2.09 oldlfont style ({\mathrm ...})
+          \let\DualLang at Mfontsw\DLMfontsw at oldlfont
+        \else%                   panic! assume 2e normal style
+          \bgroup\let\DualLang at Mfontsw\DLMfontsw at standard
+        \fi
+      \fi
+    \fi
+  \else
+    \let\DualLang at Mfontsw\@firstoftwo
+  \fi
+  \DualLang at Mfontsw{#1}{#2}%
+}
+\def\DLMfontsw at standard#1#2#3{#1{#2{#3}}\egroup}
+\def\DLMfontsw at oldstyle#1#2{#1\relax\@fontswitch\relax{#2}}
+\def\DLMfontsw at oldlfont#1#2{#1\relax#2\relax}
+\if at enablejfam
+  \DeclareSymbolFont{mincho}{\jsc at JYn}{mc}{m}{n}
+  \DeclareSymbolFontAlphabet{\mathmc}{mincho}
+  \SetSymbolFont{mincho}{bold}{\jsc at JYn}{gt}{m}{n}
+  \jfam\symmincho
+  \DeclareMathAlphabet{\mathgt}{\jsc at JYn}{gt}{m}{n}
+  \AtBeginDocument{%
+    \reDeclareMathAlphabet{\mathrm}{\@mathrm}{\@mathmc}
+    \reDeclareMathAlphabet{\mathbf}{\@mathbf}{\@mathgt}}
+\fi
+%    \end{macrocode}
+%
+% \begin{macro}{\textsterling}
+%
+% これは |\pounds| 命令で実際に呼び出される文字です。
+% 従来からのOT1エンコーディングでは |\$| のイタリック体が |\pounds|
+% なので \texttt{cmti} が使われていましたが,
+% 1994年春からは \texttt{cmu}(upright italic,直立イタリック体)
+% に変わりました。
+% しかし \texttt{cmu} はその性格からして実験的なものであり,
+% |\pounds| 以外で使われるとは思えないので,
+% ここでは \texttt{cmti} に戻してしまいます。
+%
+% [2003-08-20] Computer Modernフォントを使う機会も減り,T1エンコーディング
+% が一般的になってきました。この定義はもうあまり意味がないので消します。
+%
+%    \begin{macrocode}
+% \DeclareTextCommand{\textsterling}{OT1}{{\itshape\char`\$}}
+%    \end{macrocode}
+% \end{macro}
+%
+% 禁則パラメータも若干修正します。
+%
+% アスキーの \texttt{kinsoku.dtx} では次の三つが5000に設定されています。
+% これを10000に再設定します。
+%
+%    \begin{macrocode}
+\prebreakpenalty\jis"2147=10000      % 5000   ’
+\postbreakpenalty\jis"2148=10000     % 5000   “
+\prebreakpenalty\jis"2149=10000      % 5000   ”
+%    \end{macrocode}
+%
+% 「\TeX!」「〒515」の記号と数字の間に四分アキが入らないようにします。
+%
+%    \begin{macrocode}
+\inhibitxspcode`!=1
+\inhibitxspcode`〒=2
+%    \end{macrocode}
+%
+% 以前の版では,たとえば「ベース名.拡張子」のように和文文字で書いたとき,
+% ピリオドの後に四分アキが入らないようにするために
+%    \begin{macrocode}
+% \xspcode`.=0
+%    \end{macrocode}
+% のようにしていました。ただ,「Foo Inc.は……」のように書いたときにも
+% スペースが入らなくなるので,ちょっとまずい修正だったかもしれません。
+% 元に戻しました。
+%
+% とりあえず「|ベース名.\mbox{}拡張子|」と書いてください。
+%
+% 「CやC++では……」と書くと,C++の直後に四分アキが入らないのでバランスが悪くなります。
+% 四分アキが入るようにしました。\% の両側も同じです。
+%
+%    \begin{macrocode}
+\xspcode`+=3
+\xspcode`\%=3
+%    \end{macrocode}
+%
+% これ以外にT1エンコーディングで80〜ffの文字もすべて欧文文字ですので,
+% 両側の和文文字との間にスペースが入らなければなりません。
+%
+%    \begin{macrocode}
+\xspcode`^^80=3
+\xspcode`^^81=3
+\xspcode`^^82=3
+\xspcode`^^83=3
+\xspcode`^^84=3
+\xspcode`^^85=3
+\xspcode`^^86=3
+\xspcode`^^87=3
+\xspcode`^^88=3
+\xspcode`^^89=3
+\xspcode`^^8a=3
+\xspcode`^^8b=3
+\xspcode`^^8c=3
+\xspcode`^^8d=3
+\xspcode`^^8e=3
+\xspcode`^^8f=3
+\xspcode`^^90=3
+\xspcode`^^91=3
+\xspcode`^^92=3
+\xspcode`^^93=3
+\xspcode`^^94=3
+\xspcode`^^95=3
+\xspcode`^^96=3
+\xspcode`^^97=3
+\xspcode`^^98=3
+\xspcode`^^99=3
+\xspcode`^^9a=3
+\xspcode`^^9b=3
+\xspcode`^^9c=3
+\xspcode`^^9d=3
+\xspcode`^^9e=3
+\xspcode`^^9f=3
+\xspcode`^^a0=3
+\xspcode`^^a1=3
+\xspcode`^^a2=3
+\xspcode`^^a3=3
+\xspcode`^^a4=3
+\xspcode`^^a5=3
+\xspcode`^^a6=3
+\xspcode`^^a7=3
+\xspcode`^^a8=3
+\xspcode`^^a9=3
+\xspcode`^^aa=3
+\xspcode`^^ab=3
+\xspcode`^^ac=3
+\xspcode`^^ad=3
+\xspcode`^^ae=3
+\xspcode`^^af=3
+\xspcode`^^b0=3
+\xspcode`^^b1=3
+\xspcode`^^b2=3
+\xspcode`^^b3=3
+\xspcode`^^b4=3
+\xspcode`^^b5=3
+\xspcode`^^b6=3
+\xspcode`^^b7=3
+\xspcode`^^b8=3
+\xspcode`^^b9=3
+\xspcode`^^ba=3
+\xspcode`^^bb=3
+\xspcode`^^bc=3
+\xspcode`^^bd=3
+\xspcode`^^be=3
+\xspcode`^^bf=3
+\xspcode`^^c0=3
+\xspcode`^^c1=3
+\xspcode`^^c2=3
+\xspcode`^^c3=3
+\xspcode`^^c4=3
+\xspcode`^^c5=3
+\xspcode`^^c6=3
+\xspcode`^^c7=3
+\xspcode`^^c8=3
+\xspcode`^^c9=3
+\xspcode`^^ca=3
+\xspcode`^^cb=3
+\xspcode`^^cc=3
+\xspcode`^^cd=3
+\xspcode`^^ce=3
+\xspcode`^^cf=3
+\xspcode`^^d0=3
+\xspcode`^^d1=3
+\xspcode`^^d2=3
+\xspcode`^^d3=3
+\xspcode`^^d4=3
+\xspcode`^^d5=3
+\xspcode`^^d6=3
+\xspcode`^^d7=3
+\xspcode`^^d8=3
+\xspcode`^^d9=3
+\xspcode`^^da=3
+\xspcode`^^db=3
+\xspcode`^^dc=3
+\xspcode`^^dd=3
+\xspcode`^^de=3
+\xspcode`^^df=3
+\xspcode`^^e0=3
+\xspcode`^^e1=3
+\xspcode`^^e2=3
+\xspcode`^^e3=3
+\xspcode`^^e4=3
+\xspcode`^^e5=3
+\xspcode`^^e6=3
+\xspcode`^^e7=3
+\xspcode`^^e8=3
+\xspcode`^^e9=3
+\xspcode`^^ea=3
+\xspcode`^^eb=3
+\xspcode`^^ec=3
+\xspcode`^^ed=3
+\xspcode`^^ee=3
+\xspcode`^^ef=3
+\xspcode`^^f0=3
+\xspcode`^^f1=3
+\xspcode`^^f2=3
+\xspcode`^^f3=3
+\xspcode`^^f4=3
+\xspcode`^^f5=3
+\xspcode`^^f6=3
+\xspcode`^^f7=3
+\xspcode`^^f8=3
+\xspcode`^^f9=3
+\xspcode`^^fa=3
+\xspcode`^^fb=3
+\xspcode`^^fc=3
+\xspcode`^^fd=3
+\xspcode`^^fe=3
+\xspcode`^^ff=3
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</class>
+%</jsclasses>
+%<*class>
+%    \end{macrocode}
+%
 % \begin{macro}{\@}
 %
 % 欧文といえば,\LaTeX の |\def\@{\spacefactor\@m}| という定義(|\@m| は1000)
@@ -3051,6 +3652,8 @@
 % 不可解なエラーが発生する。
 % これは |microtype| が邪悪なトリックを使用しているせいなのだが、
 % 一応こちら側で対策をとることにする。
+% \begin{macro}{\bxjs at if@narrowbaselines}
+% スイッチ |narrowbaselines| を{\LaTeX}式条件文にしたもの。
 %    \begin{macrocode}
 \def\bxjs at if@narrowbaselines{%
   \ifnarrowbaselines\expandafter\@firstoftwo
@@ -3058,6 +3661,7 @@
   \fi
 }
 %    \end{macrocode}
+% \end{macro}
 % \end{ZRnote}
 %
 % \begin{macro}{\normalsize}
@@ -3079,6 +3683,7 @@
 %
 % \begin{ZRnote}
 % |microtype| 対策のためif文を避ける。
+% 後の |\small|・|\footnotesize| も同様。
 % \end{ZRnote}
 %    \begin{macrocode}
 \renewcommand{\normalsize}{%
@@ -3175,10 +3780,6 @@
 % また,|\topsep| と |\parsep| は,元はそれぞれ$4 \pm 2$,$2 \pm 1$
 % ポイントでしたが,ここではゼロ(|\z@|)にしました。
 %
-% \begin{ZRnote}
-% |microtype| 対策のためif文を避ける。
-% 後の |\footnotesize| も同様。
-% \end{ZRnote}
 %    \begin{macrocode}
 \newcommand{\small}{%
   \bxjs at if@narrowbaselines{%
@@ -3689,7 +4290,9 @@
 % \paragraph{geometry パッケージを読み込む \ZRX}
 % \mbox{}
 % \begin{ZRnote}
-% ムニャムニャ。
+% \begin{macro}{\bxjs at apply@bd at pre@geometry at hook}
+% |geometry| パッケージのbegin-documentフックの処理に割り込む。
+% \Note {\LaTeX}のフックシステムがある場合はムニャムニャ。
 %    \begin{macrocode}
 \def\bxjs at geometry@name{geometry}
 \ifbxjs at old@hook at system
@@ -3699,6 +4302,7 @@
     \AddToHook{begindocument}[\bxjs at geometry@name]}
 \fi
 %    \end{macrocode}
+% \end{macro}
 %
 % |geoemtry=class| の場合に、実際に |geometry| パッケージを読みこむ。
 %    \begin{macrocode}
@@ -3728,13 +4332,14 @@
 % \Note |geometry| のbegin-documentフックにおいて、{\LuaTeX}の
 % 旧版互換を有効にする。
 %    \begin{macrocode}
-\bxjs at apply@bd at pre@geometry at hook{\bxjs at bd@pre at geometry@hook}
-\bxjs at apply@bd at pre@geometry at hook{\ImposeOldLuaTeXBehavior}
+\bxjs at apply@bd at pre@geometry at hook{%
+  \bxjs at bd@pre at geometry@hook
+  \@nameuse{ImposeOldLuaTeXBehavior}}
 \bxjs at preproc@layout
 \edef\bxjs at next{%
   \noexpand\RequirePackage[\bxjs at layout@paper,\bxjs at layout]{geometry}%
 }\bxjs at next
-\bxjs at apply@bd at pre@geometry at hook{\RevokeOldLuaTeXBehavior}
+\bxjs at apply@bd at pre@geometry at hook{\@nameuse{RevokeOldLuaTeXBehavior}}
 %    \end{macrocode}
 %
 % \begin{macro}{\bxjs at geometry@driver}
@@ -3832,16 +4437,9 @@
 %    \end{macrocode}
 % \end{ZRnote}
 %
-% \paragraph{JSクラスと共通処理の開始 \ZRX}
-% \mbox{}
 % \begin{ZRnote}
-% ここからのコードは以下の点を除いて JS クラスのものを踏襲する。
-% \begin{itemize}
-% \item zw の代わりに |\jsZw| を用いる。
-% \item article/report/book/slide の切り分けの処理が異なる。
-% \end{itemize}
-% \Note diffが崩壊するのを避けるためオリジナルのコードを無効化した状態で
-% 挿入しておく。
+% ここでは、|jsclasse.dtx| との差分を抑制するために、
+% オリジナルのコードを無効化した状態で挿入しておく。
 % \end{ZRnote}
 %    \begin{macrocode}
 %<*jsclasses>
@@ -4222,6 +4820,16 @@
 %</jsclasses>
 %    \end{macrocode}
 %
+% \paragraph{JSクラスと共通処理の開始 \ZRX}
+% \mbox{}
+% \begin{ZRnote}
+% ここからのコードは以下の点を除いて JS クラスのものを踏襲する。
+% \begin{itemize}
+% \item zw の代わりに |\jsZw| を用いる。
+% \item article/report/book/slide の切り分けの処理が異なる。
+% \end{itemize}
+% \end{ZRnote}
+%
 % \paragraph{脚注}
 %
 % \begin{macro}{\footnotesep}
@@ -4669,16 +5277,22 @@
 % [2011-05-10] しっぽ愛好家さん [qa:6370] のパッチを取り込ませていただきました
 % (北見さん [qa:55896] のご指摘ありがとうございます)。
 %
+%    \begin{macrocode}
+%<*book|report>
+%    \end{macrocode}
+%
 % \begin{ZRnote}
-% |\autoxspacing| は未定義の可能性があるため、
-% 「|\autoxspacing| が定義済なら実行する」マクロ |\bxjs at maybe@autoxspacing| を
-% 代わりに用いる。
+% \begin{macro}{\bxjs at maybe@autoxspacing}
+% |\autoxspacing| が定義済ならばそれを実行する。
+% \Note |\autoxspacing| は未定義の可能性があるため代わりに用いる。
+%    \begin{macrocode}
+\def\bxjs at maybe@autoxspacing{%
+  \ifx\autoxspacing\@undefined\else \autoxspacing \fi}
+%    \end{macrocode}
+% \end{macro}
 % \end{ZRnote}
 %
 %    \begin{macrocode}
-%<*book|report>
-\def\bxjs at maybe@autoxspacing{%
-  \ifx\autoxspacing\@undefined\else \autoxspacing \fi}
 \newif\if at omit@number
 \def\ps at headings{%
   \let\@oddfoot\@empty
@@ -5057,7 +5671,7 @@
 % \subsection{章・節}
 %
 % \begin{ZRnote}
-% ムニャムニャ……。
+% |label-section| オプション対応のための処理。
 % \begin{macro}{\bxjs at label@sect}
 % 節付 |#1| の番号を出力する。
 % 節付 |XXX| に対して、|\labelXXX| が定義済ならそれが出力書式を表す。
@@ -5174,7 +5788,8 @@
 % \begin{ZRnote}
 % |\everyparhook| の挿入は |everyparhook=compat| の時のみ行う。
 % \begin{macro}{\bxjs at if@ceph}
-% |everyparhook=compat| である場合にのみ直後のトークンを実行する。
+% |\bxjs at if@ceph{|\Meta{コード}|}|\Means
+% |everyparhook=compat| である場合にのみ\Meta{コード}を実行する。
 %    \begin{macrocode}
 \ifnum\bxjs at everyparhook=\bxjs at everyparhook@@compat
   \let\bxjs at if@ceph\@firstofone
@@ -5249,6 +5864,9 @@
       \else
         \clubpenalty \@clubpenalty
         \everypar\expandafter{\bxjs at if@ceph\everyparhook}%
+%    \end{macrocode}
+% \TODO ↑ナニコレ?
+%    \begin{macrocode}
       \fi\bxjs at if@ceph\everyparhook}%
   \else
     \par \nobreak
@@ -5834,7 +6452,7 @@
 % \end{macro}
 %
 % \begin{macro}{\paragraph}
-% % \begin{macro}{\jsParagraphMark}
+% \begin{macro}{\jsParagraphMark}
 %
 %    見出しの後ろで改行されません。
 %
@@ -5854,8 +6472,14 @@
 %
 % 段落のマーク(■)が必ず和文フォントで出力されるようにする。
 %
-% |\jsJaChar| はstandard和文ドライバが読み込まれた場合は\
-% |\jachar| と同義になるが、それ以外は何もしない。
+% \begin{macro}{\jsJaChar}
+% standard和文ドライバが読み込まれた場合は |\jachar| と同義で、
+% それ以外は何もしない。
+%    \begin{macrocode}
+\let\jsJaChar\@empty
+%    \end{macrocode}
+% \end{macro}
+%
 % \end{ZRnote}
 %    \begin{macrocode}
 \newcommand\jsParagraphMark{\relax\jsJaChar{■}}
@@ -5865,7 +6489,6 @@
 \else\ifx\bxjs at paragraph@mark\@undefined\else
   \long\edef\jsParagraphMark{\noexpand\jsJaChar{\bxjs at paragraph@mark}}
 \fi\fi
-\let\jsJaChar\@empty
 \if at twocolumn
   \newcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%
     {\z@}{\if at slide .4\Cvs \else -1\jsZw\fi}% 改行せず 1\jsZw のアキ
@@ -6111,17 +6734,14 @@
 % \begin{ZRnote}
 % 和文の括弧で囲むための補助命令 |\jsInJaParen| を
 % 定義して |\labelenumii| でそれを用いている。
-% \Note 現状の |zxjatype| の |\inhibitglue| の実装には
-% 「前後のグルーを消してしまう」という不備があって、
-% そのため |enumii| の出力が異常になるという不具合があった。
-% |zxjatype| を修正するまでの回避策として、サイズがゼロの
-% 罫(|\bxjs at dust|)でガードしておく。
+%^^A \Note 現状の |zxjatype| の |\inhibitglue| の実装には
+%^^A 「前後のグルーを消してしまう」という不備があって、
+%^^A そのため |enumii| の出力が異常になるという不具合があった。
 % \end{ZRnote}
 %
 %    \begin{macrocode}
-\def\bxjs at dust{\vrule\@width\z@\@height\z@\@depth\z@}
 \newcommand*{\jsInJaParen}[1]{%
-  \bxjs at dust\jsInhibitGlue (#1)\jsInhibitGlue\bxjs at dust}
+  \mbox{\jsInhibitGlue (#1)\jsInhibitGlue}}
 \newcommand{\labelenumi}{\theenumi.}
 \newcommand{\labelenumii}{\jsInJaParen{\theenumii}}
 \newcommand{\labelenumiii}{\theenumiii.}
@@ -6213,10 +6833,10 @@
 % \begin{ZRnote}
 % |bxjsreport| クラスのabstract環境は:
 % \begin{itemize}
-% \item |layout=v1| の場合は |jsbook|\,+\,|report| の動作を継承する。
+% \item |layout=v1| の場合は |jsbook|+|report| の動作を継承する。
 %   つまり |jsbook| と同じになる。
 % \item |layout=v2| の場合は新設の |jsreport| の動作を継承する。
-%   つまり |jsarticle|(+\,|titlapage|)と同じになる。
+%   つまり |jsarticle|(+|titlapage|)と同じになる。
 % \end{itemize}
 %
 % \begin{environment}{chapterabstract}
@@ -6769,6 +7389,10 @@
 %
 % [2003-11-05] ロジックを少し変えてみました。
 %
+% [2018-12-11] 遅くなりましたが,|listings| パッケージを使うときに
+% |title| を指定すると ``1zw'' が出力されてしまう
+% 問題 (forum:1543,Issue \#71) に対処しました。
+%
 %    \begin{macrocode}
 %<*!jspf>
 % \long\def\@makecaption#1#2{{\small
@@ -6913,10 +7537,14 @@
 % それより後に実行されるため捕捉できない。
 % これに対処するため、|\end{document}| 中に実行される |\clearpage| の処理の
 % 直後に |\bxjs....final| が呼ばれるようにする。
+% \Note 新しい{\LaTeX}ではフックシステムの機能を利用する。
 %    \begin{macrocode}
-\def\bxjs at warnoldfontcmd@kick at final{%
-  \g at addto@macro\clearpage{\bxjs at warnoldfontcmd@final}}
-\AtEndDocument{\bxjs at warnoldfontcmd@kick at final}
+\ifbxjs at old@hook at system
+  \AtEndDocument{%
+    \g at addto@macro\clearpage{\bxjs at warnoldfontcmd@final}}
+\else
+  \AddToHook{enddocument/afterlastpage}{\bxjs at warnoldfontcmd@final}
+\fi
 %    \end{macrocode}
 %
 % \end{ZRnote}
@@ -7937,8 +8565,7 @@
     \else
       \clubpenalty \@clubpenalty
       \everypar{\everyparhook}%
-    \fi
-    \everyparhook}%
+    \fi\everyparhook}%
   \if at noitemarg
     \@noitemargfalse
     \if at nmbrlist
@@ -7996,7 +8623,7 @@
 % しかし単に戻すだけでも駄目みたいなので,ここでも最後にグルーを消しておきます。
 %
 % \begin{ZRnote}
-% \Note |luatexja| を読みこんだ場合に lltjcore.sty によって上書きされる
+% \Note |luatexja| を読み込んだ場合に lltjcore.sty によって上書きされる
 % のを防ぐため遅延させる。
 % \end{ZRnote}
 %    \begin{macrocode}
@@ -8148,8 +8775,13 @@
 % \paragraph{今日の日付}
 %
 % \LaTeX で処理した日付を出力します。
-% |jarticle| などと違って,標準を西暦にし,余分な空白が入らないように改良しました。
+% ^^A |jarticle| などと違って,標準を西暦にし,
+% ^^A 余分な空白が入らないように改良しました。
+% ^^A -- 2018年7月以降は |jarticle| なども標準が西暦,
+% ^^A -- 2019年4月以降は余分な空白が入らなくなっています。
 % 和暦にするには |\和暦| と書いてください。
+% ^^A ちなみにこの文章の作成日は西暦では{\西暦\today}で,
+% ^^A 和暦では{\和暦\today}です。
 %
 % \begin{ZRnote}
 % 環境変数 |SOURCE_DATE_EPOCH|/|FORCE_SOURCE_DATE| が
@@ -8156,8 +8788,24 @@
 % 設定されている場合は“今日”が過去・未来の日付になる可能性がある。
 % BXJSクラスでは、和暦の扱いは |bxwareki| パッケージに任せる。
 % \Note 2.0版より、\textbf{完全に} |bxwareki| に任せる。
-% \end{ZRnote}
 %
+% \begin{macro}{\西暦}
+% \begin{macro}{\和暦}
+% 8ビット欧文{\TeX}ではそもそも非ASCIIの制御綴は使えないのであるが、
+% JSクラスのユーザ命令である |\西暦|/|\和暦| だけは\textbf{擬似的}に
+% 使えるようにする。
+% 欧文{\TeX}では
+% \begin{itemize}
+% \item |\西暦|=|\^^e8^^a5^^bf^^e6^^9a^^a6|
+% \item |\和暦|=|\^^e5^^92^^8c^^e6^^9a^^a6|
+% \end{itemize}
+% と扱われるため、|\^^e8| と |\^^e5| を「固定の引数付のマクロ」として
+% 定義すればよい。
+% もちろん、同じバイトで始まる他の名前(例えば |\西暦true|)
+% とは共存できないので、
+% この2つのユーザ命令以外の非ASCIIの制御綴は使わないようにする。
+%
+% {\TeX}エンジンの種類により処理を分ける。
 %    \begin{macrocode}
 \@onlypreamble\bxjs at decl@Seireki at cmds
 \@tempswafalse
@@ -8164,16 +8812,41 @@
 \if p\jsEngine \@tempswatrue \fi
 \if n\jsEngine \@tempswatrue \fi
 \bxjs at cond\if at tempswa\fi{%
-% 欧文8bitTeXの場合
+%    \end{macrocode}
+% 8ビット欧文{\TeX}の場合。
+% \begin{macro}{\ifjsSeireki}
+% 〔スイッチ〕|西暦| スイッチ(|\if西暦|)の代わりに用いる。
+%    \begin{macrocode}
 \newif\ifjsSeireki \jsSeirekitrue
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\bxjs at decl@Seireki at cmds}
+% 本クラス用の |\西暦|/|\和暦| の命令を定義するためのマクロ。
+% \Note |\def\西暦| は実際には |\^^e8| の定義文であることに注意。
+%    \begin{macrocode}
 \def\bxjs at decl@Seireki at cmds{%
   \def\西暦{\jsSeirekitrue}%
   \def\和暦{\jsSeirekifalse\bxjs at wareki@used}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Seireki}
+% \begin{macro}{\Wareki}
+% |\西暦|/|\和暦| の代わりになるASCII名の命令も(念のため)
+% 用意しておく。
+%    \begin{macrocode}
 \def\Seireki{\jsSeirekitrue}
 \def\Wareki{\jsSeirekifalse\bxjs at wareki@used}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%    \begin{macrocode}
 \def\bxjs at if@use at seireki{\bxjs at cond\ifjsSeireki\fi}
 \def\bxjs at iai{\noexpand~}
 }{%
+%    \end{macrocode}
+% 8ビット欧文{\TeX}ではない場合。
+% ここではJSクラスと合わせるため |西暦| スイッチを使う。
+%    \begin{macrocode}
 \newif\if西暦 \西暦true
 \def\bxjs at decl@Seireki at cmds{%
   \def\西暦{\西暦true}%
@@ -8188,6 +8861,8 @@
 \bxjs at test@engine\unexpanded{%
   \let\bxjs at unxp\unexpanded \def\bxjs at onxp{\unexpanded\expandafter}}
 %    \end{macrocode}
+% \end{macro}
+% \end{macro}
 %
 % \begin{macro}{\ifbxjs at bxwareki@avail}
 % |bxwareki| パッケージが使用できるか。
@@ -8200,7 +8875,8 @@
 % \end{macro}
 %
 % \begin{macro}{\bxjs at wareki@used}
-% 和暦が非対応の場合に警告を出す。
+% |bxwareki| が利用できないのに和暦出力をしようとした場合に
+% 警告を出す。
 %    \begin{macrocode}
 \ifbxjs at bxwareki@avail \let\bxjs at wareki@used\@empty
 \else
@@ -8216,7 +8892,7 @@
 % \end{macro}
 %
 % \begin{macro}{\jayear}
-% 和暦における年の表記の「年」以前の部分(元号+年数)。
+% 和暦における年の表記の「年」以前の部分(元号+年数)。
 % \Note |\heisei| の代替となる機能(だから常に和暦を扱う)。
 % \begin{macro}{\heisei}
 % 年数を表す整数レジスタで、元号が「平成」である場合にのみ定義される。
@@ -8237,9 +8913,35 @@
 % \end{macro}
 % \end{macro}
 %
+% \end{ZRnote}
+%
 % \begin{macro}{\today}
 % 英語、西暦、和暦で場合分けをする。
+% \Note diffの都合のためまた |jsclasses| のコードを挿入する。
 %    \begin{macrocode}
+%<*jsclasses>
+\newif\if西暦 \西暦true
+\def\西暦{\西暦true}
+\def\和暦{\西暦false}
+\newcount\heisei \heisei\year \advance\heisei-1988\relax
+\def\pltx at today@year@#1{%
+  \ifnum\numexpr\year-#1=1 元\else
+    \ifnum1=\iftdir\ifmdir0\else1\fi\else0\fi
+      \kansuji\numexpr\year-#1\relax
+    \else
+      \number\numexpr\year-#1\relax\nobreak
+    \fi
+  \fi 年
+}
+\def\pltx at today@year{%
+  \ifnum\numexpr\year*10000+\month*100+\day<19890108
+    昭和\pltx at today@year@{1925}%
+  \else\ifnum\numexpr\year*10000+\month*100+\day<20190501
+    平成\pltx at today@year@{1988}%
+  \else
+    令和\pltx at today@year@{2018}%
+  \fi\fi}
+%</jsclasses>
 \let\bxjs at next\relax
 \ifbxjs at bxwareki@avail \ifx\warekigengo\@empty\else
   \def\bxjs at next{\bxjs at onxp{\warekitoday}}
@@ -8307,6 +9009,7 @@
 %</slide>
 %    \end{macrocode}
 %
+%
 % \paragraph{BXJS独自の追加処理 \ZRX}
 % \mbox{}
 % \begin{ZRnote}
@@ -8322,6 +9025,20 @@
 %
 % おしまい。
 % \end{ZRnote}
+%
+% \section{実験的コード}
+%
+% \begin{ZRnote}
+% この節はJSクラスの話で、BXJSクラスには当てはまらない。
+% \end{ZRnote}
+%
+% [2016-11-29] コミュニティ版p\LaTeX で新設されたテスト用パッケージ
+% (\texttt{exppl2e}パッケージ)が文書クラスより先に読み込まれていた
+% 場合は,jsclassesもテスト版として動作します。この処置は
+% jsarticle,jsbook,jsreportにのみ行い,jspfとkiyouは除外しておきます。
+% exppl2eパッケージが読みこまれていない場合は通常版として動作しますので,
+% ここで終了します。
+%
 %    \begin{macrocode}
 %</class>
 %    \end{macrocode}
@@ -11572,7 +12289,7 @@
 % 他のクラスの文書で読み込んで利用することもできる。
 %
 % \begin{itemize}
-% \item bxjscompat : ムニャムニャムニャ。
+% \item bxjscompat : 古いやつをどうにかするナニカ。
 % \item bxjscjkcat: modernドライバ用の和文カテゴリを適用する。
 % \item bxjspandoc : Pandoc用のナニカ。
 % \end{itemize}
@@ -11828,7 +12545,9 @@
   \edef\bxjx at tmpb{\meaning#1}%
   \ifx\bxjx at tmpa\bxjx at tmpb #2\fi}
 \bxjx at tmpdo\kanjiskip{\let\bxjx at engine=j}
-\bxjx at tmpdo\enablecjktoken{\let\bxjx at engine=u}
+\bxjx at tmpdo\enablecjktoken{%
+  \ifx\ucs\@undefined\else \ifnum\ucs"3000="3000
+    \let\bxjx at engine=u\fi\fi}
 \bxjx at tmpdo\XeTeXversion{\let\bxjx at engine=x}
 \bxjx at tmpdo\pdftexversion{\let\bxjx at engine=p}
 \bxjx at tmpdo\luatexversion{\let\bxjx at engine=l}

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls	2023-06-22 19:34:01 UTC (rev 67438)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls	2023-06-22 20:40:06 UTC (rev 67439)
@@ -22,28 +22,21 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsarticle}
-  [2023/06/14 v2.8  BXJS document classes]
+  [2023/06/20 v2.8a BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsarticle}
 \newif\ifjsc at needsp@tch
 \jsc at needsp@tchfalse
-\RequirePackage{calc}
-\RequirePackage{keyval}
-\def\jsAtEndOfClass{%
-  \expandafter\g at addto@macro\csname\bxjs at clsname.cls-h@@k\endcsname}
-\IfFileExists{bxjscompat.sty}{%
-  \RequirePackage{bxjscompat}%
-}{}
 \let\jsArticle=a
 \let\jsBook=b
 \let\jsReport=r
 \let\jsSlide=s
 \let\jsDocClass\jsArticle
-\let\jsEngine=n
 \def\bxjs at test@engine#1#2{%
   \edef\bxjs at tmpa{\string#1}%
   \edef\bxjs at tmpb{\meaning#1}%
   \ifx\bxjs at tmpa\bxjs at tmpb #2\fi}
+\let\jsEngine=n
 \bxjs at test@engine\kanjiskip{\let\jsEngine=j}
 \bxjs at test@engine\jintercharskip{\let\jsEngine=J}
 \bxjs at test@engine\Omegaversion{\let\jsEngine=O}
@@ -50,15 +43,6 @@
 \bxjs at test@engine\XeTeXversion{\let\jsEngine=x}
 \bxjs at test@engine\pdftexversion{\let\jsEngine=p}
 \bxjs at test@engine\luatexversion{\let\jsEngine=l}
-\newif\ifjsWithupTeX
-\ifx\ucs\@undefined\else \ifnum\ucs"3000="3000
-  \jsWithupTeXtrue
-\fi\fi
-\let\if at jsc@uplatex\ifjsWithupTeX
-\newif\ifjsWithpTeXng
-\bxjs at test@engine\ngbanner{\jsWithpTeXngtrue}
-\newif\ifjsWitheTeX
-\bxjs at test@engine\eTeXversion{\jsWitheTeXtrue}
 \let\bxjs at tmpa\relax
 \ifx J\jsEngine \def\bxjs at tmpa{NTT-jTeX}\fi
 \ifx O\jsEngine \def\bxjs at tmpa{Omega}\fi
@@ -69,6 +53,66 @@
    {It's a fatal error. I'll quit right now.}
   \expandafter\@firstofone
 \fi{\endinput\@@end}
+\@tempswatrue
+\if x\jsEngine
+  \ifdim\the\XeTeXversion\XeTeXrevision\p@<0.997\p@
+    \@tempswafalse \fi
+\fi
+\if at tempswa \expandafter\@gobble
+\else
+  \ClassError\bxjs at clsname
+   {The engine in use is all too old}
+   {It's a fatal error. I'll quit right now.}
+  \expandafter\@firstofone
+\fi{\endinput\@@end}
+\if at compatibility
+  \ClassError\bxjs at clsname
+   {Something went chaotic!\MessageBreak
+    (How come '\string\documentstyle' is there?)\MessageBreak
+    I cannot go a single step further...}
+   {If the chant of '\string\documentstyle' was just a blunder of yours,\MessageBreak
+    then there'll still be hope....}
+  \expandafter\@firstofone
+\else \expandafter\@gobble
+\fi{\typeout{Farewell!}\endinput\@@end}
+\newif\ifjsWithupTeX
+\ifx\ucs\@undefined\else \ifnum\ucs"3000="3000
+  \jsWithupTeXtrue
+\fi\fi
+\let\if at jsc@uplatex\ifjsWithupTeX
+\newif\ifjsWithpTeXng
+\bxjs at test@engine\ngbanner{\jsWithpTeXngtrue}
+\newif\ifjsWitheTeX
+\bxjs at test@engine\eTeXversion{\jsWitheTeXtrue}
+\newif\ifjsInPdfMode
+\@nameuse{jsInPdfMode\ifnum0%
+  \ifx\pdfoutput\@undefined\else\the\pdfoutput\fi
+  \ifx\outputmode\@undefined\else\the\outputmode\fi
+  >0 true\else false\fi}
+\newif\ifbxjs at explIII
+\@ifl at t@r\fmtversion{2020/02/02}{\bxjs at explIIItrue}{}
+\newif\ifbxjs at TUenc
+\def\bxjs at tmpa{TU}\edef\bxjs at tmpb{\f at encoding}
+\ifx\bxjs at tmpa\bxjs at tmpb
+  \bxjs at TUenctrue
+\fi
+\newif\ifbxjs at old@hook at system
+\@ifl at t@r\fmtversion{2020/10/01}{}{\bxjs at old@hook at systemtrue}
+\RequirePackage{calc}
+\RequirePackage{keyval}
+\IfFileExists{iftex.sty}{%
+  \RequirePackage{iftex}
+}{}
+\begingroup\expandafter\endgroup
+\expandafter\ifx\csname ifpdf\endcsname\@undefined\else
+  \expandafter\let\csname ifjsInPdfMode\expandafter\endcsname
+      \csname ifpdf\endcsname
+\fi
+\def\jsAtEndOfClass{%
+  \expandafter\g at addto@macro\csname\bxjs at clsname.cls-h@@k\endcsname}
+\IfFileExists{bxjscompat.sty}{%
+  \RequirePackage{bxjscompat}%
+}{}
 \ifx l\jsEngine
   \directlua{ bxjs = {} }
 \fi
@@ -80,15 +124,6 @@
 \else
   \def\bxjs at robust@def{\DeclareRobustCommand*}
 \fi
-\newif\ifbxjs at explIII
-\@ifl at t@r\fmtversion{2020/02/02}{\bxjs at explIIItrue}{}
-\newif\ifbxjs at TUenc
-\def\bxjs at tmpa{TU}\edef\bxjs at tmpb{\f at encoding}
-\ifx\bxjs at tmpa\bxjs at tmpb
-  \bxjs at TUenctrue
-\fi
-\newif\ifbxjs at old@hook at system
-\@ifl at t@r\fmtversion{2020/10/01}{}{\bxjs at old@hook at systemtrue}
 \@ifl at t@r\fmtversion{2021/11/15}{%
   \def\bxjs at CGHN#1{#1}%
 }{%else
@@ -102,13 +137,6 @@
   \expandafter\let\csname#1\endcsname}
 \def\bxjs at csletcs#1#2{%
   \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname}
-\RequirePackage{iftex}
-\newif\ifjsInPdfMode
-\@nameuse{jsInPdfMode\ifnum0%
-  \ifx\pdfoutput\@undefined\else\the\pdfoutput\fi
-  \ifx\outputmode\@undefined\else\the\outputmode\fi
-  >0 true\else false\fi}
-\ifx\pdffalse\@undefined\else \bxjs at csletcs{ifjsInPdfMode}{ifpdf}\fi
 \def\bxjs at catopt#1#2{%
   #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2}
 \def\bxjs at ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}}
@@ -180,28 +208,6 @@
 \@onlypreamble\bxjs at tmpdo@d
 \bxjs at robust@def\jsInhibitGlue{%
   \ifx\inhibitglue\@undefined\else \inhibitglue \fi}
-\@tempswatrue
-\if x\jsEngine
-  \ifdim\the\XeTeXversion\XeTeXrevision\p@<0.997\p@
-    \@tempswafalse \fi
-\fi
-\if at tempswa \expandafter\@gobble
-\else
-  \ClassError\bxjs at clsname
-   {The engine in use is all too old}
-   {It's a fatal error. I'll quit right now.}
-  \expandafter\@firstofone
-\fi{\endinput\@@end}
-\if at compatibility
-  \ClassError\bxjs at clsname
-   {Something went chaotic!\MessageBreak
-    (How come '\string\documentstyle' is there?)\MessageBreak
-    I cannot go a single step further...}
-   {If the chant of '\string\documentstyle' was just a blunder of yours,\MessageBreak
-    then there'll still be hope....}
-  \expandafter\@firstofone
-\else \expandafter\@gobble
-\fi{\typeout{Farewell!}\endinput\@@end}
 \newif\if at restonecol
 \newif\if at titlepage
 \newif\if at enablejfam \@enablejfamfalse
@@ -1224,13 +1230,14 @@
 \else
   \PassOptionsToPackage{driver=none}{geometry}
 \fi
-\bxjs at apply@bd at pre@geometry at hook{\bxjs at bd@pre at geometry@hook}
-\bxjs at apply@bd at pre@geometry at hook{\ImposeOldLuaTeXBehavior}
+\bxjs at apply@bd at pre@geometry at hook{%
+  \bxjs at bd@pre at geometry@hook
+  \@nameuse{ImposeOldLuaTeXBehavior}}
 \bxjs at preproc@layout
 \edef\bxjs at next{%
   \noexpand\RequirePackage[\bxjs at layout@paper,\bxjs at layout]{geometry}%
 }\bxjs at next
-\bxjs at apply@bd at pre@geometry at hook{\RevokeOldLuaTeXBehavior}
+\bxjs at apply@bd at pre@geometry at hook{\@nameuse{RevokeOldLuaTeXBehavior}}
 \let\bxjs at geometry@driver\Gm at driver
 \bxjs at postproc@layout
 \g at addto@macro\bxjs at bd@pre at geometry@hook{%
@@ -1721,6 +1728,7 @@
     {\if at slide .5\Cvs \@plus.3\Cdp \else \z@ \fi}%
     {\normalfont\normalsize\headfont}}
 \fi
+\let\jsJaChar\@empty
 \newcommand\jsParagraphMark{\relax\jsJaChar{■}}
 \let\bxjs at org@paragraph at mark\jsParagraphMark
 \ifx\bxjs at paragraph@mark\@empty
@@ -1728,7 +1736,6 @@
 \else\ifx\bxjs at paragraph@mark\@undefined\else
   \long\edef\jsParagraphMark{\noexpand\jsJaChar{\bxjs at paragraph@mark}}
 \fi\fi
-\let\jsJaChar\@empty
 \if at twocolumn
   \newcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%
     {\z@}{\if at slide .4\Cvs \else -1\jsZw\fi}% 改行せず 1\jsZw のアキ
@@ -1806,9 +1813,8 @@
 \renewcommand{\theenumii}{\@alph\c at enumii}
 \renewcommand{\theenumiii}{\@roman\c at enumiii}
 \renewcommand{\theenumiv}{\@Alph\c at enumiv}
-\def\bxjs at dust{\vrule\@width\z@\@height\z@\@depth\z@}
 \newcommand*{\jsInJaParen}[1]{%
-  \bxjs at dust\jsInhibitGlue (#1)\jsInhibitGlue\bxjs at dust}
+  \mbox{\jsInhibitGlue (#1)\jsInhibitGlue}}
 \newcommand{\labelenumi}{\theenumi.}
 \newcommand{\labelenumii}{\jsInJaParen{\theenumii}}
 \newcommand{\labelenumiii}{\theenumiii.}
@@ -2017,9 +2023,12 @@
       class provides\MessageBreak
       the old font commands only for compatibility}
   \fi}
-\def\bxjs at warnoldfontcmd@kick at final{%
-  \g at addto@macro\clearpage{\bxjs at warnoldfontcmd@final}}
-\AtEndDocument{\bxjs at warnoldfontcmd@kick at final}
+\ifbxjs at old@hook at system
+  \AtEndDocument{%
+    \g at addto@macro\clearpage{\bxjs at warnoldfontcmd@final}}
+\else
+  \AddToHook{enddocument/afterlastpage}{\bxjs at warnoldfontcmd@final}
+\fi
 \jsc at DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
 \jsc at DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
 \jsc at DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
@@ -2310,8 +2319,7 @@
     \else
       \clubpenalty \@clubpenalty
       \everypar{\everyparhook}%
-    \fi
-    \everyparhook}%
+    \fi\everyparhook}%
   \if at noitemarg
     \@noitemargfalse
     \if at nmbrlist

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls	2023-06-22 19:34:01 UTC (rev 67438)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls	2023-06-22 20:40:06 UTC (rev 67439)
@@ -22,28 +22,21 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsbook}
-  [2023/06/14 v2.8  BXJS document classes]
+  [2023/06/20 v2.8a BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsbook}
 \newif\ifjsc at needsp@tch
 \jsc at needsp@tchfalse
-\RequirePackage{calc}
-\RequirePackage{keyval}
-\def\jsAtEndOfClass{%
-  \expandafter\g at addto@macro\csname\bxjs at clsname.cls-h@@k\endcsname}
-\IfFileExists{bxjscompat.sty}{%
-  \RequirePackage{bxjscompat}%
-}{}
 \let\jsArticle=a
 \let\jsBook=b
 \let\jsReport=r
 \let\jsSlide=s
 \let\jsDocClass\jsBook
-\let\jsEngine=n
 \def\bxjs at test@engine#1#2{%
   \edef\bxjs at tmpa{\string#1}%
   \edef\bxjs at tmpb{\meaning#1}%
   \ifx\bxjs at tmpa\bxjs at tmpb #2\fi}
+\let\jsEngine=n
 \bxjs at test@engine\kanjiskip{\let\jsEngine=j}
 \bxjs at test@engine\jintercharskip{\let\jsEngine=J}
 \bxjs at test@engine\Omegaversion{\let\jsEngine=O}
@@ -50,15 +43,6 @@
 \bxjs at test@engine\XeTeXversion{\let\jsEngine=x}
 \bxjs at test@engine\pdftexversion{\let\jsEngine=p}
 \bxjs at test@engine\luatexversion{\let\jsEngine=l}
-\newif\ifjsWithupTeX
-\ifx\ucs\@undefined\else \ifnum\ucs"3000="3000
-  \jsWithupTeXtrue
-\fi\fi
-\let\if at jsc@uplatex\ifjsWithupTeX
-\newif\ifjsWithpTeXng
-\bxjs at test@engine\ngbanner{\jsWithpTeXngtrue}
-\newif\ifjsWitheTeX
-\bxjs at test@engine\eTeXversion{\jsWitheTeXtrue}
 \let\bxjs at tmpa\relax
 \ifx J\jsEngine \def\bxjs at tmpa{NTT-jTeX}\fi
 \ifx O\jsEngine \def\bxjs at tmpa{Omega}\fi
@@ -69,6 +53,66 @@
    {It's a fatal error. I'll quit right now.}
   \expandafter\@firstofone
 \fi{\endinput\@@end}
+\@tempswatrue
+\if x\jsEngine
+  \ifdim\the\XeTeXversion\XeTeXrevision\p@<0.997\p@
+    \@tempswafalse \fi
+\fi
+\if at tempswa \expandafter\@gobble
+\else
+  \ClassError\bxjs at clsname
+   {The engine in use is all too old}
+   {It's a fatal error. I'll quit right now.}
+  \expandafter\@firstofone
+\fi{\endinput\@@end}
+\if at compatibility
+  \ClassError\bxjs at clsname
+   {Something went chaotic!\MessageBreak
+    (How come '\string\documentstyle' is there?)\MessageBreak
+    I cannot go a single step further...}
+   {If the chant of '\string\documentstyle' was just a blunder of yours,\MessageBreak
+    then there'll still be hope....}
+  \expandafter\@firstofone
+\else \expandafter\@gobble
+\fi{\typeout{Farewell!}\endinput\@@end}
+\newif\ifjsWithupTeX
+\ifx\ucs\@undefined\else \ifnum\ucs"3000="3000
+  \jsWithupTeXtrue
+\fi\fi
+\let\if at jsc@uplatex\ifjsWithupTeX
+\newif\ifjsWithpTeXng
+\bxjs at test@engine\ngbanner{\jsWithpTeXngtrue}
+\newif\ifjsWitheTeX
+\bxjs at test@engine\eTeXversion{\jsWitheTeXtrue}
+\newif\ifjsInPdfMode
+\@nameuse{jsInPdfMode\ifnum0%
+  \ifx\pdfoutput\@undefined\else\the\pdfoutput\fi
+  \ifx\outputmode\@undefined\else\the\outputmode\fi
+  >0 true\else false\fi}
+\newif\ifbxjs at explIII
+\@ifl at t@r\fmtversion{2020/02/02}{\bxjs at explIIItrue}{}
+\newif\ifbxjs at TUenc
+\def\bxjs at tmpa{TU}\edef\bxjs at tmpb{\f at encoding}
+\ifx\bxjs at tmpa\bxjs at tmpb
+  \bxjs at TUenctrue
+\fi
+\newif\ifbxjs at old@hook at system
+\@ifl at t@r\fmtversion{2020/10/01}{}{\bxjs at old@hook at systemtrue}
+\RequirePackage{calc}
+\RequirePackage{keyval}
+\IfFileExists{iftex.sty}{%
+  \RequirePackage{iftex}
+}{}
+\begingroup\expandafter\endgroup
+\expandafter\ifx\csname ifpdf\endcsname\@undefined\else
+  \expandafter\let\csname ifjsInPdfMode\expandafter\endcsname
+      \csname ifpdf\endcsname
+\fi
+\def\jsAtEndOfClass{%
+  \expandafter\g at addto@macro\csname\bxjs at clsname.cls-h@@k\endcsname}
+\IfFileExists{bxjscompat.sty}{%
+  \RequirePackage{bxjscompat}%
+}{}
 \ifx l\jsEngine
   \directlua{ bxjs = {} }
 \fi
@@ -80,15 +124,6 @@
 \else
   \def\bxjs at robust@def{\DeclareRobustCommand*}
 \fi
-\newif\ifbxjs at explIII
-\@ifl at t@r\fmtversion{2020/02/02}{\bxjs at explIIItrue}{}
-\newif\ifbxjs at TUenc
-\def\bxjs at tmpa{TU}\edef\bxjs at tmpb{\f at encoding}
-\ifx\bxjs at tmpa\bxjs at tmpb
-  \bxjs at TUenctrue
-\fi
-\newif\ifbxjs at old@hook at system
-\@ifl at t@r\fmtversion{2020/10/01}{}{\bxjs at old@hook at systemtrue}
 \@ifl at t@r\fmtversion{2021/11/15}{%
   \def\bxjs at CGHN#1{#1}%
 }{%else
@@ -102,13 +137,6 @@
   \expandafter\let\csname#1\endcsname}
 \def\bxjs at csletcs#1#2{%
   \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname}
-\RequirePackage{iftex}
-\newif\ifjsInPdfMode
-\@nameuse{jsInPdfMode\ifnum0%
-  \ifx\pdfoutput\@undefined\else\the\pdfoutput\fi
-  \ifx\outputmode\@undefined\else\the\outputmode\fi
-  >0 true\else false\fi}
-\ifx\pdffalse\@undefined\else \bxjs at csletcs{ifjsInPdfMode}{ifpdf}\fi
 \def\bxjs at catopt#1#2{%
   #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2}
 \def\bxjs at ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}}
@@ -180,28 +208,6 @@
 \@onlypreamble\bxjs at tmpdo@d
 \bxjs at robust@def\jsInhibitGlue{%
   \ifx\inhibitglue\@undefined\else \inhibitglue \fi}
-\@tempswatrue
-\if x\jsEngine
-  \ifdim\the\XeTeXversion\XeTeXrevision\p@<0.997\p@
-    \@tempswafalse \fi
-\fi
-\if at tempswa \expandafter\@gobble
-\else
-  \ClassError\bxjs at clsname
-   {The engine in use is all too old}
-   {It's a fatal error. I'll quit right now.}
-  \expandafter\@firstofone
-\fi{\endinput\@@end}
-\if at compatibility
-  \ClassError\bxjs at clsname
-   {Something went chaotic!\MessageBreak
-    (How come '\string\documentstyle' is there?)\MessageBreak
-    I cannot go a single step further...}
-   {If the chant of '\string\documentstyle' was just a blunder of yours,\MessageBreak
-    then there'll still be hope....}
-  \expandafter\@firstofone
-\else \expandafter\@gobble
-\fi{\typeout{Farewell!}\endinput\@@end}
 \newif\if at restonecol
 \newif\if at titlepage
 \newif\if at openright
@@ -1258,13 +1264,14 @@
 \else
   \PassOptionsToPackage{driver=none}{geometry}
 \fi
-\bxjs at apply@bd at pre@geometry at hook{\bxjs at bd@pre at geometry@hook}
-\bxjs at apply@bd at pre@geometry at hook{\ImposeOldLuaTeXBehavior}
+\bxjs at apply@bd at pre@geometry at hook{%
+  \bxjs at bd@pre at geometry@hook
+  \@nameuse{ImposeOldLuaTeXBehavior}}
 \bxjs at preproc@layout
 \edef\bxjs at next{%
   \noexpand\RequirePackage[\bxjs at layout@paper,\bxjs at layout]{geometry}%
 }\bxjs at next
-\bxjs at apply@bd at pre@geometry at hook{\RevokeOldLuaTeXBehavior}
+\bxjs at apply@bd at pre@geometry at hook{\@nameuse{RevokeOldLuaTeXBehavior}}
 \let\bxjs at geometry@driver\Gm at driver
 \bxjs at postproc@layout
 \g at addto@macro\bxjs at bd@pre at geometry@hook{%
@@ -1846,6 +1853,7 @@
     {\if at slide .5\Cvs \@plus.3\Cdp \else \z@ \fi}%
     {\normalfont\normalsize\headfont}}
 \fi
+\let\jsJaChar\@empty
 \newcommand\jsParagraphMark{\relax\jsJaChar{■}}
 \let\bxjs at org@paragraph at mark\jsParagraphMark
 \ifx\bxjs at paragraph@mark\@empty
@@ -1853,7 +1861,6 @@
 \else\ifx\bxjs at paragraph@mark\@undefined\else
   \long\edef\jsParagraphMark{\noexpand\jsJaChar{\bxjs at paragraph@mark}}
 \fi\fi
-\let\jsJaChar\@empty
 \if at twocolumn
   \newcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%
     {\z@}{\if at slide .4\Cvs \else -1\jsZw\fi}% 改行せず 1\jsZw のアキ
@@ -1931,9 +1938,8 @@
 \renewcommand{\theenumii}{\@alph\c at enumii}
 \renewcommand{\theenumiii}{\@roman\c at enumiii}
 \renewcommand{\theenumiv}{\@Alph\c at enumiv}
-\def\bxjs at dust{\vrule\@width\z@\@height\z@\@depth\z@}
 \newcommand*{\jsInJaParen}[1]{%
-  \bxjs at dust\jsInhibitGlue (#1)\jsInhibitGlue\bxjs at dust}
+  \mbox{\jsInhibitGlue (#1)\jsInhibitGlue}}
 \newcommand{\labelenumi}{\theenumi.}
 \newcommand{\labelenumii}{\jsInJaParen{\theenumii}}
 \newcommand{\labelenumiii}{\theenumiii.}
@@ -2101,9 +2107,12 @@
       class provides\MessageBreak
       the old font commands only for compatibility}
   \fi}
-\def\bxjs at warnoldfontcmd@kick at final{%
-  \g at addto@macro\clearpage{\bxjs at warnoldfontcmd@final}}
-\AtEndDocument{\bxjs at warnoldfontcmd@kick at final}
+\ifbxjs at old@hook at system
+  \AtEndDocument{%
+    \g at addto@macro\clearpage{\bxjs at warnoldfontcmd@final}}
+\else
+  \AddToHook{enddocument/afterlastpage}{\bxjs at warnoldfontcmd@final}
+\fi
 \jsc at DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
 \jsc at DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
 \jsc at DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
@@ -2415,8 +2424,7 @@
     \else
       \clubpenalty \@clubpenalty
       \everypar{\everyparhook}%
-    \fi
-    \everyparhook}%
+    \fi\everyparhook}%
   \if at noitemarg
     \@noitemargfalse
     \if at nmbrlist

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty	2023-06-22 19:34:01 UTC (rev 67438)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty	2023-06-22 20:40:06 UTC (rev 67439)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{bxjscjkcat}
-  [2023/06/14 v2.8  BXJS document classes]
+  [2023/06/20 v2.8a BXJS document classes]
 \def\bxjx at pkgname{bxjscjkcat}
 \newcount\bxjx at cnta
 \@onlypreamble\bxjx at tmpdo
@@ -34,7 +34,9 @@
   \edef\bxjx at tmpb{\meaning#1}%
   \ifx\bxjx at tmpa\bxjx at tmpb #2\fi}
 \bxjx at tmpdo\kanjiskip{\let\bxjx at engine=j}
-\bxjx at tmpdo\enablecjktoken{\let\bxjx at engine=u}
+\bxjx at tmpdo\enablecjktoken{%
+  \ifx\ucs\@undefined\else \ifnum\ucs"3000="3000
+    \let\bxjx at engine=u\fi\fi}
 \bxjx at tmpdo\XeTeXversion{\let\bxjx at engine=x}
 \bxjx at tmpdo\pdftexversion{\let\bxjx at engine=p}
 \bxjx at tmpdo\luatexversion{\let\bxjx at engine=l}

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty	2023-06-22 19:34:01 UTC (rev 67438)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty	2023-06-22 20:40:06 UTC (rev 67439)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{bxjscompat}
-  [2023/06/14 v2.8  BXJS document classes]
+  [2023/06/20 v2.8a BXJS document classes]
 \def\bxac at pkgname{bxjscompat}
 \let\bxac at engine=n
 \def\bxac at do#1#2{%

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def	2023-06-22 19:34:01 UTC (rev 67438)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def	2023-06-22 20:40:06 UTC (rev 67439)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-minimal.def}
-  [2023/06/14 v2.8  BXJS document classes]
+  [2023/06/20 v2.8a BXJS document classes]
 %% このファイルは日本語文字を含みます
 \def\DeclareJaTextFontCommand#1#2{%
   \DeclareRobustCommand#1[1]{%

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def	2023-06-22 19:34:01 UTC (rev 67438)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def	2023-06-22 20:40:06 UTC (rev 67439)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-modern.def}
-  [2023/06/14 v2.8  BXJS document classes]
+  [2023/06/20 v2.8a BXJS document classes]
 \input{bxjsja-standard.def}
 \ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi=\z@
 \def\encodingdefault{T1}%

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def	2023-06-22 19:34:01 UTC (rev 67438)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def	2023-06-22 20:40:06 UTC (rev 67439)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-pandoc.def}
-  [2023/06/14 v2.8  BXJS document classes]
+  [2023/06/20 v2.8a BXJS document classes]
 \input{bxjsja-standard.def}
 \RequirePackage{bxjspandoc}
 \ifjsWitheTeX\else

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def	2023-06-22 19:34:01 UTC (rev 67438)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def	2023-06-22 20:40:06 UTC (rev 67439)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-standard.def}
-  [2023/06/14 v2.8  BXJS document classes]
+  [2023/06/20 v2.8a BXJS document classes]
 %% このファイルは日本語文字を含みます
 \input{bxjsja-minimal.def}
 \bxjs at simplejasetupfalse

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty	2023-06-22 19:34:01 UTC (rev 67438)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty	2023-06-22 20:40:06 UTC (rev 67439)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{bxjspandoc}
-  [2023/06/14 v2.8  BXJS document classes]
+  [2023/06/20 v2.8a BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjsp at pkgname{bxjscjkcat}
 \let\bxjsp at engine=n

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls	2023-06-22 19:34:01 UTC (rev 67438)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls	2023-06-22 20:40:06 UTC (rev 67439)
@@ -22,28 +22,21 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsreport}
-  [2023/06/14 v2.8  BXJS document classes]
+  [2023/06/20 v2.8a BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsreport}
 \newif\ifjsc at needsp@tch
 \jsc at needsp@tchfalse
-\RequirePackage{calc}
-\RequirePackage{keyval}
-\def\jsAtEndOfClass{%
-  \expandafter\g at addto@macro\csname\bxjs at clsname.cls-h@@k\endcsname}
-\IfFileExists{bxjscompat.sty}{%
-  \RequirePackage{bxjscompat}%
-}{}
 \let\jsArticle=a
 \let\jsBook=b
 \let\jsReport=r
 \let\jsSlide=s
 \let\jsDocClass\jsReport
-\let\jsEngine=n
 \def\bxjs at test@engine#1#2{%
   \edef\bxjs at tmpa{\string#1}%
   \edef\bxjs at tmpb{\meaning#1}%
   \ifx\bxjs at tmpa\bxjs at tmpb #2\fi}
+\let\jsEngine=n
 \bxjs at test@engine\kanjiskip{\let\jsEngine=j}
 \bxjs at test@engine\jintercharskip{\let\jsEngine=J}
 \bxjs at test@engine\Omegaversion{\let\jsEngine=O}
@@ -50,15 +43,6 @@
 \bxjs at test@engine\XeTeXversion{\let\jsEngine=x}
 \bxjs at test@engine\pdftexversion{\let\jsEngine=p}
 \bxjs at test@engine\luatexversion{\let\jsEngine=l}
-\newif\ifjsWithupTeX
-\ifx\ucs\@undefined\else \ifnum\ucs"3000="3000
-  \jsWithupTeXtrue
-\fi\fi
-\let\if at jsc@uplatex\ifjsWithupTeX
-\newif\ifjsWithpTeXng
-\bxjs at test@engine\ngbanner{\jsWithpTeXngtrue}
-\newif\ifjsWitheTeX
-\bxjs at test@engine\eTeXversion{\jsWitheTeXtrue}
 \let\bxjs at tmpa\relax
 \ifx J\jsEngine \def\bxjs at tmpa{NTT-jTeX}\fi
 \ifx O\jsEngine \def\bxjs at tmpa{Omega}\fi
@@ -69,6 +53,66 @@
    {It's a fatal error. I'll quit right now.}
   \expandafter\@firstofone
 \fi{\endinput\@@end}
+\@tempswatrue
+\if x\jsEngine
+  \ifdim\the\XeTeXversion\XeTeXrevision\p@<0.997\p@
+    \@tempswafalse \fi
+\fi
+\if at tempswa \expandafter\@gobble
+\else
+  \ClassError\bxjs at clsname
+   {The engine in use is all too old}
+   {It's a fatal error. I'll quit right now.}
+  \expandafter\@firstofone
+\fi{\endinput\@@end}
+\if at compatibility
+  \ClassError\bxjs at clsname
+   {Something went chaotic!\MessageBreak
+    (How come '\string\documentstyle' is there?)\MessageBreak
+    I cannot go a single step further...}
+   {If the chant of '\string\documentstyle' was just a blunder of yours,\MessageBreak
+    then there'll still be hope....}
+  \expandafter\@firstofone
+\else \expandafter\@gobble
+\fi{\typeout{Farewell!}\endinput\@@end}
+\newif\ifjsWithupTeX
+\ifx\ucs\@undefined\else \ifnum\ucs"3000="3000
+  \jsWithupTeXtrue
+\fi\fi
+\let\if at jsc@uplatex\ifjsWithupTeX
+\newif\ifjsWithpTeXng
+\bxjs at test@engine\ngbanner{\jsWithpTeXngtrue}
+\newif\ifjsWitheTeX
+\bxjs at test@engine\eTeXversion{\jsWitheTeXtrue}
+\newif\ifjsInPdfMode
+\@nameuse{jsInPdfMode\ifnum0%
+  \ifx\pdfoutput\@undefined\else\the\pdfoutput\fi
+  \ifx\outputmode\@undefined\else\the\outputmode\fi
+  >0 true\else false\fi}
+\newif\ifbxjs at explIII
+\@ifl at t@r\fmtversion{2020/02/02}{\bxjs at explIIItrue}{}
+\newif\ifbxjs at TUenc
+\def\bxjs at tmpa{TU}\edef\bxjs at tmpb{\f at encoding}
+\ifx\bxjs at tmpa\bxjs at tmpb
+  \bxjs at TUenctrue
+\fi
+\newif\ifbxjs at old@hook at system
+\@ifl at t@r\fmtversion{2020/10/01}{}{\bxjs at old@hook at systemtrue}
+\RequirePackage{calc}
+\RequirePackage{keyval}
+\IfFileExists{iftex.sty}{%
+  \RequirePackage{iftex}
+}{}
+\begingroup\expandafter\endgroup
+\expandafter\ifx\csname ifpdf\endcsname\@undefined\else
+  \expandafter\let\csname ifjsInPdfMode\expandafter\endcsname
+      \csname ifpdf\endcsname
+\fi
+\def\jsAtEndOfClass{%
+  \expandafter\g at addto@macro\csname\bxjs at clsname.cls-h@@k\endcsname}
+\IfFileExists{bxjscompat.sty}{%
+  \RequirePackage{bxjscompat}%
+}{}
 \ifx l\jsEngine
   \directlua{ bxjs = {} }
 \fi
@@ -80,15 +124,6 @@
 \else
   \def\bxjs at robust@def{\DeclareRobustCommand*}
 \fi
-\newif\ifbxjs at explIII
-\@ifl at t@r\fmtversion{2020/02/02}{\bxjs at explIIItrue}{}
-\newif\ifbxjs at TUenc
-\def\bxjs at tmpa{TU}\edef\bxjs at tmpb{\f at encoding}
-\ifx\bxjs at tmpa\bxjs at tmpb
-  \bxjs at TUenctrue
-\fi
-\newif\ifbxjs at old@hook at system
-\@ifl at t@r\fmtversion{2020/10/01}{}{\bxjs at old@hook at systemtrue}
 \@ifl at t@r\fmtversion{2021/11/15}{%
   \def\bxjs at CGHN#1{#1}%
 }{%else
@@ -102,13 +137,6 @@
   \expandafter\let\csname#1\endcsname}
 \def\bxjs at csletcs#1#2{%
   \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname}
-\RequirePackage{iftex}
-\newif\ifjsInPdfMode
-\@nameuse{jsInPdfMode\ifnum0%
-  \ifx\pdfoutput\@undefined\else\the\pdfoutput\fi
-  \ifx\outputmode\@undefined\else\the\outputmode\fi
-  >0 true\else false\fi}
-\ifx\pdffalse\@undefined\else \bxjs at csletcs{ifjsInPdfMode}{ifpdf}\fi
 \def\bxjs at catopt#1#2{%
   #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2}
 \def\bxjs at ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}}
@@ -180,28 +208,6 @@
 \@onlypreamble\bxjs at tmpdo@d
 \bxjs at robust@def\jsInhibitGlue{%
   \ifx\inhibitglue\@undefined\else \inhibitglue \fi}
-\@tempswatrue
-\if x\jsEngine
-  \ifdim\the\XeTeXversion\XeTeXrevision\p@<0.997\p@
-    \@tempswafalse \fi
-\fi
-\if at tempswa \expandafter\@gobble
-\else
-  \ClassError\bxjs at clsname
-   {The engine in use is all too old}
-   {It's a fatal error. I'll quit right now.}
-  \expandafter\@firstofone
-\fi{\endinput\@@end}
-\if at compatibility
-  \ClassError\bxjs at clsname
-   {Something went chaotic!\MessageBreak
-    (How come '\string\documentstyle' is there?)\MessageBreak
-    I cannot go a single step further...}
-   {If the chant of '\string\documentstyle' was just a blunder of yours,\MessageBreak
-    then there'll still be hope....}
-  \expandafter\@firstofone
-\else \expandafter\@gobble
-\fi{\typeout{Farewell!}\endinput\@@end}
 \newif\if at restonecol
 \newif\if at titlepage
 \newif\if at openright
@@ -1232,13 +1238,14 @@
 \else
   \PassOptionsToPackage{driver=none}{geometry}
 \fi
-\bxjs at apply@bd at pre@geometry at hook{\bxjs at bd@pre at geometry@hook}
-\bxjs at apply@bd at pre@geometry at hook{\ImposeOldLuaTeXBehavior}
+\bxjs at apply@bd at pre@geometry at hook{%
+  \bxjs at bd@pre at geometry@hook
+  \@nameuse{ImposeOldLuaTeXBehavior}}
 \bxjs at preproc@layout
 \edef\bxjs at next{%
   \noexpand\RequirePackage[\bxjs at layout@paper,\bxjs at layout]{geometry}%
 }\bxjs at next
-\bxjs at apply@bd at pre@geometry at hook{\RevokeOldLuaTeXBehavior}
+\bxjs at apply@bd at pre@geometry at hook{\@nameuse{RevokeOldLuaTeXBehavior}}
 \let\bxjs at geometry@driver\Gm at driver
 \bxjs at postproc@layout
 \g at addto@macro\bxjs at bd@pre at geometry@hook{%
@@ -1820,6 +1827,7 @@
     {\if at slide .5\Cvs \@plus.3\Cdp \else \z@ \fi}%
     {\normalfont\normalsize\headfont}}
 \fi
+\let\jsJaChar\@empty
 \newcommand\jsParagraphMark{\relax\jsJaChar{■}}
 \let\bxjs at org@paragraph at mark\jsParagraphMark
 \ifx\bxjs at paragraph@mark\@empty
@@ -1827,7 +1835,6 @@
 \else\ifx\bxjs at paragraph@mark\@undefined\else
   \long\edef\jsParagraphMark{\noexpand\jsJaChar{\bxjs at paragraph@mark}}
 \fi\fi
-\let\jsJaChar\@empty
 \if at twocolumn
   \newcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%
     {\z@}{\if at slide .4\Cvs \else -1\jsZw\fi}% 改行せず 1\jsZw のアキ
@@ -1905,9 +1912,8 @@
 \renewcommand{\theenumii}{\@alph\c at enumii}
 \renewcommand{\theenumiii}{\@roman\c at enumiii}
 \renewcommand{\theenumiv}{\@Alph\c at enumiv}
-\def\bxjs at dust{\vrule\@width\z@\@height\z@\@depth\z@}
 \newcommand*{\jsInJaParen}[1]{%
-  \bxjs at dust\jsInhibitGlue (#1)\jsInhibitGlue\bxjs at dust}
+  \mbox{\jsInhibitGlue (#1)\jsInhibitGlue}}
 \newcommand{\labelenumi}{\theenumi.}
 \newcommand{\labelenumii}{\jsInJaParen{\theenumii}}
 \newcommand{\labelenumiii}{\theenumiii.}
@@ -2123,9 +2129,12 @@
       class provides\MessageBreak
       the old font commands only for compatibility}
   \fi}
-\def\bxjs at warnoldfontcmd@kick at final{%
-  \g at addto@macro\clearpage{\bxjs at warnoldfontcmd@final}}
-\AtEndDocument{\bxjs at warnoldfontcmd@kick at final}
+\ifbxjs at old@hook at system
+  \AtEndDocument{%
+    \g at addto@macro\clearpage{\bxjs at warnoldfontcmd@final}}
+\else
+  \AddToHook{enddocument/afterlastpage}{\bxjs at warnoldfontcmd@final}
+\fi
 \jsc at DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
 \jsc at DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
 \jsc at DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
@@ -2437,8 +2446,7 @@
     \else
       \clubpenalty \@clubpenalty
       \everypar{\everyparhook}%
-    \fi
-    \everyparhook}%
+    \fi\everyparhook}%
   \if at noitemarg
     \@noitemargfalse
     \if at nmbrlist

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls	2023-06-22 19:34:01 UTC (rev 67438)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls	2023-06-22 20:40:06 UTC (rev 67439)
@@ -22,28 +22,21 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsslide}
-  [2023/06/14 v2.8  BXJS document classes]
+  [2023/06/20 v2.8a BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsslide}
 \newif\ifjsc at needsp@tch
 \jsc at needsp@tchfalse
-\RequirePackage{calc}
-\RequirePackage{keyval}
-\def\jsAtEndOfClass{%
-  \expandafter\g at addto@macro\csname\bxjs at clsname.cls-h@@k\endcsname}
-\IfFileExists{bxjscompat.sty}{%
-  \RequirePackage{bxjscompat}%
-}{}
 \let\jsArticle=a
 \let\jsBook=b
 \let\jsReport=r
 \let\jsSlide=s
 \let\jsDocClass\jsSlide
-\let\jsEngine=n
 \def\bxjs at test@engine#1#2{%
   \edef\bxjs at tmpa{\string#1}%
   \edef\bxjs at tmpb{\meaning#1}%
   \ifx\bxjs at tmpa\bxjs at tmpb #2\fi}
+\let\jsEngine=n
 \bxjs at test@engine\kanjiskip{\let\jsEngine=j}
 \bxjs at test@engine\jintercharskip{\let\jsEngine=J}
 \bxjs at test@engine\Omegaversion{\let\jsEngine=O}
@@ -50,15 +43,6 @@
 \bxjs at test@engine\XeTeXversion{\let\jsEngine=x}
 \bxjs at test@engine\pdftexversion{\let\jsEngine=p}
 \bxjs at test@engine\luatexversion{\let\jsEngine=l}
-\newif\ifjsWithupTeX
-\ifx\ucs\@undefined\else \ifnum\ucs"3000="3000
-  \jsWithupTeXtrue
-\fi\fi
-\let\if at jsc@uplatex\ifjsWithupTeX
-\newif\ifjsWithpTeXng
-\bxjs at test@engine\ngbanner{\jsWithpTeXngtrue}
-\newif\ifjsWitheTeX
-\bxjs at test@engine\eTeXversion{\jsWitheTeXtrue}
 \let\bxjs at tmpa\relax
 \ifx J\jsEngine \def\bxjs at tmpa{NTT-jTeX}\fi
 \ifx O\jsEngine \def\bxjs at tmpa{Omega}\fi
@@ -69,6 +53,66 @@
    {It's a fatal error. I'll quit right now.}
   \expandafter\@firstofone
 \fi{\endinput\@@end}
+\@tempswatrue
+\if x\jsEngine
+  \ifdim\the\XeTeXversion\XeTeXrevision\p@<0.997\p@
+    \@tempswafalse \fi
+\fi
+\if at tempswa \expandafter\@gobble
+\else
+  \ClassError\bxjs at clsname
+   {The engine in use is all too old}
+   {It's a fatal error. I'll quit right now.}
+  \expandafter\@firstofone
+\fi{\endinput\@@end}
+\if at compatibility
+  \ClassError\bxjs at clsname
+   {Something went chaotic!\MessageBreak
+    (How come '\string\documentstyle' is there?)\MessageBreak
+    I cannot go a single step further...}
+   {If the chant of '\string\documentstyle' was just a blunder of yours,\MessageBreak
+    then there'll still be hope....}
+  \expandafter\@firstofone
+\else \expandafter\@gobble
+\fi{\typeout{Farewell!}\endinput\@@end}
+\newif\ifjsWithupTeX
+\ifx\ucs\@undefined\else \ifnum\ucs"3000="3000
+  \jsWithupTeXtrue
+\fi\fi
+\let\if at jsc@uplatex\ifjsWithupTeX
+\newif\ifjsWithpTeXng
+\bxjs at test@engine\ngbanner{\jsWithpTeXngtrue}
+\newif\ifjsWitheTeX
+\bxjs at test@engine\eTeXversion{\jsWitheTeXtrue}
+\newif\ifjsInPdfMode
+\@nameuse{jsInPdfMode\ifnum0%
+  \ifx\pdfoutput\@undefined\else\the\pdfoutput\fi
+  \ifx\outputmode\@undefined\else\the\outputmode\fi
+  >0 true\else false\fi}
+\newif\ifbxjs at explIII
+\@ifl at t@r\fmtversion{2020/02/02}{\bxjs at explIIItrue}{}
+\newif\ifbxjs at TUenc
+\def\bxjs at tmpa{TU}\edef\bxjs at tmpb{\f at encoding}
+\ifx\bxjs at tmpa\bxjs at tmpb
+  \bxjs at TUenctrue
+\fi
+\newif\ifbxjs at old@hook at system
+\@ifl at t@r\fmtversion{2020/10/01}{}{\bxjs at old@hook at systemtrue}
+\RequirePackage{calc}
+\RequirePackage{keyval}
+\IfFileExists{iftex.sty}{%
+  \RequirePackage{iftex}
+}{}
+\begingroup\expandafter\endgroup
+\expandafter\ifx\csname ifpdf\endcsname\@undefined\else
+  \expandafter\let\csname ifjsInPdfMode\expandafter\endcsname
+      \csname ifpdf\endcsname
+\fi
+\def\jsAtEndOfClass{%
+  \expandafter\g at addto@macro\csname\bxjs at clsname.cls-h@@k\endcsname}
+\IfFileExists{bxjscompat.sty}{%
+  \RequirePackage{bxjscompat}%
+}{}
 \ifx l\jsEngine
   \directlua{ bxjs = {} }
 \fi
@@ -80,15 +124,6 @@
 \else
   \def\bxjs at robust@def{\DeclareRobustCommand*}
 \fi
-\newif\ifbxjs at explIII
-\@ifl at t@r\fmtversion{2020/02/02}{\bxjs at explIIItrue}{}
-\newif\ifbxjs at TUenc
-\def\bxjs at tmpa{TU}\edef\bxjs at tmpb{\f at encoding}
-\ifx\bxjs at tmpa\bxjs at tmpb
-  \bxjs at TUenctrue
-\fi
-\newif\ifbxjs at old@hook at system
-\@ifl at t@r\fmtversion{2020/10/01}{}{\bxjs at old@hook at systemtrue}
 \@ifl at t@r\fmtversion{2021/11/15}{%
   \def\bxjs at CGHN#1{#1}%
 }{%else
@@ -102,13 +137,6 @@
   \expandafter\let\csname#1\endcsname}
 \def\bxjs at csletcs#1#2{%
   \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname}
-\RequirePackage{iftex}
-\newif\ifjsInPdfMode
-\@nameuse{jsInPdfMode\ifnum0%
-  \ifx\pdfoutput\@undefined\else\the\pdfoutput\fi
-  \ifx\outputmode\@undefined\else\the\outputmode\fi
-  >0 true\else false\fi}
-\ifx\pdffalse\@undefined\else \bxjs at csletcs{ifjsInPdfMode}{ifpdf}\fi
 \def\bxjs at catopt#1#2{%
   #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2}
 \def\bxjs at ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}}
@@ -180,28 +208,6 @@
 \@onlypreamble\bxjs at tmpdo@d
 \bxjs at robust@def\jsInhibitGlue{%
   \ifx\inhibitglue\@undefined\else \inhibitglue \fi}
-\@tempswatrue
-\if x\jsEngine
-  \ifdim\the\XeTeXversion\XeTeXrevision\p@<0.997\p@
-    \@tempswafalse \fi
-\fi
-\if at tempswa \expandafter\@gobble
-\else
-  \ClassError\bxjs at clsname
-   {The engine in use is all too old}
-   {It's a fatal error. I'll quit right now.}
-  \expandafter\@firstofone
-\fi{\endinput\@@end}
-\if at compatibility
-  \ClassError\bxjs at clsname
-   {Something went chaotic!\MessageBreak
-    (How come '\string\documentstyle' is there?)\MessageBreak
-    I cannot go a single step further...}
-   {If the chant of '\string\documentstyle' was just a blunder of yours,\MessageBreak
-    then there'll still be hope....}
-  \expandafter\@firstofone
-\else \expandafter\@gobble
-\fi{\typeout{Farewell!}\endinput\@@end}
 \newif\if at restonecol
 \newif\if at titlepage
 \newif\if at enablejfam \@enablejfamfalse
@@ -1222,13 +1228,14 @@
 \else
   \PassOptionsToPackage{driver=none}{geometry}
 \fi
-\bxjs at apply@bd at pre@geometry at hook{\bxjs at bd@pre at geometry@hook}
-\bxjs at apply@bd at pre@geometry at hook{\ImposeOldLuaTeXBehavior}
+\bxjs at apply@bd at pre@geometry at hook{%
+  \bxjs at bd@pre at geometry@hook
+  \@nameuse{ImposeOldLuaTeXBehavior}}
 \bxjs at preproc@layout
 \edef\bxjs at next{%
   \noexpand\RequirePackage[\bxjs at layout@paper,\bxjs at layout]{geometry}%
 }\bxjs at next
-\bxjs at apply@bd at pre@geometry at hook{\RevokeOldLuaTeXBehavior}
+\bxjs at apply@bd at pre@geometry at hook{\@nameuse{RevokeOldLuaTeXBehavior}}
 \let\bxjs at geometry@driver\Gm at driver
 \bxjs at postproc@layout
 \g at addto@macro\bxjs at bd@pre at geometry@hook{%
@@ -1719,6 +1726,7 @@
     {\if at slide .5\Cvs \@plus.3\Cdp \else \z@ \fi}%
     {\normalfont\normalsize\headfont}}
 \fi
+\let\jsJaChar\@empty
 \newcommand\jsParagraphMark{\relax\jsJaChar{■}}
 \let\bxjs at org@paragraph at mark\jsParagraphMark
 \ifx\bxjs at paragraph@mark\@empty
@@ -1726,7 +1734,6 @@
 \else\ifx\bxjs at paragraph@mark\@undefined\else
   \long\edef\jsParagraphMark{\noexpand\jsJaChar{\bxjs at paragraph@mark}}
 \fi\fi
-\let\jsJaChar\@empty
 \if at twocolumn
   \newcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%
     {\z@}{\if at slide .4\Cvs \else -1\jsZw\fi}% 改行せず 1\jsZw のアキ
@@ -1804,9 +1811,8 @@
 \renewcommand{\theenumii}{\@alph\c at enumii}
 \renewcommand{\theenumiii}{\@roman\c at enumiii}
 \renewcommand{\theenumiv}{\@Alph\c at enumiv}
-\def\bxjs at dust{\vrule\@width\z@\@height\z@\@depth\z@}
 \newcommand*{\jsInJaParen}[1]{%
-  \bxjs at dust\jsInhibitGlue (#1)\jsInhibitGlue\bxjs at dust}
+  \mbox{\jsInhibitGlue (#1)\jsInhibitGlue}}
 \newcommand{\labelenumi}{\theenumi.}
 \newcommand{\labelenumii}{\jsInJaParen{\theenumii}}
 \newcommand{\labelenumiii}{\theenumiii.}
@@ -2015,9 +2021,12 @@
       class provides\MessageBreak
       the old font commands only for compatibility}
   \fi}
-\def\bxjs at warnoldfontcmd@kick at final{%
-  \g at addto@macro\clearpage{\bxjs at warnoldfontcmd@final}}
-\AtEndDocument{\bxjs at warnoldfontcmd@kick at final}
+\ifbxjs at old@hook at system
+  \AtEndDocument{%
+    \g at addto@macro\clearpage{\bxjs at warnoldfontcmd@final}}
+\else
+  \AddToHook{enddocument/afterlastpage}{\bxjs at warnoldfontcmd@final}
+\fi
 \jsc at DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
 \jsc at DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
 \jsc at DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
@@ -2308,8 +2317,7 @@
     \else
       \clubpenalty \@clubpenalty
       \everypar{\everyparhook}%
-    \fi
-    \everyparhook}%
+    \fi\everyparhook}%
   \if at noitemarg
     \@noitemargfalse
     \if at nmbrlist



More information about the tex-live-commits mailing list.