texlive[47517] Master/texmf-dist: bxjscls (30apr18)

commits+karl at tug.org commits+karl at tug.org
Tue May 1 00:40:21 CEST 2018


Revision: 47517
          http://tug.org/svn/texlive?view=revision&revision=47517
Author:   karl
Date:     2018-05-01 00:40:21 +0200 (Tue, 01 May 2018)
Log Message:
-----------
bxjscls (30apr18)

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	2018-04-30 22:39:09 UTC (rev 47516)
+++ trunk/Master/texmf-dist/doc/latex/bxjscls/README-ja.md	2018-04-30 22:40:21 UTC (rev 47517)
@@ -98,6 +98,12 @@
 更新履歴
 --------
 
+  * Version 1.9  〈2018/04/19〉
+      - 一部のオプションの名前を変更:  
+        `use-zw`、`disguise-js`、`precise-text`、`simple-ja-setup`
+  * Version 1.8b 〈2018/04/14〉
+      - bxjscjkcat を新しい upTeX に追随させる。
+      - 新元号に関する何か。
   * Version 1.8a 〈2018/03/29〉
       - jsclasses の 2018/03/11 と同期。(仕様変更は無し。)
       - バグ修正。

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	2018-04-30 22:39:09 UTC (rev 47516)
+++ trunk/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex	2018-04-30 22:40:21 UTC (rev 47517)
@@ -12,14 +12,15 @@
   \renewcommand*{\XeLaTeX}{XeLaTeX}}
 \usepackage{shortvrb}
 \MakeShortVerb{\|}
