summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/pxcjkcat
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/pxcjkcat
Initial commit
Diffstat (limited to 'macros/latex/contrib/pxcjkcat')
-rw-r--r--macros/latex/contrib/pxcjkcat/LICENSE21
-rw-r--r--macros/latex/contrib/pxcjkcat/README-ja.md43
-rw-r--r--macros/latex/contrib/pxcjkcat/README.md98
-rw-r--r--macros/latex/contrib/pxcjkcat/pxcjkcat.pdfbin0 -> 184654 bytes
-rw-r--r--macros/latex/contrib/pxcjkcat/pxcjkcat.sty700
-rw-r--r--macros/latex/contrib/pxcjkcat/pxcjkcat.tex737
6 files changed, 1599 insertions, 0 deletions
diff --git a/macros/latex/contrib/pxcjkcat/LICENSE b/macros/latex/contrib/pxcjkcat/LICENSE
new file mode 100644
index 0000000000..fbe40a0146
--- /dev/null
+++ b/macros/latex/contrib/pxcjkcat/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2018 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
+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/macros/latex/contrib/pxcjkcat/README-ja.md b/macros/latex/contrib/pxcjkcat/README-ja.md
new file mode 100644
index 0000000000..c9e3530afe
--- /dev/null
+++ b/macros/latex/contrib/pxcjkcat/README-ja.md
@@ -0,0 +1,43 @@
+PXcjkcat パッケージバンドル
+===========================
+
+LaTeX: upTeX の和文文字カテゴリを扱う LaTeX 上のインタフェース
+
+upTeX の和文文字カテゴリ(kcatcode)を扱う LaTeX 上のインタフェースを
+提供する。
+
+### 前提環境
+
+ * フォーマット: LaTeX
+ * エンジン: upTeX、pTeX-ng
+ * DVIウェア: 不問
+
+### インストール
+
+ - `*.sty` → $TEXMF/tex/platex/PXcjkcat
+
+### ライセンス
+
+本パッケージは MIT ライセンスの下で配布される。
+
+
+pxcjkcat パッケージ ー 本体
+---------------------------
+
+詳細についてはマニュアル `pxcjkcat.pdf` を参照されたい。
+
+
+更新履歴
+--------
+
+ * Version 1.1 〈2018/04/01〉
+ - upTeX 1.23 版以降に対応する CCV 3(`ccv3` オプション)を追加した。
+ - `ccv+` オプションを追加。
+
+ * Version 1.0 〈2012/09/22〉
+ - PXbase バンドル中の pxcjkcat パッケージを分離して本バンドルを作成。
+ - pxcjkcat の中身は PXbase 0.5 版収録の「0.4a 版」と同一。
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/macros/latex/contrib/pxcjkcat/README.md b/macros/latex/contrib/pxcjkcat/README.md
new file mode 100644
index 0000000000..fcf31a0b7a
--- /dev/null
+++ b/macros/latex/contrib/pxcjkcat/README.md
@@ -0,0 +1,98 @@
+PXcjkcat Package
+================
+
+LaTeX: LaTeX interface for the CJK category codes of upTeX
+
+The package provides management of the CJK category code (‘kcatcode’)
+table of the upTeX extended TeX engine.
+
+Package options are available for tailored use in the cases of documents
+that are principally written in Japanese, or principally written in English
+or other Western languages.
+
+### System Requirements
+
+ * TeX format: LaTeX.
+ * TeX engine: upTeX, pTeX-ng.
+ * DVI-ware: Anything.
+
+### Installation
+
+In the distribution in conformance with TDS 1.1:
+
+ - `*.sty` → $TEXMF/tex/platex/PXcjkcat
+
+### License
+
+This package is distributed under the MIT License.
+
+
+The pxcjkcat Package ー main
+----------------------------
+
+Please refer to the manual `pxcjkcat.pdf` (in Japanese) for detail.
+
+Below is described the most basic use.
+
+### 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 the
+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).
+
+Since upTeX could treat all the Unicode letters either as non-CJK or
+CJK letter, it has the mechanism (called “CJK category table”) for
+specifying which letters should be treated as CJK. The pxcjkcat package
+provides a concise and user-friendly LaTeX interface to the mechanism.
+
+### Basic Usage
+
+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}
+
+If your document is mainly in Japanese, then put the following lines
+in the preamble:
+
+ \usepackage[prefercjkvar]{pxcjkcat}
+ \usepackage[utf8]{inputenc}
+
+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.
+
+### A Sample Document
+
+ % upLaTeX; UTF-8
+ \documentclass[a4paper]{article}
+ \usepackage[T1]{fontenc}
+ \usepackage[utf8]{inputenc}
+ \usepackage[prefernoncjk]{pxcjkcat}
+ \usepackage[french]{babel}
+ \begin{document}
+ \emph{Je suis un chat} (吾輩は猫である) est un roman japonais
+ écrit par Sōseki Natsume (夏目漱石) de 1905 à 1906
+ dans la revue littéraire \emph{Hototogisu} (ホトトギス).
+ \end{document}
+
+
+Revision History
+----------------
+
+ * Version 1.1 〈2018/04/01〉
+ * Version 1.0 〈2012/09/22〉
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/macros/latex/contrib/pxcjkcat/pxcjkcat.pdf b/macros/latex/contrib/pxcjkcat/pxcjkcat.pdf
new file mode 100644
index 0000000000..07ad5c54fa
--- /dev/null
+++ b/macros/latex/contrib/pxcjkcat/pxcjkcat.pdf
Binary files differ
diff --git a/macros/latex/contrib/pxcjkcat/pxcjkcat.sty b/macros/latex/contrib/pxcjkcat/pxcjkcat.sty
new file mode 100644
index 0000000000..b6e57056c5
--- /dev/null
+++ b/macros/latex/contrib/pxcjkcat/pxcjkcat.sty
@@ -0,0 +1,700 @@
+%
+% pxcjkcat.sty
+%
+%%%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxcjkcat}[2018/04/01 v1.1 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}
+\def\pxkc@warn@dfblk#1{%
+ \PackageWarning\pxkc@pkgname
+ {Defunct Unicode block '#1' is\MessageBreak
+ specified}}
+\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
+
+%--------------------------------------- general
+
+%% variables
+\newif\ifpxkc@ok
+\newif\ifpxkc@warn@defunct \pxkc@warn@defuncttrue
+\let\pxkc@arg\relax
+\let\pxkc@blk\relax
+\let\pxkc@grp\relax
+\let\pxkc@cc\relax
+
+%% \pxkc@letcs\CSa{<csname-b>}
+\def\pxkc@letcs#1#2{%
+ \expandafter\let\expandafter#1\csname#2\endcsname}
+%% \pxkc@expanded{<text>}
+\def\pxkc@expanded#1{%
+ \edef\pxkc@nxt{#1}\pxkc@nxt}
+
+%---------------------------------------
+
+%%%% option handler
+\chardef\pxkc@mccv=1
+\DeclareOption{ccv1}{\chardef\pxkc@mccv=1 }
+\DeclareOption{ccv2}{\chardef\pxkc@mccv=2 }
+\DeclareOption{ccv3}{\chardef\pxkc@mccv=3 }
+\DeclareOption{ccv+}{\chardef\pxkc@mccv=0 }
+\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
+ \pxkc@issameblock{"A0}{"C0}\ifpxkc@ok
+ \chardef\pxkc@ccv=2 % v0.29+
+ \else
+ \chardef\pxkc@ccv=3 % v1.23+
+ \fi
+\fi
+\ifx\bxDebugCcv\@undefined\else
+ \chardef\pxkc@ccv=\bxDebugCcv\relax
+\fi
+\ifnum\pxkc@mccv=\z@ \let\pxkc@mccv\pxkc@ccv \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
+
+%--------------------------------------- data tables
+
+%%%% table
+\def\pxkc@bval#1#2#3#4{% #4 is unused for now
+ \ifnum#1>\pxkc@ccv\else
+ \ifnum#1<\tw@ \pxkc@okfalse
+ \else
+ \@tempcnta=#3\relax \@tempcntb\@tempcnta \advance\@tempcntb\m@ne
+ \pxkc@issameblock\@tempcnta\@tempcntb
+ \fi
+ \ifpxkc@ok \pxkc@debug{defunct: #2}%
+ \@namedef{pxkc@B@@#2}{-1}% invalid
+ \else
+ \@namedef{pxkc@B@@#2}{#3}%
+ \edef\pxkc@bslst{\pxkc@bslst\pxkc@sep#2}\def\pxkc@sep{,}%
+ \fi
+ \fi}
+\def\pxkc@bslst{}\def\pxkc@sep{}
+\def\pxkc@cval#1#2{\@namedef{pxkc@C@@#1}{#2}}
+\def\pxkc@gval#1#2#3{\@namedef{pxkc@G@@#1}{#2}}
+
+\pxkc@cval{noncjk}{15}
+\pxkc@cval{kanji}{16}
+\pxkc@cval{han}{16}
+\pxkc@cval{kana}{17}
+\pxkc@cval{cjk}{18}
+\pxkc@cval{hangul}{19}
+
+%--------------------------------------- block tables
+
+%=======================================
+\pxkc@bval{1}{latn}{"0} {Basic Latin}
+\pxkc@bval{1}{latn1}{"80} {Latin-1 Supplement}
+\pxkc@bval{1}{latnA}{"100} {Latin Extended-A}
+\pxkc@bval{1}{latnB}{"180} {Latin Extended-B}
+\pxkc@bval{1}{latn2}{"250} {IPA Extensions}
+\pxkc@bval{1}{sym01}{"2B0} {Spacing Modifier Letters}
+\pxkc@bval{1}{sym02}{"300} {Combining Diacritical Marks}
+\pxkc@bval{1}{grek}{"370} {Greek and Coptic}
+\pxkc@bval{1}{cyrl}{"400} {Cyrillic}
+\pxkc@bval{1}{cyrl1}{"500} {Cyrillic Supplement}
+\pxkc@bval{1}{armn}{"530} {Armenian}
+\pxkc@bval{1}{hebr}{"590} {Hebrew}
+\pxkc@bval{1}{arab}{"600} {Arabic}
+\pxkc@bval{1}{syrc}{"700} {Syriac}
+\pxkc@bval{1}{arab1}{"750} {Arabic Supplement}
+\pxkc@bval{1}{thaa}{"780} {Thaana}
+\pxkc@bval{1}{nkoo}{"7C0} {NKo}
+\pxkc@bval{2}{samr}{"800} {Samaritan}
+\pxkc@bval{2}{mand}{"840} {Mandaic}
+\pxkc@bval{3}{syrc1}{"860} {Syriac Supplement}
+\pxkc@bval{2}{arabA}{"8A0} {Arabic Extended-A}
+\pxkc@bval{1}{deva}{"900} {Devanagari}
+\pxkc@bval{1}{beng}{"980} {Bengali}
+\pxkc@bval{1}{guru}{"A00} {Gurmukhi}
+\pxkc@bval{1}{gujr}{"A80} {Gujarati}
+\pxkc@bval{1}{orya}{"B00} {Oriya}
+\pxkc@bval{1}{taml}{"B80} {Tamil}
+\pxkc@bval{1}{telu}{"C00} {Telugu}
+\pxkc@bval{1}{knda}{"C80} {Kannada}
+\pxkc@bval{1}{mlym}{"D00} {Malayalam}
+\pxkc@bval{1}{sinh}{"D80} {Sinhala}
+\pxkc@bval{1}{thai}{"E00} {Thai}
+\pxkc@bval{1}{laoo}{"E80} {Lao}
+\pxkc@bval{1}{tibt}{"F00} {Tibetan}
+\pxkc@bval{1}{mymr}{"1000} {Myanmar}
+\pxkc@bval{1}{geor}{"10A0} {Georgian}
+\pxkc@bval{1}{hang1}{"1100} {Hangul Jamo}
+\pxkc@bval{1}{ethi}{"1200} {Ethiopic}
+\pxkc@bval{1}{ethi1}{"1380} {Ethiopic Supplement}
+\pxkc@bval{1}{cher}{"13A0} {Cherokee}
+\pxkc@bval{1}{cans}{"1400} {Unified Canadian Aboriginal Syllabics}
+\pxkc@bval{1}{ogam}{"1680} {Ogham}
+\pxkc@bval{1}{runr}{"16A0} {Runic}
+\pxkc@bval{1}{tglg}{"1700} {Tagalog}
+\pxkc@bval{1}{hano}{"1720} {Hanunoo}
+\pxkc@bval{1}{buhd}{"1740} {Buhid}
+\pxkc@bval{1}{tagb}{"1760} {Tagbanwa}
+\pxkc@bval{1}{khmr}{"1780} {Khmer}
+\pxkc@bval{1}{mong}{"1800} {Mongolian}
+\pxkc@bval{2}{cans1}{"18B0} {Unified Canadian Aboriginal Syllabics Extended}
+\pxkc@bval{1}{limb}{"1900} {Limbu}
+\pxkc@bval{1}{tale}{"1950} {Tai Le}
+\pxkc@bval{1}{talu}{"1980} {New Tai Lue}
+\pxkc@bval{1}{khmr1}{"19E0} {Khmer Symbols}
+\pxkc@bval{1}{bugi}{"1A00} {Buginese}
+\pxkc@bval{2}{lana}{"1A20} {Tai Tham}
+\pxkc@bval{2}{sym52}{"1AB0} {Combining Diacritical Marks Extended}
+\pxkc@bval{1}{bali}{"1B00} {Balinese}
+\pxkc@bval{2}{sund}{"1B80} {Sundanese}
+\pxkc@bval{2}{batk}{"1BC0} {Batak}
+\pxkc@bval{2}{lepc}{"1C00} {Lepcha}
+\pxkc@bval{2}{olck}{"1C50} {Ol Chiki}
+\pxkc@bval{2}{cyrlC}{"1C80} {Cyrillic Extended-C}
+\pxkc@bval{2}{sund1}{"1CC0} {Sundanese Supplement}
+\pxkc@bval{2}{sym38}{"1CD0} {Vedic Extensions}
+\pxkc@bval{1}{latn4}{"1D00} {Phonetic Extensions}
+\pxkc@bval{1}{latn5}{"1D80} {Phonetic Extensions Supplement}
+\pxkc@bval{1}{sym03}{"1DC0} {Combining Diacritical Marks Supplement}
+\pxkc@bval{1}{latn3}{"1E00} {Latin Extended Additional}
+\pxkc@bval{1}{grek1}{"1F00} {Greek Extended}
+\pxkc@bval{1}{sym04}{"2000} {General Punctuation}
+\pxkc@bval{1}{sym05}{"2070} {Superscripts and Subscripts}
+\pxkc@bval{1}{sym06}{"20A0} {Currency Symbols}
+\pxkc@bval{1}{sym07}{"20D0} {Combining Diacritical Marks for Symbols}
+\pxkc@bval{1}{sym08}{"2100} {Letterlike Symbols}
+\pxkc@bval{1}{sym09}{"2150} {Number Forms}
+\pxkc@bval{1}{sym10}{"2190} {Arrows}
+\pxkc@bval{1}{sym11}{"2200} {Mathematical Operators}
+\pxkc@bval{1}{sym12}{"2300} {Miscellaneous Technical}
+\pxkc@bval{1}{sym13}{"2400} {Control Pictures}
+\pxkc@bval{1}{sym14}{"2440} {Optical Character Recognition}
+\pxkc@bval{1}{sym15}{"2460} {Enclosed Alphanumerics}
+\pxkc@bval{1}{sym16}{"2500} {Box Drawing}
+\pxkc@bval{1}{sym17}{"2580} {Block Elements}
+\pxkc@bval{1}{sym18}{"25A0} {Geometric Shapes}
+\pxkc@bval{1}{sym19}{"2600} {Miscellaneous Symbols}
+\pxkc@bval{1}{sym20}{"2700} {Dingbats}
+\pxkc@bval{1}{sym21}{"27C0} {Miscellaneous Mathematical Symbols-A}
+\pxkc@bval{1}{sym22}{"27F0} {Supplemental Arrows-A}
+\pxkc@bval{1}{brai}{"2800} {Braille Patterns}
+\pxkc@bval{1}{sym23}{"2900} {Supplemental Arrows-B}
+\pxkc@bval{1}{sym24}{"2980} {Miscellaneous Mathematical Symbols-B}
+\pxkc@bval{1}{sym25}{"2A00} {Supplemental Mathematical Operators}
+\pxkc@bval{1}{sym26}{"2B00} {Miscellaneous Symbols and Arrows}
+\pxkc@bval{1}{glag}{"2C00} {Glagolitic}
+\pxkc@bval{1}{latnC}{"2C60} {Latin Extended-C}
+\pxkc@bval{1}{copt}{"2C80} {Coptic}
+\pxkc@bval{1}{geor1}{"2D00} {Georgian Supplement}
+\pxkc@bval{1}{tfng}{"2D30} {Tifinagh}
+\pxkc@bval{1}{ethi2}{"2D80} {Ethiopic Extended}
+\pxkc@bval{2}{cyrlA}{"2DE0} {Cyrillic Extended-A}
+\pxkc@bval{1}{sym27}{"2E00} {Supplemental Punctuation}
+\pxkc@bval{1}{cjk01}{"2E80} {CJK Radicals Supplement}
+\pxkc@bval{1}{cjk02}{"2F00} {Kangxi Radicals}
+\pxkc@bval{1}{cjk03}{"2FF0} {Ideographic Description Characters}
+\pxkc@bval{1}{cjk04}{"3000} {CJK Symbols and Punctuation}
+\pxkc@bval{1}{hira}{"3040} {Hiragana}
+\pxkc@bval{1}{kana}{"30A0} {Katakana}
+\pxkc@bval{1}{bopo}{"3100} {Bopomofo}
+\pxkc@bval{1}{hang2}{"3130} {Hangul Compatibility Jamo}
+\pxkc@bval{1}{cjk05}{"3190} {Kanbun}
+\pxkc@bval{1}{bopo1}{"31A0} {Bopomofo Extended}
+\pxkc@bval{1}{cjk06}{"31C0} {CJK Strokes}
+\pxkc@bval{1}{kana1}{"31F0} {Katakana Phonetic Extensions}
+\pxkc@bval{1}{cjk07}{"3200} {Enclosed CJK Letters and Months}
+\pxkc@bval{1}{cjk08}{"3300} {CJK Compatibility}
+\pxkc@bval{1}{haniA}{"3400} {CJK Unified Ideographs Extension A}
+\pxkc@bval{1}{sym28}{"4DC0} {Yijing Hexagram Symbols}
+\pxkc@bval{1}{hani}{"4E00} {CJK Unified Ideographs}
+\pxkc@bval{1}{yiii}{"A000} {Yi Syllables}
+\pxkc@bval{1}{yiii1}{"A490} {Yi Radicals}
+\pxkc@bval{2}{lisu}{"A4D0} {Lisu}
+\pxkc@bval{2}{vaii}{"A500} {Vai}
+\pxkc@bval{2}{cyrlB}{"A640} {Cyrillic Extended-B}
+\pxkc@bval{2}{bamu}{"A6A0} {Bamum}
+\pxkc@bval{1}{sym29}{"A700} {Modifier Tone Letters}
+\pxkc@bval{1}{latnD}{"A720} {Latin Extended-D}
+\pxkc@bval{1}{sylo}{"A800} {Syloti Nagri}
+\pxkc@bval{2}{sym39}{"A830} {Common Indic Number Forms}
+\pxkc@bval{1}{phag}{"A840} {Phags-pa}
+\pxkc@bval{2}{saur}{"A880} {Saurashtra}
+\pxkc@bval{2}{deva1}{"A8E0} {Devanagari Extended}
+\pxkc@bval{2}{kali}{"A900} {Kayah Li}
+\pxkc@bval{2}{rjng}{"A930} {Rejang}
+\pxkc@bval{2}{hangA}{"A960} {Hangul Jamo Extended-A}
+\pxkc@bval{2}{java}{"A980} {Javanese}
+\pxkc@bval{2}{mymrB}{"A9E0} {Myanmar Extended-B}
+\pxkc@bval{2}{cham}{"AA00} {Cham}
+\pxkc@bval{2}{mymrA}{"AA60} {Myanmar Extended-A}
+\pxkc@bval{2}{tavt}{"AA80} {Tai Viet}
+\pxkc@bval{2}{mtei1}{"AAE0} {Meetei Mayek Extensions}
+\pxkc@bval{2}{ethiA}{"AB00} {Ethiopic Extended-A}
+\pxkc@bval{2}{latnE}{"AB30} {Latin Extended-E}
+\pxkc@bval{2}{cher1}{"AB70} {Cherokee Supplement}
+\pxkc@bval{2}{mtei}{"ABC0} {Meetei Mayek}
+\pxkc@bval{1}{hang}{"AC00} {Hangul Syllables}
+\pxkc@bval{2}{hangB}{"D7B0} {Hangul Jamo Extended-B}
+\pxkc@bval{1}{spc01}{"D800} {High Surrogates}
+\pxkc@bval{1}{spc02}{"DB80} {High Private Use Surrogates}
+\pxkc@bval{1}{spc03}{"DC00} {Low Surrogates}
+\pxkc@bval{1}{spc04}{"E000} {Private Use Area}
+\pxkc@bval{1}{hani1}{"F900} {CJK Compatibility Ideographs}
+\pxkc@bval{1}{latn6}{"FB00} {Alphabetic Presentation Forms}
+\pxkc@bval{1}{arab2}{"FB50} {Arabic Presentation Forms-A}
+\pxkc@bval{1}{spc05}{"FE00} {Variation Selectors}
+\pxkc@bval{1}{cjk09}{"FE10} {Vertical Forms}
+\pxkc@bval{1}{sym30}{"FE20} {Combining Half Marks}
+\pxkc@bval{1}{cjk10}{"FE30} {CJK Compatibility Forms}
+\pxkc@bval{1}{cjk11}{"FE50} {Small Form Variants}
+\pxkc@bval{1}{arab3}{"FE70} {Arabic Presentation Forms-B}
+\pxkc@bval{1}{cjk12}{"FF00} {Halfwidth and Fullwidth Forms}
+\pxkc@bval{1}{spc06}{"FFF0} {Specials}
+\pxkc@bval{1}{linb}{"10000} {Linear B Syllabary}
+\pxkc@bval{1}{linb1}{"10080} {Linear B Ideograms}
+\pxkc@bval{1}{sym31}{"10100} {Aegean Numbers}
+\pxkc@bval{1}{grek2}{"10140} {Ancient Greek Numbers}
+\pxkc@bval{2}{sym40}{"10190} {Ancient Symbols}
+\pxkc@bval{2}{sym41}{"101D0} {Phaistos Disc}
+\pxkc@bval{2}{lyci}{"10280} {Lycian}
+\pxkc@bval{2}{cari}{"102A0} {Carian}
+\pxkc@bval{2}{copt1}{"102E0} {Coptic Epact Numbers}
+\pxkc@bval{1}{ital}{"10300} {Old Italic}
+\pxkc@bval{1}{goth}{"10330} {Gothic}
+\pxkc@bval{2}{perm}{"10350} {Old Permic}
+\pxkc@bval{1}{ugar}{"10380} {Ugaritic}
+\pxkc@bval{1}{xpeo}{"103A0} {Old Persian}
+\pxkc@bval{1}{dsrt}{"10400} {Deseret}
+\pxkc@bval{1}{shaw}{"10450} {Shavian}
+\pxkc@bval{1}{osma}{"10480} {Osmanya}
+\pxkc@bval{2}{osge}{"104B0} {Osage}
+\pxkc@bval{2}{elba}{"10500} {Elbasan}
+\pxkc@bval{2}{aghb}{"10530} {Caucasian Albanian}
+\pxkc@bval{2}{lina}{"10600} {Linear A}
+\pxkc@bval{1}{cprt}{"10800} {Cypriot Syllabary}
+\pxkc@bval{2}{armi}{"10840} {Imperial Aramaic}
+\pxkc@bval{2}{palm}{"10860} {Palmyrene}
+\pxkc@bval{2}{nbat}{"10880} {Nabataean}
+\pxkc@bval{2}{hatr}{"108E0} {Hatran}
+\pxkc@bval{1}{phnx}{"10900} {Phoenician}
+\pxkc@bval{2}{lydi}{"10920} {Lydian}
+\pxkc@bval{2}{mero}{"10980} {Meroitic Hieroglyphs}
+\pxkc@bval{2}{merc}{"109A0} {Meroitic Cursive}
+\pxkc@bval{1}{khar}{"10A00} {Kharoshthi}
+\pxkc@bval{2}{sarb}{"10A60} {Old South Arabian}
+\pxkc@bval{2}{narb}{"10A80} {Old North Arabian}
+\pxkc@bval{2}{mani}{"10AC0} {Manichaean}
+\pxkc@bval{2}{avst}{"10B00} {Avestan}
+\pxkc@bval{2}{prti}{"10B40} {Inscriptional Parthian}
+\pxkc@bval{2}{phli}{"10B60} {Inscriptional Pahlavi}
+\pxkc@bval{2}{phlp}{"10B80} {Psalter Pahlavi}
+\pxkc@bval{2}{orkh}{"10C00} {Old Turkic}
+\pxkc@bval{2}{hung}{"10C80} {Old Hungarian}
+\pxkc@bval{2}{sym42}{"10E60} {Rumi Numeral Symbols}
+\pxkc@bval{2}{brah}{"11000} {Brahmi}
+\pxkc@bval{2}{kthi}{"11080} {Kaithi}
+\pxkc@bval{2}{sora}{"110D0} {Sora Sompeng}
+\pxkc@bval{2}{cakm}{"11100} {Chakma}
+\pxkc@bval{2}{mahj}{"11150} {Mahajani}
+\pxkc@bval{2}{shrd}{"11180} {Sharada}
+\pxkc@bval{2}{sinh1}{"111E0} {Sinhala Archaic Numbers}
+\pxkc@bval{2}{khoj}{"11200} {Khojki}
+\pxkc@bval{2}{mult}{"11280} {Multani}
+\pxkc@bval{2}{sind}{"112B0} {Khudawadi}
+\pxkc@bval{2}{gran}{"11300} {Grantha}
+\pxkc@bval{2}{newa}{"11400} {Newa}
+\pxkc@bval{2}{tirh}{"11480} {Tirhuta}
+\pxkc@bval{2}{sidd}{"11580} {Siddham}
+\pxkc@bval{2}{modi}{"11600} {Modi}
+\pxkc@bval{2}{mong1}{"11660} {Mongolian Supplement}
+\pxkc@bval{2}{takr}{"11680} {Takri}
+\pxkc@bval{2}{ahom}{"11700} {Ahom}
+\pxkc@bval{2}{wara}{"118A0} {Warang Citi}
+\pxkc@bval{3}{zanb}{"11A00} {Zanabazar Square}
+\pxkc@bval{3}{soyo}{"11A50} {Soyombo}
+\pxkc@bval{2}{pauc}{"11AC0} {Pau Cin Hau}
+\pxkc@bval{2}{bhks}{"11C00} {Bhaiksuki}
+\pxkc@bval{2}{marc}{"11C70} {Marchen}
+\pxkc@bval{3}{gonm}{"11D00} {Masaram Gondi}
+\pxkc@bval{1}{xsux}{"12000} {Cuneiform}
+\pxkc@bval{1}{xsux1}{"12400} {Cuneiform Numbers and Punctuation}
+\pxkc@bval{2}{xsux2}{"12480} {Early Dynastic Cuneiform}
+\pxkc@bval{2}{egyp}{"13000} {Egyptian Hieroglyphs}
+\pxkc@bval{2}{hluw}{"14400} {Anatolian Hieroglyphs}
+\pxkc@bval{2}{bamu1}{"16800} {Bamum Supplement}
+\pxkc@bval{2}{mroo}{"16A40} {Mro}
+\pxkc@bval{2}{bass}{"16AD0} {Bassa Vah}
+\pxkc@bval{2}{hmng}{"16B00} {Pahawh Hmong}
+\pxkc@bval{2}{plrd}{"16F00} {Miao}
+\pxkc@bval{2}{cjk14}{"16FE0} {Ideographic Symbols and Punctuation}
+\pxkc@bval{2}{tang}{"17000} {Tangut}
+\pxkc@bval{2}{tang1}{"18800} {Tangut Components}
+\pxkc@bval{2}{kana2}{"1B000} {Kana Supplement}
+\pxkc@bval{3}{kanaA}{"1B100} {Kana Extended-A}
+\pxkc@bval{3}{nshu}{"1B170} {Nushu}
+\pxkc@bval{2}{dupl}{"1BC00} {Duployan}
+\pxkc@bval{2}{sym53}{"1BCA0} {Shorthand Format Controls}
+\pxkc@bval{1}{sym32}{"1D000} {Byzantine Musical Symbols}
+\pxkc@bval{1}{sym33}{"1D100} {Musical Symbols}
+\pxkc@bval{1}{sym34}{"1D200} {Ancient Greek Musical Notation}
+\pxkc@bval{1}{sym35}{"1D300} {Tai Xuan Jing Symbols}
+\pxkc@bval{1}{sym36}{"1D360} {Counting Rod Numerals}
+\pxkc@bval{1}{sym37}{"1D400} {Mathematical Alphanumeric Symbols}
+\pxkc@bval{2}{sgnw}{"1D800} {Sutton SignWriting}
+\pxkc@bval{2}{glag1}{"1E000} {Glagolitic Supplement}
+\pxkc@bval{2}{mend}{"1E800} {Mende Kikakui}
+\pxkc@bval{2}{adlm}{"1E900} {Adlam}
+\pxkc@bval{2}{sym51}{"1EE00} {Arabic Mathematical Alphabetic Symbols}
+\pxkc@bval{2}{sym43}{"1F000} {Mahjong Tiles}
+\pxkc@bval{2}{sym44}{"1F030} {Domino Tiles}
+\pxkc@bval{2}{sym46}{"1F0A0} {Playing Cards}
+\pxkc@bval{2}{sym45}{"1F100} {Enclosed Alphanumeric Supplement}
+\pxkc@bval{2}{cjk13}{"1F200} {Enclosed Ideographic Supplement}
+\pxkc@bval{2}{sym47}{"1F300} {Miscellaneous Symbols and Pictographs}
+\pxkc@bval{2}{sym48}{"1F600} {Emoticons}
+\pxkc@bval{2}{sym54}{"1F650} {Ornamental Dingbats}
+\pxkc@bval{2}{sym49}{"1F680} {Transport and Map Symbols}
+\pxkc@bval{2}{sym50}{"1F700} {Alchemical Symbols}
+\pxkc@bval{2}{sym55}{"1F780} {Geometric Shapes Extended}
+\pxkc@bval{2}{sym56}{"1F800} {Supplemental Arrows-C}
+\pxkc@bval{2}{sym57}{"1F900} {Supplemental Symbols and Pictographs}
+\pxkc@bval{1}{haniB}{"20000} {CJK Unified Ideographs Extension B}
+\pxkc@bval{2}{haniC}{"2A700} {CJK Unified Ideographs Extension C}
+\pxkc@bval{2}{haniD}{"2B740} {CJK Unified Ideographs Extension D}
+\pxkc@bval{2}{haniE}{"2B820} {CJK Unified Ideographs Extension E}
+\pxkc@bval{3}{haniF}{"2CEB0} {CJK Unified Ideographs Extension F}
+\pxkc@bval{1}{hani2}{"2F800} {CJK Compatibility Ideographs Supplement}
+\pxkc@bval{1}{spc07}{"E0000} {Tags}
+\pxkc@bval{1}{spc08}{"E0100} {Variation Selectors Supplement}
+\pxkc@bval{1}{spc09}{"F0000} {Supplementary Private Use Area-A}
+\pxkc@bval{1}{spc10}{"100000} {Supplementary Private Use Area-B}
+%=======================================
+\ifnum\pxkc@ccv<2 \else
+\pxkc@gval{cjk12}{cjk1a,cjk1b,cjk1c}{Halfwidth and Fullwidth Forms}
+\pxkc@bval{0}{cjk1a}{"FF01}{Halfwidth and Fullwidth Forms/Other}
+\pxkc@bval{0}{cjk1b}{"FF10}{Halfwidth and Fullwidth Forms/Latin}
+\pxkc@bval{0}{cjk1c}{"FF66}{Halfwidth and Fullwidth Forms/Kana}
+\fi
+\ifnum\pxkc@ccv<3 \else
+\pxkc@gval{latn1}{latnx,latny}{Latin-1 Supplement}
+\pxkc@bval{0}{latnx}{"00A0}{Latin-1 Supplement/Other}
+\pxkc@bval{0}{latny}{"00C0}{Latin-1 Supplement/Latin}
+\fi
+ %
+\edef\pxkc@foreachblk{\noexpand\@for\noexpand\x:={\pxkc@bslst}}
+\let\pxkc@bval\relax\let\pxkc@cval\relax\let\pxkc@bslst\relax
+
+%--------------------------------------- public interfaces
+
+%%<*> \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
+ \pxkc@cjkcategory@c{#1}%
+ \fi}
+\def\pxkc@cjkcategory@c#1{%
+ \pxkc@letcs\pxkc@grp{pxkc@G@@#1}%
+ \ifx\pxkc@grp\relax
+ \pxkc@letcs\pxkc@blk{pxkc@B@@#1}%
+ \ifx\pxkc@blk\relax
+ \pxkc@err@ivbsy{#1}%
+ \else\ifnum\pxkc@blk<\z@
+ \ifpxkc@warn@defunct \pxkc@warn@dfblk{#1}\fi
+ \else
+ \pxkc@kcatcode{\pxkc@blk}{\pxkc@arg}%
+ \fi\fi
+ \else
+ \pxkc@expanded{\noexpand\pxkc@cjkcategory@a{\pxkc@grp}}%
+ \fi}
+
+%%<*> \pxkc@cjkcategory{<block>}{<kcatcode>}
+%%<*> \pxkc@cjkcategory@mccv{<mccv>}{<block>}{<kcatcode>}
+% Another entry point for internal use.
+\def\pxkc@cjkcategory#1#2{%
+ \edef\pxkc@arg{#2}%
+ \pxkc@cjkcategory@c{#1}}
+\def\pxkc@cjkcategory@mccv#1#2#3#4{%
+ \ifnum#1>\pxkc@mccv\else \ifnum#2<\pxkc@mccv\else
+ \pxkc@cjkcategory{#3}{#4}%
+ \fi\fi}
+
+%% \pxkc@chkchr{<arg>}
+\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{%
+ \pxkc@letcs\pxkc@nxt{pxkc@M@@#1}%
+ \ifx\pxkc@nxt\relax
+ \pxkc@err@ivmsy
+ \else
+ \pxkc@warn@defunctfalse
+ \pxkc@nxt
+ \pxkc@warn@defuncttrue
+ \fi}
+
+%--------------------------------------- CJK category modes
+
+%% Invariant blocks
+\def\do#1#2{\expandafter\chardef\csname pxkc@K@@#1\endcsname=#2 }
+%=======================================
+\do{latn} {15} % Basic Latin
+\do{hang1} {19} % Hangul Jamo
+\do{sym15} {18} % Enclosed Alphanumerics
+\do{cjk01} {16} % CJK Radicals Supplement
+\do{cjk02} {16} % Kangxi Radicals
+\do{cjk03} {16} % Ideographic Description Characters
+\do{cjk04} {18} % CJK Symbols and Punctuation
+\do{hira} {17} % Hiragana
+\do{kana} {17} % Katakana
+\do{bopo} {16} % Bopomofo
+\do{hang2} {19} % Hangul Compatibility Jamo
+\do{cjk05} {16} % Kanbun
+\do{bopo1} {16} % Bopomofo Extended
+\do{cjk06} {16} % CJK Strokes
+\do{kana1} {17} % Katakana Phonetic Extensions
+\do{cjk07} {18} % Enclosed CJK Letters and Months
+\do{cjk08} {18} % CJK Compatibility
+\do{haniA} {16} % CJK Unified Ideographs Extension A
+\do{hani} {16} % CJK Unified Ideographs
+\do{yiii} {18} % Yi Syllables
+\do{yiii1} {18} % Yi Radicals
+\do{hangA} {19} % Hangul Jamo Extended-A
+\do{hang} {19} % Hangul Syllables
+\do{hangB} {19} % Hangul Jamo Extended-B
+\do{hani1} {16} % CJK Compatibility Ideographs
+\do{cjk09} {18} % Vertical Forms
+\do{cjk10} {18} % CJK Compatibility Forms
+\do{cjk11} {18} % Small Form Variants
+\do{cjk12} {18} % Halfwidth and Fullwidth Forms
+\do{cjk1a} {18} % Halfwidth and Fullwidth Forms/Other
+\do{cjk1b} {17} % Halfwidth and Fullwidth Forms/Latin
+\do{cjk1c} {17} % Halfwidth and Fullwidth Forms/Kana
+\do{cjk14} {18} % Ideographic Symbols and Punctuation
+\do{tang} {18} % Tangut
+\do{tang1} {18} % Tangut Components
+\do{kana2} {17} % Kana Supplement
+\do{kanaA} {17} % Kana Extended-A
+\do{nshu} {18} % Nushu
+\do{sym45} {18} % Enclosed Alphanumeric Supplement
+\do{cjk13} {18} % Enclosed Ideographic Supplement
+\do{haniB} {16} % CJK Unified Ideographs Extension B
+\do{haniC} {16} % CJK Unified Ideographs Extension C
+\do{haniD} {16} % CJK Unified Ideographs Extension D
+\do{haniE} {16} % CJK Unified Ideographs Extension E
+\do{haniF} {16} % CJK Unified Ideographs Extension F
+\do{hani2} {16} % CJK Compatibility Ideographs Supplement
+%=======================================
+
+%%%% cjkcategory modes
+\def\pxkc@resetcjkcat#1{%
+ \chardef\pxkc@base@cat=#1\relax
+ \pxkc@foreachblk\do{%
+ \pxkc@letcs\pxkc@cat{pxkc@K@@\x}%
+ \ifx\pxkc@cat\relax \let\pxkc@cat\pxkc@base@cat \fi
+ \pxkc@kcatcode{\@nameuse{pxkc@B@@\x}}{\pxkc@cat}}%
+ \ifnum\pxkc@mccv<2
+ \pxkc@cjkcategory{cjk12}{18}%
+ \fi}
+
+%=======================================
+%% 'forcecjk'
+\def\pxkc@M@@forcecjk{%
+ \pxkc@resetcjkcat{18}%
+}
+%% 'prefercjk'
+\def\pxkc@M@@prefercjk{%
+ \pxkc@M@@prefercjkvar
+ \pxkc@cjkcategory{grek}{18}%
+ \pxkc@cjkcategory{cyrl}{18}%
+ \pxkc@cjkcategory{grek1}{18}%
+}
+%% 'prefercjkvar'
+\def\pxkc@M@@prefercjkvar{%
+ \pxkc@M@@japanesevar
+ \pxkc@cjkcategory@mccv{3}{3}{latny}{18}%
+ \pxkc@cjkcategory{latnA}{18}%
+ \pxkc@cjkcategory{latnB}{18}%
+ \pxkc@cjkcategory{latn2}{18}%
+ \pxkc@cjkcategory{sym01}{18}%
+ \pxkc@cjkcategory{sym02}{18}%
+ \pxkc@cjkcategory{latn3}{18}%
+ \pxkc@cjkcategory{sym05}{18}%
+ \pxkc@cjkcategory{sym06}{18}%
+ \pxkc@cjkcategory{latn6}{18}%
+}
+%% 'japanese'
+\def\pxkc@M@@japanese{%
+ \pxkc@M@@japanesevar
+ \pxkc@cjkcategory{grek}{18}%
+ \pxkc@cjkcategory{cyrl}{18}%
+}
+%% 'japanesevar'
+\def\pxkc@M@@japanesevar{%
+ \pxkc@M@@prefernoncjk
+ \pxkc@cjkcategory@mccv{1}{2}{latn1}{18}%
+ \pxkc@cjkcategory@mccv{3}{3}{latnx}{18}%
+ \pxkc@cjkcategory{sym04}{18}%
+ \pxkc@cjkcategory{sym07}{18}%
+ \pxkc@cjkcategory{sym08}{18}%
+ \pxkc@cjkcategory{sym09}{18}%
+ \pxkc@cjkcategory{sym10}{18}%
+ \pxkc@cjkcategory{sym11}{18}%
+ \pxkc@cjkcategory{sym12}{18}%
+ \pxkc@cjkcategory{sym13}{18}%
+ \pxkc@cjkcategory{sym16}{18}%
+ \pxkc@cjkcategory{sym17}{18}%
+ \pxkc@cjkcategory{sym18}{18}%
+ \pxkc@cjkcategory{sym19}{18}%
+ \pxkc@cjkcategory{sym20}{18}%
+ \pxkc@cjkcategory{sym23}{18}%
+ \pxkc@cjkcategory{sym24}{18}%
+ \pxkc@cjkcategory{sym26}{18}%
+ \pxkc@cjkcategory{spc04}{18}%
+}
+%% 'prefernoncjk'
+\def\pxkc@M@@prefernoncjk{%
+ \pxkc@resetcjkcat{15}%
+}
+%=======================================
+%% 'default'
+\def\pxkc@M@@default{%
+ \pxkc@M@@forcecjk
+ \pxkc@cjkcategory@mccv{3}{3}{latny}{15}%
+ \pxkc@cjkcategory@mccv{3}{3}{latnA}{15}%
+}
+
+%%%% \showcjkcategory
+\def\showcjkcategory{%
+ \pxkc@foreachblk\do{%
+ \expandafter\ifx\csname pxkc@G@@\x\endcsname\relax
+ \typeout{\x\space= \the\kcatcode\@nameuse{pxkc@B@@\x}}%
+ \fi}}
+
+%%-------- \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/macros/latex/contrib/pxcjkcat/pxcjkcat.tex b/macros/latex/contrib/pxcjkcat/pxcjkcat.tex
new file mode 100644
index 0000000000..cb63c6ff79
--- /dev/null
+++ b/macros/latex/contrib/pxcjkcat/pxcjkcat.tex
@@ -0,0 +1,737 @@
+% upLaTeX 文書; 文字コードは UTF-8
+\documentclass[uplatex,dvipdfmx,a4paper]{jsarticle}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage{geometry}
+\usepackage{xcolor}
+\usepackage[colorlinks,hyperfootnotes=false]{hyperref}
+\usepackage{pxjahyper}
+\hypersetup{linkcolor=blue!75!black,urlcolor=green!45!black}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\usepackage{verbatim}
+\newenvironment{myverbatim}
+ {\quote\small\verbatim}
+ {\endverbatim\endquote}
+\newcommand{\PkgVersion}{1.1}
+\newcommand{\PkgDate}{2018/04/01}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
+\newcommand{\Note}{\par\noindent ※}
+\newcommand{\Means}{:\quad}
+\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} パッケージ}
+\author{八登崇之\ (Takayuki YATO; aka.~``ZR'')}
+\date{v\PkgVersion\quad[\PkgDate]}
+\maketitle
+
+\begin{abstract}
+本パッケージは、
+{\upTeX}の和文文字カテゴリ(kcatcode)を扱う{\LaTeX}上の
+インタフェースを提供する。
+\end{abstract}
+
+\tableofcontents
+
+%===========================================================
+\section{パッケージ読込}
+\label{sec:Loading}
+
+\begin{myverbatim}
+\usepackage[<オプション>]{pxcjkcat}
+\end{myverbatim}
+
+オプションとして以下のものが指定できる。
+
+\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
+ 和文カテゴリがモードに従って設定される。
+ \Note モード値オプションが非指定の場合は、パッケージ読込時に
+ 和文カテゴリが変更されることはない。
+\end{itemize}
+
+%===========================================================
+\section{機能}
+\label{sec:Function}
+
+\begin{itemize}
+\item |\cjkcategory{|\Meta{ブロック}|,...}{|\Meta{カテゴリ}|}|\Means
+ \Meta{ブロック}で表される文字ブロック(複数指定が可能)の
+ 和文カテゴリを\Meta{カテゴリ}に変更する。
+
+ \Meta{ブロック}は以下の何れかの形式で指定する:
+ \begin{itemize}
+ \item ブロックID(後述)
+ %\item ブロック名
+ \item 非ASCII文字1つ\Means
+ その文字の属するブロックを指す。
+ %\item 整数値\Means
+ % その符号位置の属するブロックを指す。
+ \end{itemize}
+ \Meta{カテゴリ}は以下に示す「カテゴリID」で指定する
+ \footnote{括弧内の整数値は{\upTeX}が内部で用いている
+ 「カテゴリコード値」であり、「カテゴリID」の代わりに
+ この値を指定することもできる。}:
+ \begin{itemize}
+ \item |noncjk|(15)\Means 欧文扱い
+ \item |kanji|または|han|(16)\Means 漢字扱い
+ \item |kana|(17)\Means 仮名扱い
+ \item |cjk|(18)\Means \<「その他の和文」扱い
+ \item |hangul|(19)\Means ハングル扱い
+ \end{itemize}
+
+ 和文カテゴリの変更は局所的(グルーピングに従う)である。
+
+\item |\cjkcategorymode{|\Meta{モード}|}|\Means
+ 全てのブロックの和文カテゴリの一括設定(モード設定)を行う。
+ モードには以下のものがある。
+ 何れのセットも、後述する「CJK中核セット」の設定は共通であり、
+ それ以外のブロックが欧文扱い(|noncjk|)であるか
+ 和文扱い(|cjk|)であるかが異なる。
+ \begin{itemize}
+ \item |forcecjk|\Means
+ ASCII文字のみ欧文扱いで他のブロックは全て和文扱い
+ (|noncjk| 以外)とする。
+ 和文フォントの中のUnicode値の割当がある全ての文字を
+ 和文文字として直接用いることができる。
+ \item |default|\Means
+ 指定のモードCCVにおける既定の設定と一致させる。
+ \Note モードCCVが2以下の場合は |forcecjk| と同一の設定になる。
+ \Note モードCCVがエンジンの実のCCVと一致する場合
+ (|ccv+| オプション指定の場合を含む)は、
+ エンジンの既定の設定と一致する。
+ \item |prefercjk|\Means
+ 和文扱いのブロックとして、「CJK中核セット」のものに加えて、
+ 「Adobeの定めるCJK文字集合
+ \footnote{Adobe-Japan1、Adobe-GB1、Adobe-CNS1、Adobe-Korea1。}%
+ の何れかと共通部分をもつ文字ブロック」を加えて、
+ 残りを欧文扱いに設定する。
+ \item |prefercjkvar|\Means
+ |prefercjk| において、ギリシャ・キリル文字の
+ ブロックを欧文扱いに変更したもの。
+ \item |japanese|\Means
+ 和文扱いのブロックとして、「CJK中核セット」のものに加えて、
+ 「Adobe-Japan1の全角幅のグリフ
+ の何れかと共通部分をもつ文字ブロック」を加えて、
+ 残りを欧文扱いに設定する。
+ \item |japanesevar|\Means
+ |japanese| において、ギリシャ・キリル文字の
+ ブロックを欧文扱いに変更したもの。
+ \item |prefernoncjk|\Means
+ 「CJK中核セット」のブロックのみを和文扱いとし、
+ 残りを欧文扱いにする。
+ \end{itemize}
+
+ ここで「CJK中核セット」の内容は以下のとおりである。
+ \begin{itemize}
+ \item 漢字・部首・注音字母\Means |kanji| に設定。
+ \item ひらがな・カタカナ\Means |kana| に設定。
+ \item CJK記号の一部・全角半角互換形・彝文字
+ ・西夏文字・女書文字\Means |cjk| に設定
+ \footnote{モードCCVが2の場合、|cjk12| の再分割の
+ 中の |cjk1b|、|cjk1c| は |kana| に変更される。}。
+ \item ハングル完成形・ハングル字母\Means |hangul| に設定。
+ \end{itemize}
+ \Note 各モードでの具体的な設定値については\ref{sec:Values}節を参照。
+
+\end{itemize}
+
+%===========================================================
+\section{文字分類バージョン(CCV)}
+\label{sec:CCV}
+
+{\upTeX}エンジンでの文字ブロックの分割および各ブロックの
+和文カテゴリの既定値は改版時に変更され、
+これが互換性の問題を起こす可能性がある。
+本パッケージでは、パッケージの機能を用いて設定された
+和文カテゴリの値がエンジンの改版により変化することを防ぐため、
+「特定のエンジンのバージョンを指定して、その動作を模倣する」
+という方針をとる。
+
+\subsection{文字分類バージョンとは何か}
+
+\begin{itemize}
+\item 文字ブロックの分割の違いを
+ 「\strong{文字分類バージョン}(CCV;Character Category Version)」
+ と呼ぶことにする。
+ 現状では次のものが存在する。
+ \begin{itemize}
+ \item バージョン1: {\upTeX} v0.11~0.28と互換
+ \item バージョン2: {\upTeX} v0.29~1.22と互換
+ \item バージョン3: {\upTeX} v1.23以降と互換
+ \end{itemize}
+
+\item \Pkg{pxcjkcat}の読込時に、そのオプションにおいて
+ 「その文書が依拠するCCVの値」(これを\strong{モードCCV}と呼ぶ)
+ を指定する。
+ すなわち、オプション |ccv|$N$($N=\mbox{1~3}$)を指定すると、
+ モードCCVが$N$になる。
+
+\item モードCCVを使用するエンジンの実のCCVと常に一致させたい場合は、
+ |ccv+| というオプションを指定すればよい。
+ ただしこの場合は当然、和文カテゴリ設定がエンジンの版に
+ 依存することになる。
+
+\item モードCCVの既定値は1(|ccv1|)である。
+ この場合、ブロック分割の状態はUnicode%
+ \footnote{エンジンの版に対応する版のUnicode。}%
+ のブロック定義と完全に一致する。
+
+\item モード設定で |default| を指定した場合は、
+ 和文カテゴリの設定は
+ 「モードCCVに対応するエンジンの版の既定値」
+ に一致する。
+ 他のモード設定の実際の設定値も |default| を基礎にして
+ 決まるので、モードCCVにより多少の差異が出る。
+
+\end{itemize}
+
+\subsection{注意事項}
+
+\begin{itemize}
+\item Unicodeの改版による「文字ブロックの追加」については
+ 「当該の版のエンジンで未対応の文字ブロックの文字は
+ 決して使われない」
+ ことを仮定すれば互換性を損なうことがないため、
+ 特に対策を行わない。
+
+ 従って、エンジンの改版が「文字ブロックの追加」だけを伴う場合は、
+ それは新しいCCVとは見なされない。
+ 例えば、v1.00→v1.10の改修では幾つかのブロックが追加されたが、
+ CCVは2のままである。
+
+\item もちろん、「旧版の動作の模倣」は本パッケージの機能を用いた
+ 場合に限られ、{\upTeX}エンジンの和文カテゴリコード(kcatcode)の
+ 処理自体は何も変更されない。
+ また、本パッケージの機能を用いる以外の方法
+ (エンジン既定のままの場合を含む)
+ で設定された和文カテゴリ値については、
+ 当然、エンジンの版による差異が生じうる。
+
+\end{itemize}
+
+
+%===========================================================
+\section{文字ブロック}
+\label{sec:Blocks}
+
+%-------------------
+\subsection{Unicodeブロックの一覧}
+
+以下は、Unicodeが定めるブロックと直接に対応するブロックの一覧である。
+この表の「ブロックID」の欄が、|\cjkcategory| 命令で指定する
+ブロックIDを示す。
+「CCV」の欄は、そのブロックがサポートされるモードCCVの
+範囲の下限を表す。
+\footnote{ここで示すサポート範囲は「必要条件」であることに注意。
+ 先述の通り、エンジンの改版でブロックが(分割変更でなく)
+ 新規追加された場合には以前のCCVの値を引き継ぐ。
+ このため、サポート範囲が「2」のブロックは、
+ モードCCVが2であっても“実際には使えない”可能性がある。
+ (モードCCVが3以上なら必ず使えて、1なら必ず使えない。)
+ “実際には使えない”ブロックに設定を試みた場合は、
+ 警告が出て設定が無視される。}
+
+\begin{quote}
+\renewcommand{\baselinestretch}{0.9}\small
+\setlength{\parskip}{0pt}
+\newcommand*\xI[1]{\makebox[4em][l]{\texttt{#1}}\ignorespaces}
+\newcommand*\xV[1]{\makebox[2em][c]{#1}\hspace*{1em}\ignorespaces}
+\newcommand*\xR[2]{\Code{U+}\makebox[3em][r]{\Code{#1}}%
+ ~~~\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[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
+\xI{latnA} \xV{1} \xR {0100} {017F} \xN{Latin Extended-A}\par
+\xI{latnB} \xV{1} \xR {0180} {024F} \xN{Latin Extended-B}\par
+\xI{latn2} \xV{1} \xR {0250} {02AF} \xN{IPA Extensions}\par
+\xI{sym01} \xV{1} \xR {02B0} {02FF} \xN{Spacing Modifier Letters}\par
+\xI{sym02} \xV{1} \xR {0300} {036F} \xN{Combining Diacritical Marks}\par
+\xI{grek} \xV{1} \xR {0370} {03FF} \xN{Greek and Coptic}\par
+\xI{cyrl} \xV{1} \xR {0400} {04FF} \xN{Cyrillic}\par
+\xI{cyrl1} \xV{1} \xR {0500} {052F} \xN{Cyrillic Supplement}\par
+\xI{armn} \xV{1} \xR {0530} {058F} \xN{Armenian}\par
+\xI{hebr} \xV{1} \xR {0590} {05FF} \xN{Hebrew}\par
+\xI{arab} \xV{1} \xR {0600} {06FF} \xN{Arabic}\par
+\xI{syrc} \xV{1} \xR {0700} {074F} \xN{Syriac}\par
+\xI{arab1} \xV{1} \xR {0750} {077F} \xN{Arabic Supplement}\par
+\xI{thaa} \xV{1} \xR {0780} {07BF} \xN{Thaana}\par
+\xI{nkoo} \xV{1} \xR {07C0} {07FF} \xN{NKo}\par
+\xI{samr} \xV{2} \xR {0800} {083F} \xN{Samaritan}\par
+\xI{mand} \xV{2} \xR {0840} {085F} \xN{Mandaic}\par
+\xI{syrc1} \xV{3} \xR {0860} {086F} \xN{Syriac Supplement}\par
+\xI{arabA} \xV{2} \xR {08A0} {08FF} \xN{Arabic Extended-A}\par
+\xI{deva} \xV{1} \xR {0900} {097F} \xN{Devanagari}\par
+\xI{beng} \xV{1} \xR {0980} {09FF} \xN{Bengali}\par
+\xI{guru} \xV{1} \xR {0A00} {0A7F} \xN{Gurmukhi}\par
+\xI{gujr} \xV{1} \xR {0A80} {0AFF} \xN{Gujarati}\par
+\xI{orya} \xV{1} \xR {0B00} {0B7F} \xN{Oriya}\par
+\xI{taml} \xV{1} \xR {0B80} {0BFF} \xN{Tamil}\par
+\xI{telu} \xV{1} \xR {0C00} {0C7F} \xN{Telugu}\par
+\xI{knda} \xV{1} \xR {0C80} {0CFF} \xN{Kannada}\par
+\xI{mlym} \xV{1} \xR {0D00} {0D7F} \xN{Malayalam}\par
+\xI{sinh} \xV{1} \xR {0D80} {0DFF} \xN{Sinhala}\par
+\xI{thai} \xV{1} \xR {0E00} {0E7F} \xN{Thai}\par
+\xI{laoo} \xV{1} \xR {0E80} {0EFF} \xN{Lao}\par
+\xI{tibt} \xV{1} \xR {0F00} {0FFF} \xN{Tibetan}\par
+\xI{mymr} \xV{1} \xR {1000} {109F} \xN{Myanmar}\par
+\xI{geor} \xV{1} \xR {10A0} {10FF} \xN{Georgian}\par
+\xI{hang1} \xV{1} \xR {1100} {11FF} \xN{Hangul Jamo}\par
+\xI{ethi} \xV{1} \xR {1200} {137F} \xN{Ethiopic}\par
+\xI{ethi1} \xV{1} \xR {1380} {139F} \xN{Ethiopic Supplement}\par
+\xI{cher} \xV{1} \xR {13A0} {13FF} \xN{Cherokee}\par
+\xI{cans} \xV{1} \xR {1400} {167F} \xN{Unified Canadian Aboriginal Syllabics}\par
+\xI{ogam} \xV{1} \xR {1680} {169F} \xN{Ogham}\par
+\xI{runr} \xV{1} \xR {16A0} {16FF} \xN{Runic}\par
+\xI{tglg} \xV{1} \xR {1700} {171F} \xN{Tagalog}\par
+\xI{hano} \xV{1} \xR {1720} {173F} \xN{Hanunoo}\par
+\xI{buhd} \xV{1} \xR {1740} {175F} \xN{Buhid}\par
+\xI{tagb} \xV{1} \xR {1760} {177F} \xN{Tagbanwa}\par
+\xI{khmr} \xV{1} \xR {1780} {17FF} \xN{Khmer}\par
+\xI{mong} \xV{1} \xR {1800} {18AF} \xN{Mongolian}\par
+\xI{cans1} \xV{2} \xR {18B0} {18FF} \xN{Unified Canadian Aboriginal Syllabics Extended}\par
+\xI{limb} \xV{1} \xR {1900} {194F} \xN{Limbu}\par
+\xI{tale} \xV{1} \xR {1950} {197F} \xN{Tai Le}\par
+\xI{talu} \xV{1} \xR {1980} {19DF} \xN{New Tai Lue}\par
+\xI{khmr1} \xV{1} \xR {19E0} {19FF} \xN{Khmer Symbols}\par
+\xI{bugi} \xV{1} \xR {1A00} {1A1F} \xN{Buginese}\par
+\xI{lana} \xV{2} \xR {1A20} {1AAF} \xN{Tai Tham}\par
+\xI{sym52} \xV{2} \xR {1AB0} {1AFF} \xN{Combining Diacritical Marks Extended}\par
+\xI{bali} \xV{1} \xR {1B00} {1B7F} \xN{Balinese}\par
+\xI{sund} \xV{2} \xR {1B80} {1BBF} \xN{Sundanese}\par
+\xI{batk} \xV{2} \xR {1BC0} {1BFF} \xN{Batak}\par
+\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{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
+\xI{latn5} \xV{1} \xR {1D80} {1DBF} \xN{Phonetic Extensions Supplement}\par
+\xI{sym03} \xV{1} \xR {1DC0} {1DFF} \xN{Combining Diacritical Marks Supplement}\par
+\xI{latn3} \xV{1} \xR {1E00} {1EFF} \xN{Latin Extended Additional}\par
+\xI{grek1} \xV{1} \xR {1F00} {1FFF} \xN{Greek Extended}\par
+\xI{sym04} \xV{1} \xR {2000} {206F} \xN{General Punctuation}\par
+\xI{sym05} \xV{1} \xR {2070} {209F} \xN{Superscripts and Subscripts}\par
+\xI{sym06} \xV{1} \xR {20A0} {20CF} \xN{Currency Symbols}\par
+\xI{sym07} \xV{1} \xR {20D0} {20FF} \xN{Combining Diacritical Marks for Symbols}\par
+\xI{sym08} \xV{1} \xR {2100} {214F} \xN{Letterlike Symbols}\par
+\xI{sym09} \xV{1} \xR {2150} {218F} \xN{Number Forms}\par
+\xI{sym10} \xV{1} \xR {2190} {21FF} \xN{Arrows}\par
+\xI{sym11} \xV{1} \xR {2200} {22FF} \xN{Mathematical Operators}\par
+\xI{sym12} \xV{1} \xR {2300} {23FF} \xN{Miscellaneous Technical}\par
+\xI{sym13} \xV{1} \xR {2400} {243F} \xN{Control Pictures}\par
+\xI{sym14} \xV{1} \xR {2440} {245F} \xN{Optical Character Recognition}\par
+\xI{sym15} \xV{1} \xR {2460} {24FF} \xN{Enclosed Alphanumerics}\par
+\xI{sym16} \xV{1} \xR {2500} {257F} \xN{Box Drawing}\par
+\xI{sym17} \xV{1} \xR {2580} {259F} \xN{Block Elements}\par
+\xI{sym18} \xV{1} \xR {25A0} {25FF} \xN{Geometric Shapes}\par
+\xI{sym19} \xV{1} \xR {2600} {26FF} \xN{Miscellaneous Symbols}\par
+\xI{sym20} \xV{1} \xR {2700} {27BF} \xN{Dingbats}\par
+\xI{sym21} \xV{1} \xR {27C0} {27EF} \xN{Miscellaneous Mathematical Symbols-A}\par
+\xI{sym22} \xV{1} \xR {27F0} {27FF} \xN{Supplemental Arrows-A}\par
+\xI{brai} \xV{1} \xR {2800} {28FF} \xN{Braille Patterns}\par
+\xI{sym23} \xV{1} \xR {2900} {297F} \xN{Supplemental Arrows-B}\par
+\xI{sym24} \xV{1} \xR {2980} {29FF} \xN{Miscellaneous Mathematical Symbols-B}\par
+\xI{sym25} \xV{1} \xR {2A00} {2AFF} \xN{Supplemental Mathematical Operators}\par
+\xI{sym26} \xV{1} \xR {2B00} {2BFF} \xN{Miscellaneous Symbols and Arrows}\par
+\xI{glag} \xV{1} \xR {2C00} {2C5F} \xN{Glagolitic}\par
+\xI{latnC} \xV{1} \xR {2C60} {2C7F} \xN{Latin Extended-C}\par
+\xI{copt} \xV{1} \xR {2C80} {2CFF} \xN{Coptic}\par
+\xI{geor1} \xV{1} \xR {2D00} {2D2F} \xN{Georgian Supplement}\par
+\xI{tfng} \xV{1} \xR {2D30} {2D7F} \xN{Tifinagh}\par
+\xI{ethi2} \xV{1} \xR {2D80} {2DDF} \xN{Ethiopic Extended}\par
+\xI{cyrlA} \xV{2} \xR {2DE0} {2DFF} \xN{Cyrillic Extended-A}\par
+\xI{sym27} \xV{1} \xR {2E00} {2E7F} \xN{Supplemental Punctuation}\par
+\xI{cjk01} \xV{1} \xR {2E80} {2EFF} \xN{CJK Radicals Supplement}\par
+\xI{cjk02} \xV{1} \xR {2F00} {2FDF} \xN{Kangxi Radicals}\par
+\xI{cjk03} \xV{1} \xR {2FF0} {2FFF} \xN{Ideographic Description Characters}\par
+\xI{cjk04} \xV{1} \xR {3000} {303F} \xN{CJK Symbols and Punctuation}\par
+\xI{hira} \xV{1} \xR {3040} {309F} \xN{Hiragana}\par
+\xI{kana} \xV{1} \xR {30A0} {30FF} \xN{Katakana}\par
+\xI{bopo} \xV{1} \xR {3100} {312F} \xN{Bopomofo}\par
+\xI{hang2} \xV{1} \xR {3130} {318F} \xN{Hangul Compatibility Jamo}\par
+\xI{cjk05} \xV{1} \xR {3190} {319F} \xN{Kanbun}\par
+\xI{bopo1} \xV{1} \xR {31A0} {31BF} \xN{Bopomofo Extended}\par
+\xI{cjk06} \xV{1} \xR {31C0} {31EF} \xN{CJK Strokes}\par
+\xI{kana1} \xV{1} \xR {31F0} {31FF} \xN{Katakana Phonetic Extensions}\par
+\xI{cjk07} \xV{1} \xR {3200} {32FF} \xN{Enclosed CJK Letters and Months}\par
+\xI{cjk08} \xV{1} \xR {3300} {33FF} \xN{CJK Compatibility}\par
+\xI{haniA} \xV{1} \xR {3400} {4DBF} \xN{CJK Unified Ideographs Extension A}\par
+\xI{sym28} \xV{1} \xR {4DC0} {4DFF} \xN{Yijing Hexagram Symbols}\par
+\xI{hani} \xV{1} \xR {4E00} {9FFF} \xN{CJK Unified Ideographs}\par
+\xI{yiii} \xV{1} \xR {A000} {A48F} \xN{Yi Syllables}\par
+\xI{yiii1} \xV{1} \xR {A490} {A4CF} \xN{Yi Radicals}\par
+\xI{lisu} \xV{2} \xR {A4D0} {A4FF} \xN{Lisu}\par
+\xI{vaii} \xV{2} \xR {A500} {A63F} \xN{Vai}\par
+\xI{cyrlB} \xV{2} \xR {A640} {A69F} \xN{Cyrillic Extended-B}\par
+\xI{bamu} \xV{2} \xR {A6A0} {A6FF} \xN{Bamum}\par
+\xI{sym29} \xV{1} \xR {A700} {A71F} \xN{Modifier Tone Letters}\par
+\xI{latnD} \xV{1} \xR {A720} {A7FF} \xN{Latin Extended-D}\par
+\xI{sylo} \xV{1} \xR {A800} {A82F} \xN{Syloti Nagri}\par
+\xI{sym39} \xV{2} \xR {A830} {A83F} \xN{Common Indic Number Forms}\par
+\xI{phag} \xV{1} \xR {A840} {A87F} \xN{Phags-pa}\par
+\xI{saur} \xV{2} \xR {A880} {A8DF} \xN{Saurashtra}\par
+\xI{deva1} \xV{2} \xR {A8E0} {A8FF} \xN{Devanagari Extended}\par
+\xI{kali} \xV{2} \xR {A900} {A92F} \xN{Kayah Li}\par
+\xI{rjng} \xV{2} \xR {A930} {A95F} \xN{Rejang}\par
+\xI{hangA} \xV{2} \xR {A960} {A97F} \xN{Hangul Jamo Extended-A}\par
+\xI{java} \xV{2} \xR {A980} {A9DF} \xN{Javanese}\par
+\xI{mymrB} \xV{2} \xR {A9E0} {A9FF} \xN{Myanmar Extended-B}\par
+\xI{cham} \xV{2} \xR {AA00} {AA5F} \xN{Cham}\par
+\xI{mymrA} \xV{2} \xR {AA60} {AA7F} \xN{Myanmar Extended-A}\par
+\xI{tavt} \xV{2} \xR {AA80} {AADF} \xN{Tai Viet}\par
+\xI{mtei1} \xV{2} \xR {AAE0} {AAFF} \xN{Meetei Mayek Extensions}\par
+\xI{ethiA} \xV{2} \xR {AB00} {AB2F} \xN{Ethiopic Extended-A}\par
+\xI{latnE} \xV{2} \xR {AB30} {AB6F} \xN{Latin Extended-E}\par
+\xI{cher1} \xV{2} \xR {AB70} {ABBF} \xN{Cherokee Supplement}\par
+\xI{mtei} \xV{2} \xR {ABC0} {ABFF} \xN{Meetei Mayek}\par
+\xI{hang} \xV{1} \xR {AC00} {D7AF} \xN{Hangul Syllables}\par
+\xI{hangB} \xV{2} \xR {D7B0} {D7FF} \xN{Hangul Jamo Extended-B}\par
+\xI{spc01} \xV{1} \xR {D800} {DB7F} \xN{High Surrogates}\par
+\xI{spc02} \xV{1} \xR {DB80} {DBFF} \xN{High Private Use Surrogates}\par
+\xI{spc03} \xV{1} \xR {DC00} {DFFF} \xN{Low Surrogates}\par
+\xI{spc04} \xV{1} \xR {E000} {F8FF} \xN{Private Use Area}\par
+\xI{hani1} \xV{1} \xR {F900} {FAFF} \xN{CJK Compatibility Ideographs}\par
+\xI{latn6} \xV{1} \xR {FB00} {FB4F} \xN{Alphabetic Presentation Forms}\par
+\xI{arab2} \xV{1} \xR {FB50} {FDFF} \xN{Arabic Presentation Forms-A}\par
+\xI{spc05} \xV{1} \xR {FE00} {FE0F} \xN{Variation Selectors}\par
+\xI{cjk09} \xV{1} \xR {FE10} {FE1F} \xN{Vertical Forms}\par
+\xI{sym30} \xV{1} \xR {FE20} {FE2F} \xN{Combining Half Marks}\par
+\xI{cjk10} \xV{1} \xR {FE30} {FE4F} \xN{CJK Compatibility Forms}\par
+\xI{cjk11} \xV{1} \xR {FE50} {FE6F} \xN{Small Form Variants}\par
+\xI{arab3} \xV{1} \xR {FE70} {FEFF} \xN{Arabic Presentation Forms-B}\par
+\xI{cjk12} \xV{1} \xR {FF00} {FFEF} \xN{Halfwidth and Fullwidth Forms}\par
+\xI{spc06} \xV{1} \xR {FFF0} {FFFF} \xN{Specials}\par
+\xI{linb} \xV{1} \xR {10000} {1007F} \xN{Linear B Syllabary}\par
+\xI{linb1} \xV{1} \xR {10080} {100FF} \xN{Linear B Ideograms}\par
+\xI{sym31} \xV{1} \xR {10100} {1013F} \xN{Aegean Numbers}\par
+\xI{grek2} \xV{1} \xR {10140} {1018F} \xN{Ancient Greek Numbers}\par
+\xI{sym40} \xV{2} \xR {10190} {101CF} \xN{Ancient Symbols}\par
+\xI{sym41} \xV{2} \xR {101D0} {101FF} \xN{Phaistos Disc}\par
+\xI{lyci} \xV{2} \xR {10280} {1029F} \xN{Lycian}\par
+\xI{cari} \xV{2} \xR {102A0} {102DF} \xN{Carian}\par
+\xI{copt1} \xV{2} \xR {102E0} {102FF} \xN{Coptic Epact Numbers}\par
+\xI{ital} \xV{1} \xR {10300} {1032F} \xN{Old Italic}\par
+\xI{goth} \xV{1} \xR {10330} {1034F} \xN{Gothic}\par
+\xI{perm} \xV{2} \xR {10350} {1037F} \xN{Old Permic}\par
+\xI{ugar} \xV{1} \xR {10380} {1039F} \xN{Ugaritic}\par
+\xI{xpeo} \xV{1} \xR {103A0} {103DF} \xN{Old Persian}\par
+\xI{dsrt} \xV{1} \xR {10400} {1044F} \xN{Deseret}\par
+\xI{shaw} \xV{1} \xR {10450} {1047F} \xN{Shavian}\par
+\xI{osma} \xV{1} \xR {10480} {104AF} \xN{Osmanya}\par
+\xI{osge} \xV{2} \xR {104B0} {104FF} \xN{Osage}\par
+\xI{elba} \xV{2} \xR {10500} {1052F} \xN{Elbasan}\par
+\xI{aghb} \xV{2} \xR {10530} {1056F} \xN{Caucasian Albanian}\par
+\xI{lina} \xV{2} \xR {10600} {1077F} \xN{Linear A}\par
+\xI{cprt} \xV{1} \xR {10800} {1083F} \xN{Cypriot Syllabary}\par
+\xI{armi} \xV{2} \xR {10840} {1085F} \xN{Imperial Aramaic}\par
+\xI{palm} \xV{2} \xR {10860} {1087F} \xN{Palmyrene}\par
+\xI{nbat} \xV{2} \xR {10880} {108AF} \xN{Nabataean}\par
+\xI{hatr} \xV{2} \xR {108E0} {108FF} \xN{Hatran}\par
+\xI{phnx} \xV{1} \xR {10900} {1091F} \xN{Phoenician}\par
+\xI{lydi} \xV{2} \xR {10920} {1093F} \xN{Lydian}\par
+\xI{mero} \xV{2} \xR {10980} {1099F} \xN{Meroitic Hieroglyphs}\par
+\xI{merc} \xV{2} \xR {109A0} {109FF} \xN{Meroitic Cursive}\par
+\xI{khar} \xV{1} \xR {10A00} {10A5F} \xN{Kharoshthi}\par
+\xI{sarb} \xV{2} \xR {10A60} {10A7F} \xN{Old South Arabian}\par
+\xI{narb} \xV{2} \xR {10A80} {10A9F} \xN{Old North Arabian}\par
+\xI{mani} \xV{2} \xR {10AC0} {10AFF} \xN{Manichaean}\par
+\xI{avst} \xV{2} \xR {10B00} {10B3F} \xN{Avestan}\par
+\xI{prti} \xV{2} \xR {10B40} {10B5F} \xN{Inscriptional Parthian}\par
+\xI{phli} \xV{2} \xR {10B60} {10B7F} \xN{Inscriptional Pahlavi}\par
+\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{sym42} \xV{2} \xR {10E60} {10E7F} \xN{Rumi Numeral Symbols}\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
+\xI{cakm} \xV{2} \xR {11100} {1114F} \xN{Chakma}\par
+\xI{mahj} \xV{2} \xR {11150} {1117F} \xN{Mahajani}\par
+\xI{shrd} \xV{2} \xR {11180} {111DF} \xN{Sharada}\par
+\xI{sinh1} \xV{2} \xR {111E0} {111FF} \xN{Sinhala Archaic Numbers}\par
+\xI{khoj} \xV{2} \xR {11200} {1124F} \xN{Khojki}\par
+\xI{mult} \xV{2} \xR {11280} {112AF} \xN{Multani}\par
+\xI{sind} \xV{2} \xR {112B0} {112FF} \xN{Khudawadi}\par
+\xI{gran} \xV{2} \xR {11300} {1137F} \xN{Grantha}\par
+\xI{newa} \xV{2} \xR {11400} {1147F} \xN{Newa}\par
+\xI{tirh} \xV{2} \xR {11480} {114DF} \xN{Tirhuta}\par
+\xI{sidd} \xV{2} \xR {11580} {115FF} \xN{Siddham}\par
+\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{wara} \xV{2} \xR {118A0} {118FF} \xN{Warang Citi}\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
+\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{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{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{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{kana2} \xV{2} \xR {1B000} {1B0FF} \xN{Kana Supplement}\par
+\xI{kanaA} \xV{3} \xR {1B100} {1B12F} \xN{Kana Extended-A}\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
+\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{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{mend} \xV{2} \xR {1E800} {1E8DF} \xN{Mende Kikakui}\par
+\xI{adlm} \xV{2} \xR {1E900} {1E95F} \xN{Adlam}\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
+\xI{sym46} \xV{2} \xR {1F0A0} {1F0FF} \xN{Playing Cards}\par
+\xI{sym45} \xV{2} \xR {1F100} {1F1FF} \xN{Enclosed Alphanumeric Supplement}\par
+\xI{cjk13} \xV{2} \xR {1F200} {1F2FF} \xN{Enclosed Ideographic Supplement}\par
+\xI{sym47} \xV{2} \xR {1F300} {1F5FF} \xN{Miscellaneous Symbols and Pictographs}\par
+\xI{sym48} \xV{2} \xR {1F600} {1F64F} \xN{Emoticons}\par
+\xI{sym54} \xV{2} \xR {1F650} {1F67F} \xN{Ornamental Dingbats}\par
+\xI{sym49} \xV{2} \xR {1F680} {1F6FF} \xN{Transport and Map Symbols}\par
+\xI{sym50} \xV{2} \xR {1F700} {1F77F} \xN{Alchemical Symbols}\par
+\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{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
+\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{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
+\xI{spc10} \xV{1} \xR{100000}{10FFFF} \xN{Supplementary Private Use Area-B}\par
+%/////////////////////////////
+\end{quote}
+
+\paragraph{ブロックIDの命名規則\<(参考)}
+\mbox{}
+\begin{itemize}
+\item Unicodeブロック名にスクリプト(用字系)の名前が含まれるものは、
+ それに対するISO 15924のコード(4文字)を用いた。
+ 単一のスクリプトのブロックが複数ある場合は、
+ 名前が“Extended-A,B,……”のものは|A|,|B|,……を、
+ それ以外のものは|1|,|2|,……
+ (一部符号値順でない)を末尾に付加した。
+ \begin{quote}
+ “Arabic”→ |arab|; “Latin Extended-C”→ |latnC|
+ \end{quote}
+ なお、“Hiragana”のコードは |hira| だが“Katakana”は |kana| で
+ あることに注意。
+\item それ以外は、CJK関係(|cjk|)、特殊用途(|spc|)、
+ それ以外(|sym|)の3種類に恣意的に分類して、
+ 後ろに2桁の番号を付けた(|cjk12| など)。
+\end{itemize}
+
+%-------------------
+\subsection{どのブロックが使用できるか}
+
+以下では、各モードCCVにおいてサポートされるブロックの全容に
+ついて説明する。
+
+\paragraph{モードCCVが1の場合}
+CCV~1ではUnicodeブロックの再分割が存在しないので、
+サポートされるブロックの全体は以下のようになる。
+
+\begin{itemize}
+\item 前掲の通常ブロックの表で「CCV」欄が「1」の
+ ブロック全て。
+\end{itemize}
+
+\paragraph{モードCCVが2の場合}
+
+CCV~2では |cjk12|“Halfwidth and Fullwidth Forms”のブロックが
+次の3つの下位ブロックに分割されている。
+
+\begin{quotation}
+ \newcommand\xE[2]{\noindent
+ \makebox[4em][l]{\texttt{#1}}\textsl{#2}\par}
+ \xE{cjk1a}{Halfwidth and Fullwidth Forms/Other}
+ \xE{cjk1b}{Halfwidth and Fullwidth Forms/Latin}
+ \xE{cjk1c}{Halfwidth and Fullwidth Forms/Kana}
+\end{quotation}
+
+\begin{itemize}
+\item |cjk1b|\Means ASCII 英数字の全角互換形。\par
+ |U+FF10|~|U+FF19|,|U+FF21|~|U+FF3A|,|U+FF41|~|U+FF5A|
+\item |cjk1c|\Means カタカナの半角互換形。
+ 句読点等の記号は含まない。\par
+ |U+FF66|~|U+FF6F|,|U+FF71|~|U+FF9D|
+\item |cjk1a|\Means |cjk12| から |cjk1b|、|cjk1c| を除いた残り。
+\end{itemize}
+
+従って、サポートされるブロックの全体は以下のようになる。
+
+\begin{itemize}
+\item 前掲の通常ブロックの表で「CCV」欄が2以下のブロック全て。
+ \Note |cjk12| のブロックも使用可能で、これは
+ “Halfwidth and Fullwidth Forms”の全体を表す。
+\item |cjk12| の下位ブロック\Means
+ |cjk1a|、|cjk1b|、|cjk1c| の3つ。
+\end{itemize}
+
+
+\paragraph{モードCCVが3の場合}
+
+CCV~3では |latn1|“Latin-1 Supplement”のブロックが
+次の2つの下位ブロックに分割されている。
+
+\begin{quotation}
+ \newcommand\xE[2]{\noindent
+ \makebox[4em][l]{\texttt{#1}}\textsl{#2}\par}
+ \xE{latnx}{Latin-1 Supplement/Other}
+ \xE{latny}{Latin-1 Supplement/Latin}
+\end{quotation}
+
+\begin{itemize}
+\item |latny|\Means ラテン文字であるもの。\par
+ |U+FF10|~|U+FF19|,|U+FF21|~|U+FF3A|,|U+FF41|~|U+FF5A|
+\item |latnx|\Means |latn1| から |latny| を除いた残り。
+\end{itemize}
+
+従って、サポートされるブロックの全体は以下のようになる。
+
+\begin{itemize}
+\item 前掲の通常ブロックの表で「CCV」欄が2以下のブロック全て。
+ \Note |cjk12|、|latn1| のブロックも使用可能。
+\item |cjk12| の下位ブロック\Means
+ |cjk1a|、|cjk1b|、|cjk1c| の3つ。
+\item |latn1| の下位ブロック\Means
+ |latnx|、|latny| の2つ。
+\end{itemize}
+
+%===========================================================
+\section{各モードにおける和文カテゴリの設定}
+\label{sec:Values}
+
+(あとで書く)
+
+\end{document}
+
+■ 各モードでの 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 のものに従う。
+