texlive[69637] Master/texmf-dist: bxjscls (29jan24)

commits+karl at tug.org commits+karl at tug.org
Tue Jan 30 22:08:00 CET 2024


Revision: 69637
          https://tug.org/svn/texlive?view=revision&revision=69637
Author:   karl
Date:     2024-01-30 22:07:59 +0100 (Tue, 30 Jan 2024)
Log Message:
-----------
bxjscls (29jan24)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/bxjscls/LICENSE
    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/LICENSE
===================================================================
--- trunk/Master/texmf-dist/doc/latex/bxjscls/LICENSE	2024-01-30 21:07:44 UTC (rev 69636)
+++ trunk/Master/texmf-dist/doc/latex/bxjscls/LICENSE	2024-01-30 21:07:59 UTC (rev 69637)
@@ -3,7 +3,7 @@
 Copyright 1995-1999 ASCII Corporation.
 Copyright 1999-2016 Haruhiko Okumura
 Copyright 2016-2023 Japanese TeX Development Community
-Copyright 2013-2023 Takayuki YATO (aka. "ZR")
+Copyright 2013-2024 Takayuki YATO (aka. "ZR")
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without

Modified: trunk/Master/texmf-dist/doc/latex/bxjscls/README-ja.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/bxjscls/README-ja.md	2024-01-30 21:07:44 UTC (rev 69636)
+++ trunk/Master/texmf-dist/doc/latex/bxjscls/README-ja.md	2024-01-30 21:07:59 UTC (rev 69637)
@@ -111,6 +111,11 @@
 更新履歴
 --------
 
+  * Version 2.9b 〈2024/01/22〉
+      - bm パッケージとの併用で起こる不具合を回避した。
+  * Version 2.9a 〈2023/08/02〉
+      - 一部の standard ドライバの機能(`\jQ` 等)を本体に移動。
+      - バグ修正。
   * Version 2.9  〈2023/07/17〉
       - LaTeX の未使用グローバルオプション検査を稼働するようにした。
       - 和文パラメタ指定の代替表記(`ja:`)をサポートした。

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	2024-01-30 21:07:44 UTC (rev 69636)
+++ trunk/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex	2024-01-30 21:07:59 UTC (rev 69637)
@@ -12,8 +12,8 @@
 \bxtexlogoimport{*}
 \usepackage{shortvrb}
 \MakeShortVerb{\|}