-\newcommand{\PkgVersion}{v1.8a}
-\newcommand{\PkgDate}{2018/03/29}
+\newcommand{\PkgVersion}{v1.9}
+\newcommand{\PkgDate}{2018/04/19}
 \newcommand{\Pkg}[1]{\textsf{#1}}
-\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
+\newcommand{\Meta}[1]{$\langle$\mbox{}\nobr#1\nobr\mbox{}$\rangle$}
 \newcommand{\Note}{\par\noindent ※}
 \newcommand{\Means}{:\ }
 \newcommand{\jemph}{\textsf}
 \newcommand{\wbr}{\linebreak[0]}
+\newcommand{\nobr}{\nolinebreak[4]}
 \newcommand{\xast}{\mbox{}\mbox{$^*$}}
 \providecommand{\pTeX}{p\TeX}
 \providecommand{\pLaTeX}{p\LaTeX}
@@ -40,9 +41,9 @@
 %===========================================================
 \section*{注意}
 
-BXJS文書クラスについては、“{\TeX} Wiki”中の記事、
+BXJS文書クラスについては、サイト“{\TeX} Wiki”中の記事、
 \footnote{\url{https://texwiki.texjp.org/?BXjscls}}%
-およびそこからたどれるサイトにある情報も併せて参照してほしい。
+およびそこからたどれる情報も併せて参照してほしい。
 
 %===========================================================
 \section{概要}
@@ -65,7 +66,7 @@
   設定を書かずに済ませられるので、{\pLaTeX}並に簡単に日本語の
   文書を書き始めることができる。
 \item JSクラスでは、フォントのオプティカルサイズを最適にするため、
-  (基底フォントサイズが10pt以外の時に){\TeX}の版面拡大(mag)機能を
+  基底フォントサイズが10\,pt以外の時に{\TeX}の版面拡大(mag)機能を
   利用しているが、これが他のパッケージと衝突して
   不具合を起こすことがある。
   BXJSクラスではmag機能を使う他に別の方式を選べるようにしている。
@@ -100,7 +101,6 @@
   |dvips|、|dvipdfmx|、|dviout|、|xdvi|が指定できる。
   PDF出力のエンジンの場合は\Meta{ドライバ}の指定は不要である。
 \item “標準設定”を適用するので |ja=standard| を指定する。
-  (|ja| の代わりに |jadriver| と書いてもよい。)
 \item 既定以外のフォント設定を利用する場合は、\Meta{フォント指定}に
   その名前を書く。
   既定の設定を用いる場合は |jafont=...| 自体を省略する。
@@ -111,7 +111,7 @@
   \item \Pkg{bxjsarticle}\Means 章のないレポート
     (\Pkg{jsarticle}に相当する)
   \item \Pkg{bxjsreport}\Means 章のあるレポート
-    (\Pkg{jsbook}\,+\,|report| に相当する)
+    (\Pkg{jsreport}に相当する)
   \item \Pkg{bxjsbook}\Means 書籍
     (\Pkg{jsbook}に相当する)
   \item \Pkg{bxjsslide}\Means スライド
@@ -144,29 +144,23 @@
 \subsection{{\pLaTeX}の場合}
 
 例えば次の設定は:
-
 \begin{quote}\small\begin{verbatim}
 \documentclass[a4paper,platex,dvipdfmx,ja=standard]{bxjsarticle}
 \end{verbatim}\end{quote}
-
-対応するJSクラスを用いた次の設定と(ほぼ)等価になる
+対応するJSクラスを用いた次の設定とほぼ等価になる
 \footnote{すなわち、論理フォントは明朝がjis、
 ゴシックがjisgが使われる。
 なお、BXJSでは |mingoth| 等の論理フォント変更の
 オプションはサポートされていない。}:
-
 \begin{quote}\small\begin{verbatim}
 \documentclass[a4paper,dvipdfmx]{jsarticle}
 \end{verbatim}\end{quote}
 
 次のように |jafont| を指定した場合は:
-
 \begin{quote}\small\begin{verbatim}
 \documentclass[a4paper,platex,dvipdfmx,ja=standard,jafont=ms]{bxjsarticle}
 \end{verbatim}\end{quote}
-
-その値をプリセットオプションとして\Pkg{pxchfon}が読み込まれる:
-
+|jafont| の値をプリセットオプションとして\Pkg{pxchfon}が読み込まれる:
 \begin{quote}\small\begin{verbatim}
 \documentclass[a4paper,dvipdfmx]{jsarticle}
 \usepackage[ms]{pxchfon}
@@ -176,12 +170,10 @@
 \subsection{{\upLaTeX}の場合}
 
 例えば次の設定は:
-
 \begin{quote}\small\begin{verbatim}
 \documentclass[a5paper,uplatex,dvipdfmx,ja=standard]{bxjsarticle}
 \end{verbatim}\end{quote}
-
-次の設定と(ほぼ)等価になる
+次の設定とほぼ等価になる
 \footnote{論理フォントについては、従来のもの
   (明朝がupjisr-h、ゴシックがupjisg-h)
   に代わって、BMP外の文字に対応したもの
@@ -188,7 +180,6 @@
   (明朝がupjpnrm-h、ゴシックがupjpngt-h)
   を採用した。
   組み方は従来のものと変わらない。}:
-
 \begin{quote}\small\begin{verbatim}
 \documentclass[uplatex,a4paper,dvipdfmx]{jsarticle}
 \end{verbatim}\end{quote}
@@ -204,14 +195,11 @@
 を利用する。
 
 例えば次の設定は:
-
 \begin{quote}\small\begin{verbatim}
 \documentclass[a4paper,pdflatex,ja=standard]{bxjsarticle}
 \end{verbatim}\end{quote}
-
 次の設定と大体同じであるが、ただし文書レイアウトは
 \Pkg{article}でなく\Pkg{jsarticle}とほぼ同じになっている:
-
 \begin{quote}\small\begin{verbatim}
 \documentclass[a4paper]{article}
 \usepackage[whole,autotilde]{bxcjkjatype}
@@ -218,13 +206,10 @@
 \end{verbatim}\end{quote}
 
 |jafont| を指定した場合は:
-
 \begin{quote}\small\begin{verbatim}
 \documentclass[a4paper,pdflatex,ja=standard,jafont=ipaex]{bxjsarticle}
 \end{verbatim}\end{quote}
-
 その値が\Pkg{bxcjkjatype}のフォントプリセットになる。
-
 \begin{quote}\small\begin{verbatim}
 \documentclass[a4paper]{article}
 \usepackage[whole,autotilde,ipaex]{bxcjkjatype}
@@ -253,7 +238,7 @@
   「Type1形式のIPAexフォント」(\Pkg{ipaex-type1}パッケージ)である。
   一方、|ipaex| プリセットを指定した場合は
   「TrueType形式のIPAexフォント」が使われるので、両者の出力は
-  “PDFデータとしては”異なる(見かけは同じのはずだが)。
+  見かけは同じであるが、PDFデータとしては異なる。
   \footnote{ちなみに、\Pkg{bxcjkjatype}には |ipaex-type1| という
   オプションもあるが、この設定と既定設定(オプション無し)も
   動作は異なる。
@@ -269,14 +254,11 @@
 を利用する。
 
 例えば次の設定は:
-
 \begin{quote}\small\begin{verbatim}
 \documentclass[a4paper,twocolumn,xelatex,ja=standard]{bxjsarticle}
 \end{verbatim}\end{quote}
-
 次の設定と大体同じであるが、ただし文書レイアウトは
 \Pkg{jsarticle}とほぼ同じになっている:
-
 \begin{quote}\small\begin{verbatim}
 \documentclass[a4paper,twocolumn]{article}
 \usepackage{zxjatype}
@@ -285,13 +267,10 @@
 \end{verbatim}\end{quote}
 
 |jafont| を指定した場合は:
-
 \begin{quote}\small\begin{verbatim}
 \documentclass[a4paper,xelatex,ja=standard,jafont=ms]{bxjsarticle}
 \end{verbatim}\end{quote}
-
 その値が\Pkg{zxjafont}のプリセットになる。
-
 \begin{quote}\small\begin{verbatim}
 \usepackage{zxjatype}
 \usepackage[ms]{zxjafont}
@@ -304,14 +283,11 @@
 日本語処理パッケージとして\Pkg{\LuaTeX-ja}を利用する。
 
 例えば次の設定は:
-
 \begin{quote}\small\begin{verbatim}
 \documentclass[b5paper,9pt,lualatex,ja=standard]{bxjsarticle}
 \end{verbatim}\end{quote}
-
-次の設定と(ほぼ)等価になる
+次の設定とほぼ等価になる
 (ただし\Pkg{luatexja-preset}は実際には読み込まれない):
-
 \begin{quote}\small\begin{verbatim}
 \documentclass[b5paper,9pt]{ltjsarticle}
 \usepackage{luatexja-fontspec}
@@ -319,13 +295,10 @@
 \end{verbatim}\end{quote}
 
 |jafont| を指定した場合は:
-
 \begin{quote}\small\begin{verbatim}
 \documentclass[b5paper,lualatex,ja=standard,jafont=ms]{bxjsarticle}
 \end{verbatim}\end{quote}
-
-次の設定と(ほぼ)等価になる:
-
+次の設定とほぼ等価になる:
 \begin{quote}\small\begin{verbatim}
 \documentclass[b5paper]{ltjsarticle}
 \usepackage{luatexja-fontspec}
@@ -333,7 +306,6 @@
 \end{verbatim}\end{quote}
 
 \Note 補足:
-
 \begin{itemize}
 \item \Pkg{luatexja-preset}パッケージの読込が行われるのは |jafont| を
   指定した場合に限られる。
@@ -392,24 +364,13 @@
   \Note \Pkg{hyperref}のパッケージオプションで和文文字を含む文書情報を
   指定することはできない。
   (\Pkg{hyperref}の制限仕様。)
-\item |jafont| が無い場合の“既定のフォント設定”は多くのエンジンに
+\item |jafont| が無い場合の既定のフォント設定は多くのエンジンに
   おいて「IPAexフォント使用」であるが、(u){\pLaTeX}だけは異なっていて
   「何も指定しない状態」(JSクラスと同様)である。
   すなわち実際に使われる物理フォントの選択はDVIウェアの設定に
   委ねられている。
-%\item JSクラスは |\ifdraft| という公開名のスイッチ
-%  \footnote{スイッチなので{\LaTeX}レベルの命令ではない。
-%    標準クラスではこれに相当するものは |\if at draft| という非公開の
-%    制御綴で定義されている。}%
-%  を用いているが、これは\Pkg{ifdraft}パッケージと衝突する。
-%    そこでBXJSクラスでは代わりに |\ifjsDraft| の名前を
-%    用い、本文開始時に |\ifdraft| が未定義の場合に限り、
-%    |\ifjsDraft| を |\ifdraft| にコピーする処理にしている。
-%  \Note JSクラスの |\ifdraft| は2016/07/13版で廃止された。
-%  従って、BXJSクラスにおいて |\ifdraft| スイッチの使用を
-%  非推奨とし、将来的に廃止を予定する。
 \item 1.2版より、|\bf| や |\it| 等の
-  {\pLaTeX}\,2.09方式のフォント選択命令の使用が
+  {\LaTeX}\,2.09方式のフォント選択命令の使用が
   非推奨となり、これらの命令を使うと警告が出るようになった。
   詳細は\ref{sec:Old-font-commands}節を参照。
 % TODO: \@ptsize の話
@@ -421,7 +382,7 @@
 
 「Pandocモード」は文書形式変換ツールである
 Pandoc\footnote{\url{http://pandoc.org/}}%
-での日本語{\LaTeX}文書生成(および{\LaTeX}経由のPDF生成)
+を用いた日本語{\LaTeX}文書生成(および{\LaTeX}経由のPDF生成)
 のために調整された設定である。
 
 \begin{quote}
@@ -447,6 +408,7 @@
 以下でPandocでBXJSクラスを用いる例を示す。
 
 \Note なお、以下の記述はPandoc 2.x版に従う。
+(1.x版からかなり変更されている。)
 
 \begin{itemize}
 \item \Pkg{bxjsarticle}クラスを使用する一例。
@@ -457,7 +419,9 @@
   \end{itemize}
 
   コマンド行は次のようになる。
-  \footnote{もちろん、実際には改行を含めず1行で書く。}
+  \footnote{もちろん、実際には改行を含めず1行で書く。
+    なお、日本語文書の場合、変換先書式(|-t|)は |latex|
+    でなく |lates-smart|(|smart| 機能を無効化)とすべきである。}
   \begin{quote}
   |pandoc| \Meta{入力ファイル名}\ 
     |-o| \Meta{出力ファイル名}|.pdf|
@@ -479,8 +443,8 @@
   \begin{itemize}
   \item 節番号を出力する
   \item Lua{\LaTeX}経由
-  \item 用紙サイズはB5判
-  \item 和文の基底フォントサイズは11Q
+  \item 用紙サイズはJIS~B5判
+  \item 和文の基底フォントサイズは11\,Q
   \item 和文フォント設定は |ipaex|
   \item 欧文フォントをPandocの機能で設定
   \end{itemize}
@@ -512,7 +476,7 @@
 \item Pandocで{\LaTeX}経由でPDFを出力する場合、
   エンジン指定(|--pdf-engine|)は
   |pdflatex|、|xelatex|、|lualatex|のみがサポートされる。
-  しかし、Pandocの出力を「単体の{\LaTeX}文書」とすることで、
+  しかし、Pandocの出力を「単体の{\LaTeX}文書」(|-s|指定)とすることで、
   {\LaTeX}エンジンに(u){\pLaTeX}を使用することができる。
   出力された{\LaTeX}文書は通常の方法でPDFやPostScript形式に
   変換できる。
@@ -535,14 +499,14 @@
 \begin{itemize}
 \item 真偽値は、 |true|(真)または |false|(偽)で指定する。
 \item 長さ値および整数値は\Pkg{calc}パッケージの式で指定できる。
-\item \Meta{長さ\xast}のように“\xast”のついたパラメタについては、
+\item \Meta{長さ\xast}のように“\xast”のついた長さパラメタについては、
   \Pkg{calc}の長さ式の代わりに、和文用単位(|Q|、|H|、|zw|、|zh|)
-  付きの実数値で指定することもできる
+  付きの実数値で指定することもできる。
   \footnote{この機能は |units| 和文パラメタとは無関係である。
     和文用単位を含む長さ式は((u){\pLaTeX}以外では)使えない。
     なお、ここで使われる |zw| は常に((u){\pLaTeX}でも)
     “規約上の全角幅”(|\jsZw|)を指す
-    (和文フォント設定が未完了のため)。}。
+    (和文フォント設定が未完了のため)。}
 \end{itemize}
 
 %-------------------
@@ -559,7 +523,7 @@
   エンジンオプション(と次項の |autodetect-engine| の何れか)
   の指定は必須である。
   \Note |platex-ng| は{\pTeX-ng}エンジン
-    (別名“A\pTeX”、“Asiatic \pTeX”)のためのオプションである。
+    (別名A\pTeX、Asiatic \pTeX)のためのオプションである。
     現時点では |platex-ng| 指定時の仕様は流動的であり詳細を述べる
     ことは避けるが、大体は |uplatex| と同様になる。
     {\pTeX-ng}はPDF出力を行うので、ドライバオプションは指定しない。
@@ -576,9 +540,9 @@
   \Note BXJSクラスの設計の思想としては、
   「{\LaTeX}文書がどのエンジンでコンパイルすべきものかは
   ソース中に明示されるべき」と考えていて、
-  従って、“人間が普通に”文書を作る際にはこのオプションの
+  従って、人間が“普通に”文書を作る際にはこのオプションの
   使用は推奨されない。
-  このオプションは“{\LaTeX}ソースの自動生成”が絡む処理を念頭において
+  このオプションは 「{\LaTeX}ソースの自動生成」が絡む処理を念頭において
   用意されている。
 \item ドライバオプション\Means
   DVI出力のエンジンを用いる場合に、実際に使用するDVIウェアの名前を
@@ -590,7 +554,7 @@
     エラーではなく警告が出る。}
 \item |nodvidriver|\Means
   特殊なドライバオプションの一種で、BXJSクラスが持つ
-  ドライバ依存の機能を全て抑止することを指定する。%
+  ドライバ依存の機能を全て抑止することを指定する。
   \footnote{従って、ドライバ依存のパッケージを使用しなければ、
     出力されるDVIファイルは特定のDVIウェアに依存しないものになる。}
 \item |dvi=|\Meta{ドライバ名}\Means
@@ -611,10 +575,12 @@
     (明示指定で上書可能)。
   \end{itemize}
 \item |nopapersize|\Means
-  “papersize special出力”を抑止する。
-  (JSクラスとは異なり、special出力のオプション |papersize|
+  出力用紙サイズ設定
+  (DVI出力の場合は所謂“papersize special出力”)
+  を抑止する。
+  (JSクラスとは異なり、出力用紙サイズ設定のオプション |papersize|
   は既定で有効である。)
-  \Note papersize specialを出力する他のパッケージとの干渉に
+  \Note 出力用紙サイズ設定を行う他のパッケージとの干渉に
   対する対策。
 \item |ja=|\Meta{名前}\Means
   使用する和文ドライバの名前を指定する。
@@ -626,7 +592,7 @@
   それ以外の場合は、一応 |minimal| とするが、
   明示的な指定が推奨される。
 \item |jafont=|\Meta{名前}\Means
-  “和文フォントプリセット指定”の名雨を設定する。
+  「和文フォントプリセット指定」の名雨を設定する。
   \Note \ref{sec:Basic}節で解説した通り、standard和文ドライバでは |jafont|
   の値が利用される。
   \par
@@ -639,13 +605,13 @@
     丸括弧だけ削除した文字列(“sourcehan-otc”)が使われる。
   \end{itemize}
 \item |japaram={|\Meta{キー}|=|\Meta{値}|,...}|\Means
-  “和文ドライバパラメタ”の値を設定する。
+  「和文ドライバパラメタ」の値を設定する。
   詳しくは\ref{sec:Ja-Driver-Param}節を参照。
   \Note |jafont| と |japaram| の値がどのように解釈されるかは
   和文ドライバの仕様次第である。
 \item |base=|\Meta{長さ\xast}\Means
-  基底フォントサイズ(|\normalsize| のフォントのサイズ)を指定する。
-  JSクラスの |10pt|、|11pt| 等と同じ役割で、任意の値を指定できる。
+  基底フォントサイズ(|\normalsize| のサイズ)を指定する。
+  JSクラスの |10pt|、|11pt| 等と同じ役割で、任意の長さ値を指定できる。
   基底フォントサイズの既定値は10\,ptである。
   \Note |##pt| の形のオプションには名前と実際に設定される値が
   ずれているものが多く、例えば |11pt| は10.95\,pt、
@@ -656,7 +622,7 @@
   和文を基準にして基底フォントサイズを指定する。
   すなわち和文フォントの |\normalsize| のサイズを指定の長さとする。
   \footnote{この場合に決定されるmag値は和文スケール値にも依存する
-    ことに注意。}%
+    ことに注意。}
   \Note 1.8版から、|base| と |jbase| の両方の指定が可能になった。
   この場合、和文スケール値がそれらに基づいて決定される
   (|scale| 指定は無効になる)。
@@ -665,10 +631,10 @@
   既定値は 0.924715(= 13\,Q/10\,pt)である。
   \footnote{これはJSクラスの設計に基づく値である。
     ただし実装の都合で、JSクラスの実際のスケール値はこれから
-    僅かだけずれている。}%
+    僅かだけずれている。}
 \item |paper={|\Meta{横幅}|}{|\Meta{縦幅}|}|\Means
   用紙サイズ設定。
-  |a4paper| 等と同じ役割で、任意の値を指定できる。
+  |a4paper| 等と同じ役割で、任意の長さ値を指定できる。
   用紙サイズの既定値はA4縦
   ($\mbox{210\,mm}\times\mbox{294\,mm}$)である。
 \item |enablejfam=|\Meta{値}\Means
@@ -681,33 +647,38 @@
   詳細については\ref{sec:Ja-math-fonts}節を参照されたい。
 \item |textwidth=|\Meta{長さ}\Means
   行長(本文領域の横幅;|\textwidth|)を指定する。
+  \Note 実際には全角の整数倍に丸めた値が使われる
+  (\ref{ssec:page-layout}節参照)。
   \begin{itemize}
   \item \Pkg{bxjsbook}以外では、\Pkg{geometry}で |textwidth| を
     指定したのと同値。
-  \item \Pkg{bxjsbook}では、後述の |textwidth-limit| と同様に扱われる。
+    この場合、既定では |textwidth| を指定しない。
+  \item \Pkg{bxjsbook}では、\Pkg{geometry}の |textwidth| は
+    実際には |\fullwidth|(ヘッダ部分の横幅)の指定とみなされる。
+    従って、|\textwidth| はこのオプションで指定する必要がある。
+    この場合の既定値は40\,zwである。
+    \Note |\textwidth| が |\fullwidth| を超えることはできない。
   \end{itemize}
 \item |number-of-lines=|\Meta{整数}\Means
   1ページあたりの行数を指定する。
   \Pkg{geometry}で |lines| を指定したのと同値。
+  既定では |lines| を指定しない。
 \end{itemize}
 
 \paragraph{上級者向けのオプション}\mbox{}
 
 \begin{itemize}
-\item |zw|(既定)\Means
-  |\jsZw| と等価な命令として |\zw| を定義する。
-\item |nozw|\Means
-  |zw| の否定。
-  \Note 命令名の衝突に対する対策。
-\item |js|(既定)\Means
+\item |use-zw=|\Meta{真偽値}\Means
+  |\jsZw| と等価な命令として |\zw| を定義するか。
+  既定値は真。
+  \Note つまり |\zw| の命令名が衝突する場合に、
+  |use-zw=false| を指定する。
+\item |disguise-js=|\Meta{真偽値}\Means
   JSクラス(例えば\Pkg{bxjsreport}の場合は\Pkg{jsbook})
-  が読込済であるように振舞う。
-  \Note 「JSクラスであるかによって挙動を変える」
-  パッケージに対する対策。
-\item |nojs|\Means
-  |js| の否定。
-  \Note つまり「JSクラスの一種である」と判定されると不都合な場合に
-  このオプションを指定する。
+  が読込済であるように振舞うか否か。
+  既定値は真。
+  \Note つまり「JSクラスの一種である」と判定されると不都合な場合に、
+  |disguise-js=false| を指定する。
 \item |bigcode|\Means
   {\upTeX}エンジンとdvipdfmxの組合せで\Pkg{hyperref}パッケージを
   利用する時に適用されるToUnicode CMapとして |UTF8-UTF16| を指定する。
@@ -726,23 +697,22 @@
   である場合は、
   ({\TeX}環境がある程度新しく、|UTF8-UTF16| が利用可能と思われるので)
   |bigcode| を既定とし、それ以外は |nobigcode| を既定とする。
-\item |precisetext|\Means
-  {\XeTeX}エンジンにおいて、「ActualText生成機能」を有効化する。
+\item |precise-text=|\Meta{真偽値}\Means
+  {\XeTeX}エンジンにおいて、「ActualText生成機能」を有効化する
   \footnote{つまり、|\XeTeXgenerateactualtext=1| を行う。
     ActualText 生成機能と日本語処理は相性が悪いため、これを使うと
-    出力PDFのサイズが増大する(1.5~2倍)ことに注意。}
-\item |noprecisetext|(既定)\Means
-  |precisetext|の否定。
-\item |simplejasetup|(既定)\Means
+    出力PDFのサイズが増大する(1.5~2倍)ことに注意。}%
+  か否か。
+  既定値は偽。
+\item |simple-ja-setup=|\Meta{真偽値}\Means
   {\XeTeX}エンジン自体の行組版機能(|\XeTeXlinebreaklocale| 等)
-  を利用した、簡易的な日本語用組版設定を行う。
+  を利用した、簡易的な日本語用組版設定を行うか否か。
+  既定値は真(だが多くの場合に無効化される)。
   \Note {\XeTeX}エンジン以外では無効である。
   また、\Pkg{xeCJK}や\Pkg{zhspacing}等の日本語(CJK)組版用
   パッケージが読み込まれた場合も無効化される。
   特に、和文ドライバがstandardである場合は、必ず\Pkg{xeCJK}が
   読み込まれるため、このオプションは無意味である。
-\item |nosimplejasetup|\Means
-  |simplejasetup| の否定。
 \item |a4varpaper|、|b5varpaper|\Means
   用紙サイズ指定オプション |a4var|、|b5var| の別名。
   \Note Pandocで |-V papersize=a4var| の指定を可能にするため。
@@ -768,7 +738,7 @@
       ただし\Pkg{geometry}の読込が強く推奨される。
       (\Pkg{geometry}非読込時の動作テストはほとんど行っていない。)}
   \end{itemize}
-  \Note “どうしても\Pkg{geometry}パッケージを自分で読み込みたい”
+  \Note 「どうしても\Pkg{geometry}パッケージを自分で読み込みたい」
   という人のための設定。
 \item |oldfontcommands|\Means
   |\bf| 等の“二文字フォント命令”の使用を許容する。
@@ -784,25 +754,19 @@
   \item \Pkg{bxjsbook}クラスでヘッダ・フッタの横幅を(|\textwidth|
     ではなく)|\fullwidth| に一致させる。
   \end{itemize}
-\item |textwidth-limit=|\Meta{整数}\Means
-  \Pkg{bxjsbook}クラスにおける、|\textwidth| の上限の長さ
-  (全角単位)。%
-  \footnote{つまり、\Pkg{bxjsbook}クラスにおいては、\Pkg{geometry}で
-    指定する“width”の値は |\fullwidth| の値と見なされ、それが
-    このオプションで指定する上限値を超えている場合は、|\textwidth|
-    は上限値になる。
-    この場合の本文領域の配置の様式は\Pkg{jsbook}クラスと同様である。} %
-  既定値は40。
 \item |paragraph-mark=|\Meta{文字1つ}\Means
   パラグラフ(|\paragraph|)の見出し先頭に付く記号。
   既定値は“■”。
+  \Note “|paragraph-mark=|”のように値を空にするのも可能。
 \item |whole-zw-lines=|\Meta{真偽値}\Means
   ページレイアウト策定において「行長を全角幅の整数倍に丸める処理」
   を行うか否か。
+  既定値は真。
 \item |hyperref-enc=|\Meta{真偽値}\Means
   \Pkg{hyperref}パッケージについて
   「PDF文字列の文字コード設定を補正する処理」
   を行うか否か。
+  既定値は真。
 \item |jaspace-cmd=|\Meta{真偽値}\Means
   以下に挙げる和文空白命令を定義するか否か。
   (詳しくは\ref{ssec:ja-settings}節を参照。)
@@ -810,8 +774,10 @@
     |\jaenspace|、|\jathinspace|、|\>|、
     |\_|(|\|\,+\,全角空白)
   \end{quote}
+  既定値は真。
 \item |fix-at-cmd=|\Meta{真偽値}\Means
   |\@| 命令に対してJSクラスと同様の拡張を施すか否か。
+  既定値は真。
 \item |label-section=|\Meta{値}\Means
   節番号の書式出力、特に
   「|\pre|/|postsectionname|」
@@ -874,6 +840,26 @@
 \paragraph{旧版との互換用のオプション}\mbox{}
 
 \begin{itemize}
+\item |zw|\Means
+  |use-zw=true| と同値。
+\item |nozw|\Means
+  |use-zw=false| と同値。
+\item |js|\Means
+  |disguise-js=true| と同値。
+\item |nojs|\Means
+  |disguise-js=false| と同値。
+\item |precisetext|\Means
+  |precise-text=true| と同値。
+\item |noprecisetext|\Means
+  |precise-text=false| と同値。
+\item |simplejasetup|\Means
+  |simple-ja-setup=true| と同値。
+\item |nosimplejasetup|\Means
+  |simple-ja-setup=false| と同値。
+  \Note 以上の8個は1.9版より前で使われた。
+\item |textwidth-limit=|\Meta{整数}\Means
+  |textwidth-limit=|\Meta{整数}|zw| と同値。
+  \Note 1.8版より前で使われた。
 \item |dvipdfmx-if-dvi|\Means
   |dvi=dvipdfmx| と同値。
   \Note 1.2版より前で使われた。
@@ -903,7 +889,7 @@
 |letterpaper|、|legalpaper|、|executivepaper|。
 \Note |a4var| はA4変判($\mbox{210\,mm}\times\mbox{283\,mm}$)、
 |b5var| はB5変判($\mbox{182\,mm}\times\mbox{230\,mm}$)。
-\Note (BX)\<JSクラスでは |a4j| は |a4paper| と全く等価である。
+\Note JS/BXJSクラスでは |a4j| は |a4paper| と全く等価である。
 (他の |b4j| 等も同様。)
 
 \paragraph{横置き}
@@ -1016,7 +1002,7 @@
 
 JSクラスにおけるページレイアウト決定の過程では、
 基底フォントサイズが10\,pt以外の場合に、
-“版面を拡大縮小する”という処理を採用している。
+「版面を拡大縮小する」という処理を採用している。
 \footnote{例えば、基底フォントサイズが20\,ptだとすると、
 まずは指定されたものの半分の縦横幅をもつ用紙に対して
 基底フォントサイズが10\,ptとしてレイアウトを決定し、
@@ -1033,7 +1019,7 @@
 対応が容易になるという利点もある。
 \footnote{BXJSで「任意の」基底フォントサイズが設定できるのも
 この利点があるため。}%
-ところがここで、JSクラスではこの“版面の拡大”を実現するために
+ところがここで、JSクラスではこの“版面拡大”を実現するために
 {\TeX}エンジンが持つ版面拡大機能(仮に「mag設定」と呼称する)
 を用いていて、これについて批判されることが多い。
 また、現実問題として、mag設定が{\LaTeX}で用いられる機会は少ないため、
@@ -1252,6 +1238,8 @@
     自然長になるように丸める。
   \item |marginpar| 関連の設定を行う。
   \end{itemize}
+  \Note ただし、横幅の全角整数倍への丸めは、|whole-zw-lines=false|
+  指定時には抑止される。
 \end{enumerate}
 
 ページレイアウトの再設定のために次の命令が用意されている。
@@ -1291,7 +1279,7 @@
     (文書要旨のための)abstract 環境は、book系クラスでは
     用意されていないことが多いことに注意。}%
   と等価な環境で、
-  “各章の初めにちょっとしたことを書く”用途を想定したもの。
+  「各章の初めにちょっとしたことを書く」用途を想定したもの。
   (ただし使用可能な場所に特に制限はない。)
 
   なお、|abstract| 環境の機能については継承元のJSクラスと同一に
@@ -1306,9 +1294,9 @@
   \end{itemize}
 
 \item |\jayear|\Means
-  和暦表示(|\和暦| が有効)の時の |\today| における年号
+  和暦表示(|\和暦|)が有効な時の |\today| のテキスト中の年号
   (「年」より前の部分、例えば「平成28」)
-  のテキストを表すマクロ。
+  の部分を表すマクロ。
 \end{itemize}
 
 |label-section=modern| の場合に限り、以下の命令が利用できる。
@@ -1331,7 +1319,7 @@
   \Note |label-section=compat| の場合は(JSクラスと同様に)
     付録開始時に
     「|\presectionname| を |\appendixname| で上書きする」
-    という動作が発生するが、|label-section=compat| では
+    という動作が発生するが、|label-section=modern| では
     これは起こらない。
 \item |\labelsubsection|/|\labelsubsubsection|\Means
   これらのマクロが定義されている場合は、各々の内容のテキストが
@@ -1353,10 +1341,10 @@
     命令 |\zw|({\pLaTeX}の |zw| と本当に等価)が規定されている。
     |lualatex| エンジン指定かつ和文ドライバが |standard| の場合は
     この |\zw| の定義がそのまま使われる。
-    (従って |zw|/|nozw| は実質的に意味を持たない。)
+    (従って |use-zw| は実質的に意味を持たない。)
     なお、|\jsZw| は「規約上の全角幅」であり、「実際の全角幅」と本来は
     一致するはずだが、実際には計算誤差のせいで僅かに値が異なる。}%
-  ただし |nozw| 指定時は定義されない。
+  ただし |use-zw=false| 指定時は定義されない。
 \item |\zwspace|\Means
   全角(|\jsZw|)幅の水平空き。
 \item |\_|(|\|\,の後に全角空白文字)\Means
@@ -1366,7 +1354,7 @@
   ただしBXJSクラスはJLREQの和字間隔の規定とは無関係であり、
   この命令は単純に |\hspace|\wbr|{\jsZw}| と等価である。
 \item |\jaenspace|\Means
-  半角(0.5|\jsZw|)幅の水平空き。
+  半角(0.5\,|\jsZw|)幅の水平空き。
 \item |\allowoldfontcommands|\Means
   これ以降に実行される二文字フォント命令を警告の対象にしない。
 \item |\disallowoldfontcommands|\Means
@@ -1392,9 +1380,9 @@
   に、|\rmfamily| で和文が「明朝」、
   |\sffamily| および |\ttfamily| で和文が「ゴシック」に変更される。
 \item |\jQ|、|\jH|、|\trueQ|、|\trueH|\Means
-  それぞれ{\pLaTeX}の単位Q、H、trueQ、trueHに相当する長さ。
+  それぞれ{\pLaTeX}の単位Q、H、true\,Q、true\,Hに相当する長さ。
 \item |\ascQ|\Means
-  |\trueQ| を和文スケール値で割った長さ。
+  1\,true\,Qを和文スケール値で割った長さ。
   \footnote{命令名は“anti-scaled Q”の略。}%
   例えば、|\fontsize{10\ascQ}{16\trueH}|
   で和文のサイズが10\,Qになる。%
@@ -1454,7 +1442,7 @@
 \item 欧文数式フォント命令での和文の連動\Means
   |\mathrm| で和文が「明朝」、
   |\mathsf| および |\mathtt| で和文が「ゴシック」に指定される。
-  \Note JSクラスとは異なり、“連動の組合せ”は
+  \Note JSクラスとは異なり、連動の組合せは
   テキストと同一であることに注意。
 \end{itemize}
 
@@ -1539,7 +1527,7 @@
   これは{\LaTeXe}でも標準命令であり、“二文字フォント命令”には
   含まれない。}\
 {\LaTeXe}においては、これらに代わって、|\bfseries| 等の
-(NFSSに基づく)新しい命令群が標準となり、
+NFSS方式の新しい命令群が標準となり、
 古い二文字フォント命令はカーネルではもはサポートされなくなった。
 しかし同時に、二文字フォント命令を利用したパッケージを
 動作させるための“当面の”
@@ -1546,7 +1534,7 @@
 \footnote{ちなみに、
   {\LaTeXe}が最初にリリースされたのは1994年のことである。}%
 互換性対策として、
-「標準の文書クラス(article、book等)で二文字フォント命令の
+「標準の文書クラス(\Pkg{article}、\Pkg{book}等)で二文字フォント命令の
 サポートを行う」という方針がとられた。
 これに倣って、他の文書クラスの多くもクラスのレベルで
 二文字フォント命令をサポートしていて、

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	2018-04-30 22:39:09 UTC (rev 47516)
+++ trunk/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx	2018-04-30 22:40:21 UTC (rev 47517)
@@ -56,7 +56,9 @@
 %<*driver>
 \ProvidesFile{bxjscls.dtx}
 %</driver>
-  [2018/03/29 v1.8a BXJS document classes]
+  [2018/04/19 v1.9  BXJS document classes]
+% [2018/04/14 v1.8b BXJS document classes]
+% [2018/03/29 v1.8a BXJS document classes]
 % based on jsclasses [2018/03/11]
 % [2018/03/03 v1.8  BXJS document classes]
 % [2018/02/04 v1.7c BXJS document classes]
@@ -292,6 +294,7 @@
 \RequirePackage{keyval}
 %    \end{macrocode}
 % クラスの本体ではこの他に |geometry| パッケージが読み込まれる。
+% \TODO 依存パッケージの情報。
 %
 % 互換性のための補助パッケージを読み込む。
 %    \begin{macrocode}
@@ -392,6 +395,13 @@
 \fi{\endinput\@@end}
 %    \end{macrocode}
 %
+% Lua{\TeX}の場合、本クラス用のLuaモジュールを用意する。
+%    \begin{macrocode}
+\ifx l\jsEngine
+  \directlua{ bxjs = {} }
+\fi
+%    \end{macrocode}
+%
 % \begin{macro}{\bxjs at protected}
 % {\eTeX}拡張が有効な場合にのみ |\protected|
 % の効果をもつ。
@@ -511,12 +521,12 @@
 % \Note {(u)\pLaTeX}の場合はこれらの和文単位はエンジンでサポートされる。
 % しかし和文フォントの設定が完了するまでは |zw|/|zh| の値は正しくない。
 %    \begin{macrocode}
-\if j\jsEngine \def\bxjs at parse@qh at all{zw,zh}
-\else \def\bxjs at parse@qh at all{trueQ,trueH,Q,H,zw,zh}
+\if j\jsEngine \def\bxjs at parse@qh at units{zw,zh}
+\else \def\bxjs at parse@qh at units{trueQ,trueH,Q,H,zw,zh}
 \fi
 \def\bxjs at parse@qh#1{%
   \let\bxjs at tmpb\relax
-  \@for\bxjs at tmpa:=\bxjs at parse@qh at all\do{%
+  \@for\bxjs at tmpa:=\bxjs at parse@qh at units\do{%
     \ifx\bxjs at tmpb\relax
       \edef\bxjs at next{{\bxjs at tmpa}{#1}}%
       \expandafter\bxjs at parse@qh at a\csname bxjs at unit@\bxjs at tmpa\expandafter
@@ -543,6 +553,31 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\bxjs at begin@document at hook}
+% BXJSクラス用の文書本体開始時フック。
+%    \begin{macrocode}
+\@onlypreamble\bxjs at begin@document at hook
+\let\bxjs at begin@document at hook\@empty
+\AtBeginDocument{\bxjs at begin@document at hook}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs at post@option at hook}
+% |\ProcessOptions| 直後に実行されるフック。
+%    \begin{macrocode}
+\@onlypreamble\bxjs at post@option at hook
+\let\bxjs at post@option at hook\@empty
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs at pre@jadriver at hook}
+% 和文ドライバ読込直前に実行されるフック。
+%    \begin{macrocode}
+\@onlypreamble\bxjs at pre@jadriver at hook
+\let\bxjs at pre@jadriver at hook\@empty
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\jsAtEndOfClass}
 % このクラスの読込終了時に対するフック。
 % (補助パッケージ中で用いられる。)
@@ -552,6 +587,15 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% 一時的な手続き用の制御綴。
+%    \begin{macrocode}
+\@onlypreamble\bxjs at tmpdo
+\@onlypreamble\bxjs at tmpdo@a
+\@onlypreamble\bxjs at tmpdo@b
+\@onlypreamble\bxjs at tmpdo@c
+\@onlypreamble\bxjs at tmpdo@d
+%    \end{macrocode}
+%
 % Lua\TeX の場合、原版のコード中のコントロールワード中に現れる
 % 日本語文字のカテゴリコードを一時的に11に変更する。
 % クラス読込終了時点で元に戻される。
@@ -561,16 +605,14 @@
 % コントロールワードの命令を使用するには、カテゴリコードを11に
 % 変更する必要がある。
 %    \begin{macrocode}
-\@onlypreamble\bxjs at restore@jltrcc
-\let\bxjs at restore@jltrcc\@empty
 \if l\jsEngine
-\def\bxjs at change@jltrcc#1{%
-  \xdef\bxjs at restore@jltrcc{%
-    \bxjs at restore@jltrcc
+\def\bxjs at tmpdo#1{%
+  \xdef\bxjs at pre@jadriver at hook{%
+    \bxjs at pre@jadriver at hook
     \catcode`#1=\the\catcode`#1\relax}%
   \catcode`#1=11\relax}
-\@tfor\bxjs at x:=西暦\do
-  {\expandafter\bxjs at change@jltrcc\bxjs at x}
+\@tfor\bxjs at tmpa:=和西暦\do
+  {\expandafter\bxjs at tmpdo\bxjs at tmpa}
 \fi
 %    \end{macrocode}
 %
@@ -696,6 +738,7 @@
 % BXJSクラスではページレイアウト設定に |geometry| パッケージを用いる。
 % 用紙サイズ設定は |geometry| に渡すオプションの指定と扱われる。
 %    \begin{macrocode}
+\@onlypreamble\bxjs at setpaper
 \def\bxjs at setpaper#1{\def\bxjs at param@paper{#1}}
 \DeclareOption{a3paper}{\bxjs at setpaper{a3paper}}
 \DeclareOption{a4paper}{\bxjs at setpaper{a4paper}}
@@ -1079,7 +1122,7 @@
   \expandafter\let\expandafter\ifjsDraft\csname if#1\endcsname}
 \DeclareOption{draft}{\bxjs at draft{true}\setlength\overfullrule{5pt}}
 \DeclareOption{final}{\bxjs at draft{false}\setlength\overfullrule{0pt}}
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \expandafter\ifx\csname ifdraft\endcsname\relax
     \expandafter\let\csname ifdraft\expandafter\endcsname
      \csname ifjsDraft\endcsname
@@ -1132,6 +1175,10 @@
 %
 % オプション \texttt{english} を新設しました。
 %
+% \begin{ZRnote}
+% \Note |\if at english| は非ユニークで衝突耐性がない。
+% \end{ZRnote}
+%
 %    \begin{macrocode}
 \newif\if at english
 \@englishfalse
@@ -1165,53 +1212,10 @@
 \DeclareOption{nojslogo}{\@jslogofalse}
 %    \end{macrocode}
 %
-% \paragraph{BXJS特有のオプションの一覧 \ZRX}
+% \paragraph{複合設定オプション \ZRX}
 % \mbox{}
-% \begin{ZRnote}
-% \begin{itemize}
-% \item エンジンオプション: |xelatex| 等。
-% \item ドライバオプション: |dvipdfmx| 等。
-% \item 複合設定オプション: |pandoc| 等。
-% \item |nopapersize| : |papersize|(既定で有効)の否定。
-% \item |zw|/|nozw| : |\jsZw| と等価な命令として |\zw| を
-%   定義する/しない。
-% \item |js|/|nojs| : JSクラスを読込済として扱う/扱わない。
-% \item |precisetext|/|noprecisetext| : {\XeTeX}の``generateactualtext''を
-%    有効/無効にする。
-% \item |simplejasetup|/|nosimplejasetup| : {\XeTeX}の``linebreaklocale''を
-%    有効/無効にする。
-% \item |bigcode|/|nobigcode| : {\upTeX}でCMapとして |UTF8-UCS2| の
-%    代わりに |UTF8-UTF16| を使う/使わない。
-% \item |oldfontcommands|/|nooldfontcommands| : 古い“二文字フォント命令”
-%    に対する警告を抑止する/しない。
-% \item |base=|\meta{dimen} : 基底フォントサイズを直接指定する。
-%   (|xxpt| オプションの代用なので、既定値は10\,ptである。)
-% \item |jbase=|\meta{dimen} : 基底フォントサイズを“和文規準で”
-%   直接指定する。
-% \item |scale=|\meta{real} : 和文フォントのスケールを表すマクロ |\jsScale|
-%   の値を設定する。
-%   もちろんこの値を何らかの方法で和文処理モジュールに渡さないと意味を成さない。
-%   既定値は 0.924715(= 13\,Q/10\,pt)。
-% \item |noscale| : |scale=1| と等価。
-% \item |mag=|\meta{int} : |\mag| 値の直接設定。既定は |base| から算出する。
-% \item |paper={|\meta{dimen:width}|}{|\meta{dimen:height}|}| : 用紙サイズ設定。
-%   用紙サイズオプションの代用で、既定値は |a4paper| 相当。
-% \item |ja=|\meta{name} : 使用する和文ドライバの指定。
-% \item |jafont=|\meta{name} : 和文フォントプリセットの指定。
-% \item |japaram=|\meta{name} : 和文フォントパラメタの指定。
-% \item |magstyle=|\meta{name} : “版面拡大”の実現方法の選択。
-% \item |dvi=|\meta{name} : DVIモードの時のみに参照されるドライバ指定。
-% \item |geometry=|\{|class|\OR|user|\} : |geometry| パッケージの読込を自動的に
-%   行うかユーザに任せるか。
-% \item |fancyhdr=|\meta{bool} : |fancyhdr| パッケージ用の調整を行うか。
-% \item |layout=|\meta{name} : レイアウト変種の指定。
-% \item |textwidth-limit=|\meta{number} : |bxjsbook| における、
-%   |\textwidth| の上限の全角単位での値。
-% \item |paragraph-mark=|\meta{char} : パラグラフのマーク。
-% \item |whole-zw-lines=|\meta{bool} : 行長を全角単位に丸めるか。
-% \item |hyperref-enc=|\meta{bool} : |hyperref| の文字コード指定補正を行うか。
-% \end{itemize}
-%
+% \TODO |\bxjs at invscale| を書く場所を決める。
+% (JSクラスと同じにはできなそう。)
 % \begin{macro}{\bxjs at invscale}
 % |\bxjs at invscale| は{\TeX}における「長さのスケール」の逆関数を求めるもの。
 % 例えば |\bxjs at invscale\dimX{1.3}| は |\dimX=1.3\dimX| の
@@ -1249,10 +1253,6 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \end{ZRnote}
-%
-% \paragraph{複合設定オプション \ZRX}
-% \mbox{}
 % \begin{ZRnote}
 % 複合設定オプションとは、
 % 「エンジンやドライバや和文ドライバの設定を含む、
@@ -1261,13 +1261,6 @@
 % ある特定の設定を短く書く必要性が高いと判断される場合に
 % 用意される。
 %
-% \begin{macro}{\bxjs at composite@proc}
-% 複合設定オプションのための遅延処理マクロ。
-%    \begin{macrocode}
-\let\bxjs at composite@proc\relax
-%    \end{macrocode}
-% \end{macro}
-%
 % |pandoc| オプションは、Pandocで{\LaTeX}用の既定テンプレートを
 % 用いて他形式から{\LaTeX}(およびPDF)形式に変換する用途に
 % 最適化した設定を与える。
@@ -1278,7 +1271,7 @@
 % 変更する。
 % \Note 実際の和文ドライバ・エンジン設定より優先される。
 %    \begin{macrocode}
-  \def\bxjs at composite@proc{%
+  \g at addto@macro\bxjs at post@option at hook{%
     \bxjs at oldfontcommandstrue
     \setkeys{bxjs}{ja=pandoc}%
     \let\bxjs at engine@given=*}%
@@ -1408,70 +1401,7 @@
 % \paragraph{その他のBXJS独自オプション \ZRX}
 % \mbox{}
 % \begin{ZRnote}
-% \begin{macro}{\ifbxjs at usezw}
-% |\jsZw| の同義語として |\zw| を使えるようにするか。
-% 既定は真。
-%    \begin{macrocode}
-\newif\ifbxjs at usezw \bxjs at usezwtrue
-%    \end{macrocode}
-% \end{macro}
-%
-% |zw|、|nozw| オプションの定義。
-%    \begin{macrocode}
-\DeclareOption{nozw}{%
-  \bxjs at usezwfalse}
-\DeclareOption{zw}{%
-  \bxjs at usezwtrue}
-%    \end{macrocode}
-%
-% \begin{macro}{\ifbxjs at disguise@js}
-% JSクラスの派生クラスのふりをするか。
-% 既定は真。
-%    \begin{macrocode}
-\newif\ifbxjs at disguise@js \bxjs at disguise@jstrue
-%    \end{macrocode}
-% \end{macro}
-%
-% |nojs|、|js| オプションの定義。
-%    \begin{macrocode}
-\DeclareOption{nojs}{%
-  \bxjs at disguise@jsfalse}
-\DeclareOption{js}{%
-  \bxjs at disguise@jstrue}
-%    \end{macrocode}
-%
-% \begin{macro}{\ifbxjs at precisetext}
-% {\XeTeX}の``generateactualtext''を有効にするか。
-% 既定は偽。
-%    \begin{macrocode}
-\newif\ifbxjs at precisetext
-%    \end{macrocode}
-% \end{macro}
-%
-% |noprecisetext|/|precisetext| オプションの定義。
-%    \begin{macrocode}
-\DeclareOption{noprecisetext}{%
-  \bxjs at precisetextfalse}
-\DeclareOption{precisetext}{%
-  \bxjs at precisetexttrue}
-%    \end{macrocode}
-%
-% \begin{macro}{\ifbxjs at simplejasetup}
-% {\XeTeX}の``linebreaklocale''を有効にするか。
-% 既定は真(であるが多くの場合は後に無効化される)。
-%    \begin{macrocode}
-\newif\ifbxjs at simplejasetup \bxjs at simplejasetuptrue
-%    \end{macrocode}
-% \end{macro}
-%
-% |nosimplejasetup|/|simplejasetup| オプションの定義。
-%    \begin{macrocode}
-\DeclareOption{nosimplejasetup}{%
-  \bxjs at simplejasetupfalse}
-\DeclareOption{simplejasetup}{%
-  \bxjs at simplejasetuptrue}
-%    \end{macrocode}
-%
+% \TODO 互換用オプションを分離する(2.0版で?)。
 % \begin{macro}{\ifbxjs at bigcode}
 % {\upTeX}で有効化するToUnicode CMapとして
 % 「|UTF8-UCS2|」の代わりに「|UTF8-UTF16|」を使うか。
@@ -1525,25 +1455,55 @@
 % \paragraph{keyval型のオプション \ZRX}
 % \mbox{}
 % \begin{ZRnote}
+% その他のオプションは |keyval| の機構を用いて処理する。
 %    \begin{macrocode}
-\def\bxjs at setkey{%
-  \expandafter\bxjs at setkey@a\expandafter{\CurrentOption}}
-\def\bxjs at setkey@a{\bxjs at safe@setkeys{bxjs}}
-\DeclareOption*{\bxjs at setkey}
+\DeclareOption*{%
+  \def\bxjs at next{\bxjs at safe@setkeys{bxjs}}%
+  \expandafter\bxjs at next\expandafter{\CurrentOption}}
 %    \end{macrocode}
 %
 % \begin{macro}{\bxjs at safe@setkeys}
 % 未知のキーに対してエラー無しで無視する |\setkeys|。
+% \Note ネスト不可。
 %    \begin{macrocode}
 \def\bxjs at safe@setkeys#1#2{%
-  \let\bxjs at KV@errx\KV at errx
-  \let\KV at errx\bxjs at safe@setkeys at a
+  \let\bxjs at save@KV at errx\KV at errx \let\KV at errx\@gobble
   \setkeys{#1}{#2}%
-  \let\KV at errx\bxjs at KV@errx}
-\def\bxjs at safe@setkeys at a#1{}
+  \let\KV at errx\bxjs at save@KV at errx}
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\bxjs at declare@enum at option}
+% |\bxjs at declare@enum at option{|\Meta{オプション名}|}{|\Meta{enum名}|}|\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{%
+  \define at key{bxjs}{#1}{%
+    \expandafter\ifx\csname bxjs@#2@@##1\endcsname\relax
+      \bxjs at error@keyval{#1}{##1}%
+    \else \bxjs at csletcs{bxjs@#2}{bxjs@#2@@##1}%
+    \fi}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs at declare@bool at option}
+% |\bxjs at declare@bool at option{|\Meta{オプション名}|}{|\Meta{スイッチ名}|}|\par
+% “\Meta{オプション名}|=|\Meta{真偽値}”のオプション指定に対して、
+% |\if|[|bxjs@|\Meta{スイッチ名}] を設定する、という動作を規定する。
+%    \begin{macrocode}
+\@onlypreamble\bxjs at declare@bool at option
+\def\bxjs at declare@bool at option#1#2{%
+  \define at key{bxjs}{#1}[true]{%
+    \expandafter\ifx\csname bxjs@#2##1\endcsname\relax
+      \bxjs at error@keyval{#1}{##1}%
+    \else \@nameuse{bxjs@#2##1}%
+    \fi}}
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\bxjs at set@keyval}
 % |\bxjs at set@keyval{|\meta{key}|}{|\meta{value}|}{|\meta{error}|}|\par
 % |\bxjs at kv@|\meta{key}|@|\meta{value} が定義済ならそれを実行し、
@@ -1572,7 +1532,7 @@
 % \end{macro}
 %
 % \begin{macro}{\bxjs at base@opt}
-% |base| オプションの値(そのもの)。
+% 明示された |base| オプションの値。
 %    \begin{macrocode}
 %\let\bxjs at base@opt\@undefined
 %    \end{macrocode}
@@ -1587,7 +1547,7 @@
 %    \end{macrocode}
 %
 % \begin{macro}{\bxjs at jbase@opt}
-% |jbase| オプションの値。
+% 明示された |jbase| オプションの値。
 %    \begin{macrocode}
 %\let\bxjs at jbase@opt\@undefined
 %    \end{macrocode}
@@ -1600,9 +1560,9 @@
 %    \end{macrocode}
 %
 % \begin{macro}{\bxjs at scale@opt}
-% |scale| オプションの値。
+% 明示された |scale| オプションの値。
 %    \begin{macrocode}
-%\let\bxjs at jbase@opt\@undefined
+%\let\bxjs at scale@opt\@undefined
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1640,7 +1600,7 @@
 % 和文ドライバの名前。
 %    \begin{macrocode}
 \let\bxjs at jadriver\relax
-%\let\bxjs at jadriver@given\@undefined
+%\let\bxjs at jadriver@opt\@undefined
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1648,9 +1608,9 @@
 % \Note |jadriver| は0.9版で用いられた旧称。
 % \Note 単なる |ja| という指定は無視される(Pandoc 対策)。
 %    \begin{macrocode}
-\define at key{bxjs}{jadriver}{\edef\bxjs at jadriver{#1}}
+\define at key{bxjs}{jadriver}{\edef\bxjs at jadriver@opt{#1}}
 \define at key{bxjs}{ja}[\relax]{%
-  \ifx\relax#1\else\edef\bxjs at jadriver{#1}\fi}
+  \ifx\relax#1\else\edef\bxjs at jadriver@opt{#1}\fi}
 %    \end{macrocode}
 %
 % \begin{macro}{\jsJaFont}
@@ -1824,11 +1784,10 @@
 %
 % \begin{macro}{\bxjs at textwidth@limit}
 % |textwidth-limit| の指定値。
-% |\textwidth| の上限。
 %    \begin{macrocode}
-%\let\bxjs at textwidth@limit\@undefined
+%\let\bxjs at textwidth@limit at opt\@undefined
 \define at key{bxjs}{textwidth-limit}{%
-  \edef\bxjs at textwidth@limit{#1}}
+  \edef\bxjs at textwidth@limit at opt{#1}}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1933,6 +1892,46 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\ifbxjs at usezw}
+% 〔スイッチ〕 |use-zw| の指定値。
+%    \begin{macrocode}
+\newif\ifbxjs at usezw \bxjs at usezwtrue
+\bxjs at declare@bool at option{use-zw}{usezw}
+\DeclareOption{nozw}{\setkeys{bxjs}{use-zw=false}}
+\DeclareOption{zw}{\setkeys{bxjs}{use-zw=true}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs at disguise@js}
+% 〔スイッチ〕 |disguise-js| の指定値。
+%    \begin{macrocode}
+\newif\ifbxjs at disguise@js \bxjs at disguise@jstrue
+\bxjs at declare@bool at option{disguise-js}{disguise at js}
+\DeclareOption{nojs}{\setkeys{bxjs}{disguise-js=false}}
+\DeclareOption{js}{\setkeys{bxjs}{disguise-js=true}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs at precisetext}
+% 〔スイッチ〕 |precise-text| の指定値。
+%    \begin{macrocode}
+\newif\ifbxjs at precisetext
+\bxjs at declare@bool at option{precise-text}{precisetext}
+\DeclareOption{noprecisetext}{\setkeys{bxjs}{precise-text=false}}
+\DeclareOption{precisetext}{\setkeys{bxjs}{precise-text=true}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs at simplejasetup}
+% 〔スイッチ〕 |simple-ja-setup| の指定値。
+%    \begin{macrocode}
+\newif\ifbxjs at simplejasetup \bxjs at simplejasetuptrue
+\bxjs at declare@bool at option{simple-ja-setup}{simplejasetup}
+\DeclareOption{nosimplejasetup}{\setkeys{bxjs}{simple-ja-setup=false}}
+\DeclareOption{simplejasetup}{\setkeys{bxjs}{simple-ja-setup=true}}
+%    \end{macrocode}
+% \end{macro}
+%
 % \end{ZRnote}
 %
 % \paragraph{オプションの実行}
@@ -1945,11 +1944,11 @@
 % \Note クラスに |\DeclareOption*| がある場合は |\@unusedoptions|
 % は常に空のままであることを利用している。
 %    \begin{macrocode}
-\let\bxjs at ltx@removeelement\@removeelement
+\let\bxjs at org@removeelement\@removeelement
 \def\@removeelement#1#2#3{%
   \def\reserved at a{#2}%
   \ifx\reserved at a\@empty \let#3\@empty
-  \else \bxjs at ltx@removeelement{#1}{#2}{#3}%
+  \else \bxjs at org@removeelement{#1}{#2}{#3}%
   \fi}
 %    \end{macrocode}
 %
@@ -1964,7 +1963,7 @@
 %<report>\ExecuteOptions{a4paper,oneside,onecolumn,titlepage,openany,final}
 %<slide>\ExecuteOptions{36pt,a4paper,landscape,oneside,onecolumn,titlepage,final}
 \ProcessOptions\relax
-\bxjs at composite@proc
+\bxjs at post@option at hook
 %    \end{macrocode}
 %
 % 後処理
@@ -1989,24 +1988,20 @@
 % (|\ProcessOptions*| がエラーになる)。
 % 従って、このようなオプションは除外することにする。
 %    \begin{macrocode}
-\@onlypreamble\bxjs at purge@brace at elts
-\def\bxjs at purge@brace at elts{%
+\def\bxjs at tmpdo{%
   \def\bxjs at tmpa{\@gobble}%
-  \expandafter\bxjs at purge@be at a\@classoptionslist,\@nil,%
+  \expandafter\bxjs at tmpdo@a\@classoptionslist,\@nil,%
   \let\@classoptionslist\bxjs at tmpa}
-\@onlypreamble\bxjs at purge@be at a
-\def\bxjs at purge@be at a#1,{%
+\def\bxjs at tmpdo@a#1,{%
   \ifx\@nil#1\relax\else
-    \bxjs at purge@be at b#1{}\@nil
+    \bxjs at tmpdo@b#1{}\@nil
     \if at tempswa \edef\bxjs at tmpa{\bxjs at tmpa,#1}\fi
-    \expandafter\bxjs at purge@be at a
+    \expandafter\bxjs at tmpdo@a
   \fi}
-\@onlypreamble\bxjs at purge@be at b
-\def\bxjs at purge@be at b#1#{\bxjs at purge@be at c}
-\@onlypreamble\bxjs at purge@be at c
-\def\bxjs at purge@be at c#1\@nil{%
+\def\bxjs at tmpdo@b#1#{\bxjs at tmpdo@c}
+\def\bxjs at tmpdo@c#1\@nil{%
   \ifx\@nil#1\@nil \@tempswatrue \else \@tempswafalse \fi}
-\bxjs at purge@brace at elts
+\bxjs at tmpdo
 %    \end{macrocode}
 %
 % |papersize|、|10pt|、|noscale| の各オプションは他のパッケージと衝突を
@@ -2043,11 +2038,10 @@
 %
 % \begin{ZRnote}
 %
-% 現在の(正規化前の)和文ドライバの値を\
-% |\bxjs at jadriver@given| に保存する。
+% 正規化前の和文ドライバの値を |\bxjs at jadriver| に設定する。
 %    \begin{macrocode}
-\ifx\bxjs at jadriver\relax\else
-  \let\bxjs at jadriver@given\bxjs at jadriver
+\ifx\bxjs at jadriver@opt\@undefined\else
+  \let\bxjs at jadriver\bxjs at jadriver@opt
 \fi
 %    \end{macrocode}
 %
@@ -2142,7 +2136,7 @@
 % \Note ただし |ja| 非指定の場合はスキップする
 % (0.3 版との互換性のため)。
 %    \begin{macrocode}
-  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@given\@undefined\else
+  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@opt\@undefined\else
     \ClassWarningNoLine\bxjs at clsname
     {No driver option is given}
   \fi\fi
@@ -2152,12 +2146,12 @@
 % (グローバルオプションに |XXX| を追加する。)
 %    \begin{macrocode}
   \ifbxjs at dvi@opt
-    \edef\bxjs at nxt{%
+    \edef\bxjs at next{%
       \let\noexpand\bxjs at driver@given
        \csname bxjs at dvidriver@@\bxjs at driver@opt\endcsname
       \noexpand\g at addto@macro\noexpand\@classoptionslist
        {,\bxjs at driver@opt}%
-    }\bxjs at nxt
+    }\bxjs at next
   \fi
 \fi
 %    \end{macrocode}
@@ -2204,7 +2198,7 @@
 % エンジンオプションがない場合はエラーを出す。
 % \Note ただし |ja| 非指定の場合はスキップする。
 %    \begin{macrocode}
-\ifx\bxjs at jadriver@given\@undefined\else
+\ifx\bxjs at jadriver@opt\@undefined\else
   \ifx\bxjs at engine@given\@undefined
     \ClassError\bxjs at clsname
      {An engine option must be explicitly given}%
@@ -2421,13 +2415,6 @@
 \expandafter\bxjs at tmpa\the\@tempcnta\@nil
 \edef\jsc at magscale{\strip at pt\@tempdima}
 \let\jsBaseFontSize\bxjs at param@basefontsize
-%\typeout{\string\jsDocClass: \meaning\jsDocClass}
-%\typeout{\string\jsEngine: \meaning\jsEngine}
-%\typeout{\string\jsBaseFontSize: \jsBaseFontSize}
-%\typeout{\string\bxjs at param@mag: \bxjs at param@mag}
-%\typeout{\string\jsc at magscale: \jsc at magscale}
-%\typeout{\string\ifjsc at mag: \meaning\ifjsc at mag}
-%\typeout{\string\ifjsc at mag@xreal: \meaning\ifjsc at mag@xreal}
 %    \end{macrocode}
 % \end{ZRnote}
 %
@@ -2455,6 +2442,7 @@
   \catcode`\?=11 \let\p@?\jsc at mpt
 \fi
 \chardef\bxjs at qmcc=\catcode`\?\relax
+\g at addto@macro\bxjs at pre@jadriver at hook{\catcode`\?=12\relax}
 %    \end{macrocode}
 %
 % ここで{p\TeX}のzwに相当する単位として用いる長さ変数 |\jsZw| を作成する。
@@ -2780,10 +2768,10 @@
   \skip4=\belowdisplayskip
   \skip6=\belowdisplayshortskip
 % 一時的に警告を無効化する
-  \let\bxjs at ltx@nomath\@nomath
+  \let\bxjs at save@nomath\@nomath
   \let\@nomath\@gobble
   \@currsize\selectfont
-  \let\@nomath\bxjs at ltx@nomath
+  \let\@nomath\bxjs at save@nomath
   \abovedisplayskip=\skip0
   \abovedisplayshortskip=\skip2
   \belowdisplayskip=\skip4
@@ -3165,6 +3153,16 @@
 % \paragraph{準備 \ZRX}
 % \mbox{}
 % \begin{ZRnote}
+%
+% \begin{macro}{\bxjs at bd@pre at geometry@hook}
+% begin-documentフックのコード内で、|geometry| パッケージが挿入する
+% コードの直前で実行されるフック。
+%    \begin{macrocode}
+\@onlypreamble\bxjs at bd@pre at geometry@hook
+\let\bxjs at bd@pre at geometry@hook\@empty
+%    \end{macrocode}
+% \end{macro}
+%
 % 現状ではここで |\mag| を設定している。\par
 % |\topskip| も指定する。
 %    \begin{macrocode}
@@ -3183,15 +3181,15 @@
 % |\bxjs at param@paper| が長さ指定(|{W}{H}|)の場合、
 % |geometry| の形式(|papersize={W,H}|)に変換する。
 %    \begin{macrocode}
-\def\bxjs at read@a{\futurelet\bxjs at tmpa\bxjs at read@b}
-\def\bxjs at read@b{%
-  \ifx\bxjs at tmpa\bgroup \expandafter\bxjs at read@c
-  \else \expandafter\bxjs at read@d \fi}
-\def\bxjs at read@c#1#2#3\@nil{\edef\bxjs at param@paper{papersize={#1,#2}}}
-\def\bxjs at read@d#1\@nil{\bxjs at read@e#1,,\@nil}
-\def\bxjs at read@e#1,#2,#3\@nil{%
+\def\bxjs at tmpdo{\futurelet\bxjs at tmpa\bxjs at tmpdo@a}
+\def\bxjs at tmpdo@a{%
+  \ifx\bxjs at tmpa\bgroup \expandafter\bxjs at tmpdo@b
+  \else \expandafter\bxjs at tmpdo@c \fi}
+\def\bxjs at tmpdo@b#1#2#3\@nil{\edef\bxjs at param@paper{papersize={#1,#2}}}
+\def\bxjs at tmpdo@c#1\@nil{\bxjs at tmpdo@d#1,,\@nil}
+\def\bxjs at tmpdo@d#1,#2,#3\@nil{%
   \ifx\@nil#3\@nil\else \edef\bxjs at param@paper{papersize={#1,#2}}\fi}
-\expandafter\bxjs at read@a\bxjs at param@paper\@empty\@empty\@nil
+\expandafter\bxjs at tmpdo\bxjs at param@paper\@empty\@empty\@nil
 %    \end{macrocode}
 %
 % \begin{macro}{\bxjs at layout@paper}
@@ -3269,21 +3267,47 @@
 \newdimen\fullwidth
 %    \end{macrocode}
 % \end{macro}
-% 
+%
+% \begin{macro}{\bxjs at textwidth@limit}
+% 〔寸法値マクロ〕
+% |bxjsbook| における、|\textwidth| 上限の値。
+%
 % \begin{macro}{\jsTextWidthLimit}
 % 〔実数値マクロ〕
-% |bxjsbook| における、|\textwidth| の上限の全角単位での値。
+% |\bxjs at textwidth@limit| の全角(|\Cwd|)単位での値。
 %    \begin{macrocode}
 %<*book>
 \newcommand\jsTextWidthLimit{40}
-\ifx\bxjs at textwidth@limit\@undefined\else
-  \bxjs at gset@tempcnta{\bxjs at textwidth@limit}
-  \long\edef\jsTextWidthLimit{\the\@tempcnta}
+\@tempdima=\jsTextWidthLimit\Cwd
+\ifx\bxjs at textwidth@limit at opt\@undefined\else
+  \bxjs at gset@tempcnta{\bxjs at textwidth@limit at opt}
+  \@tempdima=\@tempcnta\Cwd
 \fi
+\ifx\bxjs at textwidth@opt\@undefined\else
+  \jsSetQHLength\@tempdima{\bxjs at textwidth@opt}
+\fi
+\edef\bxjs at textwidth@limit{\the\@tempdima}
+\ifdim\@tempdima=\jsTextWidthLimit\Cwd\else
+  \bxjs at invscale\@tempdima{\strip at pt\Cwd}
+  \long\edef\jsTextWidthLimit{\strip at pt\@tempdima}
+\fi
 %</book>
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
 %
+% \begin{macro}{\bxjs at preproc@layout}
+% |geometry| の前処理。
+%
+% |geometry| は |\topskip| が標準の行高(|\ht\strutbox|)より小さくならない
+% ようにする自動調整を行うが、これをどうするかは未検討。
+% 今のところ、単純に回避(無効化)している。
+%    \begin{macrocode}
+\def\bxjs at preproc@layout{%
+  \edef\bxjs at save@ht at strutbox{\the\ht\strutbox}\ht\strutbox=10\jsc at mpt}
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\bxjs at postproc@layout}
 % |geometry| の後処理。
 %    \begin{macrocode}
@@ -3295,6 +3319,10 @@
     \let\Gm at driver\bxjs at geometry@driver
   \fi
 %    \end{macrocode}
+% |\ht\strutbox| の値を元に戻す。
+%    \begin{macrocode}
+  \ht\strutbox=\bxjs at save@ht at strutbox\relax
+%    \end{macrocode}
 % |\textwidth| の値を補正する。
 %    \begin{macrocode}
   \ifbxjs at whole@zw at lines
@@ -3312,13 +3340,10 @@
 % して扱い、その値から実際の |\textwidth| を導出する。
 %    \begin{macrocode}
 %<*book>
-  \@tempdima=\jsTextWidthLimit\Cwd
-  \ifx\bxjs at textwidth@opt\@undefined\else
-    \jsSetQHLength\@tempdima{\bxjs at textwidth@opt}
-    \ifbxjs at whole@zw at lines
-      \advance\@tempdima.005pt\relax
-      \divide\@tempdima\Cwd \multiply\@tempdima\Cwd
-    \fi
+  \@tempdima=\bxjs at textwidth@limit\relax
+  \ifbxjs at whole@zw at lines
+    \advance\@tempdima.005pt\relax
+    \divide\@tempdima\Cwd \multiply\@tempdima\Cwd
   \fi
   \ifdim\textwidth>\@tempdima
     \textwidth=\@tempdima
@@ -3371,26 +3396,14 @@
 % \end{macro}
 % \end{ZRnote}
 %
-% \paragraph{geometry パッケージ読込 \ZRX}
+% \paragraph{geometry パッケージを読み込む \ZRX}
 % \mbox{}
 % \begin{ZRnote}
-% |geoemtry| オプションの値に応じて分岐する。
-%
-% まずは|geometry=class|の場合。
+% |geoemtry=class| の場合に、実際に |geometry| パッケージを読みこむ。
 %    \begin{macrocode}
 \ifx\bxjs at geometry\bxjs at geometry@class
 %    \end{macrocode}
 %
-% |geometry| は |\topskip| が標準の行高(|\ht\strutbox|)より小さくならない
-% ようにする自動調整を行うが、これをどうするかは未検討。
-% 今のところ、単純に回避(無効化)している。
-%    \begin{macrocode}
-\def\bxjs at geometry@guard at on{%
-  \edef\bxjs at gg@tmp{\the\ht\strutbox}\ht\strutbox=10\jsc at mpt}
-\def\bxjs at geometry@guard at off{%
-  \ht\strutbox=\bxjs at gg@tmp\relax}
-%    \end{macrocode}
-%
 % |geometry| のドライバオプション指定。
 % |nopapersize| 指定時は、special命令出力を抑止するために
 % ドライバを |none| にする。
@@ -3414,13 +3427,12 @@
 % \Note |geometry| のbegin-documentフックにおいて、Lua{\TeX}の
 % 旧版互換を有効にする。
 %    \begin{macrocode}
-\AtBeginDocument{\bxjs at pre@geometry at hook}
+\AtBeginDocument{\bxjs at bd@pre at geometry@hook}
 \AtBeginDocument{\ImposeOldLuaTeXBehavior}
-\bxjs at geometry@guard at on
+\bxjs at preproc@layout
 \edef\bxjs at next{%
   \noexpand\RequirePackage[\bxjs at layout@paper,\bxjs at layout]{geometry}%
 }\bxjs at next
-\bxjs at geometry@guard at off
 \AtBeginDocument{\RevokeOldLuaTeXBehavior}
 %    \end{macrocode}
 %
@@ -3434,13 +3446,14 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\bxjs at pre@geometry at hook}
-% 1.2版より、|geometry| の4.x版の使用は非推奨とする。
-% \Note 将来サポートを廃止する予定。
+% |geometry| のドライバ自動判別に対する前処理。
 %    \begin{macrocode}
