texlive[44482] Master/texmf-dist: pxbase (30may17)

commits+karl at tug.org commits+karl at tug.org
Tue Jun 6 01:15:32 CEST 2017


Revision: 44482
          http://tug.org/svn/texlive?view=revision&revision=44482
Author:   karl
Date:     2017-06-06 01:15:32 +0200 (Tue, 06 Jun 2017)
Log Message:
-----------
pxbase (30may17)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/platex/pxbase/LICENSE
    trunk/Master/texmf-dist/doc/platex/pxbase/README.md
    trunk/Master/texmf-dist/tex/platex/pxbase/pxbabel.sty
    trunk/Master/texmf-dist/tex/platex/pxbase/pxbase.def
    trunk/Master/texmf-dist/tex/platex/pxbase/pxbase.sty
    trunk/Master/texmf-dist/tex/platex/pxbase/pxbasenc.def
    trunk/Master/texmf-dist/tex/platex/pxbase/pxbsjc.def
    trunk/Master/texmf-dist/tex/platex/pxbase/pxjsfenc.def
    trunk/Master/texmf-dist/tex/platex/pxbase/upkcat.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/platex/pxbase/README-ja.md
    trunk/Master/texmf-dist/doc/platex/pxbase/pxbabel.pdf
    trunk/Master/texmf-dist/doc/platex/pxbase/pxbabel.tex
    trunk/Master/texmf-dist/tex/platex/pxbase/pxbsjc1.def

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/platex/pxbase/README-ja
    trunk/Master/texmf-dist/doc/platex/pxbase/README-pxbabel

Modified: trunk/Master/texmf-dist/doc/platex/pxbase/LICENSE
===================================================================
--- trunk/Master/texmf-dist/doc/platex/pxbase/LICENSE	2017-06-05 23:15:19 UTC (rev 44481)
+++ trunk/Master/texmf-dist/doc/platex/pxbase/LICENSE	2017-06-05 23:15:32 UTC (rev 44482)
@@ -1,9 +1,6 @@
-$BK\%=%U%H%&%'%"$O(B MIT $B%i%$%;%s%9$N2<$GG[I[$5$l$^$9!#Cx:n8"$O:n<T$G$k!V(BZR$B!W$K(B
-$BB0$7$^$9!#$^$?K\%=%U%H%&%'%"$OL5J]>Z$G$9!#(B
-
 The MIT License
 
-Copyright (c) 2009 ZR
+Copyright (c) 2017 Takayuki YATO (aka. "ZR")
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal

Deleted: trunk/Master/texmf-dist/doc/platex/pxbase/README-ja
===================================================================
--- trunk/Master/texmf-dist/doc/platex/pxbase/README-ja	2017-06-05 23:15:19 UTC (rev 44481)
+++ trunk/Master/texmf-dist/doc/platex/pxbase/README-ja	2017-06-05 23:15:32 UTC (rev 44482)
@@ -1,339 +0,0 @@
-==================================================
-== PXbase バンドル                              ==
-==================================================
-(This file is encoded in UTF-8,)
-
---------------------------------------------------
-!重要!
-この版(0.5i)は CTAN 掲載用のもので、0.5 版に対し
-小さい修正(ifuptex.sty と pxcjkcat.sty の削除)を
-加えたものである。
-
-既に最新版の 0.9 版を利用しているユーザはこの版に
-更新すべきでない。
---------------------------------------------------
-
-pLaTeX2e / upLaTeX2e における文書およびマクロパッケージの作成を支援する
-基本的な機能を提供する。文書作成の為の機能には、具体的には Unicode の
-コード値による文字入力、 PDF の文書情報に日本語を使用する設定の自動化、
-upLaTeX の和文文字カテゴリ(kcatcode)の変更および CJK 間のフォント切替
-の支援等が含まれる。
-
-  - ifuptex パッケージ: upTeX 判定
-  - pxbase パッケージ: 基礎ライブラリ
-  - pxcjkcat パッケージ: 和文文字カテゴリ操作
-  - pxbabel パッケージ: CJK 間のフォント切替 
-  - upkcat パッケージ: 文字指定の kcatcode 操作
-  - pxbasenc パッケージ: 文字コード関係ライブラリ(試作)
-
-※ 対応環境は各々のパッケージの解説を参照。
-
-※ pxbabel の解説は README-pxbabel を参照。
-
-※ pxcjkcat の解説は README-pxcjkcat を参照。
-
-■ 本ソフトウェアの一次配布サイト(作者のサイト)
-
-    En toi Pythmeni tes TeXnopoleos ~電脳世界の奥底にて~
-    http://zrbabbler.hp.infoseek.co.jp/
-
-    ※ 以下のページに一部機能の使用例を紹介した。
-    「Unicode による文字入力」
-    http://zrbabbler.hp.infoseek.co.jp/unichar.html
-    「upLaTeX を使おう」
-    http://zrbabbler.hp.infoseek.co.jp/uplatex.html
-    「PXbase パッケージ」
-    http://zrbabbler.hp.infoseek.co.jp/pxbase.html
-
-■ インストール
-
-    TDS 1.1 に従ったシステムでは、各ファイルを次の場所に移動する。
-    ・*.sty, *.def → $TEXMF/tex/platex/PXbase/
-    (残りのファイルは不要)
-
-    W32TeX を C:\usr\local にインストールした場合の例。
-    ・*.sty, *.def → C:\usr\local\share\texmf-local\tex\platex\PXbase
-
-
--------------------------------------------
- pxbase パッケージ (v0.5) -- 基礎ライブラリ 
--------------------------------------------
-
-pLaTeX/upLaTeX で和文を扱う上で必要になる基本的な機能を提供する。また
-他の PX シリーズのパッケージの下請けの役割も果たす。
-
-■ 対応環境
-
-    pLaTeX2e / upLaTeX2e
-
-■ 読込
-
-    \usepackage で読み込む。オプションはない。
-
-■ 機能
-
-    使用している (u)pTeX の漢字コード設定の情報表示。
-
-    \infojenc : 漢字コードの情報を次の形で端末とログに出力する。
-      Kanji encoding: source=UTF8 internal=SJIS;
-
-    これ以降に述べる機能は bxbase パッケージと共通である。
-
-    DVI special 出力の命令。
-
-    \usejapanesepdfstring
-      pLaTeX と dvipdfmx の組み合わせで日本語の文書情報をもつ PDF を作
-      る為に必要な pdf:tounicode special を出力する。
-        pdf:tounicode 90ms-RKSJ-UCS2     (内部漢字コードが Shift_JIS)
-        pdf:tounicode EUC-UCS2           (内部漢字コードが EUC-JP)
-      この special は DVI のなるべく先頭に近い位置に出力する。
-      (新しい版の hyperref への対策。)
-
-    \recordpapersize
-      次の形の papersize special 命令を DVI の先頭に出力する。
-        papersize=<幅>,<高さ>
-      (幅と高さは現在の \paperwidth と \paperheight の値。)
-
-    \dvipdfmxmapline{<テキスト>}
-      dvipdfmx のマップ指定を文書中で行う。
-      ※次の形の papersize special 命令を DVI の先頭に出力する。
-        pdf:mapline <テキスト>
-
-    \dvipdfmxmapfile{<ファイル名>}
-      dvipdfmx のマップファイル指定を文書中で行う。
-      ※次の形の papersize special 命令を DVI の先頭に出力する。
-        pdf:mapfile <ファイル名>
-
-    符号値による文字入力のための命令。
-
-    \Ux{<コード値>,...}
-    \UI{<コード値>,...}
-      Unicode コード値による入力を行う。\Ux は欧文用、\UI は和文用(I は
-      Ideographic の意味)。コード値は以下の形式で表す。コンマで区切って
-      複数文字入力できる。
-        - <16進数>:  A72C, 02000B, 1bd 等。
-        - +<10進数>: +254, +0937 等。
-        - '<8進数>:  '376, '1651 等。
-      Unicode 文字の出力には次の順番で利用可能な最初の機能を用いる。(\UI
-      の場合 3) を飛ばす。)
-        1) zxjatype パッケージ。この場合、その機構に従って出力される。\UI
-           は必ず和文フォントで出力し、\Ux は和文/欧文切替の対象となる。
-        2) XeTeX の Unicode 出力。
-        3) [\Ux のみ] bxums パッケージ。
-        4) upTeX の和文 Unicode 出力。
-        5) UTF/OTF/pxotf パッケージ。
-        6) ums/bxsuika パッケージ。
-      どれも使えない場合は「16進表現による代替表現」になる。
-
-    \AJ{<コード値>,...}
-      Adobe-Japan1 のコード値による入力を行う。コード値は 10 進数で指定
-      する。出力には次の順番で利用可能な最初の機能を用いる。
-        1) zxotf パッケージ。
-        2) UTF/OTF/pxotf パッケージ。
-      どれも使えない場合は代替表現になる。
-
-    \JI{<コード値>,...}
-      いわゆる「JIS コード」(JIS X 0208 の GL 表現)のコード値による入力
-      を行う。コード値指定の方法は \Ux と同じ。出力には (u)pTeX の JIS
-      コード和文出力の機能を使う。使えない場合は代替表現になる。
-
-    \KI{<コード値>,...}
-      いわゆる「区点コード」のコード値による入力を行う。コード値指定は
-      以下のいずれかの方法で指定する。
-        - RRCC : RR は区番号、CC は点番号を 10 進 2 桁で表したもの。
-        - PRRCC : P は面番号。JIS X 0213 のための指定。
-      出力には (u)pTeX の JIS コード和文出力の機能を使う。使えない場合は
-      代替表現になる。JIS X 0213 の文字を出力したい場合は、現在の和文
-      フォントのエンコーディングが JIS X 0213 に対応するものである必要が
-      ある。さらに、第 2 面の文字を出力する場合には pTeX の内部漢字コード
-      が sjis でなければならない。
-
-    \bxUx / \bxUI / \bxAJ / \bxJI / \bxKI
-       \Ux 等は非常に短い名前なので他のパッケージと衝突する恐れがあり、
-       そこでこのパッケージでは既に同名の命令がある場合は上書きしない
-       ようにしている。\bxUx 等はそれぞれ \Ux 等と同じで、先のような場合
-       にも常に使える。
-
-    Bwbel 関係の命令。
-
-    \bxcaptionlanguage{<言語名>}
-      Babel では、通常言語が切り替わるとキャプションや日付の文字列が切り
-      替わる。この命令を実行すると、文字列は指定された言語のもので固定
-      され、Babel の言語切替の命令に追随しなくなる。この命令自体はプレ
-      アンブル中で何回でも使用できて最後のものが有効になる。引数には有効
-      な言語オプションの名前の他に以下のものが指定できる。
-        - main : 基底言語、すなわち Babel で最後に読み込まれた言語だが
-          次に述べる \bxmainlanguage で変更可能。
-        - default : 文書クラスで指定されたものをそのまま用いる。日本語
-          の文書クラスで Babel を用いる時に便利である。
-      この命令の意義については後の「キャプション文字列の切替機能について」
-      の節を参照。
-
-    \bxmainlanguage{<言語名>}
-      基底言語、すなわち \begin{document} の直後において有効となる言語を
-      設定する。通常は Babel において最後に読み込まれた言語オプションが
-      基底言語になる。
-
-    その他の命令。
-
-    \safecaret
-      一部の箇所で TeX エスケープ形式(^^ab)の解釈が失敗するのを回避する。
-      詳細は「TeX エスケープ形式(^^ab)の処理」の節を参照。
-
-■ utf8x 入力エンコーディングの fasterror 設定
-
-    unicode パッケージ(バンドル)が提供する utf8x 入力エンコーディングで
-    は、パッケージで未定義の Unicode 文字が入力された場合エラーになる。
-    その時のエラーメッセージ中に該当の文字の Unicode 名を出力するが、この
-    際に高位バイトを含むファイル(テキスト情報をハフマン符号で圧縮したもの
-    と思われる)を用いるので、pTeX では処理に失敗する。そこで本パッケージ
-    では、ucs パッケージが読み込まれた場合には上記の機能を抑止するオプ
-    ションである fasterror を常に有効にする。(utf8x が指定された時に ucs
-    が未読込の場合は自動的に読み込まれる。)
-
-■ TeX エスケープ形式(^^ab)の処理
-
-    ptexenc 対応の pTeX では入力漢字コードが UTF-8 の時に JIS X 0208 に
-    含まれない文字をエスケープ形式(^^ab)の UTF-8 バイト列に変換する。通常
-    はこの形式は該当のバイト列と等価の解釈をされる。ところがここで <^> の
-    catcode が本来の値 6 から変更されているとこの処理が失敗してしまう。
-    具体的には次のような場合が該当する。
-      - Babel の一部の言語(esperanto 等)を使用した場合
-      - verbatim や類似の環境の中
-    \safecaret 命令をプレアンブルで実行した場合、これらの場合でエスケープ
-    形式の連続する出現をバイト列と解釈するようにする。
-
-■ キャプション文字列の切替機能について
-
-    Babel の機能の 1 つとして、言語の切替に伴って、キャプションの文字列
-    (「参考文献」や「図」等)および日付の書式をその言語用のものに切り替え
-    るというものがある。これにより、ある言語(例えばスロベニア語)の為の
-    文書クラスがなくても英語用のクラスと Babel の言語切替でスロベニア語
-    のキャプションの文書が作成できる(レイアウトがその言語の使用圏で許容
-    されるかの問題は残るが)。だがこの目的には、プレアンブルでキャプション
-    言語を 1 回指定できればよく、文書途中での言語切替にまでキャプション
-    が追随する利点はあまりなく、場合によっては弊害があると思われる。この
-    ような場合は
-      \bxcaptionlanguage{main}
-    を実行すれば、キャプションは基底言語(\bxmainlanguage の説明参照)で
-    固定され以後は変更されない。また
-      \bxcaptionlanguage{spanish}
-    のように直接に言語名を指定することもできる。
-
-    日本語の場合はもっと特殊な事情がある。日本語のレイアウトは欧米の言語
-    のものとは大きく異なるので、日本語の文書を作成する場合には日本語用の
-    文書クラスが用いられるのが普通であり、そこでは当然キャプションは既に
-    日本語になっている。このような場合は
-      \bxcaptionlanguage{default}
-    を実行すれば、キャプションは文書クラスで設定されたものに固定され、
-    以後は変更されない。
-
-■ 開発者向け機能
-
-    使用中の漢字コード系の情報表示。
-
-    \pxInternalJEnc : [文字トークンへの \let] 内部漢字コードを表す。
-      - s : シフトJIS
-      - e : EUC
-      - u : Unicode (upTeX)
-
-    \pxSourceJEnc : [文字トークンへの \let] 入力 TeX ソースの漢字コード
-      を表す。
-      - s : シフトJIS
-      - e : EUC
-      - u : UTF-8
-
-    \pxDocClassType : [整数定数] 使用中の文書クラスの種別。
-      - 1 : pLaTeX2e/upLaTeX2e 標準文書クラス
-      - 2 : 奥村氏製作の新標準文書クラス(jsclasses)
-      - 0 : 上記のもの以外
-
-    \pxUpScale : [マクロ] 和文の標準のフォントのスケール。\pxDocClassType
-      により決まる: \pxDocClassType が 1 なら 0.962216、2 なら 0.92469、
-      0 なら 1。
-
-    残りの機能は bxbase パッケージと共通である。ここでは省略する。
-
-
--------------------------------------------------------
-  upkcat パッケージ (v0.2) -- 文字指定の kcatcode 操作
--------------------------------------------------------
-
-※ 本パッケージはマクロパッケージ開発者向けのものである。
-
-文字を指定して(属するブロックの) kcatcode を操作する場合
-    \kcatcode`<文字>
-の形式を使うことになるが、その際にもしその文字の現在の kcatcode が 15
-である場合は文字がバイト列とみなされるので、この形式が使えない。この
-パッケージはそのような場合でも使用可能な、kcatcode の参照・変更の命令
-を提供する。なお、文書作成者はこちらではなく pxcjkcat パッケージの機能を
-使うべきである。
-
-■ 対応環境
-
-    plain upTeX / upLaTeX2e
-
-■ 読込
-
-    plain upTeX の場合:
-      \input upkcat.sty
-    LaTeX2e の場合:
-      \usepackage{upkcat}
-
-■ 機能
-
-    \getkcatcode{<文字>}
-      <文字> の現在の kcatcode の値(15~19)をマクロ \thekcatcode に(文字
-      列として)返す。
-    \setkcatcode{<文字>}{<値>}
-      <文字> の kcatcode の値を <値> にする。
-
-
-----------------------------------------
-
-■ 更新履歴
-
-    version 0,5i <2017/05/04>
-      - ifuptex パッケージは「ifptex バンドル」に移動したため削除。
-      - pxcjkcat パッケージは専用のバンドルに移動したため削除。
-
-    version 0,5 <2010/06/15>
-      - pxbase: \JI/\KI を追加。
-      - pxbase: \dvipdfmxmapline/\dvipdfmxmapfont を追加。
-
-    version 0,4a <2010/02/07>
-      - pxcjkcat: upTeX v0.29 における kcatcode のブロック分割の変更に
-        対応。それに伴い ccv1, ccv2 オプションを新設。
-      - pxcjkcat: \cjkcategory の第 1 引数に文字そのものを指定できる
-        ようにした。
-      - pxcjkcat: なぜかモード設定時の「Enclosed CJK Letters and Months」
-        (cjk07)の kcatcode の設定値が 16 になっていた。upTeX 既定値に
-        合わせて 18 に修正した。
-
-    version 0,4 <2009/07/05>
-      - safe caret 機構のコード(\safecaret の実装の確信)を pxbase.def に
-        移動(BXbase と共通に)。
-      - Babel に加えて verbatim でも safe caret 機構が働くようにする。
-        ただし「pxbase は単に読み込むだけでは他人のコードを書き換えない」
-        という指針があるので、\safecaret を実行しないと有効にならない。
-      - pxbabel は中で \safecaret を呼ぶので、pxbabel を読み込むと safe
-        caret は自動的に有効になる。
-      - pxbabel でエンコーディングを J20 等に変えた場合に OTF パッケージ
-        の \CID が動かなくなるのを修正。
-
-    version 0,3 <2008/04/06>
-      - pxbabel に safe caret 機構を追加。
-
-    version 0,2b <2008/03/28>
-      pxbabel に \UTF の切替を追加。
-
-    version 0,2a <2008/03/18>
-      pxbabel, pxbase のバグ取り。
-      pxbabel の説明書をまだ書いていないことに気づいた ;-) 慌てて作成。
-
-    version 0.2 <2008/03/14>
-      最初の公開版。
-
--------------------------------------------
-Takayuki YATO (aka. "ZR")  
-https://github.com/zr-tex8r

Added: trunk/Master/texmf-dist/doc/platex/pxbase/README-ja.md
===================================================================
--- trunk/Master/texmf-dist/doc/platex/pxbase/README-ja.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/platex/pxbase/README-ja.md	2017-06-05 23:15:32 UTC (rev 44482)
@@ -0,0 +1,220 @@
+PXbase パッケージバンドル
+=========================
+
+LaTeX: 他の PX パッケージのためのサポートライブラリ
+
+本バンドルの主な目的は、作者(ZR)の制作する他の pTeX 用パッケージ(名前
+が“PX”で始まる)が依拠するライブラリ機能の提供である。
+
+その他に、本バンドルには以下のユーザ・開発者用パッケージが含まれる。
+
+  * pxbabel パッケージ: Babel の機構に基づく CJK 間のフォント切替
+  * upkcat パッケージ: 文字指定による kcatcode 操作
+
+### 前提環境
+
+  * TeX フォーマット: LaTeX
+  * TeX エンジン: pTeX、upTeX(派生を含む)
+  * DVI ウェア(DVI 出力時): 不問
+
+※upkcat パッケージについては当該の節を参照。
+
+### 構成物
+
+  * `pxbase.sty`: pxbase パッケージ
+  * `pxbase.def`: サブモジュール(の残骸)
+  * `pxbabel.sty`: pxbabel パッケージ
+  * `pxbasenc.def`: サブモジュール
+  * `pxjsfenc.def`: サブモジュール
+  * `pxbsjc.def`: pxbase 用の補助ファイル
+  * `pxbsjc1.def`: pxbase 用の補助ファイル
+  * `upkcat.sty`: upkcat パッケージ
+
+※種々の事情により複雑になっている(例えば、`pxbsjc.def` は実際には bxbase
+パッケージから読まれている、`pxjsfenc.def` は BXbase/PXbase 内のどの
+パッケージからも参照されない、など)が、他のパッケージの動作を確保する
+ため敢えて 0.5 版のファイル構成を保っている。
+
+### インストール
+
+TDS 1.1 に準拠するシステムの場合、以下のようにファイルを移動する:
+
+  - `*.sty`, `*.def` → $TEXMF/tex/platex/PXbase
+
+この後必要に応じて mktexlsr を実行する。
+
+### ライセンス
+
+本パッケージは MIT ライセンスの下で配布される。
+
+
+pxbase パッケージ ― pTeX 用(旧)基礎ライブラリ
+------------------------------------------------
+
+他の PX シリーズのパッケージの下請けの役割も果たしていたが、0.9 版において
+[bxbase パッケージ]に統合された。今では、単に bxbase を読むだけである。
+
+[bxbase パッケージ]: https://www.ctan.org/pkg/bxbase
+
+### ユーザ向け機能
+
+※bxbase の方で述べていないものを挙げる。(FIXME:bxbase に移すべき。)
+
+※旧版のドキュメントに載っていたのに、ここにも bxbase の方にも載って
+いない機能は、非推奨の扱いになったということ。
+
+  * `\infojenc`: 漢字コードの情報を次の形で端末とログに出力する。
+
+        Kanji encoding: source=UTF8 internal=SJIS;
+
+  * `\safecaret`: 一部の箇所で TeX エスケープ形式(`^^ab`)の解釈が
+    失敗するのを回避する。詳細は「TeX エスケープ形式(`^^ab`)の処理」
+    の節を参照。
+
+#### utf8x 入力エンコーディングの fasterror 設定
+
+ucs パッケージ(バンドル)が提供する「utf8x 入力エンコーディング」では、
+パッケージで未定義の Unicode 文字が入力された場合エラーになる。その時の
+エラーメッセージ中に該当の文字の Unicode 名を出力するが、この際に高位
+バイトを含むファイル(テキスト情報をハフマン符号で圧縮したものと思われる)
+を用いるので、pTeX では処理に失敗してしまう。そこで本パッケージでは、ucs
+パッケージが読み込まれた場合(utf8x が指定された時も含む)に上記の機能を
+抑止するオプション `fasterror` を常に有効にする。
+
+### TeX エスケープ形式(`^^ab`)の処理
+
+現在の pTeX では入力漢字コードが UTF-8 の時に JIS X 0208 に含まれない
+文字をエスケープ形式(`^^ab`)の UTF-8 バイト列に変換する。通常はこの
+形式は該当のバイト列と等価の解釈をされる。ところがここで `^` の catcode
+が本来の値 7 から変更されているとこの処理が失敗してしまう。具体的には
+次のような場合が該当する。
+
+  * Babel の一部の言語(esperanto 等)を使用した場合。
+  * verbatim や類似の環境の中。
+
+`\safecaret` 命令をプレアンブルで実行した場合、これらの場合でエスケープ
+形式の連続する出現をバイト列と解釈するようにする。
+
+### 開発者向け機能
+
+(使用中の漢字コード系の情報表示)
+
+  * `\bxInternalJaEncoding`:[暗黙文字トークン] 内部漢字コードを表す。
+      - `s`: シフトJIS
+      - `e`: EUC
+      - `u`: Unicode (upTeX)
+
+  * `\bxInputJaEncoding`:[暗黙文字トークン] 入力 TeX ソースの漢字
+    コードを表す。
+      - `s`: シフトJIS
+      - `e`: EUC
+      - `u`: UTF-8
+      - `a`: 自動判定が有効
+
+  * `\pxUpScale`:[マクロ] 和文の標準フォントに対する和文スケール。
+    `\Cjascale` が設定済の場合はその値、それ以外で文書クラスが和文標準
+    または jsclasses のものの場合は、当該クラスの既定のスケール値。
+
+
+pxbabel パッケージ ― Babel の機構に基づく CJK 間のフォント切替
+---------------------------------------------------------------
+
+詳細についてはマニュアル `pxbabel.pdf` を参照されたい。
+
+upkcat パッケージ ― 文字指定による kcatcode 操作
+-------------------------------------------------
+
+※ 本パッケージはパッケージ開発者向けのものである。
+
+文字を指定して(それが属するブロックの)kcatcode を操作する場合
+
+    \kcatcode`<文字>
+
+の形式を使うことになるが、その際にもしその文字の現在の kcatcode が 15
+である場合は文字がバイト列とみなされるので、この形式が使えない。この
+パッケージはそのような場合でも使用可能な、kcatcode の参照・変更の命令
+を提供する。なお、文書作成者はこちらではなく [pxcjkcat パッケージ]を
+用いるべきである。
+
+[pxcjkcat パッケージ]: https://www.ctan.org/pkg/pxcjkcat
+
+### 前提環境
+
+  * TeX フォーマット: plain、LaTeX
+  * TeX エンジン: upTeX(派生を含む)
+  * DVI ウェア(DVI 出力時): 不問
+
+### パッケージ読込
+
+plain upTeX の場合:
+
+    \input upkcat.sty
+
+upLaTeX の場合:
+
+    \usepackage{upkcat}
+
+### 機能
+
+  * `\getkcatcode{<文字>}`: `<文字>` の現在の kcatcode の値(15~19)
+    をマクロ `\thekcatcode` に文字列として返す。
+  * `\setkcatcode{<文字>}{<値>}`: `<文字>` の kcatcode の値を `<値>`
+    に設定する。
+
+
+更新履歴
+--------
+
+  * Version 1.1  〈2017/05/29〉
+      - 内容の整理。  
+        ※バージョンの値は BXbase と合致させて 1.1 版とした。
+      - 一部の機能を非推奨にした。
+
+  * Version 0.5i 〈2017/05/04〉 ― CTAN 公開版
+      - 0.5 版から ifuptex と pxcjkcat を削除したもの。  
+        ※ifptex パッケージバンドルを CTAN に登録するための経過措置。
+
+  * Version 0.9b 〈2012/08/19〉
+      - ifuptex パッケージは「ifptex バンドル」に移動したため削除。
+      - pxcjkcat パッケージは専用のバンドルに移動したため削除。
+
+  * Version 0.5  〈2010/06/15〉
+      - pxbase: `\JI`/`\KI` を追加。
+      - pxbase: `\dvipdfmxmapline`/`\dvipdfmxmapfont` を追加。
+
+  * Version 0.4a 〈2010/02/07〉
+      - pxcjkcat: upTeX v0.29 における kcatcode のブロック分割の変更に
+        対応。それに伴い `ccv1`, `ccv2` オプションを新設。
+      - pxcjkcat: `\cjkcategory` の第 1 引数に文字そのものを指定できる
+        ようにした。
+      - pxcjkcat: なぜかモード設定時の「Enclosed CJK Letters and Months」
+        (`cjk07`)の kcatcode の設定値が 16 になっていた。upTeX 既定値に
+        合わせて 18 に修正した。
+
+  * Version 0.4  〈2009/07/05〉
+      - safe caret 機構のコード(`\safecaret` の実装の核心)を pxbase.def
+        に移動(BXbase と共通に)。
+      - Babel に加えて verbatim でも safe caret 機構が働くようにする。
+        ただし「pxbase は単に読み込むだけでは他人のコードを書き換えない」
+        という指針があるので、`\safecaret` を実行しないと有効にならない。
+      - pxbabel は中で `\safecaret` を呼ぶので、pxbabel を読み込むと safe
+        caret は自動的に有効になる。
+      - pxbabel でエンコーディングを `J20` 等に変えた場合に OTF パッケージ
+        の `\CID` が動かなくなるのを修正。
+
+  * Version 0.3  〈2008/04/06〉
+      - pxbabel に safe caret 機構を追加。
+
+  * Version 0.2b 〈2008/03/28〉
+      pxbabel に `\UTF` の切替を追加。
+
+  * Version 0.2a 〈2008/03/18〉
+      pxbabel, pxbase のバグ取り。
+      pxbabel の説明書をまだ書いていないことに気づいた ;-) 慌てて作成。
+
+  * Version 0.2  〈2008/03/14〉
+      最初の公開版。
+
+-------------------------------------------
+Takayuki YATO (aka. "ZR")  
+https://github.com/zr-tex8r


