summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-09-22 23:34:54 +0000
committerKarl Berry <karl@freefriends.org>2012-09-22 23:34:54 +0000
commit2898e4e01423ae68e9e0e5d3a6a094bd69afe2b3 (patch)
tree936f50cc3904c9215d9b81b56660acf034fff6cc
parent07d5c5c0caaca1e6fcbba6c95f93e88a8f4451f4 (diff)
new latex package pxcjkcat (22sep12)
git-svn-id: svn://tug.org/texlive/trunk@27780 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/pxcjkcat/LICENSE27
-rw-r--r--Master/texmf-dist/doc/latex/pxcjkcat/README63
-rw-r--r--Master/texmf-dist/doc/latex/pxcjkcat/README-ja529
-rw-r--r--Master/texmf-dist/tex/latex/pxcjkcat/pxcjkcat.sty493
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/collection-langcjk.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/pxcjkcat.tlpsrc0
7 files changed, 1114 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/pxcjkcat/LICENSE b/Master/texmf-dist/doc/latex/pxcjkcat/LICENSE
new file mode 100644
index 00000000000..94bbd3121ab
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pxcjkcat/LICENSE
@@ -0,0 +1,27 @@
+$BK\%=%U%H%&%'%"$O(B MIT $B%i%$%;%s%9$N2<$GG[I[$5$l$^$9!#(B
+$BCx:n8"$O:n<T$G$k!VH,EP(B $B?rG7!JJLL>(B ZR$B!K!W$KB0$7$^$9!#(B
+$B$^$?K\%=%U%H%&%'%"$OL5J]>Z$G$9!#(B
+
+This software is distributed under the MIT License.
+
+The MIT License
+
+Copyright (c) 2012 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
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/Master/texmf-dist/doc/latex/pxcjkcat/README b/Master/texmf-dist/doc/latex/pxcjkcat/README
new file mode 100644
index 00000000000..f0f1927ebd9
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pxcjkcat/README
@@ -0,0 +1,63 @@
+PXcjkcat package
+
+A LaTeX package to provide LaTeX interface for manipulating the
+CJK category code ('kcatcode') table of upTeX, which determines the
+behavior of Unicode (non-ASCII) characters in source files.
+
+1. Overview
+
+The upTeX engine is an extention to the TeX engine and is developed by
+Takuji TANAKA since 2007. This extension mainly aims in providing
+better Unicode support to the pTeX engine, which has long been the
+de facto standard of the TeX engine in Japan. The upTeX engine inherits
+the basic architecture of pTeX, and only Japanese processing (which is
+already on multi-byte basis in pTeX) is lift to the full Unicode range,
+and non-Japanese processing remains on 8-bit basis (just like tra
+original TeX engine). Thus one can typeset UTF-8 encoded documents that
+contain all kinds of Unicode letters with use of upTeX accompanied with
+the standard techniques for handling UTF-8 letters in the traditional
+8-bit TeX engines (such as pdfTeX). The advantage of upTeX is the
+ability of high-quality Japanese typesetting, which is fully inherited
+from pTeX and is still lacking or at least on development in modern
+Unicode-aware engines such as XeTeX and LuaTeX.
+
+Since upTeX could treat all the Unicode letters either as non-CJK or
+CJK letter, it has the mechanism (called "kcatcode table") for
+specifying which letters should be treated as CJK. The pxcjkcat package
+provides a concise and user-friendly LaTeX interface to the mechanism.
+
+2. Installation
+
+In the distribution in conformance with TDS 1.1:
+
+ - *.sty -> $TEXMF/tex/platex/PXcjkcat/
+
+3. (Very) Basic Usage
+
+Unfortunately the full-fledged manual comes only in Japanese. Here
+the most basic usage is described.
+
+If your document is mainly in English (or some other Western language)
+and has sporadic occurrences of Japanese words/phrases, then put the
+following lines in the preamble:
+
+ \usepackage[prefernoncjk]{pxcjkcat}
+ \usepackage[utf8]{inputenc} % or utf8x if needed
+
+If your document is mainly in Japanese, then put the following lines
+in the preamble:
+
+ \usepackage[prefercjkvar]{pxcjkcat}
+ \usepackage[utf8]{inputenc} % or utf8x if needed
+
+The former setting treats the "CJK-ambiguous" punctuation symbols as
+non-CJK letters, while the latter as CJK letters. Of course, your
+document must in encoded in UTF-8.
+
+4. License
+
+This package is distributed under the MIT License. See the file LICENSE
+for more detail.
+
+----------------------------------------
+Takayuki YATO (aka. "ZR") <zrbabbler@yahoo.co.jp>
diff --git a/Master/texmf-dist/doc/latex/pxcjkcat/README-ja b/Master/texmf-dist/doc/latex/pxcjkcat/README-ja
new file mode 100644
index 00000000000..544d6cc2e44
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pxcjkcat/README-ja
@@ -0,0 +1,529 @@
+==================================================
+== PXcjkcat バンドル v1.0 <2012/09/22> ==
+== 八登 崇之(Takayuki YATO;aka."ZR")==
+== <zrbabbler@yahoo.co.jp> ==
+==================================================
+(This file is encoded in UTF-8,)
+
+upTeX の和文文字カテゴリ(kcatcode)を扱う LaTeX 上のインタフェースを
+提供する。
+
+■ 本ソフトウェアの作者のサイト
+
+ En toi Pythmeni tes TeXnopoleos ~電脳世界の奥底にて~
+ http://zrbabbler.sp.land.to/
+
+ ※ 以下のページに一部機能の使用例を紹介した。
+ 「upLaTeX を使おう」
+ http://zrbabbler.sp.land.to/uplatex.html
+ 「PXbase パッケージ」
+ http://zrbabbler.sp.land.to/pxbase.html
+
+■ インストール
+
+ TDS 1.1 に従ったシステムでは、各ファイルを次の場所に移動する。
+ ・*.sty → $TEXMF/tex/platex/PXcjkcat/
+ (残りのファイルは不要)
+
+ W32TeX を C:\usr\local にインストールした場合の例。
+ ・*.sty → C:\usr\local\share\texmf-local\tex\platex\PXcjkcat
+
+
+-----------------------------------------------------
+ pxcjkcat パッケージ (v1.0) -- 和文文字カテゴリ操作
+-----------------------------------------------------
+
+■ 対応環境
+
+ upLaTeX2e (v0.11 以降)
+
+■ 読込
+
+ \usepackage[<オプション>]{pxcjkcat}
+
+ オプションとして以下のものが指定できる。
+
+ ccv1
+ 「モード CCV」を 1 (upTeX v0.11~0.28 と互換)とする。
+ ccv2
+ 「モード CCV」を 2 (upTeX v0.29 以降と互換)とする。
+ ※「モード CCV」については後で詳述する。
+ \cjkcategorymode で有効なモード値
+ kcatcode がモードに従って設定される。これ以外の場合は、パッケージ
+ 読込時の kcatcode の変更はない。
+
+■ 機能
+
+ \cjkcategory{<ブロック>,...}{<カテゴリ>}
+ <ブロック> で表される文字ブロック(複数指定が可能)の kcatcode を
+ <カテゴリ> に変更する。<ブロック> は「ブロック ID (後述)」または
+ 「ASCII 以外の文字」で指定され、後者の場合はその文字の属するブロック
+ を指す。<カテゴリ> は以下に示す様に「カテゴリ ID」または数値で指定
+ する。この変更は局所的(グルーピングに従う)である。
+ - noncjk (15): 欧文扱い
+ - kanji [または han] (16): 漢字扱い
+ - kana (17): 仮名扱い
+ - cjk (18): 「その他の和文」扱い
+ - hangul (19): ハングル扱い
+ ブロック ID の一覧および各々のカテゴリの意味については後掲。
+
+ \cjkcategorymode{<モード>}
+ 全てのブロックの kcatcode の一括設定を行う。モードには以下のものが
+ ある。後に揚げるものほど noncjk であるブロックが増える。各モードで
+ の具体的な設定値については「各モードでの kcatcode の値」の節を参照。
+ - forcecjk : upTeX の既定の設定と同じ。(ただし「文字分類バージョン」
+ による小さい差異がある。詳細については「文字分類バージョン」の節を
+ 参照。) ASCII 文字のみ noncjk で他のブロックは全て和文扱い(noncjk
+ 以外; 具体的な値は後述)。和文フォントの中の Unicode 値の割当がある
+ 全ての文字を和文文字として直接用いることができる。
+ - prefercjk : 和文扱いのブロックとして、forcecjk のものに加えて、
+ Adobe の定める CJK 文字集合(Adobe-Japan1, Adobe-GB1, Adobe-CNS1,
+ Adobe-Korea1)の何れかと共通部分をもつ文字ブロックのみを加えて
+ (具体的な値は forcecjk と同じ)、残りを noncjk に設定する。
+ - prefercjkvar : prefercjk とほぼ同じで、違いは grek, grek1, cyrl
+ の 3 つ(結果的にギリシャ・キリル文字の全て)が noncjk であること。
+ - prefernoncjk : 以下に掲げる「必要最低限」のブロックを除き、全てを
+ noncjk にする。
+ * kanji: 漢字・部首・注音字母: hani, haniA, haniB, haniC, hani1,
+ hani2, cjk01, cjk02, cjk03, cjk05, cjk06, bopo, bopo1.
+ * kana: ひらがな・カタカナ: hira, kana, kana1.
+ * cjk: CJK 記号の一部・全角/半角互換形・彝文字: cjk04, cjk08,
+ cjk07, cjk09, cjk10, cjk11, cjk12, cjk13, sym15, yiii, yiii1.
+ * hangul: ハングル完成形・ハングル字母: hang, hang1, hang2, hangA,
+ hangB.
+ ※モード CCV が 2 の場合、cjk12 の再分割の中の cjk1b, cjk1c は
+ kana に変更される。
+
+■ kcatcode の値の意味
+
+ upTeX (v0.11~) では Unicode 文字を複数の文字ブロックに分類し、各文字
+ ブロック毎に kcatcode と呼ばれるパラメタを持たせている。(文字ブロック
+ の分類は Unicode 文字ブロックとほぼ一致する。) これはそのブロックに
+ 属する文字が入力ソース中に現れた時の upTeX の字句解析の動作を規定する。
+ なお以下では、入力文字コードが UTF-8 であると仮定する。また文字が属する
+ ブロックの kcatcode のことを単にその文字の kcatcode と呼ぶ。
+
+ (1) ある文字の kcatcode が 15 (noncjk) である場合、その文字は和文文字
+ として扱われず、UTF-8 表現のバイト列とみなされる。字句解析の結果は
+ それらのバイトの catcode の値に依存する。例えば、文字 α(U+03B1) の
+ kcatcode が 15 の状態で α がソースに現れたら、欧文 TeX において
+ ^^8e^^b1 というバイト列が現れた時と同じ結果になる。ここで inputenc
+ で utf8 (または utf8x) を指定してあれば、inputenc における「文字 α」
+ の処理に回るはずである。
+
+ (2) ある文字の kcatcode が 15 以外である場合、その文字は 1 つの文字と
+ して扱われ、次の catcode をもつ文字と同様に字句解析される。
+ - kcatcode が 18 (cjk) → catcode 12 と同様
+ - kcatcode が 16, 17, 19 → catcode 11 と同様
+ そして、コントロールシーケンスの一部でないと判断された場合は、それ
+ は指定された kcatcode を保持する和文文字トークンとなる。
+
+ (3) kcatcode が 16, 17, 18 の和文文字トークンの直後の改行文字は無視
+ される(pTeX の和文と同じ)。kcatcode が 19 の和文文字トークンの直後
+ の改行文字は空白トークンとなる(欧文と同じ)。これはハングルかななる
+ 文書の組版に好都合だからである。
+
+ 補足:
+ - ASCII 文字は常に欧文 TeX と同じ扱いになる。従って、ASCII ブロック
+ (latn) の kcatcode 指定は意味をもたない。
+ - kcatcode を表す upTeX のプリミティブは \kcatcode<数値> で、これは
+ その数値を符号位置とする文字が属するブロックの kcatcode を指し示す
+ レジスタを表す。
+
+■ 文字分類バージョン
+
+ upTeX での文字ブロックの分割(および各ブロックの kcatcode 値の既定値)は
+ 改版時に変更され、これが互換性の問題を起こす可能性がある。
+ a. Unicode の改版での文字ブロックの追加に追随する為の変更。
+ b. 複数の文字種が混在する 1 つの Unicode 文字ブロックに対し、その中
+ で文字種により処理を変えたいとする要望に応えるための Unicode 文字
+ ブロックの再分割。例えば v0.29 の改版では Halfwidth and Fullwidth
+ Forms (ブロックID cjk12)が「再分割」されている。
+
+ 本パッケージでは、ブロックの分割の互換性について以下の方針を採る。
+ - a のタイプの変更は「ある版の upTeX で未対応の文字ブロックの文字は
+ その版では決して使われない」ことを仮定すれば互換性を損なうことが
+ ない。従って、これに対しては特に対策を行わない。
+ - b のタイプの変更(「再分割」と呼ぶ)は、既存のソースの動作を変更
+ することになるので、これに対しては互換性の為の対策を行う。
+ - ブロック ID を用いたブロック指定については、その対象文字集合が
+ upTeX の版により変わらないようにする。
+ - モード指定(\cjkcategorymode)を行う場合は、それによる kcatcode の
+ 設定値が upTeX の版により変わらないようにする。(ただし、その版に
+ 対応する Unicode の版で追加された文字を除く。)
+ - パッケージを読み込むだけでは kcatcode への変更は一切行われない。
+ 従って、この場合の設定値は当然 upTeX の版に依存する。
+
+ 具体的な対応をこれから述べる。まず、文字ブロックの「再分割」の違いを
+ 「文字分類バージョン(CCV;Character Category Version)」と呼ぶことに
+ する。現状では次のものが存在する。
+
+ CCV 1 : upTeX v0.11 での定義
+ CCV 2 : upTeX v0.29 での定義
+
+ その上で、分割の変更について、以下のように対応する。ここでは CCV 2 に
+ おける cjk12 の再分割を例にする。
+
+ - cjk12 の再分割に関しては、再分割後のブロックに新たに ID を与える
+ (cjk1a, cjk1b, cjk1c)。cjk12 も引き続き使用可能である。CCV が 2
+ 以降の upTeX で cjk12 の kcatcode を変更する場合には、内部では
+ cjk1a~cjk1c を同時に変更する動作を行う。当然ながら CCV 1 の upTeX
+ では cjk1a~cjk1c の指定は使えない。
+
+ CCV 2 では分割が変更されただけでなく、cjk1b と cjk1c の kcatcode の
+ 既定値が 18(cjk) から 17(kana) に変更される。本パッケージでのモード
+ 設定における kcatcode の設定値は upTeX の既定値を基礎としていて、特に
+ forcecjk は既定値と全く同じ設定としている。既定値の変更については以下
+ のように対応する。
+
+ - パッケージオプションにおいて、「モード設定の際の設定値の基礎とする
+ CCV」(これを「モード CCV」と呼ぶ)を指定できるようにする。すなわち
+ 'ccvN' (N=1~2) でモード CCV が N になる。
+ - forcecjk の設定値は CCV が「モード CCV」である upTeX の既定値と
+ 一致する。それ以外のモードの設定値もそれに応じて変わる。
+ - モード CCV の既定値は 1 とする。従って、*モード設定を使用した場合*
+ は、kcatcode の設定値は用いる upTeX の CCV に依存しない。
+ - モード設定オプション無しでパッケージを読み込んだだけの場合は、
+ kcatcode の設定は何も変更されない。従ってこの場合の設定値は用いる
+ upTeX の CCV に依存する。
+
+ 例として次の場合を考える。
+ [upTeX の CCV が 1]
+ (1a) \usepackage{pxcjkcat}
+ (1b) \usepackage[forcecjk]{pxcjkcat}
+ (1c) \usepackage[ccv1,forcecjk]{pxcjkcat}
+ [upTeX の CCV が 2]
+ (2a) \usepackage{pxcjkcat}
+ (2b) \usepackage[forcecjk]{pxcjkcat}
+ (2c) \usepackage[ccv1,forcecjk]{pxcjkcat}
+ (2d) \usepackage[ccv2,forcecjk]{pxcjkcat}
+ (1a)(1b)(1c)(2b)(2c) は CCV 1 の既定値、(2a)(2d) は CCV 2 の既定値と
+ 同じ値に設定される。
+
+ 最後の注意点として、\cjkcategory でブロック指定に「文字」を使った場合
+ は単純にその文字の属する文字ブロックとみなされ、その動作は用いる upTeX
+ の CCV に依存し、モード CCV とは無関係である。
+
+■ Unicode ブロック ID 一覧
+
+ 文字分類バージョン(CCV) 1 でのブロック。ただし [2] の注釈を付したもの
+ は CCV 2 の upTeX で追加されたブロックである(先述の通り、Unicode 文字
+ ブロック追加による変更に関しては CCV は関知しない)。CCV 1 の upTeX で
+ は、例えば nkoo の範囲は実際には U+07C0~08FF となる。
+
+ ID Unicode 範囲 名称
+ latn 0000 .. 007F Basic Latin
+ latn1 0080 .. 00FF Latin-1 Supplement
+ latnA 0100 .. 017F Latin Extended-A
+ latnB 0180 .. 024F Latin Extended-B
+ latn2 0250 .. 02AF IPA Extensions
+ sym01 02B0 .. 02FF Spacing Modifier Letters
+ sym02 0300 .. 036F Combining Diacritical Marks
+ grek 0370 .. 03FF Greek and Coptic
+ cyrl 0400 .. 04FF Cyrillic
+ cyrl1 0500 .. 052F Cyrillic Supplement
+ armn 0530 .. 058F Armenian
+ hebr 0590 .. 05FF Hebrew
+ arab 0600 .. 06FF Arabic
+ syrc 0700 .. 074F Syriac
+ arab1 0750 .. 077F Arabic Supplement
+ thaa 0780 .. 07BF Thaana
+ nkoo 07C0 .. 07FF NKo
+ samr [2] 0800 .. 08FF Samaritan
+ deva 0900 .. 097F Devanagari
+ beng 0980 .. 09FF Bengali
+ guru 0A00 .. 0A7F Gurmukhi
+ gujr 0A80 .. 0AFF Gujarati
+ orya 0B00 .. 0B7F Oriya
+ taml 0B80 .. 0BFF Tamil
+ telu 0C00 .. 0C7F Telugu
+ knda 0C80 .. 0CFF Kannada
+ mlym 0D00 .. 0D7F Malayalam
+ sinh 0D80 .. 0DFF Sinhala
+ thai 0E00 .. 0E7F Thai
+ laoo 0E80 .. 0EFF Lao
+ tibt 0F00 .. 0FFF Tibetan
+ mymr 1000 .. 109F Myanmar
+ geor 10A0 .. 10FF Georgian
+ hang1 1100 .. 11FF Hangul Jamo
+ ethi 1200 .. 137F Ethiopic
+ ethi1 1380 .. 139F Ethiopic Supplement
+ cher 13A0 .. 13FF Cherokee
+ cans 1400 .. 167F Unified Canadian Aboriginal Syllabics
+ ogam 1680 .. 169F Ogham
+ runr 16A0 .. 16FF Runic
+ tglg 1700 .. 171F Tagalog
+ hano 1720 .. 173F Hanunoo
+ buhd 1740 .. 175F Buhid
+ tagb 1760 .. 177F Tagbanwa
+ khmr 1780 .. 17FF Khmer
+ mong 1800 .. 187F Mongolian
+ cans1 [2] 1880 .. 18FF Unified Canadian Aboriginal Syllabics
+ Extended
+ limb 1900 .. 194F Limbu
+ tale 1950 .. 197F Tai Le
+ talu 1980 .. 19DF New Tai Lue
+ khmr1 19E0 .. 19FF Khmer Symbols
+ bugi 1A00 .. 1A1F Buginese
+ lana [2] 1A20 .. 1AFF Tai Tham
+ bali 1B00 .. 1B7F Balinese
+ sund [2] 1B80 .. 1BFF Sundanese
+ lepc [2] 1C00 .. 1C4F Lepcha
+ olck [2] 1C50 .. 1CCF Ol Chiki
+ sym38 [2] 1CD0 .. 1CFF Vedic Extensions
+ latn4 1D00 .. 1D7F Phonetic Extensions
+ latn5 1D80 .. 1DBF Phonetic Extensions Supplement
+ sym03 1DC0 .. 1DFF Combining Diacritical Marks Supplement
+ latn3 1E00 .. 1EFF Latin Extended Additional
+ grek1 1F00 .. 1FFF Greek Extended
+ sym04 2000 .. 206F General Punctuation
+ sym05 2070 .. 209F Superscripts and Subscripts
+ sym06 20A0 .. 20CF Currency Symbols
+ sym07 20D0 .. 20FF Combining Diacritical Marks for Symbols
+ sym08 2100 .. 214F Letterlike Symbols
+ sym09 2150 .. 218F Number Forms
+ sym10 2190 .. 21FF Arrows
+ sym11 2200 .. 22FF Mathematical Operators
+ sym12 2300 .. 23FF Miscellaneous Technical
+ sym13 2400 .. 243F Control Pictures
+ sym14 2440 .. 245F Optical Character Recognition
+ sym15 2460 .. 24FF Enclosed Alphanumerics
+ sym16 2500 .. 257F Box Drawing
+ sym17 2580 .. 259F Block Elements
+ sym18 25A0 .. 25FF Geometric Shapes
+ sym19 2600 .. 26FF Miscellaneous Symbols
+ sym20 2700 .. 27BF Dingbats
+ sym21 27C0 .. 27EF Miscellaneous Mathematical Symbols-A
+ sym22 27F0 .. 27FF Supplemental Arrows-A
+ brai 2800 .. 28FF Braille Patterns
+ sym23 2900 .. 297F Supplemental Arrows-B
+ sym24 2980 .. 29FF Miscellaneous Mathematical Symbols-B
+ sym25 2A00 .. 2AFF Supplemental Mathematical Operators
+ sym26 2B00 .. 2BFF Miscellaneous Symbols and Arrows
+ glag 2C00 .. 2C5F Glagolitic
+ latnC 2C60 .. 2C7F Latin Extended-C
+ copt 2C80 .. 2CFF Coptic
+ geor1 2D00 .. 2D2F Georgian Supplement
+ tfng 2D30 .. 2D7F Tifinagh
+ ethi2 2D80 .. 2DDF Ethiopic Extended
+ cyrlA [2] 2DE0 .. 2DFF Cyrillic Extended-A
+ sym27 2E00 .. 2E7F Supplemental Punctuation
+ cjk01 2E80 .. 2EFF CJK Radicals Supplement
+ cjk02 2F00 .. 2FEF Kangxi Radicals
+ cjk03 2FF0 .. 2FFF Ideographic Description Characters
+ cjk04 3000 .. 303F CJK Symbols and Punctuation
+ hira 3040 .. 309F Hiragana
+ kana 30A0 .. 30FF Katakana
+ bopo 3100 .. 312F Bopomofo
+ hang2 3130 .. 318F Hangul Compatibility Jamo
+ cjk05 3190 .. 319F Kanbun
+ bopo1 31A0 .. 31BF Bopomofo Extended
+ cjk06 31C0 .. 31EF CJK Strokes
+ kana1 31F0 .. 31FF Katakana Phonetic Extensions
+ cjk07 3200 .. 32FF Enclosed CJK Letters and Months
+ cjk08 3300 .. 33FF CJK Compatibility
+ haniA 3400 .. 4DBF CJK Unified Ideographs Extension A
+ sym28 4DC0 .. 4DFF Yijing Hexagram Symbols
+ hani 4E00 .. 9FFF CJK Unified Ideographs
+ yiii A000 .. A48F Yi Syllables
+ yiii1 A490 .. A4CF Yi Radicals
+ lisu [2] A4D0 .. A4FF Lisu
+ vaii [2] A500 .. A63F Vai
+ cyrlB [2] A640 .. A69F Cyrillic Extended-B
+ bamu [2] A6A0 .. A6FF Bamum
+ sym29 A700 .. A71F Modifier Tone Letters
+ latnD A720 .. A7FF Latin Extended-D
+ sylo A800 .. A82F Syloti Nagri
+ sym39 [2] A830 .. A83F Common Indic Number Forms
+ phag A840 .. AB7F Phags-pa
+ saur [2] A880 .. A8DF Saurashtra
+ deva1 [2] A8E0 .. A8FF Devanagari Extended
+ kali [2] A900 .. A92F Kayah Li
+ rjng [2] A930 .. A95F Rejang
+ hangA [2] A960 .. A97F Hangul Jamo Extended-A
+ java [2] A980 .. A9FF Javanese
+ cham [2] AA00 .. AA5F Cham
+ mymrA [2] AA60 .. AA7F Myanmar Extended-A
+ tavt [2] AA80 .. ABBF Tai Viet
+ mtei [2] ABC0 .. ABFF Meetei Mayek
+ hang AC00 .. D7AF Hangul Syllables
+ hangB [2] D7B0 .. D7FF Hangul Jamo Extended-B
+ spc01 D800 .. DB7F High Surrogates
+ spc02 DB80 .. DBFF High Private Use Surrogates
+ spc03 DC00 .. DFFF Low Surrogates
+ spc04 E000 .. F8FF Private Use Area
+ hani1 F900 .. FAFF CJK Compatibility Ideographs
+ latn6 FB00 .. FB4F Alphabetic Presentation Forms
+ arab2 FB50 .. FDFF Arabic Presentation Forms-A
+ spc05 FE00 .. FE0F Variation Selectors
+ cjk09 FE10 .. FE1F Vertical Forms
+ sym30 FE20 .. FE2F Combining Half Marks
+ cjk10 FE30 .. FE4F CJK Compatibility Forms
+ cjk11 FE50 .. FE6F Small Form Variants
+ arab3 FE70 .. FEFF Arabic Presentation Forms-B
+ cjk12 FF00 .. FFEF Halfwidth and Fullwidth Forms
+ spc06 FFF0 .. FFFF Specials
+ linb 10000 .. 1007F Linear B Syllabary
+ linb1 10080 .. 100FF Linear B Ideograms
+ sym31 10100 .. 1013F Aegean Numbers
+ grek2 10140 .. 1018F Ancient Greek Numbers
+ sym40 [2] 10190 .. 101CF Ancient Symbols
+ sym41 [2] 101D0 .. 1027F Phaistos Disc
+ lyci [2] 10280 .. 1029F Lycian
+ cari [2] 102A0 .. 102FF Carian
+ ital 10300 .. 1032F Old Italic
+ goth 10330 .. 1037F Gothic
+ ugar 10380 .. 1039F Ugaritic
+ xpeo 103A0 .. 103FF Old Persian
+ dsrt 10400 .. 1044F Deseret
+ shaw 10450 .. 1047F Shavian
+ osma 10480 .. 107FF Osmanya
+ cprt 10800 .. 1083F Cypriot Syllabary
+ armi [2] 10840 .. 108FF Imperial Aramaic
+ phnx 10900 .. 1091F Phoenician
+ lydi [2] 10920 .. 109FF Lydian
+ khar 10A00 .. 10A5F Kharoshthi
+ sarb [2] 10A60 .. 10AFF Old South Arabian
+ avst [2] 10B00 .. 10B3F Avestan
+ prti [2] 10B40 .. 10B5F Inscriptional Parthian
+ phli [2] 10B60 .. 10BFF Inscriptional Pahlavi
+ orkh [2] 10C00 .. 10E5F Old Turkic
+ sym42 [2] 10E60 .. 1107F Rumi Numeral Symbols
+ kthi [2] 11080 .. 11FFF Kaithi
+ xsux 12000 .. 123FF Cuneiform
+ xsux1 12400 .. 12FFF Cuneiform Numbers and Punctuation
+ egyp [2] 13000 .. 1CFFF Egyptian Hieroglyphs
+ sym32 1D000 .. 1D0FF Byzantine Musical Symbols
+ sym33 1D100 .. 1D1FF Musical Symbols
+ sym34 1D200 .. 1D2FF Ancient Greek Musical Notation
+ sym35 1D300 .. 1D35F Tai Xuan Jing Symbols
+ sym36 1D360 .. 1D3FF Counting Rod Numerals
+ sym37 1D400 .. 1EFFF Mathematical Alphanumeric Symbols
+ sym43 [2] 1F000 .. 1F02F Mahjong Tiles
+ sym44 [2] 1F030 .. 1F0FF Domino Tiles
+ sym45 [2] 1F100 .. 1F1FF Enclosed Alphanumeric Supplement
+ cjk13 [2] 1F200 .. 1FFFF Enclosed Ideographic Supplement
+ haniB 20000 .. 2A6FF CJK Unified Ideographs Extension B
+ haniC [2] 2A700 .. 2F7FF CJK Unified Ideographs Extension C
+ hani2 2F800 .. 2FFFF CJK Compatibility Ideographs Supplement
+ spc07 E0000 .. E00FF Tags
+ spc08 E0100 .. EFFFF Variation Selectors Supplement
+ spc09 F0000 .. FFFFF Supplementary Private Use Area-A
+ spc10 100000 .. 10FFFF Supplementary Private Use Area-B
+
+ ※ ID の命名規則
+ - Unicode ブロック名にスクリプト(用字系)の名前が含まれるものは、それ
+ に対する ISO 15924 のコードを用いた。単一のスクリプトのブロックが
+ 複数ある場合は、名前が "Extended-A, B, ..." のものは A, B, ... を、
+ それ以外のものは 1, 2, ... (一部符号値順でない)を末尾に付加した。
+ "Arabic" → arab ; "Latin Extended-C" → latnC
+ なお、Hiragana は hira だが Katakana は kana であることに注意。
+ - それ以外は、CJK 関係(cjk)、特殊用途(spc)、それ以外(sym)の 3 つに
+ 恣意的に分類して、2 桁の番号を付けた。この番号は基本的に符号値の
+ 順とするが、後から追加されたブロックはそうならない。
+
+ CCV 2 では以下の変更がある。
+
+ - cjk12 (Halfwidth and Fullwidth Forms) が次の 3 つに分割される。
+ * cjk1b : U+FF10..U+FF19, U+FF21..U+FF3A, U+FF41..U+FF5A
+ すなわち ASCII 英数字の全角互換形。
+ * cjk1c : U+FF66..U+FF6F, U+FF71..U+FF9D
+ すなわちカタカナの半角互換形。句読点等の記号は含まない。
+ * cjk1a : cjk12 から cjk1b, cjk1c を除いた残り。
+ cjk12 の指定も使用可能である。
+
+■ 各モードでの kcatcode の値
+
+ モード CCV が 1 の場合。
+
+ 記号 fc pc pcv pnc JIS CID 名称
+ latn X - - - * Basic Latin
+ latn1 O - - X * * Latin-1 Supplement
+ latnA O - - X * Latin Extended-A
+ latnB O - - X * Latin Extended-B
+ latn2 O - - X * IPA Extensions
+ sym01 O - - X * Spacing Modifier Letters
+ sym02 O - - X * Combining Diacritical Marks
+ grek O - X - * * Greek and Coptic
+ cyrl O - X - * * Cyrillic
+ hang1 H - - - + Hangul Jamo
+ latn3 O - - X * Latin Extended Additional
+ grek1 O - X - * Greek Extended
+ sym04 O - - X * * General Punctuation
+ sym05 O - - X * Superscripts and Subscripts
+ sym06 O - - X * Currency Symbols
+ sym07 O - - X * Combining Diacritical Marks for Symbols
+ sym08 O - - X * * Letterlike Symbols
+ sym09 O - - X * Number Forms
+ sym10 O - - X * * Arrows
+ sym11 O - - X * * Mathematical Operators
+ sym12 O - - X * * Miscellaneous Technical
+ sym13 O - - X * Control Pictures
+ sym15 O - - - * Enclosed Alphanumerics
+ sym16 O - - X * * Box Drawing
+ sym17 O - - X * Block Elements
+ sym18 O - - X * * Geometric Shapes
+ sym19 O - - X * * Miscellaneous Symbols
+ sym20 O - - X * Dingbats
+ sym23 O - - X * Supplemental Arrows-B
+ sym24 O - - X * Miscellaneous Mathematical Symbols-B
+ sym26 O - - X * Miscellaneous Symbols and Arrows
+ cjk01 I - - - * CJK Radicals Supplement
+ cjk02 I - - - * Kangxi Radicals
+ cjk03 I - - - + Ideographic Description Characters
+ cjk04 O - - - * * CJK Symbols and Punctuation
+ hira K - - - * * Hiragana
+ kana K - - - * * Katakana
+ bopo I - - - + Bopomofo
+ hang2 H - - - + Hangul Compatibility Jamo
+ cjk05 I - - - * Kanbun
+ bopo1 I - - - + Bopomofo Extended
+ cjk06 I - - - + CJK Strokes
+ kana1 K - - - * Katakana Phonetic Extensions
+ cjk07 O - - - * Enclosed CJK Letters and Months
+ cjk08 O - - - * CJK Compatibility
+ haniA I - - - * CJK Unified Ideographs Extension A
+ hani I - - - * * CJK Unified Ideographs
+ yiii O - - - + Yi Syllables
+ yiii1 O - - - + Yi Radicals
+ hangA H - - - Hangul Jamo Extended-B
+ hang H - - - + Hangul Syllables
+ hangB H - - - Hangul Jamo Extended-B
+ spc04 O - - X * Private Use Area
+ hani1 I - - - * CJK Compatibility Ideographs
+ latn6 O - - X * Alphabetic Presentation Forms
+ cjk09 O - - - * Vertical Forms
+ cjk10 O - - - * CJK Compatibility Forms
+ cjk11 O - - - + Small Form Variants
+ cjk12 O - - - * * Halfwidth and Fullwidth Forms
+ cjk13 O - - - Enclosed Ideographic Supplement
+ haniB I - - - * CJK Unified Ideographs Extension B
+ haniC I - - - CJK Unified Ideographs Extension C
+ hani2 I - - - * CJK Compatibility Ideographs Supplement
+ O X - - (その他のブロック)
+ all, prc, pc1, pnc の欄はそれぞれ forcecjk, prefercjk, prefercjkvar,
+ prefernoncjk モードでの kcatcode の値。値の意味: X=noncjk(15),
+ I=kanji(16), K=kana(17), O=cjk(18), H=hangul(19)。JIS 欄の * はその
+ ブロック内の文字に JIS X 0208 に含まれるものがあることを示す。また CID
+ 欄の * は Adobe-Japan1 に、+ は Adobe-GB1, Adobe-CNS1, Adobe-Korea1 に
+ 含まれるものがあることを示す。
+
+ モード CCV が 2 の場合、cjk12 の再分割について以下のようになる。
+
+ 記号 fc pc pcv pnc JIS CID
+ cjk1a O - - - * * cjk12 で cjk1b, cjk1c 以外
+ cjk1b K - - - * * ASCII 英数字の全角互換形
+ cjk1c K - - - * * カタカナの半角互換形(記号は含まず)
+
+ ※ upTeX の CCV が 2 でモード CCV 指定が 1 の場合は cjk1a~cjk1c の
+ 設定値は cjk12 のものに従う。
+
+----------------------------------------
+
+■ 更新履歴
+
+Version 1.0 <2012/09/22>
+ PXbase バンドル中の pxcjkcat パッケージを分離して本バンドルを作成。
+ pxcjkcat の中身は PXbase 0.5 版収録の「0.4a 版」と同一。
+
+# EOF
diff --git a/Master/texmf-dist/tex/latex/pxcjkcat/pxcjkcat.sty b/Master/texmf-dist/tex/latex/pxcjkcat/pxcjkcat.sty
new file mode 100644
index 00000000000..4772f99d46d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/pxcjkcat/pxcjkcat.sty
@@ -0,0 +1,493 @@
+%
+% pxcjkcat.sty
+%
+%%%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxcjkcat}[2012/09/22 v1.0 PX cjk-category mode]
+%\RequirePackage{ifuptex}[2008/03/14]\RequirenativeupTeX
+
+
+%%%% error messages
+\def\pxkc@pkgname{pxcjkcat}
+\def\pxkc@error{\PackageError\pxkc@pkgname}
+\def\pxkc@err@ivcsy#1{\pxkc@error
+ {Invalid name (#1) for cjk-category}%
+ {It was replaced by 18(cjk).}}
+\def\pxkc@err@ivbsy#1{\pxkc@error
+ {Invalid name (#1) for Unicode block}\@eha}
+\def\pxkc@err@ivmsy#1{\pxkc@error
+ {Invalid name (#1) for cjk-category mode}\@eha}
+\ifx\bxUseDebug\@undefined
+\let\pxkc@debug\@gobble
+\else
+\def\pxkc@debug#1{\typeout{**[\pxkc@pkgname] #1}}
+\fi
+
+%%%% environment check
+\@tempswafalse
+\ifx\ucs\@undefined\else \ifnum\ucs"3000="3000
+ \@tempswatrue
+\fi\fi
+\if@tempswa\else
+ \pxkc@error{Native upTeX is required.}%
+ {Package loading is aborted.}
+\expandafter\endinput\fi\relax
+
+%%%% prepraration
+\newif\ifpxkc@ok
+
+%%%% option handler
+\chardef\pxkc@mccv=1
+\DeclareOption{ccv1}{\chardef\pxkc@mccv=1 }
+\DeclareOption{ccv2}{\chardef\pxkc@mccv=2 }
+\chardef\pxkc@rccv=0
+%% ** These options are for debugging!
+\DeclareOption{@ccv1}{\chardef\pxkc@rccv=1 }
+\DeclareOption{@ccv2}{\chardef\pxkc@rccv=2 }
+\let\pxkc@ccmode\relax
+\DeclareOption*{\edef\pxkc@ccmode{\CurrentOption}}
+\ProcessOptions\relax
+
+%%-------- classification version check
+
+%% \pxkc@issameblock
+\def\pxkc@issameblock#1#2{%
+ \pxkc@okfalse{\kcatcode#1=16\kcatcode#2=17\relax
+ \ifnum\kcatcode#1=17 \aftergroup\pxkc@oktrue\fi}}
+\pxkc@issameblock{"FF01}{"FF11}
+\ifpxkc@ok
+\chardef\pxkc@ccv=1 % v0.11+
+\else
+\chardef\pxkc@ccv=2 % v0.29+
+\fi
+\ifnum\pxkc@rccv>\z@ \let\pxkc@ccv\pxkc@rccv \fi
+\pxkc@debug{CJK category version \number\pxkc@ccv}
+%
+\ifnum\pxkc@mccv>\pxkc@ccv
+ \pxkc@error{Invalid mode-CCV option (ccv\number\pxkc@mccv)}%
+ {The mode-CCV value given (\number\pxkc@mccv) is
+ larger than the real CCV (\number\pxkc@ccv).\MessageBreak
+ I assume the mode-CCV equals the real CCV.}
+ \let\pxkc@mccv\pxkc@ccv
+\fi
+
+%%------ \setcjkcategory, etc.
+
+%% \pxkc@kcatcode
+\ifx\bxUseDebug\@undefined
+\def\pxkc@kcatcode#1#2{\kcatcode#1=#2\relax}
+\else
+\def\pxkc@kcatcode#1#2{\kcatcode#1=#2\relax
+ \chardef\pxkc@xa=#1\chardef\pxkc@xb=#2\relax
+ \expandafter\pxkc@kcatcode@a\meaning\pxkc@xa\@nil}
+\def\pxkc@kcatcode@a#1"#2\@nil{%
+ \pxkc@debug{\string\kcatcode"#2 set to \number\pxkc@xb}}
+\fi
+
+
+%%%% table
+\def\pxkc@bval#1#2{%
+ \edef\pxkc@bslst{\pxkc@bslst\pxkc@sep#1}%
+ \@namedef{pxkc@B@@#1}{#2}\def\pxkc@sep{,}}
+\def\pxkc@bslst{}\def\pxkc@sep{}
+\def\pxkc@cval#1#2{\@namedef{pxkc@C@@#1}{#2}}
+\def\pxkc@gval#1#2{\@namedef{pxkc@G@@#1}{#2}}
+ %
+\pxkc@bval{latn}{"0} % Basic Latin
+\pxkc@bval{latn1}{"80} % Latin-1 Supplement
+\pxkc@bval{latnA}{"100} % Latin Extended-A
+\pxkc@bval{latnB}{"180} % Latin Extended-B
+\pxkc@bval{latn2}{"250} % IPA Extensions
+\pxkc@bval{sym01}{"2B0} % Spacing Modifier Letters
+\pxkc@bval{sym02}{"300} % Combining Diacritical Marks
+\pxkc@bval{grek}{"370} % Greek and Coptic
+\pxkc@bval{cyrl}{"400} % Cyrillic
+\pxkc@bval{cyrl1}{"500} % Cyrillic Supplement
+\pxkc@bval{armn}{"530} % Armenian
+\pxkc@bval{hebr}{"590} % Hebrew
+\pxkc@bval{arab}{"600} % Arabic
+\pxkc@bval{syrc}{"700} % Syriac
+\pxkc@bval{arab1}{"750} % Arabic Supplement
+\pxkc@bval{thaa}{"780} % Thaana
+\pxkc@bval{nkoo}{"7C0} % NKo
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{samr}{"800} % Samaritan
+\fi
+\pxkc@bval{deva}{"900} % Devanagari
+\pxkc@bval{beng}{"980} % Bengali
+\pxkc@bval{guru}{"A00} % Gurmukhi
+\pxkc@bval{gujr}{"A80} % Gujarati
+\pxkc@bval{orya}{"B00} % Oriya
+\pxkc@bval{taml}{"B80} % Tamil
+\pxkc@bval{telu}{"C00} % Telugu
+\pxkc@bval{knda}{"C80} % Kannada
+\pxkc@bval{mlym}{"D00} % Malayalam
+\pxkc@bval{sinh}{"D80} % Sinhala
+\pxkc@bval{thai}{"E00} % Thai
+\pxkc@bval{laoo}{"E80} % Lao
+\pxkc@bval{tibt}{"F00} % Tibetan
+\pxkc@bval{mymr}{"1000} % Myanmar
+\pxkc@bval{geor}{"10A0} % Georgian
+\pxkc@bval{hang1}{"1100} % Hangul Jamo
+\pxkc@bval{ethi}{"1200} % Ethiopic
+\pxkc@bval{ethi1}{"1380} % Ethiopic Supplement
+\pxkc@bval{cher}{"13A0} % Cherokee
+\pxkc@bval{cans}{"1400} % Unified Canadian Aboriginal Syllabics
+\pxkc@bval{ogam}{"1680} % Ogham
+\pxkc@bval{runr}{"16A0} % Runic
+\pxkc@bval{tglg}{"1700} % Tagalog
+\pxkc@bval{hano}{"1720} % Hanunoo
+\pxkc@bval{buhd}{"1740} % Buhid
+\pxkc@bval{tagb}{"1760} % Tagbanwa
+\pxkc@bval{khmr}{"1780} % Khmer
+\pxkc@bval{mong}{"1800} % Mongolian
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{cans1}{"1880} % Unified Canadian Aboriginal Syll. Ext.
+\fi
+\pxkc@bval{limb}{"1900} % Limbu
+\pxkc@bval{tale}{"1950} % Tai Le
+\pxkc@bval{talu}{"1980} % New Tai Lue
+\pxkc@bval{khmr1}{"19E0} % Khmer Symbols
+\pxkc@bval{bugi}{"1A00} % Buginese
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{lana}{"1A20} % Tai Tham
+\fi
+\pxkc@bval{bali}{"1B00} % Balinese
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{sund}{"1B80} % Sundanese
+\pxkc@bval{lepc}{"1C00} % Lepcha
+\pxkc@bval{olck}{"1C50} % Ol Chiki
+\pxkc@bval{sym38}{"1CD0} % Vedic Extensions
+\fi
+\pxkc@bval{latn4}{"1D00} % Phonetic Extensions
+\pxkc@bval{latn5}{"1D80} % Phonetic Extensions Supplement
+\pxkc@bval{sym03}{"1DC0} % Combining Diacritical Marks Supplement
+\pxkc@bval{latn3}{"1E00} % Latin Extended Additional
+\pxkc@bval{grek1}{"1F00} % Greek Extended
+\pxkc@bval{sym04}{"2000} % General Punctuation
+\pxkc@bval{sym05}{"2070} % Superscripts and Subscripts
+\pxkc@bval{sym06}{"20A0} % Currency Symbols
+\pxkc@bval{sym07}{"20D0} % Combining Diacritical Marks for Symbols
+\pxkc@bval{sym08}{"2100} % Letterlike Symbols
+\pxkc@bval{sym09}{"2150} % Number Forms
+\pxkc@bval{sym10}{"2190} % Arrows
+\pxkc@bval{sym11}{"2200} % Mathematical Operators
+\pxkc@bval{sym12}{"2300} % Miscellaneous Technical
+\pxkc@bval{sym13}{"2400} % Control Pictures
+\pxkc@bval{sym14}{"2440} % Optical Character Recognition
+\pxkc@bval{sym15}{"2460} % Enclosed Alphanumerics
+\pxkc@bval{sym16}{"2500} % Box Drawing
+\pxkc@bval{sym17}{"2580} % Block Elements
+\pxkc@bval{sym18}{"25A0} % Geometric Shapes
+\pxkc@bval{sym19}{"2600} % Miscellaneous Symbols
+\pxkc@bval{sym20}{"2700} % Dingbats
+\pxkc@bval{sym21}{"27C0} % Miscellaneous Mathematical Symbols-A
+\pxkc@bval{sym22}{"27F0} % Supplemental Arrows-A
+\pxkc@bval{brai}{"2800} % Braille Patterns
+\pxkc@bval{sym23}{"2900} % Supplemental Arrows-B
+\pxkc@bval{sym24}{"2980} % Miscellaneous Mathematical Symbols-B
+\pxkc@bval{sym25}{"2A00} % Supplemental Mathematical Operators
+\pxkc@bval{sym26}{"2B00} % Miscellaneous Symbols and Arrows
+\pxkc@bval{glag}{"2C00} % Glagolitic
+\pxkc@bval{latnC}{"2C60} % Latin Extended-C
+\pxkc@bval{copt}{"2C80} % Coptic
+\pxkc@bval{geor1}{"2D00} % Georgian Supplement
+\pxkc@bval{tfng}{"2D30} % Tifinagh
+\pxkc@bval{ethi2}{"2D80} % Ethiopic Extended
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{cyrlA}{"2DE0} % Cyrillic Extended-A
+\fi
+\pxkc@bval{sym27}{"2E00} % Supplemental Punctuation
+\pxkc@bval{cjk01}{"2E80} % CJK Radicals Supplement
+\pxkc@bval{cjk02}{"2F00} % Kangxi Radicals
+\pxkc@bval{cjk03}{"2FF0} % Ideographic Description Characters
+\pxkc@bval{cjk04}{"3000} % CJK Symbols and Punctuation
+\pxkc@bval{hira}{"3040} % Hiragana
+\pxkc@bval{kana}{"30A0} % Katakana
+\pxkc@bval{bopo}{"3100} % Bopomofo
+\pxkc@bval{hang2}{"3130} % Hangul Compatibility Jamo
+\pxkc@bval{cjk05}{"3190} % Kanbun
+\pxkc@bval{bopo1}{"31A0} % Bopomofo Extended
+\pxkc@bval{cjk06}{"31C0} % CJK Strokes
+\pxkc@bval{kana1}{"31F0} % Katakana Phonetic Extensions
+\pxkc@bval{cjk07}{"3200} % Enclosed CJK Letters and Months
+\pxkc@bval{cjk08}{"3300} % CJK Compatibility
+\pxkc@bval{haniA}{"3400} % CJK Unified Ideographs Extension A
+\pxkc@bval{sym28}{"4DC0} % Yijing Hexagram Symbols
+\pxkc@bval{hani}{"4E00} % CJK Unified Ideographs
+\pxkc@bval{yiii}{"A000} % Yi Syllables
+\pxkc@bval{yiii1}{"A490} % Yi Radicals
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{lisu}{"A4D0} % Lisu
+\pxkc@bval{vaii}{"A500} % Vai
+\pxkc@bval{cyrlB}{"A640} % Cyrillic Extended-B
+\pxkc@bval{bamu}{"A6A0} % Bamum
+\fi
+\pxkc@bval{sym29}{"A700} % Modifier Tone Letters
+\pxkc@bval{latnD}{"A720} % Latin Extended-D
+\pxkc@bval{sylo}{"A800} % Syloti Nagri
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{sym39}{"A830} % Common Indic Number Forms
+\fi
+\pxkc@bval{phag}{"A840} % Phags-pa
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{saur}{"A830} % Saurashtra
+\pxkc@bval{deva1}{"A8E0} % Devanagari Extended
+\pxkc@bval{kali}{"A900} % Kayah Li
+\pxkc@bval{rjng}{"A930} % Rejang
+\pxkc@bval{hangA}{"A960} % Hangul Jamo Extended-A
+\pxkc@bval{java}{"A980} % Javanese
+\pxkc@bval{cham}{"AA00} % Cham
+\pxkc@bval{mymrA}{"AA60} % Myanmar Extended-A
+\pxkc@bval{tavt}{"AA80} % Tai Viet
+\pxkc@bval{mtei}{"ABC0} % Meetei Mayek
+\fi
+\pxkc@bval{hang}{"AC00} % Hangul Syllables
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{hangB}{"D7B0} % Hangul Jamo Extended-B
+\fi
+\pxkc@bval{spc01}{"D800} % High Surrogates
+\pxkc@bval{spc02}{"DB80} % High Private Use Surrogates
+\pxkc@bval{spc03}{"DC00} % Low Surrogates
+\pxkc@bval{spc04}{"E000} % Private Use Area
+\pxkc@bval{hani1}{"F900} % CJK Compatibility Ideographs
+\pxkc@bval{latn6}{"FB00} % Alphabetic Presentation Forms
+\pxkc@bval{arab2}{"FB50} % Arabic Presentation Forms-A
+\pxkc@bval{spc05}{"FE00} % Variation Selectors
+\pxkc@bval{cjk09}{"FE10} % Vertical Forms
+\pxkc@bval{sym30}{"FE20} % Combining Half Marks
+\pxkc@bval{cjk10}{"FE30} % CJK Compatibility Forms
+\pxkc@bval{cjk11}{"FE50} % Small Form Variants
+\pxkc@bval{arab3}{"FE70} % Arabic Presentation Forms-B
+\ifnum\pxkc@ccv<2
+\pxkc@bval{cjk12}{"FF00} % Halfwidth and Fullwidth Forms
+\else
+\pxkc@gval{cjk12}{cjk1a,cjk1b,cjk1c} % Halfwidth and Fullwidth Forms
+\pxkc@bval{cjk1a}{"FF01} % cjk12 subblock A
+\pxkc@bval{cjk1b}{"FF10} % cjk12 subblock B
+\pxkc@bval{cjk1c}{"FF66} % cjk12 subblock C
+\fi
+\pxkc@bval{spc06}{"FFF0} % Specials
+\pxkc@bval{linb}{"10000} % Linear B Syllabary
+\pxkc@bval{linb1}{"10080} % Linear B Ideograms
+\pxkc@bval{sym31}{"10100} % Aegean Numbers
+\pxkc@bval{grek2}{"10140} % Ancient Greek Numbers
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{sym40}{"10190} % Ancient Greek Numbers
+\pxkc@bval{sym41}{"101D0} % Ancient Greek Numbers
+\pxkc@bval{lyci}{"10280} % Ancient Greek Numbers
+\pxkc@bval{cari}{"102A0} % Ancient Greek Numbers
+\fi
+\pxkc@bval{ital}{"10300} % Old Italic
+\pxkc@bval{goth}{"10330} % Gothic
+\pxkc@bval{ugar}{"10380} % Ugaritic
+\pxkc@bval{xpeo}{"103A0} % Old Persian
+\pxkc@bval{dsrt}{"10400} % Deseret
+\pxkc@bval{shaw}{"10450} % Shavian
+\pxkc@bval{osma}{"10480} % Osmanya
+\pxkc@bval{cprt}{"10800} % Cypriot Syllabary
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{armi}{"10840} % Imperial Aramaic
+\fi
+\pxkc@bval{phnx}{"10900} % Phoenician
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{lydi}{"10920} % Lydian
+\fi
+\pxkc@bval{khar}{"10A00} % Kharoshthi
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{sarb}{"10A60} % Old South Arabian
+\pxkc@bval{avst}{"10B00} % Avestan
+\pxkc@bval{prti}{"10B40} % Inscriptional Parthian
+\pxkc@bval{phli}{"10B60} % Inscriptional Pahlavi
+\pxkc@bval{orkh}{"10C00} % Old Turkic
+\pxkc@bval{sym42}{"10E60} % Rumi Numeral Symbols
+\pxkc@bval{kthi}{"11080} % Kaithi
+\fi
+\pxkc@bval{xsux}{"12000} % Cuneiform
+\pxkc@bval{xsux1}{"12400} % Cuneiform Numbers and Punctuation
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{egyp}{"13000} % Egyptian Hieroglyphs
+\fi
+\pxkc@bval{sym32}{"1D000} % Byzantine Musical Symbols
+\pxkc@bval{sym33}{"1D100} % Musical Symbols
+\pxkc@bval{sym34}{"1D200} % Ancient Greek Musical Notation
+\pxkc@bval{sym35}{"1D300} % Tai Xuan Jing Symbols
+\pxkc@bval{sym36}{"1D360} % Counting Rod Numerals
+\pxkc@bval{sym37}{"1D400} % Mathematical Alphanumeric Symbols
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{sym43}{"1F000} % Mahjong Tiles
+\pxkc@bval{sym44}{"1F030} % Domino Tiles
+\pxkc@bval{sym45}{"1F100} % Enclosed Alphanumeric Supplement
+\pxkc@bval{cjk13}{"1F200} % Enclosed Ideographic Supplement
+\fi
+\pxkc@bval{haniB}{"20000} % CJK Unified Ideographs Extension B
+\ifnum\pxkc@ccv<2\else
+\pxkc@bval{haniC}{"2A700} % CJK Unified Ideographs Extension C
+\fi
+\pxkc@bval{hani2}{"2F800} % CJK Compatibility Ideographs Supplement
+\pxkc@bval{spc07}{"E0000} % Tags
+\pxkc@bval{spc08}{"E0100} % Variation Selectors Supplement
+\pxkc@bval{spc09}{"F0000} % Supplementary Private Use Area-A
+\pxkc@bval{spc10}{"100000} % Supplementary Private Use Area-B
+\pxkc@bval{spc11}{"200000} % illegal
+ %
+\pxkc@cval{noncjk}{15}
+\pxkc@cval{kanji}{16}
+\pxkc@cval{han}{16}
+\pxkc@cval{kana}{17}
+\pxkc@cval{cjk}{18}
+\pxkc@cval{hangul}{19}
+ %
+\edef\pxkc@foreachblk{\noexpand\@for\noexpand\x:={\pxkc@bslst}}
+\let\pxkc@bval\relax\let\pxkc@cval\relax\let\pxkc@bslst\relax
+
+%%<*> \cjkcategory{<block>}{<category>}
+% Sets the kcatcode of block <block> to <category>.
+% Here <block> is given as a block name or a single character in the
+% block to be specified; <category> is given as a category name or
+% a number ranged in 15--19.
+\def\cjkcategory{%
+ \bgroup\forcecjktoken\pxkc@cjkcategory@oa}
+\def\pxkc@cjkcategory@oa#1{%
+ \gdef\pxkc@nxt{\pxkc@cjkcategory@ob{#1}}%
+ \egroup\pxkc@nxt}
+\def\pxkc@cjkcategory@ob#1#2{%
+ \ifnum2<1#2 \edef\pxkc@arg{#2}%
+ \else\@ifundefined{pxkc@C@@#2}%
+ {\pxkc@err@ivcsy{#2}\def\pxkc@arg{18}}%
+ {\edef\pxkc@arg{\@nameuse{pxkc@C@@#2}}}\fi
+ \pxkc@cjkcategory@a{#1}}
+\chardef\pxkc@la="7F
+\def\pxkc@cjkcategory@a#1{%
+ \@for\pxkc@x:={#1}\do{%
+ \expandafter\pxkc@cjkcategory@b\expandafter{\pxkc@x}}}
+\def\pxkc@cjkcategory@b#1{%
+ \pxkc@chkchr{#1}\ifnum\pxkc@cc>\pxkc@la
+ \pxkc@kcatcode{\pxkc@cc}{\pxkc@arg}%
+ \else\expandafter\ifx\csname pxkc@G@@#1\endcsname\relax
+ \expandafter\ifx\csname pxkc@B@@#1\endcsname\relax
+ \pxkc@err@ivbsy{#1}%
+ \else \pxkc@kcatcode{\@nameuse{pxkc@B@@#1}}{\pxkc@arg}\fi
+ \else \edef\pxkc@nxt{\noexpand\pxkc@cjkcategory@a
+ {\@nameuse{pxkc@G@@#1}}}\pxkc@nxt
+ \fi\fi}
+\def\pxkc@chkchr#1{%
+ \afterassignment\pxkc@chkchr@a\chardef\pxkc@cc=`#1?\relax}
+\def\pxkc@chkchr@a#1\relax{}
+
+%%<*> \cjkcategorymode{<mode>}
+% Invokes the cjk-category mode <mode>.
+\def\cjkcategorymode#1{%
+ \@ifundefined{pxkc@M@@#1}{\pxkc@err@ivmsy}
+ {\@nameuse{pxkc@M@@#1}}}
+
+%%%% cjkcategory modes
+\def\pxkc@resetcjkcat{%
+ \pxkc@foreachblk\do{\pxkc@kcatcode{\@nameuse{pxkc@B@@\x}}{18}}}
+\def\pxkc@M@@forcecjk{\pxkc@resetcjkcat
+ \cjkcategory{latn}{noncjk}%
+ \cjkcategory{bopo,bopo1,cjk01,cjk02,cjk03,cjk05,cjk06,hani,hani1}{kanji}%
+ \cjkcategory{hani2,haniA,haniB}{kanji}%
+ \cjkcategory{hira,kana,kana1}{kana}%
+ \cjkcategory{hang,hang1,hang2}{hangul}%
+ \ifnum\pxkc@mccv<2\else
+ \cjkcategory{cjk1b,cjk1c}{kana}%
+ \fi
+ \ifnum\pxkc@ccv<2\else
+ \cjkcategory{haniC}{kanji}%
+ \cjkcategory{hangA,hangB}{hangul}%
+ \fi
+}
+\def\pxkc@M@@prefercjk{\pxkc@M@@forcecjk
+ \@for\x:={%
+ cyrl1,armn,hebr,arab,syrc,arab1,thaa,nkoo,deva,beng,%
+ guru,gujr,orya,taml,telu,knda,mlym,sinh,thai,laoo,%
+ tibt,mymr,geor,ethi,ethi1,cher,cans,ogam,runr,tglg,%
+ hano,buhd,tagb,khmr,mong,limb,tale,talu,khmr1,bugi,%
+ bali,latn4,latn5,sym03,sym14,sym21,sym22,brai,sym25,glag,%
+ latnC,copt,geor1,tfng,ethi2,sym27,sym28,sym29,latnD,sylo,%
+ phag,spc01,spc02,spc03,arab2,spc05,sym30,arab3,spc06,linb,%
+ linb1,sym31,grek2,ital,goth,ugar,xpeo,dsrt,shaw,osma,%
+ cprt,phnx,khar,xsux,xsux1,sym32,sym33,sym34,sym35,sym36,%
+ sym37,spc07,spc08,spc09,spc10%
+ }\do{\pxkc@kcatcode{\@nameuse{pxkc@B@@\x}}{15}}%
+ \ifnum\pxkc@ccv<2\else
+ \cjkcategory{samr,cans1,lana,sund,lepc,olck,sym38,cyrlA}{noncjk}%
+ \cjkcategory{lisu,vaii,cyrlB,bamu,sym39,saur,deva1,kali}{noncjk}%
+ \cjkcategory{rjng,java,cham,mymrA,tavt,mtei,sym40,sym41}{noncjk}%
+ \cjkcategory{lyci,cari,armi,lydi,sarb,avst,prti,phli}{noncjk}%
+ \cjkcategory{orkh,sym42,kthi,egyp,sym43,sym44,sym45}{noncjk}%
+ \fi
+}
+\@namedef{pxkc@M@@prefercjkvar}{\pxkc@M@@prefercjk
+ \cjkcategory{cyrl,grek,grek1}{noncjk}%
+}
+\def\pxkc@M@@prefernoncjk{\pxkc@M@@prefercjkvar
+ \cjkcategory{latn1,latn2,latn3,latn6,latnA,latnB,spc04,sym01}{noncjk}%
+ \cjkcategory{sym02,sym04,sym05,sym06,sym07,sym08,sym09,sym10}{noncjk}%
+ \cjkcategory{sym11,sym12,sym13,sym16,sym17,sym18,sym19,sym20}{noncjk}%
+ \cjkcategory{sym23,sym24,sym26}{noncjk}%
+}
+\def\pxkc@M@@prefernoncjkvar{\pxkc@M@@prefernoncjk
+ \cjkcategory{sym04,sym10,sym18}{other}%
+}
+
+%%%% \showcjkcategory
+\def\showcjkcategory{%
+ \pxkc@foreachblk\do{%
+ \typeout{\x\space= \the\kcatcode\@nameuse{pxkc@B@@\x}}}}
+
+%%-------- \withcjktokendisabled, etc.
+
+%% \pxkc@genprobe
+\def\pxkc@genprobe{%
+ \edef\pxkc@tmpa{\expandafter\string\csname
+ pxkc@@\string ^^e3\string ^^81\string ^^82%
+ \string ^^e3\string ^^82\string ^^a2\endcsname}}
+\bgroup \kcatcode"3040=15\kcatcode"30A0=18
+ \disablecjktoken\pxkc@genprobe \global\let\pxkc@prb@d\pxkc@tmpa
+ \enablecjktoken\pxkc@genprobe \global\let\pxkc@prb@e\pxkc@tmpa
+ \forcecjktoken\pxkc@genprobe \global\let\pxkc@prb@f\pxkc@tmpa
+\egroup
+
+%% \pxkc@getcjktokmod\CS
+\def\pxkc@getcjktokmod#1{%
+ \bgroup \kcatcode"3040=15\kcatcode"30A0=18\pxkc@genprobe
+ \ifx\pxkc@tmpa\pxkc@prb@d \global\chardef\pxkc@gtmpa\z@
+ \else\ifx\pxkc@tmpa\pxkc@prb@e \global\chardef\pxkc@gtmpa\@ne
+ \else\ifx\pxkc@tmpa\pxkc@prb@f \global\chardef\pxkc@gtmpa\tw@
+ \else \global\let\pxkc@gtmpa\m@ne \fi\fi\fi
+ \egroup \let#1\pxkc@gtmpa}
+
+%%<+> \getcjktokenmode
+% Returns the value showing current mode to \thecjktokenmode
+% 0: \disablecjktoken
+% 1: \enablecjktoken
+% 2: \forcecjktoken
+\def\getcjktokenmode{\pxkc@getcjktokmod\thecjktokenmode}
+
+%%<*> \setcjktokenmode{<val>}
+\def\pxkc@setcjktokmod#1{%
+ \ifcase#1\disablecjktoken\or\enablecjktoken\or\forcecjktoken\fi}
+
+%%<*> \withcjktokendisabled, etc.
+\def\withcjktokendisabled{\pxkc@withcjktokmod\disablecjktoken\@iden}
+\def\withcjktokenenabled{\pxkc@withcjktokmod\enablecjktoken\@iden}
+\def\withcjktokenforced{\pxkc@withcjktokmod\forcecjktoken\@iden}
+\def\withcjktokendisabledex{\pxkc@withcjktokmod\disablecjktoken}
+\def\withcjktokenenabledex{\pxkc@withcjktokmod\enablecjktoken}
+\def\withcjktokenforcedex{\pxkc@withcjktokmod\forcecjktoken}
+\def\pxkc@withcjktokmod#1{%
+ \pxkc@getcjktokmod\pxkc@tokmod #1\pxkc@withcjktokmod@a}
+\def\pxkc@withcjktokmod@a#1#2{%
+ #1{#2}\pxkc@setcjktokmod\pxkc@tokmod}
+
+%%------ initial setup
+
+\ifx\pxkc@ccmode\relax\else
+\cjkcategorymode{\pxkc@ccmode}
+\fi
+
+%%------ all done
+\endinput
+%% EOF
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index a614ac88a41..0ace2808d8d 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -346,7 +346,7 @@ my @TLP_working = qw(
pst2pdf pstool pstricks pstricks-add pstricks-examples
pstricks-examples-en pstricks_calcnotes
psu-thesis ptptex punk punk-latex punknova purifyeps
- pxfonts pxgreeks pxtxalfa python
+ pxcjkcat pxfonts pxgreeks pxtxalfa python
qcm qobitree quoting qstest qsymbols qtree quotchap quotmark
r_und_s randbild randomwalk randtext rccol rcs rcs-multi rcsinfo
realboxes realscripts rec-thy recipe recipecard recycle rectopma
diff --git a/Master/tlpkg/tlpsrc/collection-langcjk.tlpsrc b/Master/tlpkg/tlpsrc/collection-langcjk.tlpsrc
index fcc7a009259..718612025e2 100644
--- a/Master/tlpkg/tlpsrc/collection-langcjk.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-langcjk.tlpsrc
@@ -27,6 +27,7 @@ depend jsclasses
depend luatexja
depend norasi-c90
depend ptex
+depend pxcjkcat
depend thailatex
depend uhc
depend uptex
diff --git a/Master/tlpkg/tlpsrc/pxcjkcat.tlpsrc b/Master/tlpkg/tlpsrc/pxcjkcat.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/pxcjkcat.tlpsrc