-\newcommand{\PkgVersion}{2.9}
-\newcommand{\PkgDate}{2023/07/17}
+\newcommand{\PkgVersion}{2.9b}
+\newcommand{\PkgDate}{2024/01/22}
 \newcommand{\Pkg}[1]{\textsf{#1}}
 \newcommand{\Meta}[1]{$\langle$\mbox{}\nobr#1\nobr\mbox{}$\rangle$}
 \newcommand{\Note}{\par\noindent ※}
@@ -67,7 +67,7 @@
 以下の点で改良が加えられている。
 \begin{itemize}
 \item JSクラスは{\pLaTeX}と{\upLaTeX}のみをサポートするが、
-  BXJSクラスはこれらに加えて{\pdfLaTeX}と{\XeLaTeX}と{\LuaLaTeX}を
+  BXJSクラスはこれらに加えて{(pdf)\LaTeX}と{\XeLaTeX}と{\LuaLaTeX}を
   サポートしており主要エンジンの全てで使用可能である。
 \item (u){\pLaTeX}以外では各々のエンジンの日本語処理パッケージを
   利用するが、“標準設定”を用いることで、それらのパッケージの
@@ -129,7 +129,8 @@
   \end{itemize}
 \end{itemize}
 
-{\XeLaTeX}で\Pkg{bxjsarticle}クラスを用いた文書の例を示す。
+{\XeLaTeX}で\Pkg{bxjsarticle}クラスを用いた
+完全な文書ソースの例を示す。
 \footnote{組版結果における日付の出力はJSクラスと同様の
 「2015年7月3日」の形式になる。}%
 
@@ -221,7 +222,7 @@
 \end{verbatim}\end{quote}
 その値が\Pkg{bxcjkjatype}のフォントプリセットになる。
 \begin{quote}\small\begin{verbatim}
-\documentclass[a4paper]{article}
+\documentclass[a4paper]{article}%ただしレイアウトはjsarticle相当
 \usepackage[whole,autotilde,ipaex]{bxcjkjatype}
 \end{verbatim}\end{quote}
 
@@ -459,6 +460,7 @@
 BXJSクラスを用いる場合のPandocの設定について、以下で例を示す。
 
 \Note なお、以下の記述はPandoc 2.x版に従う。
+(3,x版でも通用すると思われる。)
 Pandocのオプション体系は2.x版と1.x版とでかなり異なることに
 注意されたい。
 
@@ -473,8 +475,7 @@
 
   この場合のコマンド行は次のようになる:
   \footnote{もちろん、実際には改行を含めず1行で書く。
-    なお、日本語文書の場合、変換先書式(|-t|)は |latex|
-    でなく |lates-smart|(|smart| 機能を無効化)とすべきである。}
+    以降の例でも同様。}
   \begin{quote}
   |pandoc| \Meta{入力ファイル名}\ 
     |-o| \Meta{出力ファイル名}|.pdf|
@@ -492,6 +493,14 @@
     |\documentclass[a4paper,jafont=ipaex,pandoc]{bxjsarticle}|
   \end{quote}
 
+\Note 注意事項:
+  \begin{itemize}
+  \item Pandocの |latex| 出力の |smart| 機能は
+    普通の日本語文書においては悪影響を及ぼすので、
+    変換先書式(|-t|)の値は |latex|
+    でなく |latex-smart|(|smart| 機能を無効化)とすべきである。
+  \end{itemize}
+
 \paragraph{bxjsbookの例}
 
 以下の設定で\Pkg{bxjsbook}クラスを使用したい。
@@ -527,6 +536,14 @@
   \item \Pkg{bxjsbook}クラスは「章(|\chapter|)」をもつクラスなので、
     Pandocで |--top-level-division=|\linebreak[0]|chapter| の指定
     が必要。
+  \item 既定テンプレート使用時は、|papersize=~| の指定は
+    「クラスオプションに |~paper| を指定する」
+    という形で反映される。
+    BXJSクラスでは |b~paper| はJISのB列を表すので、
+    |papersize=b5| でJIS~B5判に設定される。
+    出力形式を{\LaTeX}以外にする(あるいは他の文書クラスを利用する)
+    場合は |papersize=b5| でISO~B5判に設定される可能性が
+    あることに注意。
   \end{itemize}
 
 \paragraph{(u)\pLaTeX の使用}
@@ -614,7 +631,7 @@
   の指定は必須である。
   \footnote{ただし現状では、ドライバオプションが無い場合には
     エラーではなく警告が出る。}
-\item |nodvidriver|\Means
+\item |nodvidriver|/|class-nodvidriver|\Means
   特殊なドライバオプションの一種で、BXJSクラスが持つ
   ドライバ依存の機能を全て抑止することを指定する。
   \footnote{従って、別にドライバ依存の機能を使用しなければ、
@@ -621,7 +638,12 @@
     出力されるDVIファイルは特定のDVIウェアに依存しないものになる。
     ただし最近の{\LaTeX}カーネルはそれ自身がドライバ依存をもつ
     ことに注意。}
-\item |dvi=|\Meta{ドライバ名}\Means
+  \Note BXJSクラス内では |nodvidriver| と |class-nodvidriver| は
+  等価であるが、「何がグローバルオプションにあるか」という観点で
+  両者は異なる。
+  現状で |nodvidriver| オプションを認識するパッケージがあり、
+  |nodvidriver| の方はそれらのパッケージについても有効になる。
+\item |dvi=|\Meta{ドライバオプション名}\Means
   エンジンがDVI出力の場合に限り、指定のドライバオプションを
   有効にする。
   \footnote{実際にドライバオプションが有効化された場合は、
@@ -659,7 +681,7 @@
 \item |jafont=|\Meta{名前}\Means
   「和文フォントプリセット指定」の名前を設定する。
   既定値は空。
-  \Note 詳細は\ref{ssec:ja-font-settings}節を参照。
+  \Note 詳細については\ref{ssec:ja-font-settings}節を参照。
   \par
   プリセット指定の値が丸括弧を含む(例えば“|sourcehan(-otc)|”)場合、
   以下のように解釈される。
@@ -672,7 +694,7 @@
 \item |japaram={|\Meta{キー}|=|\Meta{値}|,...}|\Means
   「和文ドライバパラメタ」の値を設定する。
   既定値は空。
-  \Note 詳細は\ref{sec:Ja-Driver-Param}節を参照。
+  \Note 詳細については\ref{sec:Ja-Driver-Param}節を参照。
   \Note |japaram| を複数回指定した場合は各々の指定内容
   (キーと値の組の列)が累積する。
   \Note |jafont| と |japaram| の値がどのように解釈されるかは
@@ -695,7 +717,7 @@
   基底フォントサイズに14\,ptを設定する。
 \item |jbase=|\Meta{長さ\xast}\Means
   和文を基準にして基底フォントサイズを指定する。
-  すなわち和文フォントの |\normalsize| のサイズを指定の長さとする。
+  すなわち、和文フォントの |\normalsize| のサイズを指定の長さとする。
   \footnote{この場合に決定されるmag値は和文スケール値にも依存する
     ことに注意。}
   \Note 1.8版から、|base| と |jbase| の両方の指定が可能になった。
@@ -765,7 +787,7 @@
   エンジンや和文ドライバの種類により、
   既定値が有効・無効の何れになるかは異なり、また、
   そもそも有効・無効の一方しか選択できない場合もある。
-  詳細については\ref{sec:Ja-math-fonts}節を参照されたい。
+  \Note 詳細については\ref{sec:Ja-math-fonts}節を参照。
 \item |textwidth=|\Meta{長さ}\Means
   行長(本文領域の横幅;|\textwidth|)を指定する。
   \Note 実際には全角の整数倍に丸めた値が使われる
@@ -784,7 +806,7 @@
 \item |number-of-lines=|\Meta{整数}\Means
   1ページあたりの行数を指定する。
   \Pkg{geometry}で |lines| を指定したのと同値。
-  既定では |lines| を指定しない。
+  既定では\Pkg{geometry}の |lines| は指定されない。
 \end{itemize}
 
 \paragraph{上級者向けのオプション}\mbox{}
@@ -841,7 +863,7 @@
 \item |magstyle=|\Meta{値}\Means
   “版面拡大”の実現方法を指定する。
   有効な値は |usemag|、|nomag|、|nomag*| の何れか。
-  詳細は\ref{ssec:magstyle}節を参照。
+  \Note 詳細については\ref{ssec:magstyle}節を参照。
 \item |geometry=|\Meta{値}\Means
   \Pkg{geometry}パッケージの読込に対する制御。
   \begin{itemize}
@@ -864,7 +886,7 @@
   |\bf| 等の“二文字フォント命令”の使用を許容する。
 \item |nooldfontcommands|(既定)\Means
   “二文字フォント命令”の使用に対して警告を出す。
-  詳細については\ref{sec:Old-font-commands}節を参照されたい。
+  \Note 詳細については\ref{sec:Old-font-commands}節を参照。
 \item |fancyhdr=|\Meta{真偽値}\Means
   \Pkg{fancyhdr}パッケージの機能に対する補正を行うか。
   真の場合、以下の補正が行われる。既定値は真。
@@ -888,11 +910,11 @@
   を行うか否か。
   既定値は真。
 \item |jaspace-cmd=|\Meta{真偽値}\Means
-  以下に挙げる和文空白命令を定義するか否か。
-  (詳しくは\ref{ssec:ja-settings}節を参照。)
+  以下に挙げる和文空白命令
+  (\ref{ssec:ja-settings}節を参照)を定義するか否か。
   \begin{quote}
     |\jaenspace|、|\jathinspace|、|\>|、
-    |\|\JSS(|\|\,+\,全角空白)
+    |\|\JSS(|\|\,+\,全角空白)、|\jaspace|
   \end{quote}
   既定値は真。
 \item |fix-at-cmd=|\Meta{真偽値}\Means
@@ -1186,7 +1208,7 @@
   当然、NFSSのパッチのせいで別の不具合が起こる可能性はある。
 \end{itemize}
 
-\Note Lua{\TeX}の0.87版以降では(PDF出力時の)「mag設定」の機能が
+\Note Lua{\TeX}の0.87版以降では「PDF出力時のmag設定」の機能が
 廃止されている。
 そのため、そのようなエンジンでは |usemag| はサポートされない
 (エラーになる)。
@@ -1225,10 +1247,10 @@
 \item pandoc和文ドライバ\Means
 「Pandocモード」で使用される和文ドライバ。
 standardドライバの機能を継承するが、
-「Pandocの既定のlatexテンプレート」が使われることを前提として、
+「Pandocの既定の |latex| テンプレート」が使われることを前提として、
 それとBXJSの設定を整合させるための措置を加えている。
 \Note 本マニュアルで「standard和文ドライバの場合」という場合、
-特に明示がない限りはpandoc和文ドライバも含まれる。
+特に明示されない限りはpandoc和文ドライバも含まれる。
 \end{itemize}
 
 和文ドライバは自分で作製することも可能である。
@@ -1242,22 +1264,19 @@
 )の名前のファイルに実装コードを書いてそのファイルを配置すると、
 |ja=XXX| のオプション指定でその和文ドライバを利用できる。
 
-なお、和文ドライバ指定(|ja| オプション)の既定値は |minimal|
-である。
-現実には、ほとんど全ての場合に |standard| が用いられると思われるが、
-種々の理由があって、これを既定値にはしていない。
+なお、和文ドライバの指定(|ja| オプション)は\jemph{必須}である。
+現状では |minimal| が既定値となっているが、
+2.0版より省略は\jemph{非推奨}の扱いであり、
+% (既に1.8版で明示指定が推奨されていた。)
+3.0版で\jemph{禁止}される予定である。
 
 \Note ただし、(u){\pLaTeX}については、日本語処理機能がエンジン自体に
-備わっていて不可分なため少し異なる扱いになっている。
+備わっていて不可分なため例外的な扱いになっていて、
 \footnote{JSクラスの実装から分離した「日本語処理関連」のコードを
 minimalに配置している。}%
-|minimal| を用いる意義がほとんどないため、
+和文ドライバ指定は省略可能で %
 |standard| が既定値になっている。
 
-\Note 2.0版より、(u){\pLaTeX}以外のエンジンについては、
-和文ドライバ指定を省略することは非推奨の扱いとなった。
-(既に1.8版で明示指定が推奨されていた。)
-
 %-------------------
 \subsection{standardドライバで用いられる日本語処理機構}
 \label{ssec:ja-package}
@@ -1266,7 +1285,7 @@
 \item \pLaTeX、\upLaTeX(および{\pLaTeX-ng})の場合\Means
   エンジン自体が日本語処理の能力を持っているので
   それが常に用いられる。
-\item \pdfLaTeX{}の場合\Means
+\item (pdf){\LaTeX}の場合\Means
   \Pkg{bxcjkjatype}パッケージが |whole| と |autotilde| の
   オプション付で読み込まれる。
 \item \XeLaTeX{}の場合\Means
@@ -1288,50 +1307,49 @@
 明朝・ゴシックのファミリとして用いられる物理フォントの
 割当(マッピング)は以下のようになる:
 \begin{itemize}
-\item \pLaTeX、\upLaTeX{}\Means
+\item \pLaTeX、{\upLaTeX}の場合\Means
   クラスでは何もマッピングを設定しない。
   従って、DVIウェアでの設定が適用される。
-\item \pdfLaTeX\Means
+\item pdf{\LaTeX}の場合\Means
   \Pkg{bxcjkjatype}パッケージの既定設定となり、
   従って、Type1形式のIPAexフォント(\Pkg{ipaex-type1}で提供される)
   が使用される。
-\item \XeLaTeX\Means
+\item \XeLaTeX{}の場合\Means
   「原ノ味フォント」が使用される。
   \Pkg{zxjafont}パッケージの |haranoaji| プリセットの
   単ウェイト使用と同等であるが、パッケージが読み込まれるわけではない。
-\item \LuaLaTeX\Means
+\item \LuaLaTeX{}の場合\Means
   「原ノ味フォント」が使用される。
   \Pkg{luatexja-preset}パッケージの |haranoaji| プリセットの
   単ウェイト使用と同等であるが、パッケージが読み込まれるわけではない。
 \end{itemize}
 
-\Note {\TeX} Live 2019(およびその前の数年間)では、DVIウェアにおける
-和文フォントマッピングの既定設定は「IPAexフォント」であった。
-(つまり、(u){\pLaTeX}では既定で「IPAexフォント」が使われる。)
-これに合わせる形で、{\XeLaTeX}・{\LuaLaTeX}での既定設定も、
-以前は「IPAexフォント」としていた。
-ところが、{\TeX} Live 2020において、DVIウェアの既定のマッピングが
+\Note DVIウェアにおける既定の和文フォントマッピング
+(すなわち(u){\pLaTeX}における既定の和文フォント)
+の設定は、昔は「IPAexフォント」であったが
+{\TeX} Live 2020において
 「原ノ味フォント」に変更された。
-従って、{\XeLaTeX}・{\LuaLaTeX}での既定設定についても、
+これに追随する形で、
+BXJSクラスの{\XeLaTeX}・{\LuaLaTeX}での既定設定についても、
 2.0版より「原ノ味フォント」に変更された。
 ただしType1形式の原ノ味フォントは存在しないため、
-{\pdfLaTeX}では\Pkg{ipaex-type1}のフォントが引き続き使用される。
+(pdf){\LaTeX}では\Pkg{ipaex-type1}のフォントが引き続き使用される。
 \par\medskip
 
 和文フォントプリセット(|jafont|)を指定した場合、
 具体的には以下のように処理される:
 \begin{itemize}
-\item \pLaTeX、\upLaTeX\Means
-  \Pkg{pxchfon}パッケージが「|jafont| の値」をオプション
-  に指定した形で読み込まれる。
-\item \pdfLaTeX\Means
-  \Pkg{bxcjkjatype}のオプションに「|jafont| の値」が指定される。
-\item \XeLaTeX\Means
-  \Pkg{zxjafont}パッケージが「|jafont| の値」をオプション
-  に指定した形で読み込まれる。
-\item \LuaLaTeX\Means
-  \Pkg{luatexja-preset}パッケージが「|jafont| の値」をオプション
-  に指定した形で読み込まれる。
+\item \pLaTeX、{\upLaTeX}の場合\Means
+  「|jafont| の値」をオプションにして
+  \Pkg{pxchfon}パッケージを読み込む。
+\item (pdf){\LaTeX}の場合\Means
+  \Pkg{bxcjkjatype}のオプションに「|jafont| の値」を追加する。
+\item \XeLaTeX{}の場合\Means
+  「|jafont| の値」をオプションにして
+  \Pkg{zxjafont}パッケージを読み込む。
+\item \LuaLaTeX{}の場合\Means
+  「|jafont| の値」をオプションにして
+  \Pkg{luatexja-preset}パッケージを読み込む。
 \end{itemize}
 
 ただし、|jafont| の値として |auto| は特別な意味をもち、
@@ -1371,6 +1389,52 @@
 
 minimal和文ドライバには有効な和文ドライバパラメタは存在しない。
 
+\paragraph{和文ドライバパラメタの代替表記}
+Pandoc(の{\LaTeX}出力の既定テンプレート)では、
+|classoption| というパラメタで任意のクラスオプションを指定できるが、
+この際に波括弧 |{…}| の扱いがしばしば厄介なことになる。
+例えば和文パラメタ指定の
+\begin{quote}\small\begin{verbatim}
+japaram={jis2004}
+\end{verbatim}\end{quote}
+という値をYAMLメタデータブロックで指定したいとする。
+この場合、単純に
+\begin{quote}\small\begin{verbatim}
+classoption: japaram={jis2004}
+\end{verbatim}\end{quote}
+と書いたのでは、
+|{jis2004}| の部分が |\{jis2004\}| のように“エスケープ”されて
+しまって失敗する。
+所望の指定をするには代わりに
+\begin{quote}\small\begin{verbatim}
+classoption: "`japaram={jis2004}`{=latex}"
+\end{verbatim}\end{quote}
+のような複雑怪奇な書き方をする必要がある。%
+\footnote{YAMLメタデータブロックで指定された
+  文字列(YAMLの文字列型の値)について、Pandocでは
+  「Markdownソースとして解釈される」
+  という奇妙な仕様を(歴史的経緯のため)採用している。
+  このため、|{jis2004}| は
+  「Markdown→{\LaTeX}の変換」
+  が適用されて |\{jis2004\}| となってしまう。
+  余計な変換を回避するためにはPandoc MarkdownのRawInLine要素を
+  利用して |`japaram={jis2004}`{=latex}| と書く必要がある。
+  さらに、YAMLの文法規則として、
+  文字列が |`| で始まる場合には |"…"| で全体を囲わなければならない。}
+
+この問題に対処するため、2.9版において
+「和文ドライバパラメタ代替表記」をサポートすることにした。
+クラスオプションに |ja:| で始まる文字列を書くと、
+以下のように解釈される。
+\begin{itemize}
+\item |ja:XXX| と書くと、|japaram={XXX}| を指定したことになる。
+\item |ja:XXX=YYY| と書くと、|japaram={XXX=YYY}| を指定したことになる。
+\end{itemize}
+代替表記を利用すると、先ほどの例は以下のように書くことができる。
+\begin{quote}\small\begin{verbatim}
+classoption: ja:jis2004
+\end{verbatim}\end{quote}
+
 %-------------------
 \subsection{standard和文ドライバの場合}
 
@@ -1433,9 +1497,9 @@
   和文フォントを単ウェイトで用いている場合、生の |\textbf| は体裁
   が悪い(ゴシックの和文とセリフの欧文の組み合わせになる)ため、
   |\strong| に移譲して調整ができるようにしている。
-  \footnote{|\strong| に適用される書体は、|strong| パラメタで選択
-    できるが、その他に({\XeLaTeX}・{\LuaLaTeX}の場合は)
-    \Pkg{fontspec}の |\strongfontdeclare| 命令でも設定できる。}
+  \footnote{|\strong| に適用される書体は |strong| パラメタで選択
+    できるが、|\strongfontdeclare| 命令
+    (\ref{ssec:markup}節)でも設定できる。}
   \Note |\bfseries| 命令の動作は変わらない。
 \item |fix-code=|\Meta{真偽値}\Means
   |\texttt| 命令と周囲の和文の間に和欧文間空白が常に入るようにするか。
@@ -1539,6 +1603,7 @@
 
 %-------------------
 \subsection{構造マークアップ関連}
+\label{ssec:markup}
 
 \begin{itemize}
 \item |\subtitle{|\Meta{テキスト}|}|\Means
@@ -1632,16 +1697,16 @@
 \item |\zw|\Means
   |\jsZw| の別名。
   \footnote{\Pkg{\LuaTeX-ja}では「実際の全角幅」を表す
-    命令 |\zw|({\pLaTeX}の |zw| と本当に等価)が規定されている。
-    |lualatex| エンジン指定かつ和文ドライバが |standard| の場合は
+    長さ命令 |\zw|({\pLaTeX}の |zw| と本当に等価)が規定されている。
+    |lualatex| エンジン指定かつ和文ドライバがstandardの場合は
     この |\zw| の定義がそのまま使われる。
-    (従って |use-zw| は実質的に意味を持たない。)
+    (従って |use-zw| は実質的に無意味である。)
     なお、|\jsZw| は「規約上の全角幅」であり、「実際の全角幅」と本来は
     一致するはずだが、実際には計算誤差のせいで僅かに値が異なる。}%
   ただし |use-zw=false| 指定時は定義されない。
 \item |\zwspace|\Means
   全角(|\jsZw|)幅の水平空き。
-\item |\|\JSS(|\|\,の後に全角空白文字)\Means
+\item |\|\JSS(|\|\,+\,全角空白)\Means
   |\zwspace| の別名。
   全角幅の水平空き。
   \Note \Pkg{jlreq}クラスと互換の命令。
@@ -1649,11 +1714,54 @@
   この命令は単純に |\hspace|\wbr|{\jsZw}| と等価である。
 \item |\jaenspace|\Means
   半角(0.5\,|\jsZw|)幅の水平空き。
+\item |\jathinspace|\Means
+  和欧文間空白を挿入する。
+\item |\>|\Means
+  (非数式モードで
+  \footnote{|\>| という命令名は、plain {\TeX}では数式中の空白
+    ({\LaTeX}の |\:| と同等)を表す。
+    このため、実際には{\LaTeX}でも |\>| は |\:| と同等の命令として
+    定義されている。
+    この「plain互換の |\>|」を利用したコードが影響を受けるのを避ける
+    ため、数式中では |\>| は従来通り |\:| と同等の動作を行う。}%
+    )和欧文間空白を挿入する。
+\item |\jaspace{|\Meta{値}|}|\Means
+  引数の値に応じて水平空きを挿入する。%
+  \footnote{\Pkg{jlreq}クラスに同様の命令が実装されているが、
+  なぜかundocumentedになっている。}%
+  可能な値は以下の通り:
+  \begin{itemize}
+  \item |zenkaku|\Means 全角幅。(|\zwspace| と同じ。)
+  \item |nibu|\Means 半角幅。(|\jaenspace| と同じ。)
+  \item |shibu|\Means 四分幅(0.25\,|\jsZw|)。%
+    \footnote{和欧文間空白(|\jathinspace|)とは必ずしも
+    一致\jemph{しない}ことに注意。}
+  \end{itemize}
+  \Note ただし |jaspace-cmd=false| 指定時は |\|\JSS・
+  |\jaenspace|・|\jathinspace|・|\>|・|\jaspace|
+  は定義されない。%
+  \footnote{ただし |\>| については注意が必要で、
+    standard和文ドライバで自動的に読み込まれる
+    \Pkg{zxjatype}や\Pkg{bxcjkjatype}のパッケージは、
+    それ自体が同様の機能の |\>| を提供する。}
 \item |\allowoldfontcommands|\Means
   これ以降に実行される二文字フォント命令を警告の対象にしない。
 \item |\disallowoldfontcommands|\Means
   これ以降に実行される二文字フォント命令を警告の対象にする。
-\Note 詳細については\ref{sec:Old-font-commands}節を参照されたい。
+  \Note 詳細については\ref{sec:Old-font-commands}節を参照。
+\item |\jQ|、|\jH|、|\trueQ|、|\trueH|\Means
+  それぞれ{\pLaTeX}の単位Q、H、true\,Q、true\,Hに相当する長さ命令。
+\item |\ascQ|\Means
+  1\,true\,Qを和文スケール値で割った長さを表す長さ命令。
+  \footnote{命令名は“anti-scaled Q”の略。}%
+  \Note 例えば、|\fontsize{10\ascQ}{16\trueH}|
+  で和文のサイズが10\,Qになる。%
+  \footnote{1.5c版で導入された |\jafontsize| 命令を用いて %
+    |\jafontsize{10trueQ}{16trueH}| としてもよい。}
+\item |\ascpt|\Means
+  1\,true\,ptを和文スケール値で割った長さを表す長さ命令。
+  \Note 例えば、|\fontsize{9\ascpt}{13truept}|
+  で和文のサイズが9ポイントになる。
 \item \mbox{\pLaTeX}カーネルで規定される
   「基底フォントサイズパラメタ」の
   長さ命令 |\Cwd|\JSl|\Cht|\JSl|\Cdp|\JSl|\Cvs|\JSl|\Chs| が
@@ -1664,7 +1772,7 @@
 
 \subsubsection{standard和文ドライバで追加される命令}
 
-standard和文ドライバ(およびそれを継承するドライバ)では和文に関連する
+standard和文ドライバでは和文に関連する
 文書ソース記述をエンジンに依らずに共通になることを目指している。
 従って、和文関連の組版パラメタの設定についても
 「共通の命令」が提供される。
@@ -1679,19 +1787,6 @@
   \footnote{ちなみに、(u){\pLaTeX}の既定ではこの連動は起こらない。}%
   に、|\rmfamily| で和文が「明朝」、
   |\sffamily| および |\ttfamily| で和文が「ゴシック」に変更される。
-\item |\jQ|、|\jH|、|\trueQ|、|\trueH|\Means
-  それぞれ{\pLaTeX}の単位Q、H、true\,Q、true\,Hに相当する長さ。
-\item |\ascQ|\Means
-  1\,true\,Qを和文スケール値で割った長さ。
-  \footnote{命令名は“anti-scaled Q”の略。}%
-  例えば、|\fontsize{10\ascQ}{16\trueH}|
-  で和文のサイズが10\,Qになる。%
-  \footnote{1.5c版で導入された |\jafontsize| 命令を用いて %
-    |\jafontsize{10trueQ}{16trueH}| としてもよい。}
-\item |\ascpt|\Means
-  1\,true\,ptを和文スケール値で割った長さ。
-  例えば、|\fontsize{9\ascpt}{13truept}|
-  で和文のサイズが9ポイントになる。
 \item |\setxkanjiskip{|\Meta{長さ}|}|\Means
   和欧文間空白の量を指定する。
   {\pLaTeX}での %
@@ -1718,21 +1813,6 @@
 \item |\autospacing|\JSl|\noautospacing|\Means
   和文間空白の挿入を有効/無効にする。
   {\pLaTeX}の同名の命令と同等。
-\item |\jathinspace|\Means
-  和欧文間空白を挿入する。
-\item |\>|\Means
-  (非数式モードで
-  \footnote{|\>| という命令名は、plain {\TeX}では数式中の空白
-    ({\LaTeX}の |\:| と同等)を表す。
-    このため、実際には{\LaTeX}でも |\>| は |\:| と同等の命令として
-    定義されている。
-    この「plain互換の |\>|」を利用したコードが影響を受けるのを避ける
-    ため、数式中では |\>| は従来通り |\:| と同等の動作を行う。}%
-    )和欧文間空白を挿入する。
-  \Note |jaspace-cmd=false| 指定時は定義されない。%
-  \footnote{ただし、standard和文ドライバで自動的に読み込まれる
-    \Pkg{zxjatype}や\Pkg{bxcjkjatype}のパッケージは、
-    それ自体が同様の機能の |\>| を提供することにも注意を要する。}
 \item |\jachar{|\Meta{文字1つ}|}|\Means
   指定の文字を和文文字として(現在の和文フォントで)出力する。
 \item |\jafontsize{|\Meta{フォントサイズ\xast}|}{|\Meta{行送り\xast}|}|\Means
@@ -1746,6 +1826,12 @@
 \item 欧文数式フォント命令での和文の連動\Means
   |\mathrm| で和文が「明朝」、
   |\mathsf| および |\mathtt| で和文が「ゴシック」に指定される。
+  \footnote{和文連動の対象となる欧文数式フォント命令を
+    \Pkg{bm}パッケージの |\bm| 命令の中で使う
+    (例えば |\bm{\mathsf{A}}| 等)
+    と正常に動作しないことが判明している。
+    暫定対処として、2.9b版以降では\Pkg{bm}パッケージが読み込まれて
+    いる場合には欧文数式フォント命令の和文連動が無効になる。}%
   \Note JSクラスとは異なり、連動の組合せは
   テキストと同一であることに注意。
 \end{itemize}

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	2024-01-30 21:07:44 UTC (rev 69636)
+++ trunk/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx	2024-01-30 21:07:59 UTC (rev 69637)
@@ -33,7 +33,7 @@
 %  Copyright 1999-2016 Haruhiko Okumura
 %  Copyright 2016-2023 Japanese TeX Development Community
 %
-%  Copyright 2013-2023 Takayuki YATO (aka. "ZR")
+%  Copyright 2013-2024 Takayuki YATO (aka. "ZR")
 %
 % \fi
 % \CheckSum{0}
@@ -56,7 +56,9 @@
 %<*driver>
 \ProvidesFile{bxjscls.dtx}
 %</driver>
-  [2023/07/17 v2.9  BXJS document classes]
+  [2024/01/22 v2.9b BXJS document classes]
+% [2023/08/02 v2.9a BXJS document classes]
+% [2023/07/17 v2.9  BXJS document classes]
 % [2023/07/01 v2.8b BXJS document classes]
 % [2023/06/20 v2.8a BXJS document classes]
 % [2023/06/14 v2.8  BXJS document classes]
@@ -793,6 +795,34 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\bxjs at advance@qc}
+% |\bxjs at advance@qc\CS{|\Meta{値}|}|\Means
+% 擬似整数レジスタに値を加算する。
+%    \begin{macrocode}
+\def\bxjs at advance@qc#1#2{%
+  \begingroup
+    \@tempcnta=#1\relax \advance\@tempcnta by#2\relax
+    \global\chardef\bxjs at g@tmpa\@tempcnta
+  \endgroup \let#1\bxjs at g@tmpa}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs at new@count}
+% \begin{macro}{\bxjs at advance@count}
+% {\eTeX}拡張が有効なら通常の整数レジスタ、
+% 無効なら擬似整数レジスタを用いる。
+%    \begin{macrocode}
+\ifjsWitheTeX
+  \let\bxjs at new@count\newcount
+  \def\bxjs at advance@count#1#2{\advance#1by#2\relax}
+\else
+  \def\bxjs at new@count#1{\chardef#1\z@}
+  \let\bxjs at advance@count\bxjs at advance@qc
+\fi
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
 % \begin{macro}{\jsSetQHLength}
 % |\jsSetQHLength\CS{|\Meta{長さ式}|}|\Means
 % |\setlength| の変種で、通常の |calc| の長さ式の代わりに、
@@ -3583,7 +3613,7 @@
 %
 %    \begin{macrocode}
 \chardef\bxjs at periodchar=`\.
-\bxjs at protected\def\bxjs at SE{%
+\bxjs at robust@def\bxjs at SE{%
   \ifnum\spacefactor<\@m \spacefactor\@m
   \else \spacefactor\sfcode\bxjs at periodchar
   \fi}
@@ -7615,9 +7645,9 @@
 % \begin{macro}{\disallowoldfontcommands}
 % “二文字フォント命令”の使用に対して警告を出す。
 %    \begin{macrocode}
-\newcommand*{\allowoldfontcommands}{%
+\DeclareRobustCommand*{\allowoldfontcommands}{%
   \@jsc at warnoldfontcmdexceptiontrue}
-\newcommand*{\disallowoldfontcommands}{%
+\DeclareRobustCommand*{\disallowoldfontcommands}{%
   \@jsc at warnoldfontcmdexceptionfalse}
 %    \end{macrocode}
 % \end{macro}
@@ -9140,17 +9170,6 @@
 %    \end{macrocode}
 %
 %
-% \paragraph{BXJS独自の追加処理 \ZRX}
-%
-% フックを実行する。
-%    \begin{macrocode}
-\bxjs at pre@jadriver at hook
-%    \end{macrocode}
-% 和文ドライバのファイルを読み込む。
-%    \begin{macrocode}
-\input{bxjsja-\bxjs at jadriver.def}
-%    \end{macrocode}
-%
 % \section{実験的コード}
 %
 % \begin{ZRnote}
@@ -9164,12 +9183,360 @@
 % exppl2eパッケージが読みこまれていない場合は通常版として動作しますので,
 % ここで終了します。
 %
+% 以上です。
+%
+% \section{BXJS独自の追加処理 \ZRX}
+%
+% \paragraph{\textbackslash strong命令の補填}
+%
+% |fontspec| で提供される |\strong| 命令と |strongenv| 環境を
+% 全てのエンジンで使えるようにする。
+% \Note この実装は特にエンジンや和文処理パッケージに依存しないはず
+% であるが、現状ではstandard和文ドライバでの提供となっていて、
+% そこで有効化のオプションが定義されている。
+% ここでは |\js~| の名前で定義することにする。
+%
+% \begin{macro}{\jsStrongText}
+% 強調用の宣言型命令。
 %    \begin{macrocode}
+\bxjs at robust@def\jsStrongText{\bxjs at strong@text}%
+%    \end{macrocode}
+% |fontspec| と互換の |\strongfontdeclare| 命令も提供する。
+% 既定の設定は |\bfseries|(太字)である。
+% \Note |\strongfontdeclare| は試験的機能とする。
+%    \begin{macrocode}
+\chardef\bxjs at strong@level=0
+\DeclareRobustCommand*\jsStrongDeclare[1]{%
+  \bxjs at set@array at from@clist{bxjs at strong}{#1}%
+  \chardef\bxjs at strong@level\z@}
+\jsStrongDeclare{\bfseries}
+\def\bxjs at strong@text{%
+  \bxjs at csletcs{bxjs at tmpa}{bxjs at strong/\the\bxjs at strong@level}%
+  \ifx\bxjs at tmpa\relax
+    \bxjs at advance@qc\bxjs at strong@level\m at ne \bxjs at strong@text
+  \else \bxjs at advance@qc\bxjs at strong@level\@ne \bxjs at tmpa
+  \fi}
+% \end{macro}
+%
+% \paragraph{共通命令の実装}
+%
+% |\jQ| 等の「単位」系の共通命令を実装する。
+%
+% \begin{macro}{\bxjs at const@unit}
+% 固定値の単位として使える制御綴を定義する。
+%
+% {\eTeX}拡張が使える場合は、
+% 「|\dimexpr|外部寸法表記|\relax|」の形式
+% (これは内部値なので単位として使える)
+% に展開されるマクロとして定義する。
+%    \begin{macrocode}
+\@onlypreamble\bxjs at const@unit
+\@onlypreamble\bxjs at const@unit at a
+\ifjsWitheTeX
+  \def\bxjs at const@unit#1#2#3{%
+    \protected\edef#1{\dimexpr\the\dimexpr#3\relax\relax}}
+%    \end{macrocode}
+% {\eTeX}拡張が使えない場合は、何らかの寸法パラメタに値を保持する必要が
+% あるが、レジスタは貴重なので代わりに
+% 「ダミーのTFMを定義してその |\fontdimen| を使う」
+% というテクニックを用いる(アレ)。
+%    \begin{macrocode}
+\else
+  \let\bxjs at Ct\fontdimen \font\bxjs at Ut=cmtex9 at 0.98245pt
+  \bxjs at Ct8\bxjs at Ut=8sp \bxjs at Ct16\bxjs at Ut=\z@
+  \def\bxjs at const@unit#1#2{%
+    \expandafter\bxjs at const@unit at a\csname bxjs@#2@\endcsname#1}
+  \def\bxjs at const@unit at a#1#2#3{%
+    \chardef#1\bxjs at Ct8\bxjs at Ut \bxjs at advance@qc#1\@ne \bxjs at Ct8\bxjs at Ut#1sp
+    \bxjs at Ct#1\bxjs at Ut=#3\relax \def#2{\bxjs at Ct#1\bxjs at Ut}}
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jQ}
+% \begin{macro}{\jH}
+% |\jQ| と |\jH| はともに0.25\,mmに等しい。
+%    \begin{macrocode}
+\bxjs at const@unit\jQ{jQ}{0.25mm}
+\let\jH\jQ
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\trueQ}
+% \begin{macro}{\trueH}
+% |\trueQ| と |\trueH| はともに0.25\,true\,mmに等しい。
+%    \begin{macrocode}
+\ifjsc at mag
+  \@tempdimb=\jsBaseFontSize\relax
+  \edef\bxjs at tmpa{\strip at pt\@tempdimb}%
+  \@tempdima=2.5mm
+  \bxjs at invscale\@tempdima\bxjs at tmpa
+  \bxjs at const@unit\trueQ{trueQ}{\@tempdima}
+  \@tempdima=10pt
+  \bxjs at invscale\@tempdima\bxjs at tmpa
+  \bxjs at const@unit\bxjs at truept{truept}{\@tempdima}
+\else \let\trueQ\jQ \let\bxjs at truept\p@
+\fi
+\let\trueH\trueQ
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ascQ}
+% \begin{macro}{\ascpt}
+% |\ascQ| は |\trueQ| を和文スケール値で割った値。
+% 例えば、|\fontsize{12\ascQ}{16\trueH}| とすると、
+% 和文が12Qになる。
+%
+% 同様に、|\ascpt| は |truept| を和文スケールで割った値。
+%    \begin{macrocode}
+\@tempdima\trueQ \bxjs at invscale\@tempdima\jsScale
+\bxjs at const@unit\ascQ{ascQ}{\@tempdima}
+\@tempdima\bxjs at truept \bxjs at invscale\@tempdima\jsScale
+\bxjs at const@unit\ascpt{ascpt}{\@tempdima}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\jafontsize}
+% |\jafontsize{|\Meta{フォントサイズ}|}{|\Meta{行送り}|}|\Means
+% 和文フォント規準で、すなわち、1\,zwが\Meta{フォントサイズ}に
+% 等しくなるようにフォントサイズを指定する。
+% この命令の引数では、|Q|/|H| の単位が使用できる。
+%    \begin{macrocode}
+\DeclareRobustCommand*\jsJaFontSize[2]{%
+  \begingroup
+    \bxjs at jafontsize@a{#1}%
+    \@tempdimb\jsInverseScale\@tempdima
+    \bxjs at jafontsize@a{#2}%
+    \xdef\bxjs at g@tmpa{%
+      \noexpand\fontsize{\the\@tempdimb}{\the\@tempdima}}%
+  \endgroup\bxjs at g@tmpa}
+\def\bxjs at jafontsize@a#1{%
+  \bxjs at parse@qh{#1}%
+  \ifx\bxjs at tmpb\relax \def\bxjs at tmpb{#1}\fi
+  \@defaultunits\@tempdima\bxjs at tmpb pt\relax\@nnil}
+%    \end{macrocode}
+% \end{macro}
+%
+% 続いて、和文間空白・和欧文間空白関連の命令を実装する。
+% この実装はエンジンや和文処理パッケージに依存するが、
+% ここでは共通の基盤となる部分を実装する。
+%
+%    \begin{macrocode}
+\def\bxjs at let@lenexpr{\edef}
+%    \end{macrocode}
+%
+% \begin{macro}{\bxjs at kanjiskip}
+% 和文間空白の量を表すテキスト。
+%    \begin{macrocode}
+\def\bxjs at kanjiskip{0pt}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jsSetKanjiSkip}
+% 和文間空白の量を設定する。
+% \Note |\setkanjiskip| の実体。
+%    \begin{macrocode}
+\DeclareRobustCommand*\jsSetKanjiSkip[1]{%
+  \bxjs at let@lenexpr\bxjs at kanjiskip{#1}%
+  \bxjs at reset@kanjiskip}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jsGetKanjiSkip}
+% 和文間空白の量を表すテキストに展開する。
+% \Note |\getkanjiskip| の実体。
+%    \begin{macrocode}
+\newcommand*\jsGetKanjiSkip{%
+  \bxjs at kanjiskip}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs at kanjiskip@enabled}
+% 和文間空白の挿入が有効か。
+% \Note エンジン側の機能で制御する場合は、
+% このスイッチは常に真にしておく。
+%    \begin{macrocode}
+\newif\ifbxjs at kanjiskip@enabled \bxjs at kanjiskip@enabledtrue
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jsEnableKanjiSkip}
+% \begin{macro}{\jsDisableKanjiSkip}
+% 和文間空白の挿入を有効/無効にする。
+% \Note {\pTeX}系のエンジンや |luatexja| のパッケージを使用する場合は
+% それ自体がもつ制御機能を利用するため、これらの命令は使わない。
+%    \begin{macrocode}
+\bxjs at robust@def\jsEnableKanjiSkip{%
+  \bxjs at kanjiskip@enabledtrue
+  \bxjs at reset@kanjiskip}
+\bxjs at robust@def\jsDisableKanjiSkip{%
+  \bxjs at kanjiskip@enabledfalse
+  \bxjs at reset@kanjiskip}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\bxjs at reset@kanjiskip}
+% 現在の和文間空白の設定を実際に反映させる。
+%    \begin{macrocode}
+\bxjs at robust@def\bxjs at reset@kanjiskip{%
+  \ifbxjs at kanjiskip@enabled
+    \setlength{\@tempskipa}{\bxjs at kanjiskip}%
+  \else \@tempskipa\z@
+  \fi
+  \jsApplyKanjiSkip\@tempskipa}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jsApplyKanjiSkip}
+% |\jsApplyKanjiSkip{|\Meta{グルー値}|}|\Means
+% 和文間空白を実際に設定するためのエンジン依存のコード。
+%    \begin{macrocode}
+\let\jsApplyKanjiSkip\@gobble
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs at xkanjiskip}
+% \begin{macro}{\jsSetXKanjiSkip}
+% \begin{macro}{\jsGetXKanjiSkip}
+% \begin{macro}{\ifbxjs at xkanjiskip@enabled}
+% \begin{macro}{\jsEnableXKanjiSkip}
+% \begin{macro}{\jsDisableXKanjiSkip}
+% \begin{macro}{\bxjs at reset@xkanjiskip}
+% \begin{macro}{\jsApplyXKanjiSkip}
+% 和欧文間空白について同様のものを用意する。
+%    \begin{macrocode}
+\def\bxjs at xkanjiskip{0pt}
+\DeclareRobustCommand*\jsSetXKanjiSkip[1]{%
+  \bxjs at let@lenexpr\bxjs at xkanjiskip{#1}%
+  \bxjs at reset@xkanjiskip}
+\newcommand*\jsGetXKanjiSkip{%
+  \bxjs at xkanjiskip}
+\newif\ifbxjs at xkanjiskip@enabled \bxjs at xkanjiskip@enabledtrue
+\bxjs at robust@def\jsEnableXKanjiSkip{%
+  \bxjs at xkanjiskip@enabledtrue
+  \bxjs at reset@xkanjiskip}
+\bxjs at robust@def\jsDisableXKanjiSkip{%
+  \bxjs at xkanjiskip@enabledfalse
+  \bxjs at reset@xkanjiskip}
+\bxjs at robust@def\bxjs at reset@xkanjiskip{%
+  \ifbxjs at xkanjiskip@enabled
+    \setlength{\@tempskipa}{\bxjs at xkanjiskip}%
+  \else \@tempskipa\z@
+  \fi
+  \jsApplyXKanjiSkip\@tempskipa}
+\let\jsApplyXKanjiSkip\@gobble
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% |\jsResetDimen| を用いて、フォントサイズが変更された時に
+% 空白の量が追随するようにする。
+%    \begin{macrocode}
+\g at addto@macro\jsResetDimen{%
+  \bxjs at reset@kanjiskip
+  \bxjs at reset@xkanjiskip}
+%    \end{macrocode}
+%
+% 和文・和欧文間空白の初期値。
+%
+%    \begin{macrocode}
+\AtEndOfPackage{%
+\jsSetKanjiSkip{0pt plus.1\jsZw minus.01\jsZw}%
+\ifx\jsDocClass\jsSlide \jsSetXKanjiSkip{0.1em}%
+\else \jsSetXKanjiSkip{0.25em plus 0.15em minus 0.06em}%
+\fi
+}
+%    \end{macrocode}
+%
+% \paragraph{和文空白命令}
+%    \begin{macrocode}
+\ifbxjs at jaspace@cmd
+%    \end{macrocode}
+%
+% \begin{macro}{\jaenspace}
+% 半角幅の水平空き。
+%    \begin{macrocode}
+  \def\jaenspace{\hskip.5\jsZw\relax}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jathinspace}
+% 和欧文間空白を入れるユーザ命令。
+%    \begin{macrocode}
+  \def\jathinspace{\hskip\bxjs at xkanjiskip\relax}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\_}
+% 全角空白文字1つからなる名前の制御綴。
+% |\zwspace| と等価になる。
+%    \begin{macrocode}
+  \def\ {\zwspace}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\>}
+% 非数式中では |\jathinspace| と等価になるように再定義する。
+% \Note 数式中では従来通り(|\:| と等価)。
+%    \begin{macrocode}
+  \bxjs at protected\def\bxjs at choice@jathinspace{%
+    \relax\ifmmode \mskip\medmuskip
+    \else \jathinspace\ignorespaces
+    \fi}
+  \jsAtEndOfClass{%
+    \ifjsWitheTeX \let\>\bxjs at choice@jathinspace
+    \else \def\>{\protect\bxjs at choice@jathinspace}%
+    \fi}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jaspace}
+% |jlreq| クラスと互換の命令。
+%    \begin{macrocode}
+  \DeclareRobustCommand*{\jaspace}[1]{%
+    \expandafter\ifx\csname bxjs at jaspace@@#1\endcsname\relax
+      \ClassError\bxjs at clsname
+       {Unknown jaspace: #1}{\@eha}%
+    \else
+      \csname bxjs at jaspace@@#1\endcsname
+    \fi}
+  \def\bxjs at jaspace@@zenkaku{\hskip 1\jsZw\relax}
+  \def\bxjs at jaspace@@nibu{\hskip .5\jsZw\relax}
+  \def\bxjs at jaspace@@shibu{\hskip .25\jsZw\relax}
+%    \end{macrocode}
+% \end{macro}
+%
+% 終わり。
+%    \begin{macrocode}
+\fi
+%    \end{macrocode}
+%
+% \paragraph{和文ドライバ読込}
+%
+% フックを実行する。
+%    \begin{macrocode}
+\bxjs at pre@jadriver at hook
+%    \end{macrocode}
+% 和文ドライバのファイルを読み込む。
+%    \begin{macrocode}
+\input{bxjsja-\bxjs at jadriver.def}
+%    \end{macrocode}
+%
+% おしまい。
+%    \begin{macrocode}
 %</class>
 %    \end{macrocode}
 %
-% 以上です。
-%
 %^^A////////////////////////////////////////////////////////
 % \clearpage
 % \appendix
@@ -9989,55 +10356,6 @@
 \fi
 %    \end{macrocode}
 %
-% \paragraph{和文空白命令}
-%    \begin{macrocode}
-\ifbxjs at jaspace@cmd
-%    \end{macrocode}
-%
-% \begin{macro}{\jaenspace}
-% 半角幅の水平空き。
-%    \begin{macrocode}
-  \def\jaenspace{\hskip.5\jsZw\relax}
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\jathinspace}
-% 和欧文間空白を入れるユーザ命令。
-% \Note minimalではダミー定義。
-%    \begin{macrocode}
-  \def\jathinspace{\hskip\z at skip}
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\_}
-% 全角空白文字1つからなる名前の制御綴。
-% |\zwspace| と等価になる。
-%    \begin{macrocode}
-  \def\ {\zwspace}
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\jaspace}
-% |jlreq| クラスと互換の命令。
-%    \begin{macrocode}
-  \DeclareRobustCommand*{\jaspace}[1]{%
-    \expandafter\ifx\csname bxjs at jaspace@@#1\endcsname\relax
-      \ClassError\bxjs at clsname
-       {Unknown jaspace: #1}{\@eha}%
-    \else
-      \csname bxjs at jaspace@@#1\endcsname
-    \fi}
-  \def\bxjs at jaspace@@zenkaku{\hskip 1\jsZw\relax}
-  \def\bxjs at jaspace@@nibu{\hskip .5\jsZw\relax}
-  \def\bxjs at jaspace@@shibu{\hskip .25\jsZw\relax}
-%    \end{macrocode}
-% \end{macro}
-%
-% 終わり。
-%    \begin{macrocode}
-\fi
-%    \end{macrocode}
-%
 % 以上で終わり。
 %    \begin{macrocode}
 %</minimal>
@@ -10053,9 +10371,6 @@
 %   和文ファミリ連動
 % \item |\mcfamily|/|\gtfamily|
 % \item |\textmc|/|\textgt|
-% \item |\zw|
-% \item |\jQ|/|\jH|
-% \item |\trueQ|/|\trueH|/|\ascQ|
 % \item |\setkanjiskip|/|\getkanjiskip|
 % \item |\setxkanjiskip|/|\getxkanjiskip|
 % \item |\autospacing|/|\noautospacing|
@@ -10187,6 +10502,10 @@
 %^^A----------------
 % \subsection{共通処理(1)}
 %
+%    \begin{macrocode}
+\let\jafontsize\jsJaFontSize
+%    \end{macrocode}
+%
 % \paragraph{jis2004パラメタ}
 %
 % |jis2004| パラメタが有効の場合は、グローバルオプションに |jis2004|
@@ -10262,31 +10581,14 @@
 %
 % \begin{macro}{\strong}
 % \begin{environment}{strongenv}
-% |fontspec| で提供される |\strong| 命令と |strongenv| 環境を
-% 全てのエンジンで使えるようにする。
-% \Note 既に利用可能である場合は何もしない。
+% 現在未定義(|fontspec| が未読込)である場合は、
+% クラス本体で定義した |\jsStrongText| を利用して定義する。
 %    \begin{macrocode}
 \ifbxjs at jp@strong at cmd\jsAtEndOfClass{%
   \ifx\strong\@undefined\ifx\strongenv\@undefined
-    \DeclareRobustCommand{\strongenv}{\bxjs at strong@font}%
-    \DeclareTextFontCommand{\strong}{\strongenv}%
-%    \end{macrocode}
-% |fontspec| と互換の |\strongfontdeclare| 命令も提供する。
-% 既定の設定は |\bfseries|(太字)である。
-% \Note |\strongfontdeclare| は試験的機能とする。
-%    \begin{macrocode}
-    \newcommand*{\strongfontdeclare}{\bxjs at strongfontdeclare}%
-    \newcount\bxjs at strong@level
-    \bxjs at protected\def\bxjs at strongfontdeclare#1{%
-      \bxjs at set@array at from@clist{bxjs at strong}{#1}%
-      \bxjs at strong@level\z@}%
-    \bxjs at strongfontdeclare{\bfseries}%
-    \def\bxjs at strong@font{%
-      \bxjs at csletcs{bxjs at tmpa}{bxjs at strong/\the\bxjs at strong@level}%
-      \ifx\bxjs at tmpa\relax
-        \advance\bxjs at strong@level\m at ne \bxjs at strong@font
-      \else \advance\bxjs at strong@level\@ne \bxjs at tmpa
-      \fi}%
+    \newcommand*{\strongenv}{\jsStrongText}%
+    \DeclareTextFontCommand{\strong}{\jsStrongText}%
+    \newcommand*{\strongfontdeclare}{\jsStrongDeclare}%
   \fi\fi
 }\fi
 %    \end{macrocode}
@@ -10293,194 +10595,6 @@
 % \end{environment}
 % \end{macro}
 %
-% \paragraph{共通命令の実装}
-%
-% |\jQ| 等の「単位」系の共通命令を実装する。
-% まず{$\varepsilon$-\TeX}拡張が使えるか検査する。
-%    \begin{macrocode}
-\ifjsWitheTeX
-%    \end{macrocode}
-% 使える場合は、「|\dimexpr|外部寸法表記|\relax|」の形式
-% (これは内部値なので単位として使える)で各命令定義する。
-%
-% \begin{macro}{\jQ}
-% \begin{macro}{\jH}
-% |\jQ| と |\jH| はともに0.25\,mmに等しい。
-%    \begin{macrocode}
-  \@tempdima=0.25mm
-  \protected\edef\jQ{\dimexpr\the\@tempdima\relax}
-  \let\jH\jQ
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\trueQ}
-% \begin{macro}{\trueH}
-% |\trueQ| と |\trueH| はともに0.25\,true\,mmに等しい。
-%    \begin{macrocode}
-  \ifjsc at mag
-    \@tempdimb=\jsBaseFontSize\relax
-    \edef\bxjs at tmpa{\strip at pt\@tempdimb}%
-    \@tempdima=2.5mm
-    \bxjs at invscale\@tempdima\bxjs at tmpa
-    \protected\edef\trueQ{\dimexpr\the\@tempdima\relax}
-    \@tempdima=10pt
-    \bxjs at invscale\@tempdima\bxjs at tmpa
-    \protected\edef\bxjs at truept{\dimexpr\the\@tempdima\relax}
-  \else \let\trueQ\jQ \let\bxjs at truept\p@
-  \fi
-  \let\trueH\trueQ
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\ascQ}
-% \begin{macro}{\ascpt}
-% |\ascQ| は |\trueQ| を和文スケール値で割った値。
-% 例えば、|\fontsize{12\ascQ}{16\trueH}| とすると、
-% 和文が12Qになる。
-%
-% 同様に、|\ascpt| は |truept| を和文スケールで割った値。
-%    \begin{macrocode}
-  \@tempdima\trueQ \bxjs at invscale\@tempdima\jsScale
-  \protected\edef\ascQ{\dimexpr\the\@tempdima\relax}
-  \@tempdima\bxjs at truept \bxjs at invscale\@tempdima\jsScale
-  \protected\edef\ascpt{\dimexpr\the\@tempdima\relax}
-\fi
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\jafontsize}
-% |\jafontsize{|\Meta{フォントサイズ}|}{|\Meta{行送り}|}|\Means
-% 和文フォント規準で、すなわち、1\,zwが\Meta{フォントサイズ}に
-% 等しくなるようにフォントサイズを指定する。
-% この命令の引数では、|Q|/|H| の単位が使用できる。
-%    \begin{macrocode}
-\def\jafontsize#1#2{%
-  \begingroup
-    \bxjs at jafontsize@a{#1}%
-    \@tempdimb\jsInverseScale\@tempdima
-    \bxjs at jafontsize@a{#2}%
-    \xdef\bxjs at g@tmpa{%
-      \noexpand\fontsize{\the\@tempdimb}{\the\@tempdima}}%
-  \endgroup\bxjs at g@tmpa}
-\def\bxjs at jafontsize@a#1{%
-  \bxjs at parse@qh{#1}%
-  \ifx\bxjs at tmpb\relax \def\bxjs at tmpb{#1}\fi
-  \@defaultunits\@tempdima\bxjs at tmpb pt\relax\@nnil}
-%    \end{macrocode}
-% \end{macro}
-%
-% 続いて、和文間空白・和欧文間空白関連の命令を実装する。
-% (エンジン依存のコード。)
-%
-% \begin{macro}{\bxjs at kanjiskip}
-% 和文間空白の量を表すテキスト。
-%    \begin{macrocode}
-\def\bxjs at kanjiskip{0pt}
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\setkanjiskip}
-% 和文間空白の量を設定する。
-%    \begin{macrocode}
-\newcommand*\setkanjiskip[1]{%
-  \bxjs at let@lenexpr\bxjs at kanjiskip{#1}%
-  \bxjs at reset@kanjiskip}
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\getkanjiskip}
-% 和文間空白の量を表すテキストに展開する。
-%    \begin{macrocode}
-\newcommand*\getkanjiskip{%
-  \bxjs at kanjiskip}
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\ifbxjs at kanjiskip@enabled}
-% 和文間空白の挿入が有効か。
-% ただし{\pTeX}では自身の |\(no)autospacing| での制御を
-% 用いるのでこの変数は常に真とする。
-%    \begin{macrocode}
-\newif\ifbxjs at kanjiskip@enabled \bxjs at kanjiskip@enabledtrue
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\bxjs at enable@kanjiskip}
-% \begin{macro}{\bxjs at disable@kanjiskip}
-% 和文間空白の挿入を有効/無効にする。({\pTeX}以外)
-%    \begin{macrocode}
-\bxjs at robust@def\bxjs at enable@kanjiskip{%
-  \bxjs at kanjiskip@enabledtrue
-  \bxjs at reset@kanjiskip}
-\bxjs at robust@def\bxjs at disable@kanjiskip{%
-  \bxjs at kanjiskip@enabledfalse
-  \bxjs at reset@kanjiskip}
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\bxjs at reset@kanjiskip}
-% 現在の和文間空白の設定を実際にエンジンに反映させる。
-%    \begin{macrocode}
-\bxjs at robust@def\bxjs at reset@kanjiskip{%
-  \ifbxjs at kanjiskip@enabled
-    \setlength{\@tempskipa}{\bxjs at kanjiskip}%
-  \else \@tempskipa\z@
-  \fi
-  \bxjs at apply@kanjiskip}
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\bxjs at xkanjiskip}
-% \begin{macro}{\setxkanjiskip}
-% \begin{macro}{\getxkanjiskip}
-% \begin{macro}{\ifbxjs at xkanjiskip@enabled}
-% \begin{macro}{\bxjs at enable@xkanjiskip}
-% \begin{macro}{\bxjs at disable@xkanjiskip}
-% \begin{macro}{\bxjs at reset@xkanjiskip}
-% 和欧文間空白について同様のものを用意する。
-%    \begin{macrocode}
-\def\bxjs at xkanjiskip{0pt}
-\newcommand*\setxkanjiskip[1]{%
-  \bxjs at let@lenexpr\bxjs at xkanjiskip{#1}%
-  \bxjs at reset@xkanjiskip}
-\newcommand*\getxkanjiskip{%
-  \bxjs at xkanjiskip}
-\newif\ifbxjs at xkanjiskip@enabled \bxjs at xkanjiskip@enabledtrue
-\bxjs at robust@def\bxjs at enable@xkanjiskip{%
-  \bxjs at xkanjiskip@enabledtrue
-  \bxjs at reset@xkanjiskip}
-\bxjs at robust@def\bxjs at disable@xkanjiskip{%
-  \bxjs at xkanjiskip@enabledfalse
-  \bxjs at reset@xkanjiskip}
-\bxjs at robust@def\bxjs at reset@xkanjiskip{%
-  \ifbxjs at xkanjiskip@enabled
-    \setlength{\@tempskipa}{\bxjs at xkanjiskip}%
-  \else \@tempskipa\z@
-  \fi
-  \bxjs at apply@xkanjiskip}
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% |\jsResetDimen| を用いて、フォントサイズが変更された時に
-% 空白の量が追随するようにする。
-%    \begin{macrocode}
-\g at addto@macro\jsResetDimen{%
-  \bxjs at reset@kanjiskip
-  \bxjs at reset@xkanjiskip}
-\let\bxjs at apply@kanjiskip\relax
-\let\bxjs at apply@xkanjiskip\relax
-%    \end{macrocode}
-%
 % \paragraph{和文フォント指定の扱い}
 %
 % standard和文ドライバでは |\jsJaFont| の値を和文フォントの
@@ -10743,10 +10857,14 @@
 % \paragraph{共通命令の実装}
 %
 %    \begin{macrocode}
-\def\bxjs at apply@kanjiskip{%
-  \kanjiskip\@tempskipa}
-\def\bxjs at apply@xkanjiskip{%
-  \xkanjiskip\@tempskipa}
+\newcommand*{\setkanjiskip}{\jsSetKanjiSkip}
+\newcommand*{\getkanjiskip}{\jsGetKanjiSkip}
+\def\jsApplyKanjiSkip#1{%
+  \kanjiskip=#1\relax}
+\newcommand*{\setxkanjiskip}{\jsSetXKanjiSkip}
+\newcommand*{\getxkanjiskip}{\jsGetXKanjiSkip}
+\def\jsApplyXKanjiSkip#1{%
+  \xkanjiskip=#1\relax}
 %    \end{macrocode}
 %
 % |\jaJaChar| のサブマクロ。
@@ -11005,9 +11123,20 @@
   \DeclareMathAlphabet{\mathgt}{\jsc at JYn}{gt}{m}{n}
   \g at addto@macro\bxjs at begin@document at hook{%
     \ifx\reDeclareMathAlphabet\@undefined\else
+%    \end{macrocode}
+% |\reDeclareMathAlphabet| を適用した数式英字フォント命令は{\LaTeX}の
+% 通常の命令とは定義文の形が異なる。
+% このため |bm| パッケージを読み込んで |\bm{\mathrm{A}}| を
+% 実行するとエラーが発生する。
+% これを回避するための暫定対応として、|bm| が読み込まれた場合は
+% 数式英字フォントの和文連動を無効にする。
+% \TODO ユーザが数式英字フォントの和文連動を制御できるようにする。
+%    \begin{macrocode}
+    \@ifpackageloaded{bm}{}{%else
       \reDeclareMathAlphabet{\mathrm}{\@mathrm}{\@mathmc}%
       \reDeclareMathAlphabet{\mathbf}{\@mathbf}{\@mathgt}%
       \reDeclareMathAlphabet{\mathsf}{\@mathsf}{\@mathgt}%
+    }%
     \fi}
 \fi
 %    \end{macrocode}
@@ -11095,17 +11224,21 @@
 \ifx\CJKecglue\@undefined
   \def\CJKtilde{\CJK at global\def~{\CJKecglue\ignorespaces}}
 \fi
-\let\autospacing\bxjs at enable@kanjiskip
-\let\noautospacing\bxjs at disable@kanjiskip
+\newcommand*{\setkanjiskip}{\jsSetKanjiSkip}
+\newcommand*{\getkanjiskip}{\jsGetKanjiSkip}
+\newcommand*{\autospacing}{\jsEnableKanjiSkip}
+\newcommand*{\noautospacing}{\jsDisableKanjiSkip}
 \protected\def\bxjs at CJKglue{\hskip\jsKanjiSkip}
-\def\bxjs at apply@kanjiskip{%
-  \jsKanjiSkip\@tempskipa
+\def\jsApplyKanjiSkip#1{%
+  \jsKanjiSkip=#1\relax
   \let\CJKglue\bxjs at CJKglue}
-\let\autoxspacing\bxjs at enable@xkanjiskip
-\let\noautoxspacing\bxjs at disable@xkanjiskip
+\newcommand*{\setxkanjiskip}{\jsSetXKanjiSkip}
+\newcommand*{\getxkanjiskip}{\jsGetXKanjiSkip}
+\newcommand*{\autoxspacing}{\jsEnableXKanjiSkip}
+\newcommand*{\noautoxspacing}{\jsDisableXKanjiSkip}
 \protected\def\bxjs at CJKecglue{\hskip\jsXKanjiSkip}
-\def\bxjs at apply@xkanjiskip{%
-  \jsXKanjiSkip\@tempskipa
+\def\jsApplyXKanjiSkip#1{%
+  \jsXKanjiSkip=#1\relax
   \let\CJKecglue\bxjs at CJKecglue}
 %    \end{macrocode}
 %
@@ -11241,17 +11374,21 @@
 \ifx\CJKecglue\@undefined
   \def\CJKtilde{\CJK at global\def~{\CJKecglue\ignorespaces}}
 \fi
-\let\autospacing\bxjs at enable@kanjiskip
-\let\noautospacing\bxjs at disable@kanjiskip
+\newcommand*{\setkanjiskip}{\jsSetKanjiSkip}
+\newcommand*{\getkanjiskip}{\jsGetKanjiSkip}
+\newcommand*{\autospacing}{\jsEnableKanjiSkip}
+\newcommand*{\noautospacing}{\jsDisableKanjiSkip}
 \protected\def\bxjs at CJKglue{\hskip\jsKanjiSkip}
-\def\bxjs at apply@kanjiskip{%
-  \jsKanjiSkip\@tempskipa
+\def\jsApplyKanjiSkip#1{%
+  \jsKanjiSkip=#1\relax
   \xeCJKsetup{CJKglue={\bxjs at CJKglue}}}
-\let\autoxspacing\bxjs at enable@xkanjiskip
-\let\noautoxspacing\bxjs at disable@xkanjiskip
+\newcommand*{\setxkanjiskip}{\jsSetXKanjiSkip}
+\newcommand*{\getxkanjiskip}{\jsGetXKanjiSkip}
+\newcommand*{\autoxspacing}{\jsEnableXKanjiSkip}
+\newcommand*{\noautoxspacing}{\jsDisableXKanjiSkip}
 \protected\def\bxjs at CJKecglue{\hskip\jsXKanjiSkip}
-\def\bxjs at apply@xkanjiskip{%
-  \jsXKanjiSkip\@tempskipa
+\def\jsApplyXKanjiSkip#1{%
+  \jsXKanjiSkip=#1\relax
   \xeCJKsetup{CJKecglue={\bxjs at CJKecglue}}}
 %    \end{macrocode}
 %
@@ -11482,6 +11619,10 @@
 % \paragraph{共通命令の実装}
 %
 %    \begin{macrocode}
+\newcommand*{\setkanjiskip}{\jsSetKanjiSkip}
+\newcommand*{\getkanjiskip}{\jsGetKanjiSkip}
+\newcommand*{\setxkanjiskip}{\jsSetXKanjiSkip}
+\newcommand*{\getxkanjiskip}{\jsGetXKanjiSkip}
 \protected\def\autospacing{%
   \ltjsetparameter{autospacing=true}}
 \protected\def\noautospacing{%
@@ -11490,10 +11631,10 @@
   \ltjsetparameter{autoxspacing=true}}
 \protected\def\noautoxspacing{%
   \ltjsetparameter{autoxspacing=false}}
-\def\bxjs at apply@kanjiskip{%
-  \ltjsetparameter{kanjiskip={\@tempskipa}}}
-\def\bxjs at apply@xkanjiskip{%
-  \ltjsetparameter{xkanjiskip={\@tempskipa}}}
+\def\jsApplyKanjiSkip#1{%
+  \ltjsetparameter{kanjiskip={#1}}}
+\def\jsApplyXKanjiSkip#1{%
+  \ltjsetparameter{xkanjiskip={#1}}}
 %    \end{macrocode}
 %
 % |\jachar| のサブマクロの実装。
@@ -11557,33 +11698,6 @@
 % \end{macro}
 % \end{macro}
 %
-% \paragraph{和文空白命令}
-% \begin{macro}{\>}
-% 非数式中では |\jathinspace| と等価になるように再定義する。
-% \Note 数式中では従来通り(|\:| と等価)。
-%    \begin{macrocode}
-\ifbxjs at jaspace@cmd
-  \bxjs at protected\def\bxjs at choice@jathinspace{%
-    \relax\ifmmode \mskip\medmuskip
-    \else \jathinspace\ignorespaces
-    \fi}
-  \jsAtEndOfClass{%
-    \ifjsWitheTeX \let\>\bxjs at choice@jathinspace
-    \else \def\>{\protect\bxjs at choice@jathinspace}%
-    \fi}
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \paragraph{和文・和欧文間空白の初期値}
-%
-%    \begin{macrocode}
-\setkanjiskip{0pt plus.1\jsZw minus.01\jsZw}
-\ifx\jsDocClass\jsSlide \setxkanjiskip{0.1em}
-\else \setxkanjiskip{0.25em plus 0.15em minus 0.06em}
-\fi
-%    \end{macrocode}
-%
 % 以上で終わり。
 %
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls	2024-01-30 21:07:44 UTC (rev 69636)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls	2024-01-30 21:07:59 UTC (rev 69637)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsarticle}
-  [2023/07/17 v2.9  BXJS document classes]
+  [2024/01/22 v2.9b BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsarticle}
 \newif\ifjsc at needsp@tch
@@ -155,6 +155,18 @@
   \bxjs at cslet{#1/\the\@tempcnta}\relax}
 \let\c at bxjs@tempcnta\@tempcnta
 \def\bxjs at gset@tempcnta{\setcounter{bxjs at tempcnta}}
+\def\bxjs at advance@qc#1#2{%
+  \begingroup
+    \@tempcnta=#1\relax \advance\@tempcnta by#2\relax
+    \global\chardef\bxjs at g@tmpa\@tempcnta
+  \endgroup \let#1\bxjs at g@tmpa}
+\ifjsWitheTeX
+  \let\bxjs at new@count\newcount
+  \def\bxjs at advance@count#1#2{\advance#1by#2\relax}
+\else
+  \def\bxjs at new@count#1{\chardef#1\z@}
+  \let\bxjs at advance@count\bxjs at advance@qc
+\fi
 \def\jsSetQHLength#1#2{%
   \begingroup
     \bxjs at parse@qh{#2}%
@@ -1004,7 +1016,7 @@
 \newskip\jsc at smallskipamount
 \jsc at smallskipamount=3\jsc at mpt plus 1\jsc at mpt minus 1\jsc at mpt
 \chardef\bxjs at periodchar=`\.
-\bxjs at protected\def\bxjs at SE{%
+\bxjs at robust@def\bxjs at SE{%
   \ifnum\spacefactor<\@m \spacefactor\@m
   \else \spacefactor\sfcode\bxjs at periodchar
   \fi}
@@ -2022,9 +2034,9 @@
    {Old font command '\string#1' is used!!\MessageBreak
     The first occurrence is}%
 }
-\newcommand*{\allowoldfontcommands}{%
+\DeclareRobustCommand*{\allowoldfontcommands}{%
   \@jsc at warnoldfontcmdexceptiontrue}
-\newcommand*{\disallowoldfontcommands}{%
+\DeclareRobustCommand*{\disallowoldfontcommands}{%
   \@jsc at warnoldfontcmdexceptionfalse}
 \let\bxjs at oldfontcmd@list\@empty
 \def\bxjs at oldfontcmd#1{%
@@ -2510,6 +2522,135 @@
   \onecolumn
   \raggedbottom
 \fi
+\bxjs at robust@def\jsStrongText{\bxjs at strong@text}%
+\chardef\bxjs at strong@level=0
+\DeclareRobustCommand*\jsStrongDeclare[1]{%
+  \bxjs at set@array at from@clist{bxjs at strong}{#1}%
+  \chardef\bxjs at strong@level\z@}
+\jsStrongDeclare{\bfseries}
+\def\bxjs at strong@text{%
+  \bxjs at csletcs{bxjs at tmpa}{bxjs at strong/\the\bxjs at strong@level}%
+  \ifx\bxjs at tmpa\relax
+    \bxjs at advance@qc\bxjs at strong@level\m at ne \bxjs at strong@text
+  \else \bxjs at advance@qc\bxjs at strong@level\@ne \bxjs at tmpa
+  \fi}
+\@onlypreamble\bxjs at const@unit
+\@onlypreamble\bxjs at const@unit at a
+\ifjsWitheTeX
+  \def\bxjs at const@unit#1#2#3{%
+    \protected\edef#1{\dimexpr\the\dimexpr#3\relax\relax}}
+\else
+  \let\bxjs at Ct\fontdimen \font\bxjs at Ut=cmtex9 at 0.98245pt
+  \bxjs at Ct8\bxjs at Ut=8sp \bxjs at Ct16\bxjs at Ut=\z@
+  \def\bxjs at const@unit#1#2{%
+    \expandafter\bxjs at const@unit at a\csname bxjs@#2@\endcsname#1}
+  \def\bxjs at const@unit at a#1#2#3{%
+    \chardef#1\bxjs at Ct8\bxjs at Ut \bxjs at advance@qc#1\@ne \bxjs at Ct8\bxjs at Ut#1sp
+    \bxjs at Ct#1\bxjs at Ut=#3\relax \def#2{\bxjs at Ct#1\bxjs at Ut}}
+\fi
+\bxjs at const@unit\jQ{jQ}{0.25mm}
+\let\jH\jQ
+\ifjsc at mag
+  \@tempdimb=\jsBaseFontSize\relax
+  \edef\bxjs at tmpa{\strip at pt\@tempdimb}%
+  \@tempdima=2.5mm
+  \bxjs at invscale\@tempdima\bxjs at tmpa
+  \bxjs at const@unit\trueQ{trueQ}{\@tempdima}
+  \@tempdima=10pt
+  \bxjs at invscale\@tempdima\bxjs at tmpa
+  \bxjs at const@unit\bxjs at truept{truept}{\@tempdima}
+\else \let\trueQ\jQ \let\bxjs at truept\p@
+\fi
+\let\trueH\trueQ
+\@tempdima\trueQ \bxjs at invscale\@tempdima\jsScale
+\bxjs at const@unit\ascQ{ascQ}{\@tempdima}
+\@tempdima\bxjs at truept \bxjs at invscale\@tempdima\jsScale
+\bxjs at const@unit\ascpt{ascpt}{\@tempdima}
+\DeclareRobustCommand*\jsJaFontSize[2]{%
+  \begingroup
+    \bxjs at jafontsize@a{#1}%
+    \@tempdimb\jsInverseScale\@tempdima
+    \bxjs at jafontsize@a{#2}%
+    \xdef\bxjs at g@tmpa{%
+      \noexpand\fontsize{\the\@tempdimb}{\the\@tempdima}}%
+  \endgroup\bxjs at g@tmpa}
+\def\bxjs at jafontsize@a#1{%
+  \bxjs at parse@qh{#1}%
+  \ifx\bxjs at tmpb\relax \def\bxjs at tmpb{#1}\fi
+  \@defaultunits\@tempdima\bxjs at tmpb pt\relax\@nnil}
+\def\bxjs at let@lenexpr{\edef}
+\def\bxjs at kanjiskip{0pt}
+\DeclareRobustCommand*\jsSetKanjiSkip[1]{%
+  \bxjs at let@lenexpr\bxjs at kanjiskip{#1}%
+  \bxjs at reset@kanjiskip}
+\newcommand*\jsGetKanjiSkip{%
+  \bxjs at kanjiskip}
+\newif\ifbxjs at kanjiskip@enabled \bxjs at kanjiskip@enabledtrue
+\bxjs at robust@def\jsEnableKanjiSkip{%
+  \bxjs at kanjiskip@enabledtrue
+  \bxjs at reset@kanjiskip}
+\bxjs at robust@def\jsDisableKanjiSkip{%
+  \bxjs at kanjiskip@enabledfalse
+  \bxjs at reset@kanjiskip}
+\bxjs at robust@def\bxjs at reset@kanjiskip{%
+  \ifbxjs at kanjiskip@enabled
+    \setlength{\@tempskipa}{\bxjs at kanjiskip}%
+  \else \@tempskipa\z@
+  \fi
+  \jsApplyKanjiSkip\@tempskipa}
+\let\jsApplyKanjiSkip\@gobble
+\def\bxjs at xkanjiskip{0pt}
+\DeclareRobustCommand*\jsSetXKanjiSkip[1]{%
+  \bxjs at let@lenexpr\bxjs at xkanjiskip{#1}%
+  \bxjs at reset@xkanjiskip}
+\newcommand*\jsGetXKanjiSkip{%
+  \bxjs at xkanjiskip}
+\newif\ifbxjs at xkanjiskip@enabled \bxjs at xkanjiskip@enabledtrue
+\bxjs at robust@def\jsEnableXKanjiSkip{%
+  \bxjs at xkanjiskip@enabledtrue
+  \bxjs at reset@xkanjiskip}
+\bxjs at robust@def\jsDisableXKanjiSkip{%
+  \bxjs at xkanjiskip@enabledfalse
+  \bxjs at reset@xkanjiskip}
+\bxjs at robust@def\bxjs at reset@xkanjiskip{%
+  \ifbxjs at xkanjiskip@enabled
+    \setlength{\@tempskipa}{\bxjs at xkanjiskip}%
+  \else \@tempskipa\z@
+  \fi
+  \jsApplyXKanjiSkip\@tempskipa}
+\let\jsApplyXKanjiSkip\@gobble
+\g at addto@macro\jsResetDimen{%
+  \bxjs at reset@kanjiskip
+  \bxjs at reset@xkanjiskip}
+\AtEndOfPackage{%
+\jsSetKanjiSkip{0pt plus.1\jsZw minus.01\jsZw}%
+\ifx\jsDocClass\jsSlide \jsSetXKanjiSkip{0.1em}%
+\else \jsSetXKanjiSkip{0.25em plus 0.15em minus 0.06em}%
+\fi
+}
+\ifbxjs at jaspace@cmd
+  \def\jaenspace{\hskip.5\jsZw\relax}
+  \def\jathinspace{\hskip\bxjs at xkanjiskip\relax}
+  \def\ {\zwspace}
+  \bxjs at protected\def\bxjs at choice@jathinspace{%
+    \relax\ifmmode \mskip\medmuskip
+    \else \jathinspace\ignorespaces
+    \fi}
+  \jsAtEndOfClass{%
+    \ifjsWitheTeX \let\>\bxjs at choice@jathinspace
+    \else \def\>{\protect\bxjs at choice@jathinspace}%
+    \fi}
+  \DeclareRobustCommand*{\jaspace}[1]{%
+    \expandafter\ifx\csname bxjs at jaspace@@#1\endcsname\relax
+      \ClassError\bxjs at clsname
+       {Unknown jaspace: #1}{\@eha}%
+    \else
+      \csname bxjs at jaspace@@#1\endcsname
+    \fi}
+  \def\bxjs at jaspace@@zenkaku{\hskip 1\jsZw\relax}
+  \def\bxjs at jaspace@@nibu{\hskip .5\jsZw\relax}
+  \def\bxjs at jaspace@@shibu{\hskip .25\jsZw\relax}
+\fi
 \bxjs at pre@jadriver at hook
 \input{bxjsja-\bxjs at jadriver.def}
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls	2024-01-30 21:07:44 UTC (rev 69636)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls	2024-01-30 21:07:59 UTC (rev 69637)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsbook}
-  [2023/07/17 v2.9  BXJS document classes]
+  [2024/01/22 v2.9b BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsbook}
 \newif\ifjsc at needsp@tch
@@ -155,6 +155,18 @@
   \bxjs at cslet{#1/\the\@tempcnta}\relax}
 \let\c at bxjs@tempcnta\@tempcnta
 \def\bxjs at gset@tempcnta{\setcounter{bxjs at tempcnta}}
+\def\bxjs at advance@qc#1#2{%
+  \begingroup
+    \@tempcnta=#1\relax \advance\@tempcnta by#2\relax
+    \global\chardef\bxjs at g@tmpa\@tempcnta
+  \endgroup \let#1\bxjs at g@tmpa}
+\ifjsWitheTeX
+  \let\bxjs at new@count\newcount
+  \def\bxjs at advance@count#1#2{\advance#1by#2\relax}
+\else
+  \def\bxjs at new@count#1{\chardef#1\z@}
+  \let\bxjs at advance@count\bxjs at advance@qc
+\fi
 \def\jsSetQHLength#1#2{%
   \begingroup
     \bxjs at parse@qh{#2}%
@@ -1013,7 +1025,7 @@
 \newskip\jsc at smallskipamount
 \jsc at smallskipamount=3\jsc at mpt plus 1\jsc at mpt minus 1\jsc at mpt
 \chardef\bxjs at periodchar=`\.
-\bxjs at protected\def\bxjs at SE{%
+\bxjs at robust@def\bxjs at SE{%
   \ifnum\spacefactor<\@m \spacefactor\@m
   \else \spacefactor\sfcode\bxjs at periodchar
   \fi}
@@ -2106,9 +2118,9 @@
    {Old font command '\string#1' is used!!\MessageBreak
     The first occurrence is}%
 }
-\newcommand*{\allowoldfontcommands}{%
+\DeclareRobustCommand*{\allowoldfontcommands}{%
   \@jsc at warnoldfontcmdexceptiontrue}
-\newcommand*{\disallowoldfontcommands}{%
+\DeclareRobustCommand*{\disallowoldfontcommands}{%
   \@jsc at warnoldfontcmdexceptionfalse}
 \let\bxjs at oldfontcmd@list\@empty
 \def\bxjs at oldfontcmd#1{%
@@ -2616,6 +2628,135 @@
   \onecolumn
   \raggedbottom
 \fi
+\bxjs at robust@def\jsStrongText{\bxjs at strong@text}%
+\chardef\bxjs at strong@level=0
+\DeclareRobustCommand*\jsStrongDeclare[1]{%
+  \bxjs at set@array at from@clist{bxjs at strong}{#1}%
+  \chardef\bxjs at strong@level\z@}
+\jsStrongDeclare{\bfseries}
+\def\bxjs at strong@text{%
+  \bxjs at csletcs{bxjs at tmpa}{bxjs at strong/\the\bxjs at strong@level}%
+  \ifx\bxjs at tmpa\relax
+    \bxjs at advance@qc\bxjs at strong@level\m at ne \bxjs at strong@text
+  \else \bxjs at advance@qc\bxjs at strong@level\@ne \bxjs at tmpa
+  \fi}
+\@onlypreamble\bxjs at const@unit
+\@onlypreamble\bxjs at const@unit at a
+\ifjsWitheTeX
+  \def\bxjs at const@unit#1#2#3{%
+    \protected\edef#1{\dimexpr\the\dimexpr#3\relax\relax}}
+\else
+  \let\bxjs at Ct\fontdimen \font\bxjs at Ut=cmtex9 at 0.98245pt
+  \bxjs at Ct8\bxjs at Ut=8sp \bxjs at Ct16\bxjs at Ut=\z@
+  \def\bxjs at const@unit#1#2{%
+    \expandafter\bxjs at const@unit at a\csname bxjs@#2@\endcsname#1}
+  \def\bxjs at const@unit at a#1#2#3{%
+    \chardef#1\bxjs at Ct8\bxjs at Ut \bxjs at advance@qc#1\@ne \bxjs at Ct8\bxjs at Ut#1sp
+    \bxjs at Ct#1\bxjs at Ut=#3\relax \def#2{\bxjs at Ct#1\bxjs at Ut}}
+\fi
+\bxjs at const@unit\jQ{jQ}{0.25mm}
+\let\jH\jQ
+\ifjsc at mag
+  \@tempdimb=\jsBaseFontSize\relax
+  \edef\bxjs at tmpa{\strip at pt\@tempdimb}%
+  \@tempdima=2.5mm
+  \bxjs at invscale\@tempdima\bxjs at tmpa
+  \bxjs at const@unit\trueQ{trueQ}{\@tempdima}
+  \@tempdima=10pt
+  \bxjs at invscale\@tempdima\bxjs at tmpa
+  \bxjs at const@unit\bxjs at truept{truept}{\@tempdima}
+\else \let\trueQ\jQ \let\bxjs at truept\p@
+\fi
+\let\trueH\trueQ
+\@tempdima\trueQ \bxjs at invscale\@tempdima\jsScale
+\bxjs at const@unit\ascQ{ascQ}{\@tempdima}
+\@tempdima\bxjs at truept \bxjs at invscale\@tempdima\jsScale
+\bxjs at const@unit\ascpt{ascpt}{\@tempdima}
+\DeclareRobustCommand*\jsJaFontSize[2]{%
+  \begingroup
+    \bxjs at jafontsize@a{#1}%
+    \@tempdimb\jsInverseScale\@tempdima
+    \bxjs at jafontsize@a{#2}%
+    \xdef\bxjs at g@tmpa{%
+      \noexpand\fontsize{\the\@tempdimb}{\the\@tempdima}}%
+  \endgroup\bxjs at g@tmpa}
+\def\bxjs at jafontsize@a#1{%
+  \bxjs at parse@qh{#1}%
+  \ifx\bxjs at tmpb\relax \def\bxjs at tmpb{#1}\fi
+  \@defaultunits\@tempdima\bxjs at tmpb pt\relax\@nnil}
+\def\bxjs at let@lenexpr{\edef}
+\def\bxjs at kanjiskip{0pt}
+\DeclareRobustCommand*\jsSetKanjiSkip[1]{%
+  \bxjs at let@lenexpr\bxjs at kanjiskip{#1}%
+  \bxjs at reset@kanjiskip}
+\newcommand*\jsGetKanjiSkip{%
+  \bxjs at kanjiskip}
+\newif\ifbxjs at kanjiskip@enabled \bxjs at kanjiskip@enabledtrue
+\bxjs at robust@def\jsEnableKanjiSkip{%
+  \bxjs at kanjiskip@enabledtrue
+  \bxjs at reset@kanjiskip}
+\bxjs at robust@def\jsDisableKanjiSkip{%
+  \bxjs at kanjiskip@enabledfalse
+  \bxjs at reset@kanjiskip}
+\bxjs at robust@def\bxjs at reset@kanjiskip{%
+  \ifbxjs at kanjiskip@enabled
+    \setlength{\@tempskipa}{\bxjs at kanjiskip}%
+  \else \@tempskipa\z@
+  \fi
+  \jsApplyKanjiSkip\@tempskipa}
+\let\jsApplyKanjiSkip\@gobble
+\def\bxjs at xkanjiskip{0pt}
+\DeclareRobustCommand*\jsSetXKanjiSkip[1]{%
+  \bxjs at let@lenexpr\bxjs at xkanjiskip{#1}%
+  \bxjs at reset@xkanjiskip}
+\newcommand*\jsGetXKanjiSkip{%
+  \bxjs at xkanjiskip}
+\newif\ifbxjs at xkanjiskip@enabled \bxjs at xkanjiskip@enabledtrue
+\bxjs at robust@def\jsEnableXKanjiSkip{%
+  \bxjs at xkanjiskip@enabledtrue
+  \bxjs at reset@xkanjiskip}
+\bxjs at robust@def\jsDisableXKanjiSkip{%
+  \bxjs at xkanjiskip@enabledfalse
+  \bxjs at reset@xkanjiskip}
+\bxjs at robust@def\bxjs at reset@xkanjiskip{%
+  \ifbxjs at xkanjiskip@enabled
+    \setlength{\@tempskipa}{\bxjs at xkanjiskip}%
+  \else \@tempskipa\z@
+  \fi
+  \jsApplyXKanjiSkip\@tempskipa}
+\let\jsApplyXKanjiSkip\@gobble
+\g at addto@macro\jsResetDimen{%
+  \bxjs at reset@kanjiskip
+  \bxjs at reset@xkanjiskip}
+\AtEndOfPackage{%
+\jsSetKanjiSkip{0pt plus.1\jsZw minus.01\jsZw}%
+\ifx\jsDocClass\jsSlide \jsSetXKanjiSkip{0.1em}%
+\else \jsSetXKanjiSkip{0.25em plus 0.15em minus 0.06em}%
+\fi
+}
+\ifbxjs at jaspace@cmd
+  \def\jaenspace{\hskip.5\jsZw\relax}
+  \def\jathinspace{\hskip\bxjs at xkanjiskip\relax}
+  \def\ {\zwspace}
+  \bxjs at protected\def\bxjs at choice@jathinspace{%
+    \relax\ifmmode \mskip\medmuskip
+    \else \jathinspace\ignorespaces
+    \fi}
+  \jsAtEndOfClass{%
+    \ifjsWitheTeX \let\>\bxjs at choice@jathinspace
+    \else \def\>{\protect\bxjs at choice@jathinspace}%
+    \fi}
+  \DeclareRobustCommand*{\jaspace}[1]{%
+    \expandafter\ifx\csname bxjs at jaspace@@#1\endcsname\relax
+      \ClassError\bxjs at clsname
+       {Unknown jaspace: #1}{\@eha}%
+    \else
+      \csname bxjs at jaspace@@#1\endcsname
+    \fi}
+  \def\bxjs at jaspace@@zenkaku{\hskip 1\jsZw\relax}
+  \def\bxjs at jaspace@@nibu{\hskip .5\jsZw\relax}
+  \def\bxjs at jaspace@@shibu{\hskip .25\jsZw\relax}
+\fi
 \bxjs at pre@jadriver at hook
 \input{bxjsja-\bxjs at jadriver.def}
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty	2024-01-30 21:07:44 UTC (rev 69636)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty	2024-01-30 21:07:59 UTC (rev 69637)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{bxjscjkcat}
-  [2023/07/17 v2.9  BXJS document classes]
+  [2024/01/22 v2.9b BXJS document classes]
 \def\bxjx at pkgname{bxjscjkcat}
 \newcount\bxjx at cnta
 \@onlypreamble\bxjx at tmpdo

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty	2024-01-30 21:07:44 UTC (rev 69636)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty	2024-01-30 21:07:59 UTC (rev 69637)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{bxjscompat}
-  [2023/07/17 v2.9  BXJS document classes]
+  [2024/01/22 v2.9b 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	2024-01-30 21:07:44 UTC (rev 69636)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def	2024-01-30 21:07:59 UTC (rev 69637)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-minimal.def}
-  [2023/07/17 v2.9  BXJS document classes]
+  [2024/01/22 v2.9b BXJS document classes]
 %% このファイルは日本語文字を含みます
 \let\bxjs at tmpa\relax
 \ifx J\jsEngine \def\bxjs at tmpa{NTT-jTeX}\fi
@@ -400,21 +400,6 @@
   \bxjs at pagestyle@hook
   \global\let\bxjs at pagestyle@hook\relax}
 \fi
-\ifbxjs at jaspace@cmd
-  \def\jaenspace{\hskip.5\jsZw\relax}
-  \def\jathinspace{\hskip\z at skip}
-  \def\ {\zwspace}
-  \DeclareRobustCommand*{\jaspace}[1]{%
-    \expandafter\ifx\csname bxjs at jaspace@@#1\endcsname\relax
-      \ClassError\bxjs at clsname
-       {Unknown jaspace: #1}{\@eha}%
-    \else
-      \csname bxjs at jaspace@@#1\endcsname
-    \fi}
-  \def\bxjs at jaspace@@zenkaku{\hskip 1\jsZw\relax}
-  \def\bxjs at jaspace@@nibu{\hskip .5\jsZw\relax}
-  \def\bxjs at jaspace@@shibu{\hskip .25\jsZw\relax}
-\fi
 \endinput
 %%
 %% End of file `bxjsja-minimal.def'.

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def	2024-01-30 21:07:44 UTC (rev 69636)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def	2024-01-30 21:07:59 UTC (rev 69637)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-modern.def}
-  [2023/07/17 v2.9  BXJS document classes]
+  [2024/01/22 v2.9b 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	2024-01-30 21:07:44 UTC (rev 69636)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def	2024-01-30 21:07:59 UTC (rev 69637)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-pandoc.def}
-  [2023/07/17 v2.9  BXJS document classes]
+  [2024/01/22 v2.9b BXJS document classes]
 \if x\jsEngine
   \PassOptionsToPackage{nospace}{xeCJK}
 \fi

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def	2024-01-30 21:07:44 UTC (rev 69636)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def	2024-01-30 21:07:59 UTC (rev 69637)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-standard.def}
-  [2023/07/17 v2.9  BXJS document classes]
+  [2024/01/22 v2.9b BXJS document classes]
 %% このファイルは日本語文字を含みます
 \input{bxjsja-minimal.def}
 \bxjs at simplejasetupfalse
@@ -49,6 +49,7 @@
 \define at key{bxjs}{strong-cmd}[true]{\bxjs at set@keyval{strongcmd}{#1}{}}
 \def\bxjs at next#1{\bxjs at safe@setkeys{bxjsStd}{#1}}
 \expandafter\bxjs at next\expandafter{\jsJaParam}
+\let\jafontsize\jsJaFontSize
 \@onlypreamble\bxjs at apply@mmiv
 \def\bxjs at apply@mmiv{%
   \g at addto@macro\@classoptionslist{,jis2004}
@@ -89,98 +90,11 @@
 \fi
 \ifbxjs at jp@strong at cmd\jsAtEndOfClass{%
   \ifx\strong\@undefined\ifx\strongenv\@undefined
-    \DeclareRobustCommand{\strongenv}{\bxjs at strong@font}%
-    \DeclareTextFontCommand{\strong}{\strongenv}%
-    \newcommand*{\strongfontdeclare}{\bxjs at strongfontdeclare}%
-    \newcount\bxjs at strong@level
-    \bxjs at protected\def\bxjs at strongfontdeclare#1{%
-      \bxjs at set@array at from@clist{bxjs at strong}{#1}%
-      \bxjs at strong@level\z@}%
-    \bxjs at strongfontdeclare{\bfseries}%
-    \def\bxjs at strong@font{%
-      \bxjs at csletcs{bxjs at tmpa}{bxjs at strong/\the\bxjs at strong@level}%
-      \ifx\bxjs at tmpa\relax
-        \advance\bxjs at strong@level\m at ne \bxjs at strong@font
-      \else \advance\bxjs at strong@level\@ne \bxjs at tmpa
-      \fi}%
+    \newcommand*{\strongenv}{\jsStrongText}%
+    \DeclareTextFontCommand{\strong}{\jsStrongText}%
+    \newcommand*{\strongfontdeclare}{\jsStrongDeclare}%
   \fi\fi
 }\fi
-\ifjsWitheTeX
-  \@tempdima=0.25mm
-  \protected\edef\jQ{\dimexpr\the\@tempdima\relax}
-  \let\jH\jQ
-  \ifjsc at mag
-    \@tempdimb=\jsBaseFontSize\relax
-    \edef\bxjs at tmpa{\strip at pt\@tempdimb}%
-    \@tempdima=2.5mm
-    \bxjs at invscale\@tempdima\bxjs at tmpa
-    \protected\edef\trueQ{\dimexpr\the\@tempdima\relax}
-    \@tempdima=10pt
-    \bxjs at invscale\@tempdima\bxjs at tmpa
-    \protected\edef\bxjs at truept{\dimexpr\the\@tempdima\relax}
-  \else \let\trueQ\jQ \let\bxjs at truept\p@
-  \fi
-  \let\trueH\trueQ
-  \@tempdima\trueQ \bxjs at invscale\@tempdima\jsScale
-  \protected\edef\ascQ{\dimexpr\the\@tempdima\relax}
-  \@tempdima\bxjs at truept \bxjs at invscale\@tempdima\jsScale
-  \protected\edef\ascpt{\dimexpr\the\@tempdima\relax}
-\fi
-\def\jafontsize#1#2{%
-  \begingroup
-    \bxjs at jafontsize@a{#1}%
-    \@tempdimb\jsInverseScale\@tempdima
-    \bxjs at jafontsize@a{#2}%
-    \xdef\bxjs at g@tmpa{%
-      \noexpand\fontsize{\the\@tempdimb}{\the\@tempdima}}%
-  \endgroup\bxjs at g@tmpa}
-\def\bxjs at jafontsize@a#1{%
-  \bxjs at parse@qh{#1}%
-  \ifx\bxjs at tmpb\relax \def\bxjs at tmpb{#1}\fi
-  \@defaultunits\@tempdima\bxjs at tmpb pt\relax\@nnil}
-\def\bxjs at kanjiskip{0pt}
-\newcommand*\setkanjiskip[1]{%
-  \bxjs at let@lenexpr\bxjs at kanjiskip{#1}%
-  \bxjs at reset@kanjiskip}
-\newcommand*\getkanjiskip{%
-  \bxjs at kanjiskip}
-\newif\ifbxjs at kanjiskip@enabled \bxjs at kanjiskip@enabledtrue
-\bxjs at robust@def\bxjs at enable@kanjiskip{%
-  \bxjs at kanjiskip@enabledtrue
-  \bxjs at reset@kanjiskip}
-\bxjs at robust@def\bxjs at disable@kanjiskip{%
-  \bxjs at kanjiskip@enabledfalse
-  \bxjs at reset@kanjiskip}
-\bxjs at robust@def\bxjs at reset@kanjiskip{%
-  \ifbxjs at kanjiskip@enabled
-    \setlength{\@tempskipa}{\bxjs at kanjiskip}%
-  \else \@tempskipa\z@
-  \fi
-  \bxjs at apply@kanjiskip}
-\def\bxjs at xkanjiskip{0pt}
-\newcommand*\setxkanjiskip[1]{%
-  \bxjs at let@lenexpr\bxjs at xkanjiskip{#1}%
-  \bxjs at reset@xkanjiskip}
-\newcommand*\getxkanjiskip{%
-  \bxjs at xkanjiskip}
-\newif\ifbxjs at xkanjiskip@enabled \bxjs at xkanjiskip@enabledtrue
-\bxjs at robust@def\bxjs at enable@xkanjiskip{%
-  \bxjs at xkanjiskip@enabledtrue
-  \bxjs at reset@xkanjiskip}
-\bxjs at robust@def\bxjs at disable@xkanjiskip{%
-  \bxjs at xkanjiskip@enabledfalse
-  \bxjs at reset@xkanjiskip}
-\bxjs at robust@def\bxjs at reset@xkanjiskip{%
-  \ifbxjs at xkanjiskip@enabled
-    \setlength{\@tempskipa}{\bxjs at xkanjiskip}%
-  \else \@tempskipa\z@
-  \fi
-  \bxjs at apply@xkanjiskip}
-\g at addto@macro\jsResetDimen{%
-  \bxjs at reset@kanjiskip
-  \bxjs at reset@xkanjiskip}
-\let\bxjs at apply@kanjiskip\relax
-\let\bxjs at apply@xkanjiskip\relax
 \@onlypreamble\bxjs at adjust@jafont
 \def\bxjs at adjust@jafont#1{%
   \ifx\jsJaFont\bxjs@@auto
@@ -327,10 +241,14 @@
     \global\let\bxjs at urgent@special at a\relax}
 \fi
 \if j\jsEngine
-\def\bxjs at apply@kanjiskip{%
-  \kanjiskip\@tempskipa}
-\def\bxjs at apply@xkanjiskip{%
-  \xkanjiskip\@tempskipa}
+\newcommand*{\setkanjiskip}{\jsSetKanjiSkip}
+\newcommand*{\getkanjiskip}{\jsGetKanjiSkip}
+\def\jsApplyKanjiSkip#1{%
+  \kanjiskip=#1\relax}
+\newcommand*{\setxkanjiskip}{\jsSetXKanjiSkip}
+\newcommand*{\getxkanjiskip}{\jsGetXKanjiSkip}
+\def\jsApplyXKanjiSkip#1{%
+  \xkanjiskip=#1\relax}
 \def\bxjs at jachar#1{%
   \bxjs at jachar@a#1....\@nil}
 \def\bxjs at jachar@a#1#2#3#4#5\@nil{%
@@ -468,9 +386,11 @@
   \DeclareMathAlphabet{\mathgt}{\jsc at JYn}{gt}{m}{n}
   \g at addto@macro\bxjs at begin@document at hook{%
     \ifx\reDeclareMathAlphabet\@undefined\else
+    \@ifpackageloaded{bm}{}{%else
       \reDeclareMathAlphabet{\mathrm}{\@mathrm}{\@mathmc}%
       \reDeclareMathAlphabet{\mathbf}{\@mathbf}{\@mathgt}%
       \reDeclareMathAlphabet{\mathsf}{\@mathsf}{\@mathgt}%
+    }%
     \fi}
 \fi
 \else\if \if p\jsEngine T\else\if n\jsEngine T\else F\fi\fi T
@@ -517,17 +437,21 @@
 \ifx\CJKecglue\@undefined
   \def\CJKtilde{\CJK at global\def~{\CJKecglue\ignorespaces}}
 \fi
-\let\autospacing\bxjs at enable@kanjiskip
-\let\noautospacing\bxjs at disable@kanjiskip
+\newcommand*{\setkanjiskip}{\jsSetKanjiSkip}
+\newcommand*{\getkanjiskip}{\jsGetKanjiSkip}
+\newcommand*{\autospacing}{\jsEnableKanjiSkip}
+\newcommand*{\noautospacing}{\jsDisableKanjiSkip}
 \protected\def\bxjs at CJKglue{\hskip\jsKanjiSkip}
-\def\bxjs at apply@kanjiskip{%
-  \jsKanjiSkip\@tempskipa
+\def\jsApplyKanjiSkip#1{%
+  \jsKanjiSkip=#1\relax
   \let\CJKglue\bxjs at CJKglue}
-\let\autoxspacing\bxjs at enable@xkanjiskip
-\let\noautoxspacing\bxjs at disable@xkanjiskip
+\newcommand*{\setxkanjiskip}{\jsSetXKanjiSkip}
+\newcommand*{\getxkanjiskip}{\jsGetXKanjiSkip}
+\newcommand*{\autoxspacing}{\jsEnableXKanjiSkip}
+\newcommand*{\noautoxspacing}{\jsDisableXKanjiSkip}
 \protected\def\bxjs at CJKecglue{\hskip\jsXKanjiSkip}
-\def\bxjs at apply@xkanjiskip{%
-  \jsXKanjiSkip\@tempskipa
+\def\jsApplyXKanjiSkip#1{%
+  \jsXKanjiSkip=#1\relax
   \let\CJKecglue\bxjs at CJKecglue}
 \def\bxjs at jachar#1{%
   \CJKforced{#1}}
@@ -581,17 +505,21 @@
 \ifx\CJKecglue\@undefined
   \def\CJKtilde{\CJK at global\def~{\CJKecglue\ignorespaces}}
 \fi
-\let\autospacing\bxjs at enable@kanjiskip
-\let\noautospacing\bxjs at disable@kanjiskip
+\newcommand*{\setkanjiskip}{\jsSetKanjiSkip}
+\newcommand*{\getkanjiskip}{\jsGetKanjiSkip}
+\newcommand*{\autospacing}{\jsEnableKanjiSkip}
+\newcommand*{\noautospacing}{\jsDisableKanjiSkip}
 \protected\def\bxjs at CJKglue{\hskip\jsKanjiSkip}
-\def\bxjs at apply@kanjiskip{%
-  \jsKanjiSkip\@tempskipa
+\def\jsApplyKanjiSkip#1{%
+  \jsKanjiSkip=#1\relax
   \xeCJKsetup{CJKglue={\bxjs at CJKglue}}}
-\let\autoxspacing\bxjs at enable@xkanjiskip
-\let\noautoxspacing\bxjs at disable@xkanjiskip
+\newcommand*{\setxkanjiskip}{\jsSetXKanjiSkip}
+\newcommand*{\getxkanjiskip}{\jsGetXKanjiSkip}
+\newcommand*{\autoxspacing}{\jsEnableXKanjiSkip}
+\newcommand*{\noautoxspacing}{\jsDisableXKanjiSkip}
 \protected\def\bxjs at CJKecglue{\hskip\jsXKanjiSkip}
-\def\bxjs at apply@xkanjiskip{%
-  \jsXKanjiSkip\@tempskipa
+\def\jsApplyXKanjiSkip#1{%
+  \jsXKanjiSkip=#1\relax
   \xeCJKsetup{CJKecglue={\bxjs at CJKecglue}}}
 \ifx\mcfamily\@undefined
   \protected\def\mcfamily{\CJKfamily{\CJKrmdefault}}
@@ -715,6 +643,10 @@
   \PassOptionsToPackage{unicode}{hyperref}
   \bxjs at check@hyperref at unicode{true}
 \fi
+\newcommand*{\setkanjiskip}{\jsSetKanjiSkip}
+\newcommand*{\getkanjiskip}{\jsGetKanjiSkip}
+\newcommand*{\setxkanjiskip}{\jsSetXKanjiSkip}
+\newcommand*{\getxkanjiskip}{\jsGetXKanjiSkip}
 \protected\def\autospacing{%
   \ltjsetparameter{autospacing=true}}
 \protected\def\noautospacing{%
@@ -723,10 +655,10 @@
   \ltjsetparameter{autoxspacing=true}}
 \protected\def\noautoxspacing{%
   \ltjsetparameter{autoxspacing=false}}
-\def\bxjs at apply@kanjiskip{%
-  \ltjsetparameter{kanjiskip={\@tempskipa}}}
-\def\bxjs at apply@xkanjiskip{%
-  \ltjsetparameter{xkanjiskip={\@tempskipa}}}
+\def\jsApplyKanjiSkip#1{%
+  \ltjsetparameter{kanjiskip={#1}}}
+\def\jsApplyXKanjiSkip#1{%
+  \ltjsetparameter{xkanjiskip={#1}}}
 \def\bxjs at jachar#1{%
   \ltjjachar`#1\relax}
 \ifbxjs at jaspace@cmd
@@ -747,20 +679,6 @@
   \DeclareJaMathFontCommand{\mathmc}{\mcfamily}
   \DeclareJaMathFontCommand{\mathgt}{\gtfamily}
 \fi
-\ifbxjs at jaspace@cmd
-  \bxjs at protected\def\bxjs at choice@jathinspace{%
-    \relax\ifmmode \mskip\medmuskip
-    \else \jathinspace\ignorespaces
-    \fi}
-  \jsAtEndOfClass{%
-    \ifjsWitheTeX \let\>\bxjs at choice@jathinspace
-    \else \def\>{\protect\bxjs at choice@jathinspace}%
-    \fi}
-\fi
-\setkanjiskip{0pt plus.1\jsZw minus.01\jsZw}
-\ifx\jsDocClass\jsSlide \setxkanjiskip{0.1em}
-\else \setxkanjiskip{0.25em plus 0.15em minus 0.06em}
-\fi
 \endinput
 %%
 %% End of file `bxjsja-standard.def'.

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty	2024-01-30 21:07:44 UTC (rev 69636)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty	2024-01-30 21:07:59 UTC (rev 69637)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{bxjspandoc}
-  [2023/07/17 v2.9  BXJS document classes]
+  [2024/01/22 v2.9b BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjsp at pkgname{bxjspandoc}
 \let\bxjsp at engine=n

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls	2024-01-30 21:07:44 UTC (rev 69636)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls	2024-01-30 21:07:59 UTC (rev 69637)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsreport}
-  [2023/07/17 v2.9  BXJS document classes]
+  [2024/01/22 v2.9b BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsreport}
 \newif\ifjsc at needsp@tch
@@ -155,6 +155,18 @@
   \bxjs at cslet{#1/\the\@tempcnta}\relax}
 \let\c at bxjs@tempcnta\@tempcnta
 \def\bxjs at gset@tempcnta{\setcounter{bxjs at tempcnta}}
+\def\bxjs at advance@qc#1#2{%
+  \begingroup
+    \@tempcnta=#1\relax \advance\@tempcnta by#2\relax
+    \global\chardef\bxjs at g@tmpa\@tempcnta
+  \endgroup \let#1\bxjs at g@tmpa}
+\ifjsWitheTeX
+  \let\bxjs at new@count\newcount
+  \def\bxjs at advance@count#1#2{\advance#1by#2\relax}
+\else
+  \def\bxjs at new@count#1{\chardef#1\z@}
+  \let\bxjs at advance@count\bxjs at advance@qc
+\fi
 \def\jsSetQHLength#1#2{%
   \begingroup
     \bxjs at parse@qh{#2}%
@@ -1012,7 +1024,7 @@
 \newskip\jsc at smallskipamount
 \jsc at smallskipamount=3\jsc at mpt plus 1\jsc at mpt minus 1\jsc at mpt
 \chardef\bxjs at periodchar=`\.
-\bxjs at protected\def\bxjs at SE{%
+\bxjs at robust@def\bxjs at SE{%
   \ifnum\spacefactor<\@m \spacefactor\@m
   \else \spacefactor\sfcode\bxjs at periodchar
   \fi}
@@ -2128,9 +2140,9 @@
    {Old font command '\string#1' is used!!\MessageBreak
     The first occurrence is}%
 }
-\newcommand*{\allowoldfontcommands}{%
+\DeclareRobustCommand*{\allowoldfontcommands}{%
   \@jsc at warnoldfontcmdexceptiontrue}
-\newcommand*{\disallowoldfontcommands}{%
+\DeclareRobustCommand*{\disallowoldfontcommands}{%
   \@jsc at warnoldfontcmdexceptionfalse}
 \let\bxjs at oldfontcmd@list\@empty
 \def\bxjs at oldfontcmd#1{%
@@ -2639,6 +2651,135 @@
   \onecolumn
   \raggedbottom
 \fi
+\bxjs at robust@def\jsStrongText{\bxjs at strong@text}%
+\chardef\bxjs at strong@level=0
+\DeclareRobustCommand*\jsStrongDeclare[1]{%
+  \bxjs at set@array at from@clist{bxjs at strong}{#1}%
+  \chardef\bxjs at strong@level\z@}
+\jsStrongDeclare{\bfseries}
+\def\bxjs at strong@text{%
+  \bxjs at csletcs{bxjs at tmpa}{bxjs at strong/\the\bxjs at strong@level}%
+  \ifx\bxjs at tmpa\relax
+    \bxjs at advance@qc\bxjs at strong@level\m at ne \bxjs at strong@text
+  \else \bxjs at advance@qc\bxjs at strong@level\@ne \bxjs at tmpa
+  \fi}
+\@onlypreamble\bxjs at const@unit
+\@onlypreamble\bxjs at const@unit at a
+\ifjsWitheTeX
+  \def\bxjs at const@unit#1#2#3{%
+    \protected\edef#1{\dimexpr\the\dimexpr#3\relax\relax}}
+\else
+  \let\bxjs at Ct\fontdimen \font\bxjs at Ut=cmtex9 at 0.98245pt
+  \bxjs at Ct8\bxjs at Ut=8sp \bxjs at Ct16\bxjs at Ut=\z@
+  \def\bxjs at const@unit#1#2{%
+    \expandafter\bxjs at const@unit at a\csname bxjs@#2@\endcsname#1}
+  \def\bxjs at const@unit at a#1#2#3{%
+    \chardef#1\bxjs at Ct8\bxjs at Ut \bxjs at advance@qc#1\@ne \bxjs at Ct8\bxjs at Ut#1sp
+    \bxjs at Ct#1\bxjs at Ut=#3\relax \def#2{\bxjs at Ct#1\bxjs at Ut}}
+\fi
+\bxjs at const@unit\jQ{jQ}{0.25mm}
+\let\jH\jQ
+\ifjsc at mag
+  \@tempdimb=\jsBaseFontSize\relax
+  \edef\bxjs at tmpa{\strip at pt\@tempdimb}%
+  \@tempdima=2.5mm
+  \bxjs at invscale\@tempdima\bxjs at tmpa
+  \bxjs at const@unit\trueQ{trueQ}{\@tempdima}
+  \@tempdima=10pt
+  \bxjs at invscale\@tempdima\bxjs at tmpa
+  \bxjs at const@unit\bxjs at truept{truept}{\@tempdima}
+\else \let\trueQ\jQ \let\bxjs at truept\p@
+\fi
+\let\trueH\trueQ
+\@tempdima\trueQ \bxjs at invscale\@tempdima\jsScale
+\bxjs at const@unit\ascQ{ascQ}{\@tempdima}
+\@tempdima\bxjs at truept \bxjs at invscale\@tempdima\jsScale
+\bxjs at const@unit\ascpt{ascpt}{\@tempdima}
+\DeclareRobustCommand*\jsJaFontSize[2]{%
+  \begingroup
+    \bxjs at jafontsize@a{#1}%
+    \@tempdimb\jsInverseScale\@tempdima
+    \bxjs at jafontsize@a{#2}%
+    \xdef\bxjs at g@tmpa{%
+      \noexpand\fontsize{\the\@tempdimb}{\the\@tempdima}}%
+  \endgroup\bxjs at g@tmpa}
+\def\bxjs at jafontsize@a#1{%
+  \bxjs at parse@qh{#1}%
+  \ifx\bxjs at tmpb\relax \def\bxjs at tmpb{#1}\fi
+  \@defaultunits\@tempdima\bxjs at tmpb pt\relax\@nnil}
+\def\bxjs at let@lenexpr{\edef}
+\def\bxjs at kanjiskip{0pt}
+\DeclareRobustCommand*\jsSetKanjiSkip[1]{%
+  \bxjs at let@lenexpr\bxjs at kanjiskip{#1}%
+  \bxjs at reset@kanjiskip}
+\newcommand*\jsGetKanjiSkip{%
+  \bxjs at kanjiskip}
+\newif\ifbxjs at kanjiskip@enabled \bxjs at kanjiskip@enabledtrue
+\bxjs at robust@def\jsEnableKanjiSkip{%
+  \bxjs at kanjiskip@enabledtrue
+  \bxjs at reset@kanjiskip}
+\bxjs at robust@def\jsDisableKanjiSkip{%
+  \bxjs at kanjiskip@enabledfalse
+  \bxjs at reset@kanjiskip}
+\bxjs at robust@def\bxjs at reset@kanjiskip{%
+  \ifbxjs at kanjiskip@enabled
+    \setlength{\@tempskipa}{\bxjs at kanjiskip}%
+  \else \@tempskipa\z@
+  \fi
+  \jsApplyKanjiSkip\@tempskipa}
+\let\jsApplyKanjiSkip\@gobble
+\def\bxjs at xkanjiskip{0pt}
+\DeclareRobustCommand*\jsSetXKanjiSkip[1]{%
+  \bxjs at let@lenexpr\bxjs at xkanjiskip{#1}%
+  \bxjs at reset@xkanjiskip}
+\newcommand*\jsGetXKanjiSkip{%
+  \bxjs at xkanjiskip}
+\newif\ifbxjs at xkanjiskip@enabled \bxjs at xkanjiskip@enabledtrue
+\bxjs at robust@def\jsEnableXKanjiSkip{%
+  \bxjs at xkanjiskip@enabledtrue
+  \bxjs at reset@xkanjiskip}
+\bxjs at robust@def\jsDisableXKanjiSkip{%
+  \bxjs at xkanjiskip@enabledfalse
+  \bxjs at reset@xkanjiskip}
+\bxjs at robust@def\bxjs at reset@xkanjiskip{%
+  \ifbxjs at xkanjiskip@enabled
+    \setlength{\@tempskipa}{\bxjs at xkanjiskip}%
+  \else \@tempskipa\z@
+  \fi
+  \jsApplyXKanjiSkip\@tempskipa}
+\let\jsApplyXKanjiSkip\@gobble
+\g at addto@macro\jsResetDimen{%
+  \bxjs at reset@kanjiskip
+  \bxjs at reset@xkanjiskip}
+\AtEndOfPackage{%
+\jsSetKanjiSkip{0pt plus.1\jsZw minus.01\jsZw}%
+\ifx\jsDocClass\jsSlide \jsSetXKanjiSkip{0.1em}%
+\else \jsSetXKanjiSkip{0.25em plus 0.15em minus 0.06em}%
+\fi
+}
+\ifbxjs at jaspace@cmd
+  \def\jaenspace{\hskip.5\jsZw\relax}
+  \def\jathinspace{\hskip\bxjs at xkanjiskip\relax}
+  \def\ {\zwspace}
+  \bxjs at protected\def\bxjs at choice@jathinspace{%
+    \relax\ifmmode \mskip\medmuskip
+    \else \jathinspace\ignorespaces
+    \fi}
+  \jsAtEndOfClass{%
+    \ifjsWitheTeX \let\>\bxjs at choice@jathinspace
+    \else \def\>{\protect\bxjs at choice@jathinspace}%
+    \fi}
+  \DeclareRobustCommand*{\jaspace}[1]{%
+    \expandafter\ifx\csname bxjs at jaspace@@#1\endcsname\relax
+      \ClassError\bxjs at clsname
+       {Unknown jaspace: #1}{\@eha}%
+    \else
+      \csname bxjs at jaspace@@#1\endcsname
+    \fi}
+  \def\bxjs at jaspace@@zenkaku{\hskip 1\jsZw\relax}
+  \def\bxjs at jaspace@@nibu{\hskip .5\jsZw\relax}
+  \def\bxjs at jaspace@@shibu{\hskip .25\jsZw\relax}
+\fi
 \bxjs at pre@jadriver at hook
 \input{bxjsja-\bxjs at jadriver.def}
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls	2024-01-30 21:07:44 UTC (rev 69636)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls	2024-01-30 21:07:59 UTC (rev 69637)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsslide}
-  [2023/07/17 v2.9  BXJS document classes]
+  [2024/01/22 v2.9b BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsslide}
 \newif\ifjsc at needsp@tch
@@ -155,6 +155,18 @@
   \bxjs at cslet{#1/\the\@tempcnta}\relax}
 \let\c at bxjs@tempcnta\@tempcnta
 \def\bxjs at gset@tempcnta{\setcounter{bxjs at tempcnta}}
+\def\bxjs at advance@qc#1#2{%
+  \begingroup
+    \@tempcnta=#1\relax \advance\@tempcnta by#2\relax
+    \global\chardef\bxjs at g@tmpa\@tempcnta
+  \endgroup \let#1\bxjs at g@tmpa}
+\ifjsWitheTeX
+  \let\bxjs at new@count\newcount
+  \def\bxjs at advance@count#1#2{\advance#1by#2\relax}
+\else
+  \def\bxjs at new@count#1{\chardef#1\z@}
+  \let\bxjs at advance@count\bxjs at advance@qc
+\fi
 \def\jsSetQHLength#1#2{%
   \begingroup
     \bxjs at parse@qh{#2}%
@@ -1003,7 +1015,7 @@
 \newskip\jsc at smallskipamount
 \jsc at smallskipamount=3\jsc at mpt plus 1\jsc at mpt minus 1\jsc at mpt
 \chardef\bxjs at periodchar=`\.
-\bxjs at protected\def\bxjs at SE{%
+\bxjs at robust@def\bxjs at SE{%
   \ifnum\spacefactor<\@m \spacefactor\@m
   \else \spacefactor\sfcode\bxjs at periodchar
   \fi}
@@ -2020,9 +2032,9 @@
    {Old font command '\string#1' is used!!\MessageBreak
     The first occurrence is}%
 }
-\newcommand*{\allowoldfontcommands}{%
+\DeclareRobustCommand*{\allowoldfontcommands}{%
   \@jsc at warnoldfontcmdexceptiontrue}
-\newcommand*{\disallowoldfontcommands}{%
+\DeclareRobustCommand*{\disallowoldfontcommands}{%
   \@jsc at warnoldfontcmdexceptionfalse}
 \let\bxjs at oldfontcmd@list\@empty
 \def\bxjs at oldfontcmd#1{%
@@ -2510,6 +2522,135 @@
 \fi
   \renewcommand\familydefault{\sfdefault}
   \raggedright
+\bxjs at robust@def\jsStrongText{\bxjs at strong@text}%
+\chardef\bxjs at strong@level=0
+\DeclareRobustCommand*\jsStrongDeclare[1]{%
+  \bxjs at set@array at from@clist{bxjs at strong}{#1}%
+  \chardef\bxjs at strong@level\z@}
+\jsStrongDeclare{\bfseries}
+\def\bxjs at strong@text{%
+  \bxjs at csletcs{bxjs at tmpa}{bxjs at strong/\the\bxjs at strong@level}%
+  \ifx\bxjs at tmpa\relax
+    \bxjs at advance@qc\bxjs at strong@level\m at ne \bxjs at strong@text
+  \else \bxjs at advance@qc\bxjs at strong@level\@ne \bxjs at tmpa
+  \fi}
+\@onlypreamble\bxjs at const@unit
+\@onlypreamble\bxjs at const@unit at a
+\ifjsWitheTeX
+  \def\bxjs at const@unit#1#2#3{%
+    \protected\edef#1{\dimexpr\the\dimexpr#3\relax\relax}}
+\else
+  \let\bxjs at Ct\fontdimen \font\bxjs at Ut=cmtex9 at 0.98245pt
+  \bxjs at Ct8\bxjs at Ut=8sp \bxjs at Ct16\bxjs at Ut=\z@
+  \def\bxjs at const@unit#1#2{%
+    \expandafter\bxjs at const@unit at a\csname bxjs@#2@\endcsname#1}
+  \def\bxjs at const@unit at a#1#2#3{%
+    \chardef#1\bxjs at Ct8\bxjs at Ut \bxjs at advance@qc#1\@ne \bxjs at Ct8\bxjs at Ut#1sp
+    \bxjs at Ct#1\bxjs at Ut=#3\relax \def#2{\bxjs at Ct#1\bxjs at Ut}}
+\fi
+\bxjs at const@unit\jQ{jQ}{0.25mm}
+\let\jH\jQ
+\ifjsc at mag
+  \@tempdimb=\jsBaseFontSize\relax
+  \edef\bxjs at tmpa{\strip at pt\@tempdimb}%
+  \@tempdima=2.5mm
+  \bxjs at invscale\@tempdima\bxjs at tmpa
+  \bxjs at const@unit\trueQ{trueQ}{\@tempdima}
+  \@tempdima=10pt
+  \bxjs at invscale\@tempdima\bxjs at tmpa
+  \bxjs at const@unit\bxjs at truept{truept}{\@tempdima}
+\else \let\trueQ\jQ \let\bxjs at truept\p@
+\fi
+\let\trueH\trueQ
+\@tempdima\trueQ \bxjs at invscale\@tempdima\jsScale
+\bxjs at const@unit\ascQ{ascQ}{\@tempdima}
+\@tempdima\bxjs at truept \bxjs at invscale\@tempdima\jsScale
+\bxjs at const@unit\ascpt{ascpt}{\@tempdima}
+\DeclareRobustCommand*\jsJaFontSize[2]{%
+  \begingroup
+    \bxjs at jafontsize@a{#1}%
+    \@tempdimb\jsInverseScale\@tempdima
+    \bxjs at jafontsize@a{#2}%
+    \xdef\bxjs at g@tmpa{%
+      \noexpand\fontsize{\the\@tempdimb}{\the\@tempdima}}%
+  \endgroup\bxjs at g@tmpa}
+\def\bxjs at jafontsize@a#1{%
+  \bxjs at parse@qh{#1}%
+  \ifx\bxjs at tmpb\relax \def\bxjs at tmpb{#1}\fi
+  \@defaultunits\@tempdima\bxjs at tmpb pt\relax\@nnil}
+\def\bxjs at let@lenexpr{\edef}
+\def\bxjs at kanjiskip{0pt}
+\DeclareRobustCommand*\jsSetKanjiSkip[1]{%
+  \bxjs at let@lenexpr\bxjs at kanjiskip{#1}%
+  \bxjs at reset@kanjiskip}
+\newcommand*\jsGetKanjiSkip{%
+  \bxjs at kanjiskip}
+\newif\ifbxjs at kanjiskip@enabled \bxjs at kanjiskip@enabledtrue
+\bxjs at robust@def\jsEnableKanjiSkip{%
+  \bxjs at kanjiskip@enabledtrue
+  \bxjs at reset@kanjiskip}
+\bxjs at robust@def\jsDisableKanjiSkip{%
+  \bxjs at kanjiskip@enabledfalse
+  \bxjs at reset@kanjiskip}
+\bxjs at robust@def\bxjs at reset@kanjiskip{%
+  \ifbxjs at kanjiskip@enabled
+    \setlength{\@tempskipa}{\bxjs at kanjiskip}%
+  \else \@tempskipa\z@
+  \fi
+  \jsApplyKanjiSkip\@tempskipa}
+\let\jsApplyKanjiSkip\@gobble
+\def\bxjs at xkanjiskip{0pt}
+\DeclareRobustCommand*\jsSetXKanjiSkip[1]{%
+  \bxjs at let@lenexpr\bxjs at xkanjiskip{#1}%
+  \bxjs at reset@xkanjiskip}
+\newcommand*\jsGetXKanjiSkip{%
+  \bxjs at xkanjiskip}
+\newif\ifbxjs at xkanjiskip@enabled \bxjs at xkanjiskip@enabledtrue
+\bxjs at robust@def\jsEnableXKanjiSkip{%
+  \bxjs at xkanjiskip@enabledtrue
+  \bxjs at reset@xkanjiskip}
+\bxjs at robust@def\jsDisableXKanjiSkip{%
+  \bxjs at xkanjiskip@enabledfalse
+  \bxjs at reset@xkanjiskip}
+\bxjs at robust@def\bxjs at reset@xkanjiskip{%
+  \ifbxjs at xkanjiskip@enabled
+    \setlength{\@tempskipa}{\bxjs at xkanjiskip}%
+  \else \@tempskipa\z@
+  \fi
+  \jsApplyXKanjiSkip\@tempskipa}
+\let\jsApplyXKanjiSkip\@gobble
+\g at addto@macro\jsResetDimen{%
+  \bxjs at reset@kanjiskip
+  \bxjs at reset@xkanjiskip}
+\AtEndOfPackage{%
+\jsSetKanjiSkip{0pt plus.1\jsZw minus.01\jsZw}%
+\ifx\jsDocClass\jsSlide \jsSetXKanjiSkip{0.1em}%
+\else \jsSetXKanjiSkip{0.25em plus 0.15em minus 0.06em}%
+\fi
+}
+\ifbxjs at jaspace@cmd
+  \def\jaenspace{\hskip.5\jsZw\relax}
+  \def\jathinspace{\hskip\bxjs at xkanjiskip\relax}
+  \def\ {\zwspace}
+  \bxjs at protected\def\bxjs at choice@jathinspace{%
+    \relax\ifmmode \mskip\medmuskip
+    \else \jathinspace\ignorespaces
+    \fi}
+  \jsAtEndOfClass{%
+    \ifjsWitheTeX \let\>\bxjs at choice@jathinspace
+    \else \def\>{\protect\bxjs at choice@jathinspace}%
+    \fi}
+  \DeclareRobustCommand*{\jaspace}[1]{%
+    \expandafter\ifx\csname bxjs at jaspace@@#1\endcsname\relax
+      \ClassError\bxjs at clsname
+       {Unknown jaspace: #1}{\@eha}%
+    \else
+      \csname bxjs at jaspace@@#1\endcsname
+    \fi}
+  \def\bxjs at jaspace@@zenkaku{\hskip 1\jsZw\relax}
+  \def\bxjs at jaspace@@nibu{\hskip .5\jsZw\relax}
+  \def\bxjs at jaspace@@shibu{\hskip .25\jsZw\relax}
+\fi
 \bxjs at pre@jadriver at hook
 \input{bxjsja-\bxjs at jadriver.def}
 \endinput



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