texlive[63427] Master/texmf-dist: pxcjkcat (28may22)

commits+karl at tug.org commits+karl at tug.org
Sat May 28 22:20:51 CEST 2022


Revision: 63427
          http://tug.org/svn/texlive?view=revision&revision=63427
Author:   karl
Date:     2022-05-28 22:20:51 +0200 (Sat, 28 May 2022)
Log Message:
-----------
pxcjkcat (28may22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/pxcjkcat/LICENSE
    trunk/Master/texmf-dist/doc/latex/pxcjkcat/README-ja.md
    trunk/Master/texmf-dist/doc/latex/pxcjkcat/README.md
    trunk/Master/texmf-dist/doc/latex/pxcjkcat/pxcjkcat.pdf
    trunk/Master/texmf-dist/doc/latex/pxcjkcat/pxcjkcat.tex
    trunk/Master/texmf-dist/tex/latex/pxcjkcat/pxcjkcat.sty

Modified: trunk/Master/texmf-dist/doc/latex/pxcjkcat/LICENSE
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pxcjkcat/LICENSE	2022-05-28 20:20:35 UTC (rev 63426)
+++ trunk/Master/texmf-dist/doc/latex/pxcjkcat/LICENSE	2022-05-28 20:20:51 UTC (rev 63427)
@@ -1,6 +1,6 @@
 The MIT License
 
-Copyright (c) 2018 Takayuki YATO (aka. "ZR")
+Copyright (c) 2010-2022 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

Modified: trunk/Master/texmf-dist/doc/latex/pxcjkcat/README-ja.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pxcjkcat/README-ja.md	2022-05-28 20:20:35 UTC (rev 63426)
+++ trunk/Master/texmf-dist/doc/latex/pxcjkcat/README-ja.md	2022-05-28 20:20:51 UTC (rev 63427)
@@ -30,6 +30,11 @@
 更新履歴
 --------
 
+  * Version 1.2 〈2022/05/25〉
+      - 最新の upTeX に対応させる。
+      - `nomode` オプションを追加。
+      - `ccv+` オプションの別名 `real` を追加。
+
   * Version 1.1 〈2018/04/01〉
       - upTeX 1.23 版以降に対応する CCV 3(`ccv3` オプション)を追加した。
       - `ccv+` オプションを追加。

Modified: trunk/Master/texmf-dist/doc/latex/pxcjkcat/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pxcjkcat/README.md	2022-05-28 20:20:35 UTC (rev 63426)
+++ trunk/Master/texmf-dist/doc/latex/pxcjkcat/README.md	2022-05-28 20:20:51 UTC (rev 63427)
@@ -90,6 +90,7 @@
 Revision History
 ----------------
 
+  * Version 1.2 〈2022/05/25〉
   * Version 1.1 〈2018/04/01〉
   * Version 1.0 〈2012/09/22〉
 

Modified: trunk/Master/texmf-dist/doc/latex/pxcjkcat/pxcjkcat.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/pxcjkcat/pxcjkcat.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pxcjkcat/pxcjkcat.tex	2022-05-28 20:20:35 UTC (rev 63426)
+++ trunk/Master/texmf-dist/doc/latex/pxcjkcat/pxcjkcat.tex	2022-05-28 20:20:51 UTC (rev 63427)
@@ -1,5 +1,6 @@
 % upLaTeX 文書; 文字コードは UTF-8
 \documentclass[uplatex,dvipdfmx,a4paper]{jsarticle}
+\renewcommand{\headfont}{\gtfamily\romanseries{sbc}\sffamily}
 \usepackage[T1]{fontenc}
 \usepackage{lmodern}
 \usepackage{geometry}
@@ -6,7 +7,12 @@
 \usepackage{xcolor}
 \usepackage[colorlinks,hyperfootnotes=false]{hyperref}
 \usepackage{pxjahyper}
-\hypersetup{linkcolor=blue!75!black,urlcolor=green!45!black}
+\hypersetup{linkcolor=blue!75!black,urlcolor=green!45!black,
+  pdftitle={pxcjkcatパッケージ},
+  pdfauthor={八登崇之}}
+\usepackage{bxtexlogo}
+\bxtexlogoimport{*}
+\usepackage[verb]{bxghost}
 \usepackage{shortvrb}
 \MakeShortVerb{\|}
 \usepackage{verbatim}
@@ -13,8 +19,8 @@
 \newenvironment{myverbatim}
   {\quote\small\verbatim}
   {\endverbatim\endquote}
-\newcommand{\PkgVersion}{1.1}
-\newcommand{\PkgDate}{2018/04/01}
+\newcommand{\PkgVersion}{1.2}
+\newcommand{\PkgDate}{2022/05/25}
 \newcommand{\Pkg}[1]{\textsf{#1}}
 \newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
 \newcommand{\Note}{\par\noindent ※}
@@ -22,10 +28,6 @@
 \newcommand{\strong}{\textsf}
 \newcommand{\wbr}{\linebreak[0]}
 \newcommand{\Code}[1]{{\usefont{T1}{lmtt}{l}{n}#1}}
-\providecommand{\pTeX}{p\TeX}
-\providecommand{\upTeX}{u\pTeX}
-\providecommand{\pLaTeX}{p\LaTeX}
-\providecommand{\upLaTeX}{u\pLaTeX}
 %-----------------------------------------------------------
 \begin{document}
 \title{\Pkg{pxcjkcat} パッケージ}
@@ -52,19 +54,30 @@
 オプションとして以下のものが指定できる。
 
 \begin{itemize}
-\item |ccv1|\Means
-  「モードCCV」を1({\upTeX} v0.11~0.28と互換)とする。
-\item |ccv2|\Means
-  「モードCCV」を2({\upTeX} v0.29~1.22と互換)とする。
-\item |ccv3|\Means
-  「モードCCV」を3({\upTeX} v1.23以降と互換)とする。
-\item |ccv+|\Means
-  「モードCCV」をエンジンの実のCCVと一致させる。
-  \Note 「モードCCV」については\ref{sec:CCV}節を参照。
-\item |\cjkcategorymode| \strong{命令で有効なモード値}\Means
+\item \strong{モードCCV指定}\Means
+  \<「モードCCV」の値を指定するオプション。
+  \Note モードCCVについては\ref{sec:CCV}節を参照。
+  \Note モードCCVの既定値は1であり、
+  これは極めて古い版と互換にすることを意味する。
+  モード設定(|prefernoncjk|等)を利用する場合には、
+  適切なモードCCVのオプションを指定するのが望ましい。
+  \begin{itemize}
+  \item |ccv1|\Means
+    モードCCVを1({\upTeX} v0.11~0.28と互換)とする。
+    \strong{既定値。}
+  \item |ccv2|\Means
+    モードCCVを2({\upTeX} v0.29~1.22と互換)とする。
+  \item |ccv3|\Means
+    モードCCVを3({\upTeX} v1.23以降と互換)とする。
+  \item |real|または|ccv+|\Means
+    モードCCVをエンジンの実のCCVと一致させる。
+  \end{itemize}
+\item |\cjkcategorymode|\strong{命令で有効なモード値}\Means
   和文カテゴリがモードに従って設定される。
   \Note モード値オプションが非指定の場合は、パッケージ読込時に
   和文カテゴリが変更されることはない。
+\item |nomode|\Means
+  モード値オプションの効果を打ち消す。
 \end{itemize}
 
 %===========================================================
@@ -82,6 +95,8 @@
   %\item ブロック名
   \item 非ASCII文字1つ\Means
     その文字の属するブロックを指す。
+    \Note 文字による指定は「{\upTeX}の版によるブロック分割の差異」に
+      影響されることに注意。
   %\item 整数値\Means
   %  その符号位置の属するブロックを指す。
   \end{itemize}
@@ -98,6 +113,7 @@
   \end{itemize}
 
   和文カテゴリの変更は局所的(グルーピングに従う)である。
+  \Note モードCCVの指定は|\cjkcategory|の動作には影響を与えない。
 
 \item |\cjkcategorymode{|\Meta{モード}|}|\Means
   全てのブロックの和文カテゴリの一括設定(モード設定)を行う。
@@ -108,15 +124,17 @@
   \begin{itemize}
   \item |forcecjk|\Means
     ASCII文字のみ欧文扱いで他のブロックは全て和文扱い
-    (|noncjk| 以外)とする。
+    (|noncjk|以外)とする。
     和文フォントの中のUnicode値の割当がある全ての文字を
     和文文字として直接用いることができる。
   \item |default|\Means
     指定のモードCCVにおける既定の設定と一致させる。
-    \Note モードCCVが2以下の場合は |forcecjk| と同一の設定になる。
-    \Note モードCCVがエンジンの実のCCVと一致する場合
-      (|ccv+| オプション指定の場合を含む)は、
-      エンジンの既定の設定と一致する。
+    \Note モードCCVが2以下の場合は|forcecjk|と同一の設定になる。
+    %\Note モードCCVがエンジンの実のCCVと一致する場合は、
+    %  エンジンの既定の設定と一致する。
+    \Note モードCCVが3の場合の\strong{仕様は未確定}である。
+      現状の動作は「v1.23の既定設定と一致させる」となっているが、
+      この動作は\strong{将来変更される可能性がある}。
   \item |prefercjk|\Means
     和文扱いのブロックとして、「CJK中核セット」のものに加えて、
     「Adobeの定めるCJK文字集合
@@ -124,7 +142,7 @@
     の何れかと共通部分をもつ文字ブロック」を加えて、
     残りを欧文扱いに設定する。
   \item |prefercjkvar|\Means
-    |prefercjk| において、ギリシャ・キリル文字の
+    |prefercjk|において、ギリシャ・キリル文字の
     ブロックを欧文扱いに変更したもの。
   \item |japanese|\Means
     和文扱いのブロックとして、「CJK中核セット」のものに加えて、
@@ -132,7 +150,7 @@
     の何れかと共通部分をもつ文字ブロック」を加えて、
     残りを欧文扱いに設定する。
   \item |japanesevar|\Means
-    |japanese| において、ギリシャ・キリル文字の
+    |japanese|において、ギリシャ・キリル文字の
     ブロックを欧文扱いに変更したもの。
   \item |prefernoncjk|\Means
     「CJK中核セット」のブロックのみを和文扱いとし、
@@ -141,13 +159,13 @@
 
   ここで「CJK中核セット」の内容は以下のとおりである。
     \begin{itemize}
-    \item 漢字・部首・注音字母\Means |kanji| に設定。
-    \item ひらがな・カタカナ\Means |kana| に設定。
+    \item 漢字・部首・注音字母\Means |kanji|に設定。
+    \item ひらがな・カタカナ\Means |kana|に設定。
     \item CJK記号の一部・全角半角互換形・彝文字
-      ・西夏文字・女書文字\Means |cjk| に設定
-      \footnote{モードCCVが2の場合、|cjk12| の再分割の
-        中の |cjk1b|、|cjk1c| は |kana| に変更される。}。
-    \item ハングル完成形・ハングル字母\Means |hangul| に設定。
+      ・西夏文字・女書文字・契丹文字\Means |cjk|に設定。
+      \Note モードCCVが2以上の場合、|cjk12|の再分割の|cjk1b|、
+        |cjk1c|は|kana|に設定される。
+    \item ハングル完成形・ハングル字母\Means |hangul|に設定。
   \end{itemize}
   \Note 各モードでの具体的な設定値については\ref{sec:Values}節を参照。
 
@@ -157,6 +175,14 @@
 \section{文字分類バージョン(CCV)}
 \label{sec:CCV}
 
+\noindent \strong{注意}\Means
+この節に述べられている説明は現状の仕様と食い違っている部分があり、
+大幅な改訂が必要な状態である。
+現状の仕様では、モードCCVの影響を受けるのはモード設定の定義のみであり、
+ブロック分割は常に実際のエンジンのものに一致させている。
+
+\bigskip
+
 {\upTeX}エンジンでの文字ブロックの分割および各ブロックの
 和文カテゴリの既定値は改版時に変更され、
 これが互換性の問題を起こす可能性がある。
@@ -236,18 +262,19 @@
 \subsection{Unicodeブロックの一覧}
 
 以下は、Unicodeが定めるブロックと直接に対応するブロックの一覧である。
-この表の「ブロックID」の欄が、|\cjkcategory| 命令で指定する
+この表の「ブロックID」の欄が、|\cjkcategory|命令で指定する
 ブロックIDを示す。
-「CCV」の欄は、そのブロックがサポートされるモードCCVの
+「CCV」の欄は、そのブロックがサポートされる実CCVの
 範囲の下限を表す。
-\footnote{ここで示すサポート範囲は「必要条件」であることに注意。
-  先述の通り、エンジンの改版でブロックが(分割変更でなく)
-  新規追加された場合には以前のCCVの値を引き継ぐ。
-  このため、サポート範囲が「2」のブロックは、
-  モードCCVが2であっても“実際には使えない”可能性がある。
-  (モードCCVが3以上なら必ず使えて、1なら必ず使えない。)
-  “実際には使えない”ブロックに設定を試みた場合は、
-  警告が出て設定が無視される。}
+\footnote{これは参考情報であり、現状の仕様ではあまり意味をもたない。}
+%\footnote{ここで示すサポート範囲は「必要条件」であることに注意。
+%  先述の通り、エンジンの改版でブロックが(分割変更でなく)
+%  新規追加された場合には以前のCCVの値を引き継ぐ。
+%  このため、サポート範囲が「2」のブロックは、
+%  モードCCVが2であっても“実際には使えない”可能性がある。
+%  (モードCCVが3以上なら必ず使えて、1なら必ず使えない。)
+%  “実際には使えない”ブロックに設定を試みた場合は、
+%  警告が出て設定が無視される。}
 
 \begin{quote}
 \renewcommand{\baselinestretch}{0.9}\small
@@ -258,9 +285,8 @@
     ~~~\makebox[3em][r]{\Code{#2}}\hspace*{1em}\ignorespaces}
 \newcommand*\xN[1]{#1}
 \hspace*{-1em}%header-line
-\makebox[5em][l]{ブロック\mbox{}ID}\makebox[2em][c]{CCV}%
+\makebox[5em][l]{ブロック\mbox{}ID}\makebox[2em][c]{~~CCV}%
 \makebox[10em][c]{符号値範囲}\makebox{ブロック名称}\par
-\xI{latn}  \xV{1} \xR  {0000}  {007F} \xN{Basic Latin}\par
 %/////////////////////////////
 \xI{latn}  \xV{1} \xR  {0000}  {007F} \xN{Basic Latin}\par
 \xI{latn1} \xV{1} \xR  {0080}  {00FF} \xN{Latin-1 Supplement}\par
@@ -325,6 +351,7 @@
 \xI{lepc}  \xV{2} \xR  {1C00}  {1C4F} \xN{Lepcha}\par
 \xI{olck}  \xV{2} \xR  {1C50}  {1C7F} \xN{Ol Chiki}\par
 \xI{cyrlC} \xV{2} \xR  {1C80}  {1C8F} \xN{Cyrillic Extended-C}\par
+\xI{geor2} \xV{3} \xR  {1C90}  {1CBF} \xN{Georgian Extended}\par
 \xI{sund1} \xV{2} \xR  {1CC0}  {1CCF} \xN{Sundanese Supplement}\par
 \xI{sym38} \xV{2} \xR  {1CD0}  {1CFF} \xN{Vedic Extensions}\par
 \xI{latn4} \xV{1} \xR  {1D00}  {1D7F} \xN{Phonetic Extensions}\par
@@ -464,7 +491,13 @@
 \xI{phlp}  \xV{2} \xR {10B80} {10BAF} \xN{Psalter Pahlavi}\par
 \xI{orkh}  \xV{2} \xR {10C00} {10C4F} \xN{Old Turkic}\par
 \xI{hung}  \xV{2} \xR {10C80} {10CFF} \xN{Old Hungarian}\par
+\xI{rohg}  \xV{3} \xR {10D00} {10D3F} \xN{Hanifi Rohingya}\par
 \xI{sym42} \xV{2} \xR {10E60} {10E7F} \xN{Rumi Numeral Symbols}\par
+\xI{yezi}  \xV{3} \xR {10E80} {10EBF} \xN{Yezidi}\par
+\xI{sogo}  \xV{3} \xR {10F00} {10F2F} \xN{Old Sogdian}\par
+\xI{sogd}  \xV{3} \xR {10F30} {10F6F} \xN{Sogdian}\par
+\xI{chrs}  \xV{3} \xR {10FB0} {10FDF} \xN{Chorasmian}\par
+\xI{elym}  \xV{3} \xR {10FE0} {10FFF} \xN{Elymaic}\par
 \xI{brah}  \xV{2} \xR {11000} {1107F} \xN{Brahmi}\par
 \xI{kthi}  \xV{2} \xR {11080} {110CF} \xN{Kaithi}\par
 \xI{sora}  \xV{2} \xR {110D0} {110FF} \xN{Sora Sompeng}\par
@@ -482,8 +515,11 @@
 \xI{modi}  \xV{2} \xR {11600} {1165F} \xN{Modi}\par
 \xI{mong1} \xV{2} \xR {11660} {1167F} \xN{Mongolian Supplement}\par
 \xI{takr}  \xV{2} \xR {11680} {116CF} \xN{Takri}\par
-\xI{ahom}  \xV{2} \xR {11700} {1173F} \xN{Ahom}\par
+\xI{ahom}  \xV{2} \xR {11700} {1174F} \xN{Ahom}\par
+\xI{dogr}  \xV{3} \xR {11800} {1184F} \xN{Dogra}\par
 \xI{wara}  \xV{2} \xR {118A0} {118FF} \xN{Warang Citi}\par
+\xI{diak}  \xV{3} \xR {11900} {1195F} \xN{Dives Akuru}\par
+\xI{nand}  \xV{3} \xR {119A0} {119FF} \xN{Nandinagari}\par
 \xI{zanb}  \xV{3} \xR {11A00} {11A4F} \xN{Zanabazar Square}\par
 \xI{soyo}  \xV{3} \xR {11A50} {11AAF} \xN{Soyombo}\par
 \xI{pauc}  \xV{2} \xR {11AC0} {11AFF} \xN{Pau Cin Hau}\par
@@ -490,21 +526,30 @@
 \xI{bhks}  \xV{2} \xR {11C00} {11C6F} \xN{Bhaiksuki}\par
 \xI{marc}  \xV{2} \xR {11C70} {11CBF} \xN{Marchen}\par
 \xI{gonm}  \xV{3} \xR {11D00} {11D5F} \xN{Masaram Gondi}\par
+\xI{gong}  \xV{3} \xR {11D60} {11DAF} \xN{Gunjala Gondi}\par
+\xI{maka}  \xV{3} \xR {11EE0} {11EFF} \xN{Makasar}\par
+\xI{lisu1} \xV{3} \xR {11FB0} {11FBF} \xN{Lisu Supplement}\par
+\xI{taml1} \xV{3} \xR {11FC0} {11FFF} \xN{Tamil Supplement}\par
 \xI{xsux}  \xV{1} \xR {12000} {123FF} \xN{Cuneiform}\par
 \xI{xsux1} \xV{1} \xR {12400} {1247F} \xN{Cuneiform Numbers and Punctuation}\par
 \xI{xsux2} \xV{2} \xR {12480} {1254F} \xN{Early Dynastic Cuneiform}\par
 \xI{egyp}  \xV{2} \xR {13000} {1342F} \xN{Egyptian Hieroglyphs}\par
+\xI{egyp1} \xV{3} \xR {13430} {1343F} \xN{Egyptian Hieroglyph Format Controls}\par
 \xI{hluw}  \xV{2} \xR {14400} {1467F} \xN{Anatolian Hieroglyphs}\par
 \xI{bamu1} \xV{2} \xR {16800} {16A3F} \xN{Bamum Supplement}\par
 \xI{mroo}  \xV{2} \xR {16A40} {16A6F} \xN{Mro}\par
 \xI{bass}  \xV{2} \xR {16AD0} {16AFF} \xN{Bassa Vah}\par
 \xI{hmng}  \xV{2} \xR {16B00} {16B8F} \xN{Pahawh Hmong}\par
+\xI{medf}  \xV{3} \xR {16E40} {16E9F} \xN{Medefaidrin}\par
 \xI{plrd}  \xV{2} \xR {16F00} {16F9F} \xN{Miao}\par
 \xI{cjk14} \xV{2} \xR {16FE0} {16FFF} \xN{Ideographic Symbols and Punctuation}\par
 \xI{tang}  \xV{2} \xR {17000} {187FF} \xN{Tangut}\par
 \xI{tang1} \xV{2} \xR {18800} {18AFF} \xN{Tangut Components}\par
+\xI{kits}  \xV{3} \xR {18B00} {18CFF} \xN{Khitan Small Script}\par
+\xI{tang2} \xV{3} \xR {18D00} {18D7F} \xN{Tangut Supplement}\par
 \xI{kana2} \xV{2} \xR {1B000} {1B0FF} \xN{Kana Supplement}\par
 \xI{kanaA} \xV{3} \xR {1B100} {1B12F} \xN{Kana Extended-A}\par
+\xI{kana3} \xV{3} \xR {1B130} {1B16F} \xN{Small Kana Extension}\par
 \xI{nshu}  \xV{3} \xR {1B170} {1B2FF} \xN{Nushu}\par
 \xI{dupl}  \xV{2} \xR {1BC00} {1BC9F} \xN{Duployan}\par
 \xI{sym53} \xV{2} \xR {1BCA0} {1BCAF} \xN{Shorthand Format Controls}\par
@@ -511,13 +556,18 @@
 \xI{sym32} \xV{1} \xR {1D000} {1D0FF} \xN{Byzantine Musical Symbols}\par
 \xI{sym33} \xV{1} \xR {1D100} {1D1FF} \xN{Musical Symbols}\par
 \xI{sym34} \xV{1} \xR {1D200} {1D24F} \xN{Ancient Greek Musical Notation}\par
+\xI{sym58} \xV{3} \xR {1D2E0} {1D2FF} \xN{Mayan Numerals}\par
 \xI{sym35} \xV{1} \xR {1D300} {1D35F} \xN{Tai Xuan Jing Symbols}\par
 \xI{sym36} \xV{1} \xR {1D360} {1D37F} \xN{Counting Rod Numerals}\par
 \xI{sym37} \xV{1} \xR {1D400} {1D7FF} \xN{Mathematical Alphanumeric Symbols}\par
 \xI{sgnw}  \xV{2} \xR {1D800} {1DAAF} \xN{Sutton SignWriting}\par
 \xI{glag1} \xV{2} \xR {1E000} {1E02F} \xN{Glagolitic Supplement}\par
+\xI{hmnp}  \xV{3} \xR {1E100} {1E14F} \xN{Nyiakeng Puachue Hmong}\par
+\xI{wcho}  \xV{3} \xR {1E2C0} {1E2FF} \xN{Wancho}\par
 \xI{mend}  \xV{2} \xR {1E800} {1E8DF} \xN{Mende Kikakui}\par
 \xI{adlm}  \xV{2} \xR {1E900} {1E95F} \xN{Adlam}\par
+\xI{sym59} \xV{3} \xR {1EC70} {1ECBF} \xN{Indic Siyaq Numbers}\par
+\xI{sym61} \xV{3} \xR {1ED00} {1ED4F} \xN{Ottoman Siyaq Numbers}\par
 \xI{sym51} \xV{2} \xR {1EE00} {1EEFF} \xN{Arabic Mathematical Alphabetic Symbols}\par
 \xI{sym43} \xV{2} \xR {1F000} {1F02F} \xN{Mahjong Tiles}\par
 \xI{sym44} \xV{2} \xR {1F030} {1F09F} \xN{Domino Tiles}\par
@@ -532,6 +582,9 @@
 \xI{sym55} \xV{2} \xR {1F780} {1F7FF} \xN{Geometric Shapes Extended}\par
 \xI{sym56} \xV{2} \xR {1F800} {1F8FF} \xN{Supplemental Arrows-C}\par
 \xI{sym57} \xV{2} \xR {1F900} {1F9FF} \xN{Supplemental Symbols and Pictographs}\par
+\xI{sym60} \xV{3} \xR {1FA00} {1FA6F} \xN{Chess Symbols}\par
+\xI{sym62} \xV{3} \xR {1FA70} {1FAFF} \xN{Symbols and Pictographs Extended-A}\par
+\xI{sym63} \xV{3} \xR {1FB00} {1FBFF} \xN{Symbols for Legacy Computing}\par
 \xI{haniB} \xV{1} \xR {20000} {2A6DF} \xN{CJK Unified Ideographs Extension B}\par
 \xI{haniC} \xV{2} \xR {2A700} {2B73F} \xN{CJK Unified Ideographs Extension C}\par
 \xI{haniD} \xV{2} \xR {2B740} {2B81F} \xN{CJK Unified Ideographs Extension D}\par
@@ -538,6 +591,7 @@
 \xI{haniE} \xV{2} \xR {2B820} {2CEAF} \xN{CJK Unified Ideographs Extension E}\par
 \xI{haniF} \xV{3} \xR {2CEB0} {2EBEF} \xN{CJK Unified Ideographs Extension F}\par
 \xI{hani2} \xV{1} \xR {2F800} {2FA1F} \xN{CJK Compatibility Ideographs Supplement}\par
+\xI{haniG} \xV{3} \xR {30000} {3134F} \xN{CJK Unified Ideographs Extension G}\par
 \xI{spc07} \xV{1} \xR {E0000} {E007F} \xN{Tags}\par
 \xI{spc08} \xV{1} \xR {E0100} {E01EF} \xN{Variation Selectors Supplement}\par
 \xI{spc09} \xV{1} \xR {F0000} {FFFFF} \xN{Supplementary Private Use Area-A}\par
@@ -575,7 +629,7 @@
 サポートされるブロックの全体は以下のようになる。
 
 \begin{itemize}
-\item 前掲の通常ブロックの表で「CCV」欄が「1」の
+\item 前掲の通常ブロックの表で「CCV」欄が1の
   ブロック全て。
 \end{itemize}
 
@@ -633,7 +687,7 @@
 従って、サポートされるブロックの全体は以下のようになる。
 
 \begin{itemize}
-\item 前掲の通常ブロックの表で「CCV」欄が2以下のブロック全て。
+\item 前掲の通常ブロックの表にあるブロック全て。
   \Note |cjk12|、|latn1| のブロックも使用可能。
 \item |cjk12| の下位ブロック\Means
   |cjk1a|、|cjk1b|、|cjk1c| の3つ。
@@ -645,7 +699,7 @@
 \section{各モードにおける和文カテゴリの設定}
 \label{sec:Values}
 
-(あとで書く)
+(やっぱりあとで書く)
 
 \end{document}
 

Modified: trunk/Master/texmf-dist/tex/latex/pxcjkcat/pxcjkcat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pxcjkcat/pxcjkcat.sty	2022-05-28 20:20:35 UTC (rev 63426)
+++ trunk/Master/texmf-dist/tex/latex/pxcjkcat/pxcjkcat.sty	2022-05-28 20:20:51 UTC (rev 63427)
@@ -1,26 +1,41 @@
-%
-% pxcjkcat.sty
-%
-%%%% package declaration
+%%
+%% This is file 'pxcjkcat.sty'.
+%%
+%% Copyright (c) 2010-2022 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{pxcjkcat}[2018/04/01 v1.1 PX cjk-category mode]
-%\RequirePackage{ifuptex}[2008/03/14]\RequirenativeupTeX
+\ProvidesPackage{pxcjkcat}[2022/05/25 v1.2 PX cjk-category mode]
+\def\pxkc at pkgname{pxcjkcat}
 
+%--------------------------------------- general
 
-%%%% error messages
-\def\pxkc at pkgname{pxcjkcat}
+%% error messages
 \def\pxkc at error{\PackageError\pxkc at pkgname}
-\def\pxkc at err@ivcsy#1{\pxkc at error
-  {Invalid name (#1) for cjk-category}%
-  {It was replaced by 18(cjk).}}
-\def\pxkc at err@ivbsy#1{\pxkc at error
-  {Invalid name (#1) for Unicode block}\@eha}
-\def\pxkc at err@ivmsy#1{\pxkc at error
-  {Invalid name (#1) for cjk-category mode}\@eha}
+\def\pxkc at err@ivcsy#1{%
+  \PackageError\pxkc at pkgname
+   {Invalid name (#1) for cjk-category}%
+   {It was replaced by 18(cjk).\MessageBreak
+    \@ehc}}
+\def\pxkc at err@ivbsy#1{%
+  \PackageError\pxkc at pkgname
+   {Invalid name (#1) for Unicode block}%
+   {\@eha}}
+\def\pxkc at err@ivmsy#1{%
+  \PackageError\pxkc at pkgname
+   {Invalid name (#1) for cjk-category mode}%
+   {\@eha}}
 \def\pxkc at warn@dfblk#1{%
   \PackageWarning\pxkc at pkgname
    {Defunct Unicode block '#1' is\MessageBreak
     specified}}
+
+%% \pxkc at debug{<message>}
 \ifx\bxUseDebug\@undefined
 \let\pxkc at debug\@gobble
 \else
@@ -27,108 +42,178 @@
 \def\pxkc at debug#1{\typeout{**[\pxkc at pkgname] #1}}
 \fi
 
-%%%% environment check
-\@tempswafalse
-\ifx\ucs\@undefined\else \ifnum\ucs"3000="3000
-    \@tempswatrue
-\fi\fi
-\if at tempswa\else
-  \pxkc at error{Native upTeX is required.}%
-    {Package loading is aborted.}
-\expandafter\endinput\fi\relax
+%% unique tokens
+\def\pxkc at end{\pxkc at end@}
+\let\pxkc at mk\indent
 
-%--------------------------------------- general
-
 %% variables
 \newif\ifpxkc at ok
 \newif\ifpxkc at warn@defunct \pxkc at warn@defuncttrue
+\let\pxkc at good@mccv\relax
+\let\pxkc at mccv\relax
+\let\pxkc at ccmode@opt\relax
 \let\pxkc at arg\relax
 \let\pxkc at blk\relax
-\let\pxkc at grp\relax
-\let\pxkc at cc\relax
+\let\pxkc at cp\relax
 
 %% \pxkc at letcs\CSa{<csname-b>}
 \def\pxkc at letcs#1#2{%
   \expandafter\let\expandafter#1\csname#2\endcsname}
+
 %% \pxkc at expanded{<text>}
 \def\pxkc at expanded#1{%
-  \edef\pxkc at nxt{#1}\pxkc at nxt}
+  \edef\pxkc at next{#1}\pxkc at next}
 
-%---------------------------------------
+%--------------------------------------- package options
 
-%%%% option handler
-\chardef\pxkc at mccv=1
+%% mode CCV options
 \DeclareOption{ccv1}{\chardef\pxkc at mccv=1 }
 \DeclareOption{ccv2}{\chardef\pxkc at mccv=2 }
 \DeclareOption{ccv3}{\chardef\pxkc at mccv=3 }
 \DeclareOption{ccv+}{\chardef\pxkc at mccv=0 }
-\let\pxkc at ccmode\relax
-\DeclareOption*{\edef\pxkc at ccmode{\CurrentOption}}
+\DeclareOption{real}{\chardef\pxkc at mccv=0 }
+%% mode options
+% NB. \[pxkc at M@@...] is later redefined.
+\def\pxkc at M@@forcecjk     {1}
+\def\pxkc at M@@prefercjk    {1}
+\def\pxkc at M@@prefercjkvar {1}
+\def\pxkc at M@@japanese     {3}
+\def\pxkc at M@@japanesevar  {3}
+\def\pxkc at M@@prefernoncjk {1}
+\def\pxkc at M@@default      {1}
+\def\pxkc at M@@nomode       {0}% special
+\chardef\pxkc at good@mccv=0
+\DeclareOption*{%
+  \@ifundefined{pxkc at M@@\CurrentOption}{\@unknownoptionerror}{%
+    \chardef\pxkc at good@mccv=\@nameuse{pxkc at M@@\CurrentOption}\relax
+    \edef\pxkc at ccmode@opt{\CurrentOption}}}
+%% dispatch
 \ProcessOptions\relax
 
+%% clear up
+\ifnum\pxkc at good@mccv=0
+  \let\pxkc at ccmode@opt\relax
+\fi
+\let\pxkc at M@@nomode\@undefined
+
+%% set default mode CCV (ccv1)
+\ifx\pxkc at mccv\relax
+  \chardef\pxkc at mccv=1
+\else
+  \chardef\pxkc at good@mccv=0 % disable check
+\fi
+
+%--------------------------------------- environment check
+
+%% check engine
+\def\pxkc at tmpa{Native upTeX is required}
+\ifx\ucs\@undefined\else \ifnum\ucs"3000="3000
+  \ifx\forcecjktoken\@undefined
+    \def\pxkc at tmpa{This upTeX is too old}
+  \else \let\pxkc at tmpa\relax
+  \fi
+\fi\fi
+\ifx\pxkc at tmpa\relax\else
+  \PackageError\pxkc at pkgname
+   {\pxkc at tmpa}%
+   {Package loading is aborted.\MessageBreak
+    \@ehc}
+\expandafter\endinput\fi\relax
+
 %%-------- classification version check
 
-%% \pxkc at issameblock
-\def\pxkc at issameblock#1#2{%
-  \pxkc at okfalse{\kcatcode#1=16\kcatcode#2=17\relax
-    \ifnum\kcatcode#1=17 \aftergroup\pxkc at oktrue\fi}}
-\pxkc at issameblock{"FF01}{"FF11}\ifpxkc at ok
+%% \pxkc at is@same at block
+\def\pxkc at is@same at block#1#2{%
+  \pxkc at okfalse
+  \begingroup
+    \kcatcode#1=16\kcatcode#2=17\relax
+    \ifnum\kcatcode#1=17 \aftergroup\pxkc at oktrue\fi
+  \endgroup}
+
+%% \pxkc at ccv : real CCV
+\pxkc at is@same at block{"FF01}{"FF11}\ifpxkc at ok
   \chardef\pxkc at ccv=1     % v0.11+
 \else
-  \pxkc at issameblock{"A0}{"C0}\ifpxkc at ok
+  \pxkc at is@same at block{"A0}{"C0}\ifpxkc at ok
     \chardef\pxkc at ccv=2   % v0.29+
   \else
     \chardef\pxkc at ccv=3   % v1.23+
   \fi
 \fi
-\ifx\bxDebugCcv\@undefined\else
+\ifx\bxDebugCcv\@undefined\else % override
   \chardef\pxkc at ccv=\bxDebugCcv\relax
 \fi
-\ifnum\pxkc at mccv=\z@ \let\pxkc at mccv\pxkc at ccv \fi
 \pxkc at debug{CJK category version \number\pxkc at ccv}
-%
+
+%% Here show warning for mode CCV recommendation.
+%% (No warning if the good mode CCV is unavailable.)
+\ifnum\pxkc at good@mccv>\pxkc at mccv \ifnum\pxkc at good@mccv>\pxkc at ccv\else
+  \PackageWarningNoLine\pxkc at pkgname
+   {Mode CCV \number\pxkc at good@mccv\space
+      (option 'ccv\number\pxkc at good@mccv') is recommended\MessageBreak
+    for the use of category mode '\pxkc at ccmode@opt'!\MessageBreak
+    Or you can simply suppress this warning by giving\MessageBreak
+    option 'ccv\number\pxkc at mccv' explicitly}
+\fi\fi
+
+%% set mode CCV if 'ccv+' is given
+\ifnum\pxkc at mccv=\z@
+  \let\pxkc at mccv\pxkc at ccv
+\fi
+
+%% mode CCV cannot be newer than real CCV
 \ifnum\pxkc at mccv>\pxkc at ccv
-  \pxkc at error{Invalid mode-CCV option (ccv\number\pxkc at mccv)}%
-  {The mode-CCV value given (\number\pxkc at mccv) is
-  larger than the real CCV (\number\pxkc at ccv).\MessageBreak
-  I assume the mode-CCV equals the real CCV.}
+  \PackageError\pxkc at pkgname
+   {Bad mode-CCV option (ccv\number\pxkc at mccv) is given!\MessageBreak
+    The mode-CCV (\number\pxkc at mccv) is newer than
+      the real CCV (\number\pxkc at ccv)}
+   {I assume the mode-CCV equals the real CCV.\MessageBreak
+    \@ehc}
   \let\pxkc at mccv\pxkc at ccv
 \fi
 
-%%------ \setcjkcategory, etc.
-
 %% \pxkc at kcatcode
 \ifx\bxUseDebug\@undefined
 \def\pxkc at kcatcode#1#2{\kcatcode#1=#2\relax}
 \else
-\def\pxkc at kcatcode#1#2{\kcatcode#1=#2\relax
-  \chardef\pxkc at xa=#1\chardef\pxkc at xb=#2\relax
-  \expandafter\pxkc at kcatcode@a\meaning\pxkc at xa\@nil}
-\def\pxkc at kcatcode@a#1"#2\@nil{%
-  \pxkc at debug{\string\kcatcode"#2 set to \number\pxkc at xb}}
+\def\pxkc at kcatcode#1#2{%
+  \kcatcode#1=#2\relax
+  \chardef\pxkc at tmpa=#1\relax
+  \expandafter\pxkc at kcatcode@a\meaning\pxkc at tmpa\pxkc at end}
+\def\pxkc at kcatcode@a#1"#2\pxkc at end{%
+  \pxkc at debug{\string\kcatcode"#2 set to \number\kcatcode\pxkc at tmpa}}
 \fi
 
 %--------------------------------------- data tables
 
-%%%% table
+%% variables
+%\[pxkc at B@@<block>] : start codepoint of the block
+%\[pxkc at G@@<block>] : members of the group block
+%\[pxkc at C@@<category>] : kcatcode value of the category
+
+%% \pxkc at bslst
+\def\pxkc at bslst{\@gobble}
+%% \pxkc at bval{<min_ccv>}{<block>}{<ucs>}{<full_name>}
 \def\pxkc at bval#1#2#3#4{% #4 is unused for now
   \ifnum#1>\pxkc at ccv\else
     \ifnum#1<\tw@ \pxkc at okfalse
     \else
-      \@tempcnta=#3\relax \@tempcntb\@tempcnta \advance\@tempcntb\m at ne
-      \pxkc at issameblock\@tempcnta\@tempcntb
+      \@tempcnta=#3\relax
+      \@tempcntb\@tempcnta \advance\@tempcntb\m at ne
+      \pxkc at is@same at block\@tempcnta\@tempcntb
     \fi
     \ifpxkc at ok \pxkc at debug{defunct: #2}%
-      \@namedef{pxkc at B@@#2}{-1}% invalid
+      \@namedef{pxkc at B@@#2}{-1}% defunct
     \else
       \@namedef{pxkc at B@@#2}{#3}%
-      \edef\pxkc at bslst{\pxkc at bslst\pxkc at sep#2}\def\pxkc at sep{,}%
+      \edef\pxkc at bslst{\pxkc at bslst,#2}%
     \fi
   \fi}
-\def\pxkc at bslst{}\def\pxkc at sep{}
-\def\pxkc at cval#1#2{\@namedef{pxkc at C@@#1}{#2}}
+%% \pxkc at gval{<gblock>}{<block>,...}{<full_name>}
 \def\pxkc at gval#1#2#3{\@namedef{pxkc at G@@#1}{#2}}
 
+%% \pxkc at cval{<category>}{<value>}
+\def\pxkc at cval#1#2{\@namedef{pxkc at C@@#1}{#2}}
 \pxkc at cval{noncjk}{15}
 \pxkc at cval{kanji}{16}
 \pxkc at cval{han}{16}
@@ -136,9 +221,8 @@
 \pxkc at cval{cjk}{18}
 \pxkc at cval{hangul}{19}
 
-%--------------------------------------- block tables
-
-%=======================================
+%% Basic blocks
+%B======================================
 \pxkc at bval{1}{latn}{"0}         {Basic Latin}
 \pxkc at bval{1}{latn1}{"80}       {Latin-1 Supplement}
 \pxkc at bval{1}{latnA}{"100}      {Latin Extended-A}
@@ -202,6 +286,7 @@
 \pxkc at bval{2}{lepc}{"1C00}      {Lepcha}
 \pxkc at bval{2}{olck}{"1C50}      {Ol Chiki}
 \pxkc at bval{2}{cyrlC}{"1C80}     {Cyrillic Extended-C}
+\pxkc at bval{3}{geor2}{"1C90}     {Georgian Extended}
 \pxkc at bval{2}{sund1}{"1CC0}     {Sundanese Supplement}
 \pxkc at bval{2}{sym38}{"1CD0}     {Vedic Extensions}
 \pxkc at bval{1}{latn4}{"1D00}     {Phonetic Extensions}
@@ -341,7 +426,13 @@
 \pxkc at bval{2}{phlp}{"10B80}     {Psalter Pahlavi}
 \pxkc at bval{2}{orkh}{"10C00}     {Old Turkic}
 \pxkc at bval{2}{hung}{"10C80}     {Old Hungarian}
+\pxkc at bval{3}{rohg}{"10D00}     {Hanifi Rohingya}
 \pxkc at bval{2}{sym42}{"10E60}    {Rumi Numeral Symbols}
+\pxkc at bval{3}{yezi}{"10E80}     {Yezidi}
+\pxkc at bval{3}{sogo}{"10F00}     {Old Sogdian}
+\pxkc at bval{3}{sogd}{"10F30}     {Sogdian}
+\pxkc at bval{3}{chrs}{"10FB0}     {Chorasmian}
+\pxkc at bval{3}{elym}{"10FE0}     {Elymaic}
 \pxkc at bval{2}{brah}{"11000}     {Brahmi}
 \pxkc at bval{2}{kthi}{"11080}     {Kaithi}
 \pxkc at bval{2}{sora}{"110D0}     {Sora Sompeng}
@@ -360,7 +451,10 @@
 \pxkc at bval{2}{mong1}{"11660}    {Mongolian Supplement}
 \pxkc at bval{2}{takr}{"11680}     {Takri}
 \pxkc at bval{2}{ahom}{"11700}     {Ahom}
+\pxkc at bval{3}{dogr}{"11800}     {Dogra}
 \pxkc at bval{2}{wara}{"118A0}     {Warang Citi}
+\pxkc at bval{3}{diak}{"11900}     {Dives Akuru}
+\pxkc at bval{3}{nand}{"119A0}     {Nandinagari}
 \pxkc at bval{3}{zanb}{"11A00}     {Zanabazar Square}
 \pxkc at bval{3}{soyo}{"11A50}     {Soyombo}
 \pxkc at bval{2}{pauc}{"11AC0}     {Pau Cin Hau}
@@ -367,21 +461,30 @@
 \pxkc at bval{2}{bhks}{"11C00}     {Bhaiksuki}
 \pxkc at bval{2}{marc}{"11C70}     {Marchen}
 \pxkc at bval{3}{gonm}{"11D00}     {Masaram Gondi}
+\pxkc at bval{3}{gong}{"11D60}     {Gunjala Gondi}
+\pxkc at bval{3}{maka}{"11EE0}     {Makasar}
+\pxkc at bval{3}{lisu1}{"11FB0}    {Lisu Supplement}
+\pxkc at bval{3}{taml1}{"11FC0}    {Tamil Supplement}
 \pxkc at bval{1}{xsux}{"12000}     {Cuneiform}
 \pxkc at bval{1}{xsux1}{"12400}    {Cuneiform Numbers and Punctuation}
 \pxkc at bval{2}{xsux2}{"12480}    {Early Dynastic Cuneiform}
 \pxkc at bval{2}{egyp}{"13000}     {Egyptian Hieroglyphs}
+\pxkc at bval{3}{egyp1}{"13430}    {Egyptian Hieroglyph Format Controls}
 \pxkc at bval{2}{hluw}{"14400}     {Anatolian Hieroglyphs}
 \pxkc at bval{2}{bamu1}{"16800}    {Bamum Supplement}
 \pxkc at bval{2}{mroo}{"16A40}     {Mro}
 \pxkc at bval{2}{bass}{"16AD0}     {Bassa Vah}
 \pxkc at bval{2}{hmng}{"16B00}     {Pahawh Hmong}
+\pxkc at bval{3}{medf}{"16E40}     {Medefaidrin}
 \pxkc at bval{2}{plrd}{"16F00}     {Miao}
 \pxkc at bval{2}{cjk14}{"16FE0}    {Ideographic Symbols and Punctuation}
 \pxkc at bval{2}{tang}{"17000}     {Tangut}
 \pxkc at bval{2}{tang1}{"18800}    {Tangut Components}
+\pxkc at bval{3}{kits}{"18B00}     {Khitan Small Script}
+\pxkc at bval{3}{tang2}{"18D00}    {Tangut Supplement}
 \pxkc at bval{2}{kana2}{"1B000}    {Kana Supplement}
 \pxkc at bval{3}{kanaA}{"1B100}    {Kana Extended-A}
+\pxkc at bval{3}{kana3}{"1B130}    {Small Kana Extension}
 \pxkc at bval{3}{nshu}{"1B170}     {Nushu}
 \pxkc at bval{2}{dupl}{"1BC00}     {Duployan}
 \pxkc at bval{2}{sym53}{"1BCA0}    {Shorthand Format Controls}
@@ -388,13 +491,18 @@
 \pxkc at bval{1}{sym32}{"1D000}    {Byzantine Musical Symbols}
 \pxkc at bval{1}{sym33}{"1D100}    {Musical Symbols}
 \pxkc at bval{1}{sym34}{"1D200}    {Ancient Greek Musical Notation}
+\pxkc at bval{3}{sym58}{"1D2E0}    {Mayan Numerals}
 \pxkc at bval{1}{sym35}{"1D300}    {Tai Xuan Jing Symbols}
 \pxkc at bval{1}{sym36}{"1D360}    {Counting Rod Numerals}
 \pxkc at bval{1}{sym37}{"1D400}    {Mathematical Alphanumeric Symbols}
 \pxkc at bval{2}{sgnw}{"1D800}     {Sutton SignWriting}
 \pxkc at bval{2}{glag1}{"1E000}    {Glagolitic Supplement}
+\pxkc at bval{3}{hmnp}{"1E100}     {Nyiakeng Puachue Hmong}
+\pxkc at bval{3}{wcho}{"1E2C0}     {Wancho}
 \pxkc at bval{2}{mend}{"1E800}     {Mende Kikakui}
 \pxkc at bval{2}{adlm}{"1E900}     {Adlam}
+\pxkc at bval{3}{sym59}{"1EC70}    {Indic Siyaq Numbers}
+\pxkc at bval{3}{sym61}{"1ED00}    {Ottoman Siyaq Numbers}
 \pxkc at bval{2}{sym51}{"1EE00}    {Arabic Mathematical Alphabetic Symbols}
 \pxkc at bval{2}{sym43}{"1F000}    {Mahjong Tiles}
 \pxkc at bval{2}{sym44}{"1F030}    {Domino Tiles}
@@ -409,6 +517,9 @@
 \pxkc at bval{2}{sym55}{"1F780}    {Geometric Shapes Extended}
 \pxkc at bval{2}{sym56}{"1F800}    {Supplemental Arrows-C}
 \pxkc at bval{2}{sym57}{"1F900}    {Supplemental Symbols and Pictographs}
+\pxkc at bval{3}{sym60}{"1FA00}    {Chess Symbols}
+\pxkc at bval{3}{sym62}{"1FA70}    {Symbols and Pictographs Extended-A}
+\pxkc at bval{3}{sym63}{"1FB00}    {Symbols for Legacy Computing}
 \pxkc at bval{1}{haniB}{"20000}    {CJK Unified Ideographs Extension B}
 \pxkc at bval{2}{haniC}{"2A700}    {CJK Unified Ideographs Extension C}
 \pxkc at bval{2}{haniD}{"2B740}    {CJK Unified Ideographs Extension D}
@@ -415,11 +526,13 @@
 \pxkc at bval{2}{haniE}{"2B820}    {CJK Unified Ideographs Extension E}
 \pxkc at bval{3}{haniF}{"2CEB0}    {CJK Unified Ideographs Extension F}
 \pxkc at bval{1}{hani2}{"2F800}    {CJK Compatibility Ideographs Supplement}
+\pxkc at bval{3}{haniG}{"30000}    {CJK Unified Ideographs Extension G}
 \pxkc at bval{1}{spc07}{"E0000}    {Tags}
 \pxkc at bval{1}{spc08}{"E0100}    {Variation Selectors Supplement}
 \pxkc at bval{1}{spc09}{"F0000}    {Supplementary Private Use Area-A}
 \pxkc at bval{1}{spc10}{"100000}   {Supplementary Private Use Area-B}
 %=======================================
+%% Block subdivisions
 \ifnum\pxkc at ccv<2 \else
 \pxkc at gval{cjk12}{cjk1a,cjk1b,cjk1c}{Halfwidth and Fullwidth Forms}
 \pxkc at bval{0}{cjk1a}{"FF01}{Halfwidth and Fullwidth Forms/Other}
@@ -431,10 +544,17 @@
 \pxkc at bval{0}{latnx}{"00A0}{Latin-1 Supplement/Other}
 \pxkc at bval{0}{latny}{"00C0}{Latin-1 Supplement/Latin}
 \fi
-  %
-\edef\pxkc at foreachblk{\noexpand\@for\noexpand\x:={\pxkc at bslst}}
-\let\pxkc at bval\relax\let\pxkc at cval\relax\let\pxkc at bslst\relax
 
+%% \pxkc at foreach@blocks
+\edef\pxkc at foreach@blocks{%
+  \noexpand\@for\noexpand\pxkc at blk:={\pxkc at bslst}}
+
+%% clean up
+\let\pxkc at bval\relax
+\let\pxkc at cval\relax
+\let\pxkc at gval\relax
+\let\pxkc at bslst\relax
+
 %--------------------------------------- public interfaces
 
 %%<*> \cjkcategory{<block>}{<category>}
@@ -442,75 +562,86 @@
 % 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 at cjkcategory@oa}
-\def\pxkc at cjkcategory@oa#1{%
-  \gdef\pxkc at nxt{\pxkc at cjkcategory@ob{#1}}%
-  \egroup\pxkc at nxt}
-\def\pxkc at cjkcategory@ob#1#2{%
-  \ifnum2<1#2 \edef\pxkc at arg{#2}%
-  \else\@ifundefined{pxkc at C@@#2}%
-   {\pxkc at err@ivcsy{#2}\def\pxkc at arg{18}}%
-   {\edef\pxkc at arg{\@nameuse{pxkc at C@@#2}}}\fi
+\newcommand*\cjkcategory{%
+  \begingroup
+    \forcecjktoken
+  \expandafter\endgroup\pxkc at cjkcategory@}% read args
+\def\pxkc at cjkcategory@#1#2{%
+  \ifnum2<1#2 % <category> is a number
+    \edef\pxkc at arg{#2}%
+  \else
+    \@ifundefined{pxkc at C@@#2}{%
+      \pxkc at err@ivcsy{#2}\def\pxkc at arg{18}%
+    }{%else
+      \edef\pxkc at arg{\@nameuse{pxkc at C@@#2}}%
+    }%
+  \fi
   \pxkc at cjkcategory@a{#1}}
-\chardef\pxkc at la="7F
-\def\pxkc at cjkcategory@a#1{%
-  \@for\pxkc at x:={#1}\do{%
-    \expandafter\pxkc at cjkcategory@b\expandafter{\pxkc at x}}}
+\def\pxkc at cjkcategory@a#1{%{<block>}
+  \@for\pxkc at blk:={#1}\do{%
+    \expandafter\pxkc at cjkcategory@b\expandafter{\pxkc at blk}}}
 \def\pxkc at cjkcategory@b#1{%
-  \pxkc at chkchr{#1}\ifnum\pxkc at cc>\pxkc at la
-    \pxkc at kcatcode{\pxkc at cc}{\pxkc at arg}%
+  \pxkc at get@cp{#1}\ifnum\pxkc at cp>"7F
+    \pxkc at kcatcode{\pxkc at cp}{\pxkc at arg}% FIXME: consider group
   \else
-    \pxkc at cjkcategory@c{#1}%
+    \edef\pxkc at blk{#1}%
+    \pxkc at set@cjkcategory
   \fi}
-\def\pxkc at cjkcategory@c#1{%
-  \pxkc at letcs\pxkc at grp{pxkc at G@@#1}%
-  \ifx\pxkc at grp\relax
-    \pxkc at letcs\pxkc at blk{pxkc at B@@#1}%
-    \ifx\pxkc at blk\relax
-      \pxkc at err@ivbsy{#1}%
-    \else\ifnum\pxkc at blk<\z@
-      \ifpxkc at warn@defunct \pxkc at warn@dfblk{#1}\fi
+
+%% \pxkc at set@cjkcategory
+% Sees \pxkc at blk and \pxkc at arg.
+\def\pxkc at set@cjkcategory{%
+  \pxkc at letcs\pxkc at tmpa{pxkc at G@@\pxkc at blk}%
+  \ifx\pxkc at tmpa\relax
+    \pxkc at letcs\pxkc at cp{pxkc at B@@\pxkc at blk}%
+    \ifx\pxkc at cp\relax
+      \pxkc at err@ivbsy{\pxkc at blk}%
+    \else\ifnum\pxkc at cp<\z@ % defunct
+      \ifpxkc at warn@defunct \pxkc at warn@dfblk{\pxkc at blk}\fi
     \else
-      \pxkc at kcatcode{\pxkc at blk}{\pxkc at arg}%
+      \pxkc at kcatcode{\pxkc at cp}{\pxkc at arg}%
     \fi\fi
   \else
-    \pxkc at expanded{\noexpand\pxkc at cjkcategory@a{\pxkc at grp}}%
+    \pxkc at expanded{\noexpand\pxkc at cjkcategory@a{\pxkc at tmpa}}%
   \fi}
 
 %%<*> \pxkc at cjkcategory{<block>}{<kcatcode>}
-%%<*> \pxkc at cjkcategory@mccv{<mccv>}{<block>}{<kcatcode>}
-% Another entry point for internal use.
+%%<*> \pxkc at cjkcategory@mccv{<minmccv>}{<maxmccv>}{<block>}{<kcatcode>}
+% Other entry points for internal use.
 \def\pxkc at cjkcategory#1#2{%
-  \edef\pxkc at arg{#2}%
-  \pxkc at cjkcategory@c{#1}}
+  \def\pxkc at blk{#1}\edef\pxkc at arg{#2}%
+  \pxkc at set@cjkcategory}
 \def\pxkc at cjkcategory@mccv#1#2#3#4{%
   \ifnum#1>\pxkc at mccv\else \ifnum#2<\pxkc at mccv\else
     \pxkc at cjkcategory{#3}{#4}%
   \fi\fi}
 
-%% \pxkc at chkchr{<arg>}
-\def\pxkc at chkchr#1{%
-  \afterassignment\pxkc at chkchr@a\chardef\pxkc at cc=`#1?\relax}
-\def\pxkc at chkchr@a#1\relax{}
+%% \pxkc at get@cp{<arg>}
+\def\pxkc at get@cp#1{%
+  \afterassignment\pxkc at get@cp at a\chardef\pxkc at cp=`#1?\pxkc at mk}
+\def\pxkc at get@cp at a#1\pxkc at mk{}
 
 %%<*> \cjkcategorymode{<mode>}
 % Invokes the cjk-category mode <mode>.
-\def\cjkcategorymode#1{%
-  \pxkc at letcs\pxkc at nxt{pxkc at M@@#1}%
-  \ifx\pxkc at nxt\relax
-    \pxkc at err@ivmsy
+\newcommand*\cjkcategorymode[1]{%
+  \pxkc at letcs\pxkc at next{pxkc at M@@#1}%
+  \ifx\pxkc at next\relax
+    \pxkc at err@ivmsy{#1}%
   \else
     \pxkc at warn@defunctfalse
-    \pxkc at nxt
+    \pxkc at next
     \pxkc at warn@defuncttrue
   \fi}
 
 %--------------------------------------- CJK category modes
 
-%% Invariant blocks
+%% variables
+\let\pxkc at cat\relax
+\let\pxkc at base@cat\relax
+
+%% \[pxkc at K@@<block>] : Invariant blocks
 \def\do#1#2{\expandafter\chardef\csname pxkc at K@@#1\endcsname=#2 }
-%=======================================
+%C======================================
 \do{latn}  {15} % Basic Latin
 \do{hang1} {19} % Hangul Jamo
 \do{sym15} {18} % Enclosed Alphanumerics
@@ -546,8 +677,11 @@
 \do{cjk14} {18} % Ideographic Symbols and Punctuation
 \do{tang}  {18} % Tangut
 \do{tang1} {18} % Tangut Components
+\do{kits}  {18} % Khitan Small Script
+\do{tang2} {18} % Tangut Supplement
 \do{kana2} {17} % Kana Supplement
 \do{kanaA} {17} % Kana Extended-A
+\do{kana3} {17} % Small Kana Extension
 \do{nshu}  {18} % Nushu
 \do{sym45} {18} % Enclosed Alphanumeric Supplement
 \do{cjk13} {18} % Enclosed Ideographic Supplement
@@ -557,23 +691,24 @@
 \do{haniE} {16} % CJK Unified Ideographs Extension E
 \do{haniF} {16} % CJK Unified Ideographs Extension F
 \do{hani2} {16} % CJK Compatibility Ideographs Supplement
+\do{haniG} {16} % CJK Unified Ideographs Extension G
 %=======================================
 
-%%%% cjkcategory modes
-\def\pxkc at resetcjkcat#1{%
+%% \pxkc at reset@all{<kcatcode>}
+\def\pxkc at reset@all#1{%
   \chardef\pxkc at base@cat=#1\relax
-  \pxkc at foreachblk\do{%
-    \pxkc at letcs\pxkc at cat{pxkc at K@@\x}%
+  \pxkc at foreach@blocks\do{%
+    \pxkc at letcs\pxkc at cat{pxkc at K@@\pxkc at blk}%
     \ifx\pxkc at cat\relax \let\pxkc at cat\pxkc at base@cat \fi
-    \pxkc at kcatcode{\@nameuse{pxkc at B@@\x}}{\pxkc at cat}}%
+    \pxkc at kcatcode{\@nameuse{pxkc at B@@\pxkc at blk}}{\pxkc at cat}}%
   \ifnum\pxkc at mccv<2
     \pxkc at cjkcategory{cjk12}{18}%
   \fi}
 
-%=======================================
+%P======================================
 %% 'forcecjk'
 \def\pxkc at M@@forcecjk{%
-  \pxkc at resetcjkcat{18}%
+  \pxkc at reset@all{18}%
 }
 %% 'prefercjk'
 \def\pxkc at M@@prefercjk{%
@@ -627,7 +762,7 @@
 }
 %% 'prefernoncjk'
 \def\pxkc at M@@prefernoncjk{%
-  \pxkc at resetcjkcat{15}%
+  \pxkc at reset@all{15}%
 }
 %=======================================
 %% 'default'
@@ -637,64 +772,110 @@
   \pxkc at cjkcategory@mccv{3}{3}{latnA}{15}%
 }
 
-%%%% \showcjkcategory
-\def\showcjkcategory{%
-  \pxkc at foreachblk\do{%
-    \expandafter\ifx\csname pxkc at G@@\x\endcsname\relax
-      \typeout{\x\space= \the\kcatcode\@nameuse{pxkc at B@@\x}}%
-    \fi}}
+%--------------------------------------- miscellaneous accessories
 
-%%-------- \withcjktokendisabled, etc.
+%%<*> \showcjkcategory
+\newcommand*\showcjkcategory{%
+  \pxkc at foreach@blocks\do{%
+    \@ifundefined{pxkc at B@@\pxkc at blk}{}{%else
+      \typeout{\pxkc at blk\space= \the\kcatcode\@nameuse{pxkc at B@@\pxkc at blk}}%
+    }}}
 
-%% \pxkc at genprobe
-\def\pxkc at genprobe{%
+%--------------------------------------- get current cjktoken state
+
+%% variables
+\let\pxkc at ctmode\relax
+
+\ifx\currentcjktoken\@undefined         %<*!e-pTeX>
+
+%% \pxkc at make@probe
+\def\pxkc at make@probe{%
   \edef\pxkc at 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 at genprobe \global\let\pxkc at prb@d\pxkc at tmpa
-  \enablecjktoken\pxkc at genprobe  \global\let\pxkc at prb@e\pxkc at tmpa
-  \forcecjktoken\pxkc at genprobe   \global\let\pxkc at prb@f\pxkc at tmpa
-\egroup
+\begingroup \kcatcode"3040=15 \kcatcode"30A0=18
+  \disablecjktoken\pxkc at make@probe \global\let\pxkc at prb@d\pxkc at tmpa
+  \enablecjktoken\pxkc at make@probe  \global\let\pxkc at prb@e\pxkc at tmpa
+  \forcecjktoken\pxkc at make@probe   \global\let\pxkc at prb@f\pxkc at tmpa
+\endgroup
 
-%% \pxkc at getcjktokmod\CS
-\def\pxkc at getcjktokmod#1{%
-  \bgroup \kcatcode"3040=15\kcatcode"30A0=18\pxkc at genprobe
+%% \pxkc at get@cjktoken at mode\CS
+\def\pxkc at get@cjktoken at mode#1{%
+  \begingroup
+    \kcatcode"3040=15 \kcatcode"30A0=18 \pxkc at make@probe
     \ifx\pxkc at tmpa\pxkc at prb@d \global\chardef\pxkc at gtmpa\z@
     \else\ifx\pxkc at tmpa\pxkc at prb@e \global\chardef\pxkc at gtmpa\@ne
     \else\ifx\pxkc at tmpa\pxkc at prb@f \global\chardef\pxkc at gtmpa\tw@
-    \else \global\let\pxkc at gtmpa\m at ne \fi\fi\fi
-  \egroup \let#1\pxkc at gtmpa}
+    \else \global\chardef\pxkc at gtmpa\@cclv
+    \fi\fi\fi
+  \endgroup
+  \let#1\pxkc at gtmpa}
 
-%%<+> \getcjktokenmode
+% The method does not work on new upTeX, but running LaTeX
+% on new upTeX without e-TeX is highly improbable....
+\ifx\pxkc at prb@d\pxkc at prb@e
+  \def\pxkc at get@cjktoken at mode#1{%
+    \chardef#1\@cclv} % always fail
+\fi
+
+\else                                   %<*e-pTeX>
+
+\def\pxkc at get@cjktoken at mode#1{%
+  \chardef#1\ifcase\currentcjktoken
+    \@ne \or \z@ \or \tw@ \or \@cclv
+  \fi}
+
+\fi                                     %</e-pTeX>
+
+%%<*> \getcjktokenmode
 % Returns the value showing current mode to \thecjktokenmode
 %  0: \disablecjktoken
 %  1: \enablecjktoken
 %  2: \forcecjktoken
-\def\getcjktokenmode{\pxkc at getcjktokmod\thecjktokenmode}
+%  255: failure
+\newcommand*\getcjktokenmode{%
+  \pxkc at get@cjktoken at mode\thecjktokenmode}
 
-%%<*> \setcjktokenmode{<val>}
-\def\pxkc at setcjktokmod#1{%
-  \ifcase#1\disablecjktoken\or\enablecjktoken\or\forcecjktoken\fi}
+%%<*> \setcjktokenmode{<value>}
+\newcommand*\setcjktokenmode[1]{%
+  \ifcase#1\disablecjktoken
+  \or \enablecjktoken
+  \or \forcecjktoken
+  \fi}
 
 %%<*> \withcjktokendisabled, etc.
-\def\withcjktokendisabled{\pxkc at withcjktokmod\disablecjktoken\@iden}
-\def\withcjktokenenabled{\pxkc at withcjktokmod\enablecjktoken\@iden}
-\def\withcjktokenforced{\pxkc at withcjktokmod\forcecjktoken\@iden}
-\def\withcjktokendisabledex{\pxkc at withcjktokmod\disablecjktoken}
-\def\withcjktokenenabledex{\pxkc at withcjktokmod\enablecjktoken}
-\def\withcjktokenforcedex{\pxkc at withcjktokmod\forcecjktoken}
-\def\pxkc at withcjktokmod#1{%
-  \pxkc at getcjktokmod\pxkc at tokmod #1\pxkc at withcjktokmod@a}
-\def\pxkc at withcjktokmod@a#1#2{%
-  #1{#2}\pxkc at setcjktokmod\pxkc at tokmod}
+\newcommand*\withcjktokendisabled{%
+  \pxkc at with@cjktoken at mode\disablecjktoken\@iden}
+\newcommand*\withcjktokenenabled{%
+  \pxkc at with@cjktoken at mode\enablecjktoken\@iden}
+\newcommand*\withcjktokenforced{%
+  \pxkc at with@cjktoken at mode\forcecjktoken\@iden}
+\newcommand*\withcjktokendisabledex{%
+  \pxkc at with@cjktoken at mode\disablecjktoken}
+\newcommand*\withcjktokenenabledex{%
+  \pxkc at with@cjktoken at mode\enablecjktoken}
+\newcommand*\withcjktokenforcedex{%
+  \pxkc at with@cjktoken at mode\forcecjktoken}
+\def\pxkc at with@cjktoken at mode#1{%
+  \pxkc at get@cjktoken at mode\pxkc at ctmode
+  \ifnum\pxkc at ctmode=\@cclv \pxkc at with@cjktoken at mode@b \fi
+  #1%
+  \pxkc at with@cjktoken at mode@a}
+\def\pxkc at with@cjktoken at mode@a#1#2{%
+  #1{#2}%
+  \setcjktokenmode\pxkc at ctmode}
+\def\pxkc at with@cjktoken at mode@b{%
+  \global\let\pxkc at with@cjktoken at mode@b\relax
+  \PackageWarning\pxkc at pkgname
+   {Failed in getting current cjktoken mode,\MessageBreak
+    reported}}
 
-%%------ initial setup
+%--------------------------------------- initial setup
 
-\ifx\pxkc at ccmode\relax\else
-\cjkcategorymode{\pxkc at ccmode}
+\ifx\pxkc at ccmode@opt\relax\else
+  \cjkcategorymode{\pxkc at ccmode@opt}
 \fi
 
-%%------ all done
+%--------------------------------------- all done
 \endinput
 %% EOF



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