Property changes on: trunk/Master/texmf-dist/doc/platex/pxbase/README-ja.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/doc/platex/pxbase/README-pxbabel
===================================================================
--- trunk/Master/texmf-dist/doc/platex/pxbase/README-pxbabel	2017-06-05 23:15:19 UTC (rev 44481)
+++ trunk/Master/texmf-dist/doc/platex/pxbase/README-pxbabel	2017-06-05 23:15:32 UTC (rev 44482)
@@ -1,112 +0,0 @@
-==================================================
-== PXbase バンドル v0.5  <2010/06/15>           ==
-==           by「ZR」(八登 崇之/Takayuki YATO)==
-==                      <zrbabbler at yahoo.co.jp> ==
-==================================================
-(This file is encoded in UTF-8,)
-
-----------------------------------------------------
- pxbabel パッケージ (v0.4) -- CJK 間のフォント切替 
-----------------------------------------------------
-
-■ 対応環境
-
-    pLaTeX (ptexenc 拡張版) / upLaTeX2e
-
-    pLaTeX の場合は OTF パッケージが必要。
-
-■ 読込
-
-    \usepackage[<オプション>]{pxbabel}
-
-    オプションは以下の通り。
-
-      japanese=<言語名> ; korean=<言語名> ;
-      schinese=<言語名> ; tchinese=<言語名>
-        各々の言語に対して実際に使用する Babel の言語オプションの名前を
-        指定する。詳しくは「機能」の節を参照。
-
-      main=<言語名>
-        基底言語、すなわち文書開始時に有効である言語を、言語オプションの
-        名前(言語識別子でない)で指定する。bxbase/pxbase パッケージの
-        \bxmainlanguage を呼び出している。
-
-      noswitchcaption  (既定で有効)
-        Babel におけるキャプションや日付の文字列の切替機能を抑止する。
-        このオプションがあると、bxbase/pxbase パッケージの
-            \bxcaptionlanguage{default}
-        が実行され、キャプションは文書クラスで設定されたもののままに
-        なり、言語切替に追随して変更されなくなる。ただし、文書作成者が
-        \bxcaptionlanguage を実行していた場合はそちらが優先される。
-        この機能の詳細については pxbase パッケージの説明書を参照。
-
-      switchcaption
-        Babel におけるキャプションや日付の文字列の切替機能を保持する。
-        noswitchcaption の否定。
-
-      switchfont  (既定で有効)
-        このパッケージが提供する、CJK 言語でフォントを切り替える機能を
-        有効にする。
-
-      noswitchfont
-        このパッケージが提供する、CJK 言語でフォントを切り替える機能を
-        無効にする。switchfont の否定。
-
-■ 機能 (upLaTeX において)
-
-    upTeX は標準で、日本語・中国語(繁体・簡体)・韓国語(以下これらを CJK
-    言語と総称する)の TeX フォント(和文 TFM)を用意している。本パッケージ
-    は Babel において CJK 言語の切替処理(\extras...)の中に、フォントの
-    切替を追加し、言語の選択に応じて適切なフォントが選ばれるようにする。
-    言語に対する Babel の言語オプションの名前は変わりうるので、その名前
-    をパッケージ読込時に指定できるようにした。また、ある CJK 言語の為の
-    オプションが読み込まれていない時は、フォントの切替のみをする簡易の
-    言語オプションをその場で生成する。
-
-    言語オプションの名前は \usepackage のオプションの中で
-      <言語識別子>=<言語オプション名>
-    の形式で指定する。ここで <言語識別子> は japanese(日本語), korean
-    (韓国語), schinese(簡体字中国語), tchinese(繁体字中国語) のいずれか
-    で、<言語オプション名> に Babel の言語オプションの名前を指定する。
-    ある CJK 言語に対して指定を省略した場合は、言語識別子と同じ名前が
-    言語オプション名となる。指定された言語オプションが存在する場合には
-    その切替処理の中にフォント切替が追加される。存在しない場合は、指定
-    された名前の言語オプションがその場で生成され、それは Babel で読み込
-    まれた他の言語と同じように使用できる。
-
-■ 機能 (pLaTeX において)
-
-    OTF パッケージの multi オプションは pLaTeX において韓国語・中国語を
-    扱うためのもので、これを使うと \UTFK/\UTFC/\UTFT で韓国語/中国語
-    (簡体)/中国語(繁体)のフォントを用いて文字が出力される(これらの命令
-    の引数は \UTF と同じで Unicode 値 16 進)。
-
-    pLaTeX における本パッケージの動作は次のようである。まず、upLaTeX の
-    場合と同じように CJK 言語のための Babel 言語オプションを生成する。
-    その上で、CJK 言語に切り替わった場合には、\UTF の動作を「本来の \UTF」
-    /\UTFK/\UTFC/\UTFT に切り替える。この機能は単独ではあまり有用とは
-    いえないが、bxutf8 入力エンコーディング(BXbase バンドル)と併用して CJK
-    言語の UTF-8 直接入力を行う時に有用となる。すなわち直接入力された CJK
-    文字は \UTF に変換されるので、結果的に upLaTeX の時と同じように、Babel
-    で切り替えた言語用のフォントで出力することが可能となる。
-
-    ※ ただし、この機構には、「JIS X 0208 にある文字はそもそも \UTF に変換
-    されずに直接日本語フォントで出力される」という欠点をもつ。これを解決
-    するには PXfltsrc バンドル等の機能を用いて文書にテキスト変換フィルタ
-    を適用されるという処理が必要になる。
-
-■ 開発者向け機能
-
-    \pxLanguageName{<言語識別子>}
-      その言語に対する言語オプションの生成。
-
-    \pxDeclareBasicCJKEncoding
-    \pxDeclareBasicCJKShape
-    \pxDeclareBasicCJKFamily
-      CJK 言語用の NFSS のフォント定義の命令。
-
-■ 更新履歴
-
-    README ファイルを参照。
-
-# EOF

Modified: trunk/Master/texmf-dist/doc/platex/pxbase/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/platex/pxbase/README.md	2017-06-05 23:15:19 UTC (rev 44481)
+++ trunk/Master/texmf-dist/doc/platex/pxbase/README.md	2017-06-05 23:15:32 UTC (rev 44482)
@@ -1,4 +1,4 @@
-Pxbase Package Bundle
+PXbase Package Bundle
 =====================
 
 LaTeX: Tools for use with (u)pLaTeX
@@ -8,22 +8,24 @@
 provides a few user commands to assist in creating Japanese document on
 (u)pLaTeX.
 
-------------------------------------------------------------------------
-## NOTICE
+### System Requirements
 
-This version is a maintenance release for CTAN. The following two package
-files are deleted: ifuptex.sty (moved to the “ifptex” bundle) and
-pxcjkcat.sty (moved to the “PXcjkcat” bundle).
+  * TeX format: LaTeX.
+  * TeX engine: pTeX and upTeX.
+  * DVI-ware (in DVI output): Anything.
 
-The merge with the latest GitHub version (v0.9) is planned in the near
-future....
-------------------------------------------------------------------------
+### Package content
 
-### System Requirements
+  * `pxbase.sty`: the pxbase package
+  * `pxbase.def`: a submodule (no longer used)
+  * `pxbabel.sty`: the pxbabel package
+  * `pxbasenc.def`: a submodule
+  * `pxjsfenc.def`: a submodule
+  * `pxbsjc.def`: a helper file for pxbase
+  * `pxbsjc1.def`: a helper file for pxbase
+  * `upkcat.sty`: the upkcat package
 
-  - TeX format: LaTeX.
-  - TeX engine: pTeX and upTeX.
-  - DVI driver: Anything.
+Some files are kept present for compatibility with other packages.
 
 ### Installation
 
@@ -38,19 +40,44 @@
 This package is distributed under the MIT License.
 
 
