summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-05-09 18:21:27 +0000
committerKarl Berry <karl@freefriends.org>2016-05-09 18:21:27 +0000
commit78e9da6f00a5c3065051979aab27b369bf610733 (patch)
tree0fac200accd9ab064c23228c0605cfde34550901
parent9a12fed1adede2b0b650b82ba663f02f6ffb9116 (diff)
uptex-base split from uptex (1may16)
git-svn-id: svn://tug.org/texlive/trunk@40979 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/uptex/uptex-base/00readme_uptex.txt28
-rw-r--r--Master/texmf-dist/doc/uptex/uptex-base/01uptex_doc_utf8.txt501
-rw-r--r--Master/texmf-dist/doc/uptex/uptex-base/02uptex_changelog_utf8.txt569
-rw-r--r--Master/texmf-dist/doc/uptex/uptex-base/LICENSE29
-rw-r--r--Master/texmf-dist/doc/uptex/uptex-base/README.md21
-rw-r--r--Master/texmf-dist/doc/uptex/uptex-base/README_uptex.txt54
-rw-r--r--Master/texmf-dist/tex/uptex/uptex-base/euptex.ini4
-rw-r--r--Master/texmf-dist/tex/uptex/uptex-base/euptex.src774
-rw-r--r--Master/texmf-dist/tex/uptex/uptex-base/ukinsoku.tex392
-rw-r--r--Master/texmf-dist/tex/uptex/uptex-base/uptex.ini4
-rw-r--r--Master/texmf-dist/tex/uptex/uptex-base/uptex.tex57
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rwxr-xr-xMaster/tlpkg/libexec/ctan2tds3
-rw-r--r--Master/tlpkg/tlpsrc/collection-langjapanese.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/ptex.tlpsrc4
-rw-r--r--Master/tlpkg/tlpsrc/uptex-base.tlpsrc0
-rw-r--r--Master/tlpkg/tlpsrc/uptex.tlpsrc5
17 files changed, 2441 insertions, 7 deletions
diff --git a/Master/texmf-dist/doc/uptex/uptex-base/00readme_uptex.txt b/Master/texmf-dist/doc/uptex/uptex-base/00readme_uptex.txt
new file mode 100644
index 00000000000..a593ef74ea3
--- /dev/null
+++ b/Master/texmf-dist/doc/uptex/uptex-base/00readme_uptex.txt
@@ -0,0 +1,28 @@
+upTeX, upLaTeX --- unicode version of ASCII pTeX, pLaTeX
+2016.02.20 Ver1.21
+TANAKA, Takuji ttk(at)t-lab(dot)opal(dot)ne(dot)jp
+
+[ Contents ]
+00readme_uptex.txt :: This file
+01uptex_doc_utf8.txt :: A document (in Japanese)
+02uptex_changelog_utf8.txt :: Change Log
+under Build/ :: sources of binaries
+under Master/ :: macros, classes, fonts. etc.
+under bin/ :: utility
+under samples/ :: samples for test
+
+[ Building upTeX ]
+The sources work with TeXLive svn r39778 .
+Ref. TeXLive and Subversion http://www.tug.org/texlive/svn/
+
+[ Status ]
+Stable (hopefully) version.
+No warranty.
+
+[ References ]
+[1] ASCII Nihongo TeX (Publishing TeX)
+ ASCII MEDIA WORKS
+ http://ascii.asciimw.jp/pb/ptex/
+[2] upTeX, upLaTeX ― unicode version of pTeX, pLaTeX
+ http://www.t-lab.opal.ne.jp/tex/uptex_en.html
+
diff --git a/Master/texmf-dist/doc/uptex/uptex-base/01uptex_doc_utf8.txt b/Master/texmf-dist/doc/uptex/uptex-base/01uptex_doc_utf8.txt
new file mode 100644
index 00000000000..08fea761b6c
--- /dev/null
+++ b/Master/texmf-dist/doc/uptex/uptex-base/01uptex_doc_utf8.txt
@@ -0,0 +1,501 @@
+upTeX, upLaTeX --- 内部unicode版 pTeX, pLaTeX の実装
+2016.02.20 Ver1.21
+TANAKA, Takuji ttk(at)t-lab(dot)opal(dot)ne(dot)jp
+
+◇ upTeX開発のねらい
+ ASCII pTeX/pLaTeXは、高品質の日本語組版ソフトウェアとして、いくつ
+かあるTeXの日本語化の中でもデファクトスタンダードの地位にある。縦組
+の機能や日本語組版の品質はもとより、信頼性の高さや周辺ソフトウェアの
+充実、ユーザー層の厚さなど、多くの点で圧倒的な魅力がある。しかし、直
+接使える文字集合は、原則的にJIS X 0208(JIS第1,2水準)の範囲に限定され
+ている。例えば丸付き数字などは、「機種依存文字なので使えません」とい
+うことになっている。その一方、昨今のコンピュータ周辺の環境では、
+JIS2004ことJIS X 0213(第3,4水準を追加)や、Unicode、Adobe-Japan1-6の
+ような公的/私的な規格、Machintosh搭載のヒラギノ、Windows搭載のMS明朝、
+Acrobatに添付の小塚明朝など、JIS第1,2水準を超える範囲の文字を容易に
+利用可能な環境はどんどん整ってきた。もはや、JIS第1,2水準で我慢してい
+るのはつまらない。機種依存文字は使えませんといって済ますことができる
+ような時代ではないのである。
+ これを克服する努力も繰り広げられてきた。そのひとつにUTF/OTFパッケー
+ジがある。巨大なvirtual fontに多分割する方法で巧妙にpTeXの狭い文字空
+間をかいくぐり、UnicodeやAdobe-Japan1-6といった大文字集合を利用できる
+ようにした功績は大きい。しかし、マクロベースであり、直接文字入力する
+こともできないしaux, logなどに直接文字として出力することもできないな
+ど、制限事項も多い。Utf82TeXでは、プリプロセッサを利用することで、
+UTF/OTFパッケージの入力の繁雑さを克服しているが、内部はpTeXであること
+に変わりなく制限事項を完全に克服できたわけではない。ptex-utf8,
+platex-utf8 は、pTeX入力のUTF-8化の大きな一歩であるし、^^ab化などの
+工夫で\inputenc{utf8}との親和性が向上してはいるものの、日本語の基本
+部分はやはりJIS X 0208の範囲に留まっている。いずれのアプローチも、
+JIS第1,2水準外の現代の新しい標準を普通の文字として直接普通に使えるよ
+うになるまでには至っていない。Omega/lambda, XeTeXなどTeXのUnicode拡
+張はあるものの、日本語の組版品質の繊細な部分まで行き届いているとは言
+いがたいようであるし、マクロ類の充実、ユーザー層の厚さや参考書の多さ
+などを含めた環境整備はまだまだである。
+ pTeXにも弱味はある。前述の文字集合の問題以外にも、二点挙げてみよう。
+一つは、8bitの非英語欧文との親和性である。もともとpTeXは、8bit目が立
+った文字コードがEUCやShift_JISのパターンにマッチすると、和文処理に回
+す。その動作が固定されているために、8bitを使うような日本語以外の文字
+コードが直接処理できない。近年のpTeX+babelは、その動作をかいくぐる工
+夫を要しており、単純とは言いがたい上に8bit欧文の直接処理も困難である。
+ もう一つは、pTeXの利用が日本語に限られていることである。中国語/韓国
+語との混植は、UTF/OTFパッケージで可能になったとはいえ、マクロベースの
+不便さは否めない。Unicode時代にあって、ローカルなソフトウェアは国際的
+なディストリビューションの中でobsolete扱いを受けるようになってきたと
+聞く。pTeX内部の動作をよく見ると、中国語/韓国語を含んだI18Nを施すこと
+はさほど難しくないように思えるが、実際にそうした話は聞いたことがない
+のは実にもったいないことである。日中韓(CJK)混植という面ではCJK-latex
+のようなマクロベースのアプローチもあるが、和文の組版品質や各種制限の
+多さは問題である。pTeXでCJKの文字を直接扱うような拡張法の方が遥かによ
+い解となることは間違いない。
+ 本upTeXの目標は、pTeXの利点をそのまま受け継ぎつつ、上記三つの弱点
+を克服したpTeXの無理のない自然な拡張により、新時代の日本語(+東アジア)
+標準TeXの地位を目指すことにある。文字集合の面では、pTeXの和文がJIS X
+0208の範囲だったのに対し、upTeXでは内部コードをUnicode化しその中の
+CJKのレパートリーの範囲を和文の組版に利用する。8bit欧文との親和性の
+面では、プリミティヴの指定により、和文/欧文の切替えを可能にする。国
+際化の面では、pTeXでは日本語限定だったのに対し、upTeXではUnicode化に
+より中国語/韓国語を強化する。これらの拡張により、全世界制覇は無理に
+しても東アジア(CJK)標準TeXの地位に近付きたい。そこまでいければ、中韓
+のTeXユーザーや開発者の方々もこの拡張版pTeXの利用環境のさらなる改善
+に力になってくれるかもしれない。壮大な目標ではあるが、土台のpTeXの申
+し分のない高みを出発点として、無理のない自然な拡張を着実に行っていけ
+ば、成果を出しつつ目標に近づけるであろうと目論んでいる。
+
+
+◇ 主な開発方針
+<0> pTeX の基本的な機能はそのままで、内部の和文処理を EUC/SJIS から
+ Unicode に変更する。
+ jfm の使用、dvi命令(255)の拡張など、pTeX 独自の特殊な拡張や
+ 組版のアルゴリズム等は一切さわらずに、そのまま受け継ぐ。
+ このため、dviware などは pTeX 用拡張とほぼ同等の特殊処理が要る。
+ 欧文用 dviware では対応できない場合がある点では pTeX と同じ。
+<1> Unicode 化においては、pTeX の自然な拡張を行い、
+ pTeX のいくつかの弱点を克服する。
+ この点において、必要なら pTeX からの改造量が多少増えるのは厭わない。
+<2> pTeX との互換性は出来るだけ維持する努力をする。その一方、
+ Unicode の文字集合や構造を前提として見たときにあまりに不自然な部分は、
+ 互換性の維持をあきらめる。
+ 例えば、kcatcode の default 値、
+ kcatcode の切替えのブロックの単位など。
+<3> 8bit 欧文コードの処理が可能になるよう、和文/欧文の切替え用の
+ プリミティヴを拡張、新設する。
+ pTeX では極めて限定的だった、欧文 Babel との整合性が向上する。
+ 内部 Unicode 化を本当に行っているのは cjk トークンだけであり、
+ 欧文部分はオリジナルの欧文 TeX と同等である。
+ pTeX から見ると欧文部分の機能が向上しているように見えるが、
+ 欧文 TeX から見ると
+ pTeX が欧文 TeX の機能を阻害していた部分を取り除いただけである。
+<4> pTeX の和文トークンを cjkトークンとして扱い、
+ 中国語/韓国語対応を強化する。
+<5> pTeX の和文トークンの 16bit を単純に Unicode (UCS2等) 化すると
+ 欧文トークン (catcode 4bit + charcode 8bit) と衝突してしまう。
+ これを回避する手法は何通りか考えられるが、
+ cjkトークンの上限の拡張を行い、
+ cjkトークンを (kcatcode 5bit+charcode 24bit) で扱う。
+ pTeX からの改造量はやや大きいが、欧文 TeX との対称性は良くなる。
+<6> U+2xxxx (Supplimentary Ideograph Plane, SIP) の漢字も
+ サポートする。ただし、dviware の対応状況に差が出る可能性を考慮し
+ オプション扱いとする。
+<7> 日本ローカル色を薄めるだけの目的での機能変更、整理、削除は行わない。
+ \xkanjiskip, \euc などはそのままの名称、機能で維持する。
+ 理由は、少々の手当で日本ローカル色が払拭できるはずもなく、
+ pTeX との互換性を下げるだけに過ぎない結果になるであろうから。
+この方針により、pTeX が抱えていた弱点はいくつか解消できるものの、
+pTeX の特殊性 (全角等幅フォント前提の jfm 等) は保たれているし、
+pdfeTeX など欧文 TeX の近年の動向から遠く離れたままであるし、
+欧文部分 は 8bit のままであるし、
+OpenType の新技術などを駆使できているわけでもない。
+世界の最新の TeX 環境や
+他の Unicode 拡張 (Omega/Aleph, XeTeX, LuaTeX 等)と比較すると、
+旧くさく中途半端な印象を受けるかもしれない。
+しかし、pTeX との互換性がほぼ 100% の Unicode 版 cjk TeX となり
+pTeX を中心に推移してきた日本の TeX ユーザーが
+過去の資産を利用しつつ手早く Unicode のおいしい部分を享受するために、
+的確な solution になっていると思う。
+正直なところ、日本ローカル色は依然非常に強く
+中韓の TeX ユーザーが使いたくなるものになっているかどうかの点で
+あまり期待は大きく持てないかもしれないが、
+日本の TeX ユーザーが中国語/韓国語を混植するような用途には向いていると思う。
+
+
+◇ 主な仕様
+<0> 名前をupTeX, upLaTeX と命名する。
+ unicode版pTeXという主旨で。
+ 出来ることは欧文TeX + pTeXの和文拡張部分のUnicode版なので、
+ uTeX とか universal TeX はおこがましい。
+<1> cjkトークンの内部コードとしてUnicodeを使用する。
+ 入出力バッファのエンコーディングはUTF-8。
+ 内部エンコーディングはほぼUTF-32(註1)。
+<2> 入力ファイル(.texなど)はUTF-8とISO-2022-JPの自動判定。
+ 出力ファイル(.log, .auxなど)はUTF-8。
+<3> tfm(jfm)のエンコーディングはUCS-2。
+ エンコーディング名は JY2, JT2 とする。
+ U+FFFFを越える文字は、U+2xxxx(SIP)の漢字を想定し、
+ chartype が defaultの 0 の漢字として組版する。
+ jfmのフォーマットは当面拡張せずpTeXのままとする。
+<4> dvi, vfにはUnicodeスカラー値を2〜3バイトで記録する(註2)。
+ U+FFFF以下の文字はset2で、U+FFFFを越える文字はset3で扱う。
+ 和文として扱える文字コードの最大値はUnicodeの最大値U+10FFFF。
+<5> 和文、欧文の切替えは、コードレンジのチェックに加えkcatcodeを見て行う。
+ kcatcode=16,17,18なら漢字,かな,和文その他記号(pTeXと同様)で、
+ kcatcode=15なら欧文、非CJKの文字(新規)。
+ kcatcode=19ならhangul(新規)。hangul直後の改行は欧文同様、
+ 空白と看做すが、それ以外の点では、漢字と全く同じ動作になっている。
+<6> 欧文と判定されればUTF-8の8bit可変長文字列として内部処理する。
+ オリジナルの欧文TeXと完全に互換の処理ができる。
+ すなわち、欧文LaTeXの\inputenc{utf8}やBabelが障害なく利用できる。
+<7> 和文と判定されればpTeXと同様の処理ができる。
+ すなわち、組版はもちろん、
+ 漢字,かなをコントロールワードに使う機能等が障害なく利用できる。
+<8> kcatcodeの切替えはUnicodeのBlock毎に可能。
+ ( http://www.unicode.org/Public/UNIDATA/Blocks.txt )
+ ( ちなみに、オリジナルpTeXでは2バイト文字のうち上位バイト毎。 )
+<9> 和文の内部コードは、kcatcode 5bit+charcode 24bit で処理する。
+ 内部コードが欧文(catcode 4bit+charcode 8bit)と重なることはない。
+<10> 従来のpTeXでは、kcatcodeの参照を文字コードからkcatcodeの表を引き
+ 間接的に行う方法を行っている。この方法を
+ ファイルなどからの読み込み時と内部処理時の両方で行っている。
+ upTeXでは、ファイルなどからの読み込み時は同様であるが、
+ 内部処理時には、<9>でcjkトークン毎に振ったkcatcodeを読み込むように
+ 変更した。たとえ同じ文字コードでもkcatcodeの途中変更を行えば、
+ cjkトークン毎に異なるkcatcodeを割り当てることが出来るようになる。
+<11> 新しく \ucs プリミティヴを新設。
+ \char\ucs"301C, \kchar\ucs"301C はU+301C(波ダッシュ)になる。
+<12> uptex, uplatex などでは -kanji=uptex と指定して
+ 動くように実装した。
+ その他の漢字コード指定の場合は、
+ 基本的に従来のpTeXと同様の結果になるはず。
+<13> 各文字が実際のフォントで利用可能な文字かどうかの判定は
+ uptex 本体では行わない。この判定は dviware で行うことになる。
+ 「任意の部分実装を容認している Unicode において
+ 文字集合の範囲の固定的な判定は不可能だ」という理由もあるが、
+ この仕様は pTeX でも同様となっている。
+<14> 新しく \kchar, \kchardef プリミティヴをを追加。
+ \char`<文字>, \chardef では文字コードが255以下の場合には欧文動作、
+ 265以上の場合には和文動作となる。
+ \kchar`<文字>, \kchardef では文字コード範囲によらず和文動作となる。
+<15> デフォルトのフォントはset2の範囲で済むようにし、
+ set3を含むフォント(vf)は、オプションとする。
+ dviwareのset3対応の普及が進むのを待つため。
+ 将来的にはset3対応を標準としたい。
+<16> ISO-2022-JP{-3,-2004}, EUC-JISX0213, Shift_JISX0213などの
+ JIS X 0213系エンコーディングも将来使用可能にしたいが、
+ 当面開発凍結する。
+
+(註1) 32bitではなく24bitで扱っている点で厳密にはUTF-32ではない。
+ あるいは、正規のUnicodeスカラー値(≒コードポイント)を
+ 24bitで表したものといってもよい。
+(註2) 正規のUnicodeスカラー値(≒コードポイント)と
+ 等しい値を16/24bitで表したもの。
+ すなわち、UTF-32の下位16bit/24bitと等しい。
+
+
+◇ 内部処理の流れ
+(1) pTeX入力 [8bit可変長(UTF8)]
+↓
+<1> ptexenc [8bit可変長(UTF8)]
+↓
+(2) 入力バッファー [8bit可変長(UTF8)]
+↓
+<2> multistrlen,kcatcode等で和文/欧文を判定して変換
+↓
+(3) 内部レジスター [和文5+24bit, 欧文4+8bit] { 最大29bit 欧文と和文で別構成※1 }
+↓
+<3> マクロ展開
+↓
+(4) 組版処理 [和文5+24bit, 欧文4+8bit]
+(4a) tfm, jfm, (ofm)へのアクセス [和文16bit, 欧文4+8bit] ※2
+<4a> ptexenc
+(4b) dviへの入出力 [和文5+24bit, 欧文4+8bit] ※3
+<4b> ptexenc
+↓
+(5) 出力バッファー [8bit可変長(UTF8)]
+↓
+<5> ptexenc
+↓
+(6) 出力 (log, 端末など) [8bit可変長(UTF8)]
+
+※1: 欧文はcatcode 4bit + 文字コード8bit
+(Omegaではcatcode 4bit + 文字コード16bitだが、Omegaへの拡張を視野にいれたい。)
+和文はkcatcode 5bit + 文字コード24bit。
+オリジナルpTeXでは、和文は文字コード16bit,
+kcatcodeは、文字コードを引数として表を参照して求めていたが、
+upTeXでは、欧文と同等に(k)catcodeと文字コードの組となるように変更した。
+和文/欧文トークンは 29bit を重ならないように使用していることになる。
+U+10FFFFのUnicode最大値までを和文として処理できることを想定している。
+U+1xxxxの文字は考慮していない。Omegaの拡張的アプローチが必要か。
+※2: U+FFFF超の文字は当面U+2xxxxの漢字のみを想定し、
+U+2xxxxのchar typeをdefaultの0番と解釈することにすれば、
+jfmは当面拡張する必要がない。
+(2), (3), (4)のあたりで欧文8bit(TeX)との共存も可能。
+欧文のcatcodeで使用しているレンジをさらに上位バイトに移動し、
+和文24bit, 欧文16bit(Omega) と共存可能にし、
+ptexencにOTPインタープリターを突っ込み、
+ofmとjfmの混在した組版を可能にすれば
+upTeX + Omega = upOmegaが出来る???
+
+◇ 文字コード関連のまとめ
+[凡例]
+○:欧文、△:欧文8bit多byteの擬似的な動作
+■:和文、—:使用不可
+token:内部トークンでの文字コード
+text:SJIS/EUC/UTF-8など入出力の文字コード
+( ):defaultではない
+
+[欧文TeX]
+ token text ^^ab \char
+〜0x7F ○ ○ ○ ○
+〜0xFF ○ ○[a] ○ ○
+0x100〜 — △[b] — —
+
+[pTeX]
+ token text ^^ab \char
+〜0x7F ○ ○ ○ ○
+〜0xFF ○ —[c] ○[f] ○
+0x100〜 — —[d] — —
+0x8000〜 ■ ■[e] — ■[g]
+
+[upTeX(v.0.10〜)]
+ token text ^^ab \char \kchar
+〜0x7F ○■[h] ○ [i] ○ ○[l] ■[o]
+〜0xFF ○■[h] (○)■[j] ○ ○[m] ■[o]
+0x100〜 ■ (△)■[k] — ■[n] ■[o]
+
+[a] 8bit1byteで扱うのが基本。[b]のためにこの領域が使われることもある。
+[b] 8bit多byteの処理をactive文字化で実現する手法(inputenc,CJK-LaTeX等)がある。
+[c] SJIS/EUCのパターンに合わない場合のみ通る。欧文TeXから見ると制限事項になる。
+ 回避には、^^ab, \char などでするしかない。
+[d] [b]の方法が使えない。欧文TeXから見ると制限事項になる。
+ 回避には、^^ab, \char などでするしかない。
+[e] 入力では8bit2byte。SJIS/EUCのパターンに合う場合のみ有効。
+[f] ここの不具合解消によりpTeX+babelが実現可能になった。
+[g] 和文/欧文はコードレンジで簡明に区別できる。
+[h] 和文の場合はkcatcode付きで管理されるので、欧文と区別できる。
+[i] 欧文のみ可能。和文は不可。
+[j] defaultは和文。kcatcodeの切り替えにより欧文化が可能。
+[k] defaultは和文。kcatcodeの切り替えにより欧文の8bit多byte扱いが可能。
+[l] 欧文のみ可能。和文は不可。
+[m] 欧文のみ可能。和文は不可。一部(例えば\char\jis"215F(×)など)がpTeX
+ と非互換になる。
+[n] 和文のみ可能。欧文は不可。pTeXとの互換性のため用意。
+[o] 和文のみ可能。欧文は不可。
+
+
+◇ pTeX との対照表
+◎ デフォルトのエンコーディング
+JY1 → JY2
+JT1 → JT2
+
+◎ min10系のフォント(オプション, uptex-1.xxの配布には含まない)
+min10.tfm → umin10.tfm
+min9.tfm → umin9.tfm
+min8.tfm → umin8.tfm
+min7.tfm → umin7.tfm
+min6.tfm → umin6.tfm
+min5.tfm → umin5.tfm
+goth10.tfm → ugoth10.tfm
+goth9.tfm → ugoth9.tfm
+goth8.tfm → ugoth8.tfm
+goth7.tfm → ugoth7.tfm
+goth6.tfm → ugoth6.tfm
+goth5.tfm → ugoth5.tfm
+
+min10.vf → umin10.vf
+min9.vf → umin9.vf
+min8.vf → umin8.vf
+min7.vf → umin7.vf
+min6.vf → umin6.vf
+min5.vf → umin5.vf
+goth10.vf → ugoth10.vf
+goth9.vf → ugoth9.vf
+goth8.vf → ugoth8.vf
+goth7.vf → ugoth7.vf
+goth6.vf → ugoth6.vf
+goth5.vf → ugoth5.vf
+
+◎ jis.tfm系のフォント(オプション, uptex-1.xxの配布には含まない)
+jis.tfm → ujis.tfm
+jisn.tfm → ujisn.tfm
+jis-v.tfm → ujis-v.tfm
+jisn-v.tfm → ujisn-v.tfm
+jisg.tfm → ujisg.tfm
+jisng.tfm → ujisng.tfm
+jisg-v.tfm → ujisg-v.tfm
+jisng-v.tfm → ujisng-v.tfm
+
+jis.vf → ujis.vf
+jisn.vf → ujisn.vf
+jis-v.vf → ujis-v.vf
+jisn-v.vf → ujisn-v.vf
+jisg.vf → ujisg.vf
+jisng.vf → ujisng.vf
+jisg-v.vf → ujisg-v.vf
+jisng-v.vf → ujisng-v.vf
+
+◎ rml.tfm系のフォント(オプション, uptex-1.xxの配布には含まない)
+rml.tfm → urml.tfm
+rmlv.tfm → urmlv.tfm
+gbm.tfm → ugbm.tfm
+gbmv.tfm → ugbmv.tfm
+
+◎ upjisr-{hv}.tfm系のフォント(デフォルト、新規)
+------- → upjisr-h.tfm (UniJIS-UTF16-Hを想定)
+------- → upjisg-h.tfm (UniJIS-UTF16-Hを想定)
+------- → upjisr-v.tfm (UniJIS-UTF16-Vを想定)
+------- → upjisg-v.tfm (UniJIS-UTF16-Vを想定)
+------- → upjisr-hq.tfm (UniJIS-UCS2-Hを想定)
+------- → upjisg-hq.tfm (UniJIS-UCS2-Hを想定)
+
+------- → upjisr-h.vf (UniJIS-UTF16-Hを想定)
+------- → upjisg-h.vf (UniJIS-UTF16-Hを想定)
+------- → upjisr-v.vf (UniJIS-UTF16-Vを想定)
+------- → upjisg-v.vf (UniJIS-UTF16-Vを想定)
+------- → upjisr-hq.vf (UniJIS-UCS2-Hを想定)
+------- → upjisg-hq.vf (UniJIS-UCS2-Hを想定)
+
+------- → uprml-h.tfm (UniJIS-UTF16-Hを想定)
+------- → upgbm-h.tfm (UniJIS-UTF16-Hを想定)
+------- → uprml-v.tfm (UniJIS-UTF16-Vを想定)
+------- → upgbm-v.tfm (UniJIS-UTF16-Vを想定)
+------- → uprml-hq.tfm (UniJIS-UCS2-Hを想定)
+------- → upgbm-hq.tfm (UniJIS-UCS2-Hを想定)
+
+
+◎ 各種ファイル
+ptex.ini → uptex.ini
+ptex.tex → uptex.tex (min10ベース → upjisr-hベース)
+kinsoku.tex → ukinsoku.tex
+
+platex.ini → uplatex.ini
+platex.ltx → uplatex.ltx
+pldefs.ltx → upldefs.ltx
+jy1mc.fd → jy2mc.fd (min10ベース → upjisr-hベース)
+jy1gt.fd → jy2gt.fd (goth10ベース → upjisg-hベース)
+jt1mc.fd → jt2mc.fd (tmin10ベース → upjisr-vベース)
+jt1gt.fd → jt2gt.fd (tgoth10ベース → upjisg-vベース)
+
+jarticle.cls → ujarticle.cls
+tarticle.cls → utarticle.cls
+jreport.cls → ujreport.cls
+treport.cls → utreport.cls
+jbook.cls → ujreport.cls
+tbook.cls → utreport.cls
+tsize10.clo → utsize10.clo
+tsize11.clo → utsize11.clo
+tsize12.clo → utsize12.clo
+tbk10.clo → utbk10.clo
+tbk11.clo → utbk11.clo
+tbk12.clo → utbk12.clo
+
+◎ CJK対応新規フォント
+upjpnrm-{h,v}.{tfm,vf} (set3使用)
+upjpngt-{h,v}.{tfm,vf} (set3使用)
+upschrm-{h,v}.{tfm,vf} (set3使用)
+upschgt-{h,v}.{tfm,vf} (set3使用)
+uptchrm-{h,v}.{tfm,vf} (set3使用)
+uptchgt-{h,v}.{tfm,vf} (set3使用)
+upkorrm-{h,v}.{tfm,vf}
+upkorgt-{h,v}.{tfm,vf}
+upstsl-{h,v}.tfm
+upstht-{h,v}.tfm
+upmsl-{h,v}.tfm
+upmhm-{h,v}.tfm
+uphysmjm-{h,v}.tfm
+uphygt-{h,v}.tfm
+※ Adobe Acrobat Reader 4 は以下の`generic fonts'を認識するそうだ。
+(Ref. http://project.ktug.or.kr/omega-cjk/tug2004-preprint.pdf)
+ Serif Sans Serif
+Chinese Simplified STSong-Light STHeiti-Regular
+Chinese Traditional MSung-Light MHei-Medium
+Japanese Ryumin-Light GothicBBB-Medium
+Korean HYSMyeongJo-Medium HYGoThic-Medium
+
+
+◇ 動作状況
+◎ uptex-1.xxの配布に含めたもの
+uptex 動いている。無問題。
+uplatex 動いている。無問題。
+uppltotf 動いている。無問題。
+uptftopl 動いている。無問題。
+updvitype set3も含めて動いている。無問題。
+upbibtex ほぼ動いている。しかし、jalpha.bst 使用時に
+ 一部のエントリーでeuc動作と同等にならない問題がある。
+makejvf 簡単な対応を施した。
+ オプション -u, -3, -J, -U, -H, -i を新設した。
+upjisr-h.tfmなど
+ JIS X 0208の範囲ではほぼUnicodeに移植出来ていると思う。
+ JIS X 0213の追加の約物は一応入れた。
+ その他 JIS X 0208/0213 以外の約物はAJ1-6でめぼしいものはないようだ。
+ 半角カナにも対応済。
+ukinsoku.tex JIS X 0213 に対応した。
+convbkmk.rb dvipsでのbookmark作成のためのrubyスクリプト。
+ さらに、out2uni相当動作の-oオプションも追加した。
+CMap UTF8-UTF16
+ TeX Live svn に r26540 で取り込まれた。
+◎ TeX Live に取り込んでいただいたもの
+ptexenc TeX Live svn に r23549〜r25028 あたりで取り込まれた。
+ JIS→Unicode の変換表は r29213 で見直した。
+ かなの合成文字は r38704 で取り込まれた。
+euptex TeX Live の Build/source/web2c で本配布の uptexdir の置き換えでOK
+ euptexdir 以下は新しい uptex との組合わせ可能で euptex が作成出来る。
+dvips TeX Live 2010 に取り込まれた。
+dvipdfmx TeX Live svn に r24509 あたりで取り込まれた。
+ set3も含めて動いている。
+ ただし、set3で、「内部コードがUTF-32, CMapがUniXXX-UTF16」であること
+ を仮定したハードコーディングになっているおり、柔軟性は乏しい。
+ bookmark 作成は UTF8-UCS2, UTF8-UTF16 の CMAP または、
+ convbkmk.rbの-oオプションを必要とする。
+dvi2tty TeX Live svn に r24634 あたりで取り込まれた。
+ dvi2tty の NTT JTeX/pTeX 対応版を upTeX 対応にした。
+ オプション -J を変更し、 -U, -E を新設した。
+ さらにT1,TS1,OT2,T2A,T2B,T2C,X2エンコーディング対応にし、
+ TeX Liveへの取り込みを提案していたが、
+ 一旦取り下げ、upTeX packageとは別扱いとする。
+mendex TeX Live r33962 あたりで、表記をUnicode対応とした。
+upmendex mendex をベースに新規に作成した。
+ mendex の内部コードをUnicode化し、ICUによるソート、
+ 読みをJIS X 0213のかなに対応、CJK対応、ラテン文字(含非英語)対応、
+ キリル文字対応、ギリシャ文字対応となっている。
+ TeX Live svn に r39638 あたりで取り込まれた。
+upmpost TeX Live r35188 あたりでupmetapostの名前で取り込まれた。
+ ただし、おそらくuptex-0.30の頃と同様、
+ 日本語vfの領域を食い過ぎで多書体ができないと思われる。
+otfパッケージ otfbeta-uptex-x.xx.tar.xz として別に公開した。
+ TeX Live svn に r25264 あたりで取り込まれた。
+ プロポーショナル仮名にも対応済み。
+ 本文用 vf 作成のために mkjvf を Unicode 対応にして、
+ vf を追加作成した。
+Unicodeのファイル名 Unix/LinuxではlocaleがUTF-8ならば使用出来る。
+ Windowsでは、TeX Live 2014 に取り込まれた。
+◎ 現在の配布に含んでいないもの
+xdvi uptex-0.30ではset3も含めて動いている。無問題。
+ uptex-1.xxの配布には含まない。
+dviout set2の範囲では改造無しでフォントの設定のみでほぼ動いている。
+ set3の範囲は文字化けしてしまうが、落ちることはない。
+ OTFパッケージの \CID{} が Unicode 経由なのは、 pLaTeX と同様。
+ http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/51610.html
+ http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/51705.html
+ の問題点の御報告がある。
+ 開発版で修正案を取り入れていただいた。
+ (Ref. http://tug.org/svn/dviout?view=revision&revision=178 )
+utfパッケージ uptex-0.30では動いている。
+ uptex-1.xxの配布には含まない。
+
+
+◇ 今後の課題、要検討事項など
+< 内部実装関連 >
+[1] pdfTeX 拡張機能の追加は?
+< dviware, 外部ソフト関連 >
+[2] upmetapost で多書体が使えるようにする。
+[3] upbibtex で、jalpha.bst 使用時に
+ 一部のエントリーでeuc動作と同等にならない問題点の解決。
+< フォント、マクロ関連 >
+[4] JIS→Unicode→CID の変換をupjis?-?.vfなど
+ に対してうまくいく形にする。
+ JIS X 0208集合の横組はよくなったが、縦組の約物はまだ上手くいかない。
+ vf と標準の CMap だけでは限界があり、 CMapの整備が必要。
+< その他 >
+[5] ドキュメントの充実。
+[6] 英語ドキュメントを書く。
+
diff --git a/Master/texmf-dist/doc/uptex/uptex-base/02uptex_changelog_utf8.txt b/Master/texmf-dist/doc/uptex/uptex-base/02uptex_changelog_utf8.txt
new file mode 100644
index 00000000000..73654ad5873
--- /dev/null
+++ b/Master/texmf-dist/doc/uptex/uptex-base/02uptex_changelog_utf8.txt
@@ -0,0 +1,569 @@
+### ChangeLog / 変更履歴
+
+2016.02.20 Ver1.21-20160220a
+ TeXLive svn r39778 base
+ Build/source/texk/web2c/uptexdir:
+ * uptex-m.ch, uppltotf.ch, uptftopl.ch, updvitype.ch, upbibtex.ch,
+ uptex_version.h:
+ Update upTeX version number.
+ * uptex-m.ch, kanji.c:
+ Update reference of Unicode blocks to
+ "Blocks-8.0.0.txt Date: 2014-11-10, 23:04:00 GMT [KW]".
+ * COPYRIGHT.utf8:
+ Rename from COPYRIGHT.jis and convert encoding from ISO-2022-JP
+ to UTF-8.
+ Build/source/texk/makejvf:
+ * uniblock.c: Update references Unicode blocks Blocks-8.0.0.txt
+ and CMap files.
+ * main.c: Update version number.
+ Master/texmf-dist/source/fonts/uptex/jis:
+ * upjisr-{h,v}.pl, upjisr-h-hk.pl:
+ Update.
+ Master/texmf-dist/fonts/vf/uptex/jis:
+ * uptch{rm,gt}-{h,v}.vf:
+ Update.
+ Master/texmf-dist/fonts/cmap/uptex/UTF8-UTF16
+ Update to Ver1.002.
+ 01uptex_doc_utf8.txt:
+ Update.
+
+2014.12.29 Ver1.20-20141229a
+ TeXLive svn 35915 base
+ Build/source/texk/web2c/uptexdir:
+ * uptex-m.ch, uppltotf.ch, uptftopl.ch, updvitype.ch, upbibtex.ch:
+ Update upTeX version number.
+ * uptex-m.ch, kanji.c:
+ Update reference of Unicode blocks to
+ "Blocks-7.0.0.txt Date: 2014-04-03, 23:23:00 GMT [RP, KW]".
+ Master/texmf-dist/fonts/cmap/uptex/UTF8-UTF16
+ Update to Ver1.001.
+ Master/source/uplatex/base, Master/source/platex/base:
+ * Move the position from Master/texmf-dist/tex/uplatex/base .
+ bin/convbkmk.rb:
+ Update to Ver0.10a:
+ Add -O option.
+ Make comments rd/rdtool friendly.
+ Fix bugs.
+ Update the author's mail address and web site.
+ samples:
+ Update.
+ 01uptex_doc_utf8.txt:
+ Update.
+
+2012.09.21 Ver1.11-20120921a
+ TeXLive svn 27750 base
+ Build/source/texk/web2c/uptexdir:
+ * uptex-m.ch, uppltotf.ch, uptftopl.ch, updvitype.ch, upbibtex.ch:
+ Update upTeX version number.
+ * uptex-m.ch:
+ Fix bug for \meaning\kchardef
+ (Thanks to Z.R. san)。
+ Build/source/texk/dvi2tty:
+ * A proposal "dvi2tty-5.4.0" with new features:
+ ** Support T1,TS1,OT2,T2A,T2B,T2C,X2 encodings.
+ ** Add utf8 output for the latin, cyrillic encodings and
+ OML,OMS encodings.
+ Master/source/fonts/uptex/jis:
+ * Move the position from Master/fonts/source/uptex/jis .
+ bin/convbkmk.rb:
+ Update to Ver0.07:
+ Fix bugs, Support escape sequences, Add -o option.
+ samples:
+ Update.
+ 01uptex_doc_utf8.txt:
+ Update.
+
+2012.04.29 Ver1.10-20120429a
+ TeXLive svn 26146 base
+ Build/source/texk/web2c/uptexdir:
+ * uptex-m.ch, uppltotf.ch, uptftopl.ch, updvitype.ch, upbibtex.ch:
+ Update upTeX version number.
+ * uptex-m.ch, kanji.c:
+ Update reference of Unicode blocks to
+ "Blocks-6.1.0.txt Date: 2011-06-14, 18:26:00 GMT [KW, LI]"
+ Build/source/texk/makejvf:
+ * main.c:
+ Update upTeX version number.
+ Revise command line help messages.
+ * uniblock.c:
+ Update references.
+ "Blocks-6.1.0.txt Date: 2011-06-14, 18:26:00 GMT [KW, LI]"
+ cid2code.txt (Version 10/25/2010) for Adobe-CNS1-6
+ cid2code.txt (Version 10/29/2010) for Adobe-GB1-5
+ cid2code.txt (Version 02/04/2012) for Adobe-Japan1-6
+ cid2code.txt (Version 01/31/2012) for Adobe-Korea1-2
+ Master/texmf-dist/fonts/vf/uptex/jis/*.vf:
+ Update references.
+ "Blocks-6.1.0.txt Date: 2011-06-14, 18:26:00 GMT [KW, LI]"
+ cid2code.txt (Version 02/04/2012) for Adobe-Japan1-6
+ samples:
+ Update.
+ patch/*:
+ Remove.
+
+2012.01.18 Ver1.00-20120118a
+ Master/texmf-dist/fonts/vf/uptex/jis/*.vf:
+ * In Ver1.00-20120115a,
+ Master/texmf-dist/fonts/vf/uptex/jis/*.vf was obsolete virtual fonts.
+ Master/texmf-dist/fonts/tfm/uptex/jis/*.vf was latest ones.
+ New *.vf are now set in Master/texmf-dist/fonts/vf/uptex/jis/ .
+
+2012.01.15 Ver1.00-20120115a
+ TeXLive svn r25043 base
+ Build/source/texk/web2c/uptexdir:
+ * uptex-m.ch, uppltotf.ch, uptftopl.ch, updvitype.ch, upbibtex.ch:
+ Update upTeX version number.
+ * uptex-m.ch, kanji.c:
+ Update reference of Unicode blocks to
+ "Blocks-6.0.0.txt Date: 2010-06-04, 11:12:00 PDT [KW]".
+ Build/source/texk/makejvf:
+ * main.c:
+ Update upTeX version number.
+ Revise command line help messages.
+ * Makefile.{am,in}, main.c, makejvf.h, write.c, uniblock.{c,h}:
+ upTeX support for makejvf.
+ * uniblock.c:
+ Update references.
+ "Blocks-6.0.0.txt Date: 2010-06-04, 11:12:00 PDT [KW]"
+ cid2code.txt (Version 04/13/2010) for Adobe-CNS1-6
+ cid2code.txt (Version 04/13/2010) for Adobe-GB1-5
+ cid2code.txt (Version 06/24/2010) for Adobe-Japan1-6
+ Master/texmf-dist/fonts/{source,tfm,vf}/uptex/jis:
+ * makepl.perl, upjisr-h{,-hk}.pl, upjisr-v.pl,
+ upjis{r,g}-{h,v}.tfm, up{jpn,kor,sch,tch}{rm,gt}-{h,v}.tfm:
+ add U+2014 as Type 5 in tfm files.
+ * upjpn{rm,gt}-{h,v}.vf
+ add CJK Unified Ideographs Extension C,D.
+ * Makefile
+ Update.
+ bin/convbkmk.rb:
+ Update to Ver0.01: BOM typo was fixed.
+ samples:
+ Update.
+ fonts:
+ Delete obsolete fonts i.e. umin10.tfm.
+ ptexenc, dvips, dvipdfmx, dvi2tty:
+ Delete from this release because
+ TeXLive svn has already included upTeX support.
+ up(j)mpost, xdvi:
+ Delete from this release because
+ TeXLive svn has not included pTeX support yet.
+ otfbeta-uptex-0.07.tar.xz:
+ Delete from this release and
+ already released as an independent package.
+
+2010.04.10 Ver0.30
+ ptetex3-20090610 ベース
+ uptex-base.ch:
+ upTeXのヴァージョン番号の変更。
+ otfstable-uptex-0.05, 5macro_uptex.sh:
+ "otfstable (v1.2.9.2 2010/3/26)"ベースに更新。
+ 同梱のpackages/otfstable-1292.zipは、
+ 配布元のotfstable.zip (v1.2.9.2 2010/3/26) の
+ ファイル名を変更したのみのもの。
+ makejvf:
+ Unicode のブロックを
+ "Blocks-5.2.0.txt Date: 2009-05-19, 16:21:00 PDT [KW]"
+ ベースに更新。
+ 参考のCMapをVersion 08/11/2009〜08/23/2009のものに更新。
+ オプション "-u cns -3" を選択すると、CJK統合漢字Extension Cを含む。
+ fonts:
+ upjpn{rm,gt}-h.vf に半角片仮名が含まれていなかったのを修正。
+ uptch{rm,gt}-{h,v}.vf にCJK統合漢字Extension Cを追加。
+ ptexenc:
+ WindowsNT系のコマンドプロンプトでのUnicode文字入力
+ (コピー&ペーストで入力可能)のために
+ ReadConsoleW()を使ったコードを書いてみた。
+ Windows9x系では動かないはずだが --sjis-terminal で
+ 利用することを想定。
+ getc4_win32console()の単体で動作確認したのみだが
+ 上手く動くかどうか。
+ BOMの読み込み判定を最新ptexencからバックポートした。
+ web2c/cpascal.h, dvipsk/afm2tfm.c, updvi2tty/dvistuff.c:
+ getline 重複定義対策。
+ (デビ丸さん、ありがとうございました)
+ kpathsea/fontmap.c:
+ free のバグ対策。
+ (デビ丸さん、ありがとうございました)
+ samples: 更新。
+ uptex_font-0.30.tar.gz, 0uptex.sh:
+ up{jpn,tch}*.vf 更新。
+ CMapをoreillyのサイトのものからAdobeのサイトのものへ更新。
+2010.01.31 Ver0.29
+ ptetex3-20090610 ベース
+ 0uptex.sh, ptex-src-3.1.10-3.1.11.patch:
+ ptex-3.1.11 ベースに変更。
+ ptex-src-3.1.10-forum327.patch は不要になった。
+ 0uptex.sh:
+ eptex, euptex自動インストールを廃止。
+ 代わりに euptex-091003 以下に eptex-091003.tar.bz2 の
+ 修正部分を置いた。テスト用。
+ uptex-base.ch, kanji.c:
+ 全角英数字、半角片仮名のブロックを
+ Halfwidth and Fullwidth Forms のブロックから分離した。
+ (Doraさん、ZRさんに御意見をいただき、
+ ありがとうございました)
+ Unicode のブロックを
+ "Blocks-5.2.0.txt Date: 2009-05-19, 16:21:00 PDT [KW]"
+ ベースに更新。
+ samples: 更新。
+2009.08.23 Ver0.28
+ ptetex3-20090610 ベース
+ uptex-base.ch, 0uptex.sh, ptex-src-3.1.10-forum327.patch:
+ upTeXのヴァージョン番号の変更。
+ ptexlive から patch を拝借して、下記の修正を入れた。
+ http://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=327
+ 下記のkcatcode関連バグ修正。
+ (Doraさん、北川さん、ありがとうございました)
+ http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/53557.html
+ http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/53556.html
+ euptexdir/ptexextra.c:
+ e-pTeX/e-upTeX (090309) の自動インストール時に
+ FAM256 パッチを無効とした場合に
+ eupTeX が上手く動かなかったバグ修正。
+ (栗山さん、北川さんに御意見をいただき、
+ ありがとうございました)
+ 0uptex.ch, 5macro_uptex.sh:
+ 最新の jsclasses が ptetex3 に入ったので
+ インストール法を元に戻した。
+ 0uptex.ch:
+ 小さいバグ修正。
+ convbkmk.rb:
+ 新規に作成したrubyスクリプトを同梱。
+ upLaTeX, dvips と hyperrefとの組合せでしおり(bookmark)を
+ 正常につくれるようになった。
+ 松本隆太郎氏の convert-euc.txt
+ (Ref. http://www.rmatsumoto.org/tex-ps-pdf/hyperref.ja.html)
+ とほぼ同様の機能であるが、
+ pTeX/upTeX 両対応となっている点と ruby なのが新規。
+ 引数に dvips の出力 foo.ps を指定すると foo-convbkmk.ps へ出力する。
+ dvips の出力を標準入力に与えると標準出力へ出力する。
+ この ruby スクリプトはMITライセンスとする。
+ otfstable-uptex-0.04:
+ 小さいバグ修正。
+ (角藤さん、ZRさんに御意見をいただき、
+ ありがとうございました)
+ ptexenc:
+ 上流の更新に対応するための修正。
+ samples: 更新。
+2009.03.12 Ver0.27
+ ptetex3-20080616 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ Makefile.in, 0uptex.chなど:
+ e-pTeX/e-upTeX (090309) の自動インストール。
+ さらに、FAM256 パッチを利用可能にした。
+ eptex-090309.tar.bz2 の配布のうち etex.diff, uptex.diff,
+ eptex.src, euptex.src, eptexdefs.lib, fp.ch, fam256.ch を利用。
+ その他は、拙作パッチに含まれるようにしたが、些細な点を除いて
+ 北川さんオリジナルとほぼ同等のものが出来上がるはず。
+ my_option で ENABLE_EPTEX_FAM256=1 を指定すると
+ FAM256 パッチが有効になる。
+ jsclasses-090222.zip, 0uptex.ch, 5macro_uptex.sh:
+ jsclasses を更新。
+ 配布元の奥村さんのところで upTeX パッチを適用して頂いた。
+ 0uptex.ch:
+ CTAN の cbfonts.zip のディレクトリ構成が変更されていたのに対応。
+ cbfonts.zip, cm-super.zip, unicode.zip のインストール先を
+ texmf-dist に変更。
+ 6babel_uptex.sh:
+ eplatex, euplatex + babel でのfmtの再生成が出来ていなかったのを修正。
+ samples: 更新。
+2009.02.21 Ver0.26
+ ptetex3-20080616 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ Makefile.inなど: eTeX, pdfeTeX などと同様に
+ ヴァージョン番号を ptexextra.h などに自動で採り入れるようにした。
+ 0uptex.chなど: e-pTeX/e-upTeX (090220) の自動インストール。
+ (北川さん、e-pTeX/e-upTeX の開発有難うございました。)
+ eptex-090220.tar.bz2 の配布のうち etex.diff, uptex.diff,
+ eptex.src, euptex.src, eptexdefs.lib, fp.ch を利用。
+ その他は、拙作パッチに含まれるようにしたが、些細な点を除いて
+ 北川さんオリジナルとほぼ同等のものが出来上がるはず。
+ FAM256 は無効のままとなっている。
+ jsclasses-090123-uptex0.26.zip, 0uptex.ch, 5macro_uptex.sh:
+ jsclasses を更新。upTeX パッチ適用済を同梱した。
+ samples: 更新。
+2008.12.13 Ver0.25
+ ptetex3-20080616 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ otf, otfstable-uptex-0.03:
+ 本文用vfに、JIS X 0208に含まれずかつJIS X 0213に含まれかつ
+ Unicodeで合成不要の文字を追加した。
+ プロポーショナル仮名は未検討。
+ fontmap更新。
+ samples: 更新。
+2008.10.18 Ver0.24
+ ptetex3-20080616 ベース
+ uptex: フルパス指定などで起動できない問題点を修正した。
+ uptex, upjbibtex, uppltotf, uptftopl:
+ BUG_ADDRESS を表示しないようにした。
+ updvi2tty: 環境によってコンパイルに失敗する問題点を修正した。
+ otf, otfstable-uptex-0.02:
+ 本文用vfを追加した。JIS X 0208に含まれない仮名は未検討。
+ プロポーショナル仮名は未検討。
+ 5macro_uptex.sh, 6babel_uptex.sh, 0uptex.sh:
+ root_checkが効いていなかったのを修正した。
+ otfパッケージの本文用vfインストールを追加。
+ samples: 更新。
+2008.09.04 Ver0.23
+ ptetex3-20080616 ベース
+ updvi2tty: dvi2tty 日本語版を upTeX 対応にしたものを追加。
+ ptexenc ライブラリーを使用。
+ pTeX や NTT JTeX の場合でも UTF-8 出力が可能になっている。
+ NTT JTeX の場合の改行に関するバグも修正している。
+ 0uptex.sh: updvi2tty の自動インストールを追加。
+ xdvi: 半角片仮名のとき、"Warning: 'font' (code=0xXXXX) is not square."
+ の警告を出さないようにした。
+ ptexenc: PTEXENC_VERSION に 0.997-u00 と upTeX パッチの枝番を付けた。
+ samples: 更新。
+2008.08.03 Ver0.22
+ ptetex3-20080616 ベース
+ makejvf: font ID を0番から開始するオプション -i を追加。
+ dvioutとの組合せで発現する問題を回避するため。
+ uptex_font: 上記 makejvf の修正を適用。
+ umin5, umin6, ..., umin9 などを Makefile から削除。
+ 0uptex.sh: 「xdviインストールなし」の場合でも動作するように修正。
+ pdvitype: -kanjiオプションが無効になっていたバグ
+ (オリジナルのptetex3では発現せず、uptexパッチによるバグ)を修正。
+ xdvi: 半角片仮名が再度おかしくなっていたバグを修正。
+ あまり自信はないが、動いているように見える。
+ samples: 更新。
+2008.03.13 Ver0.21
+ ptetex3-20080311 ベース
+ uptex-base.ch: \uppercase, \lowercase が異常になるバグを修正。
+ updvitype, uppltotf, uptftopl, upjbibtex, upjmpost:
+ default のエンコーディングを
+ --kanji=utf8 --kanji-internal=uptex 相当にした。
+ xdvi, dvips, dvipdfmx:
+ set3 対応のために消費していたメモリー領域を動的確保に変更。
+ 従来ptetex3 版比 17 倍だったが、 SIP 使用時に3倍程度、
+ pTeX/pLaTeX 使用時には ptetex3 版とほぼ同等になった。
+ dvips:
+ CMap の UTF32 と UTF8 に対応。
+ UniJISX0213-UTF32 など UTF16 のものが公開されていないものに対し
+ 有用と思われる。
+ 0uptex.shなど:
+ make babelの後、uplatex.fmtを自動生成できていなかった点を修正。
+ make babel相当を自動で行うことにした。
+ 不要なら0uptex.shからコメントアウトする。
+ samples: 更新。
+2008.01.12 Ver0.20
+ ptetex3-20080107 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ updvitype, uppltotf, uptftopl, upjbibtex, upjmpost, updvitomp, upovp2ovf:
+ 以前は pdvitype, pltotf, tftopl, jbibtex, jmpost, pdvitomp, ovp2ovf は
+ ptetex3 のものを上書きしていたが、コマンド名を新設し上書きをやめた。
+ W32TeX では既にそのようにして頂いている。
+ ptexenc, makejvf, xdvi, dvips, dvipdfmx, jsclasses は、
+ まだ上書きしている。
+ upjbibtex: デフォルトの内部コードを uptex とした。
+ upmakempx: 新設。
+ samples: 更新。
+2007.12.26 Ver0.19
+ ptetex3-20071214 ベース
+ uptex-base.ch: プリミティヴ \forcecjktoken を追加。
+ フォント: upjisr-h, upjisg-h 等を修正。
+ 半角仮名関係のグルーを追加。
+ ukinsoku.tex: 半角仮名関係を追加。
+ otf: 本文用vf利用の準備。実際の本文用vfは、別途検討する。
+ samples: 更新。
+2007.12.08 Ver0.18
+ ptetex3-20071207 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ フォント: upjisr-h, upjisg-h 等を修正。
+ 横組時に半角片仮名 (U+FF61〜U+FF9F) に対応させた。
+ xdviで "uprml-h is not a square metric." などの警告が出てしまうが、
+ 一応動いているようだ。
+ makejvf: オプション -H を新設し、横組時に半角片仮名 (U+FF61〜U+FF9F)
+ に仮対応した。
+ psフォント用のtfm出力において半角片仮名の部分は
+ makejvfでの対応が出来ていない。
+ jmpost: 半角片仮名 (U+FF61〜U+FF9F) に対応した。
+ samples: 更新。
+2007.11.17 Ver0.17
+ ptetex3-20071030 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ フォント: upjisr-h, upjisg-h 等を修正。公称10ptをDESIGN SIZE 10ptに、
+ 縦横比を1:1に、CHARHT:CHARDPの比を88:12に変更した。
+ ujarticle.cls などで10pt指定に対し公称10pt, DESIGN SIZE 10ptを
+ 9.62216ptに縮小した(OTFパッケージ同様)。
+ jarticle.cls と和文,欧文の横の大きさと比は一部の約物を除き一致する。
+ plain upTeX の uptex.tex では、10pt指定をDESIGN SIZE 10ptにした。
+ このため plain pTeX と和文の大きさが異なることになる。
+ jsclasses: uplatexオプション時にデフォルトで upjisr-h.tfm を
+ 0.962216*0.961=0.924690 倍して使うようした。
+ ujis.tfm を使うには uplatex,jis オプションを指定する。
+ umin10.tfm を使うには uplatex,mingoth オプションを指定する。
+ ptexenc.c: 微修正。
+ 無事 Windows のコマンドプロンプトでUnicodeの表示が出来ているようだ
+ (Thanks to 角藤さん)。
+ samples: 更新。
+ (奥村さん、uchiyamaさん、本田さん、ZRさんに御意見をいただき、
+ ありがとうございました)
+2007.11.10 Ver0.16
+ ptetex3-20071030 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ ptexenc.c: Windows のコマンドプロンプト用に
+ WriteConsoleW()を使ったコードを書いてみた。
+ Windows9x 系では動かないはずだが --sjis-terminal で
+ 利用することを想定。
+ 動作確認していないがはたして上手くいくかどうか?
+ makejvf: -U, -u jisq オプションを追加してみた。
+ 縦組対応にはこれでも不充分で、専用の CMap を作るしかないようだ。
+ フォント: upjisr-h, upjisg-h 等を作成。公称10ptを9.62216pt(min10同様)に、
+ 縦横比を1:1に、CHARHT:CHARDPの比を88:12にしてみた。
+ default のフォントを ujis,ujisg → upjisr-h, upjisg-h 等に変更。
+ 中韓のフォントを upjisr-h 系に変更。
+ 中韓のフォントにSans Serif用を追加。
+ samples: 追加、更新。
+2007.10.18 Ver0.15
+ ptetex3-20071017 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ uplcore.ltx: "2006/11/10" ベースに更新。
+ u{,t}{article,report,book}.clsなど: "2006/06/27 v1.6" ベースに更新。
+ otfパッケージ: \UTFK{}, \CIDK{} などを動くようにした。
+ font/map/for_dviout.map: dviout 用のmap記入例を追加。
+ これで dviout の簡単なテストを行った。
+ samples: 追加、更新。
+ samples/testrun.bat: MS-DOS 用のバッチファイルを追加。
+2007.09.25 Ver0.14
+ ptetex3-20070822 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ ptexenc.c: 環境によってコンパイル出来ない問題を修正。
+ 0uptex.sh: EUC-JP → UTF-8に。英語のコメントを追加。
+ 00readme_en.txt: 追加。
+2007.09.15 Ver0.13
+ ptetex3-20070822 ベース
+ ptexenc: "-kanji=uptex" のとき "-kanji-internal=*" を無視し、
+ 強制的に "-kanji-internal=uptex" をセットし、
+ 内部コードを uptex に固定するようにした。
+ makejvf, 付属フォント: 「‘」「’」「“」「”」に関し
+ ujis.vf などでの対応先を urml.tfm→rml.tfm 等 jis 系に変更。
+ フォント: default のフォントを umin10,ugoth10 → ujis,ujisg 等に変更。
+ default のフォントからset3を取り除いた。
+ {uj,ut}{book,report}.cls: 追加。
+ jmpost: -kanji オプションが子プロセスに伝搬するようにした
+ (Thanks to 角藤さん)。
+ samples: 更新。
+ (ZRさん、土村さんに御意見をいただき、ありがとうございました)
+2007.08.25 Ver0.12
+ ptetex3-20070822 ベース
+ uptex: kcatcodeが18でUTF-8の3〜4バイトの場合に処理がときどき
+ 異常になるバグを修正。
+ ハングルの直後の改行を空白扱いするように変更。
+ (Ref. http://project.ktug.or.kr/omega-cjk/tug2004-preprint.pdf)
+ ptexenc: is_internalUPTEXの場合に JIS→Unicode の変換を
+ 実装依存ではなく、一種類に固定するようにした。
+ ukinsoku.tex: \inhibitglue の U+FF5E の追加など。
+ jbibtex: デフォルトの内部コードをuptexからeucに戻した。
+ デフォルトではupTeXパッチのない状態に等しくなっているはず。
+ samples: 追加、更新。
+ (ZRさん、栗山さん、土村さんに御意見をいただき、ありがとうございました)
+2007.08.07 Ver0.11
+ ptetex3-20070806 ベース
+ jcharwidowpenalty がらみの動作が動かなくなっていたのを修正。
+ pdvitype: 出力を、端末の文字コードではなく
+ -kanji 指定を優先するように変更。
+ ukinsoku.tex: 8 bit 欧文に関し \xspcode を追加。
+ makejvf: cjk に用いないコード値を vf に入れないようにした。
+ uptex_font: vf の軽量化。
+ sample を更新。
+ (ZRさん、安田さんに御意見をいただき、ありがとうございました)
+2007.07.28 Ver0.10
+ ptetex3-20070606 ベース
+ \char`<文字>, \chardef では文字コードが255以下の場合には欧文動作、
+ 265以上の場合には和文動作となるように変更した。
+ さらに、文字コードが255以下の場合に和文動作をするためのプリミティヴ
+ \kchar`<文字>, \kchardef を追加した。
+ jbibtex へのパッチのバグ修正。さらに、-kanji-internal=uptex,
+ -kanji-internal=euc が動くようにした。
+ -kanji-internal=euc ならば従来のjbibtexと同等の動作になる(はず)。
+ ovp2ovf へのパッチの微修正。
+ cbfonts, cm-super などのインストール先の修正。
+ sample を更新。
+ (多数の点でZRさんに御意見をいただき、ありがとうございました)
+2007.06.16 Ver0.09
+ ptetex3-20070606 ベース
+ \string cjkトークン のバグ
+ (ZRさんに御報告いただき、ありがとうございました) に関し
+ 全く不可解なトークンは発生しないようにした(つもり)。
+ kcatcode表のデフォルト値を見直した (ZRさんに御提案いただき、
+ ありがとうございました) 。
+ unicode.zip, cbfonts.zip があれば自動インストールするようにした。
+ jsclasses へのパッチの微修正。
+ ovp2ovf へのパッチの微修正。
+ sample を更新。
+2007.05.28 Ver0.08
+ ptetex3-20070522 ベース
+ \char<数値>, \chardef で文字コードが 255 以下の場合に
+ kcatcode, enablecjktoken の条件が整えば cjkトークンにするようにした。
+ utf/otf パッケージへの簡易的対応。まだ一部しか動かない。
+ また、実装方法も今後変更する可能性がある。
+ cm-super.zip があれば自動インストールするようにした。
+ uptex_font-0.08.tar.gz : vfフォントに 0x7F 以下を追加した。
+ これらは\char, \chardef による指定で利用可能になったはず。
+ sample を更新。
+2007.05.13 Ver0.07
+ ptetex3-20070426 ベース
+ CJKの内部コードを kcatcode + 文字コード に変更。
+ 内部レジスターにおいて U+0080〜U+0FFF がそのままのコード値で
+ 使えなかった問題点をほぼ解消したつもり。
+ まだ \char<数値> などの 255以下で問題がある。
+ 大工事なので、安定性は低下しているおそれあり。
+ jbibtex の Unicode 対応実験(土村さんによる)を更新。
+ dvipdfmx で hyperrefとの組合せで bookmark を正常につくれるようにした。
+ calc_pos の簡略化。
+ kcatcodekey の簡略化(土村さんによる)。
+ makejvf の微修正。
+ sample を更新。
+2007.04.15 Ver0.06
+ ptetex3-20070412 ベース
+ jbibtex の Unicode 対応実験(土村さんによる)を更新。
+ プリミティヴ \enablecjktoken, \disablecjktoken を追加。
+ ukinsoku.tex を UTF-8 にし、JIS X 0212, JIS X 0213 関連を追加。
+ uptex-base.ch で cs_token_flag を変更。
+ sample を追加、更新。
+ uptex_font-0.06.tar.gz : 新版の CMap Uni{JIS,GB,UCS,KS}-UTF16-{H,V} を追加。
+2007.04.08 Ver0.05
+ ptetex3-20070405 ベース
+ ptexenc との摺り合わせ(土村さんに作業していただき、有難うございました)。
+ jbibtex の Unicode 対応実験(土村さんによる)を同梱。
+ JIS X 0213 関連ソースの動かなくなっていた部分を削除。
+ EUC/SJIS 動作で kcat_code の内部領域を変更。
+ uptex で kcode_pos, trick_buf2 の多バイト対応したつもり。テストは不十分。
+ jsclasses を uplatex に簡易対応させた。
+ dvips のオプション -UCS, -SJIS を廃止し、自動判定するようにした。
+ uptex-utf8.fmt, uplatex-utf8.fmt を uptex.fmt, uplatex.fmt に変更。
+ tftopl, pltotf のコード範囲のチェックを checkkanji 任せに変更。
+ ドキュメントに「upTeX開発のねらい」を追加。
+ sample を追加。
+2007.03.25 Ver0.04
+ ptetex3-20070323 ベース
+ 新しい ptexenc の関数に対応(土村さんに作業していただき、有難うございました)。
+ sample を修正。
+2007.03.18 Ver0.03
+ ptetex3-20070316 ベース
+ 自動インストールスクリプトを追加した(Thanks to 土村さん)。
+ ディレクトリ構成、インストール上の問題点を修正(Thanks to 土村さん)。
+ メモリーを浪費していた点を修正(土村さんにご指摘いただきました)。
+ 新しい ptexenc の関数に一部を変更。
+ jmpost が set3 を含めて動くようになった。
+ sample を追加。
+ フォントのバイナリーパッケージでシンボリックリンクを使用するようにした。
+2007.03.07 Ver0.02
+ ptetex3-20070304 ベース
+ sample を微修正。
+ フォントのバイナリーパッケージを分離。
+2007.02.27 Ver0.01
+ ptetex3-20070223 ベース
+ kanji_enc を入出力コード(-kanji=xxx)と内部コード(-kanji-internal=xxx)
+ に分離(Thanks to 土村さん)。
+ ptex と uptex のソース、バイナリーを分離。共存できるようにした。
+ sample を追加。
+ jis.tfm 系のフォントを追加。同系統のCJKのフォントを追加。
+ CJKの動作確認。sample を追加。
+ とりあえずkcatcodeに hangul(19)を追加。現状は漢字(16)と同じ動作。
+ dvidpfmx で set3 が使えるようになった。
+ pltotf がまともに使えるようになった。
+2007.01.27 Ver0.00
+ ptetex3-20070101 ベース
diff --git a/Master/texmf-dist/doc/uptex/uptex-base/LICENSE b/Master/texmf-dist/doc/uptex/uptex-base/LICENSE
new file mode 100644
index 00000000000..bafc1e4247c
--- /dev/null
+++ b/Master/texmf-dist/doc/uptex/uptex-base/LICENSE
@@ -0,0 +1,29 @@
+Copyright (c) 2010 ASCII MEDIA WORKS
+Copyright (c) 2016 Takuji Tanaka
+Copyright (c) 2016 Japanese TeX Development Community
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of uptex-base nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Master/texmf-dist/doc/uptex/uptex-base/README.md b/Master/texmf-dist/doc/uptex/uptex-base/README.md
new file mode 100644
index 00000000000..6b15e512bd4
--- /dev/null
+++ b/Master/texmf-dist/doc/uptex/uptex-base/README.md
@@ -0,0 +1,21 @@
+# uptex-base
+
+The bundle contains plain TeX format and documents for upTeX.
+
+## Repository
+
+The bundle is maintained on GitHub:
+https://github.com/texjporg/uptex-base
+
+If you have issues, please let us know from the above page.
+
+## License
+
+The bundle may be distributed and/or modified under the terms of
+the 3-clause BSD license (see LICENSE).
+
+## Release Date
+
+2016-04-17
+
+Japanese TeX Development Community
diff --git a/Master/texmf-dist/doc/uptex/uptex-base/README_uptex.txt b/Master/texmf-dist/doc/uptex/uptex-base/README_uptex.txt
new file mode 100644
index 00000000000..9e1ae5781ec
--- /dev/null
+++ b/Master/texmf-dist/doc/uptex/uptex-base/README_uptex.txt
@@ -0,0 +1,54 @@
+upTeX standard format files
+
+
+#### Contents
+ uptex.tex: format file.
+ ukinsoku.tex: kinsoku file.
+
+
+#### Copyright
+The files in this directory are
+based on "texmf library for Japanese TeX (pTeX)"
+by ASCII Corporation (currently ASCII MEDIA WORKS Inc.)
+and modified for upTeX/upLaTeX.
+These are available under the following license agreement.
+
+===============================================================================
+
+Copyright (C) 1987, 1995 ASCII Corporation.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. Neither the name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+===============================================================================
+
+
+#### ChangeLog
+
+uptex-1.00 [2012/01/15] TTK
+ * re-package for upTeX/upLaTeX Ver.1.00 distribution.
+
+v20110507a [2011/05/07] TTK
+ * re-package for upTeX/upLaTeX based on uptex-0.30 distribution
+ and ptex-texmf-2.5.tar.gz .
diff --git a/Master/texmf-dist/tex/uptex/uptex-base/euptex.ini b/Master/texmf-dist/tex/uptex/uptex-base/euptex.ini
new file mode 100644
index 00000000000..34ddc33dd6f
--- /dev/null
+++ b/Master/texmf-dist/tex/uptex/uptex-base/euptex.ini
@@ -0,0 +1,4 @@
+%% for e-upTeX (ASCII Nihongo e-upTeX)
+\input euptex.src
+\dump
+\endinput
diff --git a/Master/texmf-dist/tex/uptex/uptex-base/euptex.src b/Master/texmf-dist/tex/uptex/uptex-base/euptex.src
new file mode 100644
index 00000000000..2678731fe11
--- /dev/null
+++ b/Master/texmf-dist/tex/uptex/uptex-base/euptex.src
@@ -0,0 +1,774 @@
+%% e-upTeX macro
+%% derived from $TEXMF/tex/plain/etex/etex.src, eptex.src
+%% e-upTeX: euptex *euptex.src
+
+% Assume a purely IniTeX environment and set up a minimal \catcode r\'egime
+
+\catcode `\{=1
+\catcode `\}=2
+\catcode `\#=6
+\catcode `\^=7
+\catcode `\@=\catcode `\A
+
+% Define the basic error-reporting and abort mechanisms:
+
+\def \et@xmsg #1#2%
+ {\begingroup
+ \def \n {^^J}%
+ \def \ { }%
+ \newlinechar=\expandafter `\n
+ \if E#1%
+ \errorcontextlines=0
+ \errmessage {e-TeX error: #2}%
+ \else
+ \message {\n ! e-TeX \if I#1 message%
+ \else \if W#1 warning%
+ \else \if F#1 fatal error%
+ \else
+ \ unknown (#1)%
+ \fi
+ \fi
+ \fi: #2%
+ }%
+ \fi
+ \endgroup
+ }
+
+% Note: a future version may report errors in the %<fac>-<s>-<code>[, <text>]
+% format, allowing the more verbose <text>s to be read from file rather than
+% stored in the format.
+
+\def \et@xabort #1%
+ {\et@xmsg {F}{#1}%
+ \batchmode
+ \end
+ }
+
+% Make sure this file is being read by e-TeX in extended mode;
+% If it is, prepare to check version/revision compatibility, otherwise abort.
+
+\ifx \undefined \eTeXversion
+ \et@xabort {this file can be processed only in extended mode;\n
+ \ \ did you perhaps forget the asterisk?%
+ }%
+\else
+ \begingroup
+ \catcode `\%=12
+ \catcode `\?=14
+ \xdef \et@xfilehdr
+ {\detokenize {%% e-TeX V}\the \eTeXversion \eTeXrevision}?
+ \xdef \et@xlibhdr
+ {\detokenize {%% e-TeXlib V}\the \eTeXversion \eTeXrevision}?
+ \endgroup
+\fi
+
+% Assume extended mode, but no additional \catcodes/\defs yet;
+% set up a simple e-TeX condition-reporting system:
+
+\def \et@xinf #1{\et@xmsg {I}{#1}} %%% not currently used
+\def \et@xwarn #1{\et@xmsg {W}{#1}}
+\def \et@xerr #1#2{{\errhelp={#2}\et@xmsg {E}{#1}}}
+
+% deactivate the processing of patterns and exceptions; these will be
+% reinstated later, after the \uselanguage mechanism has been defined.
+
+\let \et@xpatterns=\patterns
+\def \patterns
+ {\begingroup
+ \everyeof={\fi \endgroup}%
+ \message {[skipping from \noexpand \patterns to end-of-file...]}%
+ \iffalse
+ }
+
+% Read "uptex.tex" (\patterns & \hyphenation will be skipped)
+
+\input uptex.tex
+
+% restore the catcode of commercial-at (@), which will just have been clobbered
+
+\catcode `\@=\catcode `\A
+
+% Assume an extended Plain environment (i.e. there are no longer any
+% restrictions on the coding techniques we can use). First prepare to
+% carry out consistency checks on the file headers and the current e-TeX
+% version/revision levels:
+
+\newread \et@xinput
+
+\def \etexhdrchk #1#2%
+ {\openin \et@xinput=#2
+ \ifeof \et@xinput
+ \chardef \etexstatus=0 % V1.0-1
+ \else
+ \begingroup
+ \endlinechar=-1
+ \readline \et@xinput to \et@xbuf
+ \closein \et@xinput
+ \def \p@rtition ##1.##2\endp@rtition {##1}% V2.1%0
+ \xdef \et@xbuf
+ {\expandafter \p@rtition \et@xbuf .\endp@rtition}% V2.1;0
+ \xdef \et@xtmp {\csname et@x#1hdr\endcsname}%
+ \xdef \et@xtmp
+ {\expandafter \p@rtition \et@xtmp .\endp@rtition}% V2.1;0
+ \endgroup
+ \ifx \et@xtmp \et@xbuf
+ \chardef \etexstatus=2 % V1.1;4
+ \else
+ \chardef \etexstatus=1 % V1.1;4
+ \fi
+ \fi
+ }
+
+% Check the version number of etex.src:
+
+\def \et@xfmtsrc {etex.src}
+\etexhdrchk {file} {\et@xfmtsrc}
+\ifcase \etexstatus
+ \et@xerr {unable to open format source file "\et@xfmtsrc";}
+ {This should not happen; please ensure that your system
+ allows a file to be opened for reading more than once
+ concurrently.%
+ }%
+\or
+ \et@xwarn {format source file "\et@xfmtsrc" has wrong header;\n
+ \ \ expected: "\et@xfilehdr"; found: "\et@xbuf";%
+ }%
+ {You are using a version of e-TeX which may be incompatible
+ with the source for the format file you are trying to
+ compile; please ensure that you have the most recent
+ version of each. I will proceed, but you should treat
+ the results with caution...%
+ }%
+\fi
+
+% Module handling now implemented (V1.0-2)
+
+\def \module #1{\iftrue}
+\let \endmodule=\fi
+
+\newtoks \et@xtoks
+
+\def \et@xl@@d #1 #2\endl@ad %%% the "#1 #2" code avoids trailing spaces
+ {\ifcsname module:#1\endcsname
+ \et@xwarn {duplicate module name "#1"}%
+ \else
+ \csname module:#1\endcsname %%% we exploit the side-effect explicitly
+ \et@xtoks=\expandafter
+ {\the \et@xtoks
+ \expandafter \let \csname module:#1\endcsname=\undefined
+ }%
+ \fi
+ }
+
+\def \et@xl@ad #1#2,#3\endl@ad %%% the #1#2 code avoids spurious leading spaces
+ {\et@xl@@d #1#2 \endl@ad
+ \if *#3*
+ \let \n@xt=\relax
+ \else
+ \def \n@xt {\et@xl@ad #3\endl@ad}%
+ \fi
+ \n@xt
+ }
+
+\def \et@xload #1 %%% needed because of the embedded \ifs...
+ {\def \module ##1%
+ {\unless
+ \ifcsname module:##1\endcsname
+ \message {Skipping module "##1";}%
+ \else
+ \message {Loading module "##1";}%
+ }%
+ \input #1
+ \def \module ##1{\iftrue}%
+ }
+
+\def \load #1 from #2 %%% selective module loading from an e-TeX library file
+ {%\etexhdrchk {lib} {#2}%
+ \ifcase \etexstatus
+ \et@xerr {unable to open library file "#2"; load aborted.}
+ {I got an <eof> on trying to open your library file;
+ please make sure it exists, is readable and is not locked.%
+ }%
+ \or
+ \et@xerr {library file "#2" has wrong header;\n
+ \ \ expected: "\et@xlibhdr"; found: "\et@xbuf";\n
+ \ \ load aborted.%
+ }%
+ {The first line of your library does not start with
+ the correct e-TeX header; you may need to update the
+ file to be compatible with the current version of
+ e-TeX, or you may simply have specified the wrong file.%
+ }%
+ \else
+ \et@xtoks={\et@xtoks={}}%
+ \et@xl@ad #1,\endl@ad
+ \et@xload {#2}
+ \the \et@xtoks
+ \fi
+ }
+
+\load interactionmodes from eptexdefs.lib %%% \load <foo>[, <bar>...] from <baz>
+
+\def \@sk #1#2#3%
+ {\ifnum \interactionmode=\interactionmodes {errorstop} %%% V2.0;15
+ \def \pr@mpt {\csname #1 \endcsname}%
+ \edef \pr@mptloop {{\escapechar=-1 \global \readline 16 to \pr@mpt}}%
+ \loop \pr@mptloop
+ \ch@ckforyn \pr@mpt {#2}%
+ \ifb@dresponse
+ \message {Please answer Y[es] or N[o]}%
+ \repeat
+ \else
+ \def \pr@mpt {#3}%
+ \ch@ckforyn \pr@mpt {#2}%
+ \fi
+ }
+
+\def \ch@ckforyn #1#2% Bernd Raichle's improved version, V1.0-1
+ {\edef \@nswer {#1}%
+ \def \p@rse ##1##2\endp@rse
+ {\lowercase {\if y##1}\b@dresponsefalse \csname #2true\endcsname
+ \else \lowercase {\if n##1}\b@dresponsefalse \csname #2false\endcsname
+ \else
+ \b@dresponsetrue
+ \fi
+ \fi
+ }%
+ \expandafter \p@rse \@nswer \endp@rse
+ }
+
+\def \usef@llback %%% V1.0-3
+ {\message {Using fallback mode (USenglish)}%
+ \addlanguage {USenglish}{hyphen}{}{2}{3}%
+ }
+
+% OK, that's all the utilities defined; on with the real work:
+% First, re-instate \patterns:
+
+\let \patterns=\et@xpatterns
+
+% Define the language-handling commands
+
+\def \et@xlang {\csname newlanguage\endcsname}
+
+\def \uselanguage #1%
+ {\ifcsname lang@#1\endcsname
+ \language=\csname lang@#1\endcsname
+ \lefthyphenmin=\csname lhm@#1\endcsname
+ \righthyphenmin=\csname rhm@#1\endcsname
+ \ifdefined \uselanguage@hook % V1.0-1
+ \uselanguage@hook {#1}% % V1.0-1
+ \fi
+ \else
+ \et@xerr {language #1 undefined.}%
+ {You are trying to use a language which has not previously
+ been defined; remember that any language you want to use
+ will need to have been specified at the time the format
+ was created.%
+ }%
+ \fi
+ }
+
+\def \addlanguage #1#2#3#4#5% language patterns exceptions lhm rhm
+ {\expandafter \et@xlang \csname lang@#1\endcsname
+ \expandafter \chardef \csname lhm@#1\endcsname=#4 % V1.0-1
+ \expandafter \chardef \csname rhm@#1\endcsname=#5 % V1.0-1
+ \uselanguage {#1}%
+ \input #2
+ \if *#3*\else \input #3 \fi
+ \ifdefined \addlanguage@hook % V1.0-4
+ \addlanguage@hook {#1}% % V1.0-4
+ \fi
+ \edef \fmtversion {\fmtversion/#1}%
+ }
+
+% Decrement \count 19, because \newlanguage will increment it again
+
+\advance \count 19 by -1
+
+% We are about to try to process a user/site-specific file "language.def",
+% which establishes a Babel-like language selection environment. Since
+% there is always a risk of a spurious file of that name being found,
+% we look for an e-TeX header in the first line. If the file can be opened,
+% but doesn't have the right header, we interrogate the user as to whether
+% to use fallback mode; in this mode, we simply establish USenglish as the
+% sole language, with the et@x patterns, exceptions and left- and right-
+% hyphen minima for TeX. If we can't interrogate the user (e.g. not in
+% \errorstopmode), or if the user elects not to use fallback, we abort;
+% if the file can't be found/opened, we use fallback unconditionally.
+
+\newif \ifb@dresponse
+\newif \ifusef@llback
+
+\def \l@ngdefnfile {language.def}
+
+\etexhdrchk {file} {\l@ngdefnfile}
+\ifcase \etexstatus
+ \et@xwarn {unable to open file "\l@ngdefnfile";}%
+ \usef@llback % unable to open "language.def"
+\or
+ \et@xwarn {file "\l@ngdefnfile" has wrong header;\n
+ \ \ expected: "\et@xfilehdr"; found: "\et@xbuf";%
+ }%
+ \@sk {Use fallback?} {usef@llback} {y}%
+ \ifusef@llback
+ \usef@llback
+ \else
+ \input \l@ngdefnfile % use "language.def" after warning
+ \fi
+\else
+ \bgroup
+ \count@=128
+ \loop\ifnum\count@<256\relax
+ \lccode\count@=\count@\advance\count@\@ne
+ \repeat
+ \count@=0
+ \loop\ifnum\count@<32\relax
+ \lccode\count@=\count@\advance\count@\@ne
+ \repeat
+ \input \l@ngdefnfile % "language.def" open & valid
+
+ \egroup % the above empty line is needed to end the argument of \input
+\fi
+
+% All that was just to set up natural language handling...
+% The "real" work of "etex.src", however, is to augment the non-primitives
+% of Plain.TeX to incorporate e-TeX specific features, and to add new
+% non-primitives to simplify access to new e-TeX specific primitives.
+
+\message {Augmenting the Plain TeX definitions:}
+\message {\string \tracingall;}
+
+\def \tracingall
+ {\tracingonline=\@ne
+ \tracingcommands=\thr@@ % plain.tex has \tw@
+ \tracingstats=\tw@
+ \tracingpages=\@ne
+ \tracingoutput=\@ne
+ \tracinglostchars=\tw@ % plain.tex has \@ne
+ \tracingmacros=\tw@
+ \tracingparagraphs=\@ne
+ \tracingrestores=\@ne
+ \showboxbreadth=\maxdimen
+ \showboxdepth=\maxdimen
+ \errorstopmode
+ \tracinggroups=\@ne
+ \tracingifs=\@ne
+ \tracingscantokens=\@ne
+ \tracingnesting=\@ne
+ \tracingassigns=\tw@
+ }
+
+\message {Adding new e-TeX definitions:}
+
+\message {\string \eTeX, \string \epTeX, \string \eupTeX, }
+\def \eTeX {$\varepsilon$-\TeX} %%% the simple version, not suitable for maths;
+ %%% a more sophisticated one may find its way
+ %%% into "eptexdefs.lib" in due course.
+\def \epTeX {$\varepsilon$-p\TeX}
+\def \eupTeX {$\varepsilon$-up\TeX}
+
+\message {\string \loggingall,}
+\def \loggingall {\tracingall \tracingonline=\z@}
+
+\message {\string \tracingnone,}
+\def \tracingnone
+ {\tracingassigns=\z@
+ \tracingnesting=\z@
+ \tracingscantokens=\z@
+ \tracingifs=\z@
+ \tracinggroups=\z@
+ \showboxdepth=\thr@@
+ \showboxbreadth=5
+ \tracingrestores=\z@
+ \tracingparagraphs=\z@
+ \tracingmacros=\z@
+ \tracinglostchars=\@ne
+ \tracingoutput=\z@
+ \tracingpages=\z@
+ \tracingstats=\z@
+ \tracingcommands=\z@
+ \tracingonline=\z@
+ }
+
+\message {register allocation;}
+
+\newcount \et@xins % our insertion counter (\insc@unt is used differently)
+
+% We have to adjust the Plain TeX register allocation counts for our
+% slightly modified book-keeping:
+
+\advance \count 10 by 1 % \count 10=23 % allocates \count registers 23, 24, ...
+\advance \count 11 by 1 % \count 11=10 % allocates \dimen registers 10, 11, ...
+\advance \count 12 by 1 % \count 12=10 % allocates \skip registers 10, 11, ...
+\advance \count 13 by 1 % \count 13=10 % allocates \muskip registers 10, 11, ...
+\advance \count 14 by 1 % \count 14=10 % allocates \box registers 10, 11, ...
+\advance \count 15 by 1 % \count 15=10 % allocates \toks registers 10, 11, ...
+\advance \count 16 by 1 % \count 16=0 % allocates input streams 0, 1, ...
+\advance \count 17 by 1 % \count 17=0 % allocates output streams 0, 1, ...
+\advance \count 18 by 1 % \count 18=4 % allocates math families 4, 5, ...
+\advance \count 19 by 1 % \count 19=0 % allocates \language codes 0, 1, ...
+
+\et@xins=\insc@unt % \et@xins=255 % allocates insertions 254, 253, ...
+
+% We don't change the Plain TeX definitions of \newcount, etc., but the
+% \alloc@ macro doing the actual work is redefined.
+
+% When the normal register pool for \count, \dimen, \skip, \muskip,
+% \box, or \toks registers is exhausted, we switch to the extended pool.
+
+\def \alloc@ #1#2#3#4#5%
+ {\ifnum \count 1#1 < #4% make sure there's still room
+ \allocationnumber=\count 1#1
+ \global \advance \count 1#1 by \@ne
+ \global #3#5=\allocationnumber
+ \wlog {\string #5=\string #2\the \allocationnumber}%
+ \else \ifnum #1 < 6
+ \begingroup \escapechar=\m@ne
+ \expandafter \alloc@@ \expandafter {\string #2}#5%
+ \else
+ \errmessage {No room for a new #2}%
+ \fi
+ \fi
+ }
+
+% The \expandafter construction used here allows the generation of
+% \newcount and \globcount from #1=count. Moreover (and more important)
+% this construction avoids the appearance of \outer macros inside
+% macro definitions or conditionals.
+
+\def \alloc@@ #1#2%
+ {\endgroup % restore \escapechar
+ \message {Normal \csname#1\endcsname register pool exhausted,
+ switching to extended pool.}%
+ \global \expandafter
+ \let \csname new#1\expandafter \endcsname \csname glob#1\endcsname
+ \csname new#1\endcsname#2%
+ }
+
+% We do change the Plain TeX definition of \newinsert
+
+\outer \def \newinsert #1%make sure there's still room for ...
+ {\ch@ck 0 \et@xins \count % ... a \count, ...
+ {\ch@ck 1 \et@xins \dimen % ... \dimen, ...
+ {\ch@ck 2 \et@xins \skip % ... \skip, ...
+ {\ch@ck 4 \et@xins \box % ... and \box register
+ {\global \advance \et@xins by \m@ne
+ \unless
+ \ifnum \insc@unt < \et@xins
+ \global \insc@unt=\et@xins
+ \fi
+ \allocationnumber=\et@xins
+ \global \chardef #1=\allocationnumber
+ \wlog {\string #1=\string \insert \the \allocationnumber}%
+ }%
+ }%
+ }%
+ }%
+ }
+
+\def \ch@ck #1#2#3#4%
+ {\ifnum \count 1#1 < #2#4\else \errmessage {No room for a new #3}\fi}
+
+% And we define \reserveinserts, so that you can say \reserveinserts{17}
+% in order to reserve room for up to 17 additional insertion classes that will
+% not be taken away by \newcount, \newdimen, \newskip, or \newbox.
+
+\outer \def \reserveinserts#1%
+ {\global \insc@unt=\numexpr \et@xins \ifnum #1 > \z@ -#1\fi \relax}
+
+\message {extended register allocation;}
+
+% Now, we define \globcount, \globbox, etc., so that you can say
+% \globcount\foo and \foo will be defined (with \countdef) to be the
+% next count register from the vastly larger but somewhat less efficient
+% extended register pool. We also define \loccount, etc., but these
+% register definitions are local to the current group.
+
+\count 260=277 % globally allocates \count registers 277, 278, ...
+\count 261=\@cclvi % globally allocates \dimen registers 256, 257, ...
+\count 262=\@cclvi % globally allocates \skip registers 256, 257, ...
+\count 263=\@cclvi % globally allocates \muskip registers 256, 257, ...
+\count 264=\@cclvi % globally allocates \box registers 256, 257, ...
+\count 265=\@cclvi % globally allocates \toks registers 256, 257, ...
+\count 266=\@ne % globally allocates \marks classes 1, 2, ...
+
+\def \et@xmaxregs {32768}
+
+\count 270=\et@xmaxregs % locally allocates \count registers 32767, 32766, ...
+\count 271=\et@xmaxregs % ditto for \dimen registers
+\count 272=\et@xmaxregs % ditto for \skip registers
+\count 273=\et@xmaxregs % ditto for \muskip registers
+\count 274=\et@xmaxregs % ditto for \box registers
+\count 275=\et@xmaxregs % ditto for \toks registers
+\count 276=\et@xmaxregs % ditto for \marks classes
+
+% \count registers 256-259 and 267-269 are not (yet) used
+
+\outer \def \globcount {\et@xglob 0 \count \countdef}
+ \def \loccount {\et@xloc 0 \count \countdef}
+\outer \def \globdimen {\et@xglob 1 \dimen \dimendef}
+ \def \locdimen {\et@xloc 1 \dimen \dimendef}
+\outer \def \globskip {\et@xglob 2 \skip \skipdef}
+ \def \locskip {\et@xloc 2 \skip \skipdef}
+\outer \def \globmuskip {\et@xglob 3 \muskip \muskipdef}
+ \def \locmuskip {\et@xloc 3 \muskip \muskipdef}
+\outer \def \globbox {\et@xglob 4 \box \mathchardef}
+ \def \locbox {\et@xloc 4 \box \mathchardef}
+\outer \def \globtoks {\et@xglob 5 \toks \toksdef}
+ \def \loctoks {\et@xloc 5 \toks \toksdef}
+\outer \def \globmarks {\et@xglob 6 \marks \mathchardef}
+ \def \locmarks {\et@xloc 6 \marks \mathchardef}
+
+\let\newmark=\globmarks %%% 2.0;14
+\let\newmarks=\globmarks
+
+\def \et@xglob #1#2#3#4%
+ {\et@xchk #1#2% make sure there's still room
+ {\allocationnumber=\count 26#1
+ \global \advance \count 26#1 by \@ne
+ \global #3#4=\allocationnumber
+ \wlog {\string #4=\string #2\the \allocationnumber}%
+ }%
+ }
+
+\def \et@xloc#1#2#3#4%
+ {\et@xchk #1#2% make sure there's still room
+ {\advance \count 27#1 by \m@ne
+ \allocationnumber=\count 27#1
+ #3#4=\allocationnumber
+ \wlog {\string #4=\string #2\the \allocationnumber \space (local)}%
+ }%
+ }
+
+\def \et@xchk #1#2#3%
+ {\ifnum \count 26#1 < \count 27#1
+ #3%
+ \else
+ \errmessage {No room for a new #2}%
+ \fi
+ }
+
+% Next we define \globcountblk, \loccountblk, etc., so that one can
+% write \globcountblk\foo{17} and \foo will be defined (with \mathchardef)
+% as the first (the zeroth?) of a block of 17 consecutive registers.
+% Thus the user is intended to reference elements <\foo+0> to <\foo+n-1>,
+% where n is the length of the block allocated.
+
+\outer \def \globcountblk {\et@xgblk 0 \count}
+ \def \loccountblk {\et@xlblk 0 \count}
+\outer \def \globdimenblk {\et@xgblk 1 \dimen}
+ \def \locdimenblk {\et@xlblk 1 \dimen}
+\outer \def \globskipblk {\et@xgblk 2 \skip}
+ \def \locskipblk {\et@xlblk 2 \skip}
+\outer \def \globmuskipblk {\et@xgblk 3 \muskip}
+ \def \locmuskipblk {\et@xlblk 3 \muskip}
+\outer \def \globboxblk {\et@xgblk 4 \box}
+ \def \locboxblk {\et@xlblk 4 \box}
+\outer \def \globtoksblk {\et@xgblk 5 \toks}
+ \def \loctoksblk {\et@xlblk 5 \toks}
+\outer \def \globmarksblk {\et@xgblk 6 \marks}
+ \def \locmarksblk {\et@xlblk 6 \marks}
+
+% And, both to provide a higher-level interface to the block allocation
+% scheme, and to demonstrate possible applications of the new \...expr
+% primitives, we also define \globcountvector and \loccountvector (etc)
+% which allow the user to access elements with embedded arithmetic, as in
+
+% \globcountvector \foo {12}
+% \foo {\count 0 + 3} = \foo {\count 1 * 2}
+
+\outer \def \globcountvector {\et@xgvec 0 \count}
+ \def \loccountvector {\et@xlvec 0 \count}
+\outer \def \globdimenvector {\et@xgvec 1 \dimen}
+ \def \locdimenvector {\et@xlvec 1 \dimen}
+\outer \def \globskipvector {\et@xgvec 2 \skip}
+ \def \locskipvector {\et@xlvec 2 \skip}
+\outer \def \globmuskipvector {\et@xgvec 3 \muskip}
+ \def \locmuskipvector {\et@xlvec 3 \muskip}
+\outer \def \globboxvector {\et@xgvec 4 \box}
+ \def \locboxvector {\et@xlvec 4 \box}
+\outer \def \globtoksvector {\et@xgvec 5 \toks}
+ \def \loctoksvector {\et@xlvec 5 \toks}
+\outer \def \globmarksvector {\et@xgvec 6 \marks}
+ \def \locmarksvector {\et@xlvec 6 \marks}
+
+\def \et@xgblk #1#2#3#4%
+ {\et@xchkblk #1#2{#4}% make sure there's still room
+ {\allocationnumber=\count 26#1
+ \global \advance \count 26#1 by #4%
+ \global \mathchardef #3=\allocationnumber
+ \wlog {\string #3=\string #2blk{\number #4} at \the \allocationnumber}%
+ }%
+ }
+
+\def \et@xlblk #1#2#3#4%
+ {\et@xchkblk #1#2{#4}% make sure there's still room
+ {\advance \count 27#1 by -#4%
+ \allocationnumber=\count 27#1
+ \mathchardef #3=\allocationnumber
+ \wlog {\string #3=\string #2blk{\number #4}
+ at \the \allocationnumber \space (local)%
+ }%
+ }%
+ }
+
+\begingroup
+\catcode `\# = 12
+\gdef \et@xhash {#}
+\endgroup
+
+\def \et@xgvec #1#2#3#4%
+ {\et@xchkblk #1#2{#4}% make sure there's still room
+ {\allocationnumber=\count 26#1
+ \global \advance \count 26#1 by #4%
+ \ifx #2\box
+ \def \2{}%
+ \else \ifx #2\marks
+ \def \2{}%
+ \else
+ \def \2{\string #2}%
+ \fi
+ \fi
+ \xdef #3##1{\2 \noexpand \numexpr \the \allocationnumber+##1\relax}%
+ \wlog {\string #3 {\et@xhash 1} =
+ \2 {\the \allocationnumber+\et@xhash 1} (global #2 vector)%
+ }%
+ }%
+ }
+
+\def \et@xlvec #1#2#3#4%
+ {\et@xchkblk #1#2{#4}% make sure there's still room
+ {\advance \count 27#1 by -#4%
+ \allocationnumber=\count27#1
+ \mathchardef #3=\allocationnumber
+ \ifx #2\box
+ \def \2{}%
+ \else \ifx #2\marks
+ \def \2{}%
+ \else
+ \def \2{\string #2}%
+ \fi
+ \fi
+ \edef #3##1{\2 \noexpand \numexpr \the \allocationnumber+##1\relax}%
+ \wlog {\string #3 {\et@xhash 1} =
+ \2 {\the \allocationnumber+\et@xhash 1} (local #2 vector)%
+ }%
+ }%
+ }
+
+\def \et@xchkblk #1#2#3#4%
+ {\ifnum #3 < \z@
+ \errmessage {Negative register block size \number #3}%
+ \else \ifnum \numexpr \count 26#1+#3 > \count 27#1
+ \errmessage {No room for new #2block of size \number#3}%
+ \else
+ #4%
+ \fi
+ \fi
+ }
+
+% In an attempt to reduce the overheads of e-TeX, we recycle all possible
+% resources, including (as a penultimate step) the recycler itself...
+% The user can circumvent (or force) this during format creation,
+% by \letting \ifrecycle=\iffalse (or \iftrue, to force it).
+
+% As this file has grown by accretion, it is possible that we are no
+% longer recycling all the resources we could; this will be investigated.
+
+\def \mayber@cycle {\expandafter \ifrecycle}
+\def \forcer@cycle {\expandafter \iftrue}
+
+\ifdefined \ifrecycle
+ \mayber@cycle
+\else
+ \forcer@cycle
+\fi
+
+% There's a concealed \if... lurking here, which explains the
+% strange indentation of the code that follows (V1.0-1)
+
+ \def \r@cycle #1%
+ {\ifdefined #1
+ \message {\string #1,}\let #1=\und@fined
+ \else
+ \message {\string #1 (not defined),}
+ \fi
+ }
+ {\newlinechar=`\! \message {!Recycling:}}
+
+ \r@cycle \addlanguage
+ \r@cycle \@nswer
+ \r@cycle \@sk
+ \r@cycle \b@dresponsetrue
+ \r@cycle \b@dresponsefalse
+ \r@cycle \ch@ckforyn
+ \r@cycle \mayber@cycle
+ \r@cycle \et@xabort
+ \r@cycle \et@xbuf
+ \r@cycle \et@xfmtsrc
+ \r@cycle \et@xfilehdr
+ \r@cycle \et@xinf
+ \r@cycle \et@xpatterns
+% \r@cycle \ifb@dresponse
+% \r@cycle \ifusef@llback
+ \r@cycle \l@ngdefnfile
+ \r@cycle \n@xt
+ \r@cycle \p@rse
+ \r@cycle \pr@mpt
+ \r@cycle \pr@mptloop
+ \r@cycle \forcer@cycle
+ \r@cycle \usef@llback
+ \r@cycle \usef@llbacktrue
+ \r@cycle \usef@llbackfalse
+
+% The following are retained, since they may be needed by user code; with a few
+% (regrettable) exceptions, all of these are given the \etex or \et@x prefix,
+% to reduce as far as possible the risk of them clashing with other used-defined
+% names.
+
+% The e-TeX team are willing to change the names of the remaining, at-risk,
+% control sequences if it is demonstrated that the current names cause problems
+% or difficulties.
+
+ \def \r@tain #1%
+ {\ifdefined #1
+ \message {\string #1,}
+ \else
+ \message {\string #1 (not defined),}
+ \fi
+ }
+ {\newlinechar=`\! \message {!Retaining:}}
+
+ \r@tain \et@xerr
+ \r@tain \et@xinput
+ \r@tain \et@xlibhdr
+ \r@tain \et@xmsg
+ \r@tain \et@xtoks
+ \r@tain \et@xwarn
+ \r@tain \et@xl@@d
+ \r@tain \et@xl@ad
+ \r@tain \et@xload
+ \r@tain \et@xlang
+ \r@tain \et@xhash
+ \r@tain \eTeX
+ \r@tain \epTeX
+ \r@tain \eupTeX
+ \r@tain \etexhdrchk
+% \r@tain \endmodule
+ \r@tain \etexstatus
+ \r@tain \module
+ \r@tain \uselanguage
+
+ \r@cycle \r@tain
+ \r@cycle \r@cycle
+
+\fi
+
+% And finally re-catcode commercial-at
+
+\catcode `\@=12
+
+\dump
+\endinput
+
diff --git a/Master/texmf-dist/tex/uptex/uptex-base/ukinsoku.tex b/Master/texmf-dist/tex/uptex/uptex-base/ukinsoku.tex
new file mode 100644
index 00000000000..1276674a409
--- /dev/null
+++ b/Master/texmf-dist/tex/uptex/uptex-base/ukinsoku.tex
@@ -0,0 +1,392 @@
+%%
+%% 行頭、行末禁則パラメータ
+%%
+%% 1byte characters
+\prebreakpenalty`!=10000
+\prebreakpenalty`"=10000
+\postbreakpenalty`\#=500
+\postbreakpenalty`\$=500
+\postbreakpenalty`\%=500
+\postbreakpenalty`\&=500
+\postbreakpenalty`\`=10000
+\prebreakpenalty`'=10000
+\prebreakpenalty`)=10000
+\postbreakpenalty`(=10000
+\prebreakpenalty`*=500
+\prebreakpenalty`+=500
+\prebreakpenalty`-=10000
+\prebreakpenalty`.=10000
+\prebreakpenalty`,=10000
+\prebreakpenalty`/=500
+\prebreakpenalty`;=10000
+\prebreakpenalty`?=10000
+\prebreakpenalty`:=10000
+\prebreakpenalty`]=10000
+\postbreakpenalty`[=10000
+%%全角文字
+\prebreakpenalty`、=10000
+\prebreakpenalty`。=10000
+\prebreakpenalty`,=10000
+\prebreakpenalty`.=10000
+\prebreakpenalty`・=10000
+\prebreakpenalty`:=10000
+\prebreakpenalty`;=10000
+\prebreakpenalty`?=10000
+\prebreakpenalty`!=10000
+\prebreakpenalty`゛=10000%\jis"212B
+\prebreakpenalty`゜=10000%\jis"212C
+\prebreakpenalty`´=10000%\jis"212D
+\postbreakpenalty``=10000%\jis"212E
+\prebreakpenalty`々=10000%\jis"2139
+\prebreakpenalty`…=250%\jis"2144
+\prebreakpenalty`‥=250%\jis"2145
+\postbreakpenalty`‘=10000%\jis"2146
+\prebreakpenalty`’=10000%\jis"2147
+\postbreakpenalty`“=10000%\jis"2148
+\prebreakpenalty`”=10000%\jis"2149
+\prebreakpenalty`)=10000
+\postbreakpenalty`(=10000
+\prebreakpenalty`}=10000
+\postbreakpenalty`{=10000
+\prebreakpenalty`]=10000
+\postbreakpenalty`[=10000
+%%\postbreakpenalty`‘=10000
+%%\prebreakpenalty`’=10000
+\postbreakpenalty`〔=10000%\jis"214C
+\prebreakpenalty`〕=10000%\jis"214D
+\postbreakpenalty`〈=10000%\jis"2152
+\prebreakpenalty`〉=10000%\jis"2153
+\postbreakpenalty`《=10000%\jis"2154
+\prebreakpenalty`》=10000%\jis"2155
+\postbreakpenalty`「=10000%\jis"2156
+\prebreakpenalty`」=10000%\jis"2157
+\postbreakpenalty`『=10000%\jis"2158
+\prebreakpenalty`』=10000%\jis"2159
+\postbreakpenalty`【=10000%\jis"215A
+\prebreakpenalty`】=10000%\jis"215B
+\prebreakpenalty`ー=10000
+\prebreakpenalty`+=200
+\prebreakpenalty`−=200% U+2212 MINUS SIGN
+\prebreakpenalty`-=200% U+FF0D FULLWIDTH HYPHEN-MINUS
+\prebreakpenalty`==200
+\postbreakpenalty`#=200
+\postbreakpenalty`$=200
+\postbreakpenalty`%=200
+\postbreakpenalty`&=200
+\prebreakpenalty`ぁ=150
+\prebreakpenalty`ぃ=150
+\prebreakpenalty`ぅ=150
+\prebreakpenalty`ぇ=150
+\prebreakpenalty`ぉ=150
+\prebreakpenalty`っ=150
+\prebreakpenalty`ゃ=150
+\prebreakpenalty`ゅ=150
+\prebreakpenalty`ょ=150
+\prebreakpenalty`ゎ=150%\jis"246E
+\prebreakpenalty`ァ=150
+\prebreakpenalty`ィ=150
+\prebreakpenalty`ゥ=150
+\prebreakpenalty`ェ=150
+\prebreakpenalty`ォ=150
+\prebreakpenalty`ッ=150
+\prebreakpenalty`ャ=150
+\prebreakpenalty`ュ=150
+\prebreakpenalty`ョ=150
+\prebreakpenalty`ヮ=150%\jis"256E
+\prebreakpenalty`ヵ=150%\jis"2575
+\prebreakpenalty`ヶ=150%\jis"2576
+%% kinsoku JIS X 0208 additional
+\prebreakpenalty`ヽ=10000
+\prebreakpenalty`ヾ=10000
+\prebreakpenalty`ゝ=10000
+\prebreakpenalty`ゞ=10000
+%%
+%% kinsoku JIS X 0213
+%%
+\prebreakpenalty`〳=10000
+\prebreakpenalty`〴=10000
+\prebreakpenalty`〵=10000
+\prebreakpenalty`〻=10000
+\postbreakpenalty`⦅=10000
+\prebreakpenalty`⦆=10000
+\postbreakpenalty`⦅=10000
+\prebreakpenalty`⦆=10000
+\postbreakpenalty`〘=10000
+\prebreakpenalty`〙=10000
+\postbreakpenalty`〖=10000
+\prebreakpenalty`〗=10000
+\postbreakpenalty`«=10000
+\prebreakpenalty`»=10000
+\postbreakpenalty`〝=10000
+\prebreakpenalty`〟=10000
+\prebreakpenalty`‼=10000
+\prebreakpenalty`⁇=10000
+\prebreakpenalty`⁈=10000
+\prebreakpenalty`⁉=10000
+\postbreakpenalty`¡=10000
+\postbreakpenalty`¿=10000
+\prebreakpenalty`ː=10000
+\prebreakpenalty`ª=10000
+\prebreakpenalty`º=10000
+\prebreakpenalty`¹=10000
+\prebreakpenalty`²=10000
+\prebreakpenalty`³=10000
+\postbreakpenalty`€=10000
+\prebreakpenalty`ゕ=150
+\prebreakpenalty`ゖ=150
+\prebreakpenalty`ㇰ=150
+\prebreakpenalty`ㇱ=150
+\prebreakpenalty`ㇲ=150
+\prebreakpenalty`ㇳ=150
+\prebreakpenalty`ㇴ=150
+\prebreakpenalty`ㇵ=150
+\prebreakpenalty`ㇶ=150
+\prebreakpenalty`ㇷ=150
+\prebreakpenalty`ㇸ=150
+\prebreakpenalty`ㇹ=150
+%%\prebreakpenalty`ㇷ゚=150
+\prebreakpenalty`ㇺ=150
+\prebreakpenalty`ㇻ=150
+\prebreakpenalty`ㇼ=150
+\prebreakpenalty`ㇽ=150
+\prebreakpenalty`ㇾ=150
+\prebreakpenalty`ㇿ=150
+%%
+%% kinsoku JIS X 0212
+%%
+%%\postbreakpenalty`¡=10000
+%%\postbreakpenalty`¿=10000
+%%\prebreakpenalty`º=10000
+%%\prebreakpenalty`ª=10000
+\prebreakpenalty`™=10000
+%%
+%% kinsoku 半角片仮名
+%%
+\prebreakpenalty`。=10000
+\prebreakpenalty`、=10000
+\prebreakpenalty`゙=10000
+\prebreakpenalty`゚=10000
+\prebreakpenalty`」=10000
+\postbreakpenalty`「=10000
+%%
+%% xspcode
+\xspcode`(=1
+\xspcode`)=2
+\xspcode`[=1
+\xspcode`]=2
+\xspcode``=1
+\xspcode`'=2
+\xspcode`;=2
+\xspcode`,=2
+\xspcode`.=2
+%% for 8bit Latin
+\xspcode"80=3
+\xspcode"81=3
+\xspcode"82=3
+\xspcode"83=3
+\xspcode"84=3
+\xspcode"85=3
+\xspcode"86=3
+\xspcode"87=3
+\xspcode"88=3
+\xspcode"89=3
+\xspcode"8A=3
+\xspcode"8B=3
+\xspcode"8C=3
+\xspcode"8D=3
+\xspcode"8E=3
+\xspcode"8F=3
+\xspcode"90=3
+\xspcode"91=3
+\xspcode"92=3
+\xspcode"93=3
+\xspcode"94=3
+\xspcode"95=3
+\xspcode"96=3
+\xspcode"97=3
+\xspcode"98=3
+\xspcode"99=3
+\xspcode"9A=3
+\xspcode"9B=3
+\xspcode"9C=3
+\xspcode"9D=3
+\xspcode"9E=3
+\xspcode"9F=3
+\xspcode"A0=3
+\xspcode"A1=3
+\xspcode"A2=3
+\xspcode"A3=3
+\xspcode"A4=3
+\xspcode"A5=3
+\xspcode"A6=3
+\xspcode"A7=3
+\xspcode"A8=3
+\xspcode"A9=3
+\xspcode"AA=3
+\xspcode"AB=3
+\xspcode"AC=3
+\xspcode"AD=3
+\xspcode"AE=3
+\xspcode"AF=3
+\xspcode"B0=3
+\xspcode"B1=3
+\xspcode"B2=3
+\xspcode"B3=3
+\xspcode"B4=3
+\xspcode"B5=3
+\xspcode"B6=3
+\xspcode"B7=3
+\xspcode"B8=3
+\xspcode"B9=3
+\xspcode"BA=3
+\xspcode"BB=3
+\xspcode"BC=3
+\xspcode"BD=3
+\xspcode"BE=3
+\xspcode"BF=3
+\xspcode"C0=3
+\xspcode"C1=3
+\xspcode"C2=3
+\xspcode"C3=3
+\xspcode"C4=3
+\xspcode"C5=3
+\xspcode"C6=3
+\xspcode"C7=3
+\xspcode"C8=3
+\xspcode"C9=3
+\xspcode"CA=3
+\xspcode"CB=3
+\xspcode"CC=3
+\xspcode"CD=3
+\xspcode"CE=3
+\xspcode"CF=3
+\xspcode"D0=3
+\xspcode"D1=3
+\xspcode"D2=3
+\xspcode"D3=3
+\xspcode"D4=3
+\xspcode"D5=3
+\xspcode"D6=3
+\xspcode"D7=3
+\xspcode"D8=3
+\xspcode"D9=3
+\xspcode"DA=3
+\xspcode"DB=3
+\xspcode"DC=3
+\xspcode"DD=3
+\xspcode"DE=3
+\xspcode"DF=3
+\xspcode"E0=3
+\xspcode"E1=3
+\xspcode"E2=3
+\xspcode"E3=3
+\xspcode"E4=3
+\xspcode"E5=3
+\xspcode"E6=3
+\xspcode"E7=3
+\xspcode"E8=3
+\xspcode"E9=3
+\xspcode"EA=3
+\xspcode"EB=3
+\xspcode"EC=3
+\xspcode"ED=3
+\xspcode"EE=3
+\xspcode"EF=3
+\xspcode"F0=3
+\xspcode"F1=3
+\xspcode"F2=3
+\xspcode"F3=3
+\xspcode"F4=3
+\xspcode"F5=3
+\xspcode"F6=3
+\xspcode"F7=3
+\xspcode"F8=3
+\xspcode"F9=3
+\xspcode"FA=3
+\xspcode"FB=3
+\xspcode"FC=3
+\xspcode"FD=3
+\xspcode"FE=3
+\xspcode"FF=3
+%%
+%% inhibitxspcode
+\inhibitxspcode`、=1
+\inhibitxspcode`。=1
+\inhibitxspcode`,=1
+\inhibitxspcode`.=1
+\inhibitxspcode`;=1
+\inhibitxspcode`?=1
+\inhibitxspcode`)=1
+\inhibitxspcode`(=2
+\inhibitxspcode`]=1
+\inhibitxspcode`[=2
+\inhibitxspcode`}=1
+\inhibitxspcode`{=2
+\inhibitxspcode`‘=2
+\inhibitxspcode`’=1
+\inhibitxspcode`“=2
+\inhibitxspcode`”=1
+\inhibitxspcode`〔=2
+\inhibitxspcode`〕=1
+\inhibitxspcode`〈=2
+\inhibitxspcode`〉=1
+\inhibitxspcode`《=2
+\inhibitxspcode`》=1
+\inhibitxspcode`「=2
+\inhibitxspcode`」=1
+\inhibitxspcode`『=2
+\inhibitxspcode`』=1
+\inhibitxspcode`【=2
+\inhibitxspcode`】=1
+\inhibitxspcode`—=0% U+2014 EM DASH
+\inhibitxspcode`―=0% U+2015 HORIZONTAL BAR
+\inhibitxspcode`〜=0% U+301C WAVE DASH
+\inhibitxspcode`~=0% U+FF5E FULLWIDTH TILDE
+\inhibitxspcode`…=0
+\inhibitxspcode`¥=0% U+00A5 YEN SIGN
+\inhibitxspcode`¥=0% U+FFE5 FULLWIDTH YEN SIGN
+\inhibitxspcode`°=1
+\inhibitxspcode`′=1
+\inhibitxspcode`″=1
+%%
+%% inhibitxspcode JIS X 0213
+%%
+\inhibitxspcode`⦅=2
+\inhibitxspcode`⦆=1
+\inhibitxspcode`⦅=2
+\inhibitxspcode`⦆=1
+\inhibitxspcode`〘=2
+\inhibitxspcode`〙=1
+\inhibitxspcode`〖=2
+\inhibitxspcode`〗=1
+\inhibitxspcode`«=2
+\inhibitxspcode`»=1
+\inhibitxspcode`〝=2
+\inhibitxspcode`〟=1
+\inhibitxspcode`‼=1
+\inhibitxspcode`⁇=1
+\inhibitxspcode`⁈=1
+\inhibitxspcode`⁉=1
+\inhibitxspcode`¡=2
+\inhibitxspcode`¿=2
+\inhibitxspcode`ª=1
+\inhibitxspcode`º=1
+\inhibitxspcode`¹=1
+\inhibitxspcode`²=1
+\inhibitxspcode`³=1
+\inhibitxspcode`€=2
+%%
+%% inhibitxspcode JIS X 0212
+%%
+%%\inhibitxspcode`¡=1
+%%\inhibitxspcode`¿=1
+%%\inhibitxspcode`º=1
+%%\inhibitxspcode`ª=1
+\inhibitxspcode`™=1
+%%
+%% inhibitxspcode 半角片仮名
+%%
+\inhibitxspcode`。=1
+\inhibitxspcode`、=1
+\inhibitxspcode`「=2
+\inhibitxspcode`」=1
diff --git a/Master/texmf-dist/tex/uptex/uptex-base/uptex.ini b/Master/texmf-dist/tex/uptex/uptex-base/uptex.ini
new file mode 100644
index 00000000000..121e41524a8
--- /dev/null
+++ b/Master/texmf-dist/tex/uptex/uptex-base/uptex.ini
@@ -0,0 +1,4 @@
+%% for upTeX (Unicode pTeX)
+\input uptex.tex
+\dump
+\endinput
diff --git a/Master/texmf-dist/tex/uptex/uptex-base/uptex.tex b/Master/texmf-dist/tex/uptex/uptex-base/uptex.tex
new file mode 100644
index 00000000000..eff77729463
--- /dev/null
+++ b/Master/texmf-dist/tex/uptex/uptex-base/uptex.tex
@@ -0,0 +1,57 @@
+% This is the upTeX format
+%
+% pTeX format file:
+% (C)copyright ASCII corporation,1987,1995,1997
+% and modified for upTeX
+%
+\input plain
+\catcode`@=11 % at signs are no longer letters
+\def\footnote#1{\let\@sf\empty % parameter #2 (the text) is read later
+ \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
+ \nobreak#1\@sf\vfootnote{#1}}
+\catcode`@=12 % at signs are no longer letters
+%
+\font\tenmin=upjisr-h % mincho(KANJI)
+\font\sevenmin=upjisr-h at 7pt
+\font\fivemin=upjisr-h at 5pt
+%
+\font\tengt=upjisg-h % ugothic(KANJI)
+\font\sevengt=upjisg-h at 7pt
+\font\fivegt=upjisg-h at 5pt
+%
+\font\tentmin=upjisr-v % mincho(KANJI,tate)
+\font\seventmin=upjisr-v at 7pt
+\font\fivetmin=upjisr-v at 5pt
+%
+\font\tentgt=upjisg-v % gothic(KANJI,tate)
+\font\seventgt=upjisg-v at 7pt
+\font\fivetgt=upjisg-v at 5pt
+%
+\newfam\minfam % \min is family 8
+\newfam\gtfam % \gt is family 9
+\newfam\tminfam % \tmin is family 10
+\newfam\tgtfam % \tgt is family 11
+%
+\def\mc{\iftdir\fam\tminfam\tentmin\else\fam\minfam\tenmin\fi}%
+\textfont\minfam=\tenmin\scriptfont\minfam=\sevenmin%
+\scriptscriptfont\minfam=\fivemin
+\textfont\tminfam=\tentmin\scriptfont\tminfam=\seventmin%
+\scriptscriptfont\tminfam=\fivetmin
+%
+\def\gt{\iftdir\fam\tgtfam\tentgt\else\fam\gtfam\tengt\fi}%
+\textfont\gtfam=\tengt\scriptfont\gtfam=\sevengt%
+\scriptscriptfont\gtfam=\fivegt
+\textfont\tgtfam=\tentgt\scriptfont\tgtfam=\seventgt%
+\scriptscriptfont\tgtfam=\fivetgt
+%
+\input ukinsoku
+\mc % select mincho font
+\kanjiskip=0pt plus .4pt minus .4pt
+%\xkanjiskip=2.5pt plus 1pt minus 1pt
+\xkanjiskip=.25zw plus 1pt minus 1pt
+\autospacing\autoxspacing
+\jcharwidowpenalty=500
+%
+% identifies the current format
+\def\fmtname{uptex}
+\def\fmtversion{3.14159 p1.0b_u00}
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 0d3c72d8bea..0b6b74319c3 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -600,7 +600,7 @@ my @TLP_working = qw(
units unitsdef universa universalis
unravel unswcover
uothesis uowthesis uowthesistitlepage upca upmethodology upquote
- uptex-fonts
+ uptex-base uptex-fonts
uri url urlbst urcls urwchancal usebib ushort uspatent
ut-thesis utf8mex uwmslide uwthesis
vak vancouver variations varindex varisize
diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds
index cbff0b4f8af..608eef57921 100755
--- a/Master/tlpkg/libexec/ctan2tds
+++ b/Master/tlpkg/libexec/ctan2tds
@@ -1400,6 +1400,7 @@ $standarddest = "texmf-dist";
'textmerg', 'generic',
'tugboat-plain', 'plain',
'ulem', 'generic',
+ 'uptex-base', 'uptex',
'utf8mex', 'mex',
'variations', 'generic',
'vaucanson-g', 'generic',
@@ -1762,6 +1763,7 @@ $standardtex = '(\.(.bx|4ht|cls|clo|cmap|code\.tex|def|fd|fontspec|ldf|sty)'
'undolabl', '\.sty|[^c]\.cfg', # omit ltxdoc.cfg, would be system-wide
'universa', '\.fd|uni\.sty', # not unidoc.sty
'upca', '^upca\.tex',
+ 'uptex-base', '\.(ini|src|tex)$',
'url', '^[^m].*\.sty', # not miscdoc.sty
'utf8mex', '^utf8.*\.(ini|tex)',
'variations', '^variations\.tex|' . $standardtex, # not docvariations.tex
@@ -2013,6 +2015,7 @@ $standardtex = '(\.(.bx|4ht|cls|clo|cmap|code\.tex|def|fd|fontspec|ldf|sty)'
'txfontsb', 'fonts',
'ulem', 'generic',
'universa', 'fonts',
+ 'uptex-base', 'uptex',
'utf8mex', 'mex',
'vancouver', 'bibtex',
'variations', 'generic',
diff --git a/Master/tlpkg/tlpsrc/collection-langjapanese.tlpsrc b/Master/tlpkg/tlpsrc/collection-langjapanese.tlpsrc
index c3b93670b68..d12cd4ee2b1 100644
--- a/Master/tlpkg/tlpsrc/collection-langjapanese.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-langjapanese.tlpsrc
@@ -26,6 +26,7 @@ depend pxcjkcat
depend pxjahyper
depend pxrubrica
depend uptex
+depend uptex-base
depend uptex-fonts
depend wadalab
depend zxjafbfont
diff --git a/Master/tlpkg/tlpsrc/ptex.tlpsrc b/Master/tlpkg/tlpsrc/ptex.tlpsrc
index 47d04ec0011..ff04a9a404e 100644
--- a/Master/tlpkg/tlpsrc/ptex.tlpsrc
+++ b/Master/tlpkg/tlpsrc/ptex.tlpsrc
@@ -48,10 +48,10 @@ srcpattern +d texmf-dist/source/platex/base
docpattern +f texmf-dist/doc/man/man1/mendex.*
-# pbibtex-base exceptions:
+# pbibtex-base excludes:
docpattern +!d texmf-dist/doc/ptex/pbibtex
-# ptex-fonts exceptions:
+# ptex-fonts excludes:
runpattern +!d texmf-dist/fonts/tfm/ptex
runpattern +!d texmf-dist/fonts/vf/ptex
runpattern +!d texmf-dist/fonts/source/ptex
diff --git a/Master/tlpkg/tlpsrc/uptex-base.tlpsrc b/Master/tlpkg/tlpsrc/uptex-base.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/uptex-base.tlpsrc
diff --git a/Master/tlpkg/tlpsrc/uptex.tlpsrc b/Master/tlpkg/tlpsrc/uptex.tlpsrc
index 723ca258582..9051ea512d5 100644
--- a/Master/tlpkg/tlpsrc/uptex.tlpsrc
+++ b/Master/tlpkg/tlpsrc/uptex.tlpsrc
@@ -6,6 +6,7 @@ depend japanese
depend japanese-otf
depend latex
depend ptex
+depend uptex-base
depend uptex-fonts
tlpsetvar fmtcomm cm,hyphen-base,uptex
@@ -36,17 +37,13 @@ binpattern f bin/${ARCH}/wovp2ovf
# not built now
#binpattern f bin/${ARCH}/upmetapost
#
-runpattern d texmf-dist/tex/uptex/base
-runpattern d texmf-dist/tex/uptex/config
runpattern d texmf-dist/tex/uplatex/base
runpattern d texmf-dist/tex/uplatex/config
#
srcpattern +d texmf-dist/source/uplatex/base
-srcpattern +d texmf-dist/source/fonts/uptex
#
docpattern +d texmf-dist/doc/uplatex/base
docpattern +d texmf-dist/doc/upmendex
-docpattern +d texmf-dist/doc/uptex/base
# uptex-fonts excludes:
runpattern +!d texmf-dist/fonts/tfm/uptex