From c684ba451bf548bdb24c40ed54caa9f11ac21422 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 5 Jun 2017 23:15:32 +0000 Subject: pxbase (30may17) git-svn-id: svn://tug.org/texlive/trunk@44482 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/platex/pxbase/LICENSE | 5 +- Master/texmf-dist/doc/platex/pxbase/README-ja | 339 --------- Master/texmf-dist/doc/platex/pxbase/README-ja.md | 220 ++++++ Master/texmf-dist/doc/platex/pxbase/README-pxbabel | 112 --- Master/texmf-dist/doc/platex/pxbase/README.md | 69 +- Master/texmf-dist/doc/platex/pxbase/pxbabel.pdf | Bin 0 -> 150787 bytes Master/texmf-dist/doc/platex/pxbase/pxbabel.tex | 330 +++++++++ Master/texmf-dist/tex/platex/pxbase/pxbabel.sty | 435 ++++++++--- Master/texmf-dist/tex/platex/pxbase/pxbase.def | 796 +-------------------- Master/texmf-dist/tex/platex/pxbase/pxbase.sty | 140 +--- Master/texmf-dist/tex/platex/pxbase/pxbasenc.def | 81 ++- Master/texmf-dist/tex/platex/pxbase/pxbsjc.def | 2 +- Master/texmf-dist/tex/platex/pxbase/pxbsjc1.def | 7 + Master/texmf-dist/tex/platex/pxbase/pxjsfenc.def | 57 +- Master/texmf-dist/tex/platex/pxbase/upkcat.sty | 59 +- 15 files changed, 1078 insertions(+), 1574 deletions(-) delete mode 100644 Master/texmf-dist/doc/platex/pxbase/README-ja create mode 100644 Master/texmf-dist/doc/platex/pxbase/README-ja.md delete mode 100644 Master/texmf-dist/doc/platex/pxbase/README-pxbabel create mode 100644 Master/texmf-dist/doc/platex/pxbase/pxbabel.pdf create mode 100644 Master/texmf-dist/doc/platex/pxbase/pxbabel.tex create mode 100644 Master/texmf-dist/tex/platex/pxbase/pxbsjc1.def (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/platex/pxbase/LICENSE b/Master/texmf-dist/doc/platex/pxbase/LICENSE index 15954156886..8ada757fbc8 100644 --- a/Master/texmf-dist/doc/platex/pxbase/LICENSE +++ b/Master/texmf-dist/doc/platex/pxbase/LICENSE @@ -1,9 +1,6 @@ -$BK\%=%U%H%&%'%"$O(B MIT $B%i%$%;%s%9$N2<$GG[I[$5$l$^$9!#Cx:n8"$O:nZ$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 diff --git a/Master/texmf-dist/doc/platex/pxbase/README-ja b/Master/texmf-dist/doc/platex/pxbase/README-ja deleted file mode 100644 index a36e9fff489..00000000000 --- a/Master/texmf-dist/doc/platex/pxbase/README-ja +++ /dev/null @@ -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 diff --git a/Master/texmf-dist/doc/platex/pxbase/README-ja.md b/Master/texmf-dist/doc/platex/pxbase/README-ja.md new file mode 100644 index 00000000000..58b2e47666e --- /dev/null +++ b/Master/texmf-dist/doc/platex/pxbase/README-ja.md @@ -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 diff --git a/Master/texmf-dist/doc/platex/pxbase/README-pxbabel b/Master/texmf-dist/doc/platex/pxbase/README-pxbabel deleted file mode 100644 index 84ff3b0c9d6..00000000000 --- a/Master/texmf-dist/doc/platex/pxbase/README-pxbabel +++ /dev/null @@ -1,112 +0,0 @@ -================================================== -== PXbase バンドル v0.5 <2010/06/15> == -== by「ZR」(八登 崇之/Takayuki YATO)== -== == -================================================== -(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 diff --git a/Master/texmf-dist/doc/platex/pxbase/README.md b/Master/texmf-dist/doc/platex/pxbase/README.md index 4a70e574a60..60016a18bea 100644 --- a/Master/texmf-dist/doc/platex/pxbase/README.md +++ b/Master/texmf-dist/doc/platex/pxbase/README.md @@ -1,4 +1,4 @@ -Pxbase Package Bundle +PXbase Package Bundle ===================== LaTeX: Tools for use with (u)pLaTeX @@ -8,22 +8,24 @@ are utilized by packages created by the same author. This package also 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 @@ And rehash your TEXMF trees if necessary. 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 diff --git a/Master/texmf-dist/doc/platex/pxbase/pxbabel.pdf b/Master/texmf-dist/doc/platex/pxbase/pxbabel.pdf new file mode 100644 index 00000000000..fc348b92bd8 Binary files /dev/null and b/Master/texmf-dist/doc/platex/pxbase/pxbabel.pdf differ diff --git a/Master/texmf-dist/doc/platex/pxbase/pxbabel.tex b/Master/texmf-dist/doc/platex/pxbase/pxbabel.tex new file mode 100644 index 00000000000..733babd1ff6 --- /dev/null +++ b/Master/texmf-dist/doc/platex/pxbase/pxbabel.tex @@ -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} diff --git a/Master/texmf-dist/tex/platex/pxbase/pxbabel.sty b/Master/texmf-dist/tex/platex/pxbase/pxbabel.sty index aaa9feff101..97b5e4ad568 100644 --- a/Master/texmf-dist/tex/platex/pxbase/pxbabel.sty +++ b/Master/texmf-dist/tex/platex/pxbase/pxbabel.sty @@ -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@pkgname{pxbabel} + +%--------------------------------------- general + +%% packages \RequirePackage{pxbase} +\RequirePackage{ifptex} \safecaret -\RequirePackage{keyval} +\bxPrepareSetKeysSafe -%%%% error message -\def\pxbb@pkgname{pxbabel} -\def\pxbb@error{\PackageError\pxbb@pkgname} -\def\pxbb@warn{\PackageWarningNoLine\pxbb@pkgname} +%% error messages +\bxSetModuleName\pxbb@pkgname \def\pxbb@eha{\MessageBreak I aborted loading it.} -\def\pxbb@err@nobbl{\pxbb@error - {babel is not yet loaded, load aborted}% - {This package must be loaded after babel package.}} -\@onlypreamble\pxbb@err@nobbl -\def\pxbb@warn@nocjk{\pxbb@warn - {No multi-CJK support found, font switch disabled\MessageBreak - (I need upTeX-extension or otf package with `multi')}} -\@onlypreamble\pxbb@warn@nocjk - -%%%% \pxbb@foreach@lang\CS -\def\pxbb@foreach@lang#1{% - #1{japanese}#1{korean}#1{schinese}#1{tchinese}} - -%%%% keyval settings -\def\pxbb@setkey{% - \edef\pxbb@nxt{\noexpand\setkeys{pxbabel}{\CurrentOption}}% - \pxbb@nxt} -\def\pxbb@do#1{% - \define@key{pxbabel}{#1}{\@namedef{pxbb@LN/#1}{##1}}% - \@namedef{pxbb@LN/#1}{#1}} -\pxbb@foreach@lang\pxbb@do -\define@key{pxbabel}{main}{\def\pxbb@main{#1}} -\let\pxbb@main\relax - -%%%% option handler -\newif\ifpxbb@switchcaption \pxbb@switchcaptionfalse -\DeclareOption{switchcaption}{\pxbb@switchcaptiontrue} -\DeclareOption{noswitchcaption}{\pxbb@switchcaptionfalse} -\newif\ifpxbb@switchfont \pxbb@switchfonttrue +\bxPreamble\def\pxbb@err@nobbl{% + \PackageError\pxbb@pkgname + {babel is not yet loaded, load aborted}% + {This package must be loaded after babel package.}} +\bxPreamble\def\pxbb@warn@nocjk{% + \PackageWarningNoLine\pxbb@pkgname + {No multi-CJK support found, font switch disabled\MessageBreak + (I need upTeX-extension or otf package with `multi')}} +\bxPreamble\def\pxbb@err@noldf#1{% + \PackageError\pxbb@pkgname + {Language definition file #1.ldf not found}% + {Maybe you misspelled the language option?}} + +%--------------------------------------- Processing package options + +%% \pxbb@cjk@langid@list +% The list of all CJK language ids. +\bxPreamble\def\pxbb@cjk@langid@list{% + japanese,korean,schinese,tchinese% +} + +%% \pxbb@lang@load@list +% The list of language options to be loaded. +\bxPreamble\let\pxbb@lang@load@list\@empty + +%% \pxbb@set@lang@spec{}{[+]} +\bxPreamble\def\pxbb@set@lang@spec#1#2{% + \edef\pxbb@args{#2}% + \expandafter\pxbb@set@lang@spec@a\pxbb@args\@nil{#1}} +\bxPreamble\def\pxbb@set@lang@spec@a#1#2\@nil#3{% + \bxIf{+#1}% + {\csdef{pxbb@langname/#3}{#2}% + \appto\pxbb@lang@load@list{,#2}}% + {\csdef{pxbb@langname/#3}{#1#2}}} + +%% keyval settings +% (=[+]) +\bxForEachIn\pxbb@cjk@langid@list\do{% + \define@key{pxbabel}{#1}{\pxbb@set@lang@spec{#1}{##1}}% + \pxbb@set@lang@spec{#1}{#1}} +% (main=) +\bxPreamble\let\pxbb@main@lang\relax +\define@key{pxbabel}{main}{\def\pxbb@main@lang{#1}} +% (caption=) +\bxPreamble\def\pxbb@caption@lang{default} +\define@key{pxbabel}{caption}{\def\pxbb@caption@lang{#1}} + +%% option handling +\DeclareOption{switchcaption}{% + \def\pxbb@caption@lang{switch}} +\DeclareOption{noswitchcaption}{% + \def\pxbb@caption@lang{default}} +\newbool{pxbb@switchfont}\pxbb@switchfonttrue \DeclareOption{switchfont}{\pxbb@switchfonttrue} \DeclareOption{noswitchfont}{\pxbb@switchfontfalse} -\newif\ifpxbb@prefermmixjis -\DeclareOption{prefer2004jis}{\pxbb@prefermmixjistrue} -\DeclareOption{noprefer2004jis}{\pxbb@prefermmixjisfalse} -\DeclareOption*{\pxbb@setkey} +\newbool{pxbb@prefermmivjis} +\DeclareOption{prefer2004jis}{\pxbb@prefermmivjistrue} +\DeclareOption{noprefer2004jis}{\pxbb@prefermmivjisfalse} +% (, +) +\bxForEachIn\pxbb@cjk@langid@list\do{% + \DeclareOption{#1}{% + \pxbb@set@lang@spec{#1}{#1}% + \def\pxbb@last@lang{#1}}% + \DeclareOption{+#1}{% + \pxbb@set@lang@spec{#1}{+#1}% + \def\pxbb@last@lang{#1}}} +% (options processed by keyval) +\DeclareOption*{% + \bxWithArgExpd{\CurrentOption}\do{% + \bxSetKeysSafe{pxbabel}{#1}% + \bxIfx{\bxRestKeys\@empty}{}% + {\appto\pxbb@lang@load@list{,#1}% + \def\pxbb@last@lang{#1}}}} \ProcessOptions* +\bxChompComma\pxbb@lang@load@list + +%% 'triv' language check table +\bxForEachIn\pxbb@cjk@langid@list\do{% + \cslet{pxbb@triv/\@nameuse{pxbb@langname/#1}}{t}} +\bxForEachIn\pxbb@lang@load@list\do{% + \csundef{pxbb@triv/#1}} -%%%% \ifpxbb@otfmulti, \ifpxbb@uptex -%%%% \ifpxbb@pxotf -\newif\ifpxbb@otfmulti \newif\ifpxbb@pxotf -\@ifpackageloaded{mlutf}{\pxbb@otfmultitrue}{\pxbb@otfmultifalse} +%--------------------------------------- Resolving settings + +%% \ifpxbb@otfmulti +%% \ifpxbb@pxotf +\newbool{pxbb@otfmulti} +\newbool{pxbb@pxotf} +\@ifpackageloaded{mlutf}{\pxbb@otfmultitrue}{} \@ifpackageloaded{pxotf}{\pxbb@otfmultitrue\pxbb@pxotftrue}{} -\newif\ifpxbb@uptex -\let\ifpxbb@uptex\ifupTeX - -%%%% environment check -\@ifpackageloaded{babel}{}{\pxbb@err@nobbl\endinput} -\ifpxbb@switchfont \ifpxbb@otfmulti\else \ifpxbb@uptex\else - \pxbb@warn@nocjk \fi\fi\fi - -%%%% set caption language to 'default' -\ifpxbb@switchcaption\else - \ifx\bx@bbl@captlang\@undefined - \bxcaptionlanguage{default} -\fi\fi - -%%------ language declarations - -%%%% \pxlanguagename{} -\def\pxlanguagename#1{\@nameuse{pxbb@LN/#1}} - -%%%% declare languages -\def\pxbb@decl@triv@lang#1{% - \edef\pxbb@arg{{\@nameuse{pxbb@LN/#1}}}% - \expandafter\pxbb@decl@triv@lang@a\pxbb@arg} -\def\pxbb@decl@triv@lang@a#1{% - \expandafter\ifx\csname date#1\endcsname\relax - \bxTrivLangDef{#1}\fi} -\pxbb@foreach@lang\pxbb@decl@triv@lang -\pxbb@decl@triv@lang@a{cjkmulti} -\ifx\pxbb@main\relax\else - \bxmainlanguage{\pxbb@main}\fi -\@onlypreamble\pxb@decl@triv@lang -\@onlypreamble\pxb@decl@triv@lang@a - -\ifpxbb@otfmulti %====================== for OTF -%%------ \UTF switch - -%%%% add \UTF switch to Babel \extras + +%% \ifpxbb@babel +\newbool{pxbb@babel} +\@ifpackageloaded{babel}{\pxbb@babeltrue}{} + +%% environment check +% The feature 'switchfont' requires multi-CJK support. +\ifpxbb@switchfont + \ifpxbb@otfmulti\else + \ifupTeX\else + \pxbb@warn@nocjk +\fi\fi\fi + +%% resolve the expected main language +\ifundef\pxbb@main@lang{%then + % if 'main' is not specified + \ifbool{pxbb@babel}% + % in separate loading, main is unchanged + {\let\pxbb@main@lang\bbl@main@language}% + % in lumped loading, main is the one specified last + {\let\pxbb@main@lang\pxbb@last@lang}% +}{} + +%% resolve the caption language setting +\bxIfExpToEqual{\pxbb@caption@lang}{auto}{%then + % if 'caption=auto' is given + \bxIfcsundef{pxbb@triv/\pxbb@main@lang} + % if main is not triv then caption=switch + {\def\pxbb@caption@lang{switch}}% + % if main is triv then caption=default + {\def\pxbb@caption@lang{default}}% +}{} + +\ifx t\bxUseDebug +\def\pxbb@bool#1{\ifbool{#1}{yes}{no}} +\bxForEachIn\pxbb@cjk@langid@list\do{% +\bxDebug{#1 = \@nameuse{pxbb@langname/#1}}} +\bxDebug{main = \pxbb@main@lang} +\bxDebug{caption = \pxbb@caption@lang} +\bxDebug{switchfont = \pxbb@bool{pxbb@switchfont}} +\bxDebug{load-list = \pxbb@lang@load@list} +\bxDebug{last = \pxbb@last@lang} +\bxDebug{babel = \pxbb@bool{pxbb@babel}} +\bxDebug{otfmulti = \pxbb@bool{pxbb@otfmulti}} +\fi + +%--------------------------------------- lumped loading +\ifpxbb@babel\else + +%% load Babel +\let\pxbb@tmpa\pxbb@lang@load@list +\ifx\pxbb@tmpa\@empty \def\pxbb@tmpa{english}\fi +\edef\pxbb@tmpa{% + \noexpand\RequirePackage[\pxbb@tmpa]{babel}% +}\pxbb@tmpa + +\fi +%--------------------------------------- separate loading +\ifpxbb@babel + +%% \pxbb@g@add@lang@proc +\bxPreamble\let\pxbb@g@add@lang@proc\@empty +\begingroup + +%% remove languages that are already loaded +\let\pxbb@tmpa\@empty +\bxForEachIn\pxbb@lang@load@list\do{% + \bxIfcsundef{date#1}{\appto\pxbb@tmpa{,#1}}{}} +\bxChompComma\pxbb@tmpa +\let\pxbb@lang@load@list\pxbb@tmpa +\bxDebug{\pxbb@lang@load@list} + +%% if some language should be added... +\ifx\pxbb@lang@load@list\@empty\else + \ifdef\bbl@load@language{% + \PackageWarning\pxbb@pkgname + {Some languages need to be added. Note that the\MessageBreak + process of addition is unreliable}% + }{%else + \PackageError\pxbb@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@g@add@lang@proc +\bxForEachIn\pxbb@lang@load@list\do{% + \csdef{pxbb@use/#1}{t}} +\def\pxbb@babel@alias#1#2{% + \bxIfcsundef{pxbb@use/#1}{}{%else + % if the real name is available, then ok + \IfFileExists{#1.ldf}{}{%else + \csdef{pxbb@bbl@opt/#1}{\bbl@load@language{#2}}}}} +\def\pxbb@babel@load@proc#1{% + \bxIfcsundef{pxbb@use/#1}{\@gobble}{%else + \csdef{pxbb@bbl@opt/#1}}} +% the alias list +\pxbb@babel@alias{acadian}{frenchb} +\pxbb@babel@alias{afrikaans}{dutch} +\pxbb@babel@alias{american}{english} +\pxbb@babel@alias{australian}{english} +\pxbb@babel@alias{austrian}{germanb} +\pxbb@babel@alias{bahasa}{bahasai} +\pxbb@babel@alias{bahasai}{bahasai} +\pxbb@babel@alias{bahasam}{bahasam} +\pxbb@babel@alias{brazil}{portuges} +\pxbb@babel@alias{brazilian}{portuges} +\pxbb@babel@alias{british}{english} +\pxbb@babel@alias{canadian}{english} +\pxbb@babel@alias{canadien}{frenchb} +\pxbb@babel@alias{francais}{frenchb} +\pxbb@babel@alias{french}{frenchb} +\pxbb@babel@alias{german}{germanb} +\pxbb@babel@alias{hungarian}{magyar} +\pxbb@babel@alias{indon}{bahasai} +\pxbb@babel@alias{indonesian}{bahasai} +\pxbb@babel@alias{lowersorbian}{lsorbian} +\pxbb@babel@alias{malay}{bahasam} +\pxbb@babel@alias{melayu}{bahasam} +\pxbb@babel@alias{meyalu}{bahasam} +\pxbb@babel@alias{naustrian}{ngermanb} +\pxbb@babel@alias{newzealand}{english} +\pxbb@babel@alias{ngerman}{ngermanb} +\pxbb@babel@alias{nynorsk}{norsk} +\pxbb@babel@alias{portuguese}{portuges} +\pxbb@babel@alias{russian}{russianb} +\pxbb@babel@alias{UKenglish}{english} +\pxbb@babel@alias{ukrainian}{ukraineb} +\pxbb@babel@alias{uppersorbian}{usorbian} +\pxbb@babel@alias{USenglish}{english} +\pxbb@babel@load@proc{hebrew}{% + \input{rlbabel.def}\bbl@load@language{hebrew}} +\pxbb@babel@load@proc{polutonikogreek}{% + \bbl@load@language{greek}\languageattribute{greek}{polutoniko}} + +%% load addtional languages +\bxForEachIn\pxbb@lang@load@list\do{% + \gappto\pxbb@g@add@lang@proc{\def\CurrentOption{#1}}% + \bxIfcsundef{pxbb@bbl@opt/#1}% + {\gappto\pxbb@g@add@lang@proc{\bbl@load@language{#1}}}% + {\letcs\pxbb@tmpa{pxbb@bbl@opt/#1}% + \xappto\pxbb@g@add@lang@proc{\expandonce{\pxbb@tmpa}}}} +\gappto\pxbb@g@add@lang@proc{\let\CurrentOption\@empty} + +\endgroup +% dispatch +\pxbb@g@add@lang@proc + +\fi +%--------------------------------------- post-load process + +%% declare 'triv' languages +\bxForEachIn\pxbb@cjk@langid@list\do{% + \bxWithArgFullExpd{\@nameuse{pxbb@langname/#1}}\do{% + \bxIfcsundefX{date##1}{\bxTrivLangDef{##1}}{}}} +\ifundef\datecjkmulti{\bxTrivLangDef{cjkmulti}}{} + +%% set main language +\setmainlanguage{\pxbb@main@lang} + +%% set caption language +\bxIfExpToEqual{\pxbb@caption@lang}{switch}{}%else + {\bxProvideCaptionLanguage{\pxbb@caption@lang}} + +%--------------------------------------- Adding font switch to 'extra's + +\ifpxbb@otfmulti %----<*otfmulti> + +%% add \UTF switch to Babel \extras \ifpxbb@switchfont -\def\pxbb@addtoextras@otf#1{% - \edef\pxbb@arg{{\@nameuse{pxbb@LN/#1}}}% - \expandafter\pxbb@addtoextras@otf@a\pxbb@arg} -\def\pxbb@addtoextras@otf@a#1#2{% - \expandafter\addto\csname extras#1\endcsname{% - \babel@save\UTF \let\UTF#2}} +\bxPreamble\def\pxbb@addtoextras@otf#1{% + \pxbb@addtoextras@otf@a{\bxCsuseX{pxbb@langname/#1}}} +\bxPreamble\def\pxbb@addtoextras@otf@a#1#2{% + \csappto{extras#1}{\babel@save\UTF \let\UTF#2}} \pxbb@addtoextras@otf{korean}{\UTFK} \pxbb@addtoextras@otf{schinese}{\UTFC} \pxbb@addtoextras@otf{tchinese}{\UTFT} \pxbb@addtoextras@otf@a{cjkmulti}{\UTFM} -\@onlypreamble\pxbb@addtoextras@otf -\@onlypreamble\pxbb@addtoextras@otf@a \fi % pxbb@switchfont -\fi %=================================== end +\fi %---- -\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@pxotf\else \pxDeclareBasicCJKEncoding{J20}{J30}% UniJIS \pxDeclareBasicCJKFamily{J20}{!upjpnrm-h}{!upjpngt-h}{*gt}{*gt} @@ -130,42 +319,53 @@ \pxDeclareBasicCJKFamily{J33}{!uptchrm-v}{!uptchgt-v}{*gt}{*gt} \fi -%%%% add font switch to Babel \extras +%--------------------------------------- add font switch to Babel \extras \ifpxbb@switchfont -\def\pxbb@addtoextras#1#2#3{% - \edef\pxbb@arg{{\@nameuse{pxbb@LN/#1}}% + +%% \pxbb@set@full@ja@enc +% Sets to \pxbb@ful@ja@enc the destination encoding. +\bxForEachIn{J20,J24}\do{% all full japanese encodings + \csdef{pxbb@is@fje/#1}{t}} +\edef\pxbb@dflt@ja@enc{% default full japanese encoding + \ifbool{pxbb@prefermmivjis}{J24}{J20}} +\def\pxbb@set@full@ja@enc{% + \edef\pxbb@full@ja@enc{% + \bxIfcsundefX{pxbb@is@fje/\cy@encoding}% + {\pxbb@dflt@ja@enc}{\cy@encoding}}} + +%% \pxbb@addtoextras +\bxPreamble\def\pxbb@addtoextras#1#2#3{% + \edef\pxbb@arg{{\@nameuse{pxbb@langname/#1}}% \if t#2{\noexpand\pxbb@full@ja@enc}{\noexpand\@undefined}% \else{#3}{t}\fi}% \expandafter\pxbb@addtoextras@a\pxbb@arg} -\def\pxbb@addtoextras@a#1#2#3{% - \expandafter\addto\csname extras#1\endcsname{% - \pxbb@set@full@ja@enc \let\pxInNonJaLanguage=#3% +\bxPreamble\def\pxbb@addtoextras@a#1#2#3{% + \csappto{extras#1}{% + \pxbb@set@full@ja@enc + \let\pxInNonJaLanguage=#3% \let\pxbb@org@encoding\cy@encoding \kanjiencoding{#2}\selectfont}% - \expandafter\addto\csname noextras#1\endcsname{% + \csappto{noextras#1}{% \let\pxInNonJaLanguage\@undefined \kanjiencoding{\pxbb@org@encoding}\selectfont}} \pxbb@addtoextras{japanese}{t}{} \pxbb@addtoextras{korean}{f}{J21} \pxbb@addtoextras{schinese}{f}{J22} \pxbb@addtoextras{tchinese}{f}{J23} -\@onlypreamble\pxbb@addtoextras -\@onlypreamble\pxbb@addtoextras@a -%% \pxbb@set@full@ja@enc -\edef\pxbb@dflt@ja@enc{\ifpxbb@prefermmixjis J24\else J20\fi} -\@namedef{pxbb@SFJE/J20}{\def\pxbb@full@ja@enc{J20}} -\@namedef{pxbb@SFJE/J24}{\def\pxbb@full@ja@enc{J24}} -\def\pxbb@set@full@ja@enc{% - \let\pxbb@full@ja@enc\pxbb@dflt@ja@enc - \csname pxbb@SFJE/\cy@encoding\endcsname} + \fi % pxbb@switchfont -\fi %=================================== end +\fi %---- -%%------ all done -\endinput -%% EOF +%--------------------------------------- Other user commands +%%<*> \cjklanguagename{} +% Expands to the babel language name for . +\newcommand*\cjklanguagename[1]{% + \@nameuse{pxbb@langname/#1}} + +%--------------------------------------- all done +\endinput % % 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 diff --git a/Master/texmf-dist/tex/platex/pxbase/pxbase.def b/Master/texmf-dist/tex/platex/pxbase/pxbase.def index 926ee1bc6c5..214e278e543 100644 --- a/Master/texmf-dist/tex/platex/pxbase/pxbase.def +++ b/Master/texmf-dist/tex/platex/pxbase/pxbase.def @@ -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@defextension{def} -\gdef\bx@ver@#1{\expandafter\expandafter\expandafter\@parse@version - \csname ver@#1.\@currext\endcsname//00\@nil} - %% \bxInputDefFile{} -\gdef\bxInputDefFile#1{\@onefilewithoptions{#1}[][]\bx@defextension} - %% \bxCheckCPart{} -\gdef\bxCheckCPart#1{% - \@ifl@aded\@currext{#1}{% - \ifnum\bx@ver@{#1}>\bx@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@b@pkgname{BX/PXbase} % bundle name -\def\bx@b@error{\PackageError\bx@b@pkgname} -\def\bx@err@nobbl{\bx@b@error{babel not yet loaded}\@eha} -\def\bx@err@oorng{\bx@b@error{Number out of range}\@eha} -\def\bx@err@nanbc{\bx@b@error{Non-BMP characters not supported}\@eha} -\def\bx@err@ilnfm{\bx@b@error{Illegal number format}\@eha} -\def\bx@err@uddrv#1{\bx@b@error{\string#1 is undefined}\@eha} - -%%%% common stuffs -\ifx\bxUcv\@undefined -\newcount\bxUcv % argument of \bx@Ux -\fi -\newif\ifbxOk % all-purpsoe switch -\let\bxHex\relax % result of \bxToHex... -\let\bxRes\relax % result of \bxToLower -\edef\bx@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@nullified} -\def\bx@nullified{\@gobble\bx@@nullified} - -%%%% \bxDebug{} -% If \bxUseDebug is defined when bxbase is loaded, this command -% prints debug messages; otherwise it is ignored. -%\let\bx@typeout\typeout -%\ifx\bxUseDebug\@undefined \let\bxDebug\@gobble -%\else \def\bxDebug#1{\bx@typeout{BX debug: #1}}\fi -\providecommand*\bxDebug{\@gobble} - -%%%% \bxCheckMA\CS \bxEndCheckMA -% If this construct appears in moving arguments, it expands to -% an error message command. -\def\bxCheckMA{\let\bx@chkma@a\bx@chkma@a\noexpand} -\let\bxEndCheckMA\@empty \let\bx@chkma@z\relax -\def\bx@chkma@a#1{\bx@chkma@z\relax\bx@chkma@b} -\def\bx@chkma@b#1#2#3\bxEncCheckMA{\noexpand\bx@err@ivfrg#1#2} -\def\bx@err@ivfrg#1{\bx@b@error{Cannot use \string#1 here}\@eha} - -%%------ TeX engine distinction - -%%%% \bxIfPrimitive\CS{}{} -% Checks if \CS is a primitive. -\def\bxIfPrimitive#1{% - \edef\bx@tmpa{\string#1}\edef\bx@tmpb{\meaning#1}% - \ifx\bx@tmpa\bx@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@b@uptex -\bxIfPrimitive\kchar{\chardef\bx@b@uptex\@ne}{\chardef\bx@b@uptex\z@} - -%%------ Babel something - -%%<+> \bxBDHookBabel -% A begindocument-hook about Babel. -\newif\ifbx@bbl@inuse -\def\bx@bbl@bdhook{} -\providecommand\bxBDHookBabel{\bx@bdhook@babel@do} -\def\bx@bdhook@babel@do{% - \AtBeginDocument{% - \@ifpackageloaded{babel}{% - \bx@bbl@inusetrue - \ifx\bx@bbl@captlang\@undefined\else \bx@bbl@do@captlang \fi - \bx@bbl@bdhook - }{}}% - \bxNullify\bxBDHookBabel} -\@onlypreamble\bxBDHookBabel -\@onlypreamble\bx@bdhook@babel@do - -%%<+> \bxAtBeginDocumentBabel{} -% Register a begin-document hook that willl be invoked only when babel -% is loaded. -\def\bxAtBeginDocumentBabel{% - \g@addto@macro\bx@bbl@bdhook} -\@onlypreamble\bxAtBeginDocumentBabel -\@onlypreamble\bx@bbl@bdhook - -%%%% \bx@bbl@patch@sel@lang -% A patch to \select@language that disables automatic switching of -% caption language. -\def\bx@bbl@patch@sel@lang{% this wlll be never invoked twice - \global\let\bx@bbl@org@select@language\select@language - \gdef\select@language##1{% - \bx@bbl@copy{**C}{##1}\bx@bbl@copy{##1}{**Z}% - \bx@bbl@org@select@language{##1}\bx@bbl@copy{##1}{**C}}} -\@onlypreamble\bx@bbl@patch@sel@lang - -%%%% \bx@bbl@do@captlang -\def\bx@bbl@@main{main} -\def\bx@bbl@@default{default} -\def\bx@bbl@do@captlang{% - % set captions - \ifx\bx@bbl@captlang\bx@bbl@@main - \let\bx@bbl@captlang\bbl@main@language \fi - \ifx\bx@bbl@captlang\bx@bbl@@default - \else\expandafter\ifx\csname l@\bx@bbl@captlang\endcsname\relax - \@nolanerr\bx@bbl@captlang - \else \csname date\bx@bbl@captlang\endcsname - \csname captions\bx@bbl@captlang\endcsname - \fi\fi} -\@onlypreamble\bx@bbl@do@captlang - -%%%% \bx@bbl@copy{}{} -% Copies \captions... and \date... for save. -\def\bx@bbl@copy#1#2{% - \bx@bbl@copy@a{#1}{#2}{captions}% - \bx@bbl@copy@a{#1}{#2}{date}} -\def\bx@bbl@copy@a#1#2#3{% - \edef\bx@tmpa{\let\expandafter\noexpand\csname#3#1\endcsname - \expandafter\noexpand\csname#3#2\endcsname}\bx@tmpa} -\@namedef{captions**Z}{\@empty} -\@namedef{date**Z}{\@empty} - -%%<*> \bxcaptionlanguage{} -% Change the caption language manually, with disabling automatic -% switching on it. -\def\bxcaptionlanguage#1{% - \@ifpackageloaded{babel}% - {\ifx\bx@bbl@captlang\@undefined \bx@bbl@patch@sel@lang \fi - \xdef\bx@bbl@captlang{#1}}% - {\bx@err@nobbl}} -\@onlypreamble\bxcaptionlanguage - -%%<*> \bxmainlanguage{} -% 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@main@language{#1}} -\@onlypreamble\bxmainlanguage - -%%<+> \bxTrivLangDef{} -% 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@hx@bigchar -\ifnum\bxEngineTypeX>\@ne \bx@hx@bigchartrue \fi -\ifnum\bx@b@uptex>\z@ \bx@hx@bigchartrue \fi - -%%<+> \bxToHexTiny -% For one-to-two-digit hex strings. -\def\bxToHexTiny#1{% - \chardef\bxHex=#1\relax - \expandafter\bx@hx@tohextiny@a\meaning\bxHex\@nil} -\def\bx@hx@tohextiny@a#1"#2\@nil{\def\bxHex{#2}} - -%%<+> \bxToHexSmall -% For one-to-three-digit hex strings. -\def\bxToHexSmall#1{% - \mathchardef\bxHex=#1\relax - \expandafter\bx@hx@tohexsmall@a\meaning\bxHex\@nil} -\def\bx@hx@tohexsmall@a#1"#2\@nil{\def\bxHex{#2}} - -%%<+> \bxToHexTwo -% For zero-padded two-digit hex strings. -\def\bxToHexTwo#1{% - \chardef\bxHex=#1\relax - \expandafter\bx@hx@tohextwo@a\meaning\bxHex"0\@nil} -\def\bx@hx@tohextwo@a#1"#2#3#4#5\@nil{\bx@hx@tohextwo@b#2#3#4\@nil} -\def\bx@hx@tohextwo@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@hx@tohexthree@a\meaning\bxHex"00\@nil} -\def\bx@hx@tohexthree@a#1"#2#3#4#5#6\@nil{\bx@hx@tohexthree@b#2#3#4#5\@nil} -\def\bx@hx@tohexthree@b#1"#2\@nil{\def\bxHex{#2#1}} - -%%<+> \bxToHexFour -% For zero-padded four-digit hex strings. -\ifbx@hx@bigchar %----<*bigchar> -\def\bxToHexFour#1{% - \chardef\bxHex=#1\relax - \expandafter\bx@hx@tohexfour@a\meaning\bxHex"000\@nil} -\def\bx@hx@tohexfour@a#1"#2#3#4#5#6#7\@nil{\bx@hx@tohexfour@b#2#3#4#5#6\@nil} -\def\bx@hx@tohexfour@b#1"#2\@nil{\def\bxHex{#2#1}} -\else %----<*!bigchar> -\mathchardef\bx@hx@fzzz="4000 -\def\bxToHexFour#1{\bgroup - \@tempcnta=#1\relax\@tempcntb\@tempcnta\divide\@tempcntb\bx@hx@fzzz - \ifcase\@tempcntb \advance\@tempcnta\bx@hx@fzzz \or \or - \advance\@tempcnta-\bx@hx@fzzz \or \advance\@tempcnta-"8000 \or - \@tempcnta\z@ \fi - \mathchardef\bx@hx@tmp\@tempcnta - \expandafter\bx@hx@tohexfour@a\meaning\bx@hx@tmp\@nil - \egroup \let\bxHex\bx@hx@gtmp} -\def\bx@hx@tohexfour@a#1"#2#3\@nil{% - \expandafter\let\expandafter\bx@hx@tmp - \csname bxhx@X/\the\@tempcntb#2\endcsname - \ifx\bx@hx@tmp\relax \bx@err@oorng \global\let\bx@hx@gtmp\@empty - \else \xdef\bx@hx@gtmp{\bx@hx@tmp#3}\fi} -\def\bx@hx@nxt#1#2#3{\bgroup\catcode`#3=12 - \global\expandafter\def\csname bxhx@X/#1#2\endcsname{#3}\egroup} -\@for\bx@hx@tmp:={040,051,062,073,144,155,166,177,248,259,26A,27B,% - 34C,35D,36E,37F}\do{\expandafter\bx@hx@nxt\bx@hx@tmp} -\fi %---- - -%%<+> \bxToHexFive -%%<+> \bxToHexFiveX -% For zero-padded five-digit hex strings. -\def\bxToHexFive{\bx@tohexfive@aa\relax} -\def\bxToHexFiveX{\bx@tohexfive@aa - {\ifnum\@tempcnta>\bx@hx@vdmax \@tempcnta=\bx@hx@vdmax\fi}} -\ifbx@hx@bigchar %----<*bigchar> -\chardef\bx@hx@vdmax="FFFFF -\def\bx@tohexfive@aa#1#2{% - {\@tempcnta=#2\relax#1\global\chardef\bx@hx@gtmp=\@tempcnta}% - \expandafter\bx@hx@tohexfivex@a\meaning\bx@hx@gtmp"0000\@nil} -\def\bx@hx@tohexfivex@a#1"#2#3#4#5#6#7#8\@nil{% - \bx@hx@tohexfivex@b#2#3#4#5#6#7\@nil} -\def\bx@hx@tohexfivex@b#1"#2\@nil{\edef\bxHex{#2#1}} -\else %----<*!bigchar> -\edef\bx@hx@vdmax{"FFFFF\space} -\def\bx@tohexfive@aa#1#2{% - \bgroup \@tempcnta=#2\relax#1% - \@tempcntb=\@tempcnta \divide\@tempcnta\bx@hx@m\relax - \bxToHexTwo\@tempcnta \let\bx@hx@tmp\bxHex - \multiply\@tempcnta-\bx@hx@m\advance\@tempcnta\@tempcntb\relax - \bxToHexThree\@tempcnta \xdef\bx@hx@gtmp{\bx@hx@tmp\bxHex}% - \egroup \let\bxHex\bx@hx@gtmp} -\fi %---- - -%%<+> \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@hx@tmp\bxHex - \multiply\@tempcnta-\p@\advance\@tempcnta\@tempcntb\relax - \bxToHexFour\@tempcnta \xdef\bx@hx@gtmp{\bx@hx@tmp\bxHex}% - \egroup \let\bxHex\bx@hx@gtmp} - -%%<+> \bxToHexUC -% For zero-padded four-to-six-digit hex strings. -\ifbx@hx@bigchar %----<*bigchar> -\def\bxToHexUC#1{% - \chardef\bxHex=#1\relax - \expandafter\bx@hx@tohexuc@a\meaning\bxHex"\@empty\@empty000\@nil} -\def\bx@hx@tohexuc@a#1"#2#3#4#5#6#7#8#9\@nil{% - \bx@hx@tohexuc@b#2#3#4#5#6#7#8\@nil} -\def\bx@hx@tohexuc@b#1"#2\@nil{\edef\bxHex{#2#1}} -\else %----<*!bigchar> -\mathchardef\bx@hx@m="1000 -\def\bxToHexUC#1{% - \bgroup \@tempcnta=#1\relax - \@tempcntb=\@tempcnta \divide\@tempcnta\bx@hx@m\relax - \bxToHexSmall\@tempcnta \let\bx@hx@tmp\bxHex - \multiply\@tempcnta-\bx@hx@m\advance\@tempcnta\@tempcntb\relax - \bxToHexThree\@tempcnta \xdef\bx@hx@gtmp{\bx@hx@tmp\bxHex}% - \egroup \let\bxHex\bx@hx@gtmp} -\fi %---- - -%%<+> \bxToDecFour -\def\bxToDecFour#1{% - \expandafter\bx@hx@todecfour@a\number#1"000\@nil} -\def\bx@hx@todecfour@a#1#2#3#4#5#6\@nil{\bx@hx@todecfour@b#1#2#3#4#5\@nil} -\def\bx@hx@todecfour@b#1"#2\@nil{\def\bxHex{#2#1}} - -%%<+> \bxToDecFive -\def\bxToDecFive#1{% - \expandafter\bx@hx@todecfive@a\number#1"0000\@nil} -\def\bx@hx@todecfive@a#1#2#3#4#5#6#7\@nil{\bx@hx@todecfive@b#1#2#3#4#5#6\@nil} -\def\bx@hx@todecfive@b#1"#2\@nil{\def\bxHex{#2#1}} - -%%------ Input through code values - -%%<+> \bxBDHookUnicode -% A begindocument-hook about Unicode (& CID) input. -\providecommand\bxBDHookUnicode{\bx@bdhook@unicode@do} -\def\bx@bdhook@unicode@do{% - \AtBeginDocument{\bx@assign@Ux}% - \bxNullify\bxBDHookUnicode} -\@onlypreamble\bxBDHookUnicode -\@onlypreamble\bx@bdhook@unicode@do - -%%<+> \bxBDHookJisInput -% A begindocument-hook about JIS-code input. -\providecommand\bxBDHookJisInput{\bx@bdhook@jisinput@do} -\def\bx@bdhook@jisinput@do{% - \AtBeginDocument{\bx@assign@JI}% - \bxNullify\bxBDHookJisInput} -\@onlypreamble\bxBDHookJisInput -\@onlypreamble\bx@bdhook@jisinput@do - -%%<+> \bxFallbackSym -\def\bxFallbackSym#1{\leavevmode\bx@fbs@fnt{\dimen@=\bx@junit\relax - \hb@xt@\dimen@{\hss\vrule\@width\z@\@height.88\dimen@\@depth.12\dimen@ - \frame{\lower.04\dimen@\hb@xt@.84\dimen@{\hss\vbox to.84\dimen@{\vss - \hsize=.84\dimen@\baselineskip\z@\lineskip.01\dimen@\parskip\z@skip - \leftskip\@flushglue\rightskip\@flushglue\parfillskip\z@skip - \parindent\z@\let\\\bx@fbs@c\leavevmode\let\sml=\bx@fbs@fs\bx@fbs@f - #1\unskip\par\vss}\hss}}\hss}}} -\edef\bx@junit{\ifnum\bxEngineTypeX=\@ne 1zw\else 1em\fi} -\def\bx@fbs@c{\unskip\par\ignorespaces} -\def\bx@fbs@fnt{\global\let\bx@fbs@fnt\relax - \global\font\bx@fbs@fs=phvr at 2.4pt - \global\font\bx@fbs@f=phvr at 3.6pt} - -%%<+> \bxCodeValueSeq\CS{} -% Dispatcher for code value sequences. -\def\bxCodeValueSeq{% - \let\bx@cvseq@branch\bx@cvseq@branch@hex - \bx@cvseq@a} -\def\bx@cvseq@a#1#2{% - {\catcode33=12% - \xdef\bx@gtmpa{\uppercase{\def\noexpand\bx@tmpa{#2}}}}% - \let\bx@cvseq@do=#1\bx@gtmpa\relax - \expandafter\bx@cvseq@b\bx@tmpa,!\@nil} -\def\bx@cvseq@b{\futurelet\bx@toka\bx@cvseq@branch} -\def\bx@cvseq@branch@hex{% - \if !\bx@toka \let\bx@nxt\bx@cvseq@fin - \else\if "\bx@toka \let\bx@nxt\bx@cvseq@pfx - \else\if '\bx@toka \let\bx@nxt\bx@cvseq@pfx - \else\if +\bx@toka \let\bx@nxt\bx@cvseq@pfx - \else \let\bx@nxt\bx@cvseq@hex \fi\fi\fi\fi - \bx@nxt} -\def\bx@cvseq@pfx{% - \afterassignment\bx@cvseq@post \bxUcv=} -\def\bx@cvseq@hex{% - \afterassignment\bx@cvseq@post \bxUcv="0} -\def\bx@cvseq@post#1{% - \if ,#1\expandafter\bx@cvseq@post@a - \else \bx@err@ilnfm \expandafter\bx@cvseq@fin \fi} -\def\bx@cvseq@post@a{% - \bx@cvseq@do \bx@cvseq@b} -\def\bx@cvseq@fin#1\@nil{} - -%%<+> \bxCodeValueSeqD\CS{} -% Same as \bxCodeValueSeq, except that it defaults to decimal. -\def\bxCodeValueSeqD{% - \let\bx@cvseq@branch\bx@cvseq@branch@dec \bx@cvseq@a} -\def\bx@cvseq@branch@dec{% - \if !\bx@toka \let\bx@nxt\bx@cvseq@fin - \else \let\bx@nxt\bx@cvseq@pfx \fi - \bx@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@Ux} -\let\bxUI\relax -\DeclareRobustCommand*\bxUI{\bxCodeValueSeq\bx@UI} -\let\bxAJ\relax -\DeclareRobustCommand*\bxAJ{\bxCodeValueSeqD\bx@AJ} -\let\bxJI\relax -\DeclareRobustCommand*\bxJI{\bxCodeValueSeq\bx@JI} -\let\bxKI\relax -\DeclareRobustCommand*\bxKI{\bxCodeValueSeqD\bx@KI} - -%%<+> \bxUHex{}, \bxUInt{} -% Alternative entry points for \Ux. The code value is specified in -% hexadecimal (\bxUHex) / decimal (\bxUInt) numerals. -\def\bxUHex{\protect\bx@Uxh} -\def\bxUqInt{\protect\bx@UInt} -\def\bx@UInt#1{\bxUcv=#1\relax\bx@Ux} - -%% \bx@UIh@fb, \bx@AJ@fb -\def\bx@UIh@fb#1{\bxUcv="#1\relax\bxToHexFive\bxUcv - \expandafter\bx@b@fb@five\bxHex[Ux]} -\def\bx@AJ@fb{\bxToDecFive\bxUcv - \expandafter\bx@b@fb@five\bxHex[AJ]} -\def\bx@JI@fb{\bxToHexFour\bxUcv - \expandafter\bx@b@fb@four\bxHex[JI]} -\def\bx@KI@fb{\bxToDecFive\bxUcv - \expandafter\bx@b@fb@five\bxHex[KI]} -\def\bx@b@fb@five#1#2#3#4#5#6[#7]{% - \bxFallbackSym{{\sml#7}\\\bx@hx@supzero#1#2#3\\#4#5}} -\def\bx@b@fb@four#1#2#3#4#5[#6]{% - \bxFallbackSym{{\sml#6}\\#1#2\\#3#4}} -\def\bx@hx@supzero#1{\ifx0#1\else\expandafter#1\fi} - -%%%% \bx@assign@Ux -% Picks up appropriate drivers \bx@Ux etc. according to current -% load-states of packages. -% [driver] [purpose] [argument] [default] -% \bx@Ux Unicode \bxUcv go to \bx@UI -% \bx@Uxh Unicode #1(hex) go to \bx@UIh -% \bx@UI Unicode-ideo. \bxUcv go to \bx@UIh -% \bx@UIh Unicode-ideo. #1(hex) fallback -% \bx@AJ Adobe-Japan1 \bxUcv fallback -% From the default value it can be said: -% - Implemetations for \bx@Ux(h) must fallback on \bx@UI(h) when -% they cannot be handle the given character, unless such fallback -% is known to be useless. -% - When you implement one of \bx@Ux or \bx@Uxh, then you must also -% implement the other. -% - When you implement \bx@UI, then you must also implement \bx@UIh. -% (But you can implement only \bx@UIh.) - % Initial values -\def\bx@Ux{\bx@UI} % pass to \bx@UI -\def\bx@Uxh{\bx@UIh} % pass to \bx@UIh -\def\bx@UI{\bxToHexUC\bxUcv\bx@UIh\bxHex} % pass to \bx@UIh -\let\bx@UIh\bx@UIh@fb % 'fallback' driver -\let\bx@AJ\bx@AJ@fb % 'fallback' driver - % some helpers - % one more step put so that \UTF could be redefined -\def\bx@UIh@otf{\UTF} - % \UMS with the argument expanded -\def\bx@UIh@ums#1{\expandafter\UMS\expandafter{#1}} - % \CID with \bxUcv -\def\bx@AJ@otf{\CID\bxUcv} -\def\bx@assign@Ux{% - % If I have bxucs, then set \bx@Ux to \bx@Ux@ucs - % (which fallbacks on \bx@UI in failure). - \@ifpackageloaded{bxucs}{% - \let\bx@Ux\bx@Ux@ucs\let\bx@Uxh\bx@Uxh@ucs}{}% - % If I have ums or bxsuika then I use \UMS as \bx@UIh driver. - \@ifpackageloaded{ums}{\bxOktrue}{\bxOkfalse} - \@ifpackageloaded{bxsuika}{\bxOktrue}{} - \ifbxOk \let\bx@UIh\bx@UIh@UMS \fi - % If I have utf or otf then I use \UTF as \bx@UIh driver. - \@ifpackageloaded{utf}{\bxOktrue}{\bxOkfalse} - \@ifpackageloaded{otf}{\bxOktrue}{} - \ifbxOk \let\bx@UIh\bx@UIh@otf \let\bx@AJ\bx@AJ@otf \fi - % pxotf is same as otf, except that it also provides a direct - % way to \bx@UI and \bx@AJ. - \@ifpackageloaded{pxotf}{% - \let\bx@UIh\bxUIh@otf \let\bx@UI\pxUcvUTF \let\bx@AJ\pxUcvCID}{}% - % If I am upTeX I use \kchar. - \ifnum\bx@b@uptex>\z@ - \def\bx@UI{\kchar\bxUcv}\def\bx@UIh##1{\kchar"##1\relax}% - % If I am a Unicode-aware engine, then... - \else\ifnum\bxEngineTypeX>\@ne % - \def\bx@UI{\char\bxUcv}\def\bx@UIh##1{\char"##1\relax}% - \let\bx@Ux\bx@UI \let\bx@Uxh\bx@UIh - % zxjatype provides better handling of \UI & \Ux. - \@ifpackageloaded{zxjatype}{% - \let\bx@UI\zxjt@UI \let\bx@UIh\zxjt@UIh - \let\bx@Ux\zxjt@Ux \let\bx@Uxh\zxjt@Uxh}{}% - % zxotf provides \CID comamnd. - \@ifpackageloaded{zxotf}{% - \def\bx@AJ{\CID\bxUcv}}{}% - \fi\fi - % If \bx@UIh@usr is known I use it. - \ifx\bx@UIh@usr\@undefined\else \let\bx@UIh\bx@UIh@usr \fi - \let\bx@setuidriver@a\bx@setuidriver@b - \ifx\bx@AJ@usr\@undefined\else \let\bx@AJ\bx@AJ@usr \fi - \let\bx@setajdriver@a\bx@setajdriver@b -} -\@onlypreamble\bx@assign@Ux - -%%%% \setUIdriver\CS -\def\setUIdriver#1{% - \ifx#1\@undefined \bx@err@uddrv#1% - \else \bx@setuidriver@a#1\fi} -\def\bx@setuidriver@a#1{\let\bx@UIh@usr#1} -\def\bx@setuidriver@b#1{\let\bx@UIh#1} - -%%%% \setAJdriver\CS -\def\setAJdriver#1{% - \ifx#1\@undefined \bx@err@uddrv#1% - \else \bx@setajdriver@a#1\fi} -\def\bx@setajdriver@a#1{\let\bx@AJ@usr#1} -\def\bx@setajdriver@b#1{\let\bx@AJ#1} - -%%%% \bx@assign@JI -% Picks up appropriate drivers \bx@JI etc. -% [driver] [purpose] [argument] [default] -% \bx@JI JIS-code \bxUcv fallback -% \bx@KI Kuten-code \bxUcv fallback -\def\bx@JI{\bx@JI@fb} -\def\bx@KI{\bx@KI@fb} -\def\bx@assign@JI{% - % \JI & \KI are available only in (u)pTeX - \ifnum\bxEngineTypeX=\@ne - \def\bx@JI{\char\jis\bxUcv\relax}\let\bx@KI\bx@KI@pTeX - \fi -} -\ifnum\bxEngineTypeX=\@ne %----<*pTeX> -%% \bx@KI@pTeX - % \KI{2????} (0213 plane 2) works only when kanji-internal=sjis -\mathchardef\bx@ki@max=\ifnum\jis"2121="8140 30000\else 20000\fi\relax -\mathchardef\bx@ki@myr=10000 -\mathchardef\bx@ki@bas="2020 -\let\bx@ki@char=\char -\ifx\kchar\@undefined\else \let\bx@ki@char=\kchar \fi -\def\bx@KI@pTeX{% - \ifnum\bxUcv<\bx@ki@max\else \bxUcv=\z@ \fi - \ifnum\bxUcv<\bx@ki@myr \advance\bxUcv\bx@ki@myr \fi - \expandafter\bx@ki@ptex@a\the\bxUcv\@nil - \bx@ki@char\jis\bxUcv\relax} -\bgroup \@tempcnta=94 - \@for\bx@tmpa:=01,08,03,04,05,12,13,14,15\do{\advance\@tempcnta\@ne - \expandafter\xdef\csname bx@JSH/\bx@tmpa\endcsname{\the\@tempcnta}} - \@tempcntb=77 \loop - \advance\@tempcnta\@ne \advance\@tempcntb\@ne - \expandafter\xdef\csname bx@JSH/\the\@tempcntb\endcsname - {\the\@tempcnta}% - \ifnum\@tempcntb<94 \repeat -\egroup -\def\bx@ki@ptex@a#1#2#3#4#5#6\@nil{% - \ifnum#1=\@ne \bxUcv=#2#3\relax - \else \bxUcv=0\csname bx@JSH/#2#3\endcsname\relax \fi - \multiply\bxUcv\@cclvi \advance\bxUcv#4#5\relax - \advance\bxUcv\bx@ki@bas} -\fi %---- -\@onlypreamble\bx@assign@JI - -%%------ Assignment check - -%%%% \bxAssign \relax -\def\bxAssign{% - \bxOkfalse\afterassignment\bx@b@assign@a} -\def\bx@b@assign@a#1\relax{% - \def\bx@tmpa{#1}\ifx\bx@tmpa\@empty\bxOktrue\fi} - -%%------ Case conversion - -%%%% \bxToLower{} -% Sets to \bxRes converted to lowercase. -\def\bxToLower#1{% - \edef\bxRes{\lowercase{\def\noexpand\bxRes{#1}}}\bxRes} - -%%%% \bxToUpper{} -\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{} -% Appends \special{} 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{} -% Similar to the above, but it demands that the given special be -% placed as early as possible. -\def\bxDocumentSpecialUrgent#1{% - \bx@docspec@urgent@init - \bx@prepend@box\bx@dsu@box{\special{#1}}} -\def\bx@prepend@box#1#2{% - \global\setbox#1\vbox{#2\unvbox#1}} -\providecommand\bx@docspec@urgent@init{\bx@docspec@urgent@init@do} -\def\bx@docspec@urgent@init@do{% - \newbox\bx@dsu@box - \AtBeginDocument{% - \ifx\AtBeginShipoutFirst\@undefined - \bx@prepend@box\@begindvibox{\unvbox\bx@dsu@box}% - \else % 'atbegshi' package is in use - {\toks@{\unvbox\bx@dsu@box}% - \toks\tw@\expandafter{\AtBegShi@HookFirst}% - \xdef\AtBegShi@HookFirst{\the\toks@\the\toks\tw@}} - \fi}% - \bxNullify\bx@docspec@urgent@init} -\@onlypreamble\bxDocumentSpecialUrgent -\@onlypreamble\bx@docspec@urgent@init -\@onlypreamble\bx@docspec@urgent@init@do - -%%%% \recordpapersize -\def\recordpapersize{% - \bxDocumentSpecial{papersize=\the\paperwidth,\the\paperheight}% - \bxNullify\recordpapersize} -\@onlypreamble\recordpapersize - -%%<*> \dvipdfmxmapline{} -%%<*> \dvipdfmxmapfile{} -\def\dvipdfmxmapline#1{\bxDocumentSpecial{pdf:mapline #1}} -\@onlypreamble\dvipdfmxmapline -\def\dvipdfmxmapfile#1{\bxDocumentSpecial{pdf:mapfile #1}} -\@onlypreamble\dvipdfmxmapfile - -%%----- "safe-caret" module -\newif\ifbx@acr@ok -\newif\ifbx@acr@needed \bx@acr@neededfalse -\newif\ifbx@safecaret \bx@safecaretfalse -\catcode`\^=13 - -%%%%<*> \safecaret -\def\safecaret{% - \bx@safecarettrue} -\@onlypreamble\safecaret - -%%%% \bxEnableSafeCaret -\def\bxEnableSafeCaret{% - \bx@acr@neededtrue} -\@onlypreamble\bxEnableSafeCaret - -%%%% \bx@acr@defbytes -\def\bx@acr@defbytes{% - \bgroup\@tempcnta128\lccode`\Z=`\B\catcode`\^\active - \@whilenum\@tempcnta<256 \do{% - \lccode`\^\@tempcnta \chardef\bx@acr@tok\@tempcnta - \expandafter\bx@acr@defbytes@do@a\meaning\bx@acr@tok\@nil - \advance\@tempcnta\@ne}\egroup} -\def\bx@acr@defbytes@do@a#1"#2\@nil{% name is bx@acr@B/ab etc. - \lowercase{\expandafter\gdef\csname bx@acr@Z/#2\endcsname{^}}} -\@onlypreamble\bx@acr@defbytes -\@onlypreamble\bx@acr@defbytes@do@a - -%%%% \bx@acr@caret -%% This command should be \let'd to active <^>. -\def\bx@acr@caret{% - \let\bx@acr@out\@empty \bx@acr@caret@a} -\def\bx@acr@caret@a{% - \bx@acr@nextcaret{\bx@acr@caret@b}{\bx@acr@finish{\bx@acr@nxc}}} -\def\bx@acr@caret@b#1{% - \let\bx@acr@hex\@empty - \bx@acr@nexthexdgt{\bx@acr@caret@c}{\bx@acr@finish{\bx@acr@nxdc}}} -\def\bx@acr@caret@c#1{% - \edef\bx@acr@hex{#1}% - \bx@acr@nexthexdgt{\bx@acr@caret@d}{\bx@acr@finish{\bx@acr@nxdc\bx@acr@hex}}} -\def\bx@acr@caret@d#1{% - \edef\bx@acr@hex{\bx@acr@hex#1}% - \expandafter\bx@acr@caret@e\csname bx@acr@B/\bx@acr@hex\endcsname - \bx@acr@ifok{\bx@acr@nextcaret{\bx@acr@caret@g}{\bx@acr@finish{}}}% - {\bx@acr@finish{\bx@acr@nxdc\bx@acr@hex}}} -\def\bx@acr@caret@e#1{% - \ifx#1\relax \bx@acr@okfalse - \else \bx@acr@oktrue \expandafter\bx@acr@caret@f#1\fi} -\def\bx@acr@caret@f#1{% - \expandafter\def\expandafter\bx@acr@out\expandafter{\bx@acr@out#1}} -\def\bx@acr@caret@g#1{\bx@acr@caret@a} -\def\bx@acr@nxc{\noexpand^} -\def\bx@acr@nxdc{\noexpand^\noexpand^} -\def\bx@acr@nextcaret#1#2{% - \def\bx@acr@tmpa{#1}\def\bx@acr@tmpb{#2}% - \futurelet\bx@acr@tok\bx@acr@nextcaret@a} -\def\bx@acr@nextcaret@a{% - \let\bx@acr@nxt\bx@acr@tmpb - \ifx^\bx@acr@tok \let\bx@acr@nxt\bx@acr@tmpa - \fi \bx@acr@nxt} -\def\bx@acr@nexthexdgt#1#2{% - \def\bx@acr@tmpa{#1}\def\bx@acr@tmpb{#2}% - \futurelet\bx@acr@tok\bx@acr@nexthexdgt@a} -\def\bx@acr@nexthexdgt@a{% - \let\bx@acr@nxt\bx@acr@tmpb - \ifcat @\noexpand\bx@acr@tok \let\bx@acr@nxt\bx@acr@tmpa \fi - \ifcat "\noexpand\bx@acr@tok \let\bx@acr@nxt\bx@acr@tmpa \fi - \bx@acr@nxt} -\def\bx@acr@ifok{% - \ifbx@acr@ok \expandafter\@firstoftwo \else \expandafter \@secondoftwo \fi} -\def\bx@acr@finish#1{% - \edef\bx@acr@nxt{#1}% - \ifx\bx@acr@out\@empty \bx@acr@oktrue \else \bx@acr@okfalse \fi - \bx@acr@ifok{\expandafter\bx@acr@finish@a\bx@acr@nxt\@nil}% - {\expandafter\bx@acr@out\bx@acr@nxt}} -\def\bx@acr@finish@a#1#2\@nil{% - % replace first ^ with normal one to avoid loop - \bx@acr@normcaret #2} -\let\bx@acr@normcaret\sp % this does not mean much - -%%%% \bx@acr@initialize -\def\bx@acr@initialize{% - \bx@acr@defbytes} -\@onlypreamble\bx@acr@initialize - -%%%% \bx@acr@annihilate -\def\bx@acr@annihilate{% - \let\bx@acr@caret\relax\let\bx@acr@caret@a\relax - \let\bx@acr@caret@b\relax\let\bx@acr@caret@c\relax - \let\bx@acr@caret@d\relax\let\bx@acr@caret@e\relax - \let\bx@acr@caret@f\relax\let\bx@acr@caret@g\relax - \let\bx@acr@nextcaret\relax\let\bx@acr@nextcaret@a\relax - \let\bx@acr@nexthexdgt\relax\let\bx@acr@nexthexdgt@a\relax - \let\bx@acr@finish\relax\let\bx@acr@finish@a\relax} -\@onlypreamble\bx@acr@annihilate - -%%%% \bx@acr@babel@hookcaret -\def\bx@acr@babel@hookcaret{% - \expandafter\ifx\csname active@char\string^\endcsname\relax\else - \declare@shorthand\system@group{^}{\bx@acr@caret}% - \let\bx@acr@normcaret\bx@acr@babel@normcaret - \bxEnableSafeCaret \fi} -\@onlypreamble\bx@acr@babel@hookcaret -\edef\bx@acr@babel@normcaret{% - \expandafter\noexpand\csname normal@char\string^\endcsname} - -%%%% \bx@acr@verbatim@hookcaret -\def\bx@acr@verbatim@hookcaret{% - \g@addto@macro\@noligs{\catcode`\^\active\let^\bx@acr@caret - \let\bx@acr@normcaret\bx@acr@verb@normcaret}% - \bxEnableSafeCaret} -\begingroup \catcode`\^=12 -\global\let\bx@acr@verb@normcaret=^\endgroup -\@onlypreamble\bx@acr@verbatim@hookcaret - -%%%% begin-document hook -\providecommand*\bxBDHookSafeCaret{\bx@bdhook@safecaret@do} -\def\bx@bdhook@safecaret@do{% - \AtBeginDocument{% - %% function activated by '\safecaret' - \ifbx@safecaret - \@ifpackageloaded{babel}{\bx@acr@babel@hookcaret}{}% - \bx@acr@verbatim@hookcaret - \fi - %% initialize or annihilate... - \ifbx@acr@needed \bx@acr@initialize - \else \bx@acr@annihilate \fi - \let\bxEnableSafeCaret\@undefined}% - \bxNullify\bxBDHookSafeCaret} -\@onlypreamble\bx@bdhook@safecaret@do - -\catcode`\^=6 -%%------ "shadow map" module - -%%%% \bxUseShadowMap\CS{} -\def\bxUseShadowMap#1#2{% - \global\font#1=#2\relax} - -%%%% \bxMap\CS -\mathchardef\bx@m@cc=256 -\def\bxMap#1{\begingroup\count@\bxUcv\divide\count@\bx@m@cc - \chardef\bx@m@hb\count@ \multiply\count@\bx@m@cc - \advance\bxUcv-\count@ \setbox\z@\hbox{#1\bx@m@hb\char\bxUcv}% - \global\bxUcv\wd\z@ \endgroup} - -%%------ all done -\bx@b@resetcatcodes \let\bx@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 diff --git a/Master/texmf-dist/tex/platex/pxbase/pxbase.sty b/Master/texmf-dist/tex/platex/pxbase/pxbase.sty index e27f2579c7a..d8632d6140f 100644 --- a/Master/texmf-dist/tex/platex/pxbase/pxbase.sty +++ b/Master/texmf-dist/tex/platex/pxbase/pxbase.sty @@ -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@pkgname{pxbase} -\def\px@b@pkgname{PXbase} -\def\px@error{\PackageError\px@pkgname} -\def\px@alert{\PackageWarningNoLine\px@pkgname} -\def\px@warn{\PackageInfo\px@pkgname} -\def\px@warn@aecs#1{\px@warn{Command \string#1 already exists}} - -%%------ Input through code values - -%%<*> \Ux, \UI, \AJ -\ifx\Ux\@undefined \def\Ux{\bxUx}% -\else \px@warn@aecs\Ux \fi -\ifx\UI\@undefined \def\UI{\bxUI}% -\else \px@warn@aecs\UI \fi -\ifx\AJ\@undefined \def\AJ{\bxAJ}% -\else \px@warn@aecs\AJ \fi - -%%<*> \JI, \KI -\ifx\JI\@undefined \def\JI{\bxJI}% -\else \px@warn@aecs\JI \fi -\ifx\KI\@undefined \def\KI{\bxKI}% -\else \px@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@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@tmpb\px@tmpa\@nil - -%%<*> \infojenc -\def\px@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@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@alert{Japanese PDF strings in upTeX.\MessageBreak - You must use upTeX-aware dvipdfmx}% - \bxNullify\usejapanesepdfstring} -\else - \def\usejapanesepdfstring{% - \px@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 diff --git a/Master/texmf-dist/tex/platex/pxbase/pxbasenc.def b/Master/texmf-dist/tex/platex/pxbase/pxbasenc.def index 8e2dc7a7cb2..adb0b56277a 100644 --- a/Master/texmf-dist/tex/platex/pxbase/pxbasenc.def +++ b/Master/texmf-dist/tex/platex/pxbase/pxbasenc.def @@ -1,19 +1,38 @@ -% -% pxbasenc.def -% -%%%% file declaration -\NeedsTeXFormat{pLaTeX2e} -\ProvidesFile{pxbasenc.def}[2010/05/05 v0.5 PX encoding library] +%% +%% This is file 'pxbasenc.def'. +%% -%%%% preparation -\RequirePackage{ifuptex} -%\def\pxec@b@pkgname{PXbase} -\def\pxec@error{\PackageError\px@b@pkgname} -\def\pxec@err@irfam#1{\pxec@error - {Encodings '\pxec@tmpa' redefined inconsistently}\@ehc} -\def\pxec@err@ukjsf{\pxec@error - {'\k@encoding' is not valid as JSF encoding}\@ehc} -\edef\pxec@resetcatcode{} % nothing for the present +%% file declaration +\NeedsTeXFormat{pLaTeX2e} +\ProvidesFile{pxbasenc.def}[2017/05/29 v1.1 PX encoding library] +\def\pxec@pkgname{PXbase} % bundle name + +%% code guards +\edef\pxec@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@sw \newif\ifpxec@star -%%------------------ CJK font declarations +%% errors +\def\pxec@error{\PackageError\pxec@pkgname} +\def\pxec@err@irfam#1{\pxec@error + {Encodings '\pxec@tmpa' redefined inconsistently}\@ehc} +\def\pxec@err@ukjsf{\pxec@error + {'\k@encoding' is not valid as JSF encoding}\@ehc} + +%--------------------------------------- CJK font declarations -%%%% obtain error kanji font setting -% for use as 'safe font setting' -\bgroup \escapechar\m@ne \error@kfontshape +%% obtain error kanji font setting for use as 'safe font setting' +\begingroup \escapechar\m@ne \error@kfontshape \expandafter\let\expandafter\pxec@tenc \csname t@enc@\f@encoding\endcsname \xdef\pxec@safe@jfontspec @@ -34,7 +59,7 @@ \csname \f@encoding/\f@family/\f@series/\f@shape\endcsname \global\expandafter\let\expandafter\pxec@safe@t@decl \csname \pxec@tenc/\f@family/\f@series/\f@shape\endcsname -\egroup +\endgroup %% \pxec@starinvoke\SOMECS \def\pxec@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@y\endcsname\@undefined}} -%%------------------- CJK named encodings +%--------------------------------------- CJK named encodings %%<+> \pxDeclareEncodingDispatcher{}{} \@onlypreamble\pxDeclareEncodingDispatcher @@ -259,7 +284,7 @@ \def\pxSetEncodingName#1#2#3{% \@namedef{pxec@EY/#1}{#2}\@namedef{pxec@ET/#1}{#3}} -%%------ font declarations using named encodings +%------------------------------- font declarations using named encodings %%<+> \pxec@supdef\SOMECS{}{} % Define \SOMECS to be if is non-empty, @@ -314,7 +339,7 @@ \pxDeclareCJKShape\pxec@y{#2}{#3}{#4}{#5}% \pxDeclareCJKShape\pxec@t{#2}{#3}{#4}{\pxec@z}} -%%------------------- JSF encodings +%--------------------------------------- JSF encodings %%<+> \pxDeclareJSFEncoding{}{}{,...} \def\pxDeclareJSFEncoding#1#2#3{% @@ -377,7 +402,7 @@ %%<+> \JSFShapeRaw{}{}{} \def\pxec@JSFShapeRaw{\pxDeclareFontShape} -%%------------------ basic encodings +%--------------------------------------- basic encodings %%%% the standard Japanese encodings \ifnativeupTeX @@ -456,7 +481,7 @@ \fi % -%%------------------ 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@resetcatcode +%--------------------------------------- all done +\pxec@restore@codes \endinput %% EOF diff --git a/Master/texmf-dist/tex/platex/pxbase/pxbsjc.def b/Master/texmf-dist/tex/platex/pxbase/pxbsjc.def index 26852f21cca..d8b27ec658e 100644 --- a/Master/texmf-dist/tex/platex/pxbase/pxbsjc.def +++ b/Master/texmf-dist/tex/platex/pxbase/pxbsjc.def @@ -1,6 +1,6 @@ % % pxbsjc.def % Warning: Do not change encoding of this file! -\def\px@tmpa{齷齷}% E9 BD B7 E9 BD B7 +\def\bxtb@tmpa{齷齷}% E9 BD B7 E9 BD B7 \endinput % EOF diff --git a/Master/texmf-dist/tex/platex/pxbase/pxbsjc1.def b/Master/texmf-dist/tex/platex/pxbase/pxbsjc1.def new file mode 100644 index 00000000000..2d045938286 --- /dev/null +++ b/Master/texmf-dist/tex/platex/pxbase/pxbsjc1.def @@ -0,0 +1,7 @@ +% +% pxbsjc.def +% Warning: Do not change encoding of this file! +\def\bxtb@tmpa{齷齷}% E9 BD B7 E9 BD B7 +% O! % 82 4F 21 +\endinput +% EOF diff --git a/Master/texmf-dist/tex/platex/pxbase/pxjsfenc.def b/Master/texmf-dist/tex/platex/pxbase/pxjsfenc.def index 0a61158d4d7..53a55dae44b 100644 --- a/Master/texmf-dist/tex/platex/pxbase/pxjsfenc.def +++ b/Master/texmf-dist/tex/platex/pxbase/pxjsfenc.def @@ -1,22 +1,39 @@ -% -% pxjsfenc.def -% -%%%% file declaration -\NeedsTeXFormat{pLaTeX2e} -\ProvidesFile{pxjsfenc.def}[2010/05/05 v0.5 PX JSF encoding] +%% +%% This is file 'pxjsfenc.def'. +%% -%%%% preparation +%% file declaration +\NeedsTeXFormat{pLaTeX2e} +\ProvidesFile{pxjsfenc.def}[2017/05/29 v1.1 PX JSF encoding] + +%% code guards +\edef\pxec@jsf@restore@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@addto@macro\pxec@jsf@restore@codes{% + \let\pxec@jsf@restore@codes\@undefined} + +%--------------------------------------- general + +%% packages \RequirePackage{pxbase} -\bxInputDefFile{pxbasenc} -% common with pxbasenc -%\def\pxec@b@pkgname{PXbase} -%\def\pxec@error{\PackageError\px@b@pkgname} -% -\edef\pxec@jsf@resetcatcode{\catcode34=\the\catcode34\relax} -\catcode34=12 %<"> +\bxRequireDefinition{pxbasenc} + +%% variables \newif\ifpxec@hyperref % true if hyperref patch is invoked -%%------ main module +%--------------------------------------- main %% \pxec@declare@jsf@gen{}{}{} \def\pxec@declare@jsf@ucs{\pxec@swtrue\pxec@declare@jsf@a} @@ -72,7 +89,7 @@ \pxec@declare@jsf@cid{CIDC}{J42}{} \pxec@declare@jsf@cid{CIDT}{J43}{} -%%------------------ processing in upTeX +%--------------------------------------- processing in upTeX \ifnativeupTeX \pxDeclareCJKEncoding*{J20}{J30} @@ -101,9 +118,9 @@ \def\pxec@out@jsf#1#2{% {}\[] {\kanjiencoding{#1}\selectfont \kchar\bxUcv}} -\pxec@jsf@resetcatcode +\pxec@jsf@restore@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@skiptoend#1\pxec@end{} \let\pxec@end\@empty -%%------------------ all done -\pxec@jsf@resetcatcode +%--------------------------------------- all done +\pxec@jsf@restore@codes \endinput %% EOF diff --git a/Master/texmf-dist/tex/platex/pxbase/upkcat.sty b/Master/texmf-dist/tex/platex/pxbase/upkcat.sty index 4f97b510c44..0f7529b1357 100644 --- a/Master/texmf-dist/tex/platex/pxbase/upkcat.sty +++ b/Master/texmf-dist/tex/platex/pxbase/upkcat.sty @@ -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@restore@codes{\x\let\noexpand\pxkq@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 % -%%%% \getkcatcode, \setkcatcode -\edef\skrestoreat{\catcode64=\the\catcode64}\catcode64=11 -\newcount\pxkq@cp \newif\ifpxkq@ok +%% package declaration +\NeedsTeXFormat{pLaTeX2e} +\ProvidesPackage{upkcat}[2017/05/29 v1.1 safe kcatcode access] + +%--------------------------------------- main + +%%<*> \getkcatcode{} \def\getkcatcode#1{\pxkq@getcp{#1}% \edef\thekcatcode{\the\kcatcode\pxkq@cp}} +%%<*> \setkcatcode{}{} \def\setkcatcode#1#2{\pxkq@getcp{#1}\kcatcode\pxkq@cp#2} +\newcount\pxkq@cp \newif\ifpxkq@ok \def\pxkq@getcp#1{\pxkq@getcp@a#1\relax\relax} \def\pxkq@nxt#1#2#3#4#5{\pxkq@cp#1\loop {\lccode`\?\pxkq@cp \advance\pxkq@cp-#3% @@ -45,6 +73,7 @@ \errmessage{Corrupted UTF-8 bytes}\pxkq@cp65535\relax} %\def\pxkq@end#1\relax{\showthe\pxkq@cp} -%%%% all done -\pxkqRestoreAt \endinput +%--------------------------------------- all done +\pxkq@restore@codes +\endinput %% EOF -- cgit v1.2.3