+pxbase package ― the (quondam) base library for pTeX
+-----------------------------------------------------
+
+The package used to provide pTeX-specific features required by other
+packages. However, it has been merged with the [bxbase] package since
+v0.9, and currently it simply loads bxbase internally.
+
+[bxbase]: https://www.ctan.org/pkg/bxbase
+
+
+pxbabel package ― To help use Babel with Japanese document
+-----------------------------------------------------------
+
+Currently the documentation is available only in Japanese (see
+pxbabel.pdf).
+
+
+upkcat package ― To safely operate with kcatcode
+-------------------------------------------------
+
+Currently the documentation is available only in Japanese (see
+README-ja.md).
+
+
 Revision History
 ----------------
 
-  * Version 0,5i 〈2017/05/04〉
-  * Version 0,5  〈2010/06/15〉
-  * Version 0,4a 〈2010/02/07〉
-  * Version 0,4  〈2009/07/05〉
-  * Version 0,3  〈2008/04/06〉
-  * Version 0,2b 〈2008/03/28〉
-  * Version 0,2a 〈2008/03/18〉
+  * Version 1.1  〈2017/05/29〉
+  * Version 0.5i 〈2017/05/04〉 ― for CTAN
+  * Version 0.9b 〈2012/08/19〉
+  * Version 0.5  〈2010/06/15〉
+  * Version 0.4a 〈2010/02/07〉
+  * Version 0.4  〈2009/07/05〉
+  * Version 0.3  〈2008/04/06〉
+  * Version 0.2b 〈2008/03/28〉
+  * Version 0.2a 〈2008/03/18〉
   * Version 0.2  〈2008/03/14〉
 
-
 --------------------
 Takayuki YATO (aka. "ZR")  
 https://github.com/zr-tex8r

Added: trunk/Master/texmf-dist/doc/platex/pxbase/pxbabel.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/platex/pxbase/pxbabel.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/platex/pxbase/pxbabel.pdf	2017-06-05 23:15:19 UTC (rev 44481)
+++ trunk/Master/texmf-dist/doc/platex/pxbase/pxbabel.pdf	2017-06-05 23:15:32 UTC (rev 44482)

