texlive[62826] branches/branch2021.final/Master/texmf-dist: bxjscls

commits+karl at tug.org commits+karl at tug.org
Sun Mar 20 22:08:34 CET 2022


Revision: 62826
          http://tug.org/svn/texlive?view=revision&revision=62826
Author:   karl
Date:     2022-03-20 22:08:33 +0100 (Sun, 20 Mar 2022)
Log Message:
-----------
bxjscls (20mar22) (branch)

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

Modified: branches/branch2021.final/Master/texmf-dist/doc/latex/bxjscls/LICENSE
===================================================================
--- branches/branch2021.final/Master/texmf-dist/doc/latex/bxjscls/LICENSE	2022-03-20 21:08:20 UTC (rev 62825)
+++ branches/branch2021.final/Master/texmf-dist/doc/latex/bxjscls/LICENSE	2022-03-20 21:08:33 UTC (rev 62826)
@@ -3,7 +3,7 @@
 Copyright 1995-1999 ASCII Corporation.
 Copyright 1999-2016 Haruhiko Okumura
 Copyright 2016-2020 Japanese TeX Development Community
-Copyright 2013-2021 Takayuki YATO (aka. "ZR")
+Copyright 2013-2022 Takayuki YATO (aka. "ZR")
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without

Modified: branches/branch2021.final/Master/texmf-dist/doc/latex/bxjscls/README-ja.md
===================================================================
--- branches/branch2021.final/Master/texmf-dist/doc/latex/bxjscls/README-ja.md	2022-03-20 21:08:20 UTC (rev 62825)
+++ branches/branch2021.final/Master/texmf-dist/doc/latex/bxjscls/README-ja.md	2022-03-20 21:08:33 UTC (rev 62826)
@@ -99,6 +99,10 @@
 更新履歴
 --------
 
+  * Version 2.6  〈2022/03/20〉
+      - LaTeX カーネル 2021/11/15 版への対応。
+      - 新版の Pandoc テンプレートへの対策。
+      - `\strongfontdeclare` 環境の補填。
   * Version 2.5a 〈2021/05/18〉
       - 新版の Pandoc テンプレートへの対策。
   * Version 2.5  〈2021/02/02〉

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

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

Modified: branches/branch2021.final/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex
===================================================================
--- branches/branch2021.final/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex	2022-03-20 21:08:20 UTC (rev 62825)
+++ branches/branch2021.final/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex	2022-03-20 21:08:33 UTC (rev 62826)
@@ -11,8 +11,8 @@
 \bxtexlogoimport{*}
 \usepackage{shortvrb}
 \MakeShortVerb{\|}
