diff options
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/plain/hyplain/README | 11 | ||||
-rw-r--r-- | Master/texmf-dist/doc/plain/hyplain/hydoc.pdf | bin | 0 -> 51088 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/plain/hyplain/hydoc.tex | 191 | ||||
-rw-r--r-- | Master/texmf-dist/tex/plain/hyplain/hylang.tex | 57 | ||||
-rw-r--r-- | Master/texmf-dist/tex/plain/hyplain/hypdfplain.ini | 9 | ||||
-rw-r--r-- | Master/texmf-dist/tex/plain/hyplain/hyplain.tex | 39 | ||||
-rw-r--r-- | Master/texmf-dist/tex/plain/hyplain/hyrules.tex | 112 | ||||
-rw-r--r-- | Master/texmf-dist/tpm/hyplain.tpm | 29 | ||||
-rw-r--r-- | Master/texmf/lists/hyplain | 11 | ||||
-rw-r--r-- | Master/texmf/tpm/collection-plainextra.tpm | 1 |
10 files changed, 460 insertions, 0 deletions
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 Binary files differnew file mode 100644 index 00000000000..3f4f3074499 --- /dev/null +++ b/Master/texmf-dist/doc/plain/hyplain/hydoc.pdf 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"/> |