texlive[41783] Master/texmf-dist: bxjscls (1aug16)

commits+karl at tug.org commits+karl at tug.org
Mon Aug 1 23:41:12 CEST 2016


Revision: 41783
          http://tug.org/svn/texlive?view=revision&revision=41783
Author:   karl
Date:     2016-08-01 23:41:12 +0200 (Mon, 01 Aug 2016)
Log Message:
-----------
bxjscls (1aug16)

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/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	2016-08-01 01:10:42 UTC (rev 41782)
+++ trunk/Master/texmf-dist/doc/latex/bxjscls/README-ja.md	2016-08-01 21:41:12 UTC (rev 41783)
@@ -97,6 +97,15 @@
 更新履歴
 --------
 
+  * Version 1.2  〈2016/08/01〉
+      - `geometry` オプションを新設した。
+      - `dvi` オプションを新設した。
+      - `\bf` や `\it` などの“二文字フォント命令”の使用に対して警告を
+        (現状では控えめに)出すようにする。この警告を制御するオプション
+        `(no)oldfontcommands` および `\(dis)allowoldfontcommands` 命令
+        を新設した。
+      - 万一“2.09 互換モード”で BXJS クラスが読み込まれた場合は致命的
+        エラーとする。
   * Version 1.1f 〈2016/07/16〉
       - jsclasses の開発体制の変更に応じて、原作に関する記述を修正。
       - magstyle オプションの値の名前を jsclasses に合わせて変更。

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	2016-08-01 01:10:42 UTC (rev 41782)
+++ trunk/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex	2016-08-01 21:41:12 UTC (rev 41783)
@@ -1,12 +1,19 @@
 % 文字コードは UTF-8
 % lualatex で組版する
 \documentclass[a4paper]{ltjsarticle}
-\usepackage{url}
+\usepackage{color}
+\definecolor{myblue}{rgb}{0,0,0.75}
+\definecolor{mygreen}{rgb}{0,0.45,0}
+%\usepackage{url}
+\usepackage[unicode,colorlinks,hyperfootnotes=false]{hyperref}
+\hypersetup{linkcolor=myblue,urlcolor=mygreen}
 \usepackage{metalogo}
+\pdfstringdefDisableCommands{%
+  \renewcommand*{\XeLaTeX}{XeLaTeX}}
 \usepackage{shortvrb}
 \MakeShortVerb{\|}