-\newcommand{\PkgVersion}{2.5a}
-\newcommand{\PkgDate}{2021/05/18}
+\newcommand{\PkgVersion}{2.6}
+\newcommand{\PkgDate}{2022/03/20}
 \newcommand{\Pkg}[1]{\textsf{#1}}
 \newcommand{\Meta}[1]{$\langle$\mbox{}\nobr#1\nobr\mbox{}$\rangle$}
 \newcommand{\Note}{\par\noindent ※}
@@ -32,6 +32,17 @@
 \author{八登崇之\ (Takayuki YATO; aka.~``ZR'')}
 \date{v\PkgVersion\quad[\PkgDate]}
 \maketitle
+
+\begin{abstract}
+本パッケージに含まれる文書クラス集は、
+奥村晴彦氏および“日本語{\TeX}開発コミュニティ”により作製された
+\Pkg{jsclasses}パッケージの文書クラス集
+の拡張版に相当する。
+元の\Pkg{jsclasses}のクラスが{\pLaTeX}と{\upLaTeX}のみを
+サポートするのに対して、
+本パッケージのクラスは主要エンジンの全てをサポートする。
+\end{abstract}
+
 \tableofcontents
 
 %===========================================================
@@ -42,7 +53,7 @@
 およびそこからたどれる情報も併せて参照してほしい。
 
 %===========================================================
-\section{概要}
+\section{本パッケージの目的}
 \label{sec:Ovewview}
 
 本パッケージに含まれる文書クラス集
@@ -70,6 +81,8 @@
   同様の機能が提供されている。
 \item 用紙サイズや基底フォントサイズについて、任意の値を指定する
   ことができる。
+\item 文書形式変換ツールPandocを用いた日本語{\LaTeX}文書生成の
+  ために調整された設定である「Pandocモード」が利用できる。
 \end{itemize}
 
 %===========================================================
@@ -197,7 +210,7 @@
 次の設定と大体同じであるが、ただし文書レイアウトは
 \Pkg{article}でなく\Pkg{jsarticle}とほぼ同じになっている:
 \begin{quote}\small\begin{verbatim}
-\documentclass[a4paper]{article}
+\documentclass[a4paper]{article}%ただしレイアウトはjsarticle相当
 \usepackage[whole,autotilde]{bxcjkjatype}
 \end{verbatim}\end{quote}
 
@@ -256,7 +269,7 @@
 次の設定と大体同じであるが、ただし文書レイアウトは
 \Pkg{jsarticle}とほぼ同じになっている:
 \begin{quote}\small\begin{verbatim}
-\documentclass[a4paper,twocolumn]{article}
+\documentclass[a4paper,twocolumn]{article}%ただしレイアウトはjsarticle相当
 \usepackage{zxjatype}
 \setCJKmainfont[BoldFont=HaranoAjiGothic-Medium.otf]{HaranoAjiMincho-Regular.otf}
 \setCJKsansfont[BoldFont=HaranoAjiGothic-Medium.otf]{HaranoAjiGothic-Medium.otf}
@@ -289,8 +302,7 @@
 (ただし\Pkg{luatexja-preset}は実際には読み込まれない):
 \begin{quote}\small\begin{verbatim}
 \documentclass[b5paper,9pt]{ltjsarticle}
-\usepackage{luatexja-fontspec}
-\usepackage[haranoaji]{luatexja-preset}
+\usepackage[haranoaji]{luatexja-preset}%実際にはパッケージは読み込まれない
 \end{verbatim}\end{quote}
 
 \Note 2.0版より、既定の和文フォントが「IPAexフォント」から
@@ -303,8 +315,7 @@
 次の設定とほぼ等価になる:
 \begin{quote}\small\begin{verbatim}
 \documentclass[b5paper]{ltjsarticle}
-\usepackage{luatexja-fontspec}
-\usepackage[ms]{luatexja-preset}
+\usepackage[ms]{luatexja-preset}%実際にパッケージが読み込まれる
 \end{verbatim}\end{quote}
 
 \Note 補足:
@@ -379,7 +390,7 @@
 \end{itemize}
 
 %===========================================================
-\section{Pandocモードの使い方}
+\section{Pandocモード}
 \label{sec:Pandoc-mode}
 
 「Pandocモード」は文書形式変換ツールである
@@ -386,7 +397,41 @@
 Pandoc\footnote{\url{http://pandoc.org/}}%
 を用いた日本語{\LaTeX}文書生成(および{\LaTeX}経由のPDF生成)
 のために調整された設定である。
+特に
+「Pandoc(2.0版以降)の既定の{\LaTeX}出力用テンプレートをそのまま
+用いても日本語文書として適切な出力が得られる」
+ことを主要な目的としている。
 
+現状のPandocモードでは以下の調整が行われる。
+\Note これらの一部についてはユーザによる設定変更が可能である。
+詳細は\ref{ssec:pandoc-param}節、\ref{ssec:ja-settings}節を参照。
+
+\begin{itemize}
+\item PandocのStrong(重要)要素の出力を |\strong| 命令に合わせるため、
+  |\textbf| 命令を |\strong| 命令に移譲させる。
+\item |\texttt| 命令・|\verb| 命令と和文との間に入る和欧文間空白を
+  調節している。
+\item Pandocは入力文書中の三点リーダ“…”を |\ldots| 命令に変換するが、
+  このせいで欧文扱いになるのを回避するため、
+  |\ldots| を一定の条件下において和文で出力させる。
+\item 全角空白文字の入力を(文字ではなく)空きの挿入と解釈する。
+\item Pandocの一部の設定は |\paragraph| の見出しの体裁を変更するが、
+  この場合に連動して |paragraph-mark| の既定値を空に変更する。
+\item Pandocの一部の設定はプレアンブルでの\Pkg{geometry}の読込を
+  発生させるが、この場合に重複読込のエラーになるのを回避するため、
+  \Pkg{geometry}の読込を |\setpagelayout*| の呼出に振り替える。
+\item 入力文書が言語指定を含む場合にはBabelパッケージが読み込まれるが、
+  この際に発生する可能性がある不整合を回避する。
+\item \Pkg{hyperref}パッケージの |unicode| オプションの有無について
+  適切な選択(エンジンにより決まる)を強制する。
+  ((u){\pLaTeX}をサポートするための措置。)
+\end{itemize}
+
+%-------------------
+\subsection{Pandocモードの使い方}
+
+Pandocモードを使う場合はクラスオプションを以下のように指定する。
+
 \begin{quote}
 |\documentclass[pandoc,|\Meta{ドライバ}%
 |,jafont=|\Meta{フォント指定}|,|\Meta{他オプション}|]|%
@@ -407,13 +452,18 @@
   従来通り使用できる。
 \end{itemize}
 
-以下でPandocでBXJSクラスを用いる例を示す。
+%-------------------
+\subsection{Pandocの設定の例}
 
+BXJSクラスを用いる場合のPandocの設定について、以下で例を示す。
+
 \Note なお、以下の記述はPandoc 2.x版に従う。
-(オプション体系が1.x版とかなり異なるので注意。)
+Pandocのオプション体系は2.x版と1.x版とでかなり異なることに
+注意されたい。
 
-\begin{itemize}
-\item \Pkg{bxjsarticle}クラスを使用する一例。
+\paragraph{bxjsarticleの例}
+
+以下の設定で\Pkg{bxjsarticle}クラスを使用したい。
   \begin{itemize}
   \item {\XeLaTeX}経由
   \item 用紙サイズはA4判
@@ -420,7 +470,7 @@
   \item 和文フォント設定は |ipaex|
   \end{itemize}
 
-  コマンド行は次のようになる。
+  この場合のコマンド行は次のようになる:
   \footnote{もちろん、実際には改行を含めず1行で書く。
     なお、日本語文書の場合、変換先書式(|-t|)は |latex|
     でなく |lates-smart|(|smart| 機能を無効化)とすべきである。}
@@ -441,7 +491,10 @@
     |\documentclass[a4paper,jafont=ipaex,pandoc]{bxjsarticle}|
   \end{quote}
 
-\item \Pkg{bxjsbook}クラスを用いる場合の一例。
+\paragraph{bxjsbookの例}
+
+以下の設定で\Pkg{bxjsbook}クラスを使用したい。
+
   \begin{itemize}
   \item 節番号を出力する
   \item Lua{\LaTeX}経由
@@ -451,7 +504,7 @@
   \item 欧文フォントをPandocの機能で設定
   \end{itemize}
 
-  コマンド行は次のようになる:
+  この場合のコマンド行は次のようになる:
   \begin{quote}
   |pandoc| \Meta{入力ファイル名}\ 
     |-o| \Meta{出力ファイル名}|.pdf|
@@ -468,7 +521,7 @@
     |-V sansfont="TeX Gyre Heros"|
   \end{quote}
 
-  注意事項:
+\Note 注意事項:
   \begin{itemize}
   \item \Pkg{bxjsbook}クラスは「章(|\chapter|)」をもつクラスなので、
     Pandocで |--top-level-division=|\linebreak[0]|chapter| の指定
@@ -475,23 +528,23 @@
     が必要。
   \end{itemize}
 
-\item Pandocで{\LaTeX}経由でPDFを出力する場合、
-  エンジン指定(|--pdf-engine|)は
-  |pdflatex|、|xelatex|、|lualatex|のみがサポートされる。
-  しかし、Pandocの出力を「単体の{\LaTeX}文書」(|-s|指定)とすることで、
-  {\LaTeX}エンジンに(u){\pLaTeX}を使用することができる。
-  出力された{\LaTeX}文書は通常の方法でPDFやPostScript形式に
-  変換できる。
-  
-  \begin{quote}\small
-\begin{verbatim}
-pandoc mydoc.md -o mydoc.tex -s -V documentclass=bxjsarticle -V classoption=pandoc
+\paragraph{(u)\pLaTeX の使用}
+
+Pandocで{\LaTeX}経由でPDFを出力する場合、
+エンジン指定(|--pdf-engine|)は
+|pdflatex|、|xelatex|、|lualatex|のみがサポートされる。
+これに対して、Pandocの出力を「単体の{\LaTeX}文書」(|-s|指定)と
+するとPandocが{\LaTeX}を実行しなくなり、
+この場合は{\LaTeX}エンジンに(u){\pLaTeX}を使用することができる。
+出力された{\LaTeX}文書は通常の方法でPDFやPostScript形式に
+変換できる。
+
+\begin{quote}\small\begin{verbatim}
+pandoc mydoc.md -o mydoc.tex -s -V documentclass=bxjsreport -V classoption=pandoc ...
 uplatex mydoc
 uplatex mydoc
 dvipdfmx mydoc
-\end{verbatim}
-  \end{quote}
-\end{itemize}
+\end{verbatim}\end{quote}
 
 %===========================================================
 \section{クラスオプション}
@@ -791,6 +844,8 @@
       パラメタを自分で設定しても構わない。
       ただし\Pkg{geometry}の読込が強く推奨される。
       (\Pkg{geometry}非読込時の動作テストはほとんど行っていない。)}
+    \Note 「自動読込の際に指定するはずのオプション列」
+      が |\jsGeometryOptions| に保存されている。
   \end{itemize}
   \Note 「どうしても\Pkg{geometry}パッケージを自分で読み込みたい」
   という人のための設定。
@@ -1339,6 +1394,7 @@
 
 %-------------------
 \subsection{pandoc和文ドライバの場合}
+\label{ssec:pandoc-param}
 
 standard用のものに加えて、以下の和文ドライバパラメタが存在する。
 
@@ -1533,11 +1589,16 @@
 
 \begin{itemize}
 \item |\strong{|\Meta{テキスト}|}|\Means
-  引数のテキストに、重要性を表す装飾を施す。
-  具体的には\,|\bfseries|(太字)が適用される。
+  引数のテキストに、重要性を表す書体変更を適用する。
 \item |strongenv|環境\Means
   |\strong|の環境版。
-  \Note 以上の2つの機能は\Pkg{fontspec}パッケージとの互換を
+\item |\strongfontdeclare{|\Meta{書体変更命令列}|,...}|\Means
+  |\strong| で実際に適用される書体変更(宣言型命令の列)を指定する。
+  コンマ区切りで複数の値が指定可能で、
+  $n$重の |\strong| が適用されたテキストに対して
+  $n$番目の書体変更命令列が実行される。
+  \Note 既定値は“|\bfseries|”であり、|\strong| は太字で出力される。
+  \Note 以上の3つの機能は\Pkg{fontspec}パッケージとの互換を
   目的としたものである。
   |strong-cmd=false| 指定時はこれらの機能は無効になる。
   ただし、\Pkg{fontspec}が読み込まれている場合は、
@@ -1692,6 +1753,40 @@
   \makebox[#1\zw][s]{#2}}}
 \end{verbatim}\end{quote}
 
+\subsubsection{pandoc和文ドライバで追加される命令}
+
+Pandocモードにおける出力の調整の対象となる要素について、
+以下の命令を再定義することで
+調整方法をカスタマイズできる。
+例えば
+\begin{quote}\small
+|\renewcommand{\pandocZWSpace}{\jachar{|\JSS|}}|
+\end{quote}
+(ここで {\JSS} は全角空白文字)と再定義することで、
+「全角空白文字の入力を空きに変換する」
+調整を実質的に無効化できる。
+
+\begin{itemize}
+\item |\pandocZWSpace|\Means
+  全角空白文字が入力されたときに実際に実行される命令。
+  \Note |\pandocZWSpace| を再定義する際に、その定義内容の中で
+  全角空白文字を直接使うと無限ループになってしまうため、
+  代わりに |\jachar{|\JSS|}| と書く必要がある。
+
+\item |\pandocLdots|\Means
+  非数式で |\ldots| を実行したときに実際に実行される命令。
+  \Note 一般にPandocの{\LaTeX}出力においては
+  入力文書中の“…”が |\ldots| 命令に変換される。
+  \Note |\pandocLdots| を再定義する際に、その定義内容の中で |\ldots| を
+  使うと無限ループになってしまうため、
+  代わりに |\textellipsis| 等を適宜使う必要がある。
+  ただし特別な規約として
+  \begin{quote}\small
+  |\renewcommand{\pandocLdots}{\ldots}|
+  \end{quote}
+  と再定義した場合は、|\ldots| に対する調整自体が無効になる。
+\end{itemize}
+
 %===========================================================
 \section{数式中の和文出力について}
 \label{sec:Ja-math-fonts}
@@ -1828,7 +1923,7 @@
 \end{itemize}
 
 %-------------------
-\subsection{将来的な二文字フォント命令の扱い}
+\subsection{将来の二文字フォント命令の扱い}
 
 \jemph{現在の版で存在する}和文ドライバを使用する場合には、
 将来にわたって以下の方針が維持される。
@@ -1837,7 +1932,7 @@
 \item 二文字フォント命令に対する警告の様式は、
   今後変更される可能性がある。
 \item しかし、将来に二文字フォント命令のサポートが廃止されることはない。
-\item |oldfontcommands| オプションよおび |\allowoldfontcommands| 命令
+\item |oldfontcommands| オプションおよび |\allowoldfontcommands| 命令
   は継続して提供され、
   これらの機能を用いた場合は、二文字フォント命令に関する警告が
   端末に表示されることは一切無い。

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

Modified: branches/branch2021.final/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
===================================================================
--- branches/branch2021.final/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx	2022-03-20 21:08:20 UTC (rev 62825)
+++ branches/branch2021.final/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx	2022-03-20 21:08:33 UTC (rev 62826)
@@ -33,7 +33,7 @@
 %  Copyright 1999-2016 Haruhiko Okumura
 %  Copyright 2016-2020 Japanese TeX Development Community
 %
-%  Copyright 2013-2021 Takayuki YATO (aka. "ZR")
+%  Copyright 2013-2022 Takayuki YATO (aka. "ZR")
 %
 % \fi
 % \CheckSum{0}
@@ -56,7 +56,8 @@
 %<*driver>
 \ProvidesFile{bxjscls.dtx}
 %</driver>
-  [2021/05/18 v2.5a BXJS document classes]
+  [2022/03/20 v2.6  BXJS document classes]
+% [2021/05/18 v2.5a BXJS document classes]
 % [2021/02/02 v2.5  BXJS document classes]
 % [2021/01/27 v2.4a BXJS document classes]
 % [2020/10/16 v2.4  BXJS document classes]
@@ -481,6 +482,15 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\ifbxjs at explIII}
+% 〔スイッチ〕
+% expl3がカーネルに組み込まれているか。
+%    \begin{macrocode}
+\newif\ifbxjs at explIII
+\@ifl at t@r\fmtversion{2020/02/02}{\bxjs at explIIItrue}{}
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\ifbxjs at TUenc}
 % 〔スイッチ〕
 % {\LaTeX}の既定のフォントエンコーディングがTUであるか。
@@ -509,6 +519,20 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\bxjs at CGHN}
+% カーネルの2021/11/15版の改修で“要素の順が変わった”フック名について、
+% 新仕様の名前を“使用中の{\LaTeX}において正しい名前”に変換する。
+% \Note 例えば、“|package/after/PKG|”は新仕様で
+% “|package/PKG/after|”に変更された。
+%    \begin{macrocode}
+\@ifl at t@r\fmtversion{2021/11/15}{%
+  \def\bxjs at CGHN#1{#1}%
+}{%else
+  \def\bxjs at CGHN#1{\bxjs at CGHN@a#1//}%
+  \def\bxjs at CGHN@a#1/#2/#3//{#1/#3/#2}}
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\bxjs at cond}
 % |\bxjs at cond\ifXXX|……|\fi{|\Meta{真}|}{|\Meta{偽}|}|\par
 % {\TeX}のif-文(|\ifXXX|……\Meta{真}|\else|\Meta{偽}|\fi|)を
@@ -555,6 +579,37 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\bxjs at trim}
+% |\bxjs at trim\CS| で、|\CS| の内容のトークン列を先頭と末尾の
+% 空白トークン群を除去したものに置き換える。
+%    \begin{macrocode}
+\def\bxjs at trim#1{\expandafter\bxjs at trim@a#1\@nil#1}
+\def\bxjs at trim@a{\futurelet\bxjs at tmpb\bxjs at trim@b}
+\def\bxjs at trim@b{\bxjs at cond\ifx\bxjs at tmpb\@sptoken\fi
+  {\bxjs at trim@c\bxjs at trim@a}{\bxjs at trim@d}}
+\def\bxjs at trim@c#1 {#1}
+\def\bxjs at trim@d#1\@nil{\bxjs at trim@e#1\@nil: \@nil\@nnil}
+\def\bxjs at trim@e#1 \@nil#2\@nnil{\bxjs at cond\ifx\@nnil#2\@nnil\fi
+  {\bxjs at trim@f#1\@nnil}{\bxjs at trim@e#1\@nil: \@nil\@nnil}}
+\def\bxjs at trim@f#1\@nil#2\@nnil#3{\def#3{#1}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs at set@array at from@clist}
+% |\bxjs at set@array at from@clist{|\Meta{配列名接頭辞}|}{|%
+% \Meta{コンマ区切りリスト}|}|\Means
+% コンマ区切りの値のリストから擬似配列を生成する。
+% \Note 各要素について、先頭・末尾の空白トークン群は除去される。
+%    \begin{macrocode}
+\def\bxjs at set@array at from@clist#1#2{%
+  \@tempcnta\z@
+  \@for\bxjs at tmpa:=\@empty#2\do{%
+     \bxjs at trim\bxjs at tmpa \bxjs at cslet{#1/\the\@tempcnta}\bxjs at tmpa
+     \advance\@tempcnta\@ne}
+  \bxjs at cslet{#1/\the\@tempcnta}\relax}
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\bxjs at gset@tempcnta}
 % |calc| の整数式を用いて |\@tempcnta| の値を設定する。
 %    \begin{macrocode}
@@ -2243,10 +2298,17 @@
 % \Note ただし |ja| 非指定の場合はスキップする
 % (0.3 版との互換性のため)。
 %    \begin{macrocode}
-  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@opt\@undefined\else
-    \ClassWarningNoLine\bxjs at clsname
-    {No driver option is given}
-  \fi\fi
+  \ifx\bxjs at driver@opt\@undefined
+    \if \ifbxjs at explIII T\else\ifx\bxjs at jadriver@opt\@undefined F\else T\fi\fi T%
+      \ClassWarningNoLine\bxjs at clsname
+       {A driver option is MISSING!!\MessageBreak
+        You should properly specify one of the valid\MessageBreak
+        driver options according to the DVI driver\MessageBreak
+        that is in use:\MessageBreak
+        \@spaces dvips, dvipdfmx, dviout, xdvi,\MessageBreak
+        \@spaces nodvidriver}
+    \fi
+  \fi
 %    \end{macrocode}
 % |dvi=XXX| が指定されていた場合は、
 % |XXX| が指定された時と同じ動作にする。
@@ -9221,10 +9283,18 @@
 % 既定の設定は |\bfseries|(太字)である。
 % \Note |\strongfontdeclare| は試験的機能とする。
 %    \begin{macrocode}
-    \@ifdefinable{\strongfontdeclare}{\bxjs at protected\def\strongfontdeclare#1{%
-      \bxjs at strong@font at declare@a#1,\@nil}}%
-    \def\bxjs at strong@font at declare@a#1,#2\@nil{\def\bxjs at strong@font{#1}}%
-    \def\bxjs at strong@font{\bfseries}%
+    \newcommand*{\strongfontdeclare}{\bxjs at strongfontdeclare}%
+    \newcount\bxjs at strong@level
+    \bxjs at protected\def\bxjs at strongfontdeclare#1{%
+      \bxjs at set@array at from@clist{bxjs at strong}{#1}%
+      \bxjs at strong@level\z@}%
+    \bxjs at strongfontdeclare{\bfseries}%
+    \def\bxjs at strong@font{%
+      \bxjs at csletcs{bxjs at tmpa}{bxjs at strong/\the\bxjs at strong@level}%
+      \ifx\bxjs at tmpa\relax
+        \advance\bxjs at strong@level\m at ne \bxjs at strong@font
+      \else \advance\bxjs at strong@level\@ne \bxjs at tmpa
+      \fi}%
   \fi\fi
 }\fi
 %    \end{macrocode}
@@ -9822,7 +9892,7 @@
 %    \begin{macrocode}
   \ifjsWithupTeX\ifbxjs at old@hook at system\else
     \IfFileExists{pxjahyper-uni.def}{%
-      \AddToHook{package/after/hyperref}{\input{pxjahyper-uni.def}}
+      \AddToHook{\bxjs at CGHN{package/hyperref/after}}{\input{pxjahyper-uni.def}}
     }{}
   \fi\fi
 \fi
@@ -10557,6 +10627,24 @@
 \fi
 %    \end{macrocode}
 %
+% \begin{macro}{\ifbxjs at bxghost@available}
+% 〔スイッチ〕|bxghost| パッケージが利用できるか。
+%    \begin{macrocode}
+\newif\ifbxjs at bxghost@available
+\ifjsWitheTeX
+  \RequirePackage{pdftexcmds}[2009/09/22]% v0.5
+  \IfFileExists{bxghost.sty}{%
+    \bxjs at bxghost@availabletrue
+    \@namedef{bxjs at bgbv/79E70A0991967E27981832C84DB5DF99}{1}%v0.2.0
+    \ifx\pdf at filemdfivesum\@undefined\else
+      \expandafter\ifx\csname bxjs at bgbv/\pdf at filemdfivesum{bxghost.sty}%
+          \endcsname\relax\else \bxjs at bxghost@availablefalse \fi
+    \fi
+  }{}
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\bxjs at endpreamble@hook}
 % |etoolbox| の |\AtEndPreamble| で実行されるBXJSクラス用のフック。
 % \Note {\eTeX}以外では無効になる。
@@ -10685,8 +10773,9 @@
 % この時に何らかのコードを実行させることができる。
 %
 % \begin{macro}{\bxjs at set@dupload at proc}
-% |\bxjs at set@dupload at proc{|\Meta{ファイル名}|}{|\Meta{定義本体}|}|
-% 特定のファイルの読込が |\@filewithoptions| で指示されて、しかも
+% |\bxjs at set@dupload at proc{|\Meta{ファイル名}|}{|\Meta{定義本体}|}|\Means
+% 指定の名前の特定のファイルの読込が |\@filewithoptions| で
+% 指示されて、しかも
 % そのファイルが読込済である場合に、オプション重複検査をスキップして、
 % 代わりに\Meta{定義本体}のコードを実行する。
 % このコード中で |#1| は渡されたオプション列のテキストに置換される。
@@ -10698,7 +10787,7 @@
 \def\bxjs at set@dupload at proc@a#1{%
   \@onlypreamble#1\def#1##1}
 \def\bxjs at unset@dupload at proc#1{%
-  \expandafter\let\csname bxjs at dlp/#1\endcsname\@undefined}
+  \bxjs at cslet{bxjs at dlp/#1}\@undefined}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -10739,6 +10828,9 @@
 % Pandocはこれに対応していないため
 % 不完全なBabelやPolyglossiaの設定を出力してしまう。
 % これを防ぐための対策を行う。
+% \Note Pandoc 2.12版で |lang=ja| 指定に対応し、
+% 正しく{\LaTeX}側の言語名 |japanese| に変換されるようになった。
+% しかし、日本語指定の場合は相変わらず調整処理が必要である。
 %
 % \begin{macro}{\bxjs at polyglossia@options}
 % Polyglossiaのオプション列のテキスト。
@@ -10757,7 +10849,7 @@
 % \end{macro}
 %
 % \paragraph{Polyglossiaについて}
-% つまり{\XeTeX}・{Lua\TeX}の場合。
+% つまり{\XeTeX}および{Lua\TeX}(古いPandocで)の場合。
 % \Note この場合 |etoolbox| が使用可能になっている。
 %    \begin{macrocode}
 \ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi>0
@@ -10770,7 +10862,7 @@
 \bxjs at set@dupload at proc{polyglossia.sty}{%
   \bxjs at unset@dupload at proc{polyglossia.sty}%
   \ClassWarning\bxjs at clsname
-   {Package polyglossia is required}%
+   {Package polyglossia is requested}%
   \def\bxjs at polyglossia@options{#1}%
 %    \end{macrocode}
 %
@@ -10783,26 +10875,20 @@
 %    \end{macrocode}
 % もし、言語名が空の |\setmainlanguage{}| が実行された場合は、
 % |lang=ja| が指定されたと見なす。
-%    \begin{macrocode}
-    \ifblank{##2}{%
-      \ClassWarning\bxjs at clsname
-       {Main language is invalid, thus the fallback\MessageBreak
-        definitions will be employed}%
-      \bxjs at pandoc@polyglossia at ja
-%    \end{macrocode}
 % 言語名が |japanese| だった場合も同様。
 %    \begin{macrocode}
-    }{\ifstrequal{##2}{japanese}{%
+    \ifboolexpr{test{\ifblank{##2}}or test{\ifstrequal{##2}{japanese}}}{%
       \ClassWarning\bxjs at clsname
-       {Main language is japanese, thus the fallback\MessageBreak
+       {Main language is 'japanese', thus fallback\MessageBreak
         definitions will be employed}%
       \bxjs at pandoc@polyglossia at ja
 %    \end{macrocode}
-% 言語名が非空ならば、本来の |polyglossia| の処理を実行する。
+% それ以外は、改めて |polyglossia| を読み込んで、
+% 本来の処理を実行する。
 %    \begin{macrocode}
     }{%else
       \ClassWarning\bxjs at clsname
-       {Main language is valid (##2),\MessageBreak
+       {Main language is '##2',\MessageBreak
         thus polyglossia will be loaded}%
       \csundef{ver at polyglossia.sty}%
       \edef\bxjs at next{%
@@ -10809,7 +10895,7 @@
         \noexpand\RequirePackage[\bxjs at polyglossia@options]{polyglossia}[]%
       }\bxjs at next
       \setmainlanguage[##1]{##2}%
-    }}}}
+    }}}
 %    \end{macrocode}
 %
 % プレアンブルで |polyglossia| の読込が指示されなかった場合、
@@ -10866,7 +10952,7 @@
 \bxjs at set@dupload at proc{babel.sty}{%
   \bxjs at unset@dupload at proc{babel.sty}%
   \ClassWarning\bxjs at clsname
-   {Package babel is required}%
+   {Package babel is requested}%
 %    \end{macrocode}
 % パッケージオプションに言語名が空の |main=| があるかを調べる。
 % ある場合は |lang=ja| 対策を実行する。
@@ -10875,23 +10961,25 @@
 %    \begin{macrocode}
   \@tempswafalse \let\bxjs at babel@options\@empty
   \def\bxjs at tmpb{main=}%
+  \def\bxjs at next{main=japanese}%
   \@for\bxjs at tmpa:=#1\do{%
     \ifx\bxjs at tmpa\bxjs at tmpb \@tempswatrue
+    \else\ifx\bxjs at tmpa\bxjs at next \@tempswatrue
     \else \edef\bxjs at babel@options{\bxjs at babel@options,\bxjs at tmpa}%
-    \fi}%
+    \fi\fi}%
   \if at tempswa
     \ClassWarning\bxjs at clsname
-     {Main language is invalid, so fallback\MessageBreak
+     {Main language is 'japanese', thus fallback\MessageBreak
       definitions will be employed}%
-    \bxjs at pandoc@polyglossia at ja
+    \bxjs at pandoc@babel at ja
 %    \end{macrocode}
 % ない場合は、本来の |babel| の処理を実行する。
 %    \begin{macrocode}
   \else
     \ClassWarning\bxjs at clsname
-     {Main language is valid,\MessageBreak
+     {Main language is not 'japanese',\MessageBreak
       thus babel will be loaded}%
-    \expandafter\let\csname ver at babel.sty\endcsname\@undefined
+    \bxjs at cslet{ver at babel.sty}\@undefined
     \RequirePackage[#1]{babel}[]%
   \fi}
 %    \end{macrocode}
@@ -10901,7 +10989,7 @@
 %    \begin{macrocode}
 \g at addto@macro\bxjs at endpreamble@hook{%
   \ifx\bxjs at babel@options\relax
-    \expandafter\let\csname ver at babel.sty\endcsname\@undefined
+    \bxjs at cslet{ver at babel.sty}\@undefined
   \fi}
 %    \end{macrocode}
 % 
@@ -10910,7 +10998,7 @@
 %    \begin{macrocode}
 \@onlypreamble\bxjs at pandoc@babel at ja
 \def\bxjs at pandoc@babel at ja{%
-  \expandafter\let\csname ver at babel.sty\endcsname\@undefined
+  \bxjs at cslet{ver at babel.sty}\@undefined
   \edef\bxjs at next{%
     \noexpand\RequirePackage[\bxjs at babel@options,english]{babel}[]%
   }\bxjs at next
@@ -10996,6 +11084,7 @@
       \parindent=\the\parindent\relax
       \parskip=\the\parskip\relax}}
 \fi
+%    \end{macrocode}
 %
 % \paragraph{secnumdepthについて}
 % |secnumdepth| の値を決めるのはnumbersections変数
@@ -11003,13 +11092,18 @@
 % やsecnumdepth変数であるが、何れにしても |secnumdepth|
 % の値は書き換えられる。
 % そのため、|secnumdepth| を復帰させる。
+%    \begin{macrocode}
 \ifbxjs at jp@or at secnumdepth\else
   \bxjs at info@or at ban{secnumdepth}
   \eappto\bxjs at endpreamble@hook{%
     \c at secnumdepth=\the\c at secnumdepth\relax}
 \fi
+%    \end{macrocode}
 %
 % \paragraph{block-headingについて}
+% |\paragraph|、|\subparagraph| を別行見出しに変える処理を抑止する。
+% \Note 2.7.1版以前では別行見出し変更が既定で有効であった。
+%    \begin{macrocode}
 \ifbxjs at jp@or at block@heading\else
   \let\bxjs at frozen@paragraph\paragraph
   \let\bxjs at frozen@subparagraph\subparagraph
@@ -11019,6 +11113,10 @@
   \let\paragraph\bxjs at frozen@paragraph
   \let\subparagraph\bxjs at frozen@subparagraph}
 \fi
+%    \end{macrocode}
+%
+% 以上。
+%    \begin{macrocode}
 \fi
 %    \end{macrocode}
 %
@@ -11065,15 +11163,27 @@
 %^^A----------------
 % \subsection{全角空白文字}
 %
+% {\LaTeX}でない入力では、全角空きを入れるために全角空白文字
+% (U+3000)が使われる可能性があるので、
+% 全角空白文字を和文文字でなく空きとして扱うようにしておく。
+% \Note {(u)\pLaTeX}では対応できないので対象外。
+%
+% \begin{macro}{\pandocZWSpace}
+% 全角空白文字の入力で実行されるコード。
 %    \begin{macrocode}
+\def\pandocZWSpace{\zwspace}
+%    \end{macrocode}
+% \end{macro}
+% 全角空白文字の入力で |\pandocZWSpace| が実行されるようにする。
+%    \begin{macrocode}
 \ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi>\z@
   \catcode"3000=\active
   \begingroup \catcode`\!=7
-  \protected\gdef!!!!3000{\zwspace}
+  \protected\gdef!!!!3000{\pandocZWSpace}
   \endgroup
 \else\ifx\DeclareUnicodeCharacter\@undefined\else
   \DeclareUnicodeCharacter{3000}{\bxjs at zsp@char}
-  \bxjs at protected\def\bxjs at zsp@char{\zwspace}
+  \bxjs at protected\def\bxjs at zsp@char{\pandocZWSpace}
 \fi\fi
 %    \end{macrocode}
 %
@@ -11099,13 +11209,13 @@
 %    \begin{macrocode}
 \ifbxjs at jp@fix at strong\ifbxjs at jp@strong at cmd
   \let\orgtextbf\textbf
-  \DeclareRobustCommand\bxjstextbf[1]{%
+  \DeclareRobustCommand\pandocTextbf[1]{%
     \begingroup
       \let\textbf\orgtextbf
       \strong{#1}%
     \endgroup}%
   \g at addto@macro\bxjs at begin@document at hook{%
-    \let\textbf\bxjstextbf}
+    \let\textbf\pandocTextbf}
 \fi\fi
 %    \end{macrocode}
 %
@@ -11124,8 +11234,18 @@
 %
 % インラインコード(Code)要素に対する{\LaTeX}出力は |\texttt| となる。
 % |\texttt| の両端に欧文ゴーストが入るようにする。
+% さらに |\verb| の外側にも欧文ゴーストが入るようにする。
+%
 %    \begin{macrocode}
 \ifbxjs at jp@fix at code
+%    \end{macrocode}
+% |bxghost| パッケージが利用できる場合はその機能を利用する。
+% 使えない場合は自前実装を用いる。
+%    \begin{macrocode}
+  \ifbxjs at bxghost@available
+    \RequirePackage[verb]{bxghost}[2020/01/31]% v0.3.0
+    \let\bxjs at eghostguarded\eghostguarded
+  \else
   \chardef\bxjs at eghost@c=23
   \ifx j\jsEngine \xspcode\bxjs at eghost@c=3
   \else\ifx l\jsEngine \ltjsetparameter{alxspmode={\bxjs at eghost@c,3}}
@@ -11135,24 +11255,29 @@
   \ifx\bxjs at eghost@c\@undefined\else
     \font\bxjs at eghost@f=ec-lmr10 at 1.23456pt
     \def\bxjs at pan@eghost{\bgroup\bxjs at eghost@f\bxjs at eghost@c\egroup}
+    \def\bxjs at eghostguarded#1{%
+      \bxjs at pan@eghost\null#1\null\bxjs at pan@eghost}
+  \fi
+  \fi
+  \ifx\bxjs at eghostguarded\@undefined\else
     \let\orgtexttt\texttt
-    \DeclareRobustCommand\bxjstexttt[1]{%
+    \DeclareRobustCommand\pandocTexttt[1]{%
       \ifmmode \nfss at text{\ttfamily #1}%
       \else
         \ifvmode \leavevmode \fi
-        \bxjs at pan@eghost\null
-        \begingroup \ttfamily #1\endgroup
-        \null\bxjs at pan@eghost
+        \bxjs at eghostguarded{\begingroup\ttfamily#1\endgroup}%
       \fi}
     \g at addto@macro\bxjs at begin@document at hook{%
-      \let\texttt\bxjstexttt}
+      \let\texttt\pandocTexttt}
 %    \end{macrocode}
-% さらに |\verb| の外側にも欧文ゴーストが入るようにする。
-% \Note |bxjaghost| の実装を参考にした。
+% |bxghost| を使わない場合の |\verb| の処理。
+% \Note |bxghost| の実装を参考にした。
 %    \begin{macrocode}
+    \ifbxjs at bxghost@available\else
     \expandafter\def\expandafter\verb\expandafter{%
       \expandafter\bxjs at pan@eghost\verb}
     \g at addto@macro\verb at egroup{\bxjs at pan@eghost}
+    \fi
   \fi
 \fi
 %    \end{macrocode}
@@ -12024,6 +12149,24 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\bxjsp at begin@document at hook}
+% 文書本体開始時フック。
+%    \begin{macrocode}
+\@onlypreamble\bxjsp at begin@document at hook
+\let\bxjsp at begin@document at hook\@empty
+\AtBeginDocument{\bxjsp at begin@document at hook}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjsp at babel@used}
+% 〔スイッチ〕Babelが読み込まれたか。
+%    \begin{macrocode}
+\newif\ifbxjsp at babel@used
+\g at addto@macro\bxjsp at begin@document at hook{%
+  \@ifpackageloaded{babel}{\bxjsp at babel@usedtrue}{}}
+%    \end{macrocode}
+% \end{macro}
+%
 %^^A----------------
 %\subsection{パッケージオプション}
 %
@@ -12151,21 +12294,37 @@
 % 1.9f版で非数式の |\ldots| を全て |…| に戻す動作に変更した。
 %    \begin{macrocode}
 \DeclareRobustCommand{\pandocLdots}{%
-  \relax\ifmmode \expandafter\bxjsp at org@ldots
-  \else \expandafter\bxjsp at ja@ellipsis
-  \fi}
+  \let\bxjsp at do\bxjsp at ja@ellipsis
+  \ifmmode \let\bxjsp at do\bxjsp at org@ldots
+  \else\ifbxjsp at babel@used
+    \expandafter\ifx\csname bxjsp at ld/\languagename\endcsname\relax
+      \let\bxjsp at do\bxjsp at org@ldots \fi
+  \fi\fi \bxjsp at do}
+\@namedef{bxjsp at ld/japanese}{1}
 \def\bxjsp at ja@ellipsis{…}
 \let\bxjsp at org@ldots\ldots
 %    \end{macrocode}
 % \end{macro}
 %
-% |\ldots| の実装を置き換える。
-% \Note B|english| オプション指定時は置き換えない。
+% |\ldots| の実装を |\pandocLdots| に置き換える。
 %    \begin{macrocode}
-\AtBeginDocument{%
+\g at addto@macro\bxjsp at begin@document at hook{%
   \let\bxjsp at org@ldots\ldots
-  \ifbxjsp at english\else \let\ldots\pandocLdots \fi}
 %    \end{macrocode}
+% もしここで |\newcommand\pandocLdots{\ldots}| という定義である場合は
+% 置き換えない。
+%    \begin{macrocode}
+  \long\def\bxjsp at tmpa{\ldots}%
+  \ifx\pandocLdots\bxjsp at tmpa\else
+%    \end{macrocode}
+% |english| オプションが指定されていてかつBabelが読み込まれていない場合も
+% 置き換えない。
+%    \begin{macrocode}
+    \ifnum0\ifbxjsp at english\ifbxjsp at babel@used\else1\fi\fi=0
+      \let\ldots\pandocLdots
+    \fi
+  \fi}
+%    \end{macrocode}
 %
 % |\ldots| の直後の文字が非英字の場合、Pandocは「|\ldots。|」の
 % ように空白を入れずに並べて出力する。

Modified: branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls	2022-03-20 21:08:20 UTC (rev 62825)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls	2022-03-20 21:08:33 UTC (rev 62826)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsarticle}
-  [2021/05/18 v2.5a BXJS document classes]
+  [2022/03/20 v2.6  BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsarticle}
 \newif\ifjsc at needsp@tch
@@ -87,6 +87,8 @@
 \let\PackageWarningNoLine\bxjs at tmpa
 \@nameuse{RevokeOldLuaTeXBehavior}
 \let\ifjsInPdfMode\ifpdf
+\newif\ifbxjs at explIII
+\@ifl at t@r\fmtversion{2020/02/02}{\bxjs at explIIItrue}{}
 \newif\ifbxjs at TUenc
 \def\bxjs at tmpa{TU}\edef\bxjs at tmpb{\f at encoding}
 \ifx\bxjs at tmpa\bxjs at tmpb
@@ -94,6 +96,11 @@
 \fi
 \newif\ifbxjs at old@hook at system
 \@ifl at t@r\fmtversion{2020/10/01}{}{\bxjs at old@hook at systemtrue}
+\@ifl at t@r\fmtversion{2021/11/15}{%
+  \def\bxjs at CGHN#1{#1}%
+}{%else
+  \def\bxjs at CGHN#1{\bxjs at CGHN@a#1//}%
+  \def\bxjs at CGHN@a#1/#2/#3//{#1/#3/#2}}
 \@gobbletwo\if\if \def\bxjs at cond#1\fi{%
   #1\expandafter\@firstoftwo
   \else\expandafter\@secondoftwo
@@ -105,6 +112,21 @@
 \def\bxjs at catopt#1#2{%
   #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2}
 \def\bxjs at ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}}
+\def\bxjs at trim#1{\expandafter\bxjs at trim@a#1\@nil#1}
+\def\bxjs at trim@a{\futurelet\bxjs at tmpb\bxjs at trim@b}
+\def\bxjs at trim@b{\bxjs at cond\ifx\bxjs at tmpb\@sptoken\fi
+  {\bxjs at trim@c\bxjs at trim@a}{\bxjs at trim@d}}
+\def\bxjs at trim@c#1 {#1}
+\def\bxjs at trim@d#1\@nil{\bxjs at trim@e#1\@nil: \@nil\@nnil}
+\def\bxjs at trim@e#1 \@nil#2\@nnil{\bxjs at cond\ifx\@nnil#2\@nnil\fi
+  {\bxjs at trim@f#1\@nnil}{\bxjs at trim@e#1\@nil: \@nil\@nnil}}
+\def\bxjs at trim@f#1\@nil#2\@nnil#3{\def#3{#1}}
+\def\bxjs at set@array at from@clist#1#2{%
+  \@tempcnta\z@
+  \@for\bxjs at tmpa:=\@empty#2\do{%
+     \bxjs at trim\bxjs at tmpa \bxjs at cslet{#1/\the\@tempcnta}\bxjs at tmpa
+     \advance\@tempcnta\@ne}
+  \bxjs at cslet{#1/\the\@tempcnta}\relax}
 \let\c at bxjs@tempcnta\@tempcnta
 \def\bxjs at gset@tempcnta{\setcounter{bxjs at tempcnta}}
 \def\jsSetQHLength#1#2{%
@@ -730,10 +752,17 @@
 \else \@tempswatrue
 \fi\fi\fi
 \if at tempswa
-  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@opt\@undefined\else
-    \ClassWarningNoLine\bxjs at clsname
-    {No driver option is given}
-  \fi\fi
+  \ifx\bxjs at driver@opt\@undefined
+    \if \ifbxjs at explIII T\else\ifx\bxjs at jadriver@opt\@undefined F\else T\fi\fi T%
+      \ClassWarningNoLine\bxjs at clsname
+       {A driver option is MISSING!!\MessageBreak
+        You should properly specify one of the valid\MessageBreak
+        driver options according to the DVI driver\MessageBreak
+        that is in use:\MessageBreak
+        \@spaces dvips, dvipdfmx, dviout, xdvi,\MessageBreak
+        \@spaces nodvidriver}
+    \fi
+  \fi
   \ifbxjs at dvi@opt
     \edef\bxjs at next{%
       \let\noexpand\bxjs at driver@given

Modified: branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls	2022-03-20 21:08:20 UTC (rev 62825)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls	2022-03-20 21:08:33 UTC (rev 62826)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsbook}
-  [2021/05/18 v2.5a BXJS document classes]
+  [2022/03/20 v2.6  BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsbook}
 \newif\ifjsc at needsp@tch
@@ -87,6 +87,8 @@
 \let\PackageWarningNoLine\bxjs at tmpa
 \@nameuse{RevokeOldLuaTeXBehavior}
 \let\ifjsInPdfMode\ifpdf
+\newif\ifbxjs at explIII
+\@ifl at t@r\fmtversion{2020/02/02}{\bxjs at explIIItrue}{}
 \newif\ifbxjs at TUenc
 \def\bxjs at tmpa{TU}\edef\bxjs at tmpb{\f at encoding}
 \ifx\bxjs at tmpa\bxjs at tmpb
@@ -94,6 +96,11 @@
 \fi
 \newif\ifbxjs at old@hook at system
 \@ifl at t@r\fmtversion{2020/10/01}{}{\bxjs at old@hook at systemtrue}
+\@ifl at t@r\fmtversion{2021/11/15}{%
+  \def\bxjs at CGHN#1{#1}%
+}{%else
+  \def\bxjs at CGHN#1{\bxjs at CGHN@a#1//}%
+  \def\bxjs at CGHN@a#1/#2/#3//{#1/#3/#2}}
 \@gobbletwo\if\if \def\bxjs at cond#1\fi{%
   #1\expandafter\@firstoftwo
   \else\expandafter\@secondoftwo
@@ -105,6 +112,21 @@
 \def\bxjs at catopt#1#2{%
   #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2}
 \def\bxjs at ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}}
+\def\bxjs at trim#1{\expandafter\bxjs at trim@a#1\@nil#1}
+\def\bxjs at trim@a{\futurelet\bxjs at tmpb\bxjs at trim@b}
+\def\bxjs at trim@b{\bxjs at cond\ifx\bxjs at tmpb\@sptoken\fi
+  {\bxjs at trim@c\bxjs at trim@a}{\bxjs at trim@d}}
+\def\bxjs at trim@c#1 {#1}
+\def\bxjs at trim@d#1\@nil{\bxjs at trim@e#1\@nil: \@nil\@nnil}
+\def\bxjs at trim@e#1 \@nil#2\@nnil{\bxjs at cond\ifx\@nnil#2\@nnil\fi
+  {\bxjs at trim@f#1\@nnil}{\bxjs at trim@e#1\@nil: \@nil\@nnil}}
+\def\bxjs at trim@f#1\@nil#2\@nnil#3{\def#3{#1}}
+\def\bxjs at set@array at from@clist#1#2{%
+  \@tempcnta\z@
+  \@for\bxjs at tmpa:=\@empty#2\do{%
+     \bxjs at trim\bxjs at tmpa \bxjs at cslet{#1/\the\@tempcnta}\bxjs at tmpa
+     \advance\@tempcnta\@ne}
+  \bxjs at cslet{#1/\the\@tempcnta}\relax}
 \let\c at bxjs@tempcnta\@tempcnta
 \def\bxjs at gset@tempcnta{\setcounter{bxjs at tempcnta}}
 \def\jsSetQHLength#1#2{%
@@ -739,10 +761,17 @@
 \else \@tempswatrue
 \fi\fi\fi
 \if at tempswa
-  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@opt\@undefined\else
-    \ClassWarningNoLine\bxjs at clsname
-    {No driver option is given}
-  \fi\fi
+  \ifx\bxjs at driver@opt\@undefined
+    \if \ifbxjs at explIII T\else\ifx\bxjs at jadriver@opt\@undefined F\else T\fi\fi T%
+      \ClassWarningNoLine\bxjs at clsname
+       {A driver option is MISSING!!\MessageBreak
+        You should properly specify one of the valid\MessageBreak
+        driver options according to the DVI driver\MessageBreak
+        that is in use:\MessageBreak
+        \@spaces dvips, dvipdfmx, dviout, xdvi,\MessageBreak
+        \@spaces nodvidriver}
+    \fi
+  \fi
   \ifbxjs at dvi@opt
     \edef\bxjs at next{%
       \let\noexpand\bxjs at driver@given

Modified: branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty	2022-03-20 21:08:20 UTC (rev 62825)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty	2022-03-20 21:08:33 UTC (rev 62826)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{bxjscjkcat}
-  [2021/05/18 v2.5a BXJS document classes]
+  [2022/03/20 v2.6  BXJS document classes]
 \def\bxjx at pkgname{bxjscjkcat}
 \newcount\bxjx at cnta
 \@onlypreamble\bxjx at tmpdo

Modified: branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty	2022-03-20 21:08:20 UTC (rev 62825)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty	2022-03-20 21:08:33 UTC (rev 62826)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{bxjscompat}
-  [2021/05/18 v2.5a BXJS document classes]
+  [2022/03/20 v2.6  BXJS document classes]
 \def\bxac at pkgname{bxjscompat}
 \let\bxac at engine=n
 \def\bxac at do#1#2{%

Modified: branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def	2022-03-20 21:08:20 UTC (rev 62825)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def	2022-03-20 21:08:33 UTC (rev 62826)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-minimal.def}
-  [2021/05/18 v2.5a BXJS document classes]
+  [2022/03/20 v2.6  BXJS document classes]
 %% このファイルは日本語文字を含みます
 \def\DeclareJaTextFontCommand#1#2{%
   \DeclareRobustCommand#1[1]{%

Modified: branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def	2022-03-20 21:08:20 UTC (rev 62825)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def	2022-03-20 21:08:33 UTC (rev 62826)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-modern.def}
-  [2021/05/18 v2.5a BXJS document classes]
+  [2022/03/20 v2.6  BXJS document classes]
 \input{bxjsja-standard.def}
 \ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi=\z@
 \def\encodingdefault{T1}%

Modified: branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def	2022-03-20 21:08:20 UTC (rev 62825)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def	2022-03-20 21:08:33 UTC (rev 62826)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-pandoc.def}
-  [2021/05/18 v2.5a BXJS document classes]
+  [2022/03/20 v2.6  BXJS document classes]
 \input{bxjsja-standard.def}
 \RequirePackage{bxjspandoc}
 \ifjsWitheTeX\else
@@ -30,6 +30,18 @@
     This engine does not support e-TeX extension!\MessageBreak
     Some feature might not work properly}
 \fi
+\newif\ifbxjs at bxghost@available
+\ifjsWitheTeX
+  \RequirePackage{pdftexcmds}[2009/09/22]% v0.5
+  \IfFileExists{bxghost.sty}{%
+    \bxjs at bxghost@availabletrue
+    \@namedef{bxjs at bgbv/79E70A0991967E27981832C84DB5DF99}{1}%v0.2.0
+    \ifx\pdf at filemdfivesum\@undefined\else
+      \expandafter\ifx\csname bxjs at bgbv/\pdf at filemdfivesum{bxghost.sty}%
+          \endcsname\relax\else \bxjs at bxghost@availablefalse \fi
+    \fi
+  }{}
+\fi
 \@onlypreamble\bxjs at endpreamble@hook
 \let\bxjs at endpreamble@hook\@empty
 \RequirePackage{iftex}[2013/04/04]% v0.2
@@ -82,7 +94,7 @@
 \def\bxjs at set@dupload at proc@a#1{%
   \@onlypreamble#1\def#1##1}
 \def\bxjs at unset@dupload at proc#1{%
-  \expandafter\let\csname bxjs at dlp/#1\endcsname\@undefined}
+  \bxjs at cslet{bxjs at dlp/#1}\@undefined}
 \@onlypreamble\bxjs at org@if at ptions
 \let\bxjs at org@if at ptions\@if at ptions
 \@onlypreamble\bxjs at org@reset at ptions
@@ -115,22 +127,17 @@
 \bxjs at set@dupload at proc{polyglossia.sty}{%
   \bxjs at unset@dupload at proc{polyglossia.sty}%
   \ClassWarning\bxjs at clsname
-   {Package polyglossia is required}%
+   {Package polyglossia is requested}%
   \def\bxjs at polyglossia@options{#1}%
   \newcommand*\setmainlanguage[2][]{%
-    \ifblank{##2}{%
+    \ifboolexpr{test{\ifblank{##2}}or test{\ifstrequal{##2}{japanese}}}{%
       \ClassWarning\bxjs at clsname
-       {Main language is invalid, thus the fallback\MessageBreak
+       {Main language is 'japanese', thus fallback\MessageBreak
         definitions will be employed}%
       \bxjs at pandoc@polyglossia at ja
-    }{\ifstrequal{##2}{japanese}{%
-      \ClassWarning\bxjs at clsname
-       {Main language is japanese, thus the fallback\MessageBreak
-        definitions will be employed}%
-      \bxjs at pandoc@polyglossia at ja
     }{%else
       \ClassWarning\bxjs at clsname
-       {Main language is valid (##2),\MessageBreak
+       {Main language is '##2',\MessageBreak
         thus polyglossia will be loaded}%
       \csundef{ver at polyglossia.sty}%
       \edef\bxjs at next{%
@@ -137,7 +144,7 @@
         \noexpand\RequirePackage[\bxjs at polyglossia@options]{polyglossia}[]%
       }\bxjs at next
       \setmainlanguage[##1]{##2}%
-    }}}}
+    }}}
 \g at addto@macro\bxjs at endpreamble@hook{%
   \ifx\bxjs at polyglossia@options\relax
     \csundef{ver at polyglossia.sty}%
@@ -159,32 +166,34 @@
 \bxjs at set@dupload at proc{babel.sty}{%
   \bxjs at unset@dupload at proc{babel.sty}%
   \ClassWarning\bxjs at clsname
-   {Package babel is required}%
+   {Package babel is requested}%
   \@tempswafalse \let\bxjs at babel@options\@empty
   \def\bxjs at tmpb{main=}%
+  \def\bxjs at next{main=japanese}%
   \@for\bxjs at tmpa:=#1\do{%
     \ifx\bxjs at tmpa\bxjs at tmpb \@tempswatrue
+    \else\ifx\bxjs at tmpa\bxjs at next \@tempswatrue
     \else \edef\bxjs at babel@options{\bxjs at babel@options,\bxjs at tmpa}%
-    \fi}%
+    \fi\fi}%
   \if at tempswa
     \ClassWarning\bxjs at clsname
-     {Main language is invalid, so fallback\MessageBreak
+     {Main language is 'japanese', thus fallback\MessageBreak
       definitions will be employed}%
-    \bxjs at pandoc@polyglossia at ja
+    \bxjs at pandoc@babel at ja
   \else
     \ClassWarning\bxjs at clsname
-     {Main language is valid,\MessageBreak
+     {Main language is not 'japanese',\MessageBreak
       thus babel will be loaded}%
-    \expandafter\let\csname ver at babel.sty\endcsname\@undefined
+    \bxjs at cslet{ver at babel.sty}\@undefined
     \RequirePackage[#1]{babel}[]%
   \fi}
 \g at addto@macro\bxjs at endpreamble@hook{%
   \ifx\bxjs at babel@options\relax
-    \expandafter\let\csname ver at babel.sty\endcsname\@undefined
+    \bxjs at cslet{ver at babel.sty}\@undefined
   \fi}
 \@onlypreamble\bxjs at pandoc@babel at ja
 \def\bxjs at pandoc@babel at ja{%
-  \expandafter\let\csname ver at babel.sty\endcsname\@undefined
+  \bxjs at cslet{ver at babel.sty}\@undefined
   \edef\bxjs at next{%
     \noexpand\RequirePackage[\bxjs at babel@options,english]{babel}[]%
   }\bxjs at next
@@ -244,14 +253,15 @@
   \if at tempswa\ifx\jsParagraphMark\bxjs at org@paragraph at mark
     \let\jsParagraphMark\@empty
   \fi\fi}
+\def\pandocZWSpace{\zwspace}
 \ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi>\z@
   \catcode"3000=\active
   \begingroup \catcode`\!=7
-  \protected\gdef!!!!3000{\zwspace}
+  \protected\gdef!!!!3000{\pandocZWSpace}
   \endgroup
 \else\ifx\DeclareUnicodeCharacter\@undefined\else
   \DeclareUnicodeCharacter{3000}{\bxjs at zsp@char}
-  \bxjs at protected\def\bxjs at zsp@char{\zwspace}
+  \bxjs at protected\def\bxjs at zsp@char{\pandocZWSpace}
 \fi\fi
 \if j\jsEngine
   \bxjs at fix@hyperref at unicode{false}
@@ -260,13 +270,13 @@
 \fi
 \ifbxjs at jp@fix at strong\ifbxjs at jp@strong at cmd
   \let\orgtextbf\textbf
-  \DeclareRobustCommand\bxjstextbf[1]{%
+  \DeclareRobustCommand\pandocTextbf[1]{%
     \begingroup
       \let\textbf\orgtextbf
       \strong{#1}%
     \endgroup}%
   \g at addto@macro\bxjs at begin@document at hook{%
-    \let\textbf\bxjstextbf}
+    \let\textbf\pandocTextbf}
 \fi\fi
 \jsAtEndOfClass{%
   \ifx\strongfontdeclare\@undefined\else
@@ -276,6 +286,10 @@
     \fi
   \fi}
 \ifbxjs at jp@fix at code
+  \ifbxjs at bxghost@available
+    \RequirePackage[verb]{bxghost}[2020/01/31]% v0.3.0
+    \let\bxjs at eghostguarded\eghostguarded
+  \else
   \chardef\bxjs at eghost@c=23
   \ifx j\jsEngine \xspcode\bxjs at eghost@c=3
   \else\ifx l\jsEngine \ltjsetparameter{alxspmode={\bxjs at eghost@c,3}}
@@ -285,20 +299,25 @@
   \ifx\bxjs at eghost@c\@undefined\else
     \font\bxjs at eghost@f=ec-lmr10 at 1.23456pt
     \def\bxjs at pan@eghost{\bgroup\bxjs at eghost@f\bxjs at eghost@c\egroup}
+    \def\bxjs at eghostguarded#1{%
+      \bxjs at pan@eghost\null#1\null\bxjs at pan@eghost}
+  \fi
+  \fi
+  \ifx\bxjs at eghostguarded\@undefined\else
     \let\orgtexttt\texttt
-    \DeclareRobustCommand\bxjstexttt[1]{%
+    \DeclareRobustCommand\pandocTexttt[1]{%
       \ifmmode \nfss at text{\ttfamily #1}%
       \else
         \ifvmode \leavevmode \fi
-        \bxjs at pan@eghost\null
-        \begingroup \ttfamily #1\endgroup
-        \null\bxjs at pan@eghost
+        \bxjs at eghostguarded{\begingroup\ttfamily#1\endgroup}%
       \fi}
     \g at addto@macro\bxjs at begin@document at hook{%
-      \let\texttt\bxjstexttt}
+      \let\texttt\pandocTexttt}
+    \ifbxjs at bxghost@available\else
     \expandafter\def\expandafter\verb\expandafter{%
       \expandafter\bxjs at pan@eghost\verb}
     \g at addto@macro\verb at egroup{\bxjs at pan@eghost}
+    \fi
   \fi
 \fi
 \if j\jsEngine

Modified: branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def	2022-03-20 21:08:20 UTC (rev 62825)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def	2022-03-20 21:08:33 UTC (rev 62826)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 \ProvidesFile{bxjsja-standard.def}
-  [2021/05/18 v2.5a BXJS document classes]
+  [2022/03/20 v2.6  BXJS document classes]
 %% このファイルは日本語文字を含みます
 \input{bxjsja-minimal.def}
 \bxjs at simplejasetupfalse
@@ -86,10 +86,18 @@
   \ifx\strong\@undefined\ifx\strongenv\@undefined
     \DeclareRobustCommand{\strongenv}{\bxjs at strong@font}%
     \DeclareTextFontCommand{\strong}{\strongenv}%
-    \@ifdefinable{\strongfontdeclare}{\bxjs at protected\def\strongfontdeclare#1{%
-      \bxjs at strong@font at declare@a#1,\@nil}}%
-    \def\bxjs at strong@font at declare@a#1,#2\@nil{\def\bxjs at strong@font{#1}}%
-    \def\bxjs at strong@font{\bfseries}%
+    \newcommand*{\strongfontdeclare}{\bxjs at strongfontdeclare}%
+    \newcount\bxjs at strong@level
+    \bxjs at protected\def\bxjs at strongfontdeclare#1{%
+      \bxjs at set@array at from@clist{bxjs at strong}{#1}%
+      \bxjs at strong@level\z@}%
+    \bxjs at strongfontdeclare{\bfseries}%
+    \def\bxjs at strong@font{%
+      \bxjs at csletcs{bxjs at tmpa}{bxjs at strong/\the\bxjs at strong@level}%
+      \ifx\bxjs at tmpa\relax
+        \advance\bxjs at strong@level\m at ne \bxjs at strong@font
+      \else \advance\bxjs at strong@level\@ne \bxjs at tmpa
+      \fi}%
   \fi\fi
 }\fi
 \ifjsWitheTeX
@@ -399,7 +407,7 @@
   \bxjs at check@hyperref at unicode{false}
   \ifjsWithupTeX\ifbxjs at old@hook at system\else
     \IfFileExists{pxjahyper-uni.def}{%
-      \AddToHook{package/after/hyperref}{\input{pxjahyper-uni.def}}
+      \AddToHook{\bxjs at CGHN{package/hyperref/after}}{\input{pxjahyper-uni.def}}
     }{}
   \fi\fi
 \fi

Modified: branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty	2022-03-20 21:08:20 UTC (rev 62825)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty	2022-03-20 21:08:33 UTC (rev 62826)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{bxjspandoc}
-  [2021/05/18 v2.5a BXJS document classes]
+  [2022/03/20 v2.6  BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjsp at pkgname{bxjscjkcat}
 \let\bxjsp at engine=n
@@ -35,6 +35,12 @@
 \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\bxjsp at begin@document at hook
+\let\bxjsp at begin@document at hook\@empty
+\AtBeginDocument{\bxjsp at begin@document at hook}
+\newif\ifbxjsp at babel@used
+\g at addto@macro\bxjsp at begin@document at hook{%
+  \@ifpackageloaded{babel}{\bxjsp at babel@usedtrue}{}}
 \newif\ifbxjsp at english
 \DeclareOption{english}{\bxjsp at englishtrue}
 \ProcessOptions*
@@ -64,14 +70,23 @@
   \newcommand*\UseMicrotypeSet[2][]{}
 \fi
 \DeclareRobustCommand{\pandocLdots}{%
-  \relax\ifmmode \expandafter\bxjsp at org@ldots
-  \else \expandafter\bxjsp at ja@ellipsis
-  \fi}
+  \let\bxjsp at do\bxjsp at ja@ellipsis
+  \ifmmode \let\bxjsp at do\bxjsp at org@ldots
+  \else\ifbxjsp at babel@used
+    \expandafter\ifx\csname bxjsp at ld/\languagename\endcsname\relax
+      \let\bxjsp at do\bxjsp at org@ldots \fi
+  \fi\fi \bxjsp at do}
+\@namedef{bxjsp at ld/japanese}{1}
 \def\bxjsp at ja@ellipsis{…}
 \let\bxjsp at org@ldots\ldots
-\AtBeginDocument{%
+\g at addto@macro\bxjsp at begin@document at hook{%
   \let\bxjsp at org@ldots\ldots
-  \ifbxjsp at english\else \let\ldots\pandocLdots \fi}
+  \long\def\bxjsp at tmpa{\ldots}%
+  \ifx\pandocLdots\bxjsp at tmpa\else
+    \ifnum0\ifbxjsp at english\ifbxjsp at babel@used\else1\fi\fi=0
+      \let\ldots\pandocLdots
+    \fi
+  \fi}
 \chardef\bxjsp at cc@other=12
 \@onlypreamble\bxjsp at makeother@range
 \def\bxjsp at makeother@range#1#2{%

Modified: branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls	2022-03-20 21:08:20 UTC (rev 62825)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls	2022-03-20 21:08:33 UTC (rev 62826)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsreport}
-  [2021/05/18 v2.5a BXJS document classes]
+  [2022/03/20 v2.6  BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsreport}
 \newif\ifjsc at needsp@tch
@@ -87,6 +87,8 @@
 \let\PackageWarningNoLine\bxjs at tmpa
 \@nameuse{RevokeOldLuaTeXBehavior}
 \let\ifjsInPdfMode\ifpdf
+\newif\ifbxjs at explIII
+\@ifl at t@r\fmtversion{2020/02/02}{\bxjs at explIIItrue}{}
 \newif\ifbxjs at TUenc
 \def\bxjs at tmpa{TU}\edef\bxjs at tmpb{\f at encoding}
 \ifx\bxjs at tmpa\bxjs at tmpb
@@ -94,6 +96,11 @@
 \fi
 \newif\ifbxjs at old@hook at system
 \@ifl at t@r\fmtversion{2020/10/01}{}{\bxjs at old@hook at systemtrue}
+\@ifl at t@r\fmtversion{2021/11/15}{%
+  \def\bxjs at CGHN#1{#1}%
+}{%else
+  \def\bxjs at CGHN#1{\bxjs at CGHN@a#1//}%
+  \def\bxjs at CGHN@a#1/#2/#3//{#1/#3/#2}}
 \@gobbletwo\if\if \def\bxjs at cond#1\fi{%
   #1\expandafter\@firstoftwo
   \else\expandafter\@secondoftwo
@@ -105,6 +112,21 @@
 \def\bxjs at catopt#1#2{%
   #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2}
 \def\bxjs at ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}}
+\def\bxjs at trim#1{\expandafter\bxjs at trim@a#1\@nil#1}
+\def\bxjs at trim@a{\futurelet\bxjs at tmpb\bxjs at trim@b}
+\def\bxjs at trim@b{\bxjs at cond\ifx\bxjs at tmpb\@sptoken\fi
+  {\bxjs at trim@c\bxjs at trim@a}{\bxjs at trim@d}}
+\def\bxjs at trim@c#1 {#1}
+\def\bxjs at trim@d#1\@nil{\bxjs at trim@e#1\@nil: \@nil\@nnil}
+\def\bxjs at trim@e#1 \@nil#2\@nnil{\bxjs at cond\ifx\@nnil#2\@nnil\fi
+  {\bxjs at trim@f#1\@nnil}{\bxjs at trim@e#1\@nil: \@nil\@nnil}}
+\def\bxjs at trim@f#1\@nil#2\@nnil#3{\def#3{#1}}
+\def\bxjs at set@array at from@clist#1#2{%
+  \@tempcnta\z@
+  \@for\bxjs at tmpa:=\@empty#2\do{%
+     \bxjs at trim\bxjs at tmpa \bxjs at cslet{#1/\the\@tempcnta}\bxjs at tmpa
+     \advance\@tempcnta\@ne}
+  \bxjs at cslet{#1/\the\@tempcnta}\relax}
 \let\c at bxjs@tempcnta\@tempcnta
 \def\bxjs at gset@tempcnta{\setcounter{bxjs at tempcnta}}
 \def\jsSetQHLength#1#2{%
@@ -738,10 +760,17 @@
 \else \@tempswatrue
 \fi\fi\fi
 \if at tempswa
-  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@opt\@undefined\else
-    \ClassWarningNoLine\bxjs at clsname
-    {No driver option is given}
-  \fi\fi
+  \ifx\bxjs at driver@opt\@undefined
+    \if \ifbxjs at explIII T\else\ifx\bxjs at jadriver@opt\@undefined F\else T\fi\fi T%
+      \ClassWarningNoLine\bxjs at clsname
+       {A driver option is MISSING!!\MessageBreak
+        You should properly specify one of the valid\MessageBreak
+        driver options according to the DVI driver\MessageBreak
+        that is in use:\MessageBreak
+        \@spaces dvips, dvipdfmx, dviout, xdvi,\MessageBreak
+        \@spaces nodvidriver}
+    \fi
+  \fi
   \ifbxjs at dvi@opt
     \edef\bxjs at next{%
       \let\noexpand\bxjs at driver@given

Modified: branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls	2022-03-20 21:08:20 UTC (rev 62825)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls	2022-03-20 21:08:33 UTC (rev 62826)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsslide}
-  [2021/05/18 v2.5a BXJS document classes]
+  [2022/03/20 v2.6  BXJS document classes]
 %% このファイルは日本語文字を含みます.
 \def\bxjs at clsname{bxjsslide}
 \newif\ifjsc at needsp@tch
@@ -87,6 +87,8 @@
 \let\PackageWarningNoLine\bxjs at tmpa
 \@nameuse{RevokeOldLuaTeXBehavior}
 \let\ifjsInPdfMode\ifpdf
+\newif\ifbxjs at explIII
+\@ifl at t@r\fmtversion{2020/02/02}{\bxjs at explIIItrue}{}
 \newif\ifbxjs at TUenc
 \def\bxjs at tmpa{TU}\edef\bxjs at tmpb{\f at encoding}
 \ifx\bxjs at tmpa\bxjs at tmpb
@@ -94,6 +96,11 @@
 \fi
 \newif\ifbxjs at old@hook at system
 \@ifl at t@r\fmtversion{2020/10/01}{}{\bxjs at old@hook at systemtrue}
+\@ifl at t@r\fmtversion{2021/11/15}{%
+  \def\bxjs at CGHN#1{#1}%
+}{%else
+  \def\bxjs at CGHN#1{\bxjs at CGHN@a#1//}%
+  \def\bxjs at CGHN@a#1/#2/#3//{#1/#3/#2}}
 \@gobbletwo\if\if \def\bxjs at cond#1\fi{%
   #1\expandafter\@firstoftwo
   \else\expandafter\@secondoftwo
@@ -105,6 +112,21 @@
 \def\bxjs at catopt#1#2{%
   #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2}
 \def\bxjs at ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}}
+\def\bxjs at trim#1{\expandafter\bxjs at trim@a#1\@nil#1}
+\def\bxjs at trim@a{\futurelet\bxjs at tmpb\bxjs at trim@b}
+\def\bxjs at trim@b{\bxjs at cond\ifx\bxjs at tmpb\@sptoken\fi
+  {\bxjs at trim@c\bxjs at trim@a}{\bxjs at trim@d}}
+\def\bxjs at trim@c#1 {#1}
+\def\bxjs at trim@d#1\@nil{\bxjs at trim@e#1\@nil: \@nil\@nnil}
+\def\bxjs at trim@e#1 \@nil#2\@nnil{\bxjs at cond\ifx\@nnil#2\@nnil\fi
+  {\bxjs at trim@f#1\@nnil}{\bxjs at trim@e#1\@nil: \@nil\@nnil}}
+\def\bxjs at trim@f#1\@nil#2\@nnil#3{\def#3{#1}}
+\def\bxjs at set@array at from@clist#1#2{%
+  \@tempcnta\z@
+  \@for\bxjs at tmpa:=\@empty#2\do{%
+     \bxjs at trim\bxjs at tmpa \bxjs at cslet{#1/\the\@tempcnta}\bxjs at tmpa
+     \advance\@tempcnta\@ne}
+  \bxjs at cslet{#1/\the\@tempcnta}\relax}
 \let\c at bxjs@tempcnta\@tempcnta
 \def\bxjs at gset@tempcnta{\setcounter{bxjs at tempcnta}}
 \def\jsSetQHLength#1#2{%
@@ -730,10 +752,17 @@
 \else \@tempswatrue
 \fi\fi\fi
 \if at tempswa
-  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@opt\@undefined\else
-    \ClassWarningNoLine\bxjs at clsname
-    {No driver option is given}
-  \fi\fi
+  \ifx\bxjs at driver@opt\@undefined
+    \if \ifbxjs at explIII T\else\ifx\bxjs at jadriver@opt\@undefined F\else T\fi\fi T%
+      \ClassWarningNoLine\bxjs at clsname
+       {A driver option is MISSING!!\MessageBreak
+        You should properly specify one of the valid\MessageBreak
+        driver options according to the DVI driver\MessageBreak
+        that is in use:\MessageBreak
+        \@spaces dvips, dvipdfmx, dviout, xdvi,\MessageBreak
+        \@spaces nodvidriver}
+    \fi
+  \fi
   \ifbxjs at dvi@opt
     \edef\bxjs at next{%
       \let\noexpand\bxjs at driver@given



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