-\@onlypreamble\bxjs at pre@geometry at hook
-\def\bxjs at pre@geometry at hook{%
-  \@ifpackageloaded{geometry}{%
+\g at addto@macro\bxjs at bd@pre at geometry@hook{%
+%    \end{macrocode}
+% |geometry| の4.x版に関する対策。
+% \Note |geometry| の4.x版の使用はBXJS 1.2版より非推奨とし、
+% 2.0版でサポートを廃止する予定。
+%    \begin{macrocode}
     \@ifpackagelater{geometry}{2010/02/12}{}{%else
       \PackageWarningNoLine\bxjs at clsname
        {The 'geometry' package installed\MessageBreak
@@ -3449,26 +3462,19 @@
         \def\bxjs at Gm@driver{pdftex}
         \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
         \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
-      \fi\fi
-    }%
+      \fi\fi}%
+%    \end{macrocode}
+% エンジンが |platex-ng| の時は |geometry| のドライバを |pdftex| にする。
+%    \begin{macrocode}
     \ifjsWithpTeXng
       \ifx\Gm at driver\@empty
         \def\Gm at driver{pdftex}%
       \fi
-    \fi
-  }{}}
+    \fi}
 %    \end{macrocode}
-% \end{macro}
 %
 % \begin{macro}{\setpagelayout}
 % ページレイアウト設定のためのユーザ命令。