-\newcommand{\PkgVersion}{1.1f}
-\newcommand{\PkgDate}{2016/07/16}
+\newcommand{\PkgVersion}{1.2}
+\newcommand{\PkgDate}{2016/08/01}
 \newcommand{\Pkg}[1]{\textsf{#1}}
 \newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
 \newcommand{\Note}{\par\noindent ※}
@@ -19,6 +26,7 @@
 \providecommand{\upTeX}{u\pTeX}
 \providecommand{\upLaTeX}{u\pLaTeX}
 \providecommand{\pdfLaTeX}{pdf\LaTeX}
+\providecommand{\BibTeX}{Bib\TeX}
 %-----------------------------------------------------------
 \begin{document}
 \title{\Pkg{BXjscls} パッケージ\\
@@ -402,6 +410,9 @@
   \Note JSクラスの |\ifdraft| は2016/07/13版で廃止された。
   従って、BXJSクラスにおいて |\ifdraft| スイッチの使用を
   非推奨とし、将来的に廃止を予定する。
+\item 1.2版より、|\bf| や |\it| 等の旧式のフォント選択命令の使用が
+  非推奨となり、これらの命令を使うと警告が出るようになった。
+  詳細は\ref{sec:Old-font-commands}節を参照。
 % TODO: \@ptsize の話
 \end{itemize}
 
@@ -549,14 +560,22 @@
 \item ドライバオプション\Means
   DVI出力のエンジンを用いる場合に、実際に使用するDVIウェアの名前を
   指定する。
-  有効な値は |dvips|、|dvipdfmx|、|dviout|、|xdvi|、そして特殊な
-  値として |dvipdfmx-if-dvi| がある。
-  これは「エンジンがDVI出力の場合に限り |dvipdfmx| を指定する」
-  ことを表すもので、|autodetect-engine| と一緒に使うことが
-  想定されている。
-  \footnote{「実際に |dvipdfmx| が指定された」場合は、
-    |dvipdfmx| がグローバルオプションとしても働く。}%
+  有効な値は |dvips|、|dvipdfmx|、|dviout|、|xdvi| である。
   ドライバオプションの指定は必須である。
+  \footnote{ただし現状では、ドライバオプションが無い場合には
+    エラーではなく警告が出る。}
+\item |dvi=|\Meta{ドライバ名}\Means
+  エンジンがDVI出力の場合に限り、指定のドライバオプションを
+  有効にする。
+  \footnote{実際にドライバオプションが有効化された場合は、
+    そのオプションがグローバルオプションとしても働く。
+    例えば、DVI出力のエンジンで |dvi=dvipdfmx| が指定された場合は、
+    |dvipdfmx| がグローバルオプションに追加される。}%
+  |autodetect-engine| と一緒に使うことが想定されている。
+\item |dvipdfmx-if-dvi|\Means
+  |dvi=dvipdfmx| と同値。
+  \Note |dvi| オプションは1.2版で新設されたもので、以前は
+  このオプションのみが存在した。
 \item |pandoc|\Means
   「Pandocモード」(\ref{sec:Pandoc-mode}節)を指定する。
   以下の設定が行われる:
@@ -563,7 +582,7 @@
   \begin{itemize}
   \item エンジンオプションが |autodetect-engine| に固定される。
   \item 和文ドライバが |pandoc| に固定される。
-  \item ドライバオプションについて |dvipdfmx-if-dvi| が既定になる
+  \item ドライバオプションについて |dvi=dvipdfmx| が既定になる
     (明示指定で上書可能)。
   \end{itemize}
 \item |nopapersize|\Means
@@ -687,6 +706,27 @@
   “版面拡大”の実現方法を指定する。
   有効な値は |mag|、|real|、|xreal| の何れか。
   詳細は\ref{ssec:magstyle}節を参照。
+\item |geometry=|\Meta{値}\Means
+  \Pkg{geometry}パッケージの読込に対する制御。
+  \begin{itemize}
+  \item |class|(既定)\Means
+    通常通り、文書クラスが\Pkg{geometry}パッケージを読み込む。
+    ユーザは\Pkg{geometry}を後から読み込むことはできない。
+  \item |user|\Means
+    文書クラスによる\Pkg{geometry}パッケージの読込をスキップする。
+    この場合、ユーザが自分で\Pkg{geometry}を読み込むことが想定される。
+    \footnote{\Pkg{geometry}の読込は必須ではなく、ページレイアウトの
+      パラメタを自分で設定しても構わない。
+      ただし\Pkg{geometry}の読込が強く推奨される。
+      (\Pkg{geometry}非読込時の動作テストはほとんど行っていない。)}
+  \end{itemize}
+  \Note “どうしても\Pkg{geometry}パッケージを自分で読み込みたい”
+  という人のための設定。
+\item |oldfontcommands|\Means
+  |\bf| 等の“二文字フォント命令”の使用を許容する。
+\item |nooldfontcommands|(既定)\Means
+  “二文字フォント命令”の使用に対して警告を出す。
+  詳細については\ref{sec:Old-font-commands}節を参照されたい。
 \end{itemize}
 
 %-------------------
@@ -1093,5 +1133,105 @@
 \end{verbatim}\end{quote}
 
 %===========================================================
+\section{“二文字フォント命令”に対する警告}
+\label{sec:Old-font-commands}
+
+ここでいう“二文字フォント命令”というのは、|\bf| や |\it| 等の
+{\LaTeX}~2.09で標準であったフォント選択命令のことである。
+\footnote{なお、|\em| は「二文字の名前のフォント命令」であるが、
+  これは{\LaTeXe}でも標準命令であり、“二文字フォント命令”には
+  含まれない。}\
+{\LaTeXe}においては、これらに代わって、|\bfseries| 等の
+(NFSSに基づく)新しい命令群が標準となり、
+古い二文字フォント命令はカーネルではもはサポートされなくなった。
+しかし同時に、二文字フォント命令を利用したパッケージを
+動作させるための“当面の”
+\footnote{ちなみに、
+  {\LaTeXe}が最初にリリースされたのは1994年のことである。}%
+互換性対策として、
+「標準の文書クラス(article、book等)で二文字フォント命令の
+サポートを行う」という方針がとられた。
+これに倣って、他の文書クラスの多くもクラスのレベルで
+二文字フォント命令をサポートしていて、
+BXJSクラスもその例に含まれる。
+
+ところが最近になって、一部の文書クラス
+(\Pkg{KOMA-Script}クラス群や\Pkg{memoir}クラス等)
+において、二文字フォント命令を明示的に非推奨の扱いにした上で、
+その使用に制限を設ける
+(警告を出す、オプションを指定しないと使えない、等)
+という措置が取られるようになっている。
+
+これに合わせて、BXJSクラスでは1.2版より
+二文字フォント命令を非推奨とし、また、
+既定でその使用に対して警告を出すようにした。
+
+%-------------------
+\subsection{警告の内容}
+
+現状では警告はとても控えめに出される。
+すなわち、文書中で |\bf| などの二文字フォント命令が呼び出された場合、
+コンパイルの最後に(一度だけ)以下の警告メッセージが表示される。
+
+\begin{quote}\small\begin{verbatim}
+Class bxjsarticle Warning: Some old font commands were used in text
+(bxjsarticle)              (see the log output for detail).
+\end{verbatim}
+\end{quote}
+
+少し詳細な注意メッセージが、ログファイルのみに書き出される。
+
+なお、この警告は、パッケージの機能の実装として用いられたものも含めて
+全ての二文字フォント命令の呼出が対象になる。
+ただし例外として、thebibliography環境の内部で呼び出されたものだけは
+対象から除外される。
+{\BibTeX}の文献スタイルファイル(|.bst|)や文献データベース(|.bib|)
+のファイルは(パッケージと比較しても)極めて古いものが
+割と普通に使い続けられることが多い。
+そういった極めて古いファイルに由来する二文字フォント命令を
+警告したとしても、多くの場合、ユーザ側には対処する方法が存在しない。
+これが文献リスト環境中で警告を抑止する理由である。
+
+%-------------------
+\subsection{警告の制御}
+
+二文字フォント命令に対する警告の有無はクラスオプションで制御できる。
+
+\begin{itemize}
+\item |oldfontcommands|\Means
+  二文字フォント命令を警告の対象にしない。
+\item |nooldfontcommands|(既定)\Means
+  二文字フォント命令を警告の対象にする。
+\end{itemize}
+
+また、以下の命令により、文書中で一時的に警告の設定を変えられる。
+\footnote{これらの命令の効果はグルーピングの影響を受ける。}
+
+\begin{itemize}
+\item |\allowoldfontcommands|\Means
+  これ以降に実行される二文字フォント命令を警告の対象にしない。
+\item |\disallowoldfontcommands|\Means
+  これ以降に実行される二文字フォント命令を警告の対象にする。
+\end{itemize}
+
+%-------------------
+\subsection{将来的な二文字フォント命令の扱い}
+
+\Note 以下の記述は現在存在する和文ドライバを使用する場合に
+ついてのものである。
+
+\begin{itemize}
+\item 二文字フォント命令に対する警告の様式は、
+  今後変更される可能性がある。
+\item しかし、将来に二文字フォント命令のサポートが廃止されることはない。
+\item |oldfontcommands| オプションよおび |\allowoldfontcommands| 命令
+  は継続して提供され、
+  これらの機能を用いた場合は、二文字フォント命令に関する警告が
+  端末に表示されることは一切無い。
+\end{itemize}
+
+
+
+%===========================================================
 \end{document}
 %% EOF

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	2016-08-01 01:10:42 UTC (rev 41782)
+++ trunk/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx	2016-08-01 21:41:12 UTC (rev 41783)
@@ -70,7 +70,9 @@
 %<*driver>
 \ProvidesFile{bxjscls.dtx}
 %</driver>
-  [2016/07/16 v1.1f BXJS document classes]
+  [2016/08/01 v1.2 BXJS document classes]
+% based on jsclasses [2016/07/18]
+% [2016/07/16 v1.1f BXJS document classes]
 % based on jsclasses [2016/07/15]
 % [2016/05/28 v1.1e BXJS document classes]
 % [2016/05/21 v1.1d BXJS document classes]
@@ -94,7 +96,10 @@
 \newcommand{\Pkg}[1]{\textsf{#1}}
 \newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
 \newcommand{\Note}{\par\noindent ※}
+\newcommand{\TODO}{\par\noindent
+  {\usefont{OT1}{cmss}{sbc}{n}\color{red}TODO:}\ }
 \newcommand{\Means}{~:\quad}
+\newcommand{\ZRX}{☃}
 \newenvironment{ZRnote}
   {\StartZRnote}{\EndZRnote}
 \newcommand*{\ZRnoteline}[1]{
@@ -117,6 +122,7 @@
 \setlength\marginparpush{0pt}
 % \OnlyDescription
 \DisableCrossrefs
+\CodelineNumbered
 \setcounter{StandardModuleDepth}{1}
 \GetFileInfo{bxjscls.dtx}
 \begin{document}
@@ -143,6 +149,8 @@
 % ユーザマニュアル |bxjscls-manual.pdf| を参照してください。
 % \end{ZRnote}
 %
+% \tableofcontents
+%
 % \section{はじめに}
 %
 % \begin{ZRnote}
@@ -215,7 +223,7 @@
 %
 % 以下では実際のコードに即して説明します。
 %
-% \paragraph{BXJSクラス特有の設定 ☆}
+% \paragraph{BXJSクラス特有の設定 \ZRX}
 %
 % \mbox{}
 % \begin{ZRnote}
@@ -369,10 +377,13 @@
 % \end{macro}
 %
 % Lua\TeX の場合、原版のコード中のコントロールワード中に現れる
-% 日本語文字のカテゴリコードを11に変更する。
-% (元は12。)
-% ただし、読込終了時点で元に戻しているので、日本語文字のコントロール
-% ワードのマクロはそのままでは使える状態になっていない。
+% 日本語文字のカテゴリコードを一時的に11に変更する。
+% クラス読込終了時点で元に戻される。
+% \Note 現在の{Lua\LaTeX}では、漢字のカテゴリコードは最初から11に
+% なっているので、この処理は特段の意味を持たない。
+% しかし、昔は12になっていて、この場合、日本語文字の
+% コントロールワードの命令を使用するには、カテゴリコードを11に
+% 変更する必要がある。
 %    \begin{macrocode}
 \@onlypreamble\bxjs at restore@jltrcc
 \let\bxjs at restore@jltrcc\@empty
@@ -393,6 +404,21 @@
 \bxjs at robust@def\jsInhibitGlue{%
   \ifx\inhibitglue\@undefined\else \inhibitglue \fi}
 %    \end{macrocode}
+%
+% 万が一「2.09互換モード」になっていた場合は、
+% これ以上進むと危険なので強制終了させる。
+%    \begin{macrocode}
+\if at compatibility
+  \ClassError\bxjs at clsname
+   {Something went chaotic!\MessageBreak
+    I cannot go a single step further...}
+   {If the chant of \string\documentstyle\space was just a blunder
+    of yours,\MessageBreak then there'll still be hope....}
+  \expandafter\@firstofone
+\else \expandafter\@gobble
+\fi{\typeout{Farewell!}\endinput\@@end}
+%    \end{macrocode}
+%
 % \end{ZRnote}
 %
 % \section{オプション}
@@ -781,6 +807,7 @@
 % これは |ifdraft| パッケージと衝突するので、代わりに |\ifjsDraft|
 % の名前を用い、本文開始時に |\ifdraft| が未定義の場合に限り、
 % |\ifjsDraft| を |\ifdraft| にコピーする処理にする。
+% \Note |\ifdraft| は2.0版で廃止予定。
 % \end{ZRnote}
 %    \begin{macrocode}
 \let\ifjsDraft\iffalse
@@ -835,7 +862,7 @@
 % BXJS では `|report|' 相当のものは別に |bxjsreport| クラスとして用意する。
 % \end{ZRnote}
 %
-% \paragraph{BXJS特有のオプションの一覧 ☆}
+% \paragraph{BXJS特有のオプションの一覧 \ZRX}
 % \mbox{}
 % \begin{ZRnote}
 % \begin{itemize}
@@ -846,6 +873,14 @@
 % \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} : 基底フォントサイズを“和文規準で”
@@ -858,7 +893,13 @@
 % \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=|\meta{name} : |geometry| パッケージの読込を自動的に
+%   行うかユーザに任せるか。
 % \end{itemize}
 %
 % \begin{macro}{\bxjs at invscale}
@@ -865,10 +906,13 @@
 % |\bxjs at invscale| は{\TeX}における「長さのスケール」の逆関数を求めるもの。
 % 例えば |\bxjs at invscale\dimX{1.3}| は |\dimX=1.3\dimX| の
 % 逆の演算を行う。
+% \Note 局所化の |\begingroup|~|\endgroup| について、
+% 以前は |\group|~|\egroup| を使っていたが、これだと数詞モード中では
+% 空のサブ数式を生み出してしまうため修正した。
 %    \begin{macrocode}
 \mathchardef\bxjs at csta=259
 \def\bxjs at invscale#1#2{%
-  \bgroup \@tempdima=#1\relax \@tempdimb#2\p@\relax
+  \begingroup \@tempdima=#1\relax \@tempdimb#2\p@\relax
     \@tempcnta\@tempdima \multiply\@tempcnta\@cclvi
     \divide\@tempcnta\@tempdimb \multiply\@tempcnta\@cclvi
     \@tempcntb\p@ \divide\@tempcntb\@tempdimb
@@ -883,13 +927,13 @@
         \advance\@tempcntb\m at ne \@tempdimc=\@tempcntb\@ne
       \else \@tempdimb=\@tempcntb\@ne \fi}%
     \xdef\bxjs at gtmpa{\the\@tempdimb}%
-  \egroup #1=\bxjs at gtmpa\relax}
+  \endgroup #1=\bxjs at gtmpa\relax}
 %    \end{macrocode}
 % \end{macro}
 %
 % \end{ZRnote}
 %
-% \paragraph{複合設定オプション ☆}
+% \paragraph{複合設定オプション \ZRX}
 % \mbox{}
 % \begin{ZRnote}
 % 複合設定オプションとは、
@@ -901,7 +945,9 @@
 %
 % \begin{macro}{\bxjs at composite@proc}
 % 複合設定オプションのための遅延処理マクロ。
+%    \begin{macrocode}
 \let\bxjs at composite@proc\relax
+%    \end{macrocode}
 % \end{macro}
 %
 % |pandoc| オプションは、Pandocで{\LaTeX}用の既定テンプレートを
@@ -912,22 +958,25 @@
 %    \end{macrocode}
 % 和文ドライバを |pandoc| に、エンジン指定を |autodetect-engine| に
 % 変更する。
+% \Note 実際の和文ドライバ・エンジン設定より優先される。
 %    \begin{macrocode}
-% \Note 実際の和文ドライバ・エンジン設定より優先される。
   \def\bxjs at composite@proc{%
+    \bxjs at oldfontcommandstrue
     \setkeys{bxjs}{ja=pandoc}%
     \let\bxjs at engine@given=*}%
 %    \end{macrocode}
-% ドライバオプションを |dvipdfmx-if-dvi| に変更する。
+% ドライバオプションを |dvi=dvipdfmx| 相当に変更する。
 % \Note これは実際のドライバ設定で上書きできる
 % (オプション宣言順に注意)。
+% \TODO できない気がする…。
 %    \begin{macrocode}
-  \def\bxjs at driver@opt{dvipdfmx-if-dvi}}
+  \def\bxjs at driver@opt{dvipdfmx}%
+  \bxjs at dvi@opttrue}
 %    \end{macrocode}
 %
 % \end{ZRnote}
 %
-% \paragraph{エンジン・ドライバオプション ☆}
+% \paragraph{エンジン・ドライバオプション \ZRX}
 % \mbox{}
 % \begin{ZRnote}
 % \begin{macro}{\bxjs at engine@given}
@@ -1017,15 +1066,16 @@
 %
 % 「もしDVIモードであればドライバを |dvipdfmx| にする」
 % というオプション。
+% \Note 1.2版で |dvi| オプションが新設されたが、互換性のため
+% このオプションも残す。
 %    \begin{macrocode}
 \DeclareOption{dvipdfmx-if-dvi}{%
-  \def\bxjs at driver@opt{dvipdfmx-if-dvi}%
-  \let\bxjs at driver@given\@undefined}
+  \setkeys{bxjs}{dvi=dvipdfmx}}
 %    \end{macrocode}
 %
 % \end{ZRnote}
 %
-% \paragraph{その他のBXJS独自オプション ☆}
+% \paragraph{その他のBXJS独自オプション \ZRX}
 % \mbox{}
 % \begin{ZRnote}
 % \begin{macro}{\ifbxjs at usezw}
@@ -1036,6 +1086,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% |zw|、|nozw| オプションの定義。
 %    \begin{macrocode}
 \DeclareOption{nozw}{%
   \bxjs at usezwfalse}
@@ -1051,6 +1102,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% |nojs|、|js| オプションの定義。
 %    \begin{macrocode}
 \DeclareOption{nojs}{%
   \bxjs at disguise@jsfalse}
@@ -1066,6 +1118,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% |noprecisetext|/|precisetext| オプションの定義。
 %    \begin{macrocode}
 \DeclareOption{noprecisetext}{%
   \bxjs at precisetextfalse}
@@ -1081,6 +1134,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% |nosimplejasetup|/|simplejasetup| オプションの定義。
 %    \begin{macrocode}
 \DeclareOption{nosimplejasetup}{%
   \bxjs at simplejasetupfalse}
@@ -1089,7 +1143,7 @@
 %    \end{macrocode}
 %
 % \begin{macro}{\ifbxjs at bigcode}
-% {\upTeX}で有効かするToUnicode CMapとして
+% {\upTeX}で有効化するToUnicode CMapとして
 % 「|UTF8-UCS2|」の代わりに「|UTF8-UTF16|」を使うか。
 % BMP外の文字に対応できる「|UTF8-UTF16|」の方が望ましいのであるが、
 % このファイルが利用可能かの確実な判定が困難であるため、
@@ -1110,6 +1164,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% |nobigcode|/|bigcode| オプションの定義。
 %    \begin{macrocode}
 \DeclareOption{nobigcode}{%
   \bxjs at bigcodefalse}
@@ -1117,9 +1172,27 @@
   \bxjs at bigcodetrue}
 %    \end{macrocode}
 %
+% \begin{macro}{\ifbxjs at oldfontcommands}
+% |\allowoldfontcommands| を既定で有効にするか。
+%    \begin{macrocode}
+\newif\ifbxjs at oldfontcommands
+%    \end{macrocode}
+% \end{macro}
+%
+% |nooldfontcommands|、|oldfontcommands| オプションの定義。
+% \Note |oldfontcommands| オプションの名前は\Pkg{memoir}クラスに倣った。
+% ちなみに\Pkg{KOMA-Script}では |enabledeprecatedfontcommands| であるが
+% これはチョットアレなので避けた。
+%    \begin{macrocode}
+\DeclareOption{nooldfontcommands}{%
+  \bxjs at oldfontcommandsfalse}
+\DeclareOption{oldfontcommands}{%
+  \bxjs at oldfontcommandstrue}
+%    \end{macrocode}
+%
 % \end{ZRnote}
 %
-% \paragraph{keyval型のオプション ☆}
+% \paragraph{keyval型のオプション \ZRX}
 % \mbox{}
 % \begin{ZRnote}
 %    \begin{macrocode}
@@ -1290,6 +1363,60 @@
   \fi}
 %    \end{macrocode}
 %
+% \begin{macro}{\bxjs at geometry}
+% |geometry| オプションの値。
+%    \begin{macrocode}
+\let\bxjs at geometry@class=c
+\let\bxjs at geometry@user=u
+\let\bxjs at geometry\bxjs at geometry@class
+%    \end{macrocode}
+% \end{macro}
+%
+% |geometry| オプションの処理。
+%    \begin{macrocode}
+\define at key{bxjs}{geometry}{%
+  \expandafter\let\expandafter\bxjs at geometry\csname
+   bxjs at geometry@#1\endcsname
+  \ifx\bxjs at geometry\relax
+    \ClassError\bxjs at clsname
+    {Invalid geometry value `#1'}\@ehc
+    \let\bxjs at geometry\bxjs at geometry@class
+  \fi}
+%    \end{macrocode}
+%
+% \begin{macro}{\ifbxjs at dvi@opt}
+% |dvi| オプションが指定されたか。
+%    \begin{macrocode}
+\newif\ifbxjs at dvi@opt
+%    \end{macrocode}
+% \end{macro}
+%
+% DVIモードのドライバとドライバ種別との対応。
+%    \begin{macrocode}
+\let\bxjs at dvidriver@@dvipdfmx=\bxjs at driver@@dvipdfmx
+\let\bxjs at dvidriver@@dvips=\bxjs at driver@@dvimode
+\let\bxjs at dvidriver@@dviout=\bxjs at driver@@dvimode
+\let\bxjs at dvidriver@@xdvi=\bxjs at driver@@dvimode
+%    \end{macrocode}
+%
+% |dvi| オプションの処理。
+%    \begin{macrocode}
+\define at key{bxjs}{dvi}{%
+  \expandafter\let\expandafter\bxjs at tmpa\csname
+   bxjs at dvidriver@@#1\endcsname
+  \ifx\bxjs at tmpa\relax
+    \ClassError\bxjs at clsname
+    {Invalid dvi value `#1'}\@ehc
+  \else
+%    \end{macrocode}
+% |\bxjs at driver@given| を未定義にしていることに注意。
+%    \begin{macrocode}
+    \def\bxjs at driver@opt{#1}%
+    \let\bxjs at driver@given\@undefined
+    \bxjs at dvi@opttrue
+  \fi}
+%    \end{macrocode}
+%
 % \end{ZRnote}
 %
 % \paragraph{オプションの実行}
@@ -1432,29 +1559,34 @@
 \fi
 %    \end{macrocode}
 %
-% DVI出力のエンジンでドライバオプションがない場合は警告を出す。
-% \Note ただし |ja| 非指定の場合はスキップする
-% (0.3 版との互換性のため)。
+% DVI出力のエンジンである場合の追加処理。
 %    \begin{macrocode}
 \ifjsInPdfMode \@tempswafalse
 \else\ifx x\jsEngine \@tempswafalse
-\else\ifx\bxjs at jadriver@given\@undefined \@tempswafalse
 \else \@tempswatrue
-\fi\fi\fi
+\fi\fi
 \if at tempswa
-  \ifx\bxjs at driver@opt\@undefined
+%    \end{macrocode}
+% ドライバオプションがない場合は警告を出す。
+% \Note ただし |ja| 非指定の場合はスキップする
+% (0.3 版との互換性のため)。
+%    \begin{macrocode}
+  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@given\@undefined\else
     \ClassWarningNoLine\bxjs at clsname
     {No driver option is given}
-  \fi
+  \fi\fi
 %    \end{macrocode}
-% DVI出力のエンジンで |dvipdfmx-in-dvi| が指定されていた場合は、
-% |dvipdfmx| が指定された時と同じ動作にする。
+% |dvi=XXX| が指定されていた場合は、
+% |XXX| が指定された時と同じ動作にする。
+% (グローバルオプションに |XXX| を追加する。)
 %    \begin{macrocode}
-  \def\bxjs at tmpa{dvipdfmx-if-dvi}
-  \ifx\bxjs at driver@opt\bxjs at tmpa
-    \def\bxjs at driver@opt{dvipdfmx}
-    \let\bxjs at driver@given\bxjs at driver@@dvipdfmx
-    \g at addto@macro\@classoptionslist{,dvipdfmx}
+  \ifbxjs at dvi@opt
+    \edef\bxjs at nxt{%
+      \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
   \fi
 \fi
 %    \end{macrocode}
@@ -1523,9 +1655,9 @@
 %    \end{macrocode}
 %
 % \begin{ZRnote}
+%
 % 8bit欧文{\TeX}の場合は、高位バイトをアクティブ化しておく。
 % (和文を含むマクロ定義を通用させるため。)
-% \end{ZRnote}
 %    \begin{macrocode}
 \if \if p\jsEngine T\else\if n\jsEngine T\else F\fi\fi T
   \@tempcnta="80 \loop \ifnum\@tempcnta<"100
@@ -1535,12 +1667,10 @@
 \fi
 %    \end{macrocode}
 %
-% \begin{ZRnote}
 % |js| オプション指定時は、jsarticle(または jsbook)クラスを
 % 読込済のように振舞う。
 % \Note 「2つのクラスを読み込んだ状態」は |\LoadClass| を使用した
 % 場合に出現するので、別に異常ではない。
-% \end{ZRnote}
 %    \begin{macrocode}
 \ifbxjs at disguise@js
 %<book|report>\def\bxjs at js@clsname{jsbook}
@@ -1549,15 +1679,22 @@
 \fi
 %    \end{macrocode}
 %
-% \begin{ZRnote}
-% |color|/|graphics|パッケージがもつ出力用紙サイズ設定の機能は、
+% |color|/|graphics| パッケージが持つ出力用紙サイズ設定の機能は、
 % BXJSクラスでは余計なので無効にしておく。
 % このため、グローバルで |nosetpagesize| を設定しておく。
-% \end{ZRnote}
 %    \begin{macrocode}
 \g at addto@macro\@classoptionslist{,nosetpagesize}
 %    \end{macrocode}
 %
+% |oldfontcommands| オプション指定時は |\allowoldfontcommands|
+% 命令を実行する。
+%    \begin{macrocode}
+\ifbxjs at oldfontcommands
+  \jsAtEndOfClass{\allowoldfontcommands}
+\fi
+%    \end{macrocode}
+% \end{ZRnote}
+%
 % \paragraph{papersizeスペシャルの出力}
 % \mbox{}
 % \begin{ZRnote}
@@ -1578,7 +1715,7 @@
 % \end{macro}
 %
 % \paragraph{拡大率の設定}
-%
+% \mbox{}
 % \begin{ZRnote}
 % \begin{macro}{\ifbxjs at nfss@patch}
 % NFSSパッチするか。
@@ -1680,8 +1817,8 @@
 %    \end{macrocode}
 % \end{ZRnote}
 %
-% \paragraph{NFSSパッチ ☆}
-%
+% \paragraph{NFSSパッチ \ZRX}
+% \mbox{}
 % \begin{ZRnote}
 % ムニャムニャムニャ……。
 %    \begin{macrocode}
@@ -2357,7 +2494,9 @@
 %<book>\newcommand\jsTextWidthLimit{40}
 \def\bxjs at postproc@layout{%
 % ドライバ再設定
-  \let\Gm at driver\bxjs at geometry@driver
+  \ifx\bxjs at geometry@driver\relax\else
+    \let\Gm at driver\bxjs at geometry@driver
+  \fi
 % textwidth 調整
   \@tempdimb=\textwidth
   \if at twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi
@@ -2396,7 +2535,27 @@
 }
 %    \end{macrocode}
 %
+% \begin{macro}{\jsGeometryOptions}
 % \begin{ZRnote}
+% |geometry|パッケージに渡すオプションのリスト。
+% \Note |geometry=user| 指定時にユーザが利用することを想定している。
+% \end{ZRnote}
+%    \begin{macrocode}
+\edef\jsGeometryOptions{%
+  \bxjs at layout@paper,\bxjs at layout}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{ZRnote}
+% ここで|geoemtry|オプションの値に応じて分岐する。
+%
+% まずは|geometry=class|の場合。
+% \end{ZRnote}
+%    \begin{macrocode}
+\ifx\bxjs at geometry\bxjs at geometry@class
+%    \end{macrocode}
+%
+% \begin{ZRnote}
 % |geometry| は |\topskip| が標準の行高(|\ht\strutbox|)より小さくならない
 % ようにする自動調整を行うが、これをどうするかは未検討。
 % 今のところ、単純に回避(無効化)している。
@@ -2409,49 +2568,6 @@
 \g at addto@macro\bxjs at revert{\ht\strutbox=\bxjs at tmpa\relax}
 %    \end{macrocode}
 % \begin{ZRnote}
-% エンジンが{\XeTeX}である場合の処理。
-% \begin{itemize}
-% \item |geometry| 4.2版の場合:\
-%   {\TeX} Liveの一部の版に用意されている設定ファイル |geometry.cfg|
-%   では、|geometry| のドライバ自動検出の処理を乗っ取って、
-%   強制的に |pdftex| を使用するようになっている。
-%   ところが、{\XeTeX}では |\pdfhorigin| など未サポートのpdf{\TeX}%
-%   プリミティブがあり、|\mag| $\neq 1000$ の場合にエラーになる。
-%   そこで、|geometry.cfg| の読込の箇所にフックをかけて、|geometry.cfg|
-%   での処理をさらに乗っ取ることにする。
-%   \begin{itemize}
-%   \item {\XeTeX}が |\pdfpagewidth| をサポートする場合は、ダミーの\
-%     |\pdfhorigin|、|\pdfvorigin| を用意してドライバを |pdftex|
-%     に強制的に変更する。
-%   \item そうでない場合は、ドライバを |dvipdfm| に強制的に変更する。
-%   \end{itemize}
-% \item |geometry| 5.x版の場合:\
-%   この版の |geometry| は{\XeTeX}に正式に対応(ドライバ名 |xetex|)
-%   していて、また{\XeTeX}で実行した場合にドライバ自動検出の結果は\
-%   |xetex| となる。
-%   従って、特に何もする必要がない。
-%   さらに、ドライバ自動検出処理のマクロ名を4.2版のもの
-%   (|\Gm at checkdrivers|)から変えているので、上述の |geometry.cfg|
-%   のフックおよびここで行っているフックはともに無力化されている。
-% \end{itemize}
-% \end{ZRnote}
-%    \begin{macrocode}
-\if x\jsEngine
-  \ifx\pdfpagewidth\@undefined
-    \def\bxjs at Gm@driver{dvipdfm}
-  \else
-    \def\bxjs at Gm@driver{pdftex}
-    \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
-    \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
-  \fi
-  \let\bxjs at InputIfFileExists\InputIfFileExists
-  \g at addto@macro\bxjs at revert{\let\InputIfFileExists\bxjs at InputIfFileExists}
-  \def\InputIfFileExists#1#2#3{%
-    \bxjs at InputIfFileExists{#1}{#2}{#3}%
-    \edef\Gm at checkdrivers{\noexpand\Gm at setdriver{\bxjs at Gm@driver}}}%
-\fi
-%    \end{macrocode}
-% \begin{ZRnote}
 % |geometry| のドライバオプション指定。
 % |nopapersize| 指定時は、special命令出力を抑止するために
 % ドライバを |none| にする。
@@ -2477,6 +2593,7 @@
 %    \begin{macrocode}
 \edef\bxjs at nxt{%
   \noexpand\RequirePackage[\bxjs at layout@paper,\bxjs at layout]{geometry}}
+\AtBeginDocument{\bxjs at pre@geometry at hook}
 \AtBeginDocument{\ImposeOldLuaTeXBehavior}
 \bxjs at nxt \bxjs at revert
 \AtBeginDocument{\RevokeOldLuaTeXBehavior}
@@ -2491,7 +2608,28 @@
 \bxjs at postproc@layout
 %    \end{macrocode}
 %
+% \begin{macro}{\bxjs at pre@geometry at hook}
 % \begin{ZRnote}
+% 1.2版より、|geometry| の4.x版の使用は非推奨とする。
+% \Note 将来サポートを廃止する予定。
+% \end{ZRnote}
+%    \begin{macrocode}
+\@onlypreamble\bxjs at pre@geometry at hook
+\def\bxjs at pre@geometry at hook{%
+  \@ifpackageloaded{geometry}{\@ifpackagelater{geometry}{2010/02/12}{}{%
+      \PackageWarningNoLine\bxjs at clsname
+       {The 'geometry' package installed\MessageBreak
+        is too old (< v5.0)}%
+      \if x\jsEngine \ifnum\mag=\@m\else
+        \def\bxjs at Gm@driver{pdftex}
+        \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
+        \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
+      \fi\fi
+  }}{}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{ZRnote}
 % \begin{itemize}
 % \item |\setpagelayout{|\meta{text}|}| : 現在の geometry の設定の
 % 一部を修正する。
@@ -2512,6 +2650,56 @@
 %    \end{macrocode}
 %
 % \begin{ZRnote}
+% |geometry=class|の場合の処理はここで終わり。
+%
+% 次に、|geometry=user|の場合の処理。
+% \end{ZRnote}
+%    \begin{macrocode}
+\else\ifx\bxjs at geometry\bxjs at geometry@user
+%    \end{macrocode}
+%
+% \begin{ZRnote}
+% この場合はユーザが何らかの方法(例えば |geometry| を読み込む)
+% でページレイアウトを設定する必要がある。
+% もし、本体開始時に |\textwidth| がカーネル設定の値(|.5\maxdimen|)
+% になっている場合はエラーを出す。
+% \Note |\jsUseMinimalPageLayout| は動作テスト用。
+% \end{ZRnote}
+%    \begin{macrocode}
+\AtBeginDocument{\bxjs at check@page at layout}
+\@onlypreamble\bxjs at check@page at layout
+\def\bxjs at check@page at layout{%
+  \ifdim\textwidth=.5\maxdimen
+    \ClassError\bxjs at clsname
+     {Page layout is not properly set}
+     \@ehd
+  \fi}
+\def\jsUseMinimalPageLayout{%
+  \setlength{\textwidth}{6.5in}%
+  \setlength{\textheight}{8in}}
+%    \end{macrocode}
+%
+% \begin{ZRnote}
+% |\setpagelayout| はとりあえず無効にしておく。
+% \end{ZRnote}
+%    \begin{macrocode}
+\let\bxjs at geometry@driver\relax
+\def\setpagelayout{\@ifstar
+  {\bxjs at pagelayout@a}{\bxjs at pagelayout@a}}
+\def\bxjs at pagelayout@a#1{%
+  \ClassError\bxjs at clsname
+   {Command \string\setpagelayout\space is not supported,\MessageBreak
+    because 'geometry' value is not 'class'}\@eha}
+%    \end{macrocode}
+%
+% \begin{ZRnote}
+% |geometry=user|の場合の処理はここで終わり。
+% \end{ZRnote}
+%    \begin{macrocode}
+\fi\fi
+%    \end{macrocode}
+%
+% \begin{ZRnote}
 % ここからのコードは以下の点を除いて JS クラスのものを踏襲する。
 % \begin{itemize}
 % \item zw の代わりに |\jsZw| を用いる。
@@ -2558,8 +2746,8 @@
 %
 % フロート(図,表)関連のパラメータは\LaTeXe 本体で定義されていますが,
 % ここで設定変更します。本文ページ(本文とフロートが共存するページ)
+% とフロートだけのページで設定が異なります。
 % ちなみに,カウンタは内部では |\c@| を名前に冠したマクロになっています。
-% とフロートだけのページで設定が異なります。
 %
 % \begin{macro}{\c at topnumber}
 %
@@ -4863,6 +5051,101 @@
 % これらは互換性のためのもので,
 % できるだけ |\text...| と |\math...| を使ってください。
 %
+% [2016-07-15] KOMA-Script中の |\scr at DeclareOldFontCommand| に倣い、
+% これらの命令を使うときには警告を発することにしました。
+%
+% [2016-07-16] 警告を最初の一回だけ発することにしました。また,
+% 例外的に警告を出さないようにするスイッチも付けます。
+%
+% \begin{macro}{\if at jsc@warnoldfontcmd}
+% \begin{macro}{\if at jsc@warnoldfontcmdexception}
+% \begin{ZRnote}
+% |\if at jsc@warnoldfontcmd| はBXJSクラスでは不使用。\par
+% |\if at jsc@warnoldfontcmdexception| は |\allow/disallowoldfontcommands|
+% の状態を表す。
+% \end{ZRnote}
+%    \begin{macrocode}
+\newif\if at jsc@warnoldfontcmd
+\@jsc at warnoldfontcmdtrue
+\newif\if at jsc@warnoldfontcmdexception
+\@jsc at warnoldfontcmdexceptionfalse
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\jsc at DeclareOldFontCommand}
+%    \begin{macrocode}
+\newcommand*{\jsc at DeclareOldFontCommand}[3]{%
+  \g at addto@macro\bxjs at oldfontcmd@list{\do#1}%
+  \DeclareOldFontCommand{#1}{%
+    \bxjs at oldfontcmd{#1}#2%
+  }{%
+    \bxjs at oldfontcmd{#1}#3%
+  }%
+}
+\DeclareRobustCommand*{\jsc at warnoldfontcmd}[1]{%
+  \ClassInfo\bxjs at clsname
+   {Old font command '\string#1' is used!!\MessageBreak
+    First occurrence is}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{ZRnote}
+%
+% \begin{macro}{\allowoldfontcommands}
+% “二文字フォント命令”の使用を許可する(警告しない)。
+% \begin{macro}{\disallowoldfontcommands}
+% “二文字フォント命令”の使用に対して警告を出す。
+%    \begin{macrocode}
+\newcommand*{\allowoldfontcommands}{%
+  \@jsc at warnoldfontcmdexceptiontrue}
+\newcommand*{\disallowoldfontcommands}{%
+  \@jsc at warnoldfontcmdexceptionfalse}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \Note 1.x版ではWarningではなくInfoに留めておく。
+%    \begin{macrocode}
+\let\bxjs at oldfontcmd@list\@empty
+\def\bxjs at oldfontcmd#1{%
+  \expandafter\bxjs at oldfontcmd@a\csname bxjs at ofc/\string#1\endcsname#1}
+\def\bxjs at oldfontcmd@a#1#2{%
+  \if at jsc@warnoldfontcmdexception\else
+    \global\@jsc at warnoldfontcmdfalse
+    \ifx#1\relax
+      \global\let#1=t%
+      \jsc at warnoldfontcmd{#2}%
+    \fi
+  \fi}
+\def\bxjs at warnoldfontcmd@final{%
+  \par
+  \let\@tempa\@empty
+  \def\do##1{%
+    \expandafter\ifx\csname bxjs at ofc/\string##1\endcsname\relax\else
+      \edef\@tempa{\@tempa \space\string##1}\fi}
+  \bxjs at oldfontcmd@list
+  \ifx\@tempa\@empty\else
+    \ClassWarningNoLine\bxjs at clsname
+     {Some old font commands were used in text\MessageBreak
+      (see the log output for detail)}%
+    \ClassInfo\bxjs at clsname
+     {Some old font commands were used in text:\MessageBreak
+      \space\@tempa\MessageBreak
+      You should note, that since 1994 LaTeX2e provides a\MessageBreak
+      new font selection scheme called NFSS2 with several\MessageBreak
+      new, combinable font commands. The
+      class provides\MessageBreak
+      the old font commands
+      only for compatibility%
+      \@gobble}%
+  \fi}
+\AtEndDocument{\bxjs at warnoldfontcmd@final}
+%    \end{macrocode}
+%
+% \end{ZRnote}
+%
 % \begin{macro}{\mc}
 % \begin{macro}{\gt}
 % \begin{macro}{\rm}
@@ -4872,11 +5155,11 @@
 % フォントファミリを変更します。
 %
 %    \begin{macrocode}
-\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
-\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
-\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
-\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
-\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\jsc at DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
+\jsc at DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
+\jsc at DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\jsc at DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\jsc at DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -4890,7 +5173,7 @@
 % コマンドは |\mdseries| です。
 %
 %    \begin{macrocode}
-\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\jsc at DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -4904,9 +5187,9 @@
 % 通常のアップライト体に戻すコマンドは |\upshape| です。
 %
 %    \begin{macrocode}
-\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
-\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
-\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\jsc at DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\jsc at DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\jsc at DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -5312,8 +5595,13 @@
 %
 % 参考文献リストを出力します。
 %
+% [2016-07-16] \LaTeX~2.09で使われていたフォントコマンドの警告を,
+% 文献スタイル(.bst)ではよく |\bf| がいまだに用いられることが多いため,
+% |thebibliography| 環境内では例外的に出さないようにしました。
+%
 %    \begin{macrocode}
 \newenvironment{thebibliography}[1]{%
+  \@jsc at warnoldfontcmdexceptiontrue
   \global\let\presectionname\relax
   \global\let\postsectionname\relax
 %<article|slide>  \section*{\refname}\@mkboth{\refname}{\refname}%
@@ -6009,8 +6297,8 @@
 %</slide>
 %    \end{macrocode}
 %
-% \paragraph{BXJS独自の追加処理 ☆}
-%
+% \paragraph{BXJS独自の追加処理 \ZRX}
+% \mbox{}
 % \begin{ZRnote}
 %
 % 和文ドライバのファイルを読み込む。
@@ -6035,7 +6323,7 @@
 % \clearpage
 % \appendix
 %^^A========================================================
-% \section{和文ドライバの仕様 ☆}
+% \section{和文ドライバの仕様 \ZRX}
 %
 % 次の命令がBXJSクラス本体と和文ドライバの連携のために
 % 用意されている。
@@ -6122,7 +6410,7 @@
 %    \end{macrocode}
 %
 %^^A========================================================
-% \section{和文ドライバ:minimal ☆}
+% \section{和文ドライバ:minimal \ZRX}
 %
 % |jadriver| の指定が無い場合に適用されるドライバ。
 % また、standard ドライバはまずこのドライバファイルを
@@ -6607,7 +6895,7 @@
 %    \end{macrocode}
 %
 %^^A========================================================
-% \section{和文ドライバ:standard ☆}
+% \section{和文ドライバ:standard \ZRX}
 %
 % 標準のドライバ。
 %
@@ -7478,7 +7766,7 @@
 %    \end{macrocode}
 %
 %^^A========================================================
-% \section{和文ドライバ:modern ☆}
+% \section{和文ドライバ:modern \ZRX}
 %
 % モダーンな設定。
 %
@@ -7552,7 +7840,7 @@
 %    \end{macrocode}
 %
 %^^A========================================================
-% \section{和文ドライバ:pandoc ☆}
+% \section{和文ドライバ:pandoc \ZRX}
 %
 % Pandoc用の何か。
 %
@@ -7736,7 +8024,7 @@
 %    \end{macrocode}
 %
 %^^A========================================================
-% \section{補助パッケージ一覧 ☆}
+% \section{補助パッケージ一覧 \ZRX}
 %
 % BXJSクラスの機能を実現するために用意されたものだが、
 % 他のクラスの文書で読み込んで利用することもできる。
@@ -7750,7 +8038,7 @@
 %    \end{macrocode}
 %
 %^^A========================================================
-% \section{補助パッケージ:bxjscompat ☆}
+% \section{補助パッケージ:bxjscompat \ZRX}
 %
 % ムニャムニャムニャ……。
 %
@@ -7924,7 +8212,7 @@
 %    \end{macrocode}
 %
 %^^A========================================================
-% \section{補助パッケージ:bxjscjkcat ☆}
+% \section{補助パッケージ:bxjscjkcat \ZRX}
 %
 % modernドライバ用の和文カテゴリを適用する。
 %

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls	2016-08-01 01:10:42 UTC (rev 41782)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls	2016-08-01 21:41:12 UTC (rev 41783)
@@ -37,7 +37,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsarticle}
-  [2016/07/16 v1.1f BXJS document classes]
+  [2016/08/01 v1.2 BXJS document classes]
 %% このファイルは日本語文字を含みます
 \RequirePackage{calc}
 \RequirePackage{keyval}
@@ -103,6 +103,15 @@
 \fi
 \bxjs at robust@def\jsInhibitGlue{%
   \ifx\inhibitglue\@undefined\else \inhibitglue \fi}
+\if at compatibility
+  \ClassError\bxjs at clsname
+   {Something went chaotic!\MessageBreak
+    I cannot go a single step further...}
+   {If the chant of \string\documentstyle\space was just a blunder
+    of yours,\MessageBreak then there'll still be hope....}
+  \expandafter\@firstofone
+\else \expandafter\@gobble
+\fi{\typeout{Farewell!}\endinput\@@end}
 \newif\if at restonecol
 \newif\if at titlepage
 \newif\if at enablejfam \@enablejfamtrue
@@ -248,7 +257,7 @@
 \DeclareOption{english}{\@englishtrue}
 \mathchardef\bxjs at csta=259
 \def\bxjs at invscale#1#2{%
-  \bgroup \@tempdima=#1\relax \@tempdimb#2\p@\relax
+  \begingroup \@tempdima=#1\relax \@tempdimb#2\p@\relax
     \@tempcnta\@tempdima \multiply\@tempcnta\@cclvi
     \divide\@tempcnta\@tempdimb \multiply\@tempcnta\@cclvi
     \@tempcntb\p@ \divide\@tempcntb\@tempdimb
@@ -263,13 +272,15 @@
         \advance\@tempcntb\m at ne \@tempdimc=\@tempcntb\@ne
       \else \@tempdimb=\@tempcntb\@ne \fi}%
     \xdef\bxjs at gtmpa{\the\@tempdimb}%
-  \egroup #1=\bxjs at gtmpa\relax}
+  \endgroup #1=\bxjs at gtmpa\relax}
 \let\bxjs at composite@proc\relax
 \DeclareOption{pandoc}{%
   \def\bxjs at composite@proc{%
+    \bxjs at oldfontcommandstrue
     \setkeys{bxjs}{ja=pandoc}%
     \let\bxjs at engine@given=*}%
-  \def\bxjs at driver@opt{dvipdfmx-if-dvi}}
+  \def\bxjs at driver@opt{dvipdfmx}%
+  \bxjs at dvi@opttrue}
 \DeclareOption{autodetect-engine}{%
   \let\bxjs at engine@given=*}
 \DeclareOption{latex}{%
@@ -316,8 +327,7 @@
   \def\bxjs at driver@opt{xetex}%
   \let\bxjs at driver@given\bxjs at driver@@xetex}
 \DeclareOption{dvipdfmx-if-dvi}{%
-  \def\bxjs at driver@opt{dvipdfmx-if-dvi}%
-  \let\bxjs at driver@given\@undefined}
+  \setkeys{bxjs}{dvi=dvipdfmx}}
 \newif\ifbxjs at usezw \bxjs at usezwtrue
 \DeclareOption{nozw}{%
   \bxjs at usezwfalse}
@@ -347,6 +357,11 @@
   \bxjs at bigcodefalse}
 \DeclareOption{bigcode}{%
   \bxjs at bigcodetrue}
+\newif\ifbxjs at oldfontcommands
+\DeclareOption{nooldfontcommands}{%
+  \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}}
@@ -408,6 +423,33 @@
     {Invalid magstyle value `#1'}\@ehc
     \let\bxjs at magstyle\bxjs at magstyle@default
   \fi}
+\let\bxjs at geometry@class=c
+\let\bxjs at geometry@user=u
+\let\bxjs at geometry\bxjs at geometry@class
+\define at key{bxjs}{geometry}{%
+  \expandafter\let\expandafter\bxjs at geometry\csname
+   bxjs at geometry@#1\endcsname
+  \ifx\bxjs at geometry\relax
+    \ClassError\bxjs at clsname
+    {Invalid geometry value `#1'}\@ehc
+    \let\bxjs at geometry\bxjs at geometry@class
+  \fi}
+\newif\ifbxjs at dvi@opt
+\let\bxjs at dvidriver@@dvipdfmx=\bxjs at driver@@dvipdfmx
+\let\bxjs at dvidriver@@dvips=\bxjs at driver@@dvimode
+\let\bxjs at dvidriver@@dviout=\bxjs at driver@@dvimode
+\let\bxjs at dvidriver@@xdvi=\bxjs at driver@@dvimode
+\define at key{bxjs}{dvi}{%
+  \expandafter\let\expandafter\bxjs at tmpa\csname
+   bxjs at dvidriver@@#1\endcsname
+  \ifx\bxjs at tmpa\relax
+    \ClassError\bxjs at clsname
+    {Invalid dvi value `#1'}\@ehc
+  \else
+    \def\bxjs at driver@opt{#1}%
+    \let\bxjs at driver@given\@undefined
+    \bxjs at dvi@opttrue
+  \fi}
 \let\bxjs at ltx@removeelement\@removeelement
 \def\@removeelement#1#2#3{%
   \def\reserved at a{#2}%
@@ -487,20 +529,21 @@
 \fi
 \ifjsInPdfMode \@tempswafalse
 \else\ifx x\jsEngine \@tempswafalse
-\else\ifx\bxjs at jadriver@given\@undefined \@tempswafalse
 \else \@tempswatrue
-\fi\fi\fi
+\fi\fi
 \if at tempswa
-  \ifx\bxjs at driver@opt\@undefined
+  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@given\@undefined\else
     \ClassWarningNoLine\bxjs at clsname
     {No driver option is given}
+  \fi\fi
+  \ifbxjs at dvi@opt
+    \edef\bxjs at nxt{%
+      \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
   \fi
-  \def\bxjs at tmpa{dvipdfmx-if-dvi}
-  \ifx\bxjs at driver@opt\bxjs at tmpa
-    \def\bxjs at driver@opt{dvipdfmx}
-    \let\bxjs at driver@given\bxjs at driver@@dvipdfmx
-    \g at addto@macro\@classoptionslist{,dvipdfmx}
-  \fi
 \fi
 \def\bxjs@@minimal{minimal}
 \ifx\bxjs at jadriver\relax
@@ -546,6 +589,9 @@
   \@namedef{ver@\bxjs at js@clsname.cls}{2001/01/01 (bxjs)}
 \fi
 \g at addto@macro\@classoptionslist{,nosetpagesize}
+\ifbxjs at oldfontcommands
+  \jsAtEndOfClass{\allowoldfontcommands}
+\fi
 \ifdim\bxjs at param@basefontsize<10pt \def\n at baseline{15}%
 \else \def\n at baseline{16}\fi
 \newif\ifbxjs at nfss@patch
@@ -783,7 +829,9 @@
 }
 \newdimen\fullwidth
 \def\bxjs at postproc@layout{%
-  \let\Gm at driver\bxjs at geometry@driver
+  \ifx\bxjs at geometry@driver\relax\else
+    \let\Gm at driver\bxjs at geometry@driver
+  \fi
   \@tempdimb=\textwidth
   \if at twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi
   \divide\textwidth\@tempdima \multiply\textwidth\@tempdima
@@ -809,25 +857,14 @@
   \stockwidth=\paperwidth
   \stockheight=\paperheight
 }
+\edef\jsGeometryOptions{%
+  \bxjs at layout@paper,\bxjs at layout}
+\ifx\bxjs at geometry\bxjs at geometry@class
 \@onlypreamble\bxjs at revert
 \let\bxjs at revert\@empty
 \edef\bxjs at tmpa{\the\ht\strutbox}
 \ht\strutbox=10\p@?
 \g at addto@macro\bxjs at revert{\ht\strutbox=\bxjs at tmpa\relax}
-\if x\jsEngine
-  \ifx\pdfpagewidth\@undefined
-    \def\bxjs at Gm@driver{dvipdfm}
-  \else
-    \def\bxjs at Gm@driver{pdftex}
-    \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
-    \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
-  \fi
-  \let\bxjs at InputIfFileExists\InputIfFileExists
-  \g at addto@macro\bxjs at revert{\let\InputIfFileExists\bxjs at InputIfFileExists}
-  \def\InputIfFileExists#1#2#3{%
-    \bxjs at InputIfFileExists{#1}{#2}{#3}%
-    \edef\Gm at checkdrivers{\noexpand\Gm at setdriver{\bxjs at Gm@driver}}}%
-\fi
 \ifbxjs at papersize
   \ifx\bxjs at driver@given\bxjs at driver@@dvipdfmx
     \PassOptionsToPackage{dvipdfm}{geometry}
@@ -838,11 +875,24 @@
 \fi
 \edef\bxjs at nxt{%
   \noexpand\RequirePackage[\bxjs at layout@paper,\bxjs at layout]{geometry}}
+\AtBeginDocument{\bxjs at pre@geometry at hook}
 \AtBeginDocument{\ImposeOldLuaTeXBehavior}
 \bxjs at nxt \bxjs at revert
 \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}{\@ifpackagelater{geometry}{2010/02/12}{}{%
+      \PackageWarningNoLine\bxjs at clsname
+       {The 'geometry' package installed\MessageBreak
+        is too old (< v5.0)}%
+      \if x\jsEngine \ifnum\mag=\@m\else
+        \def\bxjs at Gm@driver{pdftex}
+        \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
+        \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
+      \fi\fi
+  }}{}}
 \def\setpagelayout{\@ifstar
   {\bxjs at reset@layout}{\bxjs at modify@layout}}
 \def\bxjs at modify@layout#1{%
@@ -851,6 +901,26 @@
 \def\bxjs at reset@layout#1{%
   \edef\bxjs at nxt{\noexpand\geometry{reset,\bxjs at layout@paper,#1,truedimen}}%
   \bxjs at nxt\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{%
+  \ifdim\textwidth=.5\maxdimen
+    \ClassError\bxjs at clsname
+     {Page layout is not properly set}
+     \@ehd
+  \fi}
+\def\jsUseMinimalPageLayout{%
+  \setlength{\textwidth}{6.5in}%
+  \setlength{\textheight}{8in}}
+\let\bxjs at geometry@driver\relax
+\def\setpagelayout{\@ifstar
+  {\bxjs at pagelayout@a}{\bxjs at pagelayout@a}}
+\def\bxjs at pagelayout@a#1{%
+  \ClassError\bxjs at clsname
+   {Command \string\setpagelayout\space is not supported,\MessageBreak
+    because 'geometry' value is not 'class'}\@eha}
+\fi\fi
 \footnotesep=11\p@? \footnotesep=0.7\footnotesep
 \setlength{\skip\footins}{16\p@? \@plus 5\p@? \@minus 2\p@?}
 \setcounter{topnumber}{9}
@@ -1482,15 +1552,70 @@
   \ifdim \wd\@tempboxa <\hsize \centering \fi
   #1\hskip1\jsZw\relax #2\par
   \vskip\belowcaptionskip}}
-\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
-\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
-\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
-\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
-\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
-\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
-\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
-\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
-\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\newif\if at jsc@warnoldfontcmd
+\@jsc at warnoldfontcmdtrue
+\newif\if at jsc@warnoldfontcmdexception
+\@jsc at warnoldfontcmdexceptionfalse
+\newcommand*{\jsc at DeclareOldFontCommand}[3]{%
+  \g at addto@macro\bxjs at oldfontcmd@list{\do#1}%
+  \DeclareOldFontCommand{#1}{%
+    \bxjs at oldfontcmd{#1}#2%
+  }{%
+    \bxjs at oldfontcmd{#1}#3%
+  }%
+}
+\DeclareRobustCommand*{\jsc at warnoldfontcmd}[1]{%
+  \ClassInfo\bxjs at clsname
+   {Old font command '\string#1' is used!!\MessageBreak
+    First occurrence is}%
+}
+\newcommand*{\allowoldfontcommands}{%
+  \@jsc at warnoldfontcmdexceptiontrue}
+\newcommand*{\disallowoldfontcommands}{%
+  \@jsc at warnoldfontcmdexceptionfalse}
+\let\bxjs at oldfontcmd@list\@empty
+\def\bxjs at oldfontcmd#1{%
+  \expandafter\bxjs at oldfontcmd@a\csname bxjs at ofc/\string#1\endcsname#1}
+\def\bxjs at oldfontcmd@a#1#2{%
+  \if at jsc@warnoldfontcmdexception\else
+    \global\@jsc at warnoldfontcmdfalse
+    \ifx#1\relax
+      \global\let#1=t%
+      \jsc at warnoldfontcmd{#2}%
+    \fi
+  \fi}
+\def\bxjs at warnoldfontcmd@final{%
+  \par
+  \let\@tempa\@empty
+  \def\do##1{%
+    \expandafter\ifx\csname bxjs at ofc/\string##1\endcsname\relax\else
+      \edef\@tempa{\@tempa \space\string##1}\fi}
+  \bxjs at oldfontcmd@list
+  \ifx\@tempa\@empty\else
+    \ClassWarningNoLine\bxjs at clsname
+     {Some old font commands were used in text\MessageBreak
+      (see the log output for detail)}%
+    \ClassInfo\bxjs at clsname
+     {Some old font commands were used in text:\MessageBreak
+      \space\@tempa\MessageBreak
+      You should note, that since 1994 LaTeX2e provides a\MessageBreak
+      new font selection scheme called NFSS2 with several\MessageBreak
+      new, combinable font commands. The
+      class provides\MessageBreak
+      the old font commands
+      only for compatibility%
+      \@gobble}%
+  \fi}
+\AtEndDocument{\bxjs at warnoldfontcmd@final}
+\jsc at DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
+\jsc at DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
+\jsc at DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\jsc at DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\jsc at DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\jsc at DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\jsc at DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\jsc at DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\jsc at DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
 \DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
 \DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}
 \newcommand\@pnumwidth{1.55em}
@@ -1577,6 +1702,7 @@
 \newdimen\bibindent
 \setlength\bibindent{2\jsZw}
 \newenvironment{thebibliography}[1]{%
+  \@jsc at warnoldfontcmdexceptiontrue
   \global\let\presectionname\relax
   \global\let\postsectionname\relax
   \section*{\refname}\@mkboth{\refname}{\refname}%

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls	2016-08-01 01:10:42 UTC (rev 41782)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls	2016-08-01 21:41:12 UTC (rev 41783)
@@ -37,7 +37,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsbook}
-  [2016/07/16 v1.1f BXJS document classes]
+  [2016/08/01 v1.2 BXJS document classes]
 %% このファイルは日本語文字を含みます
 \RequirePackage{calc}
 \RequirePackage{keyval}
@@ -103,6 +103,15 @@
 \fi
 \bxjs at robust@def\jsInhibitGlue{%
   \ifx\inhibitglue\@undefined\else \inhibitglue \fi}
+\if at compatibility
+  \ClassError\bxjs at clsname
+   {Something went chaotic!\MessageBreak
+    I cannot go a single step further...}
+   {If the chant of \string\documentstyle\space was just a blunder
+    of yours,\MessageBreak then there'll still be hope....}
+  \expandafter\@firstofone
+\else \expandafter\@gobble
+\fi{\typeout{Farewell!}\endinput\@@end}
 \newif\if at restonecol
 \newif\if at titlepage
 \newif\if at openright
@@ -252,7 +261,7 @@
 \DeclareOption{english}{\@englishtrue}
 \mathchardef\bxjs at csta=259
 \def\bxjs at invscale#1#2{%
-  \bgroup \@tempdima=#1\relax \@tempdimb#2\p@\relax
+  \begingroup \@tempdima=#1\relax \@tempdimb#2\p@\relax
     \@tempcnta\@tempdima \multiply\@tempcnta\@cclvi
     \divide\@tempcnta\@tempdimb \multiply\@tempcnta\@cclvi
     \@tempcntb\p@ \divide\@tempcntb\@tempdimb
@@ -267,13 +276,15 @@
         \advance\@tempcntb\m at ne \@tempdimc=\@tempcntb\@ne
       \else \@tempdimb=\@tempcntb\@ne \fi}%
     \xdef\bxjs at gtmpa{\the\@tempdimb}%
-  \egroup #1=\bxjs at gtmpa\relax}
+  \endgroup #1=\bxjs at gtmpa\relax}
 \let\bxjs at composite@proc\relax
 \DeclareOption{pandoc}{%
   \def\bxjs at composite@proc{%
+    \bxjs at oldfontcommandstrue
     \setkeys{bxjs}{ja=pandoc}%
     \let\bxjs at engine@given=*}%
-  \def\bxjs at driver@opt{dvipdfmx-if-dvi}}
+  \def\bxjs at driver@opt{dvipdfmx}%
+  \bxjs at dvi@opttrue}
 \DeclareOption{autodetect-engine}{%
   \let\bxjs at engine@given=*}
 \DeclareOption{latex}{%
@@ -320,8 +331,7 @@
   \def\bxjs at driver@opt{xetex}%
   \let\bxjs at driver@given\bxjs at driver@@xetex}
 \DeclareOption{dvipdfmx-if-dvi}{%
-  \def\bxjs at driver@opt{dvipdfmx-if-dvi}%
-  \let\bxjs at driver@given\@undefined}
+  \setkeys{bxjs}{dvi=dvipdfmx}}
 \newif\ifbxjs at usezw \bxjs at usezwtrue
 \DeclareOption{nozw}{%
   \bxjs at usezwfalse}
@@ -351,6 +361,11 @@
   \bxjs at bigcodefalse}
 \DeclareOption{bigcode}{%
   \bxjs at bigcodetrue}
+\newif\ifbxjs at oldfontcommands
+\DeclareOption{nooldfontcommands}{%
+  \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}}
@@ -412,6 +427,33 @@
     {Invalid magstyle value `#1'}\@ehc
     \let\bxjs at magstyle\bxjs at magstyle@default
   \fi}
+\let\bxjs at geometry@class=c
+\let\bxjs at geometry@user=u
+\let\bxjs at geometry\bxjs at geometry@class
+\define at key{bxjs}{geometry}{%
+  \expandafter\let\expandafter\bxjs at geometry\csname
+   bxjs at geometry@#1\endcsname
+  \ifx\bxjs at geometry\relax
+    \ClassError\bxjs at clsname
+    {Invalid geometry value `#1'}\@ehc
+    \let\bxjs at geometry\bxjs at geometry@class
+  \fi}
+\newif\ifbxjs at dvi@opt
+\let\bxjs at dvidriver@@dvipdfmx=\bxjs at driver@@dvipdfmx
+\let\bxjs at dvidriver@@dvips=\bxjs at driver@@dvimode
+\let\bxjs at dvidriver@@dviout=\bxjs at driver@@dvimode
+\let\bxjs at dvidriver@@xdvi=\bxjs at driver@@dvimode
+\define at key{bxjs}{dvi}{%
+  \expandafter\let\expandafter\bxjs at tmpa\csname
+   bxjs at dvidriver@@#1\endcsname
+  \ifx\bxjs at tmpa\relax
+    \ClassError\bxjs at clsname
+    {Invalid dvi value `#1'}\@ehc
+  \else
+    \def\bxjs at driver@opt{#1}%
+    \let\bxjs at driver@given\@undefined
+    \bxjs at dvi@opttrue
+  \fi}
 \let\bxjs at ltx@removeelement\@removeelement
 \def\@removeelement#1#2#3{%
   \def\reserved at a{#2}%
@@ -491,20 +533,21 @@
 \fi
 \ifjsInPdfMode \@tempswafalse
 \else\ifx x\jsEngine \@tempswafalse
-\else\ifx\bxjs at jadriver@given\@undefined \@tempswafalse
 \else \@tempswatrue
-\fi\fi\fi
+\fi\fi
 \if at tempswa
-  \ifx\bxjs at driver@opt\@undefined
+  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@given\@undefined\else
     \ClassWarningNoLine\bxjs at clsname
     {No driver option is given}
+  \fi\fi
+  \ifbxjs at dvi@opt
+    \edef\bxjs at nxt{%
+      \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
   \fi
-  \def\bxjs at tmpa{dvipdfmx-if-dvi}
-  \ifx\bxjs at driver@opt\bxjs at tmpa
-    \def\bxjs at driver@opt{dvipdfmx}
-    \let\bxjs at driver@given\bxjs at driver@@dvipdfmx
-    \g at addto@macro\@classoptionslist{,dvipdfmx}
-  \fi
 \fi
 \def\bxjs@@minimal{minimal}
 \ifx\bxjs at jadriver\relax
@@ -550,6 +593,9 @@
   \@namedef{ver@\bxjs at js@clsname.cls}{2001/01/01 (bxjs)}
 \fi
 \g at addto@macro\@classoptionslist{,nosetpagesize}
+\ifbxjs at oldfontcommands
+  \jsAtEndOfClass{\allowoldfontcommands}
+\fi
 \ifdim\bxjs at param@basefontsize<10pt \def\n at baseline{15}%
 \else \def\n at baseline{16}\fi
 \newif\ifbxjs at nfss@patch
@@ -787,7 +833,9 @@
 \newdimen\fullwidth
 \newcommand\jsTextWidthLimit{40}
 \def\bxjs at postproc@layout{%
-  \let\Gm at driver\bxjs at geometry@driver
+  \ifx\bxjs at geometry@driver\relax\else
+    \let\Gm at driver\bxjs at geometry@driver
+  \fi
   \@tempdimb=\textwidth
   \if at twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi
   \divide\textwidth\@tempdima \multiply\textwidth\@tempdima
@@ -817,25 +865,14 @@
   \stockwidth=\paperwidth
   \stockheight=\paperheight
 }
+\edef\jsGeometryOptions{%
+  \bxjs at layout@paper,\bxjs at layout}
+\ifx\bxjs at geometry\bxjs at geometry@class
 \@onlypreamble\bxjs at revert
 \let\bxjs at revert\@empty
 \edef\bxjs at tmpa{\the\ht\strutbox}
 \ht\strutbox=10\p@?
 \g at addto@macro\bxjs at revert{\ht\strutbox=\bxjs at tmpa\relax}
-\if x\jsEngine
-  \ifx\pdfpagewidth\@undefined
-    \def\bxjs at Gm@driver{dvipdfm}
-  \else
-    \def\bxjs at Gm@driver{pdftex}
-    \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
-    \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
-  \fi
-  \let\bxjs at InputIfFileExists\InputIfFileExists
-  \g at addto@macro\bxjs at revert{\let\InputIfFileExists\bxjs at InputIfFileExists}
-  \def\InputIfFileExists#1#2#3{%
-    \bxjs at InputIfFileExists{#1}{#2}{#3}%
-    \edef\Gm at checkdrivers{\noexpand\Gm at setdriver{\bxjs at Gm@driver}}}%
-\fi
 \ifbxjs at papersize
   \ifx\bxjs at driver@given\bxjs at driver@@dvipdfmx
     \PassOptionsToPackage{dvipdfm}{geometry}
@@ -846,11 +883,24 @@
 \fi
 \edef\bxjs at nxt{%
   \noexpand\RequirePackage[\bxjs at layout@paper,\bxjs at layout]{geometry}}
+\AtBeginDocument{\bxjs at pre@geometry at hook}
 \AtBeginDocument{\ImposeOldLuaTeXBehavior}
 \bxjs at nxt \bxjs at revert
 \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}{\@ifpackagelater{geometry}{2010/02/12}{}{%
+      \PackageWarningNoLine\bxjs at clsname
+       {The 'geometry' package installed\MessageBreak
+        is too old (< v5.0)}%
+      \if x\jsEngine \ifnum\mag=\@m\else
+        \def\bxjs at Gm@driver{pdftex}
+        \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
+        \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
+      \fi\fi
+  }}{}}
 \def\setpagelayout{\@ifstar
   {\bxjs at reset@layout}{\bxjs at modify@layout}}
 \def\bxjs at modify@layout#1{%
@@ -859,6 +909,26 @@
 \def\bxjs at reset@layout#1{%
   \edef\bxjs at nxt{\noexpand\geometry{reset,\bxjs at layout@paper,#1,truedimen}}%
   \bxjs at nxt\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{%
+  \ifdim\textwidth=.5\maxdimen
+    \ClassError\bxjs at clsname
+     {Page layout is not properly set}
+     \@ehd
+  \fi}
+\def\jsUseMinimalPageLayout{%
+  \setlength{\textwidth}{6.5in}%
+  \setlength{\textheight}{8in}}
+\let\bxjs at geometry@driver\relax
+\def\setpagelayout{\@ifstar
+  {\bxjs at pagelayout@a}{\bxjs at pagelayout@a}}
+\def\bxjs at pagelayout@a#1{%
+  \ClassError\bxjs at clsname
+   {Command \string\setpagelayout\space is not supported,\MessageBreak
+    because 'geometry' value is not 'class'}\@eha}
+\fi\fi
 \footnotesep=11\p@? \footnotesep=0.7\footnotesep
 \setlength{\skip\footins}{16\p@? \@plus 5\p@? \@minus 2\p@?}
 \setcounter{topnumber}{9}
@@ -1537,15 +1607,70 @@
   \ifdim \wd\@tempboxa <\hsize \centering \fi
   #1\hskip1\jsZw\relax #2\par
   \vskip\belowcaptionskip}}
-\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
-\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
-\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
-\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
-\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
-\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
-\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
-\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
-\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\newif\if at jsc@warnoldfontcmd
+\@jsc at warnoldfontcmdtrue
+\newif\if at jsc@warnoldfontcmdexception
+\@jsc at warnoldfontcmdexceptionfalse
+\newcommand*{\jsc at DeclareOldFontCommand}[3]{%
+  \g at addto@macro\bxjs at oldfontcmd@list{\do#1}%
+  \DeclareOldFontCommand{#1}{%
+    \bxjs at oldfontcmd{#1}#2%
+  }{%
+    \bxjs at oldfontcmd{#1}#3%
+  }%
+}
+\DeclareRobustCommand*{\jsc at warnoldfontcmd}[1]{%
+  \ClassInfo\bxjs at clsname
+   {Old font command '\string#1' is used!!\MessageBreak
+    First occurrence is}%
+}
+\newcommand*{\allowoldfontcommands}{%
+  \@jsc at warnoldfontcmdexceptiontrue}
+\newcommand*{\disallowoldfontcommands}{%
+  \@jsc at warnoldfontcmdexceptionfalse}
+\let\bxjs at oldfontcmd@list\@empty
+\def\bxjs at oldfontcmd#1{%
+  \expandafter\bxjs at oldfontcmd@a\csname bxjs at ofc/\string#1\endcsname#1}
+\def\bxjs at oldfontcmd@a#1#2{%
+  \if at jsc@warnoldfontcmdexception\else
+    \global\@jsc at warnoldfontcmdfalse
+    \ifx#1\relax
+      \global\let#1=t%
+      \jsc at warnoldfontcmd{#2}%
+    \fi
+  \fi}
+\def\bxjs at warnoldfontcmd@final{%
+  \par
+  \let\@tempa\@empty
+  \def\do##1{%
+    \expandafter\ifx\csname bxjs at ofc/\string##1\endcsname\relax\else
+      \edef\@tempa{\@tempa \space\string##1}\fi}
+  \bxjs at oldfontcmd@list
+  \ifx\@tempa\@empty\else
+    \ClassWarningNoLine\bxjs at clsname
+     {Some old font commands were used in text\MessageBreak
+      (see the log output for detail)}%
+    \ClassInfo\bxjs at clsname
+     {Some old font commands were used in text:\MessageBreak
+      \space\@tempa\MessageBreak
+      You should note, that since 1994 LaTeX2e provides a\MessageBreak
+      new font selection scheme called NFSS2 with several\MessageBreak
+      new, combinable font commands. The
+      class provides\MessageBreak
+      the old font commands
+      only for compatibility%
+      \@gobble}%
+  \fi}
+\AtEndDocument{\bxjs at warnoldfontcmd@final}
+\jsc at DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
+\jsc at DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
+\jsc at DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\jsc at DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\jsc at DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\jsc at DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\jsc at DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\jsc at DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\jsc at DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
 \DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
 \DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}
 \newcommand\@pnumwidth{1.55em}
@@ -1651,6 +1776,7 @@
 \newdimen\bibindent
 \setlength\bibindent{2\jsZw}
 \newenvironment{thebibliography}[1]{%
+  \@jsc at warnoldfontcmdexceptiontrue
   \global\let\presectionname\relax
   \global\let\postsectionname\relax
   \chapter*{\bibname}\@mkboth{\bibname}{}%

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty	2016-08-01 01:10:42 UTC (rev 41782)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty	2016-08-01 21:41:12 UTC (rev 41783)
@@ -36,7 +36,7 @@
 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
 %%   Right brace   \}     Tilde         \~}
 \ProvidesPackage{bxjscjkcat}
-  [2016/07/16 v1.1f BXJS document classes]
+  [2016/08/01 v1.2 BXJS document classes]
 \def\bxjx at pkgname{bxjscjkcat}
 \newcount\bxjx at cnta
 \let\bxjx at engine=n

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty	2016-08-01 01:10:42 UTC (rev 41782)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty	2016-08-01 21:41:12 UTC (rev 41783)
@@ -36,7 +36,7 @@
 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
 %%   Right brace   \}     Tilde         \~}
 \ProvidesPackage{bxjscompat}
-  [2016/07/16 v1.1f BXJS document classes]
+  [2016/08/01 v1.2 BXJS document classes]
 \def\bxac at pkgname{bxjscompat}
 \let\bxac at engine=n
 \def\bxac at do#1#2{%

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def	2016-08-01 01:10:42 UTC (rev 41782)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def	2016-08-01 21:41:12 UTC (rev 41783)
@@ -36,7 +36,7 @@
 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
 %%   Right brace   \}     Tilde         \~}
 \ProvidesFile{bxjsja-minimal.def}
-  [2016/07/16 v1.1f BXJS document classes]
+  [2016/08/01 v1.2 BXJS document classes]
 %% このファイルは日本語文字を含みます
 \def\DeclareJaTextFontCommand#1#2{%
   \DeclareRobustCommand#1[1]{%

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def	2016-08-01 01:10:42 UTC (rev 41782)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def	2016-08-01 21:41:12 UTC (rev 41783)
@@ -36,7 +36,7 @@
 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
 %%   Right brace   \}     Tilde         \~}
 \ProvidesFile{bxjsja-modern.def}
-  [2016/07/16 v1.1f BXJS document classes]
+  [2016/08/01 v1.2 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	2016-08-01 01:10:42 UTC (rev 41782)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def	2016-08-01 21:41:12 UTC (rev 41783)
@@ -36,7 +36,7 @@
 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
 %%   Right brace   \}     Tilde         \~}
 \ProvidesFile{bxjsja-pandoc.def}
-  [2016/07/16 v1.1f BXJS document classes]
+  [2016/08/01 v1.2 BXJS document classes]
 \input{bxjsja-standard.def}
 \@onlypreamble\bxjs at set@dupload at proc
 \def\bxjs at set@dupload at proc#1{%

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def	2016-08-01 01:10:42 UTC (rev 41782)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def	2016-08-01 21:41:12 UTC (rev 41783)
@@ -36,7 +36,7 @@
 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
 %%   Right brace   \}     Tilde         \~}
 \ProvidesFile{bxjsja-standard.def}
-  [2016/07/16 v1.1f BXJS document classes]
+  [2016/08/01 v1.2 BXJS document classes]
 %% このファイルは日本語文字を含みます
 \input{bxjsja-minimal.def}
 \bxjs at simplejasetupfalse

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls	2016-08-01 01:10:42 UTC (rev 41782)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls	2016-08-01 21:41:12 UTC (rev 41783)
@@ -37,7 +37,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsreport}
-  [2016/07/16 v1.1f BXJS document classes]
+  [2016/08/01 v1.2 BXJS document classes]
 %% このファイルは日本語文字を含みます
 \RequirePackage{calc}
 \RequirePackage{keyval}
@@ -103,6 +103,15 @@
 \fi
 \bxjs at robust@def\jsInhibitGlue{%
   \ifx\inhibitglue\@undefined\else \inhibitglue \fi}
+\if at compatibility
+  \ClassError\bxjs at clsname
+   {Something went chaotic!\MessageBreak
+    I cannot go a single step further...}
+   {If the chant of \string\documentstyle\space was just a blunder
+    of yours,\MessageBreak then there'll still be hope....}
+  \expandafter\@firstofone
+\else \expandafter\@gobble
+\fi{\typeout{Farewell!}\endinput\@@end}
 \newif\if at restonecol
 \newif\if at titlepage
 \newif\if at openright
@@ -252,7 +261,7 @@
 \DeclareOption{english}{\@englishtrue}
 \mathchardef\bxjs at csta=259
 \def\bxjs at invscale#1#2{%
-  \bgroup \@tempdima=#1\relax \@tempdimb#2\p@\relax
+  \begingroup \@tempdima=#1\relax \@tempdimb#2\p@\relax
     \@tempcnta\@tempdima \multiply\@tempcnta\@cclvi
     \divide\@tempcnta\@tempdimb \multiply\@tempcnta\@cclvi
     \@tempcntb\p@ \divide\@tempcntb\@tempdimb
@@ -267,13 +276,15 @@
         \advance\@tempcntb\m at ne \@tempdimc=\@tempcntb\@ne
       \else \@tempdimb=\@tempcntb\@ne \fi}%
     \xdef\bxjs at gtmpa{\the\@tempdimb}%
-  \egroup #1=\bxjs at gtmpa\relax}
+  \endgroup #1=\bxjs at gtmpa\relax}
 \let\bxjs at composite@proc\relax
 \DeclareOption{pandoc}{%
   \def\bxjs at composite@proc{%
+    \bxjs at oldfontcommandstrue
     \setkeys{bxjs}{ja=pandoc}%
     \let\bxjs at engine@given=*}%
-  \def\bxjs at driver@opt{dvipdfmx-if-dvi}}
+  \def\bxjs at driver@opt{dvipdfmx}%
+  \bxjs at dvi@opttrue}
 \DeclareOption{autodetect-engine}{%
   \let\bxjs at engine@given=*}
 \DeclareOption{latex}{%
@@ -320,8 +331,7 @@
   \def\bxjs at driver@opt{xetex}%
   \let\bxjs at driver@given\bxjs at driver@@xetex}
 \DeclareOption{dvipdfmx-if-dvi}{%
-  \def\bxjs at driver@opt{dvipdfmx-if-dvi}%
-  \let\bxjs at driver@given\@undefined}
+  \setkeys{bxjs}{dvi=dvipdfmx}}
 \newif\ifbxjs at usezw \bxjs at usezwtrue
 \DeclareOption{nozw}{%
   \bxjs at usezwfalse}
@@ -351,6 +361,11 @@
   \bxjs at bigcodefalse}
 \DeclareOption{bigcode}{%
   \bxjs at bigcodetrue}
+\newif\ifbxjs at oldfontcommands
+\DeclareOption{nooldfontcommands}{%
+  \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}}
@@ -412,6 +427,33 @@
     {Invalid magstyle value `#1'}\@ehc
     \let\bxjs at magstyle\bxjs at magstyle@default
   \fi}
+\let\bxjs at geometry@class=c
+\let\bxjs at geometry@user=u
+\let\bxjs at geometry\bxjs at geometry@class
+\define at key{bxjs}{geometry}{%
+  \expandafter\let\expandafter\bxjs at geometry\csname
+   bxjs at geometry@#1\endcsname
+  \ifx\bxjs at geometry\relax
+    \ClassError\bxjs at clsname
+    {Invalid geometry value `#1'}\@ehc
+    \let\bxjs at geometry\bxjs at geometry@class
+  \fi}
+\newif\ifbxjs at dvi@opt
+\let\bxjs at dvidriver@@dvipdfmx=\bxjs at driver@@dvipdfmx
+\let\bxjs at dvidriver@@dvips=\bxjs at driver@@dvimode
+\let\bxjs at dvidriver@@dviout=\bxjs at driver@@dvimode
+\let\bxjs at dvidriver@@xdvi=\bxjs at driver@@dvimode
+\define at key{bxjs}{dvi}{%
+  \expandafter\let\expandafter\bxjs at tmpa\csname
+   bxjs at dvidriver@@#1\endcsname
+  \ifx\bxjs at tmpa\relax
+    \ClassError\bxjs at clsname
+    {Invalid dvi value `#1'}\@ehc
+  \else
+    \def\bxjs at driver@opt{#1}%
+    \let\bxjs at driver@given\@undefined
+    \bxjs at dvi@opttrue
+  \fi}
 \let\bxjs at ltx@removeelement\@removeelement
 \def\@removeelement#1#2#3{%
   \def\reserved at a{#2}%
@@ -491,20 +533,21 @@
 \fi
 \ifjsInPdfMode \@tempswafalse
 \else\ifx x\jsEngine \@tempswafalse
-\else\ifx\bxjs at jadriver@given\@undefined \@tempswafalse
 \else \@tempswatrue
-\fi\fi\fi
+\fi\fi
 \if at tempswa
-  \ifx\bxjs at driver@opt\@undefined
+  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@given\@undefined\else
     \ClassWarningNoLine\bxjs at clsname
     {No driver option is given}
+  \fi\fi
+  \ifbxjs at dvi@opt
+    \edef\bxjs at nxt{%
+      \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
   \fi
-  \def\bxjs at tmpa{dvipdfmx-if-dvi}
-  \ifx\bxjs at driver@opt\bxjs at tmpa
-    \def\bxjs at driver@opt{dvipdfmx}
-    \let\bxjs at driver@given\bxjs at driver@@dvipdfmx
-    \g at addto@macro\@classoptionslist{,dvipdfmx}
-  \fi
 \fi
 \def\bxjs@@minimal{minimal}
 \ifx\bxjs at jadriver\relax
@@ -550,6 +593,9 @@
   \@namedef{ver@\bxjs at js@clsname.cls}{2001/01/01 (bxjs)}
 \fi
 \g at addto@macro\@classoptionslist{,nosetpagesize}
+\ifbxjs at oldfontcommands
+  \jsAtEndOfClass{\allowoldfontcommands}
+\fi
 \ifdim\bxjs at param@basefontsize<10pt \def\n at baseline{15}%
 \else \def\n at baseline{16}\fi
 \newif\ifbxjs at nfss@patch
@@ -787,7 +833,9 @@
 }
 \newdimen\fullwidth
 \def\bxjs at postproc@layout{%
-  \let\Gm at driver\bxjs at geometry@driver
+  \ifx\bxjs at geometry@driver\relax\else
+    \let\Gm at driver\bxjs at geometry@driver
+  \fi
   \@tempdimb=\textwidth
   \if at twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi
   \divide\textwidth\@tempdima \multiply\textwidth\@tempdima
@@ -813,25 +861,14 @@
   \stockwidth=\paperwidth
   \stockheight=\paperheight
 }
+\edef\jsGeometryOptions{%
+  \bxjs at layout@paper,\bxjs at layout}
+\ifx\bxjs at geometry\bxjs at geometry@class
 \@onlypreamble\bxjs at revert
 \let\bxjs at revert\@empty
 \edef\bxjs at tmpa{\the\ht\strutbox}
 \ht\strutbox=10\p@?
 \g at addto@macro\bxjs at revert{\ht\strutbox=\bxjs at tmpa\relax}
-\if x\jsEngine
-  \ifx\pdfpagewidth\@undefined
-    \def\bxjs at Gm@driver{dvipdfm}
-  \else
-    \def\bxjs at Gm@driver{pdftex}
-    \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
-    \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
-  \fi
-  \let\bxjs at InputIfFileExists\InputIfFileExists
-  \g at addto@macro\bxjs at revert{\let\InputIfFileExists\bxjs at InputIfFileExists}
-  \def\InputIfFileExists#1#2#3{%
-    \bxjs at InputIfFileExists{#1}{#2}{#3}%
-    \edef\Gm at checkdrivers{\noexpand\Gm at setdriver{\bxjs at Gm@driver}}}%
-\fi
 \ifbxjs at papersize
   \ifx\bxjs at driver@given\bxjs at driver@@dvipdfmx
     \PassOptionsToPackage{dvipdfm}{geometry}
@@ -842,11 +879,24 @@
 \fi
 \edef\bxjs at nxt{%
   \noexpand\RequirePackage[\bxjs at layout@paper,\bxjs at layout]{geometry}}
+\AtBeginDocument{\bxjs at pre@geometry at hook}
 \AtBeginDocument{\ImposeOldLuaTeXBehavior}
 \bxjs at nxt \bxjs at revert
 \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}{\@ifpackagelater{geometry}{2010/02/12}{}{%
+      \PackageWarningNoLine\bxjs at clsname
+       {The 'geometry' package installed\MessageBreak
+        is too old (< v5.0)}%
+      \if x\jsEngine \ifnum\mag=\@m\else
+        \def\bxjs at Gm@driver{pdftex}
+        \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
+        \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
+      \fi\fi
+  }}{}}
 \def\setpagelayout{\@ifstar
   {\bxjs at reset@layout}{\bxjs at modify@layout}}
 \def\bxjs at modify@layout#1{%
@@ -855,6 +905,26 @@
 \def\bxjs at reset@layout#1{%
   \edef\bxjs at nxt{\noexpand\geometry{reset,\bxjs at layout@paper,#1,truedimen}}%
   \bxjs at nxt\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{%
+  \ifdim\textwidth=.5\maxdimen
+    \ClassError\bxjs at clsname
+     {Page layout is not properly set}
+     \@ehd
+  \fi}
+\def\jsUseMinimalPageLayout{%
+  \setlength{\textwidth}{6.5in}%
+  \setlength{\textheight}{8in}}
+\let\bxjs at geometry@driver\relax
+\def\setpagelayout{\@ifstar
+  {\bxjs at pagelayout@a}{\bxjs at pagelayout@a}}
+\def\bxjs at pagelayout@a#1{%
+  \ClassError\bxjs at clsname
+   {Command \string\setpagelayout\space is not supported,\MessageBreak
+    because 'geometry' value is not 'class'}\@eha}
+\fi\fi
 \footnotesep=11\p@? \footnotesep=0.7\footnotesep
 \setlength{\skip\footins}{16\p@? \@plus 5\p@? \@minus 2\p@?}
 \setcounter{topnumber}{9}
@@ -1533,15 +1603,70 @@
   \ifdim \wd\@tempboxa <\hsize \centering \fi
   #1\hskip1\jsZw\relax #2\par
   \vskip\belowcaptionskip}}
-\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
-\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
-\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
-\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
-\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
-\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
-\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
-\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
-\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\newif\if at jsc@warnoldfontcmd
+\@jsc at warnoldfontcmdtrue
+\newif\if at jsc@warnoldfontcmdexception
+\@jsc at warnoldfontcmdexceptionfalse
+\newcommand*{\jsc at DeclareOldFontCommand}[3]{%
+  \g at addto@macro\bxjs at oldfontcmd@list{\do#1}%
+  \DeclareOldFontCommand{#1}{%
+    \bxjs at oldfontcmd{#1}#2%
+  }{%
+    \bxjs at oldfontcmd{#1}#3%
+  }%
+}
+\DeclareRobustCommand*{\jsc at warnoldfontcmd}[1]{%
+  \ClassInfo\bxjs at clsname
+   {Old font command '\string#1' is used!!\MessageBreak
+    First occurrence is}%
+}
+\newcommand*{\allowoldfontcommands}{%
+  \@jsc at warnoldfontcmdexceptiontrue}
+\newcommand*{\disallowoldfontcommands}{%
+  \@jsc at warnoldfontcmdexceptionfalse}
+\let\bxjs at oldfontcmd@list\@empty
+\def\bxjs at oldfontcmd#1{%
+  \expandafter\bxjs at oldfontcmd@a\csname bxjs at ofc/\string#1\endcsname#1}
+\def\bxjs at oldfontcmd@a#1#2{%
+  \if at jsc@warnoldfontcmdexception\else
+    \global\@jsc at warnoldfontcmdfalse
+    \ifx#1\relax
+      \global\let#1=t%
+      \jsc at warnoldfontcmd{#2}%
+    \fi
+  \fi}
+\def\bxjs at warnoldfontcmd@final{%
+  \par
+  \let\@tempa\@empty
+  \def\do##1{%
+    \expandafter\ifx\csname bxjs at ofc/\string##1\endcsname\relax\else
+      \edef\@tempa{\@tempa \space\string##1}\fi}
+  \bxjs at oldfontcmd@list
+  \ifx\@tempa\@empty\else
+    \ClassWarningNoLine\bxjs at clsname
+     {Some old font commands were used in text\MessageBreak
+      (see the log output for detail)}%
+    \ClassInfo\bxjs at clsname
+     {Some old font commands were used in text:\MessageBreak
+      \space\@tempa\MessageBreak
+      You should note, that since 1994 LaTeX2e provides a\MessageBreak
+      new font selection scheme called NFSS2 with several\MessageBreak
+      new, combinable font commands. The
+      class provides\MessageBreak
+      the old font commands
+      only for compatibility%
+      \@gobble}%
+  \fi}
+\AtEndDocument{\bxjs at warnoldfontcmd@final}
+\jsc at DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
+\jsc at DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
+\jsc at DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\jsc at DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\jsc at DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\jsc at DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\jsc at DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\jsc at DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\jsc at DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
 \DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
 \DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}
 \newcommand\@pnumwidth{1.55em}
@@ -1647,6 +1772,7 @@
 \newdimen\bibindent
 \setlength\bibindent{2\jsZw}
 \newenvironment{thebibliography}[1]{%
+  \@jsc at warnoldfontcmdexceptiontrue
   \global\let\presectionname\relax
   \global\let\postsectionname\relax
   \chapter*{\bibname}\@mkboth{\bibname}{}%

Modified: trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls	2016-08-01 01:10:42 UTC (rev 41782)
+++ trunk/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls	2016-08-01 21:41:12 UTC (rev 41783)
@@ -37,7 +37,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{bxjsslide}
-  [2016/07/16 v1.1f BXJS document classes]
+  [2016/08/01 v1.2 BXJS document classes]
 %% このファイルは日本語文字を含みます
 \RequirePackage{calc}
 \RequirePackage{keyval}
@@ -103,6 +103,15 @@
 \fi
 \bxjs at robust@def\jsInhibitGlue{%
   \ifx\inhibitglue\@undefined\else \inhibitglue \fi}
+\if at compatibility
+  \ClassError\bxjs at clsname
+   {Something went chaotic!\MessageBreak
+    I cannot go a single step further...}
+   {If the chant of \string\documentstyle\space was just a blunder
+    of yours,\MessageBreak then there'll still be hope....}
+  \expandafter\@firstofone
+\else \expandafter\@gobble
+\fi{\typeout{Farewell!}\endinput\@@end}
 \newif\if at restonecol
 \newif\if at titlepage
 \newif\if at enablejfam \@enablejfamtrue
@@ -248,7 +257,7 @@
 \DeclareOption{english}{\@englishtrue}
 \mathchardef\bxjs at csta=259
 \def\bxjs at invscale#1#2{%
-  \bgroup \@tempdima=#1\relax \@tempdimb#2\p@\relax
+  \begingroup \@tempdima=#1\relax \@tempdimb#2\p@\relax
     \@tempcnta\@tempdima \multiply\@tempcnta\@cclvi
     \divide\@tempcnta\@tempdimb \multiply\@tempcnta\@cclvi
     \@tempcntb\p@ \divide\@tempcntb\@tempdimb
@@ -263,13 +272,15 @@
         \advance\@tempcntb\m at ne \@tempdimc=\@tempcntb\@ne
       \else \@tempdimb=\@tempcntb\@ne \fi}%
     \xdef\bxjs at gtmpa{\the\@tempdimb}%
-  \egroup #1=\bxjs at gtmpa\relax}
+  \endgroup #1=\bxjs at gtmpa\relax}
 \let\bxjs at composite@proc\relax
 \DeclareOption{pandoc}{%
   \def\bxjs at composite@proc{%
+    \bxjs at oldfontcommandstrue
     \setkeys{bxjs}{ja=pandoc}%
     \let\bxjs at engine@given=*}%
-  \def\bxjs at driver@opt{dvipdfmx-if-dvi}}
+  \def\bxjs at driver@opt{dvipdfmx}%
+  \bxjs at dvi@opttrue}
 \DeclareOption{autodetect-engine}{%
   \let\bxjs at engine@given=*}
 \DeclareOption{latex}{%
@@ -316,8 +327,7 @@
   \def\bxjs at driver@opt{xetex}%
   \let\bxjs at driver@given\bxjs at driver@@xetex}
 \DeclareOption{dvipdfmx-if-dvi}{%
-  \def\bxjs at driver@opt{dvipdfmx-if-dvi}%
-  \let\bxjs at driver@given\@undefined}
+  \setkeys{bxjs}{dvi=dvipdfmx}}
 \newif\ifbxjs at usezw \bxjs at usezwtrue
 \DeclareOption{nozw}{%
   \bxjs at usezwfalse}
@@ -347,6 +357,11 @@
   \bxjs at bigcodefalse}
 \DeclareOption{bigcode}{%
   \bxjs at bigcodetrue}
+\newif\ifbxjs at oldfontcommands
+\DeclareOption{nooldfontcommands}{%
+  \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}}
@@ -408,6 +423,33 @@
     {Invalid magstyle value `#1'}\@ehc
     \let\bxjs at magstyle\bxjs at magstyle@default
   \fi}
+\let\bxjs at geometry@class=c
+\let\bxjs at geometry@user=u
+\let\bxjs at geometry\bxjs at geometry@class
+\define at key{bxjs}{geometry}{%
+  \expandafter\let\expandafter\bxjs at geometry\csname
+   bxjs at geometry@#1\endcsname
+  \ifx\bxjs at geometry\relax
+    \ClassError\bxjs at clsname
+    {Invalid geometry value `#1'}\@ehc
+    \let\bxjs at geometry\bxjs at geometry@class
+  \fi}
+\newif\ifbxjs at dvi@opt
+\let\bxjs at dvidriver@@dvipdfmx=\bxjs at driver@@dvipdfmx
+\let\bxjs at dvidriver@@dvips=\bxjs at driver@@dvimode
+\let\bxjs at dvidriver@@dviout=\bxjs at driver@@dvimode
+\let\bxjs at dvidriver@@xdvi=\bxjs at driver@@dvimode
+\define at key{bxjs}{dvi}{%
+  \expandafter\let\expandafter\bxjs at tmpa\csname
+   bxjs at dvidriver@@#1\endcsname
+  \ifx\bxjs at tmpa\relax
+    \ClassError\bxjs at clsname
+    {Invalid dvi value `#1'}\@ehc
+  \else
+    \def\bxjs at driver@opt{#1}%
+    \let\bxjs at driver@given\@undefined
+    \bxjs at dvi@opttrue
+  \fi}
 \let\bxjs at ltx@removeelement\@removeelement
 \def\@removeelement#1#2#3{%
   \def\reserved at a{#2}%
@@ -487,20 +529,21 @@
 \fi
 \ifjsInPdfMode \@tempswafalse
 \else\ifx x\jsEngine \@tempswafalse
-\else\ifx\bxjs at jadriver@given\@undefined \@tempswafalse
 \else \@tempswatrue
-\fi\fi\fi
+\fi\fi
 \if at tempswa
-  \ifx\bxjs at driver@opt\@undefined
+  \ifx\bxjs at driver@opt\@undefined \ifx\bxjs at jadriver@given\@undefined\else
     \ClassWarningNoLine\bxjs at clsname
     {No driver option is given}
+  \fi\fi
+  \ifbxjs at dvi@opt
+    \edef\bxjs at nxt{%
+      \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
   \fi
-  \def\bxjs at tmpa{dvipdfmx-if-dvi}
-  \ifx\bxjs at driver@opt\bxjs at tmpa
-    \def\bxjs at driver@opt{dvipdfmx}
-    \let\bxjs at driver@given\bxjs at driver@@dvipdfmx
-    \g at addto@macro\@classoptionslist{,dvipdfmx}
-  \fi
 \fi
 \def\bxjs@@minimal{minimal}
 \ifx\bxjs at jadriver\relax
@@ -546,6 +589,9 @@
   \@namedef{ver@\bxjs at js@clsname.cls}{2001/01/01 (bxjs)}
 \fi
 \g at addto@macro\@classoptionslist{,nosetpagesize}
+\ifbxjs at oldfontcommands
+  \jsAtEndOfClass{\allowoldfontcommands}
+\fi
 \def\n at baseline{13}%
 \newif\ifbxjs at nfss@patch
 \ifx\bxjs at magstyle\bxjs at magstyle@mag
@@ -781,7 +827,9 @@
 }
 \newdimen\fullwidth
 \def\bxjs at postproc@layout{%
-  \let\Gm at driver\bxjs at geometry@driver
+  \ifx\bxjs at geometry@driver\relax\else
+    \let\Gm at driver\bxjs at geometry@driver
+  \fi
   \@tempdimb=\textwidth
   \if at twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi
   \divide\textwidth\@tempdima \multiply\textwidth\@tempdima
@@ -807,25 +855,14 @@
   \stockwidth=\paperwidth
   \stockheight=\paperheight
 }
+\edef\jsGeometryOptions{%
+  \bxjs at layout@paper,\bxjs at layout}
+\ifx\bxjs at geometry\bxjs at geometry@class
 \@onlypreamble\bxjs at revert
 \let\bxjs at revert\@empty
 \edef\bxjs at tmpa{\the\ht\strutbox}
 \ht\strutbox=10\p@?
 \g at addto@macro\bxjs at revert{\ht\strutbox=\bxjs at tmpa\relax}
-\if x\jsEngine
-  \ifx\pdfpagewidth\@undefined
-    \def\bxjs at Gm@driver{dvipdfm}
-  \else
-    \def\bxjs at Gm@driver{pdftex}
-    \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
-    \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
-  \fi
-  \let\bxjs at InputIfFileExists\InputIfFileExists
-  \g at addto@macro\bxjs at revert{\let\InputIfFileExists\bxjs at InputIfFileExists}
-  \def\InputIfFileExists#1#2#3{%
-    \bxjs at InputIfFileExists{#1}{#2}{#3}%
-    \edef\Gm at checkdrivers{\noexpand\Gm at setdriver{\bxjs at Gm@driver}}}%
-\fi
 \ifbxjs at papersize
   \ifx\bxjs at driver@given\bxjs at driver@@dvipdfmx
     \PassOptionsToPackage{dvipdfm}{geometry}
@@ -836,11 +873,24 @@
 \fi
 \edef\bxjs at nxt{%
   \noexpand\RequirePackage[\bxjs at layout@paper,\bxjs at layout]{geometry}}
+\AtBeginDocument{\bxjs at pre@geometry at hook}
 \AtBeginDocument{\ImposeOldLuaTeXBehavior}
 \bxjs at nxt \bxjs at revert
 \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}{\@ifpackagelater{geometry}{2010/02/12}{}{%
+      \PackageWarningNoLine\bxjs at clsname
+       {The 'geometry' package installed\MessageBreak
+        is too old (< v5.0)}%
+      \if x\jsEngine \ifnum\mag=\@m\else
+        \def\bxjs at Gm@driver{pdftex}
+        \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
+        \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
+      \fi\fi
+  }}{}}
 \def\setpagelayout{\@ifstar
   {\bxjs at reset@layout}{\bxjs at modify@layout}}
 \def\bxjs at modify@layout#1{%
@@ -849,6 +899,26 @@
 \def\bxjs at reset@layout#1{%
   \edef\bxjs at nxt{\noexpand\geometry{reset,\bxjs at layout@paper,#1,truedimen}}%
   \bxjs at nxt\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{%
+  \ifdim\textwidth=.5\maxdimen
+    \ClassError\bxjs at clsname
+     {Page layout is not properly set}
+     \@ehd
+  \fi}
+\def\jsUseMinimalPageLayout{%
+  \setlength{\textwidth}{6.5in}%
+  \setlength{\textheight}{8in}}
+\let\bxjs at geometry@driver\relax
+\def\setpagelayout{\@ifstar
+  {\bxjs at pagelayout@a}{\bxjs at pagelayout@a}}
+\def\bxjs at pagelayout@a#1{%
+  \ClassError\bxjs at clsname
+   {Command \string\setpagelayout\space is not supported,\MessageBreak
+    because 'geometry' value is not 'class'}\@eha}
+\fi\fi
 \footnotesep=11\p@? \footnotesep=0.7\footnotesep
 \setlength{\skip\footins}{16\p@? \@plus 5\p@? \@minus 2\p@?}
 \setcounter{topnumber}{9}
@@ -1480,15 +1550,70 @@
   \ifdim \wd\@tempboxa <\hsize \centering \fi
   #1\hskip1\jsZw\relax #2\par
   \vskip\belowcaptionskip}}
-\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
-\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
-\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
-\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
-\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
-\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
-\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
-\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
-\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\newif\if at jsc@warnoldfontcmd
+\@jsc at warnoldfontcmdtrue
+\newif\if at jsc@warnoldfontcmdexception
+\@jsc at warnoldfontcmdexceptionfalse
+\newcommand*{\jsc at DeclareOldFontCommand}[3]{%
+  \g at addto@macro\bxjs at oldfontcmd@list{\do#1}%
+  \DeclareOldFontCommand{#1}{%
+    \bxjs at oldfontcmd{#1}#2%
+  }{%
+    \bxjs at oldfontcmd{#1}#3%
+  }%
+}
+\DeclareRobustCommand*{\jsc at warnoldfontcmd}[1]{%
+  \ClassInfo\bxjs at clsname
+   {Old font command '\string#1' is used!!\MessageBreak
+    First occurrence is}%
+}
+\newcommand*{\allowoldfontcommands}{%
+  \@jsc at warnoldfontcmdexceptiontrue}
+\newcommand*{\disallowoldfontcommands}{%
+  \@jsc at warnoldfontcmdexceptionfalse}
+\let\bxjs at oldfontcmd@list\@empty
+\def\bxjs at oldfontcmd#1{%
+  \expandafter\bxjs at oldfontcmd@a\csname bxjs at ofc/\string#1\endcsname#1}
+\def\bxjs at oldfontcmd@a#1#2{%
+  \if at jsc@warnoldfontcmdexception\else
+    \global\@jsc at warnoldfontcmdfalse
+    \ifx#1\relax
+      \global\let#1=t%
+      \jsc at warnoldfontcmd{#2}%
+    \fi
+  \fi}
+\def\bxjs at warnoldfontcmd@final{%
+  \par
+  \let\@tempa\@empty
+  \def\do##1{%
+    \expandafter\ifx\csname bxjs at ofc/\string##1\endcsname\relax\else
+      \edef\@tempa{\@tempa \space\string##1}\fi}
+  \bxjs at oldfontcmd@list
+  \ifx\@tempa\@empty\else
+    \ClassWarningNoLine\bxjs at clsname
+     {Some old font commands were used in text\MessageBreak
+      (see the log output for detail)}%
+    \ClassInfo\bxjs at clsname
+     {Some old font commands were used in text:\MessageBreak
+      \space\@tempa\MessageBreak
+      You should note, that since 1994 LaTeX2e provides a\MessageBreak
+      new font selection scheme called NFSS2 with several\MessageBreak
+      new, combinable font commands. The
+      class provides\MessageBreak
+      the old font commands
+      only for compatibility%
+      \@gobble}%
+  \fi}
+\AtEndDocument{\bxjs at warnoldfontcmd@final}
+\jsc at DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
+\jsc at DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
+\jsc at DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\jsc at DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\jsc at DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\jsc at DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\jsc at DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\jsc at DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\jsc at DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
 \DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
 \DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}
 \newcommand\@pnumwidth{1.55em}
@@ -1575,6 +1700,7 @@
 \newdimen\bibindent
 \setlength\bibindent{2\jsZw}
 \newenvironment{thebibliography}[1]{%
+  \@jsc at warnoldfontcmdexceptiontrue
   \global\let\presectionname\relax
   \global\let\postsectionname\relax
   \section*{\refname}\@mkboth{\refname}{\refname}%



More information about the tex-live-commits mailing list