diff options
author | Karl Berry <karl@freefriends.org> | 2016-05-09 18:21:27 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-05-09 18:21:27 +0000 |
commit | 78e9da6f00a5c3065051979aab27b369bf610733 (patch) | |
tree | 0fac200accd9ab064c23228c0605cfde34550901 /Master/texmf-dist/tex/uptex | |
parent | 9a12fed1adede2b0b650b82ba663f02f6ffb9116 (diff) |
uptex-base split from uptex (1may16)
git-svn-id: svn://tug.org/texlive/trunk@40979 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/uptex')
-rw-r--r-- | Master/texmf-dist/tex/uptex/uptex-base/euptex.ini | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/uptex/uptex-base/euptex.src | 774 | ||||
-rw-r--r-- | Master/texmf-dist/tex/uptex/uptex-base/ukinsoku.tex | 392 | ||||
-rw-r--r-- | Master/texmf-dist/tex/uptex/uptex-base/uptex.ini | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/uptex/uptex-base/uptex.tex | 57 |
5 files changed, 1231 insertions, 0 deletions
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} |