summaryrefslogtreecommitdiff
path: root/language/japanese/pxbase/README-ja.md
blob: 53bf41f4fc0459b743d928370d7c9742e18e6298 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
PXbase パッケージバンドル
=========================

LaTeX: 他の PX パッケージのためのサポートライブラリ

本バンドルの主な目的は、作者(ZR)の制作する他の pTeX 用パッケージ(名前
が“PX”で始まる)が依拠するライブラリ機能の提供である。

その他に、本バンドルには以下のユーザ・開発者用パッケージが含まれる。

  * pxbabel パッケージ: Babel の機構に基づく CJK 間のフォント切替
  * upkcat パッケージ: 文字指定による kcatcode 操作

### 前提環境

  * TeX フォーマット: LaTeX
  * TeX エンジン: pTeX、upTeX(派生を含む)
  * DVI ウェア(DVI 出力時): 不問

※upkcat パッケージについては当該の節を参照。

### 構成物

  * `pxbase.sty`: pxbase パッケージ
  * `pxbase.def`: サブモジュール(の残骸)
  * `pxbabel.sty`: pxbabel パッケージ
  * `pxbasenc.def`: サブモジュール
  * `pxjsfenc.def`: サブモジュール
  * `pxbsjc.def`: pxbase 用の補助ファイル
  * `pxbsjc1.def`: pxbase 用の補助ファイル
  * `upkcat.sty`: upkcat パッケージ

※種々の事情により複雑になっている(例えば、`pxbsjc.def` は実際には bxbase
パッケージから読まれている、`pxjsfenc.def` は BXbase/PXbase 内のどの
パッケージからも参照されない、など)が、他のパッケージの動作を確保する
ため敢えて 0.5 版のファイル構成を保っている。

### インストール

TDS 1.1 に準拠するシステムの場合、以下のようにファイルを移動する:

  - `*.sty`, `*.def` → $TEXMF/tex/platex/PXbase

この後必要に応じて mktexlsr を実行する。

### ライセンス

本パッケージは MIT ライセンスの下で配布される。


pxbase パッケージ ― pTeX 用(旧)基礎ライブラリ
------------------------------------------------

他の PX シリーズのパッケージの下請けの役割も果たしていたが、0.9 版において
[bxbase パッケージ]に統合された。今では、単に bxbase を読むだけである。

[bxbase パッケージ]: https://www.ctan.org/pkg/bxbase

### ユーザ向け機能

※bxbase の方で述べていないものを挙げる。(FIXME:bxbase に移すべき。)

※旧版のドキュメントに載っていたのに、ここにも bxbase の方にも載って
いない機能は、非推奨の扱いになったということ。

  * `\infojenc`: 漢字コードの情報を次の形で端末とログに出力する。

        Kanji encoding: source=UTF8 internal=SJIS;

  * `\safecaret`: 一部の箇所で TeX エスケープ形式(`^^ab`)の解釈が
    失敗するのを回避する。詳細は「TeX エスケープ形式(`^^ab`)の処理」
    の節を参照。

#### utf8x 入力エンコーディングの fasterror 設定

ucs パッケージ(バンドル)が提供する「utf8x 入力エンコーディング」では、
パッケージで未定義の Unicode 文字が入力された場合エラーになる。その時の
エラーメッセージ中に該当の文字の Unicode 名を出力するが、この際に高位
バイトを含むファイル(テキスト情報をハフマン符号で圧縮したものと思われる)
を用いるので、pTeX では処理に失敗してしまう。そこで本パッケージでは、ucs
パッケージが読み込まれた場合(utf8x が指定された時も含む)に上記の機能を
抑止するオプション `fasterror` を常に有効にする。

### TeX エスケープ形式(`^^ab`)の処理

現在の pTeX では入力漢字コードが UTF-8 の時に JIS X 0208 に含まれない
文字をエスケープ形式(`^^ab`)の UTF-8 バイト列に変換する。通常はこの
形式は該当のバイト列と等価の解釈をされる。ところがここで `^` の catcode
が本来の値 7 から変更されているとこの処理が失敗してしまう。具体的には
次のような場合が該当する。

  * Babel の一部の言語(esperanto 等)を使用した場合。
  * verbatim や類似の環境の中。

`\safecaret` 命令をプレアンブルで実行した場合、これらの場合でエスケープ
形式の連続する出現をバイト列と解釈するようにする。

### 開発者向け機能

(使用中の漢字コード系の情報表示)

  * `\bxInternalJaEncoding`:[暗黙文字トークン] 内部漢字コードを表す。
      - `s`: シフトJIS
      - `e`: EUC
      - `u`: Unicode (upTeX)

  * `\bxInputJaEncoding`:[暗黙文字トークン] 入力 TeX ソースの漢字
    コードを表す。
      - `s`: シフトJIS
      - `e`: EUC
      - `u`: UTF-8
      - `a`: 自動判定が有効

  * `\pxUpScale`:[マクロ] 和文の標準フォントに対する和文スケール。
    `\Cjascale` が設定済の場合はその値、それ以外で文書クラスが和文標準
    または jsclasses のものの場合は、当該クラスの既定のスケール値。


