summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/mex/base/mex1.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/mex/base/mex1.tex')
-rw-r--r--Master/texmf-dist/tex/mex/base/mex1.tex776
1 files changed, 776 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/mex/base/mex1.tex b/Master/texmf-dist/tex/mex/base/mex1.tex
new file mode 100644
index 00000000000..77989347ae4
--- /dev/null
+++ b/Master/texmf-dist/tex/mex/base/mex1.tex
@@ -0,0 +1,776 @@
+% This is MEX1.TEX - a part of the Polish plain TeX and LaTeX formats.
+% Version 1.05, 18 December 1993
+%
+% Authors: Marek Ry\'cko & Bogus\l{}aw Jackowski
+%
+% This macro file belongs to the public domain
+% under the conditions specified by the author of TeX:
+%
+% ``Macro files like PLAIN.TEX should not be changed in any way,
+% except with respect to preloaded fonts,
+% unless the changes are authorized by the authors of the macros.''
+%
+% Donald E. Knuth
+%
+% For details see MEXINFO.ENG or MEXINFO.POL.
+%
+% INITIAL ASSIGNMENTS:
+\catcode`\#=6 % hash mark is macro parameter character
+\catcode`\^=7 % circumflex is for superscripts (and for the next line)
+\catcode`\^^I=10 % ascii tab is a blank space
+\chardef\active=13 \catcode`\~=\active % tilde is active
+\catcode`\^^L=\active \outer\def^^L{\par} % ascii form-feed is `\outer\par'
+\catcode`@=11 % @ is temporarily a letter
+
+\message{polish auxiliary macros,}
+% not available for user
+
+% macros for making operations on sequences:
+
+\def\m@pone%
+ #1% one-argument operation (applicable to hexadecimal numbers)
+% #2% a macro of the form `\do A\do C ...'
+ {%
+ \def\do##1{#1{\P@lcd{##1}}}%
+% #2% execute
+ }
+\def\m@ptwo%
+ #1% two-argument operation (applicable to hexadecimal numbers)
+% #2% a macro of the form `\do Aa\do Cc ...'
+ {%
+ \def\do##1##2%
+ {#1{\P@lcd{##1}}{\P@lcd{##2}}}%
+% #2% execute
+ }
+
+% operations on character codes and on pairs of char. codes:
+\def\l@t% make letter a character
+ #1%
+ {\catcode`#1=11 }
+\def\@th% make other a character
+ #1%
+ {\catcode`#1=12 }
+\def\@ct% make active a character
+ #1%
+ {\catcode`#1=\active}
+
+\def\mkl@t% make letter
+ #1%
+ {\catcode"#1=11 }
+
+\def\P@lsf% space factor of capital letters
+ #1%
+ {\sfcode"#1=999 }
+\def\P@lcase
+ #1% UC letter code
+ #2% lc letter code
+ {\uccode"#1="#1
+ \lccode"#2="#2
+ \uccode"#2="#1
+ \lccode"#1="#2 }
+\def\P@lm
+ #1% polish character code like 86
+ {%
+ \mathcode"#1="71#1 % e.g., \mathcode"86="7186
+ }
+
+% prepare reading the `font encoding' of the polish characters:
+
+% the primary meanings of the macros \@Pl and \@qq:
+
+% macro \@Pl for defining the encoding of polish characters:
+% syntax & semantics, e.g.:
+% \@Pl a a1
+% define a category code of ^^a1 as `letter',
+% define the token /a as a macro expanding to the letter ^^a1,
+% define the token /aa as a macro expanding to uppercase hexadecimal A1
+
+\@th\/% / is of category "other"
+\l@t\^^00% character of the code 0 is a letter
+\def\prim@Pl% Polish letter encoding
+ #1 % letter (e.g., a)
+ #2 % hex code (UC or lc) of a polish letter
+ {%
+ % during the execution of this definition
+ % all the codes of `a' and `A' must be `normal'
+ \def\defineone{\expandafter\def\csname/#1\endcsname}%
+ \def\definetwo{\expandafter\def\csname/#1#1\endcsname}%
+ % auxiliary macros for defining something later
+ % in the `\uppercase' environment such that #1
+ % is not converted to the uppercase
+ \uppercase{\def\H@x{#2}}%
+ \uppercase{\uccode`\a"#2}%
+ % if #2 is a hex number including lowercase
+ % letters, then they are first converted to uppercase
+ % (one of them may be `a')
+ % and then the UC code of `a' becomes temporarily
+ % a character of a code "#2
+ \ifnum"\H@x=0
+ \defineone{^^00}%
+ % the letter of the code 0 cannot be created by uppercacing
+ \else
+ \uppercase{\defineone{a}}%
+ % first convert a letter `a' to uppercase
+ % which is temporarily a character of a code "#2
+ % then define a token /#1 as expanding to this letter
+ \fi
+ \uccode`\a=`\A
+ % restore the original UC value for `a'
+ \uppercase{\definetwo{#2}}%
+ % if #2 is a hex number including lowercase
+ % letters, then they are first converted to uppercase
+ % (one of them may be `a')
+ % and then the control sequence like /aa is defined
+ % as a macro expanding to a two-digit hexadecimal (uppercase)
+ % representation of a code of the corresponding
+ % polish letter
+ \uppercase{\catcode"#2=11 }%
+ % assign category `letter' to #2
+ }%
+\catcode`\^^00=9% character of the code 0 is ignored
+
+\def\prim@qq% quotation mark encoding
+ % define /,, token as the hex code of the char ,, (etc.)
+ #1#2 % two characters representing a quote: ,, '' << >>
+ #3 % two heahadecimal digits (`af' etc.) (UC or lc)
+ {%
+ % #1#2 must have categories `other'
+ \uppercase{\expandafter\def\csname/#1#2\endcsname{#3}}%
+ % first convert #3 to uppercase and then
+ % define /,, token as the hex code of the char ,, (etc.)
+ }%
+
+% the secondary meanings of the macros \@Pl and \@qq:
+
+\@ct\^^00% character of the code 0 is active
+\def\sec@Pl% Polish letter encoding
+ #1 % letter (e.g., a)
+ #2 % hex code (e.g., a1) (UC or lc) of a polish letter
+ % - define the character of the code a1 as an active character
+ % - define this active character as a macro expanding to the
+ % polish diacritical letter corresponding to a, in the current
+ % font layout)
+ {%
+ % It is assumed that during the execution of this definition
+ % the UC code of `~' is 0
+ \def\defineit##1{\edef##1{\csname/#1\endcsname}}%
+ % auxiliary macro for defining something later
+ % in the `\uppercase' environment such that #1
+ % is not converted to the uppercase
+ \uppercase{\def\H@x{#2}}%
+ \uppercase{\uccode`\~"#2}%
+ % if #2 is a hex number including lowercase
+ % letters, then they are first converted to uppercase
+ % and then the UC code of `~' becomes temporarily
+ % a character of a code "#2
+ \ifnum"\H@x=0
+ \defineit{^^00}%
+ % the active char. of the code 0 cannot be created by uppercacing
+ \else
+ \uppercase{\defineit~}%
+ % first convert the active `~' to uppercase
+ % which is temporarily a character of a code "#2
+ % then define this new active character as a macro
+ % expanding to the Polish diacritical
+ % letter corresponding to #1 in the current font layout
+ \fi
+ \uccode`\~=\z@
+ % restore the original UC value for `~'
+ \uppercase{\catcode"#2\active}%
+ % assign category `active' to #2
+ }%
+\catcode`\^^00=9% character of the code 0 is ignored
+\def\sec@qq% quotation mark encoding
+ % define /,, token as the hex code of the char ,, (etc.)
+ #1#2 % two characters representing a quote: ,, '' << >>
+ #3 % two heahadecimal digits (`af' etc.) (UC or lc)
+ {}% do nothing
+
+% auxiliary macros for reading font definitions
+% from PLAIN.TEX and LFONTS.TEX files:
+
+% ASSUMPTION:
+%
+% It's assumed that in the files `plain.tex' and `lfonts.tex'
+% the commands `\font' consist of the following components:
+% 1. the control sequence \font
+% 2. a control sequence (TeX's font identifier)
+% 3. the equality sign =
+% 4. a (possibly empty) sequence of spaces
+% 5. a name of a font consisting of at least two characters
+
+\def\f@n#1=#2#3%
+ {%
+ \def\thepr@f{#2#3}%
+ \of@n#1%
+ \ifx\thepr@f\@ldpref % see the MEXCONF.TEX file
+ \n@wpref%
+ \else
+ \thepr@f%
+ \fi
+ }%
+
+% The command \f@@nt substitutes \font in the LaTeX macro \@getfont
+% used for loading font on demand.
+
+\def\f@@nt
+ #1% a control sequence name
+ % We assume that the macro \@getfont is used in such a way
+ % that the fourth parameter to this macro is either
+ % 1. a name of a font consisting of at least two characters or
+ % 2. a sequence of tokens expanding to a name of a font
+ % such that the first token expands to at least two
+ % first characters of this name.
+ % This assumption is satisfied by all standard versions
+ % of the LFONTS.TEX file.
+ %
+ % The token following `\f@@nt#1' is either the first letter
+ % of the font name (usually the letter `c' of the `cm...' name)
+ % or it is an abbreviation of a font name (a macro)
+ % expanding at the first level to a multicharacter name
+ % (e.g., `\@mbi' expanding to `cmmib10').
+ {\expandafter\f@@@t\expandafter#1}
+
+\def\f@@@t#1#2#3%
+ {%
+ \def\thepr@f{#2#3}%
+ \global\font#1%
+ \ifx\thepr@f\@ldpref % see the MEXCONF.TEX file
+ \n@wpref%
+ \else
+ \thepr@f%
+ \fi
+ }%
+
+% Macros for redefining font abbreviations like \@mbi and \@mbsy.
+% It is assumed that \@mbi and \@mbsy expand to a sequence to at least
+% two characters.
+
+\def\redeff@nt#1%
+ {\expandafter\redeff@@nt#1\redeff@@@nt#1}
+\def\redeff@@nt#1#2#3\redeff@@@nt#4%
+ {%
+ \def\thepr@f{#1#2}%
+ \edef#4%
+ {\ifx\thepr@f\@ldpref % see the MEXCONF.TEX file
+ \n@wpref%
+ \else
+ \thepr@f%
+ \fi#3}%
+ }%
+
+% auxiliary definitions for the lists of characters:
+\@th\/% / is of category `other'
+\def\P@lcd% Polish code
+ % \P@lcd{a} expands on the third level to something like 86
+ % (two-digit UC hex representation of code)
+ #1% letter
+ {\csname/#1#1\endcsname}%
+
+\def\P@lqq% Polish quote
+ % \P@lqq,, expands on the third level to two character hexadecimal
+ % code of the corresponding character
+ #1#2% representation of a quote
+ {\csname/#1#2\endcsname}
+
+% lists of Polish characters:
+\def\UCP@llist
+ {%
+ \do A% A with ogonek
+ \do C% accented C
+ \do E% E with ogonek
+ \do L% crossed L
+ \do N% accented N
+ \do O% accented O
+ \do S% accented S
+ \do X% accented Z
+ \do Z% dotted Z
+ }
+\def\P@llist
+ {%
+ \do A% A with ogonek
+ \do C% accented C
+ \do E% E with ogonek
+ \do L% crossed L
+ \do N% accented N
+ \do O% accented O
+ \do S% accented S
+ \do X% accented Z
+ \do Z% dotted Z
+ \do a% tailed a
+ \do c% accented c
+ \do e% tailed e
+ \do l% crossed l
+ \do n% accented n
+ \do o% accented o
+ \do s% accented s
+ \do x% accented z
+ \do z% dotted z
+ }
+\def\UClcP@llist
+ {%
+ \do Aa% A with ogonek
+ \do Cc% accented C
+ \do Ee% E with ogonek
+ \do Ll% crossed L
+ \do Nn% accented N
+ \do Oo% accented O
+ \do Ss% accented S
+ \do Xx% accented Z
+ \do Zz% dotted Z
+ }%
+
+% auxiliary macros for language and font layout definitions:
+\def\d@finelanguage
+ #1% language name (e.g., `english')
+ #2% full language name (if different from #1)
+ #3% layout codes
+ #4% hyphenation patterns file name
+ #5% special notation before reading hyphenation patterns
+ {%
+ \expandafter\def\csname f@nt#1\endcsname{#3}%
+ \donothyph@nate{#1}%
+ %
+ % `\chardef\...language=...\relax' etc.
+ \def\ch@rd{\expandafter\chardef\csname#1language\endcsname}%
+ \expandafter\ch@rd\number\count@\relax
+ \advance\count@1
+ %
+ \begingroup
+ \let\e\expandafter
+ %
+ % prepare reading the hyphenation patterns
+ \e\toks\e0\e{\r@adpatterns}%
+ \toks1{\r@adpatt{#1}{#2}{#4}{#5}}%
+ \xdef\r@adpatterns{\the\toks0 \the\toks1 }
+ %
+ % prepare executing the appropriate `\newlanguage' commands
+ % after reading PLAIN or LPLAIN
+ \e\toks\e0\e{\n@wlanguages}%
+ \e\toks\e1\e{\e\newlanguage\csname#1language\endcsname}%
+ \xdef\n@wlanguages{\the\toks0 \the\toks1 }%
+ %
+ \endgroup
+ }
+\def\r@adpatt
+ % the command used several times by \r@adpatterns:
+ % read the hyphenation patterns for the language #1
+ #1% name of the language (english, pl, pone, mazovia, latintwo, etc.)
+ #2% full language name
+ #3% name of the hyphenation patterns file
+ #4% special notation like \P@lhyphnotation
+ % Only \patterns and \hyphenation are to be defined globally;
+ % the rest of changes is to be done only for the time
+ % of reading patterns and exceptions.
+ % (Group around the replacement text of \r@adpatt added 18 XII 1993.)
+ {{%
+ \csname f@nt#1\endcsname % define the #1 encoding
+ #4% turn on the special notation
+ %
+ % define the name to be displayed:
+ \uppercase{\def\l@nname{#2}}%
+ \ifx\empty\l@nname \uppercase{\def\l@nname{#1}}\fi
+ %
+ \expandafter\language\csname#1language\endcsname% turn on the language
+ \expandafter\if\csname hyph@nat@#1\endcsname T%
+ \def\next{\input#3\relax}%
+ \def\extram@ssage{}%
+ \else
+ \def\next{\patterns{}\hyphenation{}}%
+ \def\extram@ssage{, empty}%
+ \fi
+ \message{hyphenation [\l@nname\extram@ssage],}%
+ \next
+ }}
+\def\P@lhyphnotation
+ % special notation to be introduced before reading
+ % polish hyphenation pattern files
+ {%
+ \m@ptwo\P@lcase\UClcP@llist% assign UC & lc codes
+ \prefixing
+ }
+\def\donothyph@nate
+ #1% language name
+ {%
+ % do not hyphenate this language unless otherwise specified:
+ \expandafter\let\csname hyph@nat@#1\endcsname F%
+ }
+\def\hyph@nate
+ % allow hyphenating this language
+ #1% (pl, pone, mazovia, ...)
+ {\expandafter\let\csname hyph@nat@#1\endcsname T}%
+
+% The main macros for defining languages.
+
+% The following macros can be used to define languages
+% (almost) arbitrary number of times and in any order.
+
+\def\d@finesinglelanguage
+ % macro for defining `single-layout languages', i.e., languages,
+ % where characters are in the same positions for all fonts:
+ #1% language name (e.g., `english')
+ #2% language full name
+ #3% hyphenation patterns file name
+ {%
+ \d@finelanguage{#1}{#2}{}{#3}{}%
+ %
+ % For single-layout languages like English
+ % the commands \english and \englishlanguage are synonims.
+ % For the English language the following two lines are
+ % equivalent to: \let\english\englishlanguage
+ \def\l@t{\expandafter\let\csname#1\endcsname}%
+ \expandafter\l@t\csname#1language\endcsname%
+ }
+% define the Polish font layout (language in TeX terms):
+\def\d@finelayout
+ #1% layout (language) name (pl, pone, mazovia, latin)
+ #2% full language name
+ #3% layout codes
+ {%
+ \d@finelanguage{#1}{#2}{#3}{\P@lhyphen}{\P@lhyphnotation}%
+ }
+
+\message{prefixing,}
+% prefixing and non-prefixing
+
+% In the following section nothing is dependent on particular
+% codes of Polish characters in a font.
+
+% The following Polish characters in the Mazovia encoding
+% are used in comments:
+%
+% (meaning: /a /c /e /Z)
+
+% there are two possible notations:
+% 1. with \prefixing turned on: /a /c /e ...
+% 2. with \prefixing turned off (\nonprefixing): ...
+
+% prefixed /a (with active /) expands to a single letter
+
+\@ct\/
+\def\prefixing % / becomes `active' and meaning \P@lch
+ {\@ct \/% make / active
+ \let/\P@lch % assign the (Plain or LaTeX) meaning
+ \let\pr@fix T}
+\@th\/
+\def\nonprefixing % / becomes `other'
+ {\let\pr@fix F\@th\/}
+% we use \let\pr@fix T and \let\pr@fix F instead of \newif-s
+% because we are before reading plain
+
+% \normalslash expands to / of category `other'
+\def\normalslash{/}
+
+% In the forthcoming definitions the following short macro expanding to
+% \ifx followed by active / will be useful to make them more efficient:
+\@ct\/% / is active
+\def\P@lifs% \ifx active-slash
+ {\ifx/}
+\@th\/% / is "other" again
+% we will define a macro expanding to `\ifx/#1/\else...' where the first /
+% is active and the remaining ones are of the category `other'
+
+% The active / will be a synonim of the macro \P@lch,
+% where \P@lch is equivalent either to \pslash or to \l@slash
+% in Plain or in LaTeX, respectively;
+
+% \pslash (for Plain and to-be-protected in LaTeX)
+\expandafter\def\expandafter\pslash\expandafter#\expandafter1\expandafter
+ {\P@lifs
+ % Think about the two lines above as:
+ % \def\pslash#1{\ifx/
+ % where the / is active.
+ %
+ #1\expandafter/% the slash is of category `other'
+ \else\ifx#1\pslash\expandafter/% \pslash\pslash
+ \else\expandafter\ifx
+ \csname
+ /%
+ \noexpand#1% \noexpand is included in case of active #1
+ % or of /\a where \def\a{anything}
+ \endcsname
+ \relax % THEN:
+ \P@lerr{#1}%
+ \else
+ \@xpfififi
+ \csname/#1\endcsname
+ \fi\fi\fi}
+\def\@xpfififi{\expandafter\@xpiii}
+\def\@xpiii{\expandafter\@xpii\expandafter}%
+\def\@xpii{\expandafter\expandafter\expandafter}%
+% The \expandafter trickery in the macro replacement text causes
+% that in the correct use of the macro / or \pslash
+% (// \pslash\pslash /\pslash \pslash/ /a /e /c etc.)
+% after typesetting the appropriate character, no tokens from
+% the replacement text of this macro are left in the TeX's input
+% token list.
+\def\P@lerr
+ #1% illegal argument
+ {\begingroup
+ \newlinechar=`\*%
+ \errorcontextlines=0 %
+ \errhelp={%
+ Only the characters: aeclnosxzAECLNOSXYZ/ can appear after / .*%
+ % (We do not mention the possibility of writing /\pslash)
+ Proceed, I'll omit both / and the following character.*%
+ You can also correct your mistake by typing now `I' followed by*%
+ whatever should be in place of the incorrect pair of characters.*%
+ For example if you typed `/w' and you meant `w', type `Iw' now.}%
+ \errmessage{%
+ MeX error: Illegal pair of characters%
+ \space\space\noexpand/\noexpand#1\space\space occured}%
+ \endgroup}
+
+\@ct\/% / is active
+\def\l@slash{\protect\pslash}
+% In Plain \P@lch is \pslash, in LaTeX \P@lch is \l@slash.
+% Default (in Plain):
+\let\P@lch\pslash
+\let/\P@lch
+
+% Synonims to ,, '' << >> to be used in math mode:
+\def\plqq{\char"\P@lqq,, }% Polish left quote ,,
+\def\prqq{\char"\P@lqq'' }% Polish right quote ''
+\def\flqq{\char"\P@lqq<< }% French left quote <<
+\def\frqq{\char"\P@lqq>> }% French right quote >>
+
+\message{definitions of languages,}
+% initial values (prepare reading language definitions):
+\countdef\count@=255 \count@0 % for counting languages
+\def\empty{}
+\def\r@adpatterns{}
+\def\n@wlanguages{\count19=-1 }% starting from 0
+
+% the first (zero in fact) language is English
+\d@finesinglelanguage{english}{}{\@nghyphen}%
+
+% definitions of codes in the font layout in the Polish fonts:
+% (the hexadecimal digits may be upper or lowercase)
+
+% Each of the following \d@finelayout commands
+% includes the definition of a \f@nt<layout> command,
+% where <layout> is a font layout name like `pl' `mazovia' etc.
+
+% The \f@nt<layout> command results in executing several times
+% a command of the form: \@Pl <letter> <code>
+% and a command of the form: \@qq <char><char> <code>
+%
+% There are two meanings of the \@Pl and \@qq commands:
+% the primary meanings and the secondary meanings.
+%
+% The primary meanings of the commands \@Pl and \@qq
+% change the `state' of MeX, in the following way:
+%
+% command of the form: \@Pl <letter> <code>
+% (take \@Pl a a1 as an example, i.e., <letter>=a <code>=a1)
+% - define the character of the code a1 as a `letter'
+% - define the control sequence /a as a macro expanding to the
+% letter of the code a1
+% - define the control sequence /aa as a macro expanding to the
+% two-character uppercase hexadecimal code of the corresponding
+% letter, in this case to A1
+%
+% command of the form: \@qq <char><char> <code>
+% (take \@qq ,, ff as an example, i.e., <char>=, <code>=ff)
+% - define the control sequence /,, as a macro expanding to the
+% two-character uppercase hexadecimal code of the corresponding
+% quotation mark, in this case to FF
+
+% The secondary meanings of the commands \@Pl and \@qq are the following:
+
+% command of the form: \@Pl <letter> <code>
+% (take \@Pl a a1 as an example, i.e., <letter>=a <code>=a1)
+% - define the character of the code a1 as an active character
+% - define this active character as a macro expanding to the
+% polish diacritical letter corresponding to a, in the current
+% font layout)
+%
+% command of the form: \@qq <char><char> <code>
+% - do nothing
+
+% the default meaning is primary
+% it is redefined for a moment by the macro \layout
+
+\let\@Pl\prim@Pl
+\let\@qq\prim@qq
+
+% (The \f@nt... commands are used by the layout switching commands
+% -- see the MEX2.TEX file)
+
+% The PL font layout:
+% (The codes of the Polish letters in the PL font layout
+% equal to the corresponding codes of the Polish letters
+% in the Extended Computer Modern font layout;
+% This is the standard INTERNAL code of the MeX and LaMeX formats.)
+
+\def\standardf@ntlayout{pl}% might be moved to MEXCONF.TEX
+ % after checking out thoroughly if everything is OK.
+
+\d@finelayout{pl}{}
+{%
+\@Pl A 81 %
+\@Pl C 82 %
+\@Pl E 86 %
+\@Pl L 8a %
+\@Pl N 8b %
+\@Pl O d3 %
+\@Pl S 91 %
+\@Pl X 99 %
+\@Pl Z 9b %
+%
+\@Pl a a1 %
+\@Pl c a2 %
+\@Pl e a6 %
+\@Pl l aa %
+\@Pl n ab %
+\@Pl o f3 %
+\@Pl s b1 %
+\@Pl x b9 %
+\@Pl z bb %
+%
+\@qq ,, ff
+\@qq '' 22
+\@qq << ae
+\@qq >> af
+}
+
+% the Mazovia font layout:
+
+\d@finelayout{mazovia}{}
+{%
+\@Pl A 8f %
+\@Pl C 95 %
+\@Pl E 90 %
+\@Pl L 9c %
+\@Pl N a5 %
+\@Pl O a3 %
+\@Pl S 98 %
+\@Pl X a0 %
+\@Pl Z a1 %
+%
+\@Pl a 86 %
+\@Pl c 8d %
+\@Pl e 91 %
+\@Pl l 92 %
+\@Pl n a4 %
+\@Pl o a2 %
+\@Pl s 9e %
+\@Pl x a6 %
+\@Pl z a7 %
+%
+\@qq ,, ff
+\@qq '' 22
+\@qq << ae
+\@qq >> af
+}
+
+% the Latin 2 font layout:
+
+\d@finelayout{latintwo}{latin 2}
+{%
+\@Pl A a4 %
+\@Pl C 8f %
+\@Pl E a8 %
+\@Pl L 9d %
+\@Pl N e3 %
+\@Pl O e0 %
+\@Pl S 97 %
+\@Pl X 8d %
+\@Pl Z bd %
+%
+\@Pl a a5 %
+\@Pl c 86 %
+\@Pl e a9 %
+\@Pl l 88 %
+\@Pl n e4 %
+\@Pl o a2 %
+\@Pl s 98 %
+\@Pl x ab %
+\@Pl z be %
+%
+\@qq ,, ff
+\@qq '' 22
+\@qq << ae
+\@qq >> af
+}
+
+% the (old) P1 font layout:
+
+\d@finelayout{pone}{p1}
+{%
+\@Pl A 00 %
+\@Pl C 01 %
+\@Pl E 02 %
+\@Pl L 03 %
+\@Pl N 04 %
+\@Pl O 05 %
+\@Pl S 06 %
+\@Pl X 07 %
+\@Pl Z 08 %
+%
+\@Pl a 0a %
+\@Pl c 10 %
+\@Pl e 11 %
+\@Pl l 19 %
+\@Pl n 1b %
+\@Pl o 1c %
+\@Pl s 1d %
+\@Pl x 1e %
+\@Pl z 1f %
+%
+\@qq ,, 18
+\@qq '' 22
+\@qq << 1a
+\@qq >> 20
+}
+\count@0 % restore the normal value of the counter
+
+% macro for switching font layouts
+% (also turns on the appropriate hyphenation patterns)
+\def\layout
+ #1% language name (pl, mazovia etc...}
+ {%
+ % change the `state' of MeX -- remember the new layout:
+ \csname f@nt#1\endcsname%
+ % assign the category \letter to the Polish characters:
+ \m@pone\mkl@t\P@llist
+ % possibly define the Polish characters in the internal MeX encoding
+ % as active characters expanding to letters in the font codes:
+ \edef\currf@ntlayout{#1}%
+ \ifx\currf@ntlayout\standardf@ntlayout
+ % just leave as it is
+ \else
+ % define active Polish diacritical characters:
+ % first assign the secondary meaning to \@Pl and \@qq
+ \let\@Pl\sec@Pl \let\@qq\sec@qq
+ % now define the active characters of the internal MeX codes
+ % (the same as the codes of the \standardf@ntlayout)
+ \csname f@nt\standardf@ntlayout\endcsname%
+ % restore the primary meaning of \@Pl and \@qq
+ \let\@Pl\prim@Pl \let\@qq\prim@qq
+ \fi
+ \m@pone\P@lsf\UCP@llist% assign space factor 999 to UC Pol. let.
+ \m@ptwo\P@lcase\UClcP@llist% assign UC & lc codes
+ % note that UC & lc codes are assigned
+ % to the letters according to the FONT layout
+ % and not to the active characters expanding to them
+ % (so in nonstandard font layouts
+ % first expand, then apply \upper-lower-case)
+ \m@pone\P@lm\P@llist % assign mathcodes to polish letters
+ % change the meaning of `\polish' to one of the languages
+ \expandafter\let\expandafter\polish
+ \csname#1language\endcsname%
+ \language\polish
+ }
+
+% No languages are hyphenated
+% unless specified otherwise in the configuration file.
+
+\input mexconf % MeX configuration file
+
+% Read (empty or real) hyphenation patterns
+% for all defined languages and for all font layouts
+% (Prefixing is turned on automatically, then turned off):
+\r@adpatterns
+\nonprefixing % prefix notation should not be turned on while reading PLAIN
+\endinput