summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-10-20 15:39:20 +0000
committerKarl Berry <karl@freefriends.org>2006-10-20 15:39:20 +0000
commit67dc1904f7572d9afe9dc9e0f994b5eab848cb58 (patch)
tree5f8aec0be776ed634fb900b01689054215b720ac
parenta9c9e1bbd6917a053cb851ec0633c8737a661fba (diff)
new plain package hyplain (18oct06)
git-svn-id: svn://tug.org/texlive/trunk@2356 c570f23f-e606-0410-a88d-b1316a301751
-rwxr-xr-xBuild/cdbuild/ctan2tds.pl3
-rwxr-xr-xBuild/tools/tpm-ctan-check2
-rw-r--r--Master/texmf-dist/doc/plain/hyplain/README11
-rw-r--r--Master/texmf-dist/doc/plain/hyplain/hydoc.pdfbin0 -> 51088 bytes
-rw-r--r--Master/texmf-dist/doc/plain/hyplain/hydoc.tex191
-rw-r--r--Master/texmf-dist/tex/plain/hyplain/hylang.tex57
-rw-r--r--Master/texmf-dist/tex/plain/hyplain/hypdfplain.ini9
-rw-r--r--Master/texmf-dist/tex/plain/hyplain/hyplain.tex39
-rw-r--r--Master/texmf-dist/tex/plain/hyplain/hyrules.tex112
-rw-r--r--Master/texmf-dist/tpm/hyplain.tpm29
-rw-r--r--Master/texmf/lists/hyplain11
-rw-r--r--Master/texmf/tpm/collection-plainextra.tpm1
12 files changed, 464 insertions, 1 deletions
diff --git a/Build/cdbuild/ctan2tds.pl b/Build/cdbuild/ctan2tds.pl
index a74631f11ae..03f51977e01 100755
--- a/Build/cdbuild/ctan2tds.pl
+++ b/Build/cdbuild/ctan2tds.pl
@@ -453,6 +453,7 @@ $standardsourcefmt='latex';
'fontch', 'plain',
'fontspec', 'xetex',
'genmisc', 'generic',
+ 'hyplain', 'plain',
'ifxetex', 'generic',
'jadetex', 'jadetex',
'mathdots', 'generic',
@@ -517,6 +518,7 @@ $standardfmt='latex';
'greepoint', 'fonts',
'hfoldsty', 'fonts',
'hieroglf', 'fonts',
+ 'hyplain', 'plain',
'ifxetex', 'generic',
'kixfont', 'fonts',
'l2picfaq', 'german',
@@ -633,6 +635,7 @@ $standardtex='\.cfg|\.sty|\.clo|\.ldf|\.cls|\.def|\.fd$';
'ginpenc', '\.gie|\.sty',
'hfoldsty', '\.sty|\.fd|\.cpa',
'hyper', '\.sty|\.hyp',
+ 'hyplain', '(hyrules|hy.*plain|hylang)\..*',
'insbox', 'insbox.tex',
'iso10303', 'a.*tex|b.*tex|e.*tex|stp.*tex|\.sty|\.4ht',
'isodate', '\.idf|\.sty',
diff --git a/Build/tools/tpm-ctan-check b/Build/tools/tpm-ctan-check
index eeabc2841a0..d0fa2129674 100755
--- a/Build/tools/tpm-ctan-check
+++ b/Build/tools/tpm-ctan-check
@@ -36,7 +36,7 @@ my @WorkingTPM = qw(
fourier free-math-font-survey frenchle
galois genmisc genmpage glossary gnuplottex gost graphics
graphicx-psmin grnumalt
- hepthesis hhtensor hrlatex hyperref hyphen-base hyphen-basque
+ hepthesis hhtensor hrlatex hyperref hyplain hyphen-base hyphen-basque
hyphen-german
hyphen-greek hyphen-norwegian hyphen-ukenglish
hyphen-usorbian
diff --git a/Master/texmf-dist/doc/plain/hyplain/README b/Master/texmf-dist/doc/plain/hyplain/README
new file mode 100644
index 00000000000..016e342f270
--- /dev/null
+++ b/Master/texmf-dist/doc/plain/hyplain/README
@@ -0,0 +1,11 @@
+This is the HyPlain package, which provides basic support for
+multiple languages in Plain TeX.
+
+Author: Enrico Gregorio (Enrico dot Gregorio at univr dot it)
+Version 1.0 of October 17, 2006 (2006/10/17)
+
+The package is public domain. Users are kindly requested to acknowledge
+source and to change the name of the files in case of modifications.
+The file hylang.tex is site dependent and can be modified as it is needed.
+
+Read the enclosed file hydoc.pdf for (basic) documentation
diff --git a/Master/texmf-dist/doc/plain/hyplain/hydoc.pdf b/Master/texmf-dist/doc/plain/hyplain/hydoc.pdf
new file mode 100644
index 00000000000..3f4f3074499
--- /dev/null
+++ b/Master/texmf-dist/doc/plain/hyplain/hydoc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/plain/hyplain/hydoc.tex b/Master/texmf-dist/doc/plain/hyplain/hydoc.tex
new file mode 100644
index 00000000000..3a6c37c6a1c
--- /dev/null
+++ b/Master/texmf-dist/doc/plain/hyplain/hydoc.tex
@@ -0,0 +1,191 @@
+%%% This is part of the hyplain package by Enrico Gregorio
+%%% You are allowed to do anything you want with this as long
+%%% as you cite the source and change name to the file
+
+\hoffset=.46truecm
+\hsize=15truecm
+\advance\voffset by -2.5\baselineskip
+\advance\vsize by 5\baselineskip
+
+\font\tensf=cmss10
+
+\def\manyhyphens{%
+\hyphenpenalty=-1000
+\pretolerance=-1
+\tolerance=1000
+\doublehyphendemerits=-100000
+\finalhyphendemerits=-100000
+}
+
+\def\LaTeX{L\kern-.36em\setbox0=\hbox{T}\vbox to\ht0
+ {\hbox{\sevenrm A}\vss}\kern-.15em\TeX}
+\def\LaTeXe{\LaTeX$2_{\textstyle\varepsilon}$}
+
+\def\cs#1{\char`\\#1}
+\def\ar#1{\char`\{#1\char`\}}
+\def\showcommand#1{\par\nobreak\medskip\begingroup\tt#1\endgroup\par\medskip
+ \noindent\ignorespaces}
+
+\addto{it}{IT}{\frenchspacing}{\nonfrenchspacing}
+
+\begingroup\manyhyphens
+
+\centerline{\bf How to use hyplain --- version 1.0}
+
+\medskip
+
+Many (well, at least more than twelve) years ago, \LaTeX{} was not as usable as it is today.
+So we were forced to use AMS-\TeX{} for typesetting mathematical papers.
+
+At the very beginning there were two plain formats to use, the original one and the one
+(called plainit) for Italian hyphenation. With the advent of \TeX3 we could use only one and
+define some switch for selecting the language.
+
+I found a package called HyMaster that could be used for this purpose; it was developed by
+Daniel Flipo and Laurent Siebenmann for French. Since Italian typesetting rules do not
+require the contortions of the French, it was simple to adapt only one file for canning a
+format file.
+
+With the advent of \LaTeXe, everything was forgotten. Until recently, when a user in a
+discussion forum showed some code that I recognized as my modifications to HyMaster! He
+proposed some procedure to build the format which was very complicated (you see, at that
+time we were using Oz\TeX; nowadays, te\TeX{} or MiK\TeX{} require different actions). So I
+tried to rethink to the business.
+
+\IT
+
+\bigskip
+
+\hrule
+
+\medskip
+
+\centerline{\bf Come usare hyplain}
+
+\medskip
+
+Parecchi (be', almeno dodici) anni fa, \LaTeX{} non era cos\`{\i} facile da usare come \`e
+oggi. Per comporre testi matematici eravamo quindi costretti a usare AMS-\TeX{}.
+
+All'inizio c'erano due formati plain da usare, l'originale e quello (chiamato plainit) per
+la sillabazione italiana. Con l'avvento di \TeX3, si pot\'e usare un solo formato con la
+possibilit\`a di cambiare le regole di sillabazione con un comando.
+
+Trovai un pacchetto chiamato HyMaster che poteva essere usato per questo scopo; era stato
+sviluppato da Daniel Flipo e Laurent Siebenmann per il francese. Siccome la tipografia
+italiana non richiede le contorsioni di quella francese, fu semplice adattare un solo {\it
+file\/} per costruire un formato.
+
+Con l'avvento di \LaTeXe, tutto fu dimenticato. Finch\'e, recentemente, un utente di un
+gruppo di discussione esib\`{\i} del codice che riconobbi come le mie modifiche a HyMaster!
+Proponeva una procedura piuttosto complicata per costruire il formato (a quel tempo usavamo
+Oz\TeX; ora te\TeX{} e MiK\TeX{} richiedono azioni diverse). Perci\`o ho provato a ripensare
+alla faccenda.
+
+\medskip
+
+\hrule
+
+\bigskip
+
+\endgroup
+
+\US
+
+As you can see, hyphenation in US~English and in Italian behave properly. The text above has
+been typeset with more hyphens than usual.
+
+\medskip
+
+The package consists of three files: {\tt hyplain.tex}, {\tt hyrules.tex} and {\tt
+hylang.tex}. Only the third one needs to be modified by the users who want to define
+languages to employ.
+
+The basic definition of a language is given by a command
+\showcommand{\cs{definelanguage}\ar{xx}\ar{YY}\ar{filename}} where {\tt xx} is the ISO
+abbreviation for the language ({\tt en} for English, {\tt it} for Italian, {\tt de} for
+German), {\tt YY} is the ISO abbreviation for the nation and {\tt filename} is the name of
+the hyphenation pattern file. Thus
+\showcommand{\cs{definelanguage}\ar{it}\ar{IT}\ar{ithyph}} defines Italian.
+
+There is also {\tt\cs{definedialect}} for defining a language which shares hyphenation
+patterns with another; for example
+\showcommand{\cs{definedialect}\ar{de}\ar{AT}\ar{de}\ar{DE}} defines ``German for Austria'',
+assuming that \showcommand{\cs{definelanguage}\ar{de}\ar{DE}\ar{dehypht}} has already been
+given.
+
+After a {\tt\cs{definelanguage}} command, {\tt\cs{refinelanguage}} should be given; it has
+four arguments
+
+\nobreak\smallskip
+\item{\tt\#1} the two-letter language abbreviation,
+
+\item{\tt\#2} the two-letter nation abbreviation,
+
+\item{\tt\#3} the code to be executed when the language comes into action,
+
+\item{\tt\#4} the code to be executed when another language is called.
+\smallskip
+
+This command should always contain in the third argument the left and right hyphenation
+minima: for example, we set
+\showcommand{\cs{refinelanguage}\ar{en}\ar{US}%
+ \ar{\cs{hyphenmins}\ar{2}\ar{3}}\ar{}}
+in order to enforce the usual conventions for American English; as another example, we set
+\showcommand{\cs{refinelanguage}\ar{it}\ar{IT}%
+ \ar{\cs{hyphenmins}\ar{2}\ar{2}\cs{lccode}`\char`\\'=`\char`\\'}%
+ \ar{\cs{lccode}`\char`\\'=0 }}
+because the lower case code of the right quote should not be zero for correct Italian
+hyphenation. We need to ``undo'' the effect since we don't know whether the user calls the
+language switch inside a group or not. The command
+\showcommand{\cs{hyphenmins}\ar{x}\ar{y}}
+is an abbreviation for {\tt\cs{lefthyphenmin}=x\cs{righthyphenmin}=y} and it is not
+necessary to ``undo'' it.
+
+The commands {\tt\cs{definedialect}} and {\tt\cs{refinedialect}} (analog to
+{\tt\cs{refinelanguage}}) can be given also in the user's document where, of course, it is
+too late to define new languages with their hyphenation patterns. Anyway, users can simulate
+new language definitions by defining a dialect to language {\tt\cs{zz\_ZZ}}, which is a
+fallback without hyphenation tables.
+
+If one wants to extend the functionalities of a language, there is also the command
+\showcommand{\cs{addto}\ar{xx}\ar{YY}\ar{do}\ar{undo}}
+which can be used, for example, in the following way
+\showcommand{\cs{addto}\ar{it}\ar{IT}%
+ \ar{\cs{frenchspacing}}\ar{\cs{nonfrenchspacing}}}
+in order to enforce French spacing for Italian (in Italy).
+
+Finally, there is a command to choose a defined language (or even an undefined one, try it)
+\showcommand{\cs{selectlanguage}\ar{xx}\ar{YY}}
+which selects language {\tt xx} for {\tt YY}. Users can add aliases for this with
+\showcommand{\cs{addalias}\ar{\cs{command}}\ar{xx}\ar{YY}}
+(see {\tt hylang.tex} for examples). After saying
+\showcommand{\cs{addalias}\ar{\cs{IT}}\ar{it}\ar{IT}}
+you can simply say {\tt\cs{IT}} to switch to Italian. This alias is actually predefined in
+the present version of {\tt hylang.tex} as well as {\tt\cs{US}} for US~English.
+
+\bigskip
+
+\centerline{\bf Installation}
+
+\nobreak\medskip
+
+Put the three files in some directory and process with
+\showcommand{tex -ini hyplain}
+and after this put the produced format in some suitable place of the \TeX{} tree. After this
+\showcommand{tex -fmt hyplain filename}
+will typeset {\tt filename.tex} using the new format. This is for a *nix system and a
+{\tensf Web2C} distribution like te\TeX{} or \TeX{}Live; for MiK\TeX{} find the way, I don't
+use it. You can use also {\tt pdftex} and you can use the newly created {\tt hyplain.fmt} to
+build AMS-\TeX{} over it. For {\tt pdftex} you should use
+\showcommand{pdftex -ini hypdfplain.ini}
+and then
+\showcommand{pdftex -fmt hypdfplain filename}
+If you want to access the extended features of $\varepsilon$-\TeX{}, then do
+\showcommand{pdftex -ini '*hypdfplain.ini'}
+
+\vfill
+
+\rightline{Enrico Gregorio}
+\rightline{October 17, 2006}
+\bye
diff --git a/Master/texmf-dist/tex/plain/hyplain/hylang.tex b/Master/texmf-dist/tex/plain/hyplain/hylang.tex
new file mode 100644
index 00000000000..05714399267
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/hyplain/hylang.tex
@@ -0,0 +1,57 @@
+%%% This is hylang.tex (version 1.0), where language definitions
+%%% actually occur. The first one should always be
+%%% American English, for compatibility with plain TeX.
+%%%
+%%% Users can modify this file in order to define the
+%%% languages they need.
+%%%
+%%% Every language definition should be followed by a
+%%% \refinelanguage command where conventions specific to
+%%% the language are set; users should at least provide
+%%% the left and right hyphenation minima using
+%%% \hyphenmins{<left>}{<right>}
+%%%
+%%% In the third argument one puts what has to be done
+%%% when activating the language; in the fourth argument
+%%% what needs to be undone.
+
+%%% US English must always come first
+\definebaselanguage{en}{US}{hyphen} %%% <--- don't modify
+\refinelanguage{en}{US}{\hyphenmins{2}{3}}{}
+
+%%% Italian
+\definelanguage{it}{IT}{ithyph}
+\refinelanguage{it}{IT}{\hyphenmins{2}{2}\lccode`\'=`\'}{\lccode`\'=0 }
+
+%%% Add other languages if needed
+%%%
+%%% The arguments to \definelanguage are:
+%%% #1: the language code; it is an arbitrary string, use the
+%%% ISO two-letter language code for uniformity, or `nde' for
+%%% new orthography German
+%%% #2: the nation code; use the uppercase ISO two-letter code
+%%% #3: the file with hyphenation patterns
+%%%
+%%% The arguments to \refinelanguage and \refinedialect are:
+%%% #1 and #2: a pair defined through \definelanguage or \definedialect
+%%% #3: commands to be executed when entering the language
+%%% #4: commands to be undone when entering a new language
+%%%
+% \definelanguage{xx}{YY}{xxhyph}
+% \refinelanguage{xx}{YY}{<something>}{<something>}
+%
+% \definedialect{aa}{BB}{xx}{XX}
+% \refinedialect{aa}{BB}{<something>}{<something>}
+
+% At last the fallback, a language with no patterns
+\definelanguage{zz}{ZZ}{zerohyph}
+% \refinelanguage{zz}{ZZ}{}{} % no need to set conventions
+
+%%% Aliases
+\addalias\US{en}{US}
+\addalias\IT{it}{IT}
+\addalias\ZZ{zz}{ZZ}
+\addalias\nohyphens{zz}{ZZ}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/plain/hyplain/hypdfplain.ini b/Master/texmf-dist/tex/plain/hyplain/hypdfplain.ini
new file mode 100644
index 00000000000..25671da5537
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/hyplain/hypdfplain.ini
@@ -0,0 +1,9 @@
+%%% This is part of the hyplain package by Enrico Gregorio
+%%% You are allowed to do anything you want with this as long
+%%% as you cite the source and change name to the file
+%%%
+%%% The purpose of this file is to provide an initialization
+%%% for pdfTeX
+\pdfoutput=1
+\input hyplain
+
diff --git a/Master/texmf-dist/tex/plain/hyplain/hyplain.tex b/Master/texmf-dist/tex/plain/hyplain/hyplain.tex
new file mode 100644
index 00000000000..64423ba8fb7
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/hyplain/hyplain.tex
@@ -0,0 +1,39 @@
+%%% This is part of the hyplain package by Enrico Gregorio
+%%% You are allowed to do anything you want with this as long
+%%% as you cite the source and change name to the file
+%%% (but don't rename it plain.tex)
+%%%
+%%% Its purpose is to load plain.tex but not hyphen.tex
+%%% in order to be able to define more languages than
+%%% American English.
+%%%
+%%% By running iniTeX on this file, you end up with a
+%%% plain TeX format with some new facilities for changing
+%%% the language (see hyrules.tex and hydoc.tex)
+
+\catcode`\{=1 % left brace is begin-group character
+\catcode`\}=2 % right brace is end-group character
+\catcode`\@=11 % Now @ is a letter
+
+%%% Save the original meaning of \input
+\let\orig@input\input
+
+%%% D. E. Knuth has decreed that plain.tex cannot be modified
+%%% except for preloaded fonts. But we can always use some
+%%% TeX trick; since the file is immutable, it will contain
+%%% the line `\input hyphen'; at that point we restore the
+%%% original meaning of \input and input hyrules.tex instead
+%%% of hyphen.tex
+\def\input hyphen {\let\input\orig@input \input hyrules }
+
+%%% Here we load plain.tex
+\orig@input plain
+
+%%% We change the contents of \fmtname
+\def\fmtname{plain (multiple language support)}
+%%% Just a reminder for \fmtversion which we keep identical
+%%% to the plain TeX version number
+% \def\fmtversion{3.14159265}
+\def\hyplainversion{1.0}
+
+\dump
diff --git a/Master/texmf-dist/tex/plain/hyplain/hyrules.tex b/Master/texmf-dist/tex/plain/hyplain/hyrules.tex
new file mode 100644
index 00000000000..25e627c5ca1
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/hyplain/hyrules.tex
@@ -0,0 +1,112 @@
+%%% This is part of the hyplain package by Enrico Gregorio, version 1.0
+%%% You are allowed to do anything you want with this as long
+%%% as you cite the source and change name to the file
+%%%
+%%% (Based on HyMaster.tex by Daniel Flipo and Laurent Siebenmann)
+%%%
+%%% The interface is primitive, of course. But plain TeX users
+%%% are at their ease with primitive interfaces ;-)
+%%%
+%%% Note: every language is defined as a pair (<language>,<nation>)
+%%% with ISO two-letter abbreviations to accommodate for national
+%%% variations (for example, (de,DE) and (de,AT) or (de,CH) for German
+%%% in Germany, Austria or Switzerland)
+%%% For New Ortography German, use the three-letter abbreviation `nde'
+%%% A fallback language (zz,ZZ) is provided, with no hyphenation
+%%% patterns
+
+\chardef\myh@us@catcode=\the\catcode`\_
+\catcode`\_=11
+\def\myh@us{_}
+
+%%% \addalias{<control sequence>}{<language>}{<nation>}
+%%% define a new alias for a language; for example
+%%% \addalias{\italiano}{it}{IT}
+\def\addalias#1#2#3{\expandafter\let\expandafter#1\csname #2\myh@us#3\endcsname}
+
+\def\myh@glet{\global\let}
+\def\selectlanguage#1#2{%
+ \expandafter\ifx\csname #1_#2\endcsname\relax
+ \expandafter\myh@glet\csname #1_#2\endcsname\zz_ZZ
+ \myh@nel{#1}{#2}%
+ \fi
+ \csname #1_#2\endcsname
+ \ignorespaces}
+\def\myh@nel#1#2{\message{^^Jhyplain warning: Language #1 for #2 undefined,
+ using fallback instead^^J}}
+
+%%% A primitive interface for adding to extras and noextras
+\newtoks\myh@toks
+\def\addto#1#2#3#4{%
+ \expandafter\let\expandafter\myh@temp\csname extras@#1\myh@us#2\endcsname
+ \myh@toks=\expandafter{\myh@temp}%
+ \myh@toks=\expandafter{\the\myh@toks #3}
+ \expandafter\edef\csname extras@#1\myh@us#2\endcsname{\the\myh@toks}%
+ \expandafter\let\expandafter\myh@temp\csname noextras@#1\myh@us#2\endcsname
+ \myh@toks=\expandafter{\myh@temp}%
+ \myh@toks=\expandafter{\the\myh@toks #4}
+ \expandafter\edef\csname noextras@#1\myh@us#2\endcsname{\the\myh@toks}%
+}
+
+\def\myh@undo{\csname noextras@\myh@lan\endcsname}
+
+%%% \definelanguage has 3 parameters:
+%%% #1: <language> (lowercase ISO abbreviation)
+%%% #2: <nation> (uppercase ISO abbreviation)
+%%% #3: pattern and hyphenation exception file
+\newlinechar`^^J
+\def\definebaselanguage#1#2#3{%
+ \message{***^^JDefining language #1 for #2 using^^J}%
+ \expandafter\chardef\csname l@#1_#2\endcsname=0
+ \expandafter\language\csname l@#1_#2\endcsname
+ \input #3%
+ \message{This is \string\language
+ \expandafter\the\csname l@#1_#2\endcsname^^J***^^J}%
+ \myh@initialize{#1}{#2}}
+\def\definelanguage#1#2#3{%
+ \message{***^^JDefining language #1 for #2 using^^J}%
+ \csname newlanguage\expandafter\endcsname\csname l@#1_#2\endcsname
+ \expandafter\language\csname l@#1_#2\endcsname
+ \input #3%
+ \message{This is \string\language
+ \expandafter\the\csname l@#1_#2\endcsname^^J***^^J}%
+ \myh@initialize{#1}{#2}}
+%%% \definedialect has 4 parameters:
+%%% (#1,#2) is the pair to be defined, (#3,#4) is the pair over
+%%% which the dialect is defined (\definedialect{de}{AT}{de}{DE})
+\def\definedialect#1#2#3#4{%
+ \expandafter\let\csname l@#1_#2\expandafter\endcsname
+ \csname l@#3_#4\endcsname
+ \myh@initialize{#1}{#2}}
+
+\def\myh@initialize#1#2{%
+ \expandafter\def\csname #1_#2\endcsname{%
+ \expandafter\language\csname l@#1_#2\endcsname
+ \myh@undo
+ \def\myh@lan{#1_#2}%
+ \csname extras@#1_#2\endcsname}%
+ \expandafter\def\csname extras@#1_#2\endcsname{}%
+ \expandafter\def\csname noextras@#1_#2\endcsname{}}
+
+%%% \refinelanguage defines the extras for a language
+%%% It has 4 parameters: <language>,<nation>,<extras>,<noextras>
+\def\refinelanguage#1#2#3#4{%
+ \expandafter\def\csname extras@#1_#2\endcsname{#3}%
+ \expandafter\def\csname noextras@#1_#2\endcsname{#4}}
+\let\refinedialect=\refinelanguage
+
+\def\hyphenmins#1#2{\lefthyphenmin=#1\relax\righthyphenmin=#2\relax}
+
+\input hylang
+
+%%% Initialize and restore the underscore
+\let\definebaselanguage\undefined
+\let\definelanguage\undefined
+
+\def\myh@lan{} % initialization
+\def\noextras@{} % initialization
+\en_US
+
+\catcode`\_=\myh@us@catcode
+
+\endinput
diff --git a/Master/texmf-dist/tpm/hyplain.tpm b/Master/texmf-dist/tpm/hyplain.tpm
new file mode 100644
index 00000000000..1b5da41770b
--- /dev/null
+++ b/Master/texmf-dist/tpm/hyplain.tpm
@@ -0,0 +1,29 @@
+<!DOCTYPE rdf:RDF SYSTEM "../../support/tpm.dtd">
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:TPM="http://texlive.dante.de/">
+ <rdf:Description about="http://texlive.dante.de/texlive/Package/hyplain.zip">
+ <TPM:Name>hyplain</TPM:Name>
+ <TPM:Type>Package</TPM:Type>
+ <TPM:Date>2006/10/17 12:55:00</TPM:Date>
+ <TPM:Version></TPM:Version>
+ <TPM:Creator>karl</TPM:Creator>
+ <TPM:Title>The hyplain package.</TPM:Title>
+ <TPM:Description></TPM:Description>
+ <TPM:Author></TPM:Author>
+ <TPM:Size>66940</TPM:Size>
+ <TPM:Build/>
+ <TPM:RunFiles size="8753">
+texmf-dist/tex/plain/hyplain/hylang.tex
+texmf-dist/tex/plain/hyplain/hypdfplain.ini
+texmf-dist/tex/plain/hyplain/hyplain.tex
+texmf-dist/tex/plain/hyplain/hyrules.tex
+texmf-dist/tpm/hyplain.tpm
+ </TPM:RunFiles>
+ <TPM:DocFiles size="59228">
+texmf-dist/doc/plain/hyplain/README
+texmf-dist/doc/plain/hyplain/hydoc.pdf
+texmf-dist/doc/plain/hyplain/hydoc.tex
+ </TPM:DocFiles>
+ <TPM:Provides>Package/hyplain</TPM:Provides>
+ </rdf:Description>
+</rdf:RDF>
+
diff --git a/Master/texmf/lists/hyplain b/Master/texmf/lists/hyplain
new file mode 100644
index 00000000000..8dc13ec75f6
--- /dev/null
+++ b/Master/texmf/lists/hyplain
@@ -0,0 +1,11 @@
+texmf-dist/doc/plain/hyplain/README
+texmf-dist/doc/plain/hyplain/hydoc.pdf
+texmf-dist/doc/plain/hyplain/hydoc.tex
+
+texmf-dist/tex/plain/hyplain/hylang.tex
+texmf-dist/tex/plain/hyplain/hypdfplain.ini
+texmf-dist/tex/plain/hyplain/hyplain.tex
+texmf-dist/tex/plain/hyplain/hyrules.tex
+texmf-dist/tpm/hyplain.tpm
+
+texmf/lists/hyplain
diff --git a/Master/texmf/tpm/collection-plainextra.tpm b/Master/texmf/tpm/collection-plainextra.tpm
index 25e27d18c54..5b0db9c2e82 100644
--- a/Master/texmf/tpm/collection-plainextra.tpm
+++ b/Master/texmf/tpm/collection-plainextra.tpm
@@ -20,6 +20,7 @@ A collection of add-on packages and macros for plain TeX.
<TPM:Package name="cellular"/>
<TPM:Package name="colortab"/>
<TPM:Package name="fontch"/>
+ <TPM:Package name="hyplain"/>
<TPM:Package name="jsmisc"/>
<TPM:Package name="newsletr"/>
<TPM:Package name="pdcmac"/>