pxbabel パッケージ ― Babel の機構に基づく CJK 間のフォント切替
---------------------------------------------------------------

詳細についてはマニュアル `pxbabel.pdf` を参照されたい。

upkcat パッケージ ― 文字指定による kcatcode 操作
-------------------------------------------------

※ 本パッケージはパッケージ開発者向けのものである。

文字を指定して(それが属するブロックの)kcatcode を操作する場合

    \kcatcode`<文字>

の形式を使うことになるが、その際にもしその文字の現在の kcatcode が 15
である場合は文字がバイト列とみなされるので、この形式が使えない。この
パッケージはそのような場合でも使用可能な、kcatcode の参照・変更の命令
を提供する。なお、文書作成者はこちらではなく [pxcjkcat パッケージ]を
用いるべきである。

[pxcjkcat パッケージ]: https://www.ctan.org/pkg/pxcjkcat

### 前提環境

  * TeX フォーマット: plain、LaTeX
  * TeX エンジン: upTeX(派生を含む)
  * DVI ウェア(DVI 出力時): 不問

### パッケージ読込

plain upTeX の場合:

    \input upkcat.sty

upLaTeX の場合:

    \usepackage{upkcat}

### 機能

  * `\getkcatcode{<文字>}`: `<文字>` の現在の kcatcode の値(15~19)
    をマクロ `\thekcatcode` に文字列として返す。
  * `\setkcatcode{<文字>}{<値>}`: `<文字>` の kcatcode の値を `<値>`
    に設定する。


更新履歴
--------

  * Version 1.3  〈2021/05/31〉
      - pxbabel: japanese-otf のコード入力命令(`\UTF` 等)について、
        非標準の和文エンコーディングの適用時でも動作するようにパッチを
        適用する。
      - pxbabel: (試験的) `(no)patchutfcmds` オプションを追加。

  * Version 1.2  〈2021/05/22〉
      - pxbabel: CJK 言語のフォント切替を japanese-otf で多ウェイト拡張
        (`deluxe`)を指定した場合に対応させた。
      - pxbabel: (試験的) `(no)forcedeluxemulti` オプションを追加。
        `forcedeluxemulti` を指定すると、さらに多言語拡張(`multi`)を
        行った場合の日本語以外のフォントにも適用される。

  * Version 1.1b 〈2017/07/03〉
      - upLaTeX で japanese-otf と併用した場合に対応。
      - バグ修正。

  * Version 1.1a 〈2017/06/19〉
      - バグ修正。

  * Version 1.1  〈2017/05/29〉
      - 内容の整理。  
        ※バージョンの値は BXbase と合致させて 1.1 版とした。
      - 一部の機能を非推奨にした。

  * Version 0.5i 〈2017/05/04〉 ― CTAN 公開版
      - 0.5 版から ifuptex と pxcjkcat を削除したもの。  
        ※ifptex パッケージバンドルを CTAN に登録するための経過措置。

  * Version 0.9b 〈2012/08/19〉
      - ifuptex パッケージは「ifptex バンドル」に移動したため削除。
      - pxcjkcat パッケージは専用のバンドルに移動したため削除。

  * Version 0.5  〈2010/06/15〉
      - pxbase: `\JI`/`\KI` を追加。
      - pxbase: `\dvipdfmxmapline`/`\dvipdfmxmapfont` を追加。

  * Version 0.4a 〈2010/02/07〉
      - pxcjkcat: upTeX v0.29 における kcatcode のブロック分割の変更に
        対応。それに伴い `ccv1`, `ccv2` オプションを新設。
      - pxcjkcat: `\cjkcategory` の第 1 引数に文字そのものを指定できる
        ようにした。
      - pxcjkcat: なぜかモード設定時の「Enclosed CJK Letters and Months」
        (`cjk07`)の kcatcode の設定値が 16 になっていた。upTeX 既定値に
        合わせて 18 に修正した。

  * Version 0.4  〈2009/07/05〉
      - safe caret 機構のコード(`\safecaret` の実装の核心)を pxbase.def
        に移動(BXbase と共通に)。
      - Babel に加えて verbatim でも safe caret 機構が働くようにする。
        ただし「pxbase は単に読み込むだけでは他人のコードを書き換えない」
        という指針があるので、`\safecaret` を実行しないと有効にならない。
      - pxbabel は中で `\safecaret` を呼ぶので、pxbabel を読み込むと safe
        caret は自動的に有効になる。
      - pxbabel でエンコーディングを `J20` 等に変えた場合に OTF パッケージ
        の `\CID` が動かなくなるのを修正。

  * Version 0.3  〈2008/04/06〉
      - pxbabel に safe caret 機構を追加。

  * Version 0.2b 〈2008/03/28〉
      pxbabel に `\UTF` の切替を追加。

  * Version 0.2a 〈2008/03/18〉
      pxbabel, pxbase のバグ取り。
      pxbabel の説明書をまだ書いていないことに気づいた ;-) 慌てて作成。

  * Version 0.2  〈2008/03/14〉
      最初の公開版。

-------------------------------------------
Takayuki YATO (aka. "ZR")  
https://github.com/zr-tex8r