Property changes on: trunk/Master/texmf-dist/doc/platex/pxbase/pxbabel.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/platex/pxbase/pxbabel.tex
===================================================================
--- trunk/Master/texmf-dist/doc/platex/pxbase/pxbabel.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/platex/pxbase/pxbabel.tex	2017-06-05 23:15:32 UTC (rev 44482)
@@ -0,0 +1,330 @@
+% 文字コードは UTF-8
+% uplatex で組版する
+\documentclass[a4paper,uplatex]{jsarticle}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\newcommand{\PkgVersion}{1.1}
+\newcommand{\PkgDate}{2017/05/29}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
+\newcommand{\Note}{\par\noindent ※}
+\newcommand{\Means}{~:\quad}
+\providecommand{\upTeX}{u\pTeX}
+\providecommand{\upLaTeX}{u\pLaTeX}
+%-----------------------------------------------------------
+\DeclareFontShape{JY2}{mc}{m}{ko}{<->s*[.924871]upkorrm-h}{}
+\DeclareFontShape{JT2}{mc}{m}{ko}{<->s*[.924871]upkorrm-v}{}
+\DeclareFontShape{JY2}{gt}{m}{ko}{<->s*[.924871]upkorgt-h}{}
+\DeclareFontShape{JT2}{gt}{m}{ko}{<->s*[.924871]upkorgt-h}{}
+\newcommand{\Kor}[1]{{\kanjishape{ko}\selectfont #1}}
+%-----------------------------------------------------------
+\begin{document}
+\title{\Pkg{pxbabel} パッケージ}
+\author{八登崇之\ (Takayuki YATO; aka.~``ZR'')}
+\date{v\PkgVersion \quad [\PkgDate]}
+\maketitle
+
+%===========================================================
+\section{概要}
+
+{(u)\pLaTeX}における日本語・簡体字中国語・繁体字中国語・
+韓国語(以下この 4 つを「CJK言語」と総称する)の間の
+「和文(CJK)フォント」の切り替えをBabelのインタフェースを
+用いて行えるようにする。
+
+\paragraph{前提環境}
+
+\begin{itemize}
+\item {\TeX}フォーマット: {\pLaTeX}/{\upLaTeX}
+  (拡張エンジンを含む)
+\end{itemize}
+
+\paragraph{依存パッケージ}
+
+\begin{itemize}
+\item \Pkg{babel}パッケージ
+\item \Pkg{OTF}パッケージ({\pLaTeX}の場合)
+\end{itemize}
+
+%===========================================================
+\section{読込}
+
+v0.9より\Pkg{babel}パッケージと一緒に読み込む方式
+(一括読込モード)をサポートした。
+従来通り、別個に読み込む方式(分離読込モード)も可能である。
+どちらであるかは、\Pkg{pxbabel}読込時に\Pkg{babel}が読込済か
+どうかで判別する。
+
+\begin{quote}
+〈一括読込モードの場合〉\\
+|\usepackage[|\Meta{オプション}|]{pxbabel}|
+\par\bigskip
+〈分離読込モードの場合〉\\
+|\usepackage[|\Meta{Babelのオプション}|]{babel}|\\
+|\usepackage[|\Meta{オプション}|]{pxbabel}|
+\end{quote}
+
+オプションは以下の通り。
+なお「CJK 言語識別子」は次のいずれかの値のことを指す:
+\begin{itemize}
+\item |japanese|: 日本語
+\item |korean|: 韓国語
+\item |schinese|: 簡体字中国語
+\item |tchinese|: 繁体字中国語
+\end{itemize}
+「言語名」はBabelで指定する(|\foreignlanguage| 等の引数にする)
+言語を表す文字列のことである。
+
+\begin{itemize}
+\item \Meta{CJK言語識別子}|=|\Meta{言語名}\Means
+各々のCJK言語に対して実際に使用するBabelの言語名を指定する。
+詳しくは「機能」の節を参照。
+\Note 言語名の既定値はCJK言語識別子と同一名。
+(例えば |japanese|(日本語)の言語名は |japanese|。)
+
+\item \Meta{CJK言語識別子}\Means
+「\Meta{CJK言語識別子}|=|\Meta{CJK言語識別子}」と同じ。
+\Note これは既定値なので通常は指定する必要がないが、
+一括読込モードで「最後の言語(基底言語になる)」を
+指定するのに有用である。
+
+\item \Meta{CJK言語識別子}|=+|\Meta{言語名}\Means
+各々のCJK言語に対して実際に使用するBabelの言語名を指定し、
+かつその言語オプションの定義ファイル(|*.ldf|)を読み込む。
+
+\item |+|\Meta{CJK言語識別子}\Means
+「\Meta{CJK言語識別子}|=+|\Meta{CJK言語識別子}」と同じ。
+
+\item 有効なBabel言語オプションの名前\Means
+その言語オプションの定義ファイルを読み込む。
+\Note 分離読込モードでもこの機能は有効である。
+
+\item |main=|\Meta{言語名}\Means
+文書開始時に有効となる基底言語を、
+言語名(CJK言語識別子でない)で指定する。
+\Note このオプションが未指定の場合、
+分離読込モードでは\Pkg{babel}で最後に読まれた言語が基底言語になる。
+一括読込モードでは\Pkg{pxbabel}で最後に読まれた言語が基底言語になる。
+
+\item |caption=|\Meta{値}\Means
+キャプション言語(キャプションや日付の文字列で使われる言語)の
+固定に関する設定を行う。
+有効な値は次の通り:
+  \begin{itemize}
+  \item 有効な言語オプション名\Means その言語に固定する。
+  \item |main|\Means 文書開始時の基底言語に固定する。
+  \item |default|\Means キャプション文字列を文書クラスで
+  指定されたものから変更しない。
+  \item |switch|\Means キャプション言語の固定を行わない。
+  (Babelの既定動作。)
+  \item |auto|(既定値)\Means
+  文書開始時の基底言語が
+  「言語オプション定義ファイルの読込を伴わないCJK言語」
+  (仮に「仮想言語設定」と呼ぶ)の場合は |default|、
+  それ以外は |switch|。
+  \end{itemize}
+\Note Babelでは言語の切替に関して、入力言語のみを切り替えるもの
+(|\foreignlanguage| 命令、|otherlanguage*| 環境)
+と基底言語を切り替えるもの
+(|\selectlanguage| 命令、|otherlanguage| 環境)
+があり、既定の動作では
+キャプション言語は基底言語に常に追随する
+(|switch| 指定時と同じ)。
+ところが、「仮想言語設定」においては、キャプション文字列の
+設定が働かないので、基底言語を「仮想言語設定」の言語に切り替えた場合に
+キャプション言語が正しくない事態が生じる。\<\footnote{%
+  ただし「文書開始時以外に基底言語を仮想言語設定に切り替える」ことを
+  しなければ問題は起こらない。
+  特に、「日本語の文書クラスを用いて、かつBabelにおいて
+  仮想言語設定とした日本語を文書全体で基底言語にする」
+  場合は、キャプションは文書クラスで定めたものに固定される。}
+これによる混乱を避けるためにキャプション言語の固定が
+有用である場合がある。
+特に、「Babelによるキャプション文字列の変更を抑止して文書クラスで
+定めた文字列がいつでも有効であるようにしたい」という場合は、
+|default| を指定すればよい。
+文書開始時の基底言語が仮想言語設定である場合はこちらの使い方が
+多いと考えられるので、この場合には既定を |default| としている。
+\Note \Pkg{bxbase}パッケージの |\fixcaptiopnlanguage| によるキャプション
+言語固定の設定は、常に本パッケージでの設定より優先される。
+この使用は |main| オプションのものと一貫していないが、
+互換性のためそのままにしている。
+
+\item |noswitchcaption|\Means
+|caption=default| と同じ。
+\Note v0.9 より前はこれが既定値であった。
+ゆえに、(|no|)|switchcaption| も |caption| もなく基底言語が
+仮想言語設定でない場合の |caption| 設定は、
+v0.9 より前は |default|、以降は |switch| と異なることになる。
+仮想言語設定でない場合は |default| にする必然性が少ないので、
+Babelの既定動作に合わせる目的で変更された。
+
+\item |switchcaption|\Means
+|caption=switch| と同じ。
+
+\item |switchfont|(既定で有効)\Means
+このパッケージが提供する、
+CJK言語でフォントを切り替える機能を有効にする。
+
+\item |noswitchfont|\Means
+このパッケージが提供する、
+CJK言語でフォントを切り替える機能を無効にする。
+|switchfont| の否定。
+\end{itemize}
+
+%===========================================================
+\section{ユーザ命令}
+
+このパッケージが提供する主要な機能であるCJKフォント切替に
+ついてはBabelの機能を用いて行うことになるため、
+パッケージ特有の命令は存在しない。
+
+例えば、次のようなパッケージ読込(一括読込モード)
+の場合:
+\begin{quote}\begin{verbatim}
+\usepackage[korean,japanese]{pxbabel}
+\end{verbatim}\end{quote}
+本文中で
+\footnote{{\upLaTeX}フォーマット使用または
+{\pLaTeX}で\Pkg{bxutf8}入力エンコーディングを用いているとする。}
+\begin{quote}
+|日本語文書中に\foregnlanguage{korean}{|%
+\textgt{\Kor{한글}}|}がある。|
+\end{quote} 
+と入力すれば次の出力が得られる。
+\begin{quote}
+日本語文書中に\Kor{한글}がある。
+\end{quote} 
+
+本パッケージが提供する命令には次のものがある。
+
+\begin{itemize}
+\item |\cjklanguagename{|\Meta{CJK言語識別子}|}|\Means
+そのCJK言語に対する言語名。
+\end{itemize}
+
+%===========================================================
+\section{CJKフォント切替機能の原理}
+
+\subsection{{\upLaTeX}において}
+
+{\upTeX}は標準で、CJK言語の{\TeX}フォント(和文TFM)を用意している。
+本パッケージはBabelにおいてCJK言語の切替処理(|\extras...|)
+の中に、フォントの切替を追加し、
+言語の選択に応じて適切なフォントが選ばれるようにする。
+言語に対するBabelの言語オプションの名前は変わりうるので、
+その名前をパッケージ読込時に指定できるようにした。
+また、あるCJK言語の為のオプションが読み込まれていない時は、
+フォントの切替のみをする簡易の言語オプション(仮想言語設定)
+をその場で生成する。
+
+\subsection{{\pLaTeX}において}
+
+OTFパッケージの |multi| オプションは{\pLaTeX}において
+韓国語・中国語を扱うためのもので、
+これを使うと |\UTFK|/|\UTFC|/|\UTFT| で
+韓国語/中国語(簡体)/中国語(繁体)のフォントを用いて
+文字が出力される
+(これらの命令の引数は |\UTF| と同じでUnicode値16進)。
+
+{\pLaTeX}における本パッケージの動作は次のようである。
+まず、{\upLaTeX}の場合と同じようにCJK言語のための
+Babel言語オプションを生成する。
+その上で、CJK言語に切り替わった場合には、
+|\UTF| の動作を「本来の |\UTF|」/|\UTFK|/|\UTFC|/|\UTFT|
+に切り替える。
+この機能は単独ではあまり有用とはいえないが、
+\Pkg{bxutf8}入力エンコーディング(\Pkg{BXucs}バンドル)
+と併用してCJK言語のUTF-8直接入力を行う時に有用となる。
+すなわち直接入力されたCJK文字は |\UTF| に変換されるので、
+結果的に{\upLaTeX}の時と同じように、Babelで切り替えた言語用の
+フォントで出力することが可能となる。
+
+\Note ただし、この機構には、
+「JIS X~0208にある文字はそもそも |\UTF| に変換されずに
+直接日本語フォントで出力される」
+という欠点をもつ。
+これを解決するには\Pkg{pxfltsrc}パッケージ等の機能を用いて
+文書にテキスト変換フィルタを適用されるという処理が必要になる。
+
+%===========================================================
+\section{Babel一括読込モード}
+
+v0.9より前では、Babel本体(\Pkg{babel}パッケージ)
+とは別個に読み込む方式のみを採用していた。
+ところがこの場合、
+「Babelの本来の機能は不要で\Pkg{pxbabel}の
+フォント切替だけを用いたい」
+という場合、かなり不自然な指定をする必要があった。
+例えば、日本語(|japanese|)と韓国語(|korean|)を
+切り替えたい(メインは日本語)という場合は次のようになる。
+
+\begin{quote}\begin{verbatim}
+\usepackage[english]{babel}
+\usepackage[main=japanese]{pxbabel}
+\end{verbatim}\end{quote}
+\Note \Pkg{pxbabel}を読んで基底言語を |japanese|
+にする必要があるのだが、
+そうするとまず \Pkg{babel} を読む必要があり
+ここで何かダミーの言語(|english| を用いた)を指定する必要がある。
+このままでは基底が |english| になるので、
+|japanese| を基底にするのに |main| オプションが必要。
+
+そこで、v0.9において、\Pkg{babel}と一括で読み込むことで、
+\Pkg{babel}の使用言語オプション指定の方法を踏襲できるようにした。
+\Pkg{babel}の読込前に\Pkg{pxbabel}を読み込むとこの動作になり、
+\Pkg{babel}も一緒に読み込まれる。
+
+\begin{quote}\begin{verbatim}
+\usepackage[korean,japanese]{pxbabel}
+\end{verbatim}\end{quote}
+\Note オプションは\Pkg{babel}のものと同じ理屈で書く。
+|korean| と |japanese| を用い、
+基底が |japanese| なのでこの順番になる。
+
+目的が「{\upTeX}のSIP対応の日本語フォントが使いたい」
+だけの場合は以下のようになる。
+
+\begin{quote}\begin{verbatim}
+\usepackage[japanese]{pxbabel}
+\end{verbatim}\end{quote}
+\Note |japanese| のみ指定して、当然これが基底。
+
+実際には、4つのCJK言語のオプションは「常に」出現するので、
+上の2つの指定は等価であるが、
+一括読込の場合は\Pkg{babel}の習慣に合わせて記述するのが
+解りやすいと思われる。
+
+少し複雑な例を挙げておく。
+ドイツ語(|ngerman|)、日本語(|japanese|)、
+簡体字中国語(|simpchinese|)、繁体字中国語(|tradchinese|)
+を使用し、かつ前の3つには言語オプション定義(|*.ldf|)があり、
+基底は日本語で、キャプション言語の固定は行わないとする。
+
+\paragraph{分離読込モード}
+
+\begin{quote}\begin{verbatim}
+\usepackage[ngerman,simpchinese,japanese]{babel}
+\usepackage[schinese=simpchinese,tchinese=tradchinese,
+            caption=switch]{pxbabel}
+\end{verbatim}\end{quote}
+
+\Note 分離読込の場合は\Pkg{babel}で最後に指定したものが基底言語。
+
+\paragraph{一括読込モード}
+\begin{quote}\begin{verbatim}
+\usepackage[ngerman,schinese=+simpchinese,tchinese=tradchinese,
+            +japanese]{pxbabel}
+\end{verbatim}\end{quote}
+
+\Note ldfの読込を伴う言語(|japanese|)が基底なので、
+|caption| は |switch| が既定値になる。
+なお、非CJK言語(|ngerman|)には決して |+| を付けないことに注意。
+
+%===========================================================
+\section{更新履歴}
+
+|README-ja.md| ファイルを参照。
+
+%===========================================================
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/platex/pxbase/pxbabel.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/platex/pxbase/pxbabel.sty
===================================================================
--- trunk/Master/texmf-dist/tex/platex/pxbase/pxbabel.sty	2017-06-05 23:15:19 UTC (rev 44481)
+++ trunk/Master/texmf-dist/tex/platex/pxbase/pxbabel.sty	2017-06-05 23:15:32 UTC (rev 44482)
@@ -1,120 +1,309 @@
-%
-% pxbabel.sty
-%
-%%%% package declaration
+%%
+%% This is file 'pxbabel.sty'.
+%% 
+%% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+%%   GitHub:   https://github.com/zr-tex8r
+%%   Twitter:  @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
 \NeedsTeXFormat{pLaTeX2e}
-\ProvidesPackage{pxbabel}[2017/05/04 v0.5i PX Babel interface for CJK]
+\ProvidesPackage{pxbabel}[2017/05/29 v1.1 PX Babel interface for CJK]
+\def\pxbb at pkgname{pxbabel}
+
+%--------------------------------------- general
+
+%% packages
 \RequirePackage{pxbase}
+\RequirePackage{ifptex}
 \safecaret
-\RequirePackage{keyval}
+\bxPrepareSetKeysSafe
 
-%%%% error message
-\def\pxbb at pkgname{pxbabel}
-\def\pxbb at error{\PackageError\pxbb at pkgname}
-\def\pxbb at warn{\PackageWarningNoLine\pxbb at pkgname}
+%% error messages
+\bxSetModuleName\pxbb at pkgname
 \def\pxbb at eha{\MessageBreak I aborted loading it.}
-\def\pxbb at err@nobbl{\pxbb at error
-  {babel is not yet loaded, load aborted}%
-  {This package must be loaded after babel package.}}
-\@onlypreamble\pxbb at err@nobbl
-\def\pxbb at warn@nocjk{\pxbb at warn
-  {No multi-CJK support found, font switch disabled\MessageBreak
-   (I need upTeX-extension or otf package with `multi')}}
-\@onlypreamble\pxbb at warn@nocjk
+\bxPreamble\def\pxbb at err@nobbl{%
+  \PackageError\pxbb at pkgname
+   {babel is not yet loaded, load aborted}%
+   {This package must be loaded after babel package.}}
+\bxPreamble\def\pxbb at warn@nocjk{%
+  \PackageWarningNoLine\pxbb at pkgname
+   {No multi-CJK support found, font switch disabled\MessageBreak
+    (I need upTeX-extension or otf package with `multi')}}
+\bxPreamble\def\pxbb at err@noldf#1{%
+  \PackageError\pxbb at pkgname
+   {Language definition file #1.ldf not found}%
+   {Maybe you misspelled the language option?}}
 
-%%%% \pxbb at foreach@lang\CS
-\def\pxbb at foreach@lang#1{%
-  #1{japanese}#1{korean}#1{schinese}#1{tchinese}}
+%--------------------------------------- Processing package options
 
-%%%% keyval settings
-\def\pxbb at setkey{%
-  \edef\pxbb at nxt{\noexpand\setkeys{pxbabel}{\CurrentOption}}%
-  \pxbb at nxt}
-\def\pxbb at do#1{%
-  \define at key{pxbabel}{#1}{\@namedef{pxbb at LN/#1}{##1}}%
-  \@namedef{pxbb at LN/#1}{#1}}
-\pxbb at foreach@lang\pxbb at do
-\define at key{pxbabel}{main}{\def\pxbb at main{#1}}
-\let\pxbb at main\relax
+%% \pxbb at cjk@langid at list
+% The list of all CJK language ids.
+\bxPreamble\def\pxbb at cjk@langid at list{%
+  japanese,korean,schinese,tchinese%
+}
 
-%%%% option handler
-\newif\ifpxbb at switchcaption \pxbb at switchcaptionfalse
-\DeclareOption{switchcaption}{\pxbb at switchcaptiontrue}
-\DeclareOption{noswitchcaption}{\pxbb at switchcaptionfalse}
-\newif\ifpxbb at switchfont \pxbb at switchfonttrue
+%% \pxbb at lang@load at list
+% The list of language options to be loaded.
+\bxPreamble\let\pxbb at lang@load at list\@empty
+
+%% \pxbb at set@lang at spec{<lang_id>}{[+]<lang_name>}
+\bxPreamble\def\pxbb at set@lang at spec#1#2{%
+  \edef\pxbb at args{#2}%
+  \expandafter\pxbb at set@lang at spec@a\pxbb at args\@nil{#1}}
+\bxPreamble\def\pxbb at set@lang at spec@a#1#2\@nil#3{%
+  \bxIf{+#1}%
+   {\csdef{pxbb at langname/#3}{#2}%
+    \appto\pxbb at lang@load at list{,#2}}%
+   {\csdef{pxbb at langname/#3}{#1#2}}}
+
+%% keyval settings
+% (<lang_id>=[+]<lang_name>)
+\bxForEachIn\pxbb at cjk@langid at list\do{%
+  \define at key{pxbabel}{#1}{\pxbb at set@lang at spec{#1}{##1}}%
+  \pxbb at set@lang at spec{#1}{#1}}
+% (main=<lang_name>)
+\bxPreamble\let\pxbb at main@lang\relax
+\define at key{pxbabel}{main}{\def\pxbb at main@lang{#1}}
+% (caption=<lang_name>)
+\bxPreamble\def\pxbb at caption@lang{default}
+\define at key{pxbabel}{caption}{\def\pxbb at caption@lang{#1}}
+
+%% option handling
+\DeclareOption{switchcaption}{%
+  \def\pxbb at caption@lang{switch}}
+\DeclareOption{noswitchcaption}{%
+  \def\pxbb at caption@lang{default}}
+\newbool{pxbb at switchfont}\pxbb at switchfonttrue
 \DeclareOption{switchfont}{\pxbb at switchfonttrue}
 \DeclareOption{noswitchfont}{\pxbb at switchfontfalse}
-\newif\ifpxbb at prefermmixjis
-\DeclareOption{prefer2004jis}{\pxbb at prefermmixjistrue}
-\DeclareOption{noprefer2004jis}{\pxbb at prefermmixjisfalse}
-\DeclareOption*{\pxbb at setkey}
+\newbool{pxbb at prefermmivjis}
+\DeclareOption{prefer2004jis}{\pxbb at prefermmivjistrue}
+\DeclareOption{noprefer2004jis}{\pxbb at prefermmivjisfalse}
+% (<lang_id>, +<lang_id>)
+\bxForEachIn\pxbb at cjk@langid at list\do{%
+  \DeclareOption{#1}{%
+    \pxbb at set@lang at spec{#1}{#1}%
+    \def\pxbb at last@lang{#1}}%
+  \DeclareOption{+#1}{%
+    \pxbb at set@lang at spec{#1}{+#1}%
+    \def\pxbb at last@lang{#1}}}
+% (options processed by keyval)
+\DeclareOption*{%
+  \bxWithArgExpd{\CurrentOption}\do{%
+    \bxSetKeysSafe{pxbabel}{#1}%
+    \bxIfx{\bxRestKeys\@empty}{}%
+      {\appto\pxbb at lang@load at list{,#1}%
+       \def\pxbb at last@lang{#1}}}}
 \ProcessOptions*
+\bxChompComma\pxbb at lang@load at list
 
-%%%% \ifpxbb at otfmulti, \ifpxbb at uptex
-%%%% \ifpxbb at pxotf
-\newif\ifpxbb at otfmulti \newif\ifpxbb at pxotf
-\@ifpackageloaded{mlutf}{\pxbb at otfmultitrue}{\pxbb at otfmultifalse}
+%% 'triv' language check table
+\bxForEachIn\pxbb at cjk@langid at list\do{%
+  \cslet{pxbb at triv/\@nameuse{pxbb at langname/#1}}{t}}
+\bxForEachIn\pxbb at lang@load at list\do{%
+  \csundef{pxbb at triv/#1}}
+
+%--------------------------------------- Resolving settings
+
+%% \ifpxbb at otfmulti
+%% \ifpxbb at pxotf
+\newbool{pxbb at otfmulti}
+\newbool{pxbb at pxotf}
+\@ifpackageloaded{mlutf}{\pxbb at otfmultitrue}{}
 \@ifpackageloaded{pxotf}{\pxbb at otfmultitrue\pxbb at pxotftrue}{}
-\newif\ifpxbb at uptex
-\let\ifpxbb at uptex\ifupTeX
 
-%%%% environment check
-\@ifpackageloaded{babel}{}{\pxbb at err@nobbl\endinput}
-\ifpxbb at switchfont \ifpxbb at otfmulti\else \ifpxbb at uptex\else
-    \pxbb at warn@nocjk \fi\fi\fi
+%% \ifpxbb at babel
+\newbool{pxbb at babel}
+\@ifpackageloaded{babel}{\pxbb at babeltrue}{}
 
-%%%% set caption language to 'default'
-\ifpxbb at switchcaption\else
-  \ifx\bx at bbl@captlang\@undefined
-    \bxcaptionlanguage{default}
-\fi\fi
+%% environment check
+% The feature 'switchfont' requires multi-CJK support.
+\ifpxbb at switchfont
+  \ifpxbb at otfmulti\else
+    \ifupTeX\else
+      \pxbb at warn@nocjk
+\fi\fi\fi
 
-%%------ language declarations
+%% resolve the expected main language
+\ifundef\pxbb at main@lang{%then
+  % if 'main' is not specified
+  \ifbool{pxbb at babel}%
+   % in separate loading, main is unchanged
+   {\let\pxbb at main@lang\bbl at main@language}%
+   % in lumped loading, main is the one specified last
+   {\let\pxbb at main@lang\pxbb at last@lang}%
+}{}
 
-%%%% \pxlanguagename{<langcode>}
-\def\pxlanguagename#1{\@nameuse{pxbb at LN/#1}}
+%% resolve the caption language setting
+\bxIfExpToEqual{\pxbb at caption@lang}{auto}{%then
+  % if 'caption=auto' is given
+  \bxIfcsundef{pxbb at triv/\pxbb at main@lang}
+   % if main is not triv then caption=switch
+   {\def\pxbb at caption@lang{switch}}%
+   % if main is triv then caption=default
+   {\def\pxbb at caption@lang{default}}%
+}{}
 
-%%%% declare languages
-\def\pxbb at decl@triv at lang#1{%
-  \edef\pxbb at arg{{\@nameuse{pxbb at LN/#1}}}%
-  \expandafter\pxbb at decl@triv at lang@a\pxbb at arg}
-\def\pxbb at decl@triv at lang@a#1{%
-  \expandafter\ifx\csname date#1\endcsname\relax
-    \bxTrivLangDef{#1}\fi}
-\pxbb at foreach@lang\pxbb at decl@triv at lang
-\pxbb at decl@triv at lang@a{cjkmulti}
-\ifx\pxbb at main\relax\else
-  \bxmainlanguage{\pxbb at main}\fi
-\@onlypreamble\pxb at decl@triv at lang
-\@onlypreamble\pxb at decl@triv at lang@a
+\ifx t\bxUseDebug
+\def\pxbb at bool#1{\ifbool{#1}{yes}{no}}
+\bxForEachIn\pxbb at cjk@langid at list\do{%
+\bxDebug{#1 = \@nameuse{pxbb at langname/#1}}}
+\bxDebug{main = \pxbb at main@lang}
+\bxDebug{caption = \pxbb at caption@lang}
+\bxDebug{switchfont = \pxbb at bool{pxbb at switchfont}}
+\bxDebug{load-list = \pxbb at lang@load at list}
+\bxDebug{last = \pxbb at last@lang}
+\bxDebug{babel = \pxbb at bool{pxbb at babel}}
+\bxDebug{otfmulti = \pxbb at bool{pxbb at otfmulti}}
+\fi
 
-\ifpxbb at otfmulti %====================== for OTF
-%%------ \UTF switch
+%--------------------------------------- lumped loading
+\ifpxbb at babel\else
 
-%%%% add \UTF switch to Babel \extras
+%% load Babel
+\let\pxbb at tmpa\pxbb at lang@load at list
+\ifx\pxbb at tmpa\@empty \def\pxbb at tmpa{english}\fi
+\edef\pxbb at tmpa{%
+  \noexpand\RequirePackage[\pxbb at tmpa]{babel}%
+}\pxbb at tmpa
+
+\fi
+%--------------------------------------- separate loading
+\ifpxbb at babel
+
+%% \pxbb at g@add at lang@proc
+\bxPreamble\let\pxbb at g@add at lang@proc\@empty
+\begingroup
+
+%% remove languages that are already loaded
+\let\pxbb at tmpa\@empty
+\bxForEachIn\pxbb at lang@load at list\do{%
+  \bxIfcsundef{date#1}{\appto\pxbb at tmpa{,#1}}{}}
+\bxChompComma\pxbb at tmpa
+\let\pxbb at lang@load at list\pxbb at tmpa
+\bxDebug{\pxbb at lang@load at list}
+
+%% if some language should be added...
+\ifx\pxbb at lang@load at list\@empty\else
+  \ifdef\bbl at load@language{%
+    \PackageWarning\pxbb at pkgname
+     {Some languages need to be added. Note that the\MessageBreak
+      process of addition is unreliable}%
+  }{%else
+    \PackageError\pxbb at pkgname
+     {Some languages need to be added, but the addition\MessageBreak
+      is not supported because Babel in use is too old}%
+     {The languages to be added will be ignored.\MessageBreak
+      \@ehc}}
+\fi
+
+%% build \pxbb at g@add at lang@proc
+\bxForEachIn\pxbb at lang@load at list\do{%
+  \csdef{pxbb at use/#1}{t}}
+\def\pxbb at babel@alias#1#2{%
+  \bxIfcsundef{pxbb at use/#1}{}{%else
+    % if the real name is available, then ok
+    \IfFileExists{#1.ldf}{}{%else
+      \csdef{pxbb at bbl@opt/#1}{\bbl at load@language{#2}}}}}
+\def\pxbb at babel@load at proc#1{%
+  \bxIfcsundef{pxbb at use/#1}{\@gobble}{%else
+    \csdef{pxbb at bbl@opt/#1}}}
+% the alias list
+\pxbb at babel@alias{acadian}{frenchb}
+\pxbb at babel@alias{afrikaans}{dutch}
+\pxbb at babel@alias{american}{english}
+\pxbb at babel@alias{australian}{english}
+\pxbb at babel@alias{austrian}{germanb}
+\pxbb at babel@alias{bahasa}{bahasai}
+\pxbb at babel@alias{bahasai}{bahasai}
+\pxbb at babel@alias{bahasam}{bahasam}
+\pxbb at babel@alias{brazil}{portuges}
+\pxbb at babel@alias{brazilian}{portuges}
+\pxbb at babel@alias{british}{english}
+\pxbb at babel@alias{canadian}{english}
+\pxbb at babel@alias{canadien}{frenchb}
+\pxbb at babel@alias{francais}{frenchb}
+\pxbb at babel@alias{french}{frenchb}
+\pxbb at babel@alias{german}{germanb}
+\pxbb at babel@alias{hungarian}{magyar}
+\pxbb at babel@alias{indon}{bahasai}
+\pxbb at babel@alias{indonesian}{bahasai}
+\pxbb at babel@alias{lowersorbian}{lsorbian}
+\pxbb at babel@alias{malay}{bahasam}
+\pxbb at babel@alias{melayu}{bahasam}
+\pxbb at babel@alias{meyalu}{bahasam}
+\pxbb at babel@alias{naustrian}{ngermanb}
+\pxbb at babel@alias{newzealand}{english}
+\pxbb at babel@alias{ngerman}{ngermanb}
+\pxbb at babel@alias{nynorsk}{norsk}
+\pxbb at babel@alias{portuguese}{portuges}
+\pxbb at babel@alias{russian}{russianb}
+\pxbb at babel@alias{UKenglish}{english}
+\pxbb at babel@alias{ukrainian}{ukraineb}
+\pxbb at babel@alias{uppersorbian}{usorbian}
+\pxbb at babel@alias{USenglish}{english}
+\pxbb at babel@load at proc{hebrew}{%
+  \input{rlbabel.def}\bbl at load@language{hebrew}}
+\pxbb at babel@load at proc{polutonikogreek}{%
+  \bbl at load@language{greek}\languageattribute{greek}{polutoniko}}
+
+%% load addtional languages
+\bxForEachIn\pxbb at lang@load at list\do{%
+  \gappto\pxbb at g@add at lang@proc{\def\CurrentOption{#1}}%
+  \bxIfcsundef{pxbb at bbl@opt/#1}%
+   {\gappto\pxbb at g@add at lang@proc{\bbl at load@language{#1}}}%
+   {\letcs\pxbb at tmpa{pxbb at bbl@opt/#1}%
+    \xappto\pxbb at g@add at lang@proc{\expandonce{\pxbb at tmpa}}}}
+\gappto\pxbb at g@add at lang@proc{\let\CurrentOption\@empty}
+
+\endgroup
+% dispatch
+\pxbb at g@add at lang@proc
+
+\fi
+%--------------------------------------- post-load process
+
+%% declare 'triv' languages
+\bxForEachIn\pxbb at cjk@langid at list\do{%
+  \bxWithArgFullExpd{\@nameuse{pxbb at langname/#1}}\do{%
+    \bxIfcsundefX{date##1}{\bxTrivLangDef{##1}}{}}}
+\ifundef\datecjkmulti{\bxTrivLangDef{cjkmulti}}{}
+
+%% set main language
+\setmainlanguage{\pxbb at main@lang}
+
+%% set caption language
+\bxIfExpToEqual{\pxbb at caption@lang}{switch}{}%else
+ {\bxProvideCaptionLanguage{\pxbb at caption@lang}}
+
+%--------------------------------------- Adding font switch to 'extra's
+
+\ifpxbb at otfmulti        %----<*otfmulti>
+
+%% add \UTF switch to Babel \extras
 \ifpxbb at switchfont
-\def\pxbb at addtoextras@otf#1{%
-  \edef\pxbb at arg{{\@nameuse{pxbb at LN/#1}}}%
-  \expandafter\pxbb at addtoextras@otf at a\pxbb at arg}
-\def\pxbb at addtoextras@otf at a#1#2{%
-  \expandafter\addto\csname extras#1\endcsname{%
-    \babel at save\UTF \let\UTF#2}}
+\bxPreamble\def\pxbb at addtoextras@otf#1{%
+  \pxbb at addtoextras@otf at a{\bxCsuseX{pxbb at langname/#1}}}
+\bxPreamble\def\pxbb at addtoextras@otf at a#1#2{%
+  \csappto{extras#1}{\babel at save\UTF \let\UTF#2}}
 \pxbb at addtoextras@otf{korean}{\UTFK}
 \pxbb at addtoextras@otf{schinese}{\UTFC}
 \pxbb at addtoextras@otf{tchinese}{\UTFT}
 \pxbb at addtoextras@otf at a{cjkmulti}{\UTFM}
-\@onlypreamble\pxbb at addtoextras@otf
-\@onlypreamble\pxbb at addtoextras@otf at a
 \fi % pxbb at switchfont
 
-\fi %=================================== end
+\fi                     %----</otfmulti>
 
-\ifupTeX %============================== for upTeX
-%%------ encoding switch according to NFSS
-\bxInputDefFile{pxbasenc}
+\ifupTeX                %----<*upTeX>
+
+%% preparations
+\bxRequireDefinition{pxbasenc}
 \pxBDHookEncSwitchOTF
 
-%%%% declarations for upTeX standatd CJK fonts
+%% declarations for upTeX standatd CJK fonts
 \ifpxbb at pxotf\else
 \pxDeclareBasicCJKEncoding{J20}{J30}% UniJIS
 \pxDeclareBasicCJKFamily{J20}{!upjpnrm-h}{!upjpngt-h}{*gt}{*gt}
@@ -130,19 +319,33 @@
 \pxDeclareBasicCJKFamily{J33}{!uptchrm-v}{!uptchgt-v}{*gt}{*gt}
 \fi
 
-%%%% add font switch to Babel \extras
+%--------------------------------------- add font switch to Babel \extras
 \ifpxbb at switchfont
-\def\pxbb at addtoextras#1#2#3{%
-  \edef\pxbb at arg{{\@nameuse{pxbb at LN/#1}}%
+
+%% \pxbb at set@full at ja@enc
+% Sets to \pxbb at ful@ja at enc the destination encoding.
+\bxForEachIn{J20,J24}\do{% all full japanese encodings
+  \csdef{pxbb at is@fje/#1}{t}}
+\edef\pxbb at dflt@ja at enc{% default full japanese encoding
+  \ifbool{pxbb at prefermmivjis}{J24}{J20}}
+\def\pxbb at set@full at ja@enc{%
+  \edef\pxbb at full@ja at enc{%
+    \bxIfcsundefX{pxbb at is@fje/\cy at encoding}%
+     {\pxbb at dflt@ja at enc}{\cy at encoding}}}
+
+%% \pxbb at addtoextras
+\bxPreamble\def\pxbb at addtoextras#1#2#3{%
+  \edef\pxbb at arg{{\@nameuse{pxbb at langname/#1}}%
    \if t#2{\noexpand\pxbb at full@ja at enc}{\noexpand\@undefined}%
    \else{#3}{t}\fi}%
   \expandafter\pxbb at addtoextras@a\pxbb at arg}
-\def\pxbb at addtoextras@a#1#2#3{%
-  \expandafter\addto\csname extras#1\endcsname{%
-    \pxbb at set@full at ja@enc \let\pxInNonJaLanguage=#3%
+\bxPreamble\def\pxbb at addtoextras@a#1#2#3{%
+  \csappto{extras#1}{%
+    \pxbb at set@full at ja@enc
+    \let\pxInNonJaLanguage=#3%
     \let\pxbb at org@encoding\cy at encoding
     \kanjiencoding{#2}\selectfont}%
-  \expandafter\addto\csname noextras#1\endcsname{%
+  \csappto{noextras#1}{%
     \let\pxInNonJaLanguage\@undefined
     \kanjiencoding{\pxbb at org@encoding}\selectfont}}
 \pxbb at addtoextras{japanese}{t}{}
@@ -149,23 +352,20 @@
 \pxbb at addtoextras{korean}{f}{J21}
 \pxbb at addtoextras{schinese}{f}{J22}
 \pxbb at addtoextras{tchinese}{f}{J23}
-\@onlypreamble\pxbb at addtoextras
-\@onlypreamble\pxbb at addtoextras@a
-%% \pxbb at set@full at ja@enc
-\edef\pxbb at dflt@ja at enc{\ifpxbb at prefermmixjis J24\else J20\fi}
-\@namedef{pxbb at SFJE/J20}{\def\pxbb at full@ja at enc{J20}}
-\@namedef{pxbb at SFJE/J24}{\def\pxbb at full@ja at enc{J24}}
-\def\pxbb at set@full at ja@enc{%
-  \let\pxbb at full@ja at enc\pxbb at dflt@ja at enc
-  \csname pxbb at SFJE/\cy at encoding\endcsname}
+
 \fi % pxbb at switchfont
 
-\fi %=================================== end
+\fi                     %----</upTeX>
 
-%%------ all done
+%--------------------------------------- Other user commands
+
+%%<*> \cjklanguagename{<lang_id>}
+% Expands to the babel language name for <lang_id>.
+\newcommand*\cjklanguagename[1]{%
+  \@nameuse{pxbb at langname/#1}}
+
+%--------------------------------------- all done
 \endinput
-%% EOF
-
 %
 %   Roman, H      Gothic, H     Roman, V      Gothic, H     : metric encod.
 %   ------------  ------------  ------------  ------------  : ------ --------
@@ -184,3 +384,4 @@
 % * upstsl-h      upstht-h      upstsl-v      upstht-v      : RAW    GB      
 %   uptchrm-h     uptchgt-h     uptchrm-v     uptchgt-v     : uptch  CNS     
 % * upmsl-h       upmhm-h       upmsl-v       upmhm-v       : RAW    CNS     
+%% EOF

Modified: trunk/Master/texmf-dist/tex/platex/pxbase/pxbase.def
===================================================================
--- trunk/Master/texmf-dist/tex/platex/pxbase/pxbase.def	2017-06-05 23:15:19 UTC (rev 44481)
+++ trunk/Master/texmf-dist/tex/platex/pxbase/pxbase.def	2017-06-05 23:15:32 UTC (rev 44482)
@@ -1,791 +1,7 @@
-%
-% pxbase.def
-%
-
-% Note: bxbase.def and pxbase.def provide same set of functionality.
-% To avoid version clash, when a version of one of them is loaded,
-% load of an older version of the other is aborted.
-
-%%%% stuffs read when \input'ed
-\ifx\bxbaseOk\undefined
-\bgroup
-\catcode`\@=11
-\gdef\bx at defextension{def}
-\gdef\bx at ver@#1{\expandafter\expandafter\expandafter\@parse at version
-  \csname ver@#1.\@currext\endcsname//00\@nil}
-  %% \bxInputDefFile{<def_name>}
-\gdef\bxInputDefFile#1{\@onefilewithoptions{#1}[][]\bx at defextension}
-  %% \bxCheckCPart{<def_name>}
-\gdef\bxCheckCPart#1{%
-  \@ifl at aded\@currext{#1}{%
-    \ifnum\bx at ver@{#1}>\bx at ver@\@currname \expandafter\endinput\fi}{}}
-\egroup
-\let\bxbaseOk=t
-\bxInputDefFile{pxbase}  %% read this file again
-\expandafter\endinput\fi
-
-%%--------------- folloing stuffs are read by \bxTnext
-
-%%%% file declaration
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{pxbase.def}[2010/06/15 v0.5 BX/PX base library]
-\bxCheckCPart{bxbase}
-%* v0.5.r13
-
-%%%% error messages
-\def\bx at b@pkgname{BX/PXbase} % bundle name
-\def\bx at b@error{\PackageError\bx at b@pkgname}
-\def\bx at err@nobbl{\bx at b@error{babel not yet loaded}\@eha}
-\def\bx at err@oorng{\bx at b@error{Number out of range}\@eha}
-\def\bx at err@nanbc{\bx at b@error{Non-BMP characters not supported}\@eha}
-\def\bx at err@ilnfm{\bx at b@error{Illegal number format}\@eha}
-\def\bx at err@uddrv#1{\bx at b@error{\string#1 is undefined}\@eha}
-
-%%%% common stuffs
-\ifx\bxUcv\@undefined
-\newcount\bxUcv       % argument of \bx at Ux
-\fi
-\newif\ifbxOk         % all-purpsoe switch
-\let\bxHex\relax      % result of \bxToHex...
-\let\bxRes\relax      % result of \bxToLower
-\edef\bx at b@resetcatcodes{% < ! " ' + ^ >
-  \catcode33=\the\catcode33\catcode34=\the\catcode34%
-  \catcode39=\the\catcode39\catcode43=\the\catcode43%
-  \catcode94=\the\catcode94\relax}
-\catcode33=12 \catcode34=12 \catcode39=12 \catcode43=12
-\catcode94=6
-
-%%------ Programming tools
-
-%%%% \bxNullify\CS
-% Make \CS void and unoverridable by \providecommand.
-\def\bxNullify#1{\global\let#1\bx at nullified}
-\def\bx at nullified{\@gobble\bx@@nullified}
-
-%%%% \bxDebug{<text>}
-% If \bxUseDebug is defined when bxbase is loaded, this command
-% prints debug messages; otherwise it is ignored.
-%\let\bx at typeout\typeout
-%\ifx\bxUseDebug\@undefined \let\bxDebug\@gobble
-%\else \def\bxDebug#1{\bx at typeout{BX debug: #1}}\fi
-\providecommand*\bxDebug{\@gobble}
-
-%%%% \bxCheckMA\CS <text> \bxEndCheckMA
-% If this construct appears in moving arguments, it expands to
-% an error message command.
-\def\bxCheckMA{\let\bx at chkma@a\bx at chkma@a\noexpand}
-\let\bxEndCheckMA\@empty \let\bx at chkma@z\relax
-\def\bx at chkma@a#1{\bx at chkma@z\relax\bx at chkma@b}
-\def\bx at chkma@b#1#2#3\bxEncCheckMA{\noexpand\bx at err@ivfrg#1#2}
-\def\bx at err@ivfrg#1{\bx at b@error{Cannot use \string#1 here}\@eha}
-
-%%------ TeX engine distinction
-
-%%%% \bxIfPrimitive\CS{<yes>}{<no>}
-% Checks if \CS is a primitive.
-\def\bxIfPrimitive#1{%
-  \edef\bx at tmpa{\string#1}\edef\bx at tmpb{\meaning#1}%
-  \ifx\bx at tmpa\bx at tmpb \expandafter\@firstoftwo
-  \else \expandafter\@secondoftwo \fi}
-
-%%%% \bxEngineTypeX / \bxEngineTypeY
-% Numbers that signify what I am.
-  % \bxEngineTypeX values
-\chardef\bxETTeX=0     % none of those
-\chardef\bxETpTeX=1    % pTeX-extended
-\chardef\bxETXeTeX=2   % XeTeX-extended
-\chardef\bxETOmega=3   % Omega-extended
-  % \bxEngineTypeY values (plus \bxETTeX)
-\chardef\bxETeTeX=1    % e-TeX-extended
-\chardef\bxETpdfTeX=3  % pdfTeX-extended
-  % (here old pdfTeX without e-TeX is ignored)
-  %
-\bxIfPrimitive\kansuji{\let\bxEngineTypeX\bxETpTeX}{%
-\bxIfPrimitive\XeTeXversion{\let\bxEngineTypeX\bxETXeTeX}{%
-\bxIfPrimitive\Omegaversion{\let\bxEngineTypeX\bxETOmega}{%
-  \let\bxEngineTypeX\bxETTeX}}}
-\bxIfPrimitive\eTeXversion{\let\bxEngineTypeY\bxETeTeX}{%
-\bxIfPrimitive\pdftexversion{\let\bxEngineTypeY\bxETpdfTeX}{%
-  \let\bxEngineTypeY\bxETTeX}}
-
-%%%% \bx at b@uptex
-\bxIfPrimitive\kchar{\chardef\bx at b@uptex\@ne}{\chardef\bx at b@uptex\z@}
-
-%%------ Babel something
-
-%%<+> \bxBDHookBabel
-% A begindocument-hook about Babel.
-\newif\ifbx at bbl@inuse
-\def\bx at bbl@bdhook{}
-\providecommand\bxBDHookBabel{\bx at bdhook@babel at do}
-\def\bx at bdhook@babel at do{%
-  \AtBeginDocument{%
-    \@ifpackageloaded{babel}{%
-      \bx at bbl@inusetrue
-      \ifx\bx at bbl@captlang\@undefined\else \bx at bbl@do at captlang \fi
-      \bx at bbl@bdhook
-    }{}}%
-  \bxNullify\bxBDHookBabel}
-\@onlypreamble\bxBDHookBabel
-\@onlypreamble\bx at bdhook@babel at do
-
-%%<+> \bxAtBeginDocumentBabel{<text>}
-% Register a begin-document hook that willl be invoked only when babel
-% is loaded.
-\def\bxAtBeginDocumentBabel{%
-  \g at addto@macro\bx at bbl@bdhook}
-\@onlypreamble\bxAtBeginDocumentBabel
-\@onlypreamble\bx at bbl@bdhook
-
-%%%% \bx at bbl@patch at sel@lang
-% A patch to \select at language that disables automatic switching of
-% caption language.
-\def\bx at bbl@patch at sel@lang{%  this wlll be never invoked twice
-  \global\let\bx at bbl@org at select@language\select at language
-  \gdef\select at language##1{%
-    \bx at bbl@copy{**C}{##1}\bx at bbl@copy{##1}{**Z}%
-    \bx at bbl@org at select@language{##1}\bx at bbl@copy{##1}{**C}}}
-\@onlypreamble\bx at bbl@patch at sel@lang
-
-%%%% \bx at bbl@do at captlang
-\def\bx at bbl@@main{main}
-\def\bx at bbl@@default{default}
-\def\bx at bbl@do at captlang{%
-  % set captions
-    \ifx\bx at bbl@captlang\bx at bbl@@main
-      \let\bx at bbl@captlang\bbl at main@language \fi
-    \ifx\bx at bbl@captlang\bx at bbl@@default
-    \else\expandafter\ifx\csname l@\bx at bbl@captlang\endcsname\relax
-      \@nolanerr\bx at bbl@captlang
-    \else \csname date\bx at bbl@captlang\endcsname
-          \csname captions\bx at bbl@captlang\endcsname
-    \fi\fi}
-\@onlypreamble\bx at bbl@do at captlang
-
-%%%% \bx at bbl@copy{<lang1>}{<lang2>}
-% Copies \captions... and \date... for save.
-\def\bx at bbl@copy#1#2{%
-  \bx at bbl@copy at a{#1}{#2}{captions}%
-  \bx at bbl@copy at a{#1}{#2}{date}}
-\def\bx at bbl@copy at a#1#2#3{%
-  \edef\bx at tmpa{\let\expandafter\noexpand\csname#3#1\endcsname
-    \expandafter\noexpand\csname#3#2\endcsname}\bx at tmpa}
-\@namedef{captions**Z}{\@empty}
-\@namedef{date**Z}{\@empty}
-
-%%<*> \bxcaptionlanguage{<lang>}
-% Change the caption language manually, with disabling automatic
-% switching on it.
-\def\bxcaptionlanguage#1{%
-  \@ifpackageloaded{babel}%
-   {\ifx\bx at bbl@captlang\@undefined \bx at bbl@patch at sel@lang \fi
-    \xdef\bx at bbl@captlang{#1}}%
-   {\bx at err@nobbl}}
-\@onlypreamble\bxcaptionlanguage
-
-%%<*> \bxmainlanguage{<lang>}
-% Changes the 'main' language (one that is effective at beginning).
-\def\bxmainlanguage#1{%
-  \expandafter\ifx\csname date#1\endcsname\relax
-    \@nolanerr{#1}\fi
-  \xdef\bbl at main@language{#1}}
-\@onlypreamble\bxmainlanguage
-
-%%<+> \bxTrivLangDef{<lang>}
-% Makes a fake language option.
-\def\bxTrivLangDef#1{%
-  \@ifundefined{date#1}{%
-    \@ifundefined{l@#1}%
-      {\expandafter\chardef\csname l@#1\endcsname\z@}{}%
-    \@namedef{date#1}{\relax}%
-    \@namedef{captions#1}{\relax}%
-    \@namedef{extras#1}{\relax}%
-    \@namedef{noextras#1}{\relax}%
-    \@namedef{date#1}{\relax}%
-  }{}}
-\@onlypreamble\bxTrivLangDef
-
-%%------ 'Number-to-hex-string' functions
-% All public commands put their result in \bxHex.
-
-%%%% preparation
-\newif\ifbx at hx@bigchar
-\ifnum\bxEngineTypeX>\@ne \bx at hx@bigchartrue \fi
-\ifnum\bx at b@uptex>\z@ \bx at hx@bigchartrue \fi
-
-%%<+> \bxToHexTiny
-% For one-to-two-digit hex strings.
-\def\bxToHexTiny#1{%
-  \chardef\bxHex=#1\relax
-  \expandafter\bx at hx@tohextiny at a\meaning\bxHex\@nil}
-\def\bx at hx@tohextiny at a#1"#2\@nil{\def\bxHex{#2}}
-
-%%<+> \bxToHexSmall
-% For one-to-three-digit hex strings.
-\def\bxToHexSmall#1{%
-  \mathchardef\bxHex=#1\relax
-  \expandafter\bx at hx@tohexsmall at a\meaning\bxHex\@nil}
-\def\bx at hx@tohexsmall at a#1"#2\@nil{\def\bxHex{#2}}
-
-%%<+> \bxToHexTwo
-% For zero-padded two-digit hex strings.
-\def\bxToHexTwo#1{%
-  \chardef\bxHex=#1\relax
-  \expandafter\bx at hx@tohextwo at a\meaning\bxHex"0\@nil}
-\def\bx at hx@tohextwo at a#1"#2#3#4#5\@nil{\bx at hx@tohextwo at b#2#3#4\@nil}
-\def\bx at hx@tohextwo at b#1"#2\@nil{\def\bxHex{#2#1}}
-
-%%<+> \bxToHexThree
-% For zero-padded three-digit hex strings.
-\def\bxToHexThree#1{%
-  \mathchardef\bxHex=#1\relax
-  \expandafter\bx at hx@tohexthree at a\meaning\bxHex"00\@nil}
-\def\bx at hx@tohexthree at a#1"#2#3#4#5#6\@nil{\bx at hx@tohexthree at b#2#3#4#5\@nil}
-\def\bx at hx@tohexthree at b#1"#2\@nil{\def\bxHex{#2#1}}
-
-%%<+> \bxToHexFour
-% For zero-padded four-digit hex strings.
-\ifbx at hx@bigchar    %----<*bigchar>
-\def\bxToHexFour#1{%
-  \chardef\bxHex=#1\relax
-  \expandafter\bx at hx@tohexfour at a\meaning\bxHex"000\@nil}
-\def\bx at hx@tohexfour at a#1"#2#3#4#5#6#7\@nil{\bx at hx@tohexfour at b#2#3#4#5#6\@nil}
-\def\bx at hx@tohexfour at b#1"#2\@nil{\def\bxHex{#2#1}}
-\else               %----<*!bigchar>
-\mathchardef\bx at hx@fzzz="4000
-\def\bxToHexFour#1{\bgroup
-  \@tempcnta=#1\relax\@tempcntb\@tempcnta\divide\@tempcntb\bx at hx@fzzz
-  \ifcase\@tempcntb \advance\@tempcnta\bx at hx@fzzz \or \or
-   \advance\@tempcnta-\bx at hx@fzzz \or \advance\@tempcnta-"8000 \or
-   \@tempcnta\z@ \fi
-  \mathchardef\bx at hx@tmp\@tempcnta
-  \expandafter\bx at hx@tohexfour at a\meaning\bx at hx@tmp\@nil
-  \egroup \let\bxHex\bx at hx@gtmp}
-\def\bx at hx@tohexfour at a#1"#2#3\@nil{%
-  \expandafter\let\expandafter\bx at hx@tmp
-   \csname bxhx at X/\the\@tempcntb#2\endcsname
-  \ifx\bx at hx@tmp\relax \bx at err@oorng \global\let\bx at hx@gtmp\@empty
-  \else \xdef\bx at hx@gtmp{\bx at hx@tmp#3}\fi}
-\def\bx at hx@nxt#1#2#3{\bgroup\catcode`#3=12
-  \global\expandafter\def\csname bxhx at X/#1#2\endcsname{#3}\egroup}
-\@for\bx at hx@tmp:={040,051,062,073,144,155,166,177,248,259,26A,27B,%
-  34C,35D,36E,37F}\do{\expandafter\bx at hx@nxt\bx at hx@tmp}
-\fi                 %----</bigchar>
-
-%%<+> \bxToHexFive
-%%<+> \bxToHexFiveX
-% For zero-padded five-digit hex strings.
-\def\bxToHexFive{\bx at tohexfive@aa\relax}
-\def\bxToHexFiveX{\bx at tohexfive@aa
-  {\ifnum\@tempcnta>\bx at hx@vdmax \@tempcnta=\bx at hx@vdmax\fi}}
-\ifbx at hx@bigchar    %----<*bigchar>
-\chardef\bx at hx@vdmax="FFFFF
-\def\bx at tohexfive@aa#1#2{%
-  {\@tempcnta=#2\relax#1\global\chardef\bx at hx@gtmp=\@tempcnta}%
-  \expandafter\bx at hx@tohexfivex at a\meaning\bx at hx@gtmp"0000\@nil}
-\def\bx at hx@tohexfivex at a#1"#2#3#4#5#6#7#8\@nil{%
-  \bx at hx@tohexfivex at b#2#3#4#5#6#7\@nil}
-\def\bx at hx@tohexfivex at b#1"#2\@nil{\edef\bxHex{#2#1}}
-\else               %----<*!bigchar>
-\edef\bx at hx@vdmax{"FFFFF\space}
-\def\bx at tohexfive@aa#1#2{%
-  \bgroup \@tempcnta=#2\relax#1%
-    \@tempcntb=\@tempcnta \divide\@tempcnta\bx at hx@m\relax
-    \bxToHexTwo\@tempcnta \let\bx at hx@tmp\bxHex
-    \multiply\@tempcnta-\bx at hx@m\advance\@tempcnta\@tempcntb\relax
-    \bxToHexThree\@tempcnta \xdef\bx at hx@gtmp{\bx at hx@tmp\bxHex}%
-  \egroup \let\bxHex\bx at hx@gtmp}
-\fi                 %----</bigchar>
-
-%%<+> \bxToHexEight
-% For zero-padded eight-digit hex strings.
-\def\bxToHexEight#1{%
-  \bgroup \@tempcnta=#1\relax
-    \@tempcntb=\@tempcnta\divide\@tempcnta\p@\relax
-    \bxToHexFour\@tempcnta \let\bx at hx@tmp\bxHex
-    \multiply\@tempcnta-\p@\advance\@tempcnta\@tempcntb\relax
-    \bxToHexFour\@tempcnta \xdef\bx at hx@gtmp{\bx at hx@tmp\bxHex}%
-  \egroup \let\bxHex\bx at hx@gtmp}
-
-%%<+> \bxToHexUC
-% For zero-padded four-to-six-digit hex strings.
-\ifbx at hx@bigchar    %----<*bigchar>
-\def\bxToHexUC#1{%
-  \chardef\bxHex=#1\relax
-  \expandafter\bx at hx@tohexuc at a\meaning\bxHex"\@empty\@empty000\@nil}
-\def\bx at hx@tohexuc at a#1"#2#3#4#5#6#7#8#9\@nil{%
-  \bx at hx@tohexuc at b#2#3#4#5#6#7#8\@nil}
-\def\bx at hx@tohexuc at b#1"#2\@nil{\edef\bxHex{#2#1}}
-\else               %----<*!bigchar>
-\mathchardef\bx at hx@m="1000
-\def\bxToHexUC#1{%
-  \bgroup \@tempcnta=#1\relax
-    \@tempcntb=\@tempcnta \divide\@tempcnta\bx at hx@m\relax
-    \bxToHexSmall\@tempcnta \let\bx at hx@tmp\bxHex
-    \multiply\@tempcnta-\bx at hx@m\advance\@tempcnta\@tempcntb\relax
-    \bxToHexThree\@tempcnta \xdef\bx at hx@gtmp{\bx at hx@tmp\bxHex}%
-  \egroup \let\bxHex\bx at hx@gtmp}
-\fi                 %----</bigchar>
-
-%%<+> \bxToDecFour
-\def\bxToDecFour#1{%
-  \expandafter\bx at hx@todecfour at a\number#1"000\@nil}
-\def\bx at hx@todecfour at a#1#2#3#4#5#6\@nil{\bx at hx@todecfour at b#1#2#3#4#5\@nil}
-\def\bx at hx@todecfour at b#1"#2\@nil{\def\bxHex{#2#1}}
-
-%%<+> \bxToDecFive
-\def\bxToDecFive#1{%
-  \expandafter\bx at hx@todecfive at a\number#1"0000\@nil}
-\def\bx at hx@todecfive at a#1#2#3#4#5#6#7\@nil{\bx at hx@todecfive at b#1#2#3#4#5#6\@nil}
-\def\bx at hx@todecfive at b#1"#2\@nil{\def\bxHex{#2#1}}
-
-%%------ Input through code values
-
-%%<+> \bxBDHookUnicode
-% A begindocument-hook about Unicode (& CID) input.
-\providecommand\bxBDHookUnicode{\bx at bdhook@unicode at do}
-\def\bx at bdhook@unicode at do{%
-  \AtBeginDocument{\bx at assign@Ux}%
-  \bxNullify\bxBDHookUnicode}
-\@onlypreamble\bxBDHookUnicode
-\@onlypreamble\bx at bdhook@unicode at do
-
-%%<+> \bxBDHookJisInput
-% A begindocument-hook about JIS-code input.
-\providecommand\bxBDHookJisInput{\bx at bdhook@jisinput at do}
-\def\bx at bdhook@jisinput at do{%
-  \AtBeginDocument{\bx at assign@JI}%
-  \bxNullify\bxBDHookJisInput}
-\@onlypreamble\bxBDHookJisInput
-\@onlypreamble\bx at bdhook@jisinput at do
-
-%%<+> \bxFallbackSym
-\def\bxFallbackSym#1{\leavevmode\bx at fbs@fnt{\dimen@=\bx at junit\relax
-  \hb at xt@\dimen@{\hss\vrule\@width\z@\@height.88\dimen@\@depth.12\dimen@
-  \frame{\lower.04\dimen@\hb at xt@.84\dimen@{\hss\vbox to.84\dimen@{\vss
-  \hsize=.84\dimen@\baselineskip\z@\lineskip.01\dimen@\parskip\z at skip
-  \leftskip\@flushglue\rightskip\@flushglue\parfillskip\z at skip
-  \parindent\z@\let\\\bx at fbs@c\leavevmode\let\sml=\bx at fbs@fs\bx at fbs@f
-  #1\unskip\par\vss}\hss}}\hss}}}
-\edef\bx at junit{\ifnum\bxEngineTypeX=\@ne 1zw\else 1em\fi}
-\def\bx at fbs@c{\unskip\par\ignorespaces}
-\def\bx at fbs@fnt{\global\let\bx at fbs@fnt\relax
-  \global\font\bx at fbs@fs=phvr at 2.4pt
-  \global\font\bx at fbs@f=phvr at 3.6pt}
-
-%%<+> \bxCodeValueSeq\CS{<text>}
-% Dispatcher for code value sequences.
-\def\bxCodeValueSeq{%
-  \let\bx at cvseq@branch\bx at cvseq@branch at hex
-  \bx at cvseq@a}
-\def\bx at cvseq@a#1#2{%
-  {\catcode33=12%
-   \xdef\bx at gtmpa{\uppercase{\def\noexpand\bx at tmpa{#2}}}}%
-  \let\bx at cvseq@do=#1\bx at gtmpa\relax
-  \expandafter\bx at cvseq@b\bx at tmpa,!\@nil}
-\def\bx at cvseq@b{\futurelet\bx at toka\bx at cvseq@branch}
-\def\bx at cvseq@branch at hex{%
-  \if      !\bx at toka \let\bx at nxt\bx at cvseq@fin
-  \else\if "\bx at toka \let\bx at nxt\bx at cvseq@pfx
-  \else\if '\bx at toka \let\bx at nxt\bx at cvseq@pfx
-  \else\if +\bx at toka \let\bx at nxt\bx at cvseq@pfx
-  \else \let\bx at nxt\bx at cvseq@hex \fi\fi\fi\fi
-  \bx at nxt}
-\def\bx at cvseq@pfx{%
-  \afterassignment\bx at cvseq@post \bxUcv=}
-\def\bx at cvseq@hex{%
-  \afterassignment\bx at cvseq@post \bxUcv="0}
-\def\bx at cvseq@post#1{%
-  \if ,#1\expandafter\bx at cvseq@post at a
-  \else \bx at err@ilnfm \expandafter\bx at cvseq@fin \fi}
-\def\bx at cvseq@post at a{%
-  \bx at cvseq@do \bx at cvseq@b}
-\def\bx at cvseq@fin#1\@nil{}
-
-%%<+> \bxCodeValueSeqD\CS{<text>}
-% Same as \bxCodeValueSeq, except that it defaults to decimal.
-\def\bxCodeValueSeqD{%
-  \let\bx at cvseq@branch\bx at cvseq@branch at dec \bx at cvseq@a}
-\def\bx at cvseq@branch at dec{%
-  \if      !\bx at toka \let\bx at nxt\bx at cvseq@fin
-  \else    \let\bx at nxt\bx at cvseq@pfx \fi
-  \bx at nxt}
-
-%%<+> \bxUx, \bxUI, \bxAJ, \bxJI, \bxKI
-% The prefixed names for \Ux, etc. They are (more likely to be)
-% collision-safe.
-\let\bxUx\relax
-\DeclareRobustCommand*\bxUx{\bxCodeValueSeq\bx at Ux}
-\let\bxUI\relax
-\DeclareRobustCommand*\bxUI{\bxCodeValueSeq\bx at UI}
-\let\bxAJ\relax
-\DeclareRobustCommand*\bxAJ{\bxCodeValueSeqD\bx at AJ}
-\let\bxJI\relax
-\DeclareRobustCommand*\bxJI{\bxCodeValueSeq\bx at JI}
-\let\bxKI\relax
-\DeclareRobustCommand*\bxKI{\bxCodeValueSeqD\bx at KI}
-
-%%<+> \bxUHex{<value>}, \bxUInt{<value>}
-% Alternative entry points for \Ux. The code value is specified in
-% hexadecimal (\bxUHex) / decimal (\bxUInt) numerals.
-\def\bxUHex{\protect\bx at Uxh}
-\def\bxUqInt{\protect\bx at UInt}
-\def\bx at UInt#1{\bxUcv=#1\relax\bx at Ux}
-
-%% \bx at UIh@fb, \bx at AJ@fb
-\def\bx at UIh@fb#1{\bxUcv="#1\relax\bxToHexFive\bxUcv
-  \expandafter\bx at b@fb at five\bxHex[Ux]}
-\def\bx at AJ@fb{\bxToDecFive\bxUcv
-  \expandafter\bx at b@fb at five\bxHex[AJ]}
-\def\bx at JI@fb{\bxToHexFour\bxUcv
-  \expandafter\bx at b@fb at four\bxHex[JI]}
-\def\bx at KI@fb{\bxToDecFive\bxUcv
-  \expandafter\bx at b@fb at five\bxHex[KI]}
-\def\bx at b@fb at five#1#2#3#4#5#6[#7]{%
-  \bxFallbackSym{{\sml#7}\\\bx at hx@supzero#1#2#3\\#4#5}}
-\def\bx at b@fb at four#1#2#3#4#5[#6]{%
-  \bxFallbackSym{{\sml#6}\\#1#2\\#3#4}}
-\def\bx at hx@supzero#1{\ifx0#1\else\expandafter#1\fi}
-
-%%%% \bx at assign@Ux
-% Picks up appropriate drivers \bx at Ux etc. according to current
-% load-states of packages.
-% [driver]  [purpose]      [argument]    [default]
-% \bx at Ux    Unicode        \bxUcv        go to \bx at UI
-% \bx at Uxh   Unicode        #1(hex)       go to \bx at UIh
-% \bx at UI    Unicode-ideo.  \bxUcv        go to \bx at UIh
-% \bx at UIh   Unicode-ideo.  #1(hex)       fallback
-% \bx at AJ    Adobe-Japan1   \bxUcv        fallback
-% From the default value it can be said:
-%  - Implemetations for \bx at Ux(h) must fallback on \bx at UI(h) when
-%    they cannot be handle the given character, unless such fallback
-%    is known to be useless.
-%  - When you implement one of \bx at Ux or \bx at Uxh, then you must also
-%    implement the other.
-%  - When you implement \bx at UI, then you must also implement \bx at UIh.
-%    (But you can implement only \bx at UIh.)
-  % Initial values
-\def\bx at Ux{\bx at UI}          % pass to \bx at UI
-\def\bx at Uxh{\bx at UIh}        % pass to \bx at UIh
-\def\bx at UI{\bxToHexUC\bxUcv\bx at UIh\bxHex} % pass to \bx at UIh
-\let\bx at UIh\bx at UIh@fb       % 'fallback' driver
-\let\bx at AJ\bx at AJ@fb         % 'fallback' driver
-  % some helpers
-  % one more step put so that \UTF could be redefined
-\def\bx at UIh@otf{\UTF}
-  % \UMS with the argument expanded
-\def\bx at UIh@ums#1{\expandafter\UMS\expandafter{#1}}
-  % \CID with \bxUcv
-\def\bx at AJ@otf{\CID\bxUcv}
-\def\bx at assign@Ux{%
-  % If I have bxucs, then set \bx at Ux to \bx at Ux@ucs
-  % (which fallbacks on \bx at UI in failure).
-  \@ifpackageloaded{bxucs}{%
-    \let\bx at Ux\bx at Ux@ucs\let\bx at Uxh\bx at Uxh@ucs}{}%
-  % If I have ums or bxsuika then I use \UMS as \bx at UIh driver.
-  \@ifpackageloaded{ums}{\bxOktrue}{\bxOkfalse}
-  \@ifpackageloaded{bxsuika}{\bxOktrue}{}
-  \ifbxOk \let\bx at UIh\bx at UIh@UMS \fi
-  % If I have utf or otf then I use \UTF as \bx at UIh driver.
-  \@ifpackageloaded{utf}{\bxOktrue}{\bxOkfalse}
-  \@ifpackageloaded{otf}{\bxOktrue}{}
-  \ifbxOk \let\bx at UIh\bx at UIh@otf \let\bx at AJ\bx at AJ@otf \fi
-  % pxotf is same as otf, except that it also provides a direct
-  % way to \bx at UI and \bx at AJ.
-  \@ifpackageloaded{pxotf}{%
-    \let\bx at UIh\bxUIh at otf \let\bx at UI\pxUcvUTF \let\bx at AJ\pxUcvCID}{}%
-  % If I am upTeX I use \kchar.
-  \ifnum\bx at b@uptex>\z@
-    \def\bx at UI{\kchar\bxUcv}\def\bx at UIh##1{\kchar"##1\relax}%
-  % If I am a Unicode-aware engine, then...
-  \else\ifnum\bxEngineTypeX>\@ne % 
-    \def\bx at UI{\char\bxUcv}\def\bx at UIh##1{\char"##1\relax}%
-    \let\bx at Ux\bx at UI \let\bx at Uxh\bx at UIh
-    % zxjatype provides better handling of \UI & \Ux.
-    \@ifpackageloaded{zxjatype}{%
-      \let\bx at UI\zxjt at UI \let\bx at UIh\zxjt at UIh
-      \let\bx at Ux\zxjt at Ux \let\bx at Uxh\zxjt at Uxh}{}%
-    % zxotf provides \CID comamnd.
-    \@ifpackageloaded{zxotf}{%
-      \def\bx at AJ{\CID\bxUcv}}{}%
-  \fi\fi
-  % If \bx at UIh@usr is known I use it.
-  \ifx\bx at UIh@usr\@undefined\else \let\bx at UIh\bx at UIh@usr \fi
-  \let\bx at setuidriver@a\bx at setuidriver@b
-  \ifx\bx at AJ@usr\@undefined\else \let\bx at AJ\bx at AJ@usr \fi
-  \let\bx at setajdriver@a\bx at setajdriver@b
-}
-\@onlypreamble\bx at assign@Ux
-
-%%%% \setUIdriver\CS
-\def\setUIdriver#1{%
-  \ifx#1\@undefined \bx at err@uddrv#1%
-  \else \bx at setuidriver@a#1\fi}
-\def\bx at setuidriver@a#1{\let\bx at UIh@usr#1}
-\def\bx at setuidriver@b#1{\let\bx at UIh#1}
-
-%%%% \setAJdriver\CS
-\def\setAJdriver#1{%
-  \ifx#1\@undefined \bx at err@uddrv#1%
-  \else \bx at setajdriver@a#1\fi}
-\def\bx at setajdriver@a#1{\let\bx at AJ@usr#1}
-\def\bx at setajdriver@b#1{\let\bx at AJ#1}
-
-%%%% \bx at assign@JI
-% Picks up appropriate drivers \bx at JI etc.
-% [driver]  [purpose]      [argument]    [default]
-% \bx at JI    JIS-code       \bxUcv        fallback
-% \bx at KI    Kuten-code     \bxUcv        fallback
-\def\bx at JI{\bx at JI@fb}
-\def\bx at KI{\bx at KI@fb}
-\def\bx at assign@JI{%
-  % \JI & \KI are available only in (u)pTeX
-  \ifnum\bxEngineTypeX=\@ne
-    \def\bx at JI{\char\jis\bxUcv\relax}\let\bx at KI\bx at KI@pTeX
-  \fi
-}
-\ifnum\bxEngineTypeX=\@ne     %----<*pTeX>
-%% \bx at KI@pTeX
-  % \KI{2????} (0213 plane 2) works only when kanji-internal=sjis
-\mathchardef\bx at ki@max=\ifnum\jis"2121="8140 30000\else 20000\fi\relax
-\mathchardef\bx at ki@myr=10000
-\mathchardef\bx at ki@bas="2020
-\let\bx at ki@char=\char
-\ifx\kchar\@undefined\else \let\bx at ki@char=\kchar \fi
-\def\bx at KI@pTeX{%
-  \ifnum\bxUcv<\bx at ki@max\else \bxUcv=\z@ \fi
-  \ifnum\bxUcv<\bx at ki@myr \advance\bxUcv\bx at ki@myr \fi
-  \expandafter\bx at ki@ptex at a\the\bxUcv\@nil
-  \bx at ki@char\jis\bxUcv\relax}
-\bgroup \@tempcnta=94
-  \@for\bx at tmpa:=01,08,03,04,05,12,13,14,15\do{\advance\@tempcnta\@ne
-    \expandafter\xdef\csname bx at JSH/\bx at tmpa\endcsname{\the\@tempcnta}}
-  \@tempcntb=77 \loop
-    \advance\@tempcnta\@ne \advance\@tempcntb\@ne
-    \expandafter\xdef\csname bx at JSH/\the\@tempcntb\endcsname
-     {\the\@tempcnta}%
-  \ifnum\@tempcntb<94 \repeat
-\egroup
-\def\bx at ki@ptex at a#1#2#3#4#5#6\@nil{%
-  \ifnum#1=\@ne \bxUcv=#2#3\relax
-  \else \bxUcv=0\csname bx at JSH/#2#3\endcsname\relax \fi
-  \multiply\bxUcv\@cclvi \advance\bxUcv#4#5\relax
-  \advance\bxUcv\bx at ki@bas}
-\fi                           %----</pTeX>
-\@onlypreamble\bx at assign@JI
-
-%%------ Assignment check
-
-%%%% \bxAssign <assignment>\relax
-\def\bxAssign{%
-  \bxOkfalse\afterassignment\bx at b@assign at a}
-\def\bx at b@assign at a#1\relax{%
-  \def\bx at tmpa{#1}\ifx\bx at tmpa\@empty\bxOktrue\fi}
-
-%%------ Case conversion
-
-%%%% \bxToLower{<string>}
-% Sets to \bxRes <string> converted to lowercase.
-\def\bxToLower#1{%
-  \edef\bxRes{\lowercase{\def\noexpand\bxRes{#1}}}\bxRes}
-
-%%%% \bxToUpper{<string>}
-\def\bxToUpper#1{%
-  \edef\bxRes{\uppercase{\def\noexpand\bxRes{#1}}}\bxRes}
-
-%%------ Document-level specials
-% Such specials must come before any typeset commands in DVI.
-
-%%%% \bxDocumentSpecial{<text>}
-% Appends \special{<text>} to the list of 'document-level specials'.
-% A simple use of \AtBeginDvi will do in this case.
-\def\bxDocumentSpecial#1{%
-  \AtBeginDvi{\special{#1}}}
-\@onlypreamble\bxDocumentSpecial
-
-%%%% \bxDocumentSpecialUrgent{<text>}
-% Similar to the above, but it demands that the given special be
-% placed as early as possible.
-\def\bxDocumentSpecialUrgent#1{%
-  \bx at docspec@urgent at init
-  \bx at prepend@box\bx at dsu@box{\special{#1}}}
-\def\bx at prepend@box#1#2{%
-  \global\setbox#1\vbox{#2\unvbox#1}}
-\providecommand\bx at docspec@urgent at init{\bx at docspec@urgent at init@do}
-\def\bx at docspec@urgent at init@do{%
-  \newbox\bx at dsu@box
-  \AtBeginDocument{%
-    \ifx\AtBeginShipoutFirst\@undefined
-      \bx at prepend@box\@begindvibox{\unvbox\bx at dsu@box}%
-    \else % 'atbegshi' package is in use
-      {\toks@{\unvbox\bx at dsu@box}%
-       \toks\tw@\expandafter{\AtBegShi at HookFirst}%
-       \xdef\AtBegShi at HookFirst{\the\toks@\the\toks\tw@}}
-    \fi}%
-  \bxNullify\bx at docspec@urgent at init}
-\@onlypreamble\bxDocumentSpecialUrgent
-\@onlypreamble\bx at docspec@urgent at init
-\@onlypreamble\bx at docspec@urgent at init@do
-
-%%%% \recordpapersize
-\def\recordpapersize{%
-  \bxDocumentSpecial{papersize=\the\paperwidth,\the\paperheight}%
-  \bxNullify\recordpapersize}
-\@onlypreamble\recordpapersize
-
-%%<*> \dvipdfmxmapline{<text>}
-%%<*> \dvipdfmxmapfile{<text>}
-\def\dvipdfmxmapline#1{\bxDocumentSpecial{pdf:mapline #1}}
-\@onlypreamble\dvipdfmxmapline
-\def\dvipdfmxmapfile#1{\bxDocumentSpecial{pdf:mapfile #1}}
-\@onlypreamble\dvipdfmxmapfile
-
-%%----- "safe-caret" module
-\newif\ifbx at acr@ok
-\newif\ifbx at acr@needed \bx at acr@neededfalse
-\newif\ifbx at safecaret \bx at safecaretfalse
-\catcode`\^=13
-
-%%%%<*> \safecaret
-\def\safecaret{%
-  \bx at safecarettrue}
-\@onlypreamble\safecaret
-
-%%%% \bxEnableSafeCaret
-\def\bxEnableSafeCaret{%
-  \bx at acr@neededtrue}
-\@onlypreamble\bxEnableSafeCaret
-
-%%%% \bx at acr@defbytes
-\def\bx at acr@defbytes{%
-  \bgroup\@tempcnta128\lccode`\Z=`\B\catcode`\^\active
-    \@whilenum\@tempcnta<256 \do{%
-      \lccode`\^\@tempcnta \chardef\bx at acr@tok\@tempcnta
-      \expandafter\bx at acr@defbytes at do@a\meaning\bx at acr@tok\@nil
-      \advance\@tempcnta\@ne}\egroup}
-\def\bx at acr@defbytes at do@a#1"#2\@nil{% name is bx at acr@B/ab etc.
-  \lowercase{\expandafter\gdef\csname bx at acr@Z/#2\endcsname{^}}}
-\@onlypreamble\bx at acr@defbytes
-\@onlypreamble\bx at acr@defbytes at do@a
-
-%%%% \bx at acr@caret
-%% This command should be \let'd to active <^>.
-\def\bx at acr@caret{%
-  \let\bx at acr@out\@empty \bx at acr@caret at a}
-\def\bx at acr@caret at a{%
-  \bx at acr@nextcaret{\bx at acr@caret at b}{\bx at acr@finish{\bx at acr@nxc}}}
-\def\bx at acr@caret at b#1{%
-  \let\bx at acr@hex\@empty
-  \bx at acr@nexthexdgt{\bx at acr@caret at c}{\bx at acr@finish{\bx at acr@nxdc}}}
-\def\bx at acr@caret at c#1{%
-  \edef\bx at acr@hex{#1}%
-  \bx at acr@nexthexdgt{\bx at acr@caret at d}{\bx at acr@finish{\bx at acr@nxdc\bx at acr@hex}}}
-\def\bx at acr@caret at d#1{%
-  \edef\bx at acr@hex{\bx at acr@hex#1}%
-  \expandafter\bx at acr@caret at e\csname bx at acr@B/\bx at acr@hex\endcsname
-  \bx at acr@ifok{\bx at acr@nextcaret{\bx at acr@caret at g}{\bx at acr@finish{}}}%
-    {\bx at acr@finish{\bx at acr@nxdc\bx at acr@hex}}}
-\def\bx at acr@caret at e#1{%
-  \ifx#1\relax \bx at acr@okfalse
-  \else \bx at acr@oktrue \expandafter\bx at acr@caret at f#1\fi}
-\def\bx at acr@caret at f#1{%
-  \expandafter\def\expandafter\bx at acr@out\expandafter{\bx at acr@out#1}}
-\def\bx at acr@caret at g#1{\bx at acr@caret at a}
-\def\bx at acr@nxc{\noexpand^}
-\def\bx at acr@nxdc{\noexpand^\noexpand^}
-\def\bx at acr@nextcaret#1#2{%
-  \def\bx at acr@tmpa{#1}\def\bx at acr@tmpb{#2}%
-  \futurelet\bx at acr@tok\bx at acr@nextcaret at a}
-\def\bx at acr@nextcaret at a{%
-  \let\bx at acr@nxt\bx at acr@tmpb
-  \ifx^\bx at acr@tok \let\bx at acr@nxt\bx at acr@tmpa
-  \fi \bx at acr@nxt}
-\def\bx at acr@nexthexdgt#1#2{%
-  \def\bx at acr@tmpa{#1}\def\bx at acr@tmpb{#2}%
-  \futurelet\bx at acr@tok\bx at acr@nexthexdgt at a}
-\def\bx at acr@nexthexdgt at a{%
-  \let\bx at acr@nxt\bx at acr@tmpb
-  \ifcat @\noexpand\bx at acr@tok \let\bx at acr@nxt\bx at acr@tmpa \fi
-  \ifcat "\noexpand\bx at acr@tok \let\bx at acr@nxt\bx at acr@tmpa \fi
-  \bx at acr@nxt}
-\def\bx at acr@ifok{%
-  \ifbx at acr@ok \expandafter\@firstoftwo \else \expandafter \@secondoftwo \fi}
-\def\bx at acr@finish#1{%
-  \edef\bx at acr@nxt{#1}%
-  \ifx\bx at acr@out\@empty \bx at acr@oktrue \else \bx at acr@okfalse \fi
-  \bx at acr@ifok{\expandafter\bx at acr@finish at a\bx at acr@nxt\@nil}%
-    {\expandafter\bx at acr@out\bx at acr@nxt}}
-\def\bx at acr@finish at a#1#2\@nil{%
-    % replace first ^ with normal one to avoid loop
-  \bx at acr@normcaret #2}
-\let\bx at acr@normcaret\sp % this does not mean much
-
-%%%% \bx at acr@initialize
-\def\bx at acr@initialize{%
-  \bx at acr@defbytes}
-\@onlypreamble\bx at acr@initialize
-
-%%%% \bx at acr@annihilate
-\def\bx at acr@annihilate{%
-  \let\bx at acr@caret\relax\let\bx at acr@caret at a\relax
-  \let\bx at acr@caret at b\relax\let\bx at acr@caret at c\relax
-  \let\bx at acr@caret at d\relax\let\bx at acr@caret at e\relax
-  \let\bx at acr@caret at f\relax\let\bx at acr@caret at g\relax
-  \let\bx at acr@nextcaret\relax\let\bx at acr@nextcaret at a\relax
-  \let\bx at acr@nexthexdgt\relax\let\bx at acr@nexthexdgt at a\relax
-  \let\bx at acr@finish\relax\let\bx at acr@finish at a\relax}
-\@onlypreamble\bx at acr@annihilate
-
-%%%% \bx at acr@babel at hookcaret
-\def\bx at acr@babel at hookcaret{%
-  \expandafter\ifx\csname active at char\string^\endcsname\relax\else
-    \declare at shorthand\system at group{^}{\bx at acr@caret}%
-    \let\bx at acr@normcaret\bx at acr@babel at normcaret
-    \bxEnableSafeCaret \fi}
-\@onlypreamble\bx at acr@babel at hookcaret
-\edef\bx at acr@babel at normcaret{%
-  \expandafter\noexpand\csname normal at char\string^\endcsname}
-
-%%%% \bx at acr@verbatim at hookcaret
-\def\bx at acr@verbatim at hookcaret{%
-  \g at addto@macro\@noligs{\catcode`\^\active\let^\bx at acr@caret
-    \let\bx at acr@normcaret\bx at acr@verb at normcaret}%
-  \bxEnableSafeCaret}
-\begingroup \catcode`\^=12
-\global\let\bx at acr@verb at normcaret=^\endgroup
-\@onlypreamble\bx at acr@verbatim at hookcaret
-
-%%%% begin-document hook
-\providecommand*\bxBDHookSafeCaret{\bx at bdhook@safecaret at do}
-\def\bx at bdhook@safecaret at do{%
-  \AtBeginDocument{%
-  %% function activated by '\safecaret'
-  \ifbx at safecaret
-    \@ifpackageloaded{babel}{\bx at acr@babel at hookcaret}{}%
-    \bx at acr@verbatim at hookcaret
-  \fi
-  %% initialize or annihilate...
-  \ifbx at acr@needed \bx at acr@initialize
-  \else \bx at acr@annihilate \fi
-  \let\bxEnableSafeCaret\@undefined}%
-  \bxNullify\bxBDHookSafeCaret}
-\@onlypreamble\bx at bdhook@safecaret at do
-
-\catcode`\^=6
-%%------ "shadow map" module
-
-%%%% \bxUseShadowMap\CS{<map_tfm>}
-\def\bxUseShadowMap#1#2{%
-  \global\font#1=#2\relax}
-
-%%%% \bxMap\CS
-\mathchardef\bx at m@cc=256
-\def\bxMap#1{\begingroup\count@\bxUcv\divide\count@\bx at m@cc
-  \chardef\bx at m@hb\count@ \multiply\count@\bx at m@cc
-  \advance\bxUcv-\count@ \setbox\z@\hbox{#1\bx at m@hb\char\bxUcv}%
-  \global\bxUcv\wd\z@ \endgroup}
-
-%%------ all done
-\bx at b@resetcatcodes \let\bx at nxt\relax
-\endinput
+%%
+%% This is file 'pxbase.def'.
+%%
+\PackageError{pxbase}%
+ {pxbase.def should no longer be read}%
+ {The current BX/PXbase package does not need the file.}
 %% EOF

Modified: trunk/Master/texmf-dist/tex/platex/pxbase/pxbase.sty
===================================================================
--- trunk/Master/texmf-dist/tex/platex/pxbase/pxbase.sty	2017-06-05 23:15:19 UTC (rev 44481)
+++ trunk/Master/texmf-dist/tex/platex/pxbase/pxbase.sty	2017-06-05 23:15:32 UTC (rev 44482)
@@ -1,129 +1,15 @@
-%
-% pxbase.sty
-%
-
-%%%% package declaration
+%%
+%% This is file 'pxbase.sty'.
+%% 
+%% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+%%   GitHub:   https://github.com/zr-tex8r
+%%   Twitter:  @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
 \NeedsTeXFormat{pLaTeX2e}
-\ProvidesPackage{pxbase}[2017/05/04 v0.5i PX base library]
-
-%%%% include prerequisite packages
-\input{pxbase.def}
-\bxBDHookBabel
-\bxBDHookUnicode
-\bxBDHookJisInput
-\bxBDHookSafeCaret
-\RequirePackage{ifuptex}[2008/03/14]
-
-%%%% error messages
-\def\px at pkgname{pxbase}
-\def\px at b@pkgname{PXbase}
-\def\px at error{\PackageError\px at pkgname}
-\def\px at alert{\PackageWarningNoLine\px at pkgname}
-\def\px at warn{\PackageInfo\px at pkgname}
-\def\px at warn@aecs#1{\px at warn{Command \string#1 already exists}}
-
-%%------ Input through code values
-
-%%<*> \Ux, \UI, \AJ
-\ifx\Ux\@undefined \def\Ux{\bxUx}%
-\else \px at warn@aecs\Ux \fi
-\ifx\UI\@undefined \def\UI{\bxUI}%
-\else \px at warn@aecs\UI \fi
-\ifx\AJ\@undefined \def\AJ{\bxAJ}%
-\else \px at warn@aecs\AJ \fi
-
-%%<*> \JI, \KI
-\ifx\JI\@undefined \def\JI{\bxJI}%
-\else \px at warn@aecs\JI \fi
-\ifx\KI\@undefined \def\KI{\bxKI}%
-\else \px at warn@aecs\KI \fi
-
-%%------ kanji-code detection
-
-%%<+> \pxInternalJEnc
-\ifnum\jis"2121="8140\let\pxInternalJEnc=s\else
-\ifnum\jis"2121="A1A1\let\pxInternalJEnc=e\else
-\ifnum\jis"2121="3000\let\pxInternalJEnc=u\else
-  \let\pxInternalJEnc=?\fi\fi\fi
-
-%%<+> \pxSourceJEnc
-\@@input pxbsjc.def\relax
-\def\px at tmpb#1#2\@nil{%
-  \ifnum `#1=\jis"723F\let\pxSourceJEnc=s\else
-  \ifnum `#1=\jis"693D\let\pxSourceJEnc=e\else
-  \ifnum `#1=\jis"7379\let\pxSourceJEnc=u\else
-   \let\pxSourceJEnc=?\fi\fi\fi}
-\expandafter\px at tmpb\px at tmpa\@nil
-
-%%<*> \infojenc
-\def\px at tmpa{%
-  Kanji encoding: source=%
-  \if s\pxSourceJEnc sjis\else\if e\pxSourceJEnc euc%
-  \else\if u\pxSourceJEnc utf8\else?\fi\fi\fi
-  ; internal=%
-  \if s\pxInternalJEnc sjis\else\if e\pxInternalJEnc euc%
-  \else\if u\pxInternalJEnc unicode\else?\fi\fi\fi}
-\edef\infojenc{\noexpand\typeout{\px at tmpa}}
-
-%%------ force ucs 'fasterrors' option to be in effect
-
-%%%% begindocument hook
-\AtBeginDocument{%
-  \@ifpackageloaded{ucs}{%
-    \let\UnicodeOptionfasterrorsfalse\UnicodeOptionfasterrorstrue
-    \UnicodeOptionfasterrorstrue}{}}
-
-%%------ commands about DVI-specials
-
-%%<*> \usejapanesepdfstring
-\if s\pxInternalJEnc
-  \def\usejapanesepdfstring{%  why use CP932??
-    \bxDocumentSpecialUrgent{pdf:tounicode 90ms-RKSJ-UCS2}%
-    \bxNullify\usejapanesepdfstring}
-\else\if e\pxInternalJEnc
-  \def\usejapanesepdfstring{%
-    \bxDocumentSpecialUrgent{pdf:tounicode EUC-UCS2}%
-    \bxNullify\usejapanesepdfstring}
-\else\if u\pxInternalJEnc
-  \def\usejapanesepdfstring{%
-    \px at alert{Japanese PDF strings in upTeX.\MessageBreak
-      You must use upTeX-aware dvipdfmx}%
-    \bxNullify\usejapanesepdfstring}
-\else
-  \def\usejapanesepdfstring{%
-    \px at alert{\string\usejapanesepdfstring\space ignored,\MessageBreak
-      since internal encoding is unknown}%
-    \bxNullify\usejapanesepdfstring}
-\fi\fi\fi
-\@onlypreamble\usejapanesepdfstring
-
-%%------ CJK font scaling
-
-%%<+> \pxDocClassType
-% 1 = pLaTeX standard class
-% 2 = New standard classes by Okumura
-% 0 = otherwise
-\bxUcv=\z@
-\@ifclassloaded{jarticle}{\bxUcv=\@ne}{}
-\@ifclassloaded{jreport}{\bxUcv=\@ne}{}
-\@ifclassloaded{jbook}{\bxUcv=\@ne}{}
-\@ifclassloaded{tarticle}{\bxUcv=\@ne}{}
-\@ifclassloaded{treport}{\bxUcv=\@ne}{}
-\@ifclassloaded{tbook}{\bxUcv=\@ne}{}
-\@ifclassloaded{ujarticle}{\bxUcv=\@ne}{}
-\@ifclassloaded{ujreport}{\bxUcv=\@ne}{}
-\@ifclassloaded{ujbook}{\bxUcv=\@ne}{}
-\@ifclassloaded{utarticle}{\bxUcv=\@ne}{}
-\@ifclassloaded{utreport}{\bxUcv=\@ne}{}
-\@ifclassloaded{utbook}{\bxUcv=\@ne}{}
-\@ifclassloaded{jsarticle}{\bxUcv=\tw@}{}
-\@ifclassloaded{jsbook}{\bxUcv=\tw@}{}
-\chardef\pxDocClassType=\bxUcv
-
-%%<+> \pxUpScale
-\edef\pxUpScale{%
-  \ifcase\pxDocClassType 1\or 0.962216\or 0.924690\else 1\fi}
-
-%%------ all done
+\ProvidesPackage{pxbase}[2017/05/29 v1.1 PX base library]
+% The pxbase package now does the same thing as the bxbase package.
+\RequirePackageWithOptions{bxbase}[2017/05/29]
 \endinput
-% EOF
+%% EOF

Modified: trunk/Master/texmf-dist/tex/platex/pxbase/pxbasenc.def
===================================================================
--- trunk/Master/texmf-dist/tex/platex/pxbase/pxbasenc.def	2017-06-05 23:15:19 UTC (rev 44481)
+++ trunk/Master/texmf-dist/tex/platex/pxbase/pxbasenc.def	2017-06-05 23:15:32 UTC (rev 44482)
@@ -1,19 +1,38 @@
-%
-% pxbasenc.def
-%
-%%%% file declaration
+%%
+%% This is file 'pxbasenc.def'.
+%%
+
+%% file declaration
 \NeedsTeXFormat{pLaTeX2e}
-\ProvidesFile{pxbasenc.def}[2010/05/05 v0.5 PX encoding library]
+\ProvidesFile{pxbasenc.def}[2017/05/29 v1.1 PX encoding library]
+\def\pxec at pkgname{PXbase} % bundle name
 
-%%%% preparation
-\RequirePackage{ifuptex}
-%\def\pxec at b@pkgname{PXbase}
-\def\pxec at error{\PackageError\px at b@pkgname}
-\def\pxec at err@irfam#1{\pxec at error
-  {Encodings '\pxec at tmpa' redefined inconsistently}\@ehc}
-\def\pxec at err@ukjsf{\pxec at error
-  {'\k at encoding' is not valid as JSF encoding}\@ehc}
-\edef\pxec at resetcatcode{} % nothing for the present
+%% code guards
+\edef\pxec at restore@codes{%
+  \catcode33=\the\catcode33%
+  \catcode39=\the\catcode39%
+  \catcode45=\the\catcode45%
+  \catcode46=\the\catcode46%
+  \catcode47=\the\catcode47%
+  \catcode58=\the\catcode58%
+  \catcode60=\the\catcode60%
+  \catcode62=\the\catcode62%
+\relax}
+\catcode33=12 % <!>
+\catcode39=12 % <'>
+\catcode45=12 % <->
+\catcode46=12 % <.>
+\catcode47=12 % </>
+\catcode58=12 % <:>
+\catcode60=12 % <<>
+\catcode62=12 % <>>
+
+%--------------------------------------- general
+
+%% packages
+\RequirePackage{ifuptex}[2008/03/14]
+
+%% variables
 \ifx\bxUcv\@undefined
 \newcount\bxUcv
 \fi
@@ -21,11 +40,17 @@
 \newif\ifpxec at sw
 \newif\ifpxec at star
 
-%%------------------ CJK font declarations
+%% errors
+\def\pxec at error{\PackageError\pxec at pkgname}
+\def\pxec at err@irfam#1{\pxec at error
+  {Encodings '\pxec at tmpa' redefined inconsistently}\@ehc}
+\def\pxec at err@ukjsf{\pxec at error
+  {'\k at encoding' is not valid as JSF encoding}\@ehc}
 
-%%%% obtain error kanji font setting
-%    for use as 'safe font setting'
-\bgroup \escapechar\m at ne \error at kfontshape
+%--------------------------------------- CJK font declarations
+
+%% obtain error kanji font setting for use as 'safe font setting'
+\begingroup \escapechar\m at ne \error at kfontshape
   \expandafter\let\expandafter\pxec at tenc
     \csname t at enc@\f at encoding\endcsname
   \xdef\pxec at safe@jfontspec
@@ -34,7 +59,7 @@
     \csname \f at encoding/\f at family/\f at series/\f at shape\endcsname
   \global\expandafter\let\expandafter\pxec at safe@t at decl
     \csname \pxec at tenc/\f at family/\f at series/\f at shape\endcsname
-\egroup
+\endgroup
 
 %% \pxec at starinvoke\SOMECS
 \def\pxec at starinvoke#1{%
@@ -193,7 +218,7 @@
   \pxDeclareCJKShape{#1}{gt}{bx}{#2}{#6}}
 
 
-%%------------------ passive \DeclareFontShape
+%--------------------------------------- passive \DeclareFontShape
 
 %%<+> \pxForceFontDeclaration
 % Takes either of the following values and decides what to do
@@ -222,7 +247,7 @@
     \@xipt\@xiipt\@xivpt\@xviipt\@xxpt\@xxvpt\do
     {\expandafter\let\csname #1/#2/#3/#4/\pxec at y\endcsname\@undefined}}
 
-%%------------------- CJK named encodings
+%--------------------------------------- CJK named encodings
 
 %%<+> \pxDeclareEncodingDispatcher{<enc_name>}{<text>}
 \@onlypreamble\pxDeclareEncodingDispatcher
@@ -259,7 +284,7 @@
 \def\pxSetEncodingName#1#2#3{%
   \@namedef{pxec at EY/#1}{#2}\@namedef{pxec at ET/#1}{#3}}
 
-%%------ font declarations using named encodings
+%------------------------------- font declarations using named encodings
 
 %%<+> \pxec at supdef\SOMECS{<text1>}{<text2>}
 % Define \SOMECS to be <text1> if <text1> is non-empty,
@@ -314,7 +339,7 @@
   \pxDeclareCJKShape\pxec at y{#2}{#3}{#4}{#5}%
   \pxDeclareCJKShape\pxec at t{#2}{#3}{#4}{\pxec at z}}
 
-%%------------------- JSF encodings
+%--------------------------------------- JSF encodings
 
 %%<+> \pxDeclareJSFEncoding{<h-enc>}{<v-enc>}{<sfid>,...}
 \def\pxDeclareJSFEncoding#1#2#3{%
@@ -377,7 +402,7 @@
 %%<+> \JSFShapeRaw{<ser>}{<shape>}{<spec>}
 \def\pxec at JSFShapeRaw{\pxDeclareFontShape}
 
-%%------------------ basic encodings
+%--------------------------------------- basic encodings
 
 %%%% the standard Japanese encodings
 \ifnativeupTeX
@@ -456,7 +481,7 @@
 
 \fi                 %</upTeX>
 
-%%------------------ patches to OTF/UTF packages
+%--------------------------------------- patches to OTF/UTF packages
 
 %%%% make \CID work in nonstandard CJK encodings
 % \UTF & \CID require the current encoding to be the standard one, thus
@@ -477,7 +502,7 @@
     \fi}%
   \let\pxBDHookEncSwitchOTF\@empty}% nullify
 
-%%------------------ all done
-\pxec at resetcatcode
+%--------------------------------------- all done
+\pxec at restore@codes
 \endinput
 %% EOF

Modified: trunk/Master/texmf-dist/tex/platex/pxbase/pxbsjc.def
===================================================================
--- trunk/Master/texmf-dist/tex/platex/pxbase/pxbsjc.def	2017-06-05 23:15:19 UTC (rev 44481)
+++ trunk/Master/texmf-dist/tex/platex/pxbase/pxbsjc.def	2017-06-05 23:15:32 UTC (rev 44482)
@@ -1,6 +1,6 @@
 %
 % pxbsjc.def
 % Warning: Do not change encoding of this file!
-\def\px at tmpa{齷齷}% E9 BD B7 E9 BD B7
+\def\bxtb at tmpa{齷齷}% E9 BD B7 E9 BD B7
 \endinput
 % EOF

Added: trunk/Master/texmf-dist/tex/platex/pxbase/pxbsjc1.def
===================================================================
--- trunk/Master/texmf-dist/tex/platex/pxbase/pxbsjc1.def	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/platex/pxbase/pxbsjc1.def	2017-06-05 23:15:32 UTC (rev 44482)
@@ -0,0 +1,7 @@
+%
+% pxbsjc.def
+% Warning: Do not change encoding of this file!
+\def\bxtb at tmpa{齷齷}% E9 BD B7 E9 BD B7
+% \x82O! % 82 4F 21
+\endinput
+% EOF


Property changes on: trunk/Master/texmf-dist/tex/platex/pxbase/pxbsjc1.def
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/platex/pxbase/pxjsfenc.def
===================================================================
--- trunk/Master/texmf-dist/tex/platex/pxbase/pxjsfenc.def	2017-06-05 23:15:19 UTC (rev 44481)
+++ trunk/Master/texmf-dist/tex/platex/pxbase/pxjsfenc.def	2017-06-05 23:15:32 UTC (rev 44482)
@@ -1,22 +1,39 @@
-%
-% pxjsfenc.def
-%
-%%%% file declaration
+%%
+%% This is file 'pxjsfenc.def'.
+%%
+
+%% file declaration
 \NeedsTeXFormat{pLaTeX2e}
-\ProvidesFile{pxjsfenc.def}[2010/05/05 v0.5 PX JSF encoding]
+\ProvidesFile{pxjsfenc.def}[2017/05/29 v1.1 PX JSF encoding]
 
-%%%% preparation
+%% code guards
+\edef\pxec at jsf@restore at codes{%
+  \catcode34=\the\catcode34%
+  \catcode43=\the\catcode43%
+  \catcode45=\the\catcode45%
+  \catcode46=\the\catcode46%
+  \catcode47=\the\catcode47%
+  \catcode60=\the\catcode60%
+\relax}
+\catcode34=12 % <">
+\catcode43=12 % <+>
+\catcode45=12 % <->
+\catcode46=12 % <.>
+\catcode47=12 % </>
+\catcode60=12 % <<>
+\g at addto@macro\pxec at jsf@restore at codes{%
+  \let\pxec at jsf@restore at codes\@undefined}
+
+%--------------------------------------- general
+
+%% packages
 \RequirePackage{pxbase}
-\bxInputDefFile{pxbasenc}
-% common with pxbasenc
-%\def\pxec at b@pkgname{PXbase}
-%\def\pxec at error{\PackageError\px at b@pkgname}
-%
-\edef\pxec at jsf@resetcatcode{\catcode34=\the\catcode34\relax}
-\catcode34=12  %<">
+\bxRequireDefinition{pxbasenc}
+
+%% variables
 \newif\ifpxec at hyperref % true if hyperref patch is invoked
 
-%%------ main module
+%--------------------------------------- main
 
 %% \pxec at declare@jsf at gen{<name>}{<enc>}{<ext>}
 \def\pxec at declare@jsf at ucs{\pxec at swtrue\pxec at declare@jsf at a}
@@ -72,7 +89,7 @@
 \pxec at declare@jsf at cid{CIDC}{J42}{}
 \pxec at declare@jsf at cid{CIDT}{J43}{}
 
-%%------------------ processing in upTeX
+%--------------------------------------- processing in upTeX
 \ifnativeupTeX
 
 \pxDeclareCJKEncoding*{J20}{J30}
@@ -101,9 +118,9 @@
 \def\pxec at out@jsf#1#2{% {<enc>}\[<ext>]
   {\kanjiencoding{#1}\selectfont \kchar\bxUcv}}
 
-\pxec at jsf@resetcatcode
+\pxec at jsf@restore at codes
 \expandafter\endinput \fi\relax % stop here
-%%------------------ processing in pTeX
+%--------------------------------------- processing in pTeX
 
 %% JSF encodings
 \pxDeclareJSFEncoding{J20}{J30}{0,2,3,4,5,6,7,8,9,d,f}
@@ -189,7 +206,7 @@
 \def\pxec at skiptoend#1\pxec at end{}
 \let\pxec at end\@empty
 
-%%------------------ all done
-\pxec at jsf@resetcatcode
+%--------------------------------------- all done
+\pxec at jsf@restore at codes
 \endinput
 %% EOF

Modified: trunk/Master/texmf-dist/tex/platex/pxbase/upkcat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/platex/pxbase/upkcat.sty	2017-06-05 23:15:19 UTC (rev 44481)
+++ trunk/Master/texmf-dist/tex/platex/pxbase/upkcat.sty	2017-06-05 23:15:32 UTC (rev 44482)
@@ -1,22 +1,50 @@
-%
-% upkcat.sty (for both upLaTeX2e & plain upTeX)
-%
+%%
+%% This is file 'upkcat.sty'.
+%% 
+%% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+%%   GitHub:   https://github.com/zr-tex8r
+%%   Twitter:  @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
 
-%%%% avoid multiple loading and check if LaTeX2e is used.
-\ifx\pxkqOk\undefined\else \expandafter\endinput \fi
-\edef\pxkqRestoreAt{\catcode64=\the\catcode64\relax}\catcode64=11
-\ifx\RequirePackage\@undefined  % LaTeX2e
-  \NeedsTeXFormat{pLaTeX2e}
-  \ProvidesPackage{upkcat}[2008/03/14 v0.2 safe kcatcode access]
+% Note: This package supports both upLaTeX and plain upTeX.
+
+%% avoid multiple loading
+\csname\if11upkcatstyLoaded\fi\endcsname
+%% code guards
+\edef\x{\catcode32=\the\catcode32%
+\catcode43=\the\catcode43\catcode45=\the\catcode45%
+\catcode46=\the\catcode46\catcode47=\the\catcode47%
+\catcode60=\the\catcode60\catcode63=\the\catcode63%
+\catcode64=\the\catcode64\catcode96=\the\catcode96%
+\endlinechar=\the\endlinechar\relax}
+\catcode32=10\relax\endlinechar=13\relax
+\catcode43=12 \catcode45=12 % <+><->
+\catcode46=12 \catcode47=12 % <.></>
+\catcode60=12 \catcode63=12 % <<><?>
+\catcode64=11 \catcode96=12 % <@><`>
+\edef\pxkq at restore@codes{\x\let\noexpand\pxkq at restore@codes\relax}
+%% check for LaTeX
+\ifx\RequirePackage\@undefined %<*!LaTeX>
+  \long\def\x#1\ProvidesPackage#2[#3]{\immediate\write-1{Package: #2 #3}}
+  \expandafter\x
+\else                          %<*LaTeX>
   \RequirePackage{ifuptex}[2008/03/14]\RequireupTeX
-\fi \let\pxkqOk=t
+\fi                            %</LaTeX>
 
-%%%% \getkcatcode, \setkcatcode
-\edef\skrestoreat{\catcode64=\the\catcode64}\catcode64=11
-\newcount\pxkq at cp \newif\ifpxkq at ok
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{upkcat}[2017/05/29 v1.1 safe kcatcode access]
+
+%--------------------------------------- main
+
+%%<*> \getkcatcode{<jachar>}
 \def\getkcatcode#1{\pxkq at getcp{#1}%
   \edef\thekcatcode{\the\kcatcode\pxkq at cp}}
+%%<*> \setkcatcode{<jachar>}{<value>}
 \def\setkcatcode#1#2{\pxkq at getcp{#1}\kcatcode\pxkq at cp#2}
+\newcount\pxkq at cp \newif\ifpxkq at ok
 \def\pxkq at getcp#1{\pxkq at getcp@a#1\relax\relax}
 \def\pxkq at nxt#1#2#3#4#5{\pxkq at cp#1\loop
   {\lccode`\?\pxkq at cp \advance\pxkq at cp-#3%
@@ -45,6 +73,7 @@
   \errmessage{Corrupted UTF-8 bytes}\pxkq at cp65535\relax}
 %\def\pxkq at end#1\relax{\showthe\pxkq at cp}
 
-%%%% all done
-\pxkqRestoreAt \endinput
+%--------------------------------------- all done
+\pxkq at restore@codes
+\endinput
 %% EOF



More information about the tex-live-commits mailing list