-% \begin{itemize}
-% \item |\setpagelayout{|\meta{text}|}| : 現在の geometry の設定の
-% 一部を修正する。
-% \item |\setpagelayout*{|\meta{text}|}| : 用紙以外の設定をリセットして、
-% 改めて設定を行う。
-% \end{itemize}
-% どちらも設定の後で後処理 |\bxjs at postproc@layout| を実行する。
 %    \begin{macrocode}
 \def\setpagelayout{%
   \bxjs at ifplus{\bxjs at setpagelayout@a\tw@}{%else
@@ -3481,18 +3487,20 @@
   \or% semireset(+)
     \def\bxjs at next{reset,\bxjs at layout@paper,\bxjs at layout@base,#2}%
   \fi
-  \bxjs at geometry@guard at on
+  \bxjs at preproc@layout
   \edef\bxjs at next{%
     \noexpand\geometry{\bxjs at next}%
   }\bxjs at next
-  \bxjs at geometry@guard at off
   \bxjs at postproc@layout}
 %    \end{macrocode}
 % \end{macro}
 %
-% |geometry=class|の場合の処理はここで終わり。
+% \end{ZRnote}
 %
-% 次に、|geometry=user|の場合の処理。
+% \paragraph{geometry パッケージを読み込まない \ZRX}
+% \mbox{}
+% \begin{ZRnote}
+% |geometry=user|の場合の処理。
 %    \begin{macrocode}
 \else\ifx\bxjs at geometry\bxjs at geometry@user
 %    \end{macrocode}
@@ -3503,13 +3511,11 @@
 % のままになっている場合はエラーを出す。
 % \Note |\jsUseMinimalPageLayout| は動作テスト用。
 %    \begin{macrocode}
-\AtBeginDocument{\bxjs at check@page at layout}
-\@onlypreamble\bxjs at check@page at layout
-\def\bxjs at check@page at layout{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \ifdim\textwidth=.5\maxdimen
     \ClassError\bxjs at clsname
      {Page layout is not properly set}%
-     {\@ehd}
+     {\@ehd}%
   \fi}
 \def\jsUseMinimalPageLayout{%
   \setlength{\textwidth}{6.5in}%
@@ -3526,21 +3532,19 @@
   \ClassError\bxjs at clsname
    {Command '\string\setpagelayout' is not supported,\MessageBreak
     because 'geometry' value is not 'class'}\@eha}
-%    \end{macrocode}
 %
-% |geometry=user|の場合の処理はここで終わり。
-%    \begin{macrocode}
 \fi\fi
 %    \end{macrocode}
+% \end{ZRnote}
 %
+% \paragraph{JSクラスと共通処理の開始 \ZRX}
+% \mbox{}
+% \begin{ZRnote}
 % ここからのコードは以下の点を除いて JS クラスのものを踏襲する。
 % \begin{itemize}
 % \item zw の代わりに |\jsZw| を用いる。
 % \item article/report/book/slide の切り分けの処理が異なる。
 % \end{itemize}
-% \end{ZRnote}
-%
-% \begin{ZRnote}
 % \Note diffが崩壊するのを避けるためオリジナルのコードを無効化した状態で
 % 挿入しておく。
 % \end{ZRnote}
@@ -7471,7 +7475,7 @@
 %    \begin{macrocode}
 \def\everyparhook{\jsInhibitGlueAtParTop}
 \ifnum\bxjs at everyparhook=\bxjs at everyparhook@compat
-\AtBeginDocument{\everypar{\everyparhook}}
+\g at addto@macro\bxjs at begin@document at hook{\everypar{\everyparhook}}
 \fi
 %    \end{macrocode}
 % \end{macro}
@@ -7826,6 +7830,7 @@
 % \end{ZRnote}
 %
 %    \begin{macrocode}
+\@onlypreamble\bxjs at decl@Seireki at cmds
 \@tempswafalse
 \if p\jsEngine \@tempswatrue \fi
 \if n\jsEngine \@tempswatrue \fi
@@ -7883,8 +7888,25 @@
   \def\bxjs at gengo{平成}\advance\bxjs at jayear-1988\relax
   \let\heisei\bxjs at jayear
 \else
-%  新元号対応
-%  \def\bxjs at gengo{新元号}\advance\bxjs at jayear-2018\relax
+%    \end{macrocode}
+% 現在が新元号である場合。
+% |bxwareki| とかムニャムニャとかを試してみる。
+%    \begin{macrocode}
+  \IfFileExists{bxwareki.sty}{\IfFileExists{bxwareki2019.def}{%
+    \RequirePackage{bxwareki}[]%
+    \let\bxjs at gengo\WarekiGengo
+  }{}}{}%
+  \if l\jsEngine \ifx\bxjs at gengo\@empty
+    \toks@{}
+    \directlua{pcall(function()
+      tex.toks[0] = bxjs.get_new_gengo()
+    end)}
+    \edef\bxjs at gengo{\the\toks@}
+  \fi\fi
+%    \end{macrocode}
+% 新元号が既知の場合にのみ、和暦の年を求める。
+%    \begin{macrocode}
+  \ifx\bxjs at gengo\@empty\else \advance\bxjs at jayear-2018\relax \fi
 \fi\fi\fi
 \edef\jayear{%
   \ifx\bxjs at gengo\@empty \the\bxjs at jayear\bxjs at iai
@@ -7925,7 +7947,7 @@
 % texjporg版の日本語用Babel定義ファイル(|japanese.ldf|)が読み込まれた
 % 場合に影響を受けないようにする。
 %    \begin{macrocode}
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \ifx\bbl at jpn@Seirekitrue\@undefined\else
     \bxjs at decl@Seireki at cmds
     \g at addto@macro\datejapanese{%
@@ -7969,17 +7991,17 @@
 % \mbox{}
 % \begin{ZRnote}
 %
+% フックを実行する。
+%    \begin{macrocode}
+\bxjs at pre@jadriver at hook
+%    \end{macrocode}
 % 和文ドライバのファイルを読み込む。
 %    \begin{macrocode}
-\catcode`\?=12
-\ifx\bxjs at jadriver\relax\else
 \input{bxjsja-\bxjs at jadriver.def}
-\fi
 %    \end{macrocode}
 %
-% 最後に日本語文字のカテゴリコードを元に戻す。
+% おしまい。
 %    \begin{macrocode}
-\bxjs at restore@jltrcc
 %</cls>
 %    \end{macrocode}
 %
@@ -8136,7 +8158,7 @@
 \@onlypreamble\bxjs at if@sf at default
 \def\bxjs at if@sf at default#1{%
   \ifx\familydefault\bxjs@@CSsfdefault#1\fi
-  \AtBeginDocument{%
+  \g at addto@macro\bxjs at begin@document at hook{%
     \ifx\familydefault\bxjs@@CSsfdefault#1\fi}%
 }
 %    \end{macrocode}
@@ -8310,17 +8332,17 @@
 %
 % 既に使用されている標準和文フォント定義がもしあれば取り消す。
 %    \begin{macrocode}
-\def\bxjs at tmpa#1/#2/#3/#4/#5\relax{%
-  \def\bxjs at y{#5}}
-\ifjsWithpTeXng \def\bxjs at y{10}%
+\def\bxjs at next#1/#2/#3/#4/#5\relax{%
+  \def\bxjs at tmpb{#5}}
+\ifjsWithpTeXng \def\bxjs at tmpb{10}%
 \else
-\expandafter\expandafter\expandafter\bxjs at tmpa
+\expandafter\expandafter\expandafter\bxjs at next
  \expandafter\string\the\jfont\relax
 \fi
-\@for\bxjs at x:={\jsc at JYn/mc/m/n,\jsc at JYn/gt/m/n,%
+\@for\bxjs at tmpa:={\jsc at JYn/mc/m/n,\jsc at JYn/gt/m/n,%
                \jsc at JTn/mc/m/n,\jsc at JTn/gt/m/n}\do
-  {\expandafter\let\csname\bxjs at x/10\endcsname=\@undefined
-   \expandafter\let\csname\bxjs at x/\bxjs at y\endcsname=\@undefined}
+  {\expandafter\let\csname\bxjs at tmpa/10\endcsname=\@undefined
+   \expandafter\let\csname\bxjs at tmpa/\bxjs at tmpb\endcsname=\@undefined}
 %    \end{macrocode}
 %
 % \paragraph{和文フォントスケールの補正}
@@ -8403,7 +8425,8 @@
 \selectfont
 %    \end{macrocode}
 %
-% |\bxjs at parse@qh| の処理は不要になるので無効化する。
+% |\bxjs at parse@qh| の処理は{\pTeX}系では不要になるので無効化する
+% (つまり |\jsSetQHLength| は |\setlength| と等価になる)。
 %    \begin{macrocode}
 \def\bxjs at parse@qh#1{\let\bxjs at tmpb\relax}
 \let\bxjs at parse@qh at a\@undefined
@@ -8506,7 +8529,7 @@
     \relax}%
   \let\bxjs at cjk@loaded\relax
 }
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \@ifpackageloaded{CJK}{%
     \bxjs at cjk@loaded
   }{}%
@@ -8537,6 +8560,7 @@
 % \begin{macro}{\bxjs at do@precisetext}
 % |precisetext| オプションの処理。
 %    \begin{macrocode}
+\@onlypreamble\bxjs at do@precisetext
 \ifx\XeTeXgenerateactualtext\@undefined\else
   \def\bxjs at do@precisetext{%
     \XeTeXgenerateactualtext=\@ne}
@@ -8576,7 +8600,7 @@
 % |simplejasetup| オプションの処理。
 %    \begin{macrocode}
 \ifx\bxjs at do@simplejasetup\@undefined\else
-  \AtBeginDocument{%
+  \g at addto@macro\bxjs at begin@document at hook{%
     \ifbxjs at simplejasetup
       \bxjs at do@simplejasetup
     \fi}
@@ -8588,8 +8612,8 @@
 \ifbxjs at precisetext
   \ifx\bxjs at do@precisetext\@undefined
     \ClassWarning\bxjs at clsname
-     {The current engine does not supprt the\MessageBreak
-      'precisetext' option\@gobble}
+     {The current engine does not support the\MessageBreak
+      'precise-text' option\@gobble}
   \else
     \bxjs at do@precisetext
   \fi
@@ -8598,13 +8622,11 @@
 %
 % \paragraph{段落頭でのグルー挿入禁止}
 %
-% \begin{macro}{\bxjs at check@everyparhook}
 % 本体開始時において |\everyparhook| を検査して、
 % “結局何もしない”ことになっている場合は、
 % 副作用を完全に無くすために |\everyparhook| を空にする。
 %    \begin{macrocode}
-\@onlypreamble\bxjs at check@everyparhook
-\def\bxjs at check@everyparhook{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \ifx\jsInhibitGlueAtParTop\@empty
     \def\bxjs at tmpa{\jsInhibitGlueAtParTop}%
     \ifx\everyparhook\bxjs at tmpa
@@ -8611,9 +8633,7 @@
       \let\everyparhook\@empty
     \fi
   \fi}
-\AtBeginDocument{\bxjs at check@everyparhook}
 %    \end{macrocode}
-% \end{macro}
 %
 % |everyparhook=modern| の場合の、|\everyparhook| の有効化の実装。
 % \Note 本体開始時ではなく最初から有効化していることに注意。
@@ -8707,7 +8727,7 @@
 % begin-document フック。
 % \Note これ以降に |fancyhdr| が読み込まれることはあり得ない。
 %    \begin{macrocode}
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \bxjs at pagestyle@hook
   \global\let\bxjs at pagestyle@hook\relax}
 %    \end{macrocode}
@@ -9278,7 +9298,7 @@
 %    \begin{macrocode}
 \@onlypreamble\jsCheckHyperrefUnicode
 \let\jsCheckHyperrefUnicode\@empty
-\AtBeginDocument{\jsCheckHyperrefUnicode}
+\g at addto@macro\bxjs at begin@document at hook{\jsCheckHyperrefUnicode}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -9311,7 +9331,7 @@
 \@onlypreamble\bxjs at urgent@special
 \def\bxjs at urgent@special#1{%
   \AtBeginDvi{\special{#1}}%
-  \AtBeginDocument{%
+  \g at addto@macro\bxjs at begin@document at hook{%
     \@ifpackageloaded{atbegshi}{%
       \begingroup
         \toks\z@{\special{#1}}%
@@ -9326,10 +9346,14 @@
 %
 % \begin{macro}{\bxjs at resolve@jafont at paren}
 % |jafont|パラメタ値内の|()|を解決する。
+% |\bxjs at resolve@jafont at paren\CS| で、|\CS| の内容中の |(...)|
+% を |\bxjs at jafont@paren{...}| に置き換える。
 %    \begin{macrocode}
+\@onlypreamble\bxjs at resolve@jafont at paren
 \def\bxjs at resolve@jafont at paren#1{%
   \def\bxjs at tmpb{\let#1}%
   \expandafter\bxjs at resolve@jafont at paren@a#1\@nil()\@nil\relax}
+\@onlypreamble\bxjs at resolve@jafont at paren@a
 \def\bxjs at resolve@jafont at paren@a#1(#2)#3\@nil#4\relax{%
   \ifx\relax#4\relax \bxjs at tmpb\jsJaFont
   \else
@@ -9452,16 +9476,16 @@
 %
 %    \begin{macrocode}
 \begingroup
-  \global\let\@gtempa\relax
+  \global\let\bxjs at g@tmpa\relax
   \catcode`\|=0 \catcode`\\=12
-  |def|bxjs at check#1|@nil{%
-    |bxjs at check@a#1|@nil\RequirePackage|@nnil}%
-  |def|bxjs at check@a#1\RequirePackage#2|@nnil{%
-    |ifx$#1$|bxjs at check@b#2|@nil keyval|@nnil |fi}%
+  |def|bxjs at tmpdo#1|@nil{%
+    |bxjs at tmpdo@a#1|@nil\RequirePackage|@nnil}%
+  |def|bxjs at tmpdo@a#1\RequirePackage#2|@nnil{%
+    |ifx$#1$|bxjs at tmpdo@b#2|@nil keyval|@nnil |fi}%
   |catcode`|\=0 \catcode`\|=12
-  \def\bxjs at check@b#1keyval#2\@nnil{%
+  \def\bxjs at tmpdo@b#1keyval#2\@nnil{%
     \ifx$#2$\else
-      \xdef\@gtempa{%
+      \xdef\bxjs at g@tmpa{%
         \noexpand\PassOptionsToPackage{scale=\jsScale}{otf}}%
     \fi}
 \@firstofone{%
@@ -9472,13 +9496,13 @@
   \loop\if at tempswa
     \ifeof\@inputcheck \@tempswafalse \fi
     \if at tempswa
-      \read\@inputcheck to\bxjs at line
-      \expandafter\bxjs at check\bxjs at line\@nil
+      \read\@inputcheck to\bxjs at next
+      \expandafter\bxjs at tmpdo\bxjs at next\@nil
     \fi
   \repeat
   \closein\@inputcheck
 \endgroup}
-\@gtempa
+\bxjs at g@tmpa
 %    \end{macrocode}
 %
 % \paragraph{hyperref対策}
@@ -9528,7 +9552,7 @@
   \SetSymbolFont{mincho}{bold}{\jsc at JYn}{gt}{m}{n}
   \jfam\symmincho
   \DeclareMathAlphabet{\mathgt}{\jsc at JYn}{gt}{m}{n}
-  \AtBeginDocument{%
+  \g at addto@macro\bxjs at begin@document at hook{%
     \ifx\reDeclareMathAlphabet\@undefined\else
       \reDeclareMathAlphabet{\mathrm}{\@mathrm}{\@mathmc}%
       \reDeclareMathAlphabet{\mathbf}{\@mathbf}{\@mathgt}%
@@ -9880,7 +9904,7 @@
 \DeclareRobustCommand\ttfamily
   {\not at math@alphabet\ttfamily\mathtt
    \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}
   \reDeclareMathAlphabet{\mathbf}{\mathbf}{\mathgt}%
   \reDeclareMathAlphabet{\mathsf}{\mathsf}{\mathgt}}%
@@ -10189,7 +10213,7 @@
   \ifbxjs at dlp \expandafter\bxjs at do@dupload at proc
   \else \expandafter\bxjs at org@if at ptions
   \fi {#1}{#2}{#3}}
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \let\@if at ptions\bxjs at org@if at ptions}
 \@onlypreamble\bxjs at do@dupload at proc
 \def\bxjs at do@dupload at proc#1#2#3{%
@@ -10276,7 +10300,7 @@
 % Pandocがプレアンブルで行う再定義の結果を調べるため、
 % begin-documentフックを利用する。
 %    \begin{macrocode}
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \@tempswafalse
 %    \end{macrocode}
 % まず、マーク変更が必要かを調べる。
@@ -10518,6 +10542,33 @@
     range(0x2CEA2, 0x2FFFD, 11, true)
   }\fi
 %    \end{macrocode}
+%
+% 新元号のムニャムニャ。
+%    \begin{macrocode}
+\begingroup
+  \catcode`\~=12 \let\0\relax \let\1\relax \let\2\relax
+  \directlua{
+    if not bxjs then bxjs = {} end
+    function bxjs.get_new_gengo()
+      local lc_time = nil
+      local ok, ret = pcall(function()
+        assert(os.type == "unix")
+        lc_time = os.setlocale(nil, "time")
+        assert(os.setlocale("ja_JP.utf8", "time") or
+          os.setlocale("ja_JP.UTF-8", "time"))
+        local heisei = "\229\185\179\230\136\144"
+        local kanji = "[\228-\233][\128-\191][\128-\191]"
+        local gh = os.date("\037EC", 1500000000)
+        local gn = os.date("\037EC", 1600000000)
+        assert(gh == heisei and gn ~= heisei and
+          gn:match("^"..kanji..kanji.."$"))
+        return gn
+      end)
+      os.setlocale(lc_time, "time")
+      return ok and ret or ""
+    end}
+\endgroup
+%    \end{macrocode}
 % 以上。
 %    \begin{macrocode}
 \fi
@@ -10542,6 +10593,9 @@
 %<*cjkcat>
 \def\bxjx at pkgname{bxjscjkcat}
 \newcount\bxjx at cnta
+\@onlypreamble\bxjx at tmpdo
+\@onlypreamble\bxjx at tmpdo@a
+\@onlypreamble\bxjx at tmpdo@b
 %    \end{macrocode}
 %
 % \begin{macro}{\bxjx at engine}
@@ -10548,15 +10602,15 @@
 % エンジンの種別。
 %    \begin{macrocode}
 \let\bxjx at engine=n
-\def\bxjx at do#1#2{%
+\def\bxjx at tmpdo#1#2{%
   \edef\bxjx at tmpa{\string#1}%
   \edef\bxjx at tmpb{\meaning#1}%
   \ifx\bxjx at tmpa\bxjx at tmpb #2\fi}
-\bxjx at do\kanjiskip{\let\bxjx at engine=j}
-\bxjx at do\enablecjktoken{\let\bxjx at engine=u}
-\bxjx at do\XeTeXversion{\let\bxjx at engine=x}
-\bxjx at do\pdftexversion{\let\bxjx at engine=p}
-\bxjx at do\luatexversion{\let\bxjx at engine=l}
+\bxjx at tmpdo\kanjiskip{\let\bxjx at engine=j}
+\bxjx at tmpdo\enablecjktoken{\let\bxjx at engine=u}
+\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}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -10563,7 +10617,7 @@
 % それぞれのエンジンで、前提となる日本語処理パッケージが実際に
 % 読み込まれているかを検査する。
 %    \begin{macrocode}
-\def\bxjx at do#1#2{%
+\def\bxjx at tmpdo#1#2{%
   \if#1\bxjx at engine
     \@ifpackageloaded{#2}{}{%else
       \PackageError\bxjx at pkgname
@@ -10571,9 +10625,9 @@
        {Package loading is aborted.\MessageBreak\@ehc}%
       \endinput}
   \fi}
-\bxjx at do{p}{bxcjkjatype}
-\bxjx at do{x}{xeCJK}
-\bxjx at do{l}{luatexja}
+\bxjx at tmpdo{p}{bxcjkjatype}
+\bxjx at tmpdo{x}{xeCJK}
+\bxjx at tmpdo{l}{luatexja}
 %    \end{macrocode}
 %
 % 古い{\LaTeX}の場合、|\TextOrMath| は |fixltx2e| パッケージで
@@ -10594,31 +10648,38 @@
 % |A830|、|A960|、|1B000|。
 %    \begin{macrocode}
 \if u\bxjx at engine
-\@for\bxjx at x:={%
+\@for\bxjx at tmpa:={%
 0080,0100,0180,0250,02B0,0300,0500,0530,0590,0600,%
-0700,0750,0780,07C0,0800,0840,08A0,0900,0980,0A00,%
-0A80,0B00,0B80,0C00,0C80,0D00,0D80,0E00,0E80,0F00,%
-1000,10A0,1200,1380,13A0,1400,1680,16A0,1700,1720,%
-1740,1760,1780,1800,18B0,1900,1950,1980,19E0,1A00,%
-1A20,1AB0,1B00,1B80,1BC0,1C00,1C50,1CC0,1CD0,1D00,%
-1D80,1DC0,1E00,2440,27C0,27F0,2800,2A00,2C00,2C60,%
-2C80,2D00,2D30,2D80,2DE0,2E00,4DC0,A4D0,A500,A640,%
-A6A0,A700,A720,A800,A830,A840,A880,A8E0,A900,A930,%
-A980,A9E0,AA00,AA60,AA80,AAE0,AB00,AB30,AB70,ABC0,%
-D800,DB80,DC00,E000,FB00,FB50,FE00,FE70,%
+0700,0750,0780,07C0,0800,0840,0860,08A0,0900,0980,%
+0A00,0A80,0B00,0B80,0C00,0C80,0D00,0D80,0E00,0E80,%
+0F00,1000,10A0,1200,1380,13A0,1400,1680,16A0,1700,%
+1720,1740,1760,1780,1800,18B0,1900,1950,1980,19E0,%
+1A00,1A20,1AB0,1B00,1B80,1BC0,1C00,1C50,1C80,1CC0,%
+1CD0,1D00,1D80,1DC0,1E00,1F00,2440,27C0,27F0,2800,%
+2A00,2C00,2C60,2C80,2D00,2D30,2D80,2DE0,2E00,4DC0,%
+A4D0,A500,A640,A6A0,A700,A720,A800,A830,A840,A880,%
+A8E0,A900,A930,A980,A9E0,AA00,AA60,AA80,AAE0,AB00,%
+AB30,AB70,ABC0,D800,DB80,DC00,E000,FB00,FB50,FE00,%
+FE70,FFF0,%
 10000,10080,10100,10140,10190,101D0,10280,102A0,%
 102E0,10300,10330,10350,10380,103A0,10400,10450,%
-10480,10500,10530,10600,10800,10840,10860,10880,%
-108E0,10900,10920,10980,109A0,10A00,10A60,10A80,%
-10AC0,10B00,10B40,10B60,10B80,10C00,10C80,10E60,%
-11000,11080,110D0,11100,11150,11180,111E0,11200,%
-11280,112B0,11300,11480,11580,11600,11680,11700,%
-118A0,11AC0,12000,12400,12480,13000,14400,16800,%
+10480,104B0,10500,10530,10600,10800,10840,10860,%
+10880,108E0,10900,10920,10980,109A0,10A00,10A60,%
+10A80,10AC0,10B00,10B40,10B60,10B80,10C00,10C80,%
+10E60,11000,11080,110D0,11100,11150,11180,111E0,%
+11200,11280,112B0,11300,11400,11480,11580,11600,%
+11660,11680,11700,118A0,11A00,11A50,11AC0,11C00,%
+11C70,11D00,12000,12400,12480,13000,14400,16800,%
 16A40,16AD0,16B00,16F00,1BC00,1BCA0,1D000,1D100,%
-1D200,1D300,1D360,1D400,1D800,1E800,1EE00,1F000,%
-1F030,1F0A0,1F100,1F200,1F300,1F600,1F650,1F680,%
-1F700,1F780,1F800,1F900,E0000,F0000,100000%
-}\do{\kcatcode"\bxjx at x=15 }
+1D200,1D300,1D360,1D400,1D800,1E000,1E800,1E900,%
+1EE00,1F000,1F030,1F0A0,1F300,1F600,1F650,1F680,%
+1F700,1F780,1F800,1F900,E0000,E0100,F0000,100000,%
+00C0%
+}\do{%
+\@tempcnta="\bxjx at tmpa\relax
+\@tempcntb\@tempcnta \advance\@tempcntb\m at ne
+\chardef\bxjx at tmpb\kcatcode\@tempcntb
+\kcatcode\@tempcnta=15 \kcatcode\@tempcntb\bxjx at tmpb}
 \fi
 %    \end{macrocode}
 %
@@ -10625,12 +10686,22 @@
 %^^A----------------
 % \subsection{ギリシャ・キリル文字の扱い}
 %
-% \Note ここで「ギリシャ・キリル文字」はUnicodeとJIS X 0213に
-% 共通して含まれるもののみを指すことにする。
+% 「特定CJK曖昧文字」について、和文・欧文扱いを制御できるようにする。
+% ここで\textbf{「特定CJK曖昧文字」}とは以下に該当する文字の集合を指す:
+% \begin{itemize}
+% \item UnicodeとJIS X~0213に共通して含まれるギリシャ文字・キリル文字。
+% \item Latin-1の上位部分とJIS X~0208に共通して含まれる文字
+%  (Lua{\TeX}-jaの定める“範囲8”)。
+% \end{itemize}
 %
 % \begin{macro}{\bxjx at grkcyr@list}
-% 対象のギリシャ・キリル文字に関するデータ。
+% 「特定CJK曖昧文字」に関する情報をもつ\,|\do|-リスト。
+% 各項目の形式は以下の通り:\\
+% |\do{|\Meta{Unicode符号値}|}{|\Meta{対象fontenc}|}{|^^A
+% \Meta{テキストLICR}|}{|\Meta{数式LICR}|}|
+% \Note 数式で使わない文字は \Meta{数式LICR} を空にする。
 %    \begin{macrocode}
+\@onlypreamble\bxjx at grkcyr@list
 \def\bxjx at grkcyr@list{%
 \do{0391}{LGR}{\textAlpha}{A}%            % GR. C. L. ALPHA
 \do{0392}{LGR}{\textBeta}{B}%             % GR. C. L. BETA
@@ -10758,13 +10829,16 @@
 }
 %    \end{macrocode}
 % \end{macro}
+% \begin{macro}{\mathdegree}
+% 面倒なので補っておく。
 %    \begin{macrocode}
 \providecommand*{\mathdegree}{{}^{\circ}}
 %    \end{macrocode}
+% \end{macro}
 %
 % \begin{macro}{\ifbxjx at gcc@cjk}
 % 〔スイッチ〕
-% ギリシャ・キリル文字を和文扱いにするか。
+% 「特定CJK曖昧文字」を和文扱いにするか。
 %    \begin{macrocode}
 \newif\ifbxjx at gcc@cjk
 %    \end{macrocode}
@@ -10771,22 +10845,35 @@
 % \end{macro}
 %
 % \begin{macro}{\greekasCJK}
-% ギリシャ・キリル文字を和文扱いにする。
-% \begin{macro}{\nogreekasCJK}
-% ギリシャ・キリル文字を欧文扱いにする。
+% 〔公開命令〕
+% 「特定CJK曖昧文字」を和文扱いにする。
 %    \begin{macrocode}
 \newcommand*\greekasCJK{%
   \bxjx at gcc@cjktrue}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\nogreekasCJK}
+% 〔公開命令〕
+% 「特定CJK曖昧文字」を欧文扱いにする。
+%    \begin{macrocode}
 \newcommand*\nogreekasCJK{%
   \bxjx at gcc@cjkfalse}
 %    \end{macrocode}
 % \end{macro}
-% \end{macro}
 %
-% \begin{macro}{\bx at fake@grk}
-% |\bx at fake@grk{|\Meta{出力文字}|}{|\Meta{基準文字}|}|\Means
+% \begin{macro}{\bxjx at fake@grk}
+% |\bxjx at fake@grk{|\Meta{出力文字}|}{|\Meta{基準文字}|}|\Means
+% ラテン文字で代用される数式ギリシャ文字の出力を行う。
+% \Meta{基準文字}(mathchardefの制御綴)の数式クラスと数式ファミリを
+% 引き継いで、\Meta{出力文字}(ASCII文字トークン)の文字コードの
+% 数式文字を出力する。
+% 例えば、|\Pi| の意味が |\mathchar"7005| である場合、
+% |\bxjx at fake@grk{B}{\Pi}| は |\mathchar"7042| を実行する。
+% \Note フォントパッケージ使用時の再定義を考慮して、\Meta{基準文字}が
+% mathchardefであるかを検査し、そうでない場合はフォールバックとして
+% 単に\Meta{出力文字}を実行する。
 %    \begin{macrocode}
-\def\bxjx at do#1\relax{%
+\def\bxjx at tmpdo#1\relax{%
   \def\bxjx at fake@grk##1##2{%
     \expandafter\bxjx at fake@grk at a\meaning##2#1\@nil{##1}{##2}}%
   \def\bxjx at fake@grk at a##1#1##2\@nil##3##4{%
@@ -10795,16 +10882,23 @@
       \multiply\bxjx at cnta\@cclvi \advance\bxjx at cnta`##3\relax
       \mathchar\bxjx at cnta
     \else ##3\fi}
-}\expandafter\bxjx at do\string\mathchar\relax
+}\expandafter\bxjx at tmpdo\string\mathchar\relax
 %    \end{macrocode}
 % \end{macro}
 %
-% \paragraph{pdfLaTeX・upLaTeXの場合}
+% \paragraph{pdf{\TeX}・{\upTeX}の場合}
 %    \begin{macrocode}
 \ifnum0\if p\bxjx at engine1\fi\if u\bxjx at engine1\fi>0
 %    \end{macrocode}
+% \begin{itemize}
+% \item |\|[|bxjx at KC/|\Meta{符号値}]\Means
+% その文字が「特定曖昧CJK文字」に該当する場合に定義済になる。
+% \end{itemize}
+%
 % まず |inputenc| を読み込んで入力エンコーディングを |utf8|
 % に変更する。
+% \Note 「既定UTF-8化」後の{\LaTeX}においても、必ず
+% 「|inputenc| が明示的に読み込まれた」状態になる。
 %    \begin{macrocode}
 \@ifpackageloaded{inputenc}{}{%else
   \RequirePackage[utf8]{inputenc}}
@@ -10816,8 +10910,8 @@
 \fi
 %    \end{macrocode}
 %
-% up{\LaTeX}の場合は当該の文字を含むブロックをの和文カテゴリコード
-% を変更する。
+% {\upTeX}の場合に、「特定曖昧CJK文字」を含む
+% ブロックの和文カテゴリコードを変更する。
 %    \begin{macrocode}
 \if u\bxjx at engine
 \kcatcode"0370=15
@@ -10827,69 +10921,104 @@
 %    \end{macrocode}
 % 各文字について |\DeclareUnicodeCharacter| を実行する。
 %    \begin{macrocode}
-\def\do#1{%
+\def\bxjx at tmpdo#1{%
   \@tempcnta="#1\relax
-  \@tempcntb=\@tempcnta \divide\@tempcntb256
-  \expandafter\let\csname bxjx at KCR/\the\@tempcntb\endcsname=t%
-  \expandafter\bxjx at do@a\csname bxjx at KC/\the\@tempcnta\endcsname{#1}}
-\def\bxjx at do@a#1#2#3#4#5{%
+  \expandafter\bxjx at tmpdo@a\csname bxjx at KC/\the\@tempcnta\endcsname{#1}}
+\def\bxjx at tmpdo@a#1#2#3#4#5{%
+%    \end{macrocode}
+% 引数\,=\,|\|[|bxjx at KC/|\Meta{符号値}]|{|\Meta{符号値}|}{|^^A
+% \Meta{fontenc}|}{|\Meta{LICR}|}{|\Meta{数式LICR}|}|
+%
+% “数式中の動作”を決定する。
+% \Meta{数式LICR}が空(数式非対応)なら警告を出す。
+%    \begin{macrocode}
   \ifx\\#5\\%
     \def\bxjx at tmpa{\@inmathwarn#4}%
+%    \end{macrocode}
+% \Meta{数式LICR}が英字である場合は |\bxjx at fake@grk| で出力する。
+% 大文字なら |\Pi|、小文字なら |\pi| を基準文字にする。
+%    \begin{macrocode}
   \else\ifcat A\noexpand#5%
     \edef\bxjx at tmpa{\noexpand\bxjx at fake@grk{#5}%
       {\ifnum\uccode`#5=`#5\noexpand\Pi\else\noexpand\pi\fi}}%
+%    \end{macrocode}
+% それ以外は\Meta{数式LICR}をそのまま実行する。
+%    \begin{macrocode}
   \else \def\bxjx at tmpa{#5}%
   \fi\fi
-  \def\bxjx at tmpb{\bxjx at do@b{#1}{#2}{#3}{#4}}%
+  \def\bxjx at tmpb{\bxjx at tmpdo@b{#1}{#2}{#3}{#4}}%
   \expandafter\bxjx at tmpb\expandafter{\bxjx at tmpa}}
+%    \end{macrocode}
+% 以降はエンジン種別で分岐する。
+% {\upTeX}の場合。
+%    \begin{macrocode}
 \if u\bxjx at engine
-% {\bxjx at KC/NN}{XXXX}{ENC}{\textCS}{\mathCS}
-\def\bxjx at do@b#1#2#3#4#5{%
+\def\bxjx at tmpdo@b#1#2#3#4#5{%
+%    \end{macrocode}
+% 引数\,=\,|\|[|bxjx at KC/|\Meta{符号値}]|{|\Meta{符号値}|}{|^^A
+% \Meta{fontenc}|}{|\Meta{LICR}|}{|\Meta{数式中の動作}|}|
+%
+% 当該のUnicode文字の動作は「テキストでは\Meta{LICR}、数式では
+% \Meta{数式中の動作}」となる。
+% LICRは現在エンコーディングで有効な定義がある場合はそれが実行
+% されるはずである。
+% (つまり、現在がLGRである場合はギリシャ文字は常に欧文扱いになる。)
+% それ以外の場合はLICRを |\bxjx at ja@or at not| に帰着させる。
+% この際に、和文用の定義として当該のkchardefを使用し、その制御綴と
+% して |\|[|bxjx at KC/...|] を流用している。
+%    \begin{macrocode}
   \kchardef#1=\@tempcnta
   \DeclareTextCommandDefault{#4}{\bxjx at ja@or at not{#1}{#3}{#4}}%
   \DeclareUnicodeCharacter{#2}{\TextOrMath{#4}{#5}}}
+%    \end{macrocode}
+% {pdf\TeX}の場合も処理はほとんど同じ。
+% ただし、和文用の定義として |\UTF{|\Meta{符号値}|}| を使う
+% (|\UTF| は |bxcjkjatype| の命令)。
+% |\|[|bxjx at KC/...|] は使わないが定義済にする必要がある。
+%    \begin{macrocode}
 \else\if p\bxjx at engine
-\def\bxjx at do@b#1#2#3#4#5{%
+\def\bxjx at tmpdo@b#1#2#3#4#5{%
   \mathchardef#1=\@tempcnta
   \DeclareTextCommandDefault{#4}{\bxjx at ja@or at not{\UTF{#2}}{#3}{#4}}%
   \DeclareUnicodeCharacter{#2}{\TextOrMath{#4}{#5}}}
 \fi\fi
-\bxjx at grkcyr@list
-\let\bxjx at do@a\undefined
-\let\bxjx at do@b\undefined
 %    \end{macrocode}
+% 以上の処理を「特定CJK曖昧文字」の各々に適用する。
+%    \begin{macrocode}
+\let\do\bxjx at tmpdo \bxjx at grkcyr@list
+%    \end{macrocode}
 %
 % \begin{macro}{\bxjx at DeclareUnicodeCharacter}
 % |\bxjx at DeclareUnicodeCharacter| を改変して、
-% ギリシャ・キリル文字の場合に再定義を抑止したもの。
+% 「特定CJK曖昧文字」の場合に再定義を抑止したもの。
 %    \begin{macrocode}
 \@onlypreamble\bxjx at org@DeclareUnicodeCharacter
 \let\bxjx at org@DeclareUnicodeCharacter\DeclareUnicodeCharacter
 \@onlypreamble\bxjx at DeclareUnicodeCharacter
 \def\bxjx at DeclareUnicodeCharacter#1#2{%
-  \count@="#1\relax \bxjx at cnta\count@ \divide\bxjx at cnta256
-  \expandafter\ifx\csname bxjx at KCR/\the\bxjx at cnta\endcsname\relax
+  \count@="#1\relax
+  \expandafter\ifx\csname bxjx at KC/\the\count@\endcsname\relax
     \bxjx at org@DeclareUnicodeCharacter{#1}{#2}%
-  \else\expandafter\ifx\csname bxjx at KC/\the\count@\endcsname\relax
-    \bxjx at org@DeclareUnicodeCharacter{#1}{#2}%
   \else
     \wlog{ \space\space skipped defining Unicode char U+#1}%
-  \fi\fi}
+  \fi}
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}{\bxjx at ja@or at not}
-% |\bxjx at ja@or at not|
+% |\bxjx at ja@or at not{|\Meta{和文用定義}|}{|\Meta{対象fontenc}|}{|^^A
+% \Meta{LICR}|}|\Means
+% |\|[|no|]|greekasCJK| の状態に応じて和文または欧文で文字を出力する。
 %    \begin{macrocode}
 \def\bxjx at ja@or at not#1#2#3{%
 %    \end{macrocode}
-% |\greekasCJK| の場合は、無条件に和文用コードを実行する。
+% |\greekasCJK| の場合は、無条件に\Meta{和文用定義}を実行する。
 %    \begin{macrocode}
   \ifbxjx at gcc@cjk #1%
 %    \end{macrocode}
-% |\nogreekasCJK| の場合は、エンコーディングを固定して欧文用の
-% コードを実行するが、そのエンコーディングが未定義の場合は
-% (フォールバックとして)和文用コードを使う。
+% |\nogreekasCJK| の場合は、対象のエンコーディングに変更してLICRを
+% 実行するが、そのエンコーディングが未定義の場合は
+% (フォールバックとして)和文用定義を使う。
 %    \begin{macrocode}
   \else\expandafter\ifx\csname T@#2\endcsname\relax #1%
   \else \UseTextSymbol{#2}{#3}%
@@ -10912,26 +11041,32 @@
 \def\bxjx at swap@DUC at cmd{%
   \let\bxjx at tmpa\DeclareUnicodeCharacter
   \let\DeclareUnicodeCharacter\bxjx at DeclareUnicodeCharacter
-  \let\bxjx at DeclareUnicodeCharacter\bxjx at tmpa}
+  \let\bxjx at DeclareUnicodeCharacter\bxjx at tmpa
+  \let\bxjx at tmpa\relax}
 %    \end{macrocode}
 % \end{macro}
 %
 % 以上。
 %
-% \paragraph{{\XeLaTeX}・Lua{\LaTeX}の場合}
+% \paragraph{{\XeTeX}・Lua{\TeX}の場合}
 %    \begin{macrocode}
 \else\ifnum0\if x\bxjx at engine1\fi\if l\bxjx at engine1\fi>0
 %    \end{macrocode}
 %
-% 各文字について、math activeを設定する。
+% 各文字について、数式中の動作を定義する。
 %    \begin{macrocode}
-\def\do#1{%
+\def\bxjx at tmpdo#1{%
   \bxjx at cnta="#1\relax
   \begingroup
     \lccode`~=\bxjx at cnta
   \lowercase{\endgroup
-    \bxjx at do@a{~}}{#1}}
-\def\bxjx at do@a#1#2#3#4#5{%
+    \bxjx at tmpdo@a{~}}{#1}}
+\def\bxjx at tmpdo@a#1#2#3#4#5{%
+%    \end{macrocode}
+% \Meta{数式LICR}が空なら何もしない。
+% 空でない場合、{up\LaTeX}の場合と同じ方法で“数式中の動作”を決定し、
+% 当該の文字をmath activeにしてその動作を設定する。
+%    \begin{macrocode}
   \ifx\\#5\\\let\bxjx at tmpa\relax
   \else\ifcat A\noexpand#5%
     \edef\bxjx at tmpa{\noexpand\bxjx at fake@grk{#5}%
@@ -10943,15 +11078,17 @@
   \fi}
 %    \end{macrocode}
 % 「Unicodeな数式」の設定が行われているかを(簡易的に)検査して、
-% そうでない場合にのみ、こちらの設定を有効にする。
+% そうでない場合にのみ、以上の処理を「特定CJK曖昧文字」の各々に適用する。
 %    \begin{macrocode}
 \mathchardef\bxjx at tmpa="119
-\ifx\bxjx at tmpa\pi \bxjx at grkcyr@list \fi
-\let\bxjx at do@a\undefined
+\ifx\bxjx at tmpa\pi \let\do\bxjx at tmpdo \bxjx at grkcyr@list \fi
 %    \end{macrocode}
 %
-% Lua{\TeX}における |\(no)greekasCJK| の定義。
-% |jacharrange| の設定を変更する。
+% 次に、テキストにおいて「特定CJK曖昧文字」の扱いが |\|[|no|]|greekasCJK|
+% で切り替わるようにする。
+% 
+% Lua{\TeX}の場合は、Lua{\TeX}-jaの |jacharrange| の設定を変更する。
+% \Note “範囲2”がギリシャ・キリル文字、“範囲8”がLatin-1の記号。
 %    \begin{macrocode}
 \if l\bxjx at engine
   \protected\def\greekasCJK{%
@@ -10963,17 +11100,21 @@
 \fi
 %    \end{macrocode}
 %
-% {\XeTeX}における |\(no)greekasCJK| の定義。
+% {\XeTeX}の場合、|xeCJK| は{\XeTeX}の文字クラス定義を参照して
+% いるので、対象文字の文字クラスを変更する。
 %    \begin{macrocode}
 \if x\bxjx at engine
+  \let\bxjx at gcc@cjk at list\@empty
+  \def\do#1#2#3#4{%
+    \edef\bxjx at gcc@cjk at list{\bxjx at gcc@cjk at list
+      \noexpand\XeTeXcharclass"#1\bxjx at cnta}}
+  \bxjx at grkcyr@list
   \protected\def\greekasCJK{%
     \bxjx at gcc@cjktrue
-    \def\do##1##2##3##4{\XeTeXcharclass"##1\@ne}%
-    \bxjx at grkcyr@list}
+    \bxjx at cnta=\@ne \bxjx at gcc@cjk at list}
   \protected\def\nogreekasCJK{%
     \bxjx at gcc@cjkfalse
-    \def\do##1##2##3##4{\XeTeXcharclass"##1\z@}%
-    \bxjx at grkcyr@list}
+    \bxjx at cnta=\z@ \bxjx at gcc@cjk at list}
 \fi
 %    \end{macrocode}
 %
@@ -10984,7 +11125,7 @@
 %
 %^^A----------------
 % \subsection{初期設定}
-% ギリシャ・キリル文字を欧文扱いにする。
+% 「特定CJK曖昧文字」を欧文扱いにする。
 %    \begin{macrocode}
 \nogreekasCJK
 %    \end{macrocode}
@@ -11039,6 +11180,7 @@
 % 特定のファイルを(|\@filewithoptions| の処理に関して)
 % 読込済であるとマークする。
 %    \begin{macrocode}
+\@onlypreamble\pandocSkipLoadFile
 \newcommand*\pandocSkipLoadFile[1]{%
   \expandafter\bxjsp at skip@load at file@a\csname ver@#1\endcsname{#1}}
 \def\bxjsp at skip@load at file@a#1#2{%
@@ -11054,6 +11196,7 @@
 % |\pandocSkipLoadPackage{|\Meta{パッケージ名}|}|\Means
 % |\pandocSkipLoadFile| の機能を用いてパッケージの読込を阻止する。
 %    \begin{macrocode}
+\@onlypreamble\pandocSkipLoadPackage
 \newcommand*\pandocSkipLoadPackage[1]{%
   \pandocSkipLoadFile{#1.sty}}
 %    \end{macrocode}
@@ -11161,7 +11304,7 @@
 %
 % |\ldots| の実装を置き換える。
 %    \begin{macrocode}
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \let\bxjsp at org@ldots\ldots
   \let\ldots\pandocLdots}
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls	2018-04-30 22:39:09 UTC (rev 47516)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls	2018-04-30 22:40:21 UTC (rev 47517)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsarticle}
-  [2018/03/29 v1.8a BXJS document classes]
+  [2018/04/19 v1.9  BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsarticle}
 \newif\ifjsc at needsp@tch
@@ -68,6 +68,9 @@
    {It's a fatal error. I'll quit right now.}
   \expandafter\@firstofone
 \fi{\endinput\@@end}
+\ifx l\jsEngine
+  \directlua{ bxjs = {} }
+\fi
 \ifjsWitheTeX \let\bxjs at protected\protected
 \else \let\bxjs at protected\@empty
 \fi
@@ -107,12 +110,12 @@
     \fi
   \endgroup
   #1=\bxjs at g@tmpa\relax}
-\if j\jsEngine \def\bxjs at parse@qh at all{zw,zh}
-\else \def\bxjs at parse@qh at all{trueQ,trueH,Q,H,zw,zh}
+\if j\jsEngine \def\bxjs at parse@qh at units{zw,zh}
+\else \def\bxjs at parse@qh at units{trueQ,trueH,Q,H,zw,zh}
 \fi
 \def\bxjs at parse@qh#1{%
   \let\bxjs at tmpb\relax
-  \@for\bxjs at tmpa:=\bxjs at parse@qh at all\do{%
+  \@for\bxjs at tmpa:=\bxjs at parse@qh at units\do{%
     \ifx\bxjs at tmpb\relax
       \edef\bxjs at next{{\bxjs at tmpa}{#1}}%
       \expandafter\bxjs at parse@qh at a\csname bxjs at unit@\bxjs at tmpa\expandafter
@@ -133,18 +136,28 @@
     \fi
   \fi}
   \def\bxjs at unit@Q{0.25mm}\let\bxjs at unit@H\bxjs at unit@Q
+\@onlypreamble\bxjs at begin@document at hook
+\let\bxjs at begin@document at hook\@empty
+\AtBeginDocument{\bxjs at begin@document at hook}
+\@onlypreamble\bxjs at post@option at hook
+\let\bxjs at post@option at hook\@empty
+\@onlypreamble\bxjs at pre@jadriver at hook
+\let\bxjs at pre@jadriver at hook\@empty
 \def\jsAtEndOfClass{%
   \expandafter\g at addto@macro\csname\bxjs at clsname.cls-h@@k\endcsname}
-\@onlypreamble\bxjs at restore@jltrcc
-\let\bxjs at restore@jltrcc\@empty
+\@onlypreamble\bxjs at tmpdo
+\@onlypreamble\bxjs at tmpdo@a
+\@onlypreamble\bxjs at tmpdo@b
+\@onlypreamble\bxjs at tmpdo@c
+\@onlypreamble\bxjs at tmpdo@d
 \if l\jsEngine
-\def\bxjs at change@jltrcc#1{%
-  \xdef\bxjs at restore@jltrcc{%
-    \bxjs at restore@jltrcc
+\def\bxjs at tmpdo#1{%
+  \xdef\bxjs at pre@jadriver at hook{%
+    \bxjs at pre@jadriver at hook
     \catcode`#1=\the\catcode`#1\relax}%
   \catcode`#1=11\relax}
-\@tfor\bxjs at x:=西暦\do
-  {\expandafter\bxjs at change@jltrcc\bxjs at x}
+\@tfor\bxjs at tmpa:=和西暦\do
+  {\expandafter\bxjs at tmpdo\bxjs at tmpa}
 \fi
 \bxjs at robust@def\jsInhibitGlue{%
   \ifx\inhibitglue\@undefined\else \inhibitglue \fi}
@@ -161,6 +174,7 @@
 \newif\if at restonecol
 \newif\if at titlepage
 \newif\if at enablejfam \@enablejfamfalse
+\@onlypreamble\bxjs at setpaper
 \def\bxjs at setpaper#1{\def\bxjs at param@paper{#1}}
 \DeclareOption{a3paper}{\bxjs at setpaper{a3paper}}
 \DeclareOption{a4paper}{\bxjs at setpaper{a4paper}}
@@ -301,7 +315,7 @@
   \expandafter\let\expandafter\ifjsDraft\csname if#1\endcsname}
 \DeclareOption{draft}{\bxjs at draft{true}\setlength\overfullrule{5pt}}
 \DeclareOption{final}{\bxjs at draft{false}\setlength\overfullrule{0pt}}
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \expandafter\ifx\csname ifdraft\endcsname\relax
     \expandafter\let\csname ifdraft\expandafter\endcsname
      \csname ifjsDraft\endcsname
@@ -341,9 +355,8 @@
       \else \@tempdimb=\@tempcntb\@ne \fi}%
     \xdef\bxjs at gtmpa{\the\@tempdimb}%
   \endgroup #1=\bxjs at gtmpa\relax}
-\let\bxjs at composite@proc\relax
 \DeclareOption{pandoc}{%
-  \def\bxjs at composite@proc{%
+  \g at addto@macro\bxjs at post@option at hook{%
     \bxjs at oldfontcommandstrue
     \setkeys{bxjs}{ja=pandoc}%
     \let\bxjs at engine@given=*}%
@@ -408,26 +421,6 @@
   \let\bxjs at driver@given\bxjs at driver@@xetex}
 \DeclareOption{dvipdfmx-if-dvi}{%
   \setkeys{bxjs}{dvi=dvipdfmx}}
-\newif\ifbxjs at usezw \bxjs at usezwtrue
-\DeclareOption{nozw}{%
-  \bxjs at usezwfalse}
-\DeclareOption{zw}{%
-  \bxjs at usezwtrue}
-\newif\ifbxjs at disguise@js \bxjs at disguise@jstrue
-\DeclareOption{nojs}{%
-  \bxjs at disguise@jsfalse}
-\DeclareOption{js}{%
-  \bxjs at disguise@jstrue}
-\newif\ifbxjs at precisetext
-\DeclareOption{noprecisetext}{%
-  \bxjs at precisetextfalse}
-\DeclareOption{precisetext}{%
-  \bxjs at precisetexttrue}
-\newif\ifbxjs at simplejasetup \bxjs at simplejasetuptrue
-\DeclareOption{nosimplejasetup}{%
-  \bxjs at simplejasetupfalse}
-\DeclareOption{simplejasetup}{%
-  \bxjs at simplejasetuptrue}
 \newif\ifbxjs at bigcode \bxjs at bigcodefalse
 \edef\bxjs at tmpa{\expandafter\noexpand\csname\endcsname}
 \def\bxjs at tmpb#1 #2#3\@nil{%
@@ -442,16 +435,27 @@
   \bxjs at oldfontcommandsfalse}
 \DeclareOption{oldfontcommands}{%
   \bxjs at oldfontcommandstrue}
-\def\bxjs at setkey{%
-  \expandafter\bxjs at setkey@a\expandafter{\CurrentOption}}
-\def\bxjs at setkey@a{\bxjs at safe@setkeys{bxjs}}
-\DeclareOption*{\bxjs at setkey}
+\DeclareOption*{%
+  \def\bxjs at next{\bxjs at safe@setkeys{bxjs}}%
+  \expandafter\bxjs at next\expandafter{\CurrentOption}}
 \def\bxjs at safe@setkeys#1#2{%
-  \let\bxjs at KV@errx\KV at errx
-  \let\KV at errx\bxjs at safe@setkeys at a
+  \let\bxjs at save@KV at errx\KV at errx \let\KV at errx\@gobble
   \setkeys{#1}{#2}%
-  \let\KV at errx\bxjs at KV@errx}
-\def\bxjs at safe@setkeys at a#1{}
+  \let\KV at errx\bxjs at save@KV at errx}
+\@onlypreamble\bxjs at declare@enum at option
+\def\bxjs at declare@enum at option#1#2{%
+  \define at key{bxjs}{#1}{%
+    \expandafter\ifx\csname bxjs@#2@@##1\endcsname\relax
+      \bxjs at error@keyval{#1}{##1}%
+    \else \bxjs at csletcs{bxjs@#2}{bxjs@#2@@##1}%
+    \fi}}
+\@onlypreamble\bxjs at declare@bool at option
+\def\bxjs at declare@bool at option#1#2{%
+  \define at key{bxjs}{#1}[true]{%
+    \expandafter\ifx\csname bxjs@#2##1\endcsname\relax
+      \bxjs at error@keyval{#1}{##1}%
+    \else \@nameuse{bxjs@#2##1}%
+    \fi}}
 \def\bxjs at set@keyval#1#2#3{%
   \expandafter\let\expandafter\bxjs at next\csname bxjs at kv@#1@#2\endcsname
   \ifx\bxjs at next\relax
@@ -479,9 +483,9 @@
 \define at key{bxjs}{mag}{\edef\bxjs at param@mag{#1}}
 \define at key{bxjs}{paper}{\edef\bxjs at param@paper{#1}}
 \let\bxjs at jadriver\relax
-\define at key{bxjs}{jadriver}{\edef\bxjs at jadriver{#1}}
+\define at key{bxjs}{jadriver}{\edef\bxjs at jadriver@opt{#1}}
 \define at key{bxjs}{ja}[\relax]{%
-  \ifx\relax#1\else\edef\bxjs at jadriver{#1}\fi}
+  \ifx\relax#1\else\edef\bxjs at jadriver@opt{#1}\fi}
 \let\jsJaFont\@empty
 \define at key{bxjs}{jafont}{\edef\jsJaFont{#1}}
 \let\jsJaParam\@empty
@@ -550,7 +554,7 @@
 \define at key{bxjs}{layout}{%
   \bxjs at set@keyval{layout}{#1}{}}
 \define at key{bxjs}{textwidth-limit}{%
-  \edef\bxjs at textwidth@limit{#1}}
+  \edef\bxjs at textwidth@limit at opt{#1}}
 \define at key{bxjs}{textwidth}{\edef\bxjs at textwidth@opt{#1}}
 \define at key{bxjs}{line_length}{\setkeys{bxjs}{textwidth=#1}}
 \define at key{bxjs}{number-of-lines}{\edef\bxjs at number@of at lines@opt{#1}}
@@ -594,15 +598,31 @@
 \def\bxjs at kv@labelsection at compat{\let\bxjs at label@section\bxjs at label@section at compat}
 \def\bxjs at kv@labelsection at modern{\let\bxjs at label@section\bxjs at label@section at modern}
 \define at key{bxjs}{label-section}{\bxjs at set@keyval{labelsection}{#1}{}}
-\let\bxjs at ltx@removeelement\@removeelement
+\newif\ifbxjs at usezw \bxjs at usezwtrue
+\bxjs at declare@bool at option{use-zw}{usezw}
+\DeclareOption{nozw}{\setkeys{bxjs}{use-zw=false}}
+\DeclareOption{zw}{\setkeys{bxjs}{use-zw=true}}
+\newif\ifbxjs at disguise@js \bxjs at disguise@jstrue
+\bxjs at declare@bool at option{disguise-js}{disguise at js}
+\DeclareOption{nojs}{\setkeys{bxjs}{disguise-js=false}}
+\DeclareOption{js}{\setkeys{bxjs}{disguise-js=true}}
+\newif\ifbxjs at precisetext
+\bxjs at declare@bool at option{precise-text}{precisetext}
+\DeclareOption{noprecisetext}{\setkeys{bxjs}{precise-text=false}}
+\DeclareOption{precisetext}{\setkeys{bxjs}{precise-text=true}}
+\newif\ifbxjs at simplejasetup \bxjs at simplejasetuptrue
+\bxjs at declare@bool at option{simple-ja-setup}{simplejasetup}
+\DeclareOption{nosimplejasetup}{\setkeys{bxjs}{simple-ja-setup=false}}
+\DeclareOption{simplejasetup}{\setkeys{bxjs}{simple-ja-setup=true}}
+\let\bxjs at org@removeelement\@removeelement
 \def\@removeelement#1#2#3{%
   \def\reserved at a{#2}%
   \ifx\reserved at a\@empty \let#3\@empty
-  \else \bxjs at ltx@removeelement{#1}{#2}{#3}%
+  \else \bxjs at org@removeelement{#1}{#2}{#3}%
   \fi}
 \ExecuteOptions{a4paper,oneside,onecolumn,notitlepage,final}
 \ProcessOptions\relax
-\bxjs at composite@proc
+\bxjs at post@option at hook
 \if at slide
   \def\maybeblue{\@ifundefined{ver at color.sty}{}{\color{blue}}}
 \fi
@@ -611,24 +631,20 @@
   \setlength\paperheight{\paperwidth}
   \setlength\paperwidth {\@tempdima}
 \fi
-\@onlypreamble\bxjs at purge@brace at elts
-\def\bxjs at purge@brace at elts{%
+\def\bxjs at tmpdo{%
   \def\bxjs at tmpa{\@gobble}%
-  \expandafter\bxjs at purge@be at a\@classoptionslist,\@nil,%
+  \expandafter\bxjs at tmpdo@a\@classoptionslist,\@nil,%
   \let\@classoptionslist\bxjs at tmpa}
-\@onlypreamble\bxjs at purge@be at a
-\def\bxjs at purge@be at a#1,{%
+\def\bxjs at tmpdo@a#1,{%
   \ifx\@nil#1\relax\else
-    \bxjs at purge@be at b#1{}\@nil
+    \bxjs at tmpdo@b#1{}\@nil
     \if at tempswa \edef\bxjs at tmpa{\bxjs at tmpa,#1}\fi
-    \expandafter\bxjs at purge@be at a
+    \expandafter\bxjs at tmpdo@a
   \fi}
-\@onlypreamble\bxjs at purge@be at b
-\def\bxjs at purge@be at b#1#{\bxjs at purge@be at c}
-\@onlypreamble\bxjs at purge@be at c
-\def\bxjs at purge@be at c#1\@nil{%
+\def\bxjs at tmpdo@b#1#{\bxjs at tmpdo@c}
+\def\bxjs at tmpdo@c#1\@nil{%
   \ifx\@nil#1\@nil \@tempswatrue \else \@tempswafalse \fi}
-\bxjs at purge@brace at elts
+\bxjs at tmpdo
 \@expandtwoargs\@removeelement
   {papersize}\@classoptionslist\@classoptionslist
 \@expandtwoargs\@removeelement
@@ -635,8 +651,8 @@
   {10pt}\@classoptionslist\@classoptionslist
 \@expandtwoargs\@removeelement
   {noscale}\@classoptionslist\@classoptionslist
-\ifx\bxjs at jadriver\relax\else
-  \let\bxjs at jadriver@given\bxjs at jadriver
+\ifx\bxjs at jadriver@opt\@undefined\else
+  \let\bxjs at jadriver\bxjs at jadriver@opt
 \fi
 \let\bxjs at tmpb\jsEngine
 \ifx j\bxjs at tmpb\ifjsWithpTeXng
@@ -696,17 +712,17 @@
 \else \@tempswatrue
 \fi\fi\fi
 \if at tempswa
-  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@given\@undefined\else
+  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@opt\@undefined\else
     \ClassWarningNoLine\bxjs at clsname
     {No driver option is given}
   \fi\fi
   \ifbxjs at dvi@opt
-    \edef\bxjs at nxt{%
+    \edef\bxjs at next{%
       \let\noexpand\bxjs at driver@given
        \csname bxjs at dvidriver@@\bxjs at driver@opt\endcsname
       \noexpand\g at addto@macro\noexpand\@classoptionslist
        {,\bxjs at driver@opt}%
-    }\bxjs at nxt
+    }\bxjs at next
   \fi
 \fi
 \ifjsWithpTeXng
@@ -727,7 +743,7 @@
     \let\bxjs at jadriver\bxjs@@minimal
   \fi
 \fi
-\ifx\bxjs at jadriver@given\@undefined\else
+\ifx\bxjs at jadriver@opt\@undefined\else
   \ifx\bxjs at engine@given\@undefined
     \ClassError\bxjs at clsname
      {An engine option must be explicitly given}%
@@ -821,6 +837,7 @@
   \catcode`\?=11 \let\p@?\jsc at mpt
 \fi
 \chardef\bxjs at qmcc=\catcode`\?\relax
+\g at addto@macro\bxjs at pre@jadriver at hook{\catcode`\?=12\relax}
 \newdimen\jsZw
 \jsZw=10\jsc at mpt \jsZw=\jsScale\jsZw
 \ifbxjs at usezw
@@ -920,10 +937,10 @@
   \skip2=\abovedisplayshortskip
   \skip4=\belowdisplayskip
   \skip6=\belowdisplayshortskip
-  \let\bxjs at ltx@nomath\@nomath
+  \let\bxjs at save@nomath\@nomath
   \let\@nomath\@gobble
   \@currsize\selectfont
-  \let\@nomath\bxjs at ltx@nomath
+  \let\@nomath\bxjs at save@nomath
   \abovedisplayskip=\skip0
   \abovedisplayshortskip=\skip2
   \belowdisplayskip=\skip4
@@ -1014,6 +1031,8 @@
 \@lowpenalty   51
 \@medpenalty  151
 \@highpenalty 301
+\@onlypreamble\bxjs at bd@pre at geometry@hook
+\let\bxjs at bd@pre at geometry@hook\@empty
 \ifjsc at mag
 \mag=\bxjs at param@mag
 \fi
@@ -1020,15 +1039,15 @@
 \setlength{\topskip}{10\p@?}
 \def\bxjs at unit@trueQ{0.25truemm}\let\bxjs at unit@trueH\bxjs at unit@trueQ
 \def\bxjs at unit@zw{\jsZw}\let\bxjs at unit@zh\bxjs at unit@zw
-\def\bxjs at read@a{\futurelet\bxjs at tmpa\bxjs at read@b}
-\def\bxjs at read@b{%
-  \ifx\bxjs at tmpa\bgroup \expandafter\bxjs at read@c
-  \else \expandafter\bxjs at read@d \fi}
-\def\bxjs at read@c#1#2#3\@nil{\edef\bxjs at param@paper{papersize={#1,#2}}}
-\def\bxjs at read@d#1\@nil{\bxjs at read@e#1,,\@nil}
-\def\bxjs at read@e#1,#2,#3\@nil{%
+\def\bxjs at tmpdo{\futurelet\bxjs at tmpa\bxjs at tmpdo@a}
+\def\bxjs at tmpdo@a{%
+  \ifx\bxjs at tmpa\bgroup \expandafter\bxjs at tmpdo@b
+  \else \expandafter\bxjs at tmpdo@c \fi}
+\def\bxjs at tmpdo@b#1#2#3\@nil{\edef\bxjs at param@paper{papersize={#1,#2}}}
+\def\bxjs at tmpdo@c#1\@nil{\bxjs at tmpdo@d#1,,\@nil}
+\def\bxjs at tmpdo@d#1,#2,#3\@nil{%
   \ifx\@nil#3\@nil\else \edef\bxjs at param@paper{papersize={#1,#2}}\fi}
-\expandafter\bxjs at read@a\bxjs at param@paper\@empty\@empty\@nil
+\expandafter\bxjs at tmpdo\bxjs at param@paper\@empty\@empty\@nil
 \edef\bxjs at layout@paper{%
   \ifjsc at mag truedimen,\fi
   \if at landscape landscape,\fi
@@ -1050,10 +1069,13 @@
   \edef\bxjs at layout{\bxjs at layout lines=\the\@tempcnta,}
 \fi
 \newdimen\fullwidth
+\def\bxjs at preproc@layout{%
+  \edef\bxjs at save@ht at strutbox{\the\ht\strutbox}\ht\strutbox=10\jsc at mpt}
 \def\bxjs at postproc@layout{%
   \ifx\bxjs at geometry@driver\relax\else
     \let\Gm at driver\bxjs at geometry@driver
   \fi
+  \ht\strutbox=\bxjs at save@ht at strutbox\relax
   \ifbxjs at whole@zw at lines
     \@tempdimb=\textwidth
     \if at twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi
@@ -1088,10 +1110,6 @@
 \edef\jsGeometryOptions{%
   \bxjs at layout@paper,\bxjs at layout}
 \ifx\bxjs at geometry\bxjs at geometry@class
-\def\bxjs at geometry@guard at on{%
-  \edef\bxjs at gg@tmp{\the\ht\strutbox}\ht\strutbox=10\jsc at mpt}
-\def\bxjs at geometry@guard at off{%
-  \ht\strutbox=\bxjs at gg@tmp\relax}
 \ifbxjs at papersize
   \ifx\bxjs at driver@given\bxjs at driver@@dvipdfmx
     \PassOptionsToPackage{dvipdfm}{geometry}
@@ -1102,19 +1120,16 @@
 \else
   \PassOptionsToPackage{driver=none}{geometry}
 \fi
-\AtBeginDocument{\bxjs at pre@geometry at hook}
+\AtBeginDocument{\bxjs at bd@pre at geometry@hook}
 \AtBeginDocument{\ImposeOldLuaTeXBehavior}
-\bxjs at geometry@guard at on
+\bxjs at preproc@layout
 \edef\bxjs at next{%
   \noexpand\RequirePackage[\bxjs at layout@paper,\bxjs at layout]{geometry}%
 }\bxjs at next
-\bxjs at geometry@guard at off
 \AtBeginDocument{\RevokeOldLuaTeXBehavior}
 \let\bxjs at geometry@driver\Gm at driver
 \bxjs at postproc@layout
-\@onlypreamble\bxjs at pre@geometry at hook
-\def\bxjs at pre@geometry at hook{%
-  \@ifpackageloaded{geometry}{%
+\g at addto@macro\bxjs at bd@pre at geometry@hook{%
     \@ifpackagelater{geometry}{2010/02/12}{}{%else
       \PackageWarningNoLine\bxjs at clsname
        {The 'geometry' package installed\MessageBreak
@@ -1123,14 +1138,12 @@
         \def\bxjs at Gm@driver{pdftex}
         \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
         \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
-      \fi\fi
-    }%
+      \fi\fi}%
     \ifjsWithpTeXng
       \ifx\Gm at driver\@empty
         \def\Gm at driver{pdftex}%
       \fi
-    \fi
-  }{}}
+    \fi}
 \def\setpagelayout{%
   \bxjs at ifplus{\bxjs at setpagelayout@a\tw@}{%else
     \@ifstar{\bxjs at setpagelayout@a\@ne}{\bxjs at setpagelayout@a\z@}}}
@@ -1142,20 +1155,17 @@
   \or% semireset(+)
     \def\bxjs at next{reset,\bxjs at layout@paper,\bxjs at layout@base,#2}%
   \fi
-  \bxjs at geometry@guard at on
+  \bxjs at preproc@layout
   \edef\bxjs at next{%
     \noexpand\geometry{\bxjs at next}%
   }\bxjs at next
-  \bxjs at geometry@guard at off
   \bxjs at postproc@layout}
 \else\ifx\bxjs at geometry\bxjs at geometry@user
-\AtBeginDocument{\bxjs at check@page at layout}
-\@onlypreamble\bxjs at check@page at layout
-\def\bxjs at check@page at layout{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \ifdim\textwidth=.5\maxdimen
     \ClassError\bxjs at clsname
      {Page layout is not properly set}%
-     {\@ehd}
+     {\@ehd}%
   \fi}
 \def\jsUseMinimalPageLayout{%
   \setlength{\textwidth}{6.5in}%
@@ -2109,7 +2119,7 @@
 \let\jsInhibitGlueAtParTop\@empty
 \def\everyparhook{\jsInhibitGlueAtParTop}
 \ifnum\bxjs at everyparhook=\bxjs at everyparhook@compat
-\AtBeginDocument{\everypar{\everyparhook}}
+\g at addto@macro\bxjs at begin@document at hook{\everypar{\everyparhook}}
 \fi
 \ifx j\jsEngine
 \def\@inhibitglue{%
@@ -2262,6 +2272,7 @@
 \newcommand{\tablename}{\if at english Table~\else 表\fi}
 \newcommand{\appendixname}{\if at english \else 付録\fi}
 \newcommand{\abstractname}{\if at english Abstract\else 概要\fi}
+\@onlypreamble\bxjs at decl@Seireki at cmds
 \@tempswafalse
 \if p\jsEngine \@tempswatrue \fi
 \if n\jsEngine \@tempswatrue \fi
@@ -2308,6 +2319,18 @@
   \def\bxjs at gengo{平成}\advance\bxjs at jayear-1988\relax
   \let\heisei\bxjs at jayear
 \else
+  \IfFileExists{bxwareki.sty}{\IfFileExists{bxwareki2019.def}{%
+    \RequirePackage{bxwareki}[]%
+    \let\bxjs at gengo\WarekiGengo
+  }{}}{}%
+  \if l\jsEngine \ifx\bxjs at gengo\@empty
+    \toks@{}
+    \directlua{pcall(function()
+      tex.toks[0] = bxjs.get_new_gengo()
+    end)}
+    \edef\bxjs at gengo{\the\toks@}
+  \fi\fi
+  \ifx\bxjs at gengo\@empty\else \advance\bxjs at jayear-2018\relax \fi
 \fi\fi\fi
 \edef\jayear{%
   \ifx\bxjs at gengo\@empty \the\bxjs at jayear\bxjs at iai
@@ -2334,7 +2357,7 @@
     }%
   \fi}
 \let\today\bxjs at today
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \ifx\bbl at jpn@Seirekitrue\@undefined\else
     \bxjs at decl@Seireki at cmds
     \g at addto@macro\datejapanese{%
@@ -2351,11 +2374,8 @@
   \onecolumn
   \raggedbottom
 \fi
-\catcode`\?=12
-\ifx\bxjs at jadriver\relax\else
+\bxjs at pre@jadriver at hook
 \input{bxjsja-\bxjs at jadriver.def}
-\fi
-\bxjs at restore@jltrcc
 \endinput
 %%
 %% End of file `bxjsarticle.cls'.

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls	2018-04-30 22:39:09 UTC (rev 47516)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls	2018-04-30 22:40:21 UTC (rev 47517)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsbook}
-  [2018/03/29 v1.8a BXJS document classes]
+  [2018/04/19 v1.9  BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsbook}
 \newif\ifjsc at needsp@tch
@@ -68,6 +68,9 @@
    {It's a fatal error. I'll quit right now.}
   \expandafter\@firstofone
 \fi{\endinput\@@end}
+\ifx l\jsEngine
+  \directlua{ bxjs = {} }
+\fi
 \ifjsWitheTeX \let\bxjs at protected\protected
 \else \let\bxjs at protected\@empty
 \fi
@@ -107,12 +110,12 @@
     \fi
   \endgroup
   #1=\bxjs at g@tmpa\relax}
-\if j\jsEngine \def\bxjs at parse@qh at all{zw,zh}
-\else \def\bxjs at parse@qh at all{trueQ,trueH,Q,H,zw,zh}
+\if j\jsEngine \def\bxjs at parse@qh at units{zw,zh}
+\else \def\bxjs at parse@qh at units{trueQ,trueH,Q,H,zw,zh}
 \fi
 \def\bxjs at parse@qh#1{%
   \let\bxjs at tmpb\relax
-  \@for\bxjs at tmpa:=\bxjs at parse@qh at all\do{%
+  \@for\bxjs at tmpa:=\bxjs at parse@qh at units\do{%
     \ifx\bxjs at tmpb\relax
       \edef\bxjs at next{{\bxjs at tmpa}{#1}}%
       \expandafter\bxjs at parse@qh at a\csname bxjs at unit@\bxjs at tmpa\expandafter
@@ -133,18 +136,28 @@
     \fi
   \fi}
   \def\bxjs at unit@Q{0.25mm}\let\bxjs at unit@H\bxjs at unit@Q
+\@onlypreamble\bxjs at begin@document at hook
+\let\bxjs at begin@document at hook\@empty
+\AtBeginDocument{\bxjs at begin@document at hook}
+\@onlypreamble\bxjs at post@option at hook
+\let\bxjs at post@option at hook\@empty
+\@onlypreamble\bxjs at pre@jadriver at hook
+\let\bxjs at pre@jadriver at hook\@empty
 \def\jsAtEndOfClass{%
   \expandafter\g at addto@macro\csname\bxjs at clsname.cls-h@@k\endcsname}
-\@onlypreamble\bxjs at restore@jltrcc
-\let\bxjs at restore@jltrcc\@empty
+\@onlypreamble\bxjs at tmpdo
+\@onlypreamble\bxjs at tmpdo@a
+\@onlypreamble\bxjs at tmpdo@b
+\@onlypreamble\bxjs at tmpdo@c
+\@onlypreamble\bxjs at tmpdo@d
 \if l\jsEngine
-\def\bxjs at change@jltrcc#1{%
-  \xdef\bxjs at restore@jltrcc{%
-    \bxjs at restore@jltrcc
+\def\bxjs at tmpdo#1{%
+  \xdef\bxjs at pre@jadriver at hook{%
+    \bxjs at pre@jadriver at hook
     \catcode`#1=\the\catcode`#1\relax}%
   \catcode`#1=11\relax}
-\@tfor\bxjs at x:=西暦\do
-  {\expandafter\bxjs at change@jltrcc\bxjs at x}
+\@tfor\bxjs at tmpa:=和西暦\do
+  {\expandafter\bxjs at tmpdo\bxjs at tmpa}
 \fi
 \bxjs at robust@def\jsInhibitGlue{%
   \ifx\inhibitglue\@undefined\else \inhibitglue \fi}
@@ -164,6 +177,7 @@
 \newif\if at openleft
 \newif\if at mainmatter \@mainmattertrue
 \newif\if at enablejfam \@enablejfamfalse
+\@onlypreamble\bxjs at setpaper
 \def\bxjs at setpaper#1{\def\bxjs at param@paper{#1}}
 \DeclareOption{a3paper}{\bxjs at setpaper{a3paper}}
 \DeclareOption{a4paper}{\bxjs at setpaper{a4paper}}
@@ -307,7 +321,7 @@
   \expandafter\let\expandafter\ifjsDraft\csname if#1\endcsname}
 \DeclareOption{draft}{\bxjs at draft{true}\setlength\overfullrule{5pt}}
 \DeclareOption{final}{\bxjs at draft{false}\setlength\overfullrule{0pt}}
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \expandafter\ifx\csname ifdraft\endcsname\relax
     \expandafter\let\csname ifdraft\expandafter\endcsname
      \csname ifjsDraft\endcsname
@@ -347,9 +361,8 @@
       \else \@tempdimb=\@tempcntb\@ne \fi}%
     \xdef\bxjs at gtmpa{\the\@tempdimb}%
   \endgroup #1=\bxjs at gtmpa\relax}
-\let\bxjs at composite@proc\relax
 \DeclareOption{pandoc}{%
-  \def\bxjs at composite@proc{%
+  \g at addto@macro\bxjs at post@option at hook{%
     \bxjs at oldfontcommandstrue
     \setkeys{bxjs}{ja=pandoc}%
     \let\bxjs at engine@given=*}%
@@ -414,26 +427,6 @@
   \let\bxjs at driver@given\bxjs at driver@@xetex}
 \DeclareOption{dvipdfmx-if-dvi}{%
   \setkeys{bxjs}{dvi=dvipdfmx}}
-\newif\ifbxjs at usezw \bxjs at usezwtrue
-\DeclareOption{nozw}{%
-  \bxjs at usezwfalse}
-\DeclareOption{zw}{%
-  \bxjs at usezwtrue}
-\newif\ifbxjs at disguise@js \bxjs at disguise@jstrue
-\DeclareOption{nojs}{%
-  \bxjs at disguise@jsfalse}
-\DeclareOption{js}{%
-  \bxjs at disguise@jstrue}
-\newif\ifbxjs at precisetext
-\DeclareOption{noprecisetext}{%
-  \bxjs at precisetextfalse}
-\DeclareOption{precisetext}{%
-  \bxjs at precisetexttrue}
-\newif\ifbxjs at simplejasetup \bxjs at simplejasetuptrue
-\DeclareOption{nosimplejasetup}{%
-  \bxjs at simplejasetupfalse}
-\DeclareOption{simplejasetup}{%
-  \bxjs at simplejasetuptrue}
 \newif\ifbxjs at bigcode \bxjs at bigcodefalse
 \edef\bxjs at tmpa{\expandafter\noexpand\csname\endcsname}
 \def\bxjs at tmpb#1 #2#3\@nil{%
@@ -448,16 +441,27 @@
   \bxjs at oldfontcommandsfalse}
 \DeclareOption{oldfontcommands}{%
   \bxjs at oldfontcommandstrue}
-\def\bxjs at setkey{%
-  \expandafter\bxjs at setkey@a\expandafter{\CurrentOption}}
-\def\bxjs at setkey@a{\bxjs at safe@setkeys{bxjs}}
-\DeclareOption*{\bxjs at setkey}
+\DeclareOption*{%
+  \def\bxjs at next{\bxjs at safe@setkeys{bxjs}}%
+  \expandafter\bxjs at next\expandafter{\CurrentOption}}
 \def\bxjs at safe@setkeys#1#2{%
-  \let\bxjs at KV@errx\KV at errx
-  \let\KV at errx\bxjs at safe@setkeys at a
+  \let\bxjs at save@KV at errx\KV at errx \let\KV at errx\@gobble
   \setkeys{#1}{#2}%
-  \let\KV at errx\bxjs at KV@errx}
-\def\bxjs at safe@setkeys at a#1{}
+  \let\KV at errx\bxjs at save@KV at errx}
+\@onlypreamble\bxjs at declare@enum at option
+\def\bxjs at declare@enum at option#1#2{%
+  \define at key{bxjs}{#1}{%
+    \expandafter\ifx\csname bxjs@#2@@##1\endcsname\relax
+      \bxjs at error@keyval{#1}{##1}%
+    \else \bxjs at csletcs{bxjs@#2}{bxjs@#2@@##1}%
+    \fi}}
+\@onlypreamble\bxjs at declare@bool at option
+\def\bxjs at declare@bool at option#1#2{%
+  \define at key{bxjs}{#1}[true]{%
+    \expandafter\ifx\csname bxjs@#2##1\endcsname\relax
+      \bxjs at error@keyval{#1}{##1}%
+    \else \@nameuse{bxjs@#2##1}%
+    \fi}}
 \def\bxjs at set@keyval#1#2#3{%
   \expandafter\let\expandafter\bxjs at next\csname bxjs at kv@#1@#2\endcsname
   \ifx\bxjs at next\relax
@@ -485,9 +489,9 @@
 \define at key{bxjs}{mag}{\edef\bxjs at param@mag{#1}}
 \define at key{bxjs}{paper}{\edef\bxjs at param@paper{#1}}
 \let\bxjs at jadriver\relax
-\define at key{bxjs}{jadriver}{\edef\bxjs at jadriver{#1}}
+\define at key{bxjs}{jadriver}{\edef\bxjs at jadriver@opt{#1}}
 \define at key{bxjs}{ja}[\relax]{%
-  \ifx\relax#1\else\edef\bxjs at jadriver{#1}\fi}
+  \ifx\relax#1\else\edef\bxjs at jadriver@opt{#1}\fi}
 \let\jsJaFont\@empty
 \define at key{bxjs}{jafont}{\edef\jsJaFont{#1}}
 \let\jsJaParam\@empty
@@ -559,7 +563,7 @@
 \define at key{bxjs}{layout}{%
   \bxjs at set@keyval{layout}{#1}{}}
 \define at key{bxjs}{textwidth-limit}{%
-  \edef\bxjs at textwidth@limit{#1}}
+  \edef\bxjs at textwidth@limit at opt{#1}}
 \define at key{bxjs}{textwidth}{\edef\bxjs at textwidth@opt{#1}}
 \define at key{bxjs}{line_length}{\setkeys{bxjs}{textwidth=#1}}
 \define at key{bxjs}{number-of-lines}{\edef\bxjs at number@of at lines@opt{#1}}
@@ -603,15 +607,31 @@
 \def\bxjs at kv@labelsection at compat{\let\bxjs at label@section\bxjs at label@section at compat}
 \def\bxjs at kv@labelsection at modern{\let\bxjs at label@section\bxjs at label@section at modern}
 \define at key{bxjs}{label-section}{\bxjs at set@keyval{labelsection}{#1}{}}
-\let\bxjs at ltx@removeelement\@removeelement
+\newif\ifbxjs at usezw \bxjs at usezwtrue
+\bxjs at declare@bool at option{use-zw}{usezw}
+\DeclareOption{nozw}{\setkeys{bxjs}{use-zw=false}}
+\DeclareOption{zw}{\setkeys{bxjs}{use-zw=true}}
+\newif\ifbxjs at disguise@js \bxjs at disguise@jstrue
+\bxjs at declare@bool at option{disguise-js}{disguise at js}
+\DeclareOption{nojs}{\setkeys{bxjs}{disguise-js=false}}
+\DeclareOption{js}{\setkeys{bxjs}{disguise-js=true}}
+\newif\ifbxjs at precisetext
+\bxjs at declare@bool at option{precise-text}{precisetext}
+\DeclareOption{noprecisetext}{\setkeys{bxjs}{precise-text=false}}
+\DeclareOption{precisetext}{\setkeys{bxjs}{precise-text=true}}
+\newif\ifbxjs at simplejasetup \bxjs at simplejasetuptrue
+\bxjs at declare@bool at option{simple-ja-setup}{simplejasetup}
+\DeclareOption{nosimplejasetup}{\setkeys{bxjs}{simple-ja-setup=false}}
+\DeclareOption{simplejasetup}{\setkeys{bxjs}{simple-ja-setup=true}}
+\let\bxjs at org@removeelement\@removeelement
 \def\@removeelement#1#2#3{%
   \def\reserved at a{#2}%
   \ifx\reserved at a\@empty \let#3\@empty
-  \else \bxjs at ltx@removeelement{#1}{#2}{#3}%
+  \else \bxjs at org@removeelement{#1}{#2}{#3}%
   \fi}
 \ExecuteOptions{a4paper,twoside,onecolumn,titlepage,openright,final}
 \ProcessOptions\relax
-\bxjs at composite@proc
+\bxjs at post@option at hook
 \if at slide
   \def\maybeblue{\@ifundefined{ver at color.sty}{}{\color{blue}}}
 \fi
@@ -620,24 +640,20 @@
   \setlength\paperheight{\paperwidth}
   \setlength\paperwidth {\@tempdima}
 \fi
-\@onlypreamble\bxjs at purge@brace at elts
-\def\bxjs at purge@brace at elts{%
+\def\bxjs at tmpdo{%
   \def\bxjs at tmpa{\@gobble}%
-  \expandafter\bxjs at purge@be at a\@classoptionslist,\@nil,%
+  \expandafter\bxjs at tmpdo@a\@classoptionslist,\@nil,%
   \let\@classoptionslist\bxjs at tmpa}
-\@onlypreamble\bxjs at purge@be at a
-\def\bxjs at purge@be at a#1,{%
+\def\bxjs at tmpdo@a#1,{%
   \ifx\@nil#1\relax\else
-    \bxjs at purge@be at b#1{}\@nil
+    \bxjs at tmpdo@b#1{}\@nil
     \if at tempswa \edef\bxjs at tmpa{\bxjs at tmpa,#1}\fi
-    \expandafter\bxjs at purge@be at a
+    \expandafter\bxjs at tmpdo@a
   \fi}
-\@onlypreamble\bxjs at purge@be at b
-\def\bxjs at purge@be at b#1#{\bxjs at purge@be at c}
-\@onlypreamble\bxjs at purge@be at c
-\def\bxjs at purge@be at c#1\@nil{%
+\def\bxjs at tmpdo@b#1#{\bxjs at tmpdo@c}
+\def\bxjs at tmpdo@c#1\@nil{%
   \ifx\@nil#1\@nil \@tempswatrue \else \@tempswafalse \fi}
-\bxjs at purge@brace at elts
+\bxjs at tmpdo
 \@expandtwoargs\@removeelement
   {papersize}\@classoptionslist\@classoptionslist
 \@expandtwoargs\@removeelement
@@ -644,8 +660,8 @@
   {10pt}\@classoptionslist\@classoptionslist
 \@expandtwoargs\@removeelement
   {noscale}\@classoptionslist\@classoptionslist
-\ifx\bxjs at jadriver\relax\else
-  \let\bxjs at jadriver@given\bxjs at jadriver
+\ifx\bxjs at jadriver@opt\@undefined\else
+  \let\bxjs at jadriver\bxjs at jadriver@opt
 \fi
 \let\bxjs at tmpb\jsEngine
 \ifx j\bxjs at tmpb\ifjsWithpTeXng
@@ -705,17 +721,17 @@
 \else \@tempswatrue
 \fi\fi\fi
 \if at tempswa
-  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@given\@undefined\else
+  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@opt\@undefined\else
     \ClassWarningNoLine\bxjs at clsname
     {No driver option is given}
   \fi\fi
   \ifbxjs at dvi@opt
-    \edef\bxjs at nxt{%
+    \edef\bxjs at next{%
       \let\noexpand\bxjs at driver@given
        \csname bxjs at dvidriver@@\bxjs at driver@opt\endcsname
       \noexpand\g at addto@macro\noexpand\@classoptionslist
        {,\bxjs at driver@opt}%
-    }\bxjs at nxt
+    }\bxjs at next
   \fi
 \fi
 \ifjsWithpTeXng
@@ -736,7 +752,7 @@
     \let\bxjs at jadriver\bxjs@@minimal
   \fi
 \fi
-\ifx\bxjs at jadriver@given\@undefined\else
+\ifx\bxjs at jadriver@opt\@undefined\else
   \ifx\bxjs at engine@given\@undefined
     \ClassError\bxjs at clsname
      {An engine option must be explicitly given}%
@@ -830,6 +846,7 @@
   \catcode`\?=11 \let\p@?\jsc at mpt
 \fi
 \chardef\bxjs at qmcc=\catcode`\?\relax
+\g at addto@macro\bxjs at pre@jadriver at hook{\catcode`\?=12\relax}
 \newdimen\jsZw
 \jsZw=10\jsc at mpt \jsZw=\jsScale\jsZw
 \ifbxjs at usezw
@@ -929,10 +946,10 @@
   \skip2=\abovedisplayshortskip
   \skip4=\belowdisplayskip
   \skip6=\belowdisplayshortskip
-  \let\bxjs at ltx@nomath\@nomath
+  \let\bxjs at save@nomath\@nomath
   \let\@nomath\@gobble
   \@currsize\selectfont
-  \let\@nomath\bxjs at ltx@nomath
+  \let\@nomath\bxjs at save@nomath
   \abovedisplayskip=\skip0
   \abovedisplayshortskip=\skip2
   \belowdisplayskip=\skip4
@@ -1023,6 +1040,8 @@
 \@lowpenalty   51
 \@medpenalty  151
 \@highpenalty 301
+\@onlypreamble\bxjs at bd@pre at geometry@hook
+\let\bxjs at bd@pre at geometry@hook\@empty
 \ifjsc at mag
 \mag=\bxjs at param@mag
 \fi
@@ -1029,15 +1048,15 @@
 \setlength{\topskip}{10\p@?}
 \def\bxjs at unit@trueQ{0.25truemm}\let\bxjs at unit@trueH\bxjs at unit@trueQ
 \def\bxjs at unit@zw{\jsZw}\let\bxjs at unit@zh\bxjs at unit@zw
-\def\bxjs at read@a{\futurelet\bxjs at tmpa\bxjs at read@b}
-\def\bxjs at read@b{%
-  \ifx\bxjs at tmpa\bgroup \expandafter\bxjs at read@c
-  \else \expandafter\bxjs at read@d \fi}
-\def\bxjs at read@c#1#2#3\@nil{\edef\bxjs at param@paper{papersize={#1,#2}}}
-\def\bxjs at read@d#1\@nil{\bxjs at read@e#1,,\@nil}
-\def\bxjs at read@e#1,#2,#3\@nil{%
+\def\bxjs at tmpdo{\futurelet\bxjs at tmpa\bxjs at tmpdo@a}
+\def\bxjs at tmpdo@a{%
+  \ifx\bxjs at tmpa\bgroup \expandafter\bxjs at tmpdo@b
+  \else \expandafter\bxjs at tmpdo@c \fi}
+\def\bxjs at tmpdo@b#1#2#3\@nil{\edef\bxjs at param@paper{papersize={#1,#2}}}
+\def\bxjs at tmpdo@c#1\@nil{\bxjs at tmpdo@d#1,,\@nil}
+\def\bxjs at tmpdo@d#1,#2,#3\@nil{%
   \ifx\@nil#3\@nil\else \edef\bxjs at param@paper{papersize={#1,#2}}\fi}
-\expandafter\bxjs at read@a\bxjs at param@paper\@empty\@empty\@nil
+\expandafter\bxjs at tmpdo\bxjs at param@paper\@empty\@empty\@nil
 \edef\bxjs at layout@paper{%
   \ifjsc at mag truedimen,\fi
   \if at landscape landscape,\fi
@@ -1062,14 +1081,26 @@
 \fi
 \newdimen\fullwidth
 \newcommand\jsTextWidthLimit{40}
-\ifx\bxjs at textwidth@limit\@undefined\else
-  \bxjs at gset@tempcnta{\bxjs at textwidth@limit}
-  \long\edef\jsTextWidthLimit{\the\@tempcnta}
+\@tempdima=\jsTextWidthLimit\Cwd
+\ifx\bxjs at textwidth@limit at opt\@undefined\else
+  \bxjs at gset@tempcnta{\bxjs at textwidth@limit at opt}
+  \@tempdima=\@tempcnta\Cwd
 \fi
+\ifx\bxjs at textwidth@opt\@undefined\else
+  \jsSetQHLength\@tempdima{\bxjs at textwidth@opt}
+\fi
+\edef\bxjs at textwidth@limit{\the\@tempdima}
+\ifdim\@tempdima=\jsTextWidthLimit\Cwd\else
+  \bxjs at invscale\@tempdima{\strip at pt\Cwd}
+  \long\edef\jsTextWidthLimit{\strip at pt\@tempdima}
+\fi
+\def\bxjs at preproc@layout{%
+  \edef\bxjs at save@ht at strutbox{\the\ht\strutbox}\ht\strutbox=10\jsc at mpt}
 \def\bxjs at postproc@layout{%
   \ifx\bxjs at geometry@driver\relax\else
     \let\Gm at driver\bxjs at geometry@driver
   \fi
+  \ht\strutbox=\bxjs at save@ht at strutbox\relax
   \ifbxjs at whole@zw at lines
     \@tempdimb=\textwidth
     \if at twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi
@@ -1080,13 +1111,10 @@
     \advance\evensidemargin 0.5\@tempdimb
   \fi
   \fullwidth=\textwidth
-  \@tempdima=\jsTextWidthLimit\Cwd
-  \ifx\bxjs at textwidth@opt\@undefined\else
-    \jsSetQHLength\@tempdima{\bxjs at textwidth@opt}
-    \ifbxjs at whole@zw at lines
-      \advance\@tempdima.005pt\relax
-      \divide\@tempdima\Cwd \multiply\@tempdima\Cwd
-    \fi
+  \@tempdima=\bxjs at textwidth@limit\relax
+  \ifbxjs at whole@zw at lines
+    \advance\@tempdima.005pt\relax
+    \divide\@tempdima\Cwd \multiply\@tempdima\Cwd
   \fi
   \ifdim\textwidth>\@tempdima
     \textwidth=\@tempdima
@@ -1116,10 +1144,6 @@
 \edef\jsGeometryOptions{%
   \bxjs at layout@paper,\bxjs at layout}
 \ifx\bxjs at geometry\bxjs at geometry@class
-\def\bxjs at geometry@guard at on{%
-  \edef\bxjs at gg@tmp{\the\ht\strutbox}\ht\strutbox=10\jsc at mpt}
-\def\bxjs at geometry@guard at off{%
-  \ht\strutbox=\bxjs at gg@tmp\relax}
 \ifbxjs at papersize
   \ifx\bxjs at driver@given\bxjs at driver@@dvipdfmx
     \PassOptionsToPackage{dvipdfm}{geometry}
@@ -1130,19 +1154,16 @@
 \else
   \PassOptionsToPackage{driver=none}{geometry}
 \fi
-\AtBeginDocument{\bxjs at pre@geometry at hook}
+\AtBeginDocument{\bxjs at bd@pre at geometry@hook}
 \AtBeginDocument{\ImposeOldLuaTeXBehavior}
-\bxjs at geometry@guard at on
+\bxjs at preproc@layout
 \edef\bxjs at next{%
   \noexpand\RequirePackage[\bxjs at layout@paper,\bxjs at layout]{geometry}%
 }\bxjs at next
-\bxjs at geometry@guard at off
 \AtBeginDocument{\RevokeOldLuaTeXBehavior}
 \let\bxjs at geometry@driver\Gm at driver
 \bxjs at postproc@layout
-\@onlypreamble\bxjs at pre@geometry at hook
-\def\bxjs at pre@geometry at hook{%
-  \@ifpackageloaded{geometry}{%
+\g at addto@macro\bxjs at bd@pre at geometry@hook{%
     \@ifpackagelater{geometry}{2010/02/12}{}{%else
       \PackageWarningNoLine\bxjs at clsname
        {The 'geometry' package installed\MessageBreak
@@ -1151,14 +1172,12 @@
         \def\bxjs at Gm@driver{pdftex}
         \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
         \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
-      \fi\fi
-    }%
+      \fi\fi}%
     \ifjsWithpTeXng
       \ifx\Gm at driver\@empty
         \def\Gm at driver{pdftex}%
       \fi
-    \fi
-  }{}}
+    \fi}
 \def\setpagelayout{%
   \bxjs at ifplus{\bxjs at setpagelayout@a\tw@}{%else
     \@ifstar{\bxjs at setpagelayout@a\@ne}{\bxjs at setpagelayout@a\z@}}}
@@ -1170,20 +1189,17 @@
   \or% semireset(+)
     \def\bxjs at next{reset,\bxjs at layout@paper,\bxjs at layout@base,#2}%
   \fi
-  \bxjs at geometry@guard at on
+  \bxjs at preproc@layout
   \edef\bxjs at next{%
     \noexpand\geometry{\bxjs at next}%
   }\bxjs at next
-  \bxjs at geometry@guard at off
   \bxjs at postproc@layout}
 \else\ifx\bxjs at geometry\bxjs at geometry@user
-\AtBeginDocument{\bxjs at check@page at layout}
-\@onlypreamble\bxjs at check@page at layout
-\def\bxjs at check@page at layout{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \ifdim\textwidth=.5\maxdimen
     \ClassError\bxjs at clsname
      {Page layout is not properly set}%
-     {\@ehd}
+     {\@ehd}%
   \fi}
 \def\jsUseMinimalPageLayout{%
   \setlength{\textwidth}{6.5in}%
@@ -2208,7 +2224,7 @@
 \let\jsInhibitGlueAtParTop\@empty
 \def\everyparhook{\jsInhibitGlueAtParTop}
 \ifnum\bxjs at everyparhook=\bxjs at everyparhook@compat
-\AtBeginDocument{\everypar{\everyparhook}}
+\g at addto@macro\bxjs at begin@document at hook{\everypar{\everyparhook}}
 \fi
 \ifx j\jsEngine
 \def\@inhibitglue{%
@@ -2362,6 +2378,7 @@
 \newcommand{\figurename}{\if at english Fig.~\else 図\fi}
 \newcommand{\tablename}{\if at english Table~\else 表\fi}
 \newcommand{\appendixname}{\if at english \else 付録\fi}
+\@onlypreamble\bxjs at decl@Seireki at cmds
 \@tempswafalse
 \if p\jsEngine \@tempswatrue \fi
 \if n\jsEngine \@tempswatrue \fi
@@ -2408,6 +2425,18 @@
   \def\bxjs at gengo{平成}\advance\bxjs at jayear-1988\relax
   \let\heisei\bxjs at jayear
 \else
+  \IfFileExists{bxwareki.sty}{\IfFileExists{bxwareki2019.def}{%
+    \RequirePackage{bxwareki}[]%
+    \let\bxjs at gengo\WarekiGengo
+  }{}}{}%
+  \if l\jsEngine \ifx\bxjs at gengo\@empty
+    \toks@{}
+    \directlua{pcall(function()
+      tex.toks[0] = bxjs.get_new_gengo()
+    end)}
+    \edef\bxjs at gengo{\the\toks@}
+  \fi\fi
+  \ifx\bxjs at gengo\@empty\else \advance\bxjs at jayear-2018\relax \fi
 \fi\fi\fi
 \edef\jayear{%
   \ifx\bxjs at gengo\@empty \the\bxjs at jayear\bxjs at iai
@@ -2434,7 +2463,7 @@
     }%
   \fi}
 \let\today\bxjs at today
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \ifx\bbl at jpn@Seirekitrue\@undefined\else
     \bxjs at decl@Seireki at cmds
     \g at addto@macro\datejapanese{%
@@ -2451,11 +2480,8 @@
   \onecolumn
   \raggedbottom
 \fi
-\catcode`\?=12
-\ifx\bxjs at jadriver\relax\else
+\bxjs at pre@jadriver at hook
 \input{bxjsja-\bxjs at jadriver.def}
-\fi
-\bxjs at restore@jltrcc
 \endinput
 %%
 %% End of file `bxjsbook.cls'.

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty	2018-04-30 22:39:09 UTC (rev 47516)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty	2018-04-30 22:40:21 UTC (rev 47517)
@@ -21,20 +21,23 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesPackage{bxjscjkcat}
-  [2018/03/29 v1.8a BXJS document classes]
+  [2018/04/19 v1.9  BXJS document classes]
 \def\bxjx at pkgname{bxjscjkcat}
 \newcount\bxjx at cnta
+\@onlypreamble\bxjx at tmpdo
+\@onlypreamble\bxjx at tmpdo@a
+\@onlypreamble\bxjx at tmpdo@b
 \let\bxjx at engine=n
-\def\bxjx at do#1#2{%
+\def\bxjx at tmpdo#1#2{%
   \edef\bxjx at tmpa{\string#1}%
   \edef\bxjx at tmpb{\meaning#1}%
   \ifx\bxjx at tmpa\bxjx at tmpb #2\fi}
-\bxjx at do\kanjiskip{\let\bxjx at engine=j}
-\bxjx at do\enablecjktoken{\let\bxjx at engine=u}
-\bxjx at do\XeTeXversion{\let\bxjx at engine=x}
-\bxjx at do\pdftexversion{\let\bxjx at engine=p}
-\bxjx at do\luatexversion{\let\bxjx at engine=l}
-\def\bxjx at do#1#2{%
+\bxjx at tmpdo\kanjiskip{\let\bxjx at engine=j}
+\bxjx at tmpdo\enablecjktoken{\let\bxjx at engine=u}
+\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}
+\def\bxjx at tmpdo#1#2{%
   \if#1\bxjx at engine
     \@ifpackageloaded{#2}{}{%else
       \PackageError\bxjx at pkgname
@@ -42,39 +45,47 @@
        {Package loading is aborted.\MessageBreak\@ehc}%
       \endinput}
   \fi}
-\bxjx at do{p}{bxcjkjatype}
-\bxjx at do{x}{xeCJK}
-\bxjx at do{l}{luatexja}
+\bxjx at tmpdo{p}{bxcjkjatype}
+\bxjx at tmpdo{x}{xeCJK}
+\bxjx at tmpdo{l}{luatexja}
 \ifx\TextOrMath\@undefined
   \RequirePackage{fixltx2e}
 \fi
 \if u\bxjx at engine
-\@for\bxjx at x:={%
+\@for\bxjx at tmpa:={%
 0080,0100,0180,0250,02B0,0300,0500,0530,0590,0600,%
-0700,0750,0780,07C0,0800,0840,08A0,0900,0980,0A00,%
-0A80,0B00,0B80,0C00,0C80,0D00,0D80,0E00,0E80,0F00,%
-1000,10A0,1200,1380,13A0,1400,1680,16A0,1700,1720,%
-1740,1760,1780,1800,18B0,1900,1950,1980,19E0,1A00,%
-1A20,1AB0,1B00,1B80,1BC0,1C00,1C50,1CC0,1CD0,1D00,%
-1D80,1DC0,1E00,2440,27C0,27F0,2800,2A00,2C00,2C60,%
-2C80,2D00,2D30,2D80,2DE0,2E00,4DC0,A4D0,A500,A640,%
-A6A0,A700,A720,A800,A830,A840,A880,A8E0,A900,A930,%
-A980,A9E0,AA00,AA60,AA80,AAE0,AB00,AB30,AB70,ABC0,%
-D800,DB80,DC00,E000,FB00,FB50,FE00,FE70,%
+0700,0750,0780,07C0,0800,0840,0860,08A0,0900,0980,%
+0A00,0A80,0B00,0B80,0C00,0C80,0D00,0D80,0E00,0E80,%
+0F00,1000,10A0,1200,1380,13A0,1400,1680,16A0,1700,%
+1720,1740,1760,1780,1800,18B0,1900,1950,1980,19E0,%
+1A00,1A20,1AB0,1B00,1B80,1BC0,1C00,1C50,1C80,1CC0,%
+1CD0,1D00,1D80,1DC0,1E00,1F00,2440,27C0,27F0,2800,%
+2A00,2C00,2C60,2C80,2D00,2D30,2D80,2DE0,2E00,4DC0,%
+A4D0,A500,A640,A6A0,A700,A720,A800,A830,A840,A880,%
+A8E0,A900,A930,A980,A9E0,AA00,AA60,AA80,AAE0,AB00,%
+AB30,AB70,ABC0,D800,DB80,DC00,E000,FB00,FB50,FE00,%
+FE70,FFF0,%
 10000,10080,10100,10140,10190,101D0,10280,102A0,%
 102E0,10300,10330,10350,10380,103A0,10400,10450,%
-10480,10500,10530,10600,10800,10840,10860,10880,%
-108E0,10900,10920,10980,109A0,10A00,10A60,10A80,%
-10AC0,10B00,10B40,10B60,10B80,10C00,10C80,10E60,%
-11000,11080,110D0,11100,11150,11180,111E0,11200,%
-11280,112B0,11300,11480,11580,11600,11680,11700,%
-118A0,11AC0,12000,12400,12480,13000,14400,16800,%
+10480,104B0,10500,10530,10600,10800,10840,10860,%
+10880,108E0,10900,10920,10980,109A0,10A00,10A60,%
+10A80,10AC0,10B00,10B40,10B60,10B80,10C00,10C80,%
+10E60,11000,11080,110D0,11100,11150,11180,111E0,%
+11200,11280,112B0,11300,11400,11480,11580,11600,%
+11660,11680,11700,118A0,11A00,11A50,11AC0,11C00,%
+11C70,11D00,12000,12400,12480,13000,14400,16800,%
 16A40,16AD0,16B00,16F00,1BC00,1BCA0,1D000,1D100,%
-1D200,1D300,1D360,1D400,1D800,1E800,1EE00,1F000,%
-1F030,1F0A0,1F100,1F200,1F300,1F600,1F650,1F680,%
-1F700,1F780,1F800,1F900,E0000,F0000,100000%
-}\do{\kcatcode"\bxjx at x=15 }
+1D200,1D300,1D360,1D400,1D800,1E000,1E800,1E900,%
+1EE00,1F000,1F030,1F0A0,1F300,1F600,1F650,1F680,%
+1F700,1F780,1F800,1F900,E0000,E0100,F0000,100000,%
+00C0%
+}\do{%
+\@tempcnta="\bxjx at tmpa\relax
+\@tempcntb\@tempcnta \advance\@tempcntb\m at ne
+\chardef\bxjx at tmpb\kcatcode\@tempcntb
+\kcatcode\@tempcnta=15 \kcatcode\@tempcntb\bxjx at tmpb}
 \fi
+\@onlypreamble\bxjx at grkcyr@list
 \def\bxjx at grkcyr@list{%
 \do{0391}{LGR}{\textAlpha}{A}%            % GR. C. L. ALPHA
 \do{0392}{LGR}{\textBeta}{B}%             % GR. C. L. BETA
@@ -206,7 +217,7 @@
   \bxjx at gcc@cjktrue}
 \newcommand*\nogreekasCJK{%
   \bxjx at gcc@cjkfalse}
-\def\bxjx at do#1\relax{%
+\def\bxjx at tmpdo#1\relax{%
   \def\bxjx at fake@grk##1##2{%
     \expandafter\bxjx at fake@grk at a\meaning##2#1\@nil{##1}{##2}}%
   \def\bxjx at fake@grk at a##1#1##2\@nil##3##4{%
@@ -215,7 +226,7 @@
       \multiply\bxjx at cnta\@cclvi \advance\bxjx at cnta`##3\relax
       \mathchar\bxjx at cnta
     \else ##3\fi}
-}\expandafter\bxjx at do\string\mathchar\relax
+}\expandafter\bxjx at tmpdo\string\mathchar\relax
 \ifnum0\if p\bxjx at engine1\fi\if u\bxjx at engine1\fi>0
 \@ifpackageloaded{inputenc}{}{%else
   \RequirePackage[utf8]{inputenc}}
@@ -230,12 +241,10 @@
 \kcatcode"0400=15
 \kcatcode"0500=15
 \fi
-\def\do#1{%
+\def\bxjx at tmpdo#1{%
   \@tempcnta="#1\relax
-  \@tempcntb=\@tempcnta \divide\@tempcntb256
-  \expandafter\let\csname bxjx at KCR/\the\@tempcntb\endcsname=t%
-  \expandafter\bxjx at do@a\csname bxjx at KC/\the\@tempcnta\endcsname{#1}}
-\def\bxjx at do@a#1#2#3#4#5{%
+  \expandafter\bxjx at tmpdo@a\csname bxjx at KC/\the\@tempcnta\endcsname{#1}}
+\def\bxjx at tmpdo@a#1#2#3#4#5{%
   \ifx\\#5\\%
     \def\bxjx at tmpa{\@inmathwarn#4}%
   \else\ifcat A\noexpand#5%
@@ -243,34 +252,30 @@
       {\ifnum\uccode`#5=`#5\noexpand\Pi\else\noexpand\pi\fi}}%
   \else \def\bxjx at tmpa{#5}%
   \fi\fi
-  \def\bxjx at tmpb{\bxjx at do@b{#1}{#2}{#3}{#4}}%
+  \def\bxjx at tmpb{\bxjx at tmpdo@b{#1}{#2}{#3}{#4}}%
   \expandafter\bxjx at tmpb\expandafter{\bxjx at tmpa}}
 \if u\bxjx at engine
-\def\bxjx at do@b#1#2#3#4#5{%
+\def\bxjx at tmpdo@b#1#2#3#4#5{%
   \kchardef#1=\@tempcnta
   \DeclareTextCommandDefault{#4}{\bxjx at ja@or at not{#1}{#3}{#4}}%
   \DeclareUnicodeCharacter{#2}{\TextOrMath{#4}{#5}}}
 \else\if p\bxjx at engine
-\def\bxjx at do@b#1#2#3#4#5{%
+\def\bxjx at tmpdo@b#1#2#3#4#5{%
   \mathchardef#1=\@tempcnta
   \DeclareTextCommandDefault{#4}{\bxjx at ja@or at not{\UTF{#2}}{#3}{#4}}%
   \DeclareUnicodeCharacter{#2}{\TextOrMath{#4}{#5}}}
 \fi\fi
-\bxjx at grkcyr@list
-\let\bxjx at do@a\undefined
-\let\bxjx at do@b\undefined
+\let\do\bxjx at tmpdo \bxjx at grkcyr@list
 \@onlypreamble\bxjx at org@DeclareUnicodeCharacter
 \let\bxjx at org@DeclareUnicodeCharacter\DeclareUnicodeCharacter
 \@onlypreamble\bxjx at DeclareUnicodeCharacter
 \def\bxjx at DeclareUnicodeCharacter#1#2{%
-  \count@="#1\relax \bxjx at cnta\count@ \divide\bxjx at cnta256
-  \expandafter\ifx\csname bxjx at KCR/\the\bxjx at cnta\endcsname\relax
+  \count@="#1\relax
+  \expandafter\ifx\csname bxjx at KC/\the\count@\endcsname\relax
     \bxjx at org@DeclareUnicodeCharacter{#1}{#2}%
-  \else\expandafter\ifx\csname bxjx at KC/\the\count@\endcsname\relax
-    \bxjx at org@DeclareUnicodeCharacter{#1}{#2}%
   \else
     \wlog{ \space\space skipped defining Unicode char U+#1}%
-  \fi\fi}
+  \fi}
 \def\bxjx at ja@or at not#1#2#3{%
   \ifbxjx at gcc@cjk #1%
   \else\expandafter\ifx\csname T@#2\endcsname\relax #1%
@@ -286,15 +291,16 @@
 \def\bxjx at swap@DUC at cmd{%
   \let\bxjx at tmpa\DeclareUnicodeCharacter
   \let\DeclareUnicodeCharacter\bxjx at DeclareUnicodeCharacter
-  \let\bxjx at DeclareUnicodeCharacter\bxjx at tmpa}
+  \let\bxjx at DeclareUnicodeCharacter\bxjx at tmpa
+  \let\bxjx at tmpa\relax}
 \else\ifnum0\if x\bxjx at engine1\fi\if l\bxjx at engine1\fi>0
-\def\do#1{%
+\def\bxjx at tmpdo#1{%
   \bxjx at cnta="#1\relax
   \begingroup
     \lccode`~=\bxjx at cnta
   \lowercase{\endgroup
-    \bxjx at do@a{~}}{#1}}
-\def\bxjx at do@a#1#2#3#4#5{%
+    \bxjx at tmpdo@a{~}}{#1}}
+\def\bxjx at tmpdo@a#1#2#3#4#5{%
   \ifx\\#5\\\let\bxjx at tmpa\relax
   \else\ifcat A\noexpand#5%
     \edef\bxjx at tmpa{\noexpand\bxjx at fake@grk{#5}%
@@ -305,8 +311,7 @@
     \mathcode\bxjx at cnta"8000 \let#1\bxjx at tmpa
   \fi}
 \mathchardef\bxjx at tmpa="119
-\ifx\bxjx at tmpa\pi \bxjx at grkcyr@list \fi
-\let\bxjx at do@a\undefined
+\ifx\bxjx at tmpa\pi \let\do\bxjx at tmpdo \bxjx at grkcyr@list \fi
 \if l\bxjx at engine
   \protected\def\greekasCJK{%
     \bxjx at gcc@cjktrue
@@ -316,14 +321,17 @@
     \ltjsetparameter{jacharrange={-2, -8}}}
 \fi
 \if x\bxjx at engine
+  \let\bxjx at gcc@cjk at list\@empty
+  \def\do#1#2#3#4{%
+    \edef\bxjx at gcc@cjk at list{\bxjx at gcc@cjk at list
+      \noexpand\XeTeXcharclass"#1\bxjx at cnta}}
+  \bxjx at grkcyr@list
   \protected\def\greekasCJK{%
     \bxjx at gcc@cjktrue
-    \def\do##1##2##3##4{\XeTeXcharclass"##1\@ne}%
-    \bxjx at grkcyr@list}
+    \bxjx at cnta=\@ne \bxjx at gcc@cjk at list}
   \protected\def\nogreekasCJK{%
     \bxjx at gcc@cjkfalse
-    \def\do##1##2##3##4{\XeTeXcharclass"##1\z@}%
-    \bxjx at grkcyr@list}
+    \bxjx at cnta=\z@ \bxjx at gcc@cjk at list}
 \fi
 \fi\fi
 \nogreekasCJK

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty	2018-04-30 22:39:09 UTC (rev 47516)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty	2018-04-30 22:40:21 UTC (rev 47517)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesPackage{bxjscompat}
-  [2018/03/29 v1.8a BXJS document classes]
+  [2018/04/19 v1.9  BXJS document classes]
 \def\bxac at pkgname{bxjscompat}
 \let\bxac at engine=n
 \def\bxac at do#1#2{%
@@ -119,6 +119,29 @@
     range(0x2B820, 0x2CEA1, 11, false)
     range(0x2CEA2, 0x2FFFD, 11, true)
   }\fi
+\begingroup
+  \catcode`\~=12 \let\0\relax \let\1\relax \let\2\relax
+  \directlua{
+    if not bxjs then bxjs = {} end
+    function bxjs.get_new_gengo()
+      local lc_time = nil
+      local ok, ret = pcall(function()
+        assert(os.type == "unix")
+        lc_time = os.setlocale(nil, "time")
+        assert(os.setlocale("ja_JP.utf8", "time") or
+          os.setlocale("ja_JP.UTF-8", "time"))
+        local heisei = "\229\185\179\230\136\144"
+        local kanji = "[\228-\233][\128-\191][\128-\191]"
+        local gh = os.date("\037EC", 1500000000)
+        local gn = os.date("\037EC", 1600000000)
+        assert(gh == heisei and gn ~= heisei and
+          gn:match("^"..kanji..kanji.."$"))
+        return gn
+      end)
+      os.setlocale(lc_time, "time")
+      return ok and ret or ""
+    end}
+\endgroup
 \fi
 \endinput
 %%

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def	2018-04-30 22:39:09 UTC (rev 47516)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def	2018-04-30 22:40:21 UTC (rev 47517)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-minimal.def}
-  [2018/03/29 v1.8a BXJS document classes]
+  [2018/04/19 v1.9  BXJS document classes]
 %% このファイルは日本語文字を含みます
 \def\DeclareJaTextFontCommand#1#2{%
   \DeclareRobustCommand#1[1]{%
@@ -42,7 +42,7 @@
 \@onlypreamble\bxjs at if@sf at default
 \def\bxjs at if@sf at default#1{%
   \ifx\familydefault\bxjs@@CSsfdefault#1\fi
-  \AtBeginDocument{%
+  \g at addto@macro\bxjs at begin@document at hook{%
     \ifx\familydefault\bxjs@@CSsfdefault#1\fi}%
 }
 \@tempdima\p@ \bxjs at invscale\@tempdima\jsScale
@@ -141,17 +141,17 @@
 }
 \def\bxjs at sizereference{jis}
 \fi
-\def\bxjs at tmpa#1/#2/#3/#4/#5\relax{%
-  \def\bxjs at y{#5}}
-\ifjsWithpTeXng \def\bxjs at y{10}%
+\def\bxjs at next#1/#2/#3/#4/#5\relax{%
+  \def\bxjs at tmpb{#5}}
+\ifjsWithpTeXng \def\bxjs at tmpb{10}%
 \else
-\expandafter\expandafter\expandafter\bxjs at tmpa
+\expandafter\expandafter\expandafter\bxjs at next
  \expandafter\string\the\jfont\relax
 \fi
-\@for\bxjs at x:={\jsc at JYn/mc/m/n,\jsc at JYn/gt/m/n,%
+\@for\bxjs at tmpa:={\jsc at JYn/mc/m/n,\jsc at JYn/gt/m/n,%
                \jsc at JTn/mc/m/n,\jsc at JTn/gt/m/n}\do
-  {\expandafter\let\csname\bxjs at x/10\endcsname=\@undefined
-   \expandafter\let\csname\bxjs at x/\bxjs at y\endcsname=\@undefined}
+  {\expandafter\let\csname\bxjs at tmpa/10\endcsname=\@undefined
+   \expandafter\let\csname\bxjs at tmpa/\bxjs at tmpb\endcsname=\@undefined}
 \begingroup
   \font\bxjs at tmpa=\bxjs at sizereference\space at 10pt
   \setbox\z@\hbox{\bxjs at tmpa\char\jis"2121\relax}
@@ -243,7 +243,7 @@
     \relax}%
   \let\bxjs at cjk@loaded\relax
 }
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \@ifpackageloaded{CJK}{%
     \bxjs at cjk@loaded
   }{}%
@@ -257,6 +257,7 @@
 \def\bxjs at let@hchar at chr@xe#1{%
   \lccode`0=`#1\relax
   \lowercase{\bxjs at let@hchar at out\def{{0}}}}
+\@onlypreamble\bxjs at do@precisetext
 \ifx\XeTeXgenerateactualtext\@undefined\else
   \def\bxjs at do@precisetext{%
     \XeTeXgenerateactualtext=\@ne}
@@ -275,7 +276,7 @@
   \XeTeXlinebreakpenalty=0\relax}
 \fi\fi\fi
 \ifx\bxjs at do@simplejasetup\@undefined\else
-  \AtBeginDocument{%
+  \g at addto@macro\bxjs at begin@document at hook{%
     \ifbxjs at simplejasetup
       \bxjs at do@simplejasetup
     \fi}
@@ -283,14 +284,13 @@
 \ifbxjs at precisetext
   \ifx\bxjs at do@precisetext\@undefined
     \ClassWarning\bxjs at clsname
-     {The current engine does not supprt the\MessageBreak
-      'precisetext' option\@gobble}
+     {The current engine does not support the\MessageBreak
+      'precise-text' option\@gobble}
   \else
     \bxjs at do@precisetext
   \fi
 \fi
-\@onlypreamble\bxjs at check@everyparhook
-\def\bxjs at check@everyparhook{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \ifx\jsInhibitGlueAtParTop\@empty
     \def\bxjs at tmpa{\jsInhibitGlueAtParTop}%
     \ifx\everyparhook\bxjs at tmpa
@@ -297,7 +297,6 @@
       \let\everyparhook\@empty
     \fi
   \fi}
-\AtBeginDocument{\bxjs at check@everyparhook}
 \ifnum\bxjs at everyparhook=\bxjs at everyparhook@modern
   \let\bxjs at everypar\everypar
   \newtoks\everypar
@@ -338,7 +337,7 @@
 \let\bxjs at org@pagestyle\pagestyle
 \def\pagestyle{%
   \bxjs at pagestyle@hook \bxjs at org@pagestyle}
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \bxjs at pagestyle@hook
   \global\let\bxjs at pagestyle@hook\relax}
 \ifbxjs at jaspace@cmd

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def	2018-04-30 22:39:09 UTC (rev 47516)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def	2018-04-30 22:40:21 UTC (rev 47517)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-modern.def}
-  [2018/03/29 v1.8a BXJS document classes]
+  [2018/04/19 v1.9  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	2018-04-30 22:39:09 UTC (rev 47516)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def	2018-04-30 22:40:21 UTC (rev 47517)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-pandoc.def}
-  [2018/03/29 v1.8a BXJS document classes]
+  [2018/04/19 v1.9  BXJS document classes]
 \input{bxjsja-standard.def}
 \RequirePackage{bxjspandoc}
 \@onlypreamble\bxjs at set@dupload at proc
@@ -43,7 +43,7 @@
   \ifbxjs at dlp \expandafter\bxjs at do@dupload at proc
   \else \expandafter\bxjs at org@if at ptions
   \fi {#1}{#2}{#3}}
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \let\@if at ptions\bxjs at org@if at ptions}
 \@onlypreamble\bxjs at do@dupload at proc
 \def\bxjs at do@dupload at proc#1#2#3{%
@@ -81,7 +81,7 @@
   \pandocSkipLoadPackage{xeCJK}
   \providecommand*{\setCJKmainfont}{\setmainjfont}
 \fi
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \@tempswafalse
   \ifx\oldparagraph\@undefined\else
     \@tempswatrue

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def	2018-04-30 22:39:09 UTC (rev 47516)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def	2018-04-30 22:40:21 UTC (rev 47517)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-standard.def}
-  [2018/03/29 v1.8a BXJS document classes]
+  [2018/04/19 v1.9  BXJS document classes]
 %% このファイルは日本語文字を含みます
 \input{bxjsja-minimal.def}
 \bxjs at simplejasetupfalse
@@ -247,7 +247,7 @@
 }
 \@onlypreamble\jsCheckHyperrefUnicode
 \let\jsCheckHyperrefUnicode\@empty
-\AtBeginDocument{\jsCheckHyperrefUnicode}
+\g at addto@macro\bxjs at begin@document at hook{\jsCheckHyperrefUnicode}
 \@onlypreamble\bxjs at check@hyperref at unicode
 \def\bxjs at check@hyperref at unicode#1{%
   \g at addto@macro\jsCheckHyperrefUnicode{%
@@ -268,7 +268,7 @@
 \@onlypreamble\bxjs at urgent@special
 \def\bxjs at urgent@special#1{%
   \AtBeginDvi{\special{#1}}%
-  \AtBeginDocument{%
+  \g at addto@macro\bxjs at begin@document at hook{%
     \@ifpackageloaded{atbegshi}{%
       \begingroup
         \toks\z@{\special{#1}}%
@@ -278,9 +278,11 @@
     }{}%
   }%
 }
+\@onlypreamble\bxjs at resolve@jafont at paren
 \def\bxjs at resolve@jafont at paren#1{%
   \def\bxjs at tmpb{\let#1}%
   \expandafter\bxjs at resolve@jafont at paren@a#1\@nil()\@nil\relax}
+\@onlypreamble\bxjs at resolve@jafont at paren@a
 \def\bxjs at resolve@jafont at paren@a#1(#2)#3\@nil#4\relax{%
   \ifx\relax#4\relax \bxjs at tmpb\jsJaFont
   \else
@@ -342,16 +344,16 @@
   }\bxjs at next
 \fi
 \begingroup
-  \global\let\@gtempa\relax
+  \global\let\bxjs at g@tmpa\relax
   \catcode`\|=0 \catcode`\\=12
-  |def|bxjs at check#1|@nil{%
-    |bxjs at check@a#1|@nil\RequirePackage|@nnil}%
-  |def|bxjs at check@a#1\RequirePackage#2|@nnil{%
-    |ifx$#1$|bxjs at check@b#2|@nil keyval|@nnil |fi}%
+  |def|bxjs at tmpdo#1|@nil{%
+    |bxjs at tmpdo@a#1|@nil\RequirePackage|@nnil}%
+  |def|bxjs at tmpdo@a#1\RequirePackage#2|@nnil{%
+    |ifx$#1$|bxjs at tmpdo@b#2|@nil keyval|@nnil |fi}%
   |catcode`|\=0 \catcode`\|=12
-  \def\bxjs at check@b#1keyval#2\@nnil{%
+  \def\bxjs at tmpdo@b#1keyval#2\@nnil{%
     \ifx$#2$\else
-      \xdef\@gtempa{%
+      \xdef\bxjs at g@tmpa{%
         \noexpand\PassOptionsToPackage{scale=\jsScale}{otf}}%
     \fi}
 \@firstofone{%
@@ -362,13 +364,13 @@
   \loop\if at tempswa
     \ifeof\@inputcheck \@tempswafalse \fi
     \if at tempswa
-      \read\@inputcheck to\bxjs at line
-      \expandafter\bxjs at check\bxjs at line\@nil
+      \read\@inputcheck to\bxjs at next
+      \expandafter\bxjs at tmpdo\bxjs at next\@nil
     \fi
   \repeat
   \closein\@inputcheck
 \endgroup}
-\@gtempa
+\bxjs at g@tmpa
 \ifbxjs at hyperref@enc
   \bxjs at check@hyperref at unicode{false}
 \fi
@@ -397,7 +399,7 @@
   \SetSymbolFont{mincho}{bold}{\jsc at JYn}{gt}{m}{n}
   \jfam\symmincho
   \DeclareMathAlphabet{\mathgt}{\jsc at JYn}{gt}{m}{n}
-  \AtBeginDocument{%
+  \g at addto@macro\bxjs at begin@document at hook{%
     \ifx\reDeclareMathAlphabet\@undefined\else
       \reDeclareMathAlphabet{\mathrm}{\@mathrm}{\@mathmc}%
       \reDeclareMathAlphabet{\mathbf}{\@mathbf}{\@mathgt}%
@@ -569,7 +571,7 @@
 \DeclareRobustCommand\ttfamily
   {\not at math@alphabet\ttfamily\mathtt
    \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}
   \reDeclareMathAlphabet{\mathbf}{\mathbf}{\mathgt}%
   \reDeclareMathAlphabet{\mathsf}{\mathsf}{\mathgt}}%

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty	2018-04-30 22:39:09 UTC (rev 47516)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty	2018-04-30 22:40:21 UTC (rev 47517)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesPackage{bxjspandoc}
-  [2018/03/29 v1.8a BXJS document classes]
+  [2018/04/19 v1.9  BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjsp at pkgname{bxjscjkcat}
 \let\bxjsp at engine=n
@@ -34,6 +34,7 @@
 \bxjsp at do\XeTeXversion{\let\bxjsp at engine=x}
 \bxjsp at do\pdftexversion{\let\bxjsp at engine=p}
 \bxjsp at do\luatexversion{\let\bxjsp at engine=l}
+\@onlypreamble\pandocSkipLoadFile
 \newcommand*\pandocSkipLoadFile[1]{%
   \expandafter\bxjsp at skip@load at file@a\csname ver@#1\endcsname{#1}}
 \def\bxjsp at skip@load at file@a#1#2{%
@@ -42,6 +43,7 @@
     \PackageInfo\bxjsp at pkgname
      {File '#2' marked as loaded\@gobble}%
   \fi}
+\@onlypreamble\pandocSkipLoadPackage
 \newcommand*\pandocSkipLoadPackage[1]{%
   \pandocSkipLoadFile{#1.sty}}
 \ifx\@IncludeInRelease\@undefined\else
@@ -81,7 +83,7 @@
   \bxjsp at ja@ellipsis \let\bxjsp at tok=}
 \def\bxjsp at ldots@g{%
   \expandafter\bxjsp at org@ldots\expandafter{\romannumeral-`} }
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \let\bxjsp at org@ldots\ldots
   \let\ldots\pandocLdots}
 \IfFileExists{bxpandola.sty}{%

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls	2018-04-30 22:39:09 UTC (rev 47516)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls	2018-04-30 22:40:21 UTC (rev 47517)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsreport}
-  [2018/03/29 v1.8a BXJS document classes]
+  [2018/04/19 v1.9  BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsreport}
 \newif\ifjsc at needsp@tch
@@ -68,6 +68,9 @@
    {It's a fatal error. I'll quit right now.}
   \expandafter\@firstofone
 \fi{\endinput\@@end}
+\ifx l\jsEngine
+  \directlua{ bxjs = {} }
+\fi
 \ifjsWitheTeX \let\bxjs at protected\protected
 \else \let\bxjs at protected\@empty
 \fi
@@ -107,12 +110,12 @@
     \fi
   \endgroup
   #1=\bxjs at g@tmpa\relax}
-\if j\jsEngine \def\bxjs at parse@qh at all{zw,zh}
-\else \def\bxjs at parse@qh at all{trueQ,trueH,Q,H,zw,zh}
+\if j\jsEngine \def\bxjs at parse@qh at units{zw,zh}
+\else \def\bxjs at parse@qh at units{trueQ,trueH,Q,H,zw,zh}
 \fi
 \def\bxjs at parse@qh#1{%
   \let\bxjs at tmpb\relax
-  \@for\bxjs at tmpa:=\bxjs at parse@qh at all\do{%
+  \@for\bxjs at tmpa:=\bxjs at parse@qh at units\do{%
     \ifx\bxjs at tmpb\relax
       \edef\bxjs at next{{\bxjs at tmpa}{#1}}%
       \expandafter\bxjs at parse@qh at a\csname bxjs at unit@\bxjs at tmpa\expandafter
@@ -133,18 +136,28 @@
     \fi
   \fi}
   \def\bxjs at unit@Q{0.25mm}\let\bxjs at unit@H\bxjs at unit@Q
+\@onlypreamble\bxjs at begin@document at hook
+\let\bxjs at begin@document at hook\@empty
+\AtBeginDocument{\bxjs at begin@document at hook}
+\@onlypreamble\bxjs at post@option at hook
+\let\bxjs at post@option at hook\@empty
+\@onlypreamble\bxjs at pre@jadriver at hook
+\let\bxjs at pre@jadriver at hook\@empty
 \def\jsAtEndOfClass{%
   \expandafter\g at addto@macro\csname\bxjs at clsname.cls-h@@k\endcsname}
-\@onlypreamble\bxjs at restore@jltrcc
-\let\bxjs at restore@jltrcc\@empty
+\@onlypreamble\bxjs at tmpdo
+\@onlypreamble\bxjs at tmpdo@a
+\@onlypreamble\bxjs at tmpdo@b
+\@onlypreamble\bxjs at tmpdo@c
+\@onlypreamble\bxjs at tmpdo@d
 \if l\jsEngine
-\def\bxjs at change@jltrcc#1{%
-  \xdef\bxjs at restore@jltrcc{%
-    \bxjs at restore@jltrcc
+\def\bxjs at tmpdo#1{%
+  \xdef\bxjs at pre@jadriver at hook{%
+    \bxjs at pre@jadriver at hook
     \catcode`#1=\the\catcode`#1\relax}%
   \catcode`#1=11\relax}
-\@tfor\bxjs at x:=西暦\do
-  {\expandafter\bxjs at change@jltrcc\bxjs at x}
+\@tfor\bxjs at tmpa:=和西暦\do
+  {\expandafter\bxjs at tmpdo\bxjs at tmpa}
 \fi
 \bxjs at robust@def\jsInhibitGlue{%
   \ifx\inhibitglue\@undefined\else \inhibitglue \fi}
@@ -164,6 +177,7 @@
 \newif\if at openleft
 \newif\if at mainmatter \@mainmattertrue
 \newif\if at enablejfam \@enablejfamfalse
+\@onlypreamble\bxjs at setpaper
 \def\bxjs at setpaper#1{\def\bxjs at param@paper{#1}}
 \DeclareOption{a3paper}{\bxjs at setpaper{a3paper}}
 \DeclareOption{a4paper}{\bxjs at setpaper{a4paper}}
@@ -307,7 +321,7 @@
   \expandafter\let\expandafter\ifjsDraft\csname if#1\endcsname}
 \DeclareOption{draft}{\bxjs at draft{true}\setlength\overfullrule{5pt}}
 \DeclareOption{final}{\bxjs at draft{false}\setlength\overfullrule{0pt}}
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \expandafter\ifx\csname ifdraft\endcsname\relax
     \expandafter\let\csname ifdraft\expandafter\endcsname
      \csname ifjsDraft\endcsname
@@ -347,9 +361,8 @@
       \else \@tempdimb=\@tempcntb\@ne \fi}%
     \xdef\bxjs at gtmpa{\the\@tempdimb}%
   \endgroup #1=\bxjs at gtmpa\relax}
-\let\bxjs at composite@proc\relax
 \DeclareOption{pandoc}{%
-  \def\bxjs at composite@proc{%
+  \g at addto@macro\bxjs at post@option at hook{%
     \bxjs at oldfontcommandstrue
     \setkeys{bxjs}{ja=pandoc}%
     \let\bxjs at engine@given=*}%
@@ -414,26 +427,6 @@
   \let\bxjs at driver@given\bxjs at driver@@xetex}
 \DeclareOption{dvipdfmx-if-dvi}{%
   \setkeys{bxjs}{dvi=dvipdfmx}}
-\newif\ifbxjs at usezw \bxjs at usezwtrue
-\DeclareOption{nozw}{%
-  \bxjs at usezwfalse}
-\DeclareOption{zw}{%
-  \bxjs at usezwtrue}
-\newif\ifbxjs at disguise@js \bxjs at disguise@jstrue
-\DeclareOption{nojs}{%
-  \bxjs at disguise@jsfalse}
-\DeclareOption{js}{%
-  \bxjs at disguise@jstrue}
-\newif\ifbxjs at precisetext
-\DeclareOption{noprecisetext}{%
-  \bxjs at precisetextfalse}
-\DeclareOption{precisetext}{%
-  \bxjs at precisetexttrue}
-\newif\ifbxjs at simplejasetup \bxjs at simplejasetuptrue
-\DeclareOption{nosimplejasetup}{%
-  \bxjs at simplejasetupfalse}
-\DeclareOption{simplejasetup}{%
-  \bxjs at simplejasetuptrue}
 \newif\ifbxjs at bigcode \bxjs at bigcodefalse
 \edef\bxjs at tmpa{\expandafter\noexpand\csname\endcsname}
 \def\bxjs at tmpb#1 #2#3\@nil{%
@@ -448,16 +441,27 @@
   \bxjs at oldfontcommandsfalse}
 \DeclareOption{oldfontcommands}{%
   \bxjs at oldfontcommandstrue}
-\def\bxjs at setkey{%
-  \expandafter\bxjs at setkey@a\expandafter{\CurrentOption}}
-\def\bxjs at setkey@a{\bxjs at safe@setkeys{bxjs}}
-\DeclareOption*{\bxjs at setkey}
+\DeclareOption*{%
+  \def\bxjs at next{\bxjs at safe@setkeys{bxjs}}%
+  \expandafter\bxjs at next\expandafter{\CurrentOption}}
 \def\bxjs at safe@setkeys#1#2{%
-  \let\bxjs at KV@errx\KV at errx
-  \let\KV at errx\bxjs at safe@setkeys at a
+  \let\bxjs at save@KV at errx\KV at errx \let\KV at errx\@gobble
   \setkeys{#1}{#2}%
-  \let\KV at errx\bxjs at KV@errx}
-\def\bxjs at safe@setkeys at a#1{}
+  \let\KV at errx\bxjs at save@KV at errx}
+\@onlypreamble\bxjs at declare@enum at option
+\def\bxjs at declare@enum at option#1#2{%
+  \define at key{bxjs}{#1}{%
+    \expandafter\ifx\csname bxjs@#2@@##1\endcsname\relax
+      \bxjs at error@keyval{#1}{##1}%
+    \else \bxjs at csletcs{bxjs@#2}{bxjs@#2@@##1}%
+    \fi}}
+\@onlypreamble\bxjs at declare@bool at option
+\def\bxjs at declare@bool at option#1#2{%
+  \define at key{bxjs}{#1}[true]{%
+    \expandafter\ifx\csname bxjs@#2##1\endcsname\relax
+      \bxjs at error@keyval{#1}{##1}%
+    \else \@nameuse{bxjs@#2##1}%
+    \fi}}
 \def\bxjs at set@keyval#1#2#3{%
   \expandafter\let\expandafter\bxjs at next\csname bxjs at kv@#1@#2\endcsname
   \ifx\bxjs at next\relax
@@ -485,9 +489,9 @@
 \define at key{bxjs}{mag}{\edef\bxjs at param@mag{#1}}
 \define at key{bxjs}{paper}{\edef\bxjs at param@paper{#1}}
 \let\bxjs at jadriver\relax
-\define at key{bxjs}{jadriver}{\edef\bxjs at jadriver{#1}}
+\define at key{bxjs}{jadriver}{\edef\bxjs at jadriver@opt{#1}}
 \define at key{bxjs}{ja}[\relax]{%
-  \ifx\relax#1\else\edef\bxjs at jadriver{#1}\fi}
+  \ifx\relax#1\else\edef\bxjs at jadriver@opt{#1}\fi}
 \let\jsJaFont\@empty
 \define at key{bxjs}{jafont}{\edef\jsJaFont{#1}}
 \let\jsJaParam\@empty
@@ -558,7 +562,7 @@
 \define at key{bxjs}{layout}{%
   \bxjs at set@keyval{layout}{#1}{}}
 \define at key{bxjs}{textwidth-limit}{%
-  \edef\bxjs at textwidth@limit{#1}}
+  \edef\bxjs at textwidth@limit at opt{#1}}
 \define at key{bxjs}{textwidth}{\edef\bxjs at textwidth@opt{#1}}
 \define at key{bxjs}{line_length}{\setkeys{bxjs}{textwidth=#1}}
 \define at key{bxjs}{number-of-lines}{\edef\bxjs at number@of at lines@opt{#1}}
@@ -602,15 +606,31 @@
 \def\bxjs at kv@labelsection at compat{\let\bxjs at label@section\bxjs at label@section at compat}
 \def\bxjs at kv@labelsection at modern{\let\bxjs at label@section\bxjs at label@section at modern}
 \define at key{bxjs}{label-section}{\bxjs at set@keyval{labelsection}{#1}{}}
-\let\bxjs at ltx@removeelement\@removeelement
+\newif\ifbxjs at usezw \bxjs at usezwtrue
+\bxjs at declare@bool at option{use-zw}{usezw}
+\DeclareOption{nozw}{\setkeys{bxjs}{use-zw=false}}
+\DeclareOption{zw}{\setkeys{bxjs}{use-zw=true}}
+\newif\ifbxjs at disguise@js \bxjs at disguise@jstrue
+\bxjs at declare@bool at option{disguise-js}{disguise at js}
+\DeclareOption{nojs}{\setkeys{bxjs}{disguise-js=false}}
+\DeclareOption{js}{\setkeys{bxjs}{disguise-js=true}}
+\newif\ifbxjs at precisetext
+\bxjs at declare@bool at option{precise-text}{precisetext}
+\DeclareOption{noprecisetext}{\setkeys{bxjs}{precise-text=false}}
+\DeclareOption{precisetext}{\setkeys{bxjs}{precise-text=true}}
+\newif\ifbxjs at simplejasetup \bxjs at simplejasetuptrue
+\bxjs at declare@bool at option{simple-ja-setup}{simplejasetup}
+\DeclareOption{nosimplejasetup}{\setkeys{bxjs}{simple-ja-setup=false}}
+\DeclareOption{simplejasetup}{\setkeys{bxjs}{simple-ja-setup=true}}
+\let\bxjs at org@removeelement\@removeelement
 \def\@removeelement#1#2#3{%
   \def\reserved at a{#2}%
   \ifx\reserved at a\@empty \let#3\@empty
-  \else \bxjs at ltx@removeelement{#1}{#2}{#3}%
+  \else \bxjs at org@removeelement{#1}{#2}{#3}%
   \fi}
 \ExecuteOptions{a4paper,oneside,onecolumn,titlepage,openany,final}
 \ProcessOptions\relax
-\bxjs at composite@proc
+\bxjs at post@option at hook
 \if at slide
   \def\maybeblue{\@ifundefined{ver at color.sty}{}{\color{blue}}}
 \fi
@@ -619,24 +639,20 @@
   \setlength\paperheight{\paperwidth}
   \setlength\paperwidth {\@tempdima}
 \fi
-\@onlypreamble\bxjs at purge@brace at elts
-\def\bxjs at purge@brace at elts{%
+\def\bxjs at tmpdo{%
   \def\bxjs at tmpa{\@gobble}%
-  \expandafter\bxjs at purge@be at a\@classoptionslist,\@nil,%
+  \expandafter\bxjs at tmpdo@a\@classoptionslist,\@nil,%
   \let\@classoptionslist\bxjs at tmpa}
-\@onlypreamble\bxjs at purge@be at a
-\def\bxjs at purge@be at a#1,{%
+\def\bxjs at tmpdo@a#1,{%
   \ifx\@nil#1\relax\else
-    \bxjs at purge@be at b#1{}\@nil
+    \bxjs at tmpdo@b#1{}\@nil
     \if at tempswa \edef\bxjs at tmpa{\bxjs at tmpa,#1}\fi
-    \expandafter\bxjs at purge@be at a
+    \expandafter\bxjs at tmpdo@a
   \fi}
-\@onlypreamble\bxjs at purge@be at b
-\def\bxjs at purge@be at b#1#{\bxjs at purge@be at c}
-\@onlypreamble\bxjs at purge@be at c
-\def\bxjs at purge@be at c#1\@nil{%
+\def\bxjs at tmpdo@b#1#{\bxjs at tmpdo@c}
+\def\bxjs at tmpdo@c#1\@nil{%
   \ifx\@nil#1\@nil \@tempswatrue \else \@tempswafalse \fi}
-\bxjs at purge@brace at elts
+\bxjs at tmpdo
 \@expandtwoargs\@removeelement
   {papersize}\@classoptionslist\@classoptionslist
 \@expandtwoargs\@removeelement
@@ -643,8 +659,8 @@
   {10pt}\@classoptionslist\@classoptionslist
 \@expandtwoargs\@removeelement
   {noscale}\@classoptionslist\@classoptionslist
-\ifx\bxjs at jadriver\relax\else
-  \let\bxjs at jadriver@given\bxjs at jadriver
+\ifx\bxjs at jadriver@opt\@undefined\else
+  \let\bxjs at jadriver\bxjs at jadriver@opt
 \fi
 \let\bxjs at tmpb\jsEngine
 \ifx j\bxjs at tmpb\ifjsWithpTeXng
@@ -704,17 +720,17 @@
 \else \@tempswatrue
 \fi\fi\fi
 \if at tempswa
-  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@given\@undefined\else
+  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@opt\@undefined\else
     \ClassWarningNoLine\bxjs at clsname
     {No driver option is given}
   \fi\fi
   \ifbxjs at dvi@opt
-    \edef\bxjs at nxt{%
+    \edef\bxjs at next{%
       \let\noexpand\bxjs at driver@given
        \csname bxjs at dvidriver@@\bxjs at driver@opt\endcsname
       \noexpand\g at addto@macro\noexpand\@classoptionslist
        {,\bxjs at driver@opt}%
-    }\bxjs at nxt
+    }\bxjs at next
   \fi
 \fi
 \ifjsWithpTeXng
@@ -735,7 +751,7 @@
     \let\bxjs at jadriver\bxjs@@minimal
   \fi
 \fi
-\ifx\bxjs at jadriver@given\@undefined\else
+\ifx\bxjs at jadriver@opt\@undefined\else
   \ifx\bxjs at engine@given\@undefined
     \ClassError\bxjs at clsname
      {An engine option must be explicitly given}%
@@ -829,6 +845,7 @@
   \catcode`\?=11 \let\p@?\jsc at mpt
 \fi
 \chardef\bxjs at qmcc=\catcode`\?\relax
+\g at addto@macro\bxjs at pre@jadriver at hook{\catcode`\?=12\relax}
 \newdimen\jsZw
 \jsZw=10\jsc at mpt \jsZw=\jsScale\jsZw
 \ifbxjs at usezw
@@ -928,10 +945,10 @@
   \skip2=\abovedisplayshortskip
   \skip4=\belowdisplayskip
   \skip6=\belowdisplayshortskip
-  \let\bxjs at ltx@nomath\@nomath
+  \let\bxjs at save@nomath\@nomath
   \let\@nomath\@gobble
   \@currsize\selectfont
-  \let\@nomath\bxjs at ltx@nomath
+  \let\@nomath\bxjs at save@nomath
   \abovedisplayskip=\skip0
   \abovedisplayshortskip=\skip2
   \belowdisplayskip=\skip4
@@ -1022,6 +1039,8 @@
 \@lowpenalty   51
 \@medpenalty  151
 \@highpenalty 301
+\@onlypreamble\bxjs at bd@pre at geometry@hook
+\let\bxjs at bd@pre at geometry@hook\@empty
 \ifjsc at mag
 \mag=\bxjs at param@mag
 \fi
@@ -1028,15 +1047,15 @@
 \setlength{\topskip}{10\p@?}
 \def\bxjs at unit@trueQ{0.25truemm}\let\bxjs at unit@trueH\bxjs at unit@trueQ
 \def\bxjs at unit@zw{\jsZw}\let\bxjs at unit@zh\bxjs at unit@zw
-\def\bxjs at read@a{\futurelet\bxjs at tmpa\bxjs at read@b}
-\def\bxjs at read@b{%
-  \ifx\bxjs at tmpa\bgroup \expandafter\bxjs at read@c
-  \else \expandafter\bxjs at read@d \fi}
-\def\bxjs at read@c#1#2#3\@nil{\edef\bxjs at param@paper{papersize={#1,#2}}}
-\def\bxjs at read@d#1\@nil{\bxjs at read@e#1,,\@nil}
-\def\bxjs at read@e#1,#2,#3\@nil{%
+\def\bxjs at tmpdo{\futurelet\bxjs at tmpa\bxjs at tmpdo@a}
+\def\bxjs at tmpdo@a{%
+  \ifx\bxjs at tmpa\bgroup \expandafter\bxjs at tmpdo@b
+  \else \expandafter\bxjs at tmpdo@c \fi}
+\def\bxjs at tmpdo@b#1#2#3\@nil{\edef\bxjs at param@paper{papersize={#1,#2}}}
+\def\bxjs at tmpdo@c#1\@nil{\bxjs at tmpdo@d#1,,\@nil}
+\def\bxjs at tmpdo@d#1,#2,#3\@nil{%
   \ifx\@nil#3\@nil\else \edef\bxjs at param@paper{papersize={#1,#2}}\fi}
-\expandafter\bxjs at read@a\bxjs at param@paper\@empty\@empty\@nil
+\expandafter\bxjs at tmpdo\bxjs at param@paper\@empty\@empty\@nil
 \edef\bxjs at layout@paper{%
   \ifjsc at mag truedimen,\fi
   \if at landscape landscape,\fi
@@ -1058,10 +1077,13 @@
   \edef\bxjs at layout{\bxjs at layout lines=\the\@tempcnta,}
 \fi
 \newdimen\fullwidth
+\def\bxjs at preproc@layout{%
+  \edef\bxjs at save@ht at strutbox{\the\ht\strutbox}\ht\strutbox=10\jsc at mpt}
 \def\bxjs at postproc@layout{%
   \ifx\bxjs at geometry@driver\relax\else
     \let\Gm at driver\bxjs at geometry@driver
   \fi
+  \ht\strutbox=\bxjs at save@ht at strutbox\relax
   \ifbxjs at whole@zw at lines
     \@tempdimb=\textwidth
     \if at twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi
@@ -1096,10 +1118,6 @@
 \edef\jsGeometryOptions{%
   \bxjs at layout@paper,\bxjs at layout}
 \ifx\bxjs at geometry\bxjs at geometry@class
-\def\bxjs at geometry@guard at on{%
-  \edef\bxjs at gg@tmp{\the\ht\strutbox}\ht\strutbox=10\jsc at mpt}
-\def\bxjs at geometry@guard at off{%
-  \ht\strutbox=\bxjs at gg@tmp\relax}
 \ifbxjs at papersize
   \ifx\bxjs at driver@given\bxjs at driver@@dvipdfmx
     \PassOptionsToPackage{dvipdfm}{geometry}
@@ -1110,19 +1128,16 @@
 \else
   \PassOptionsToPackage{driver=none}{geometry}
 \fi
-\AtBeginDocument{\bxjs at pre@geometry at hook}
+\AtBeginDocument{\bxjs at bd@pre at geometry@hook}
 \AtBeginDocument{\ImposeOldLuaTeXBehavior}
-\bxjs at geometry@guard at on
+\bxjs at preproc@layout
 \edef\bxjs at next{%
   \noexpand\RequirePackage[\bxjs at layout@paper,\bxjs at layout]{geometry}%
 }\bxjs at next
-\bxjs at geometry@guard at off
 \AtBeginDocument{\RevokeOldLuaTeXBehavior}
 \let\bxjs at geometry@driver\Gm at driver
 \bxjs at postproc@layout
-\@onlypreamble\bxjs at pre@geometry at hook
-\def\bxjs at pre@geometry at hook{%
-  \@ifpackageloaded{geometry}{%
+\g at addto@macro\bxjs at bd@pre at geometry@hook{%
     \@ifpackagelater{geometry}{2010/02/12}{}{%else
       \PackageWarningNoLine\bxjs at clsname
        {The 'geometry' package installed\MessageBreak
@@ -1131,14 +1146,12 @@
         \def\bxjs at Gm@driver{pdftex}
         \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
         \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
-      \fi\fi
-    }%
+      \fi\fi}%
     \ifjsWithpTeXng
       \ifx\Gm at driver\@empty
         \def\Gm at driver{pdftex}%
       \fi
-    \fi
-  }{}}
+    \fi}
 \def\setpagelayout{%
   \bxjs at ifplus{\bxjs at setpagelayout@a\tw@}{%else
     \@ifstar{\bxjs at setpagelayout@a\@ne}{\bxjs at setpagelayout@a\z@}}}
@@ -1150,20 +1163,17 @@
   \or% semireset(+)
     \def\bxjs at next{reset,\bxjs at layout@paper,\bxjs at layout@base,#2}%
   \fi
-  \bxjs at geometry@guard at on
+  \bxjs at preproc@layout
   \edef\bxjs at next{%
     \noexpand\geometry{\bxjs at next}%
   }\bxjs at next
-  \bxjs at geometry@guard at off
   \bxjs at postproc@layout}
 \else\ifx\bxjs at geometry\bxjs at geometry@user
-\AtBeginDocument{\bxjs at check@page at layout}
-\@onlypreamble\bxjs at check@page at layout
-\def\bxjs at check@page at layout{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \ifdim\textwidth=.5\maxdimen
     \ClassError\bxjs at clsname
      {Page layout is not properly set}%
-     {\@ehd}
+     {\@ehd}%
   \fi}
 \def\jsUseMinimalPageLayout{%
   \setlength{\textwidth}{6.5in}%
@@ -2236,7 +2246,7 @@
 \let\jsInhibitGlueAtParTop\@empty
 \def\everyparhook{\jsInhibitGlueAtParTop}
 \ifnum\bxjs at everyparhook=\bxjs at everyparhook@compat
-\AtBeginDocument{\everypar{\everyparhook}}
+\g at addto@macro\bxjs at begin@document at hook{\everypar{\everyparhook}}
 \fi
 \ifx j\jsEngine
 \def\@inhibitglue{%
@@ -2391,6 +2401,7 @@
 \newcommand{\tablename}{\if at english Table~\else 表\fi}
 \newcommand{\appendixname}{\if at english \else 付録\fi}
 \newcommand{\abstractname}{\if at english Abstract\else 概要\fi}
+\@onlypreamble\bxjs at decl@Seireki at cmds
 \@tempswafalse
 \if p\jsEngine \@tempswatrue \fi
 \if n\jsEngine \@tempswatrue \fi
@@ -2437,6 +2448,18 @@
   \def\bxjs at gengo{平成}\advance\bxjs at jayear-1988\relax
   \let\heisei\bxjs at jayear
 \else
+  \IfFileExists{bxwareki.sty}{\IfFileExists{bxwareki2019.def}{%
+    \RequirePackage{bxwareki}[]%
+    \let\bxjs at gengo\WarekiGengo
+  }{}}{}%
+  \if l\jsEngine \ifx\bxjs at gengo\@empty
+    \toks@{}
+    \directlua{pcall(function()
+      tex.toks[0] = bxjs.get_new_gengo()
+    end)}
+    \edef\bxjs at gengo{\the\toks@}
+  \fi\fi
+  \ifx\bxjs at gengo\@empty\else \advance\bxjs at jayear-2018\relax \fi
 \fi\fi\fi
 \edef\jayear{%
   \ifx\bxjs at gengo\@empty \the\bxjs at jayear\bxjs at iai
@@ -2463,7 +2486,7 @@
     }%
   \fi}
 \let\today\bxjs at today
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \ifx\bbl at jpn@Seirekitrue\@undefined\else
     \bxjs at decl@Seireki at cmds
     \g at addto@macro\datejapanese{%
@@ -2480,11 +2503,8 @@
   \onecolumn
   \raggedbottom
 \fi
-\catcode`\?=12
-\ifx\bxjs at jadriver\relax\else
+\bxjs at pre@jadriver at hook
 \input{bxjsja-\bxjs at jadriver.def}
-\fi
-\bxjs at restore@jltrcc
 \endinput
 %%
 %% End of file `bxjsreport.cls'.

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls	2018-04-30 22:39:09 UTC (rev 47516)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls	2018-04-30 22:40:21 UTC (rev 47517)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsslide}
-  [2018/03/29 v1.8a BXJS document classes]
+  [2018/04/19 v1.9  BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsslide}
 \newif\ifjsc at needsp@tch
@@ -68,6 +68,9 @@
    {It's a fatal error. I'll quit right now.}
   \expandafter\@firstofone
 \fi{\endinput\@@end}
+\ifx l\jsEngine
+  \directlua{ bxjs = {} }
+\fi
 \ifjsWitheTeX \let\bxjs at protected\protected
 \else \let\bxjs at protected\@empty
 \fi
@@ -107,12 +110,12 @@
     \fi
   \endgroup
   #1=\bxjs at g@tmpa\relax}
-\if j\jsEngine \def\bxjs at parse@qh at all{zw,zh}
-\else \def\bxjs at parse@qh at all{trueQ,trueH,Q,H,zw,zh}
+\if j\jsEngine \def\bxjs at parse@qh at units{zw,zh}
+\else \def\bxjs at parse@qh at units{trueQ,trueH,Q,H,zw,zh}
 \fi
 \def\bxjs at parse@qh#1{%
   \let\bxjs at tmpb\relax
-  \@for\bxjs at tmpa:=\bxjs at parse@qh at all\do{%
+  \@for\bxjs at tmpa:=\bxjs at parse@qh at units\do{%
     \ifx\bxjs at tmpb\relax
       \edef\bxjs at next{{\bxjs at tmpa}{#1}}%
       \expandafter\bxjs at parse@qh at a\csname bxjs at unit@\bxjs at tmpa\expandafter
@@ -133,18 +136,28 @@
     \fi
   \fi}
   \def\bxjs at unit@Q{0.25mm}\let\bxjs at unit@H\bxjs at unit@Q
+\@onlypreamble\bxjs at begin@document at hook
+\let\bxjs at begin@document at hook\@empty
+\AtBeginDocument{\bxjs at begin@document at hook}
+\@onlypreamble\bxjs at post@option at hook
+\let\bxjs at post@option at hook\@empty
+\@onlypreamble\bxjs at pre@jadriver at hook
+\let\bxjs at pre@jadriver at hook\@empty
 \def\jsAtEndOfClass{%
   \expandafter\g at addto@macro\csname\bxjs at clsname.cls-h@@k\endcsname}
-\@onlypreamble\bxjs at restore@jltrcc
-\let\bxjs at restore@jltrcc\@empty
+\@onlypreamble\bxjs at tmpdo
+\@onlypreamble\bxjs at tmpdo@a
+\@onlypreamble\bxjs at tmpdo@b
+\@onlypreamble\bxjs at tmpdo@c
+\@onlypreamble\bxjs at tmpdo@d
 \if l\jsEngine
-\def\bxjs at change@jltrcc#1{%
-  \xdef\bxjs at restore@jltrcc{%
-    \bxjs at restore@jltrcc
+\def\bxjs at tmpdo#1{%
+  \xdef\bxjs at pre@jadriver at hook{%
+    \bxjs at pre@jadriver at hook
     \catcode`#1=\the\catcode`#1\relax}%
   \catcode`#1=11\relax}
-\@tfor\bxjs at x:=西暦\do
-  {\expandafter\bxjs at change@jltrcc\bxjs at x}
+\@tfor\bxjs at tmpa:=和西暦\do
+  {\expandafter\bxjs at tmpdo\bxjs at tmpa}
 \fi
 \bxjs at robust@def\jsInhibitGlue{%
   \ifx\inhibitglue\@undefined\else \inhibitglue \fi}
@@ -161,6 +174,7 @@
 \newif\if at restonecol
 \newif\if at titlepage
 \newif\if at enablejfam \@enablejfamfalse
+\@onlypreamble\bxjs at setpaper
 \def\bxjs at setpaper#1{\def\bxjs at param@paper{#1}}
 \DeclareOption{a3paper}{\bxjs at setpaper{a3paper}}
 \DeclareOption{a4paper}{\bxjs at setpaper{a4paper}}
@@ -301,7 +315,7 @@
   \expandafter\let\expandafter\ifjsDraft\csname if#1\endcsname}
 \DeclareOption{draft}{\bxjs at draft{true}\setlength\overfullrule{5pt}}
 \DeclareOption{final}{\bxjs at draft{false}\setlength\overfullrule{0pt}}
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \expandafter\ifx\csname ifdraft\endcsname\relax
     \expandafter\let\csname ifdraft\expandafter\endcsname
      \csname ifjsDraft\endcsname
@@ -341,9 +355,8 @@
       \else \@tempdimb=\@tempcntb\@ne \fi}%
     \xdef\bxjs at gtmpa{\the\@tempdimb}%
   \endgroup #1=\bxjs at gtmpa\relax}
-\let\bxjs at composite@proc\relax
 \DeclareOption{pandoc}{%
-  \def\bxjs at composite@proc{%
+  \g at addto@macro\bxjs at post@option at hook{%
     \bxjs at oldfontcommandstrue
     \setkeys{bxjs}{ja=pandoc}%
     \let\bxjs at engine@given=*}%
@@ -408,26 +421,6 @@
   \let\bxjs at driver@given\bxjs at driver@@xetex}
 \DeclareOption{dvipdfmx-if-dvi}{%
   \setkeys{bxjs}{dvi=dvipdfmx}}
-\newif\ifbxjs at usezw \bxjs at usezwtrue
-\DeclareOption{nozw}{%
-  \bxjs at usezwfalse}
-\DeclareOption{zw}{%
-  \bxjs at usezwtrue}
-\newif\ifbxjs at disguise@js \bxjs at disguise@jstrue
-\DeclareOption{nojs}{%
-  \bxjs at disguise@jsfalse}
-\DeclareOption{js}{%
-  \bxjs at disguise@jstrue}
-\newif\ifbxjs at precisetext
-\DeclareOption{noprecisetext}{%
-  \bxjs at precisetextfalse}
-\DeclareOption{precisetext}{%
-  \bxjs at precisetexttrue}
-\newif\ifbxjs at simplejasetup \bxjs at simplejasetuptrue
-\DeclareOption{nosimplejasetup}{%
-  \bxjs at simplejasetupfalse}
-\DeclareOption{simplejasetup}{%
-  \bxjs at simplejasetuptrue}
 \newif\ifbxjs at bigcode \bxjs at bigcodefalse
 \edef\bxjs at tmpa{\expandafter\noexpand\csname\endcsname}
 \def\bxjs at tmpb#1 #2#3\@nil{%
@@ -442,16 +435,27 @@
   \bxjs at oldfontcommandsfalse}
 \DeclareOption{oldfontcommands}{%
   \bxjs at oldfontcommandstrue}
-\def\bxjs at setkey{%
-  \expandafter\bxjs at setkey@a\expandafter{\CurrentOption}}
-\def\bxjs at setkey@a{\bxjs at safe@setkeys{bxjs}}
-\DeclareOption*{\bxjs at setkey}
+\DeclareOption*{%
+  \def\bxjs at next{\bxjs at safe@setkeys{bxjs}}%
+  \expandafter\bxjs at next\expandafter{\CurrentOption}}
 \def\bxjs at safe@setkeys#1#2{%
-  \let\bxjs at KV@errx\KV at errx
-  \let\KV at errx\bxjs at safe@setkeys at a
+  \let\bxjs at save@KV at errx\KV at errx \let\KV at errx\@gobble
   \setkeys{#1}{#2}%
-  \let\KV at errx\bxjs at KV@errx}
-\def\bxjs at safe@setkeys at a#1{}
+  \let\KV at errx\bxjs at save@KV at errx}
+\@onlypreamble\bxjs at declare@enum at option
+\def\bxjs at declare@enum at option#1#2{%
+  \define at key{bxjs}{#1}{%
+    \expandafter\ifx\csname bxjs@#2@@##1\endcsname\relax
+      \bxjs at error@keyval{#1}{##1}%
+    \else \bxjs at csletcs{bxjs@#2}{bxjs@#2@@##1}%
+    \fi}}
+\@onlypreamble\bxjs at declare@bool at option
+\def\bxjs at declare@bool at option#1#2{%
+  \define at key{bxjs}{#1}[true]{%
+    \expandafter\ifx\csname bxjs@#2##1\endcsname\relax
+      \bxjs at error@keyval{#1}{##1}%
+    \else \@nameuse{bxjs@#2##1}%
+    \fi}}
 \def\bxjs at set@keyval#1#2#3{%
   \expandafter\let\expandafter\bxjs at next\csname bxjs at kv@#1@#2\endcsname
   \ifx\bxjs at next\relax
@@ -479,9 +483,9 @@
 \define at key{bxjs}{mag}{\edef\bxjs at param@mag{#1}}
 \define at key{bxjs}{paper}{\edef\bxjs at param@paper{#1}}
 \let\bxjs at jadriver\relax
-\define at key{bxjs}{jadriver}{\edef\bxjs at jadriver{#1}}
+\define at key{bxjs}{jadriver}{\edef\bxjs at jadriver@opt{#1}}
 \define at key{bxjs}{ja}[\relax]{%
-  \ifx\relax#1\else\edef\bxjs at jadriver{#1}\fi}
+  \ifx\relax#1\else\edef\bxjs at jadriver@opt{#1}\fi}
 \let\jsJaFont\@empty
 \define at key{bxjs}{jafont}{\edef\jsJaFont{#1}}
 \let\jsJaParam\@empty
@@ -550,7 +554,7 @@
 \define at key{bxjs}{layout}{%
   \bxjs at set@keyval{layout}{#1}{}}
 \define at key{bxjs}{textwidth-limit}{%
-  \edef\bxjs at textwidth@limit{#1}}
+  \edef\bxjs at textwidth@limit at opt{#1}}
 \define at key{bxjs}{textwidth}{\edef\bxjs at textwidth@opt{#1}}
 \define at key{bxjs}{line_length}{\setkeys{bxjs}{textwidth=#1}}
 \define at key{bxjs}{number-of-lines}{\edef\bxjs at number@of at lines@opt{#1}}
@@ -594,15 +598,31 @@
 \def\bxjs at kv@labelsection at compat{\let\bxjs at label@section\bxjs at label@section at compat}
 \def\bxjs at kv@labelsection at modern{\let\bxjs at label@section\bxjs at label@section at modern}
 \define at key{bxjs}{label-section}{\bxjs at set@keyval{labelsection}{#1}{}}
-\let\bxjs at ltx@removeelement\@removeelement
+\newif\ifbxjs at usezw \bxjs at usezwtrue
+\bxjs at declare@bool at option{use-zw}{usezw}
+\DeclareOption{nozw}{\setkeys{bxjs}{use-zw=false}}
+\DeclareOption{zw}{\setkeys{bxjs}{use-zw=true}}
+\newif\ifbxjs at disguise@js \bxjs at disguise@jstrue
+\bxjs at declare@bool at option{disguise-js}{disguise at js}
+\DeclareOption{nojs}{\setkeys{bxjs}{disguise-js=false}}
+\DeclareOption{js}{\setkeys{bxjs}{disguise-js=true}}
+\newif\ifbxjs at precisetext
+\bxjs at declare@bool at option{precise-text}{precisetext}
+\DeclareOption{noprecisetext}{\setkeys{bxjs}{precise-text=false}}
+\DeclareOption{precisetext}{\setkeys{bxjs}{precise-text=true}}
+\newif\ifbxjs at simplejasetup \bxjs at simplejasetuptrue
+\bxjs at declare@bool at option{simple-ja-setup}{simplejasetup}
+\DeclareOption{nosimplejasetup}{\setkeys{bxjs}{simple-ja-setup=false}}
+\DeclareOption{simplejasetup}{\setkeys{bxjs}{simple-ja-setup=true}}
+\let\bxjs at org@removeelement\@removeelement
 \def\@removeelement#1#2#3{%
   \def\reserved at a{#2}%
   \ifx\reserved at a\@empty \let#3\@empty
-  \else \bxjs at ltx@removeelement{#1}{#2}{#3}%
+  \else \bxjs at org@removeelement{#1}{#2}{#3}%
   \fi}
 \ExecuteOptions{36pt,a4paper,landscape,oneside,onecolumn,titlepage,final}
 \ProcessOptions\relax
-\bxjs at composite@proc
+\bxjs at post@option at hook
 \if at slide
   \def\maybeblue{\@ifundefined{ver at color.sty}{}{\color{blue}}}
 \fi
@@ -611,24 +631,20 @@
   \setlength\paperheight{\paperwidth}
   \setlength\paperwidth {\@tempdima}
 \fi
-\@onlypreamble\bxjs at purge@brace at elts
-\def\bxjs at purge@brace at elts{%
+\def\bxjs at tmpdo{%
   \def\bxjs at tmpa{\@gobble}%
-  \expandafter\bxjs at purge@be at a\@classoptionslist,\@nil,%
+  \expandafter\bxjs at tmpdo@a\@classoptionslist,\@nil,%
   \let\@classoptionslist\bxjs at tmpa}
-\@onlypreamble\bxjs at purge@be at a
-\def\bxjs at purge@be at a#1,{%
+\def\bxjs at tmpdo@a#1,{%
   \ifx\@nil#1\relax\else
-    \bxjs at purge@be at b#1{}\@nil
+    \bxjs at tmpdo@b#1{}\@nil
     \if at tempswa \edef\bxjs at tmpa{\bxjs at tmpa,#1}\fi
-    \expandafter\bxjs at purge@be at a
+    \expandafter\bxjs at tmpdo@a
   \fi}
-\@onlypreamble\bxjs at purge@be at b
-\def\bxjs at purge@be at b#1#{\bxjs at purge@be at c}
-\@onlypreamble\bxjs at purge@be at c
-\def\bxjs at purge@be at c#1\@nil{%
+\def\bxjs at tmpdo@b#1#{\bxjs at tmpdo@c}
+\def\bxjs at tmpdo@c#1\@nil{%
   \ifx\@nil#1\@nil \@tempswatrue \else \@tempswafalse \fi}
-\bxjs at purge@brace at elts
+\bxjs at tmpdo
 \@expandtwoargs\@removeelement
   {papersize}\@classoptionslist\@classoptionslist
 \@expandtwoargs\@removeelement
@@ -635,8 +651,8 @@
   {10pt}\@classoptionslist\@classoptionslist
 \@expandtwoargs\@removeelement
   {noscale}\@classoptionslist\@classoptionslist
-\ifx\bxjs at jadriver\relax\else
-  \let\bxjs at jadriver@given\bxjs at jadriver
+\ifx\bxjs at jadriver@opt\@undefined\else
+  \let\bxjs at jadriver\bxjs at jadriver@opt
 \fi
 \let\bxjs at tmpb\jsEngine
 \ifx j\bxjs at tmpb\ifjsWithpTeXng
@@ -696,17 +712,17 @@
 \else \@tempswatrue
 \fi\fi\fi
 \if at tempswa
-  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@given\@undefined\else
+  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@opt\@undefined\else
     \ClassWarningNoLine\bxjs at clsname
     {No driver option is given}
   \fi\fi
   \ifbxjs at dvi@opt
-    \edef\bxjs at nxt{%
+    \edef\bxjs at next{%
       \let\noexpand\bxjs at driver@given
        \csname bxjs at dvidriver@@\bxjs at driver@opt\endcsname
       \noexpand\g at addto@macro\noexpand\@classoptionslist
        {,\bxjs at driver@opt}%
-    }\bxjs at nxt
+    }\bxjs at next
   \fi
 \fi
 \ifjsWithpTeXng
@@ -727,7 +743,7 @@
     \let\bxjs at jadriver\bxjs@@minimal
   \fi
 \fi
-\ifx\bxjs at jadriver@given\@undefined\else
+\ifx\bxjs at jadriver@opt\@undefined\else
   \ifx\bxjs at engine@given\@undefined
     \ClassError\bxjs at clsname
      {An engine option must be explicitly given}%
@@ -820,6 +836,7 @@
   \catcode`\?=11 \let\p@?\jsc at mpt
 \fi
 \chardef\bxjs at qmcc=\catcode`\?\relax
+\g at addto@macro\bxjs at pre@jadriver at hook{\catcode`\?=12\relax}
 \newdimen\jsZw
 \jsZw=10\jsc at mpt \jsZw=\jsScale\jsZw
 \ifbxjs at usezw
@@ -919,10 +936,10 @@
   \skip2=\abovedisplayshortskip
   \skip4=\belowdisplayskip
   \skip6=\belowdisplayshortskip
-  \let\bxjs at ltx@nomath\@nomath
+  \let\bxjs at save@nomath\@nomath
   \let\@nomath\@gobble
   \@currsize\selectfont
-  \let\@nomath\bxjs at ltx@nomath
+  \let\@nomath\bxjs at save@nomath
   \abovedisplayskip=\skip0
   \abovedisplayshortskip=\skip2
   \belowdisplayskip=\skip4
@@ -1013,6 +1030,8 @@
 \@lowpenalty   51
 \@medpenalty  151
 \@highpenalty 301
+\@onlypreamble\bxjs at bd@pre at geometry@hook
+\let\bxjs at bd@pre at geometry@hook\@empty
 \ifjsc at mag
 \mag=\bxjs at param@mag
 \fi
@@ -1019,15 +1038,15 @@
 \setlength{\topskip}{10\p@?}
 \def\bxjs at unit@trueQ{0.25truemm}\let\bxjs at unit@trueH\bxjs at unit@trueQ
 \def\bxjs at unit@zw{\jsZw}\let\bxjs at unit@zh\bxjs at unit@zw
-\def\bxjs at read@a{\futurelet\bxjs at tmpa\bxjs at read@b}
-\def\bxjs at read@b{%
-  \ifx\bxjs at tmpa\bgroup \expandafter\bxjs at read@c
-  \else \expandafter\bxjs at read@d \fi}
-\def\bxjs at read@c#1#2#3\@nil{\edef\bxjs at param@paper{papersize={#1,#2}}}
-\def\bxjs at read@d#1\@nil{\bxjs at read@e#1,,\@nil}
-\def\bxjs at read@e#1,#2,#3\@nil{%
+\def\bxjs at tmpdo{\futurelet\bxjs at tmpa\bxjs at tmpdo@a}
+\def\bxjs at tmpdo@a{%
+  \ifx\bxjs at tmpa\bgroup \expandafter\bxjs at tmpdo@b
+  \else \expandafter\bxjs at tmpdo@c \fi}
+\def\bxjs at tmpdo@b#1#2#3\@nil{\edef\bxjs at param@paper{papersize={#1,#2}}}
+\def\bxjs at tmpdo@c#1\@nil{\bxjs at tmpdo@d#1,,\@nil}
+\def\bxjs at tmpdo@d#1,#2,#3\@nil{%
   \ifx\@nil#3\@nil\else \edef\bxjs at param@paper{papersize={#1,#2}}\fi}
-\expandafter\bxjs at read@a\bxjs at param@paper\@empty\@empty\@nil
+\expandafter\bxjs at tmpdo\bxjs at param@paper\@empty\@empty\@nil
 \edef\bxjs at layout@paper{%
   \ifjsc at mag truedimen,\fi
   \if at landscape landscape,\fi
@@ -1048,10 +1067,13 @@
   \edef\bxjs at layout{\bxjs at layout lines=\the\@tempcnta,}
 \fi
 \newdimen\fullwidth
+\def\bxjs at preproc@layout{%
+  \edef\bxjs at save@ht at strutbox{\the\ht\strutbox}\ht\strutbox=10\jsc at mpt}
 \def\bxjs at postproc@layout{%
   \ifx\bxjs at geometry@driver\relax\else
     \let\Gm at driver\bxjs at geometry@driver
   \fi
+  \ht\strutbox=\bxjs at save@ht at strutbox\relax
   \ifbxjs at whole@zw at lines
     \@tempdimb=\textwidth
     \if at twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi
@@ -1086,10 +1108,6 @@
 \edef\jsGeometryOptions{%
   \bxjs at layout@paper,\bxjs at layout}
 \ifx\bxjs at geometry\bxjs at geometry@class
-\def\bxjs at geometry@guard at on{%
-  \edef\bxjs at gg@tmp{\the\ht\strutbox}\ht\strutbox=10\jsc at mpt}
-\def\bxjs at geometry@guard at off{%
-  \ht\strutbox=\bxjs at gg@tmp\relax}
 \ifbxjs at papersize
   \ifx\bxjs at driver@given\bxjs at driver@@dvipdfmx
     \PassOptionsToPackage{dvipdfm}{geometry}
@@ -1100,19 +1118,16 @@
 \else
   \PassOptionsToPackage{driver=none}{geometry}
 \fi
-\AtBeginDocument{\bxjs at pre@geometry at hook}
+\AtBeginDocument{\bxjs at bd@pre at geometry@hook}
 \AtBeginDocument{\ImposeOldLuaTeXBehavior}
-\bxjs at geometry@guard at on
+\bxjs at preproc@layout
 \edef\bxjs at next{%
   \noexpand\RequirePackage[\bxjs at layout@paper,\bxjs at layout]{geometry}%
 }\bxjs at next
-\bxjs at geometry@guard at off
 \AtBeginDocument{\RevokeOldLuaTeXBehavior}
 \let\bxjs at geometry@driver\Gm at driver
 \bxjs at postproc@layout
-\@onlypreamble\bxjs at pre@geometry at hook
-\def\bxjs at pre@geometry at hook{%
-  \@ifpackageloaded{geometry}{%
+\g at addto@macro\bxjs at bd@pre at geometry@hook{%
     \@ifpackagelater{geometry}{2010/02/12}{}{%else
       \PackageWarningNoLine\bxjs at clsname
        {The 'geometry' package installed\MessageBreak
@@ -1121,14 +1136,12 @@
         \def\bxjs at Gm@driver{pdftex}
         \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
         \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
-      \fi\fi
-    }%
+      \fi\fi}%
     \ifjsWithpTeXng
       \ifx\Gm at driver\@empty
         \def\Gm at driver{pdftex}%
       \fi
-    \fi
-  }{}}
+    \fi}
 \def\setpagelayout{%
   \bxjs at ifplus{\bxjs at setpagelayout@a\tw@}{%else
     \@ifstar{\bxjs at setpagelayout@a\@ne}{\bxjs at setpagelayout@a\z@}}}
@@ -1140,20 +1153,17 @@
   \or% semireset(+)
     \def\bxjs at next{reset,\bxjs at layout@paper,\bxjs at layout@base,#2}%
   \fi
-  \bxjs at geometry@guard at on
+  \bxjs at preproc@layout
   \edef\bxjs at next{%
     \noexpand\geometry{\bxjs at next}%
   }\bxjs at next
-  \bxjs at geometry@guard at off
   \bxjs at postproc@layout}
 \else\ifx\bxjs at geometry\bxjs at geometry@user
-\AtBeginDocument{\bxjs at check@page at layout}
-\@onlypreamble\bxjs at check@page at layout
-\def\bxjs at check@page at layout{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \ifdim\textwidth=.5\maxdimen
     \ClassError\bxjs at clsname
      {Page layout is not properly set}%
-     {\@ehd}
+     {\@ehd}%
   \fi}
 \def\jsUseMinimalPageLayout{%
   \setlength{\textwidth}{6.5in}%
@@ -2107,7 +2117,7 @@
 \let\jsInhibitGlueAtParTop\@empty
 \def\everyparhook{\jsInhibitGlueAtParTop}
 \ifnum\bxjs at everyparhook=\bxjs at everyparhook@compat
-\AtBeginDocument{\everypar{\everyparhook}}
+\g at addto@macro\bxjs at begin@document at hook{\everypar{\everyparhook}}
 \fi
 \ifx j\jsEngine
 \def\@inhibitglue{%
@@ -2260,6 +2270,7 @@
 \newcommand{\tablename}{\if at english Table~\else 表\fi}
 \newcommand{\appendixname}{\if at english \else 付録\fi}
 \newcommand{\abstractname}{\if at english Abstract\else 概要\fi}
+\@onlypreamble\bxjs at decl@Seireki at cmds
 \@tempswafalse
 \if p\jsEngine \@tempswatrue \fi
 \if n\jsEngine \@tempswatrue \fi
@@ -2306,6 +2317,18 @@
   \def\bxjs at gengo{平成}\advance\bxjs at jayear-1988\relax
   \let\heisei\bxjs at jayear
 \else
+  \IfFileExists{bxwareki.sty}{\IfFileExists{bxwareki2019.def}{%
+    \RequirePackage{bxwareki}[]%
+    \let\bxjs at gengo\WarekiGengo
+  }{}}{}%
+  \if l\jsEngine \ifx\bxjs at gengo\@empty
+    \toks@{}
+    \directlua{pcall(function()
+      tex.toks[0] = bxjs.get_new_gengo()
+    end)}
+    \edef\bxjs at gengo{\the\toks@}
+  \fi\fi
+  \ifx\bxjs at gengo\@empty\else \advance\bxjs at jayear-2018\relax \fi
 \fi\fi\fi
 \edef\jayear{%
   \ifx\bxjs at gengo\@empty \the\bxjs at jayear\bxjs at iai
@@ -2332,7 +2355,7 @@
     }%
   \fi}
 \let\today\bxjs at today
-\AtBeginDocument{%
+\g at addto@macro\bxjs at begin@document at hook{%
   \ifx\bbl at jpn@Seirekitrue\@undefined\else
     \bxjs at decl@Seireki at cmds
     \g at addto@macro\datejapanese{%
@@ -2351,11 +2374,8 @@
 \fi
   \renewcommand\familydefault{\sfdefault}
   \raggedright
-\catcode`\?=12
-\ifx\bxjs at jadriver\relax\else
+\bxjs at pre@jadriver at hook
 \input{bxjsja-\bxjs at jadriver.def}
-\fi
-\bxjs at restore@jltrcc
 \endinput
 %%
 %% End of file `bxjsslide.cls'.



More information about the tex-live-commits mailing list