---------------------------------------------------------------------------------
MEXINFO.ENG: a brief description of the MeX 1.05 package,  18 December 1993

Small changes in documentations: 8 November 1997

Changes to the Rules and Contacts sections, UTF-8 encoded characters used where
possible/appropriate: March 30th 2020
---------------------------------------------------------------------------------

What is MeX?
============

MeX is a software package for TeX and METAFONT.
TeX is a typesetting system and METAFONT is a program for typeface
design, both developed by professor Donald E. Knuth.

Most users of TeX use it with PLAIN TeX and LaTeX macro packages.
(Macro packages are also called “formats”.)
MeX is an adaptation of PLAIN TeX and LaTeX (v.209) formats to the
Polish language and to the Polish printing customs.

MeX consists of:

    – a set of fonts containing Polish diacritical characters and
       extra quotation marks (a complete set of METAFONT sources);
    – hyphenation rules for the Polish language;
    – TeX macro files, called MeX and LaMeX, providing necessary
       tools for typesetting in Polish (the files are included
       in the source form).

Since MeX was developed chiefly for native Poles to typeset text
written in the Polish tongue (thus for the people able to understand
Polish documentation) this is rather a short description of the MeX
package, meant for particularly curious TeXers and METAFONTers.
The ultimate documentation, as always, are the source files.

Authors
=======

Fonts:
       Bogusław Jackowski (BJ) & Marek Ryćko (MR).
       consultant: Roman Tomaszewski

Formats MeX & LaMeX (Polish versions of the PLAIN and LaTeX209 macro files):
       MR & BJ.

Polish hyphenation patterns:
       Hanna Kołodziejska (HK),
       BJ & MR.
       (See “The history of MeX” below.)

Rules
=====

The MeX package belongs to the public domain.

This package is distributed with no warranty of any sort.
The authors accept no responsibility for the consequences of using this
software.

Each user must comply with all conditions specified by D. E. Knuth
regarding the use of TeX, METAFONT and related software.

Contacts
========

The authors can be reached via the Polish TeX Users Group
(Polska Grupa Użytkowników Systemu TeX – GUST).

The current address is:

Polska Grupa Użytkowników Systemu TeX – GUST
Pl. Rapackiego 1
87-100 Toruń
Poland
http://www.gust.org.pl

Any comments regarding the MeX package are welcome.

The history of MeX
==================

The MeX package has been developed in MacroSoft Ltd, Warsaw, Poland.

The previous version of the adaptation of TeX to the Polish language was
called LeX. It contained a macro file and P1 family of fonts, and was
developed by BJ & MR between November 1987 and December 1989.
MeX is a modification of LeX adjusting it to the TeX 3.x conventions.

The LeX format made use of a set of hyphenation rules originally created
by HK in 1987, adapted to the LeX format and extensively modified by BJ & MR.

The following modifications to the LeX package and hyphenation rules
were done while BJ, HK & MR were employed in MacroSoft Ltd:

 – the hyphenation rules were further improved and adapted to the TeX 3.x
    requirements by HK in July–August 1991,

 – transformation from LeX, version 1.75, to MeX, version 1.01, macro files
    and from P1 to PL, version 1.01 fonts were done by BJ & MR
    during the period October 1991–February 1992.

The authors are grateful to MacroSoft Ltd for providing the opportunity
to carry out this work.

Major changes after the 1.01 release of MeX
===========================================

Version 1.03,  18 December 1992:
    – incorrect behaviour of \notin and related macros eliminated
       (sorry for this error – BJ & MR);
    – added macros \emulateplain and \emulateLaTeX for emulating
       formats plain and LaTeX209 within MeX and LaMeX formats, respectively;
    – discretization of some Polish characters improved;
    – the order of inputting files in METAFONT programs changed
       so that the format file CM.BAS is no longer needed;
    – a few negligible changes introduced, mainly in comments.

Version 1.05,  18 December 1993:
    – next bug (sorry again – BJ & MR) eliminated:
       category codes of several characters corrected;
    – MFJ files placed along with other emTeX files;
       GPLMODES.MFJ adjusted to new versions of Eberhard Mates's drivers;
       other METAFONT files remained intact;
    – the MeX distribution files are no longer packed;
       the LHa program is no longer included.

Version 1.05a, 30 March 2020:
    – Cleared up licensing info in several files of this package: it should
      now be absolutely clear the this package is under Knuth license.
    – Encoding of comments/texts of many files changed to UTF-8.

PL fonts
========
The PL fonts were primarly designed for use with the MeX and LaMeX formats
(Polish versions of the PLAIN and LaTeX209 macro files). Nowadays PL fonts
can also be used with `PLaTeX' package (CTAN:/language/polish/platex-1.0.zip)
that provides tools to typeset documents in Polish using LaTeX2e.

 1. The Polish diacritical letters and quotation marks
 -----------------------------------------------------

    There are nine diacritical letters in the Polish language (altogether
    with majuscules—eighteen):

           a with ogonek
           c with acute accent
           e with ogonek
           l with cross
           n with acute accent
           o with acute accent
           s with acute accent
           z with acute accent
           z with dot accent

     Moreover, the Polish opening quotation mark is like the English
     closing one, but shifted to a baseline (like two commas, `„');
     additionally, in case of nested quotations, French quotation marks
     (`«' and `»') are used in Polish.

 2. The PL layout
 ----------------

    The Polish fonts (PL) are extension of Computer Modern
    fonts (CM), i.e., characters 0–127 are identical in PL and CM,
    while the Polish characters and Polish and French quotation marks
    are placed in higher ASCII positions, namely:

        A with ogonek       – 129         a with ogonek       – 161
        C with acute accent – 130         c with acute accent – 162
        E with ogonek       – 134         e with ogonek       – 166
        L with cross        – 138         l with cross        – 170
        N with acute accent – 139         n with acute accent – 171
        O with acute accent – 211         o with acute accent – 243
        S with acute accent – 145         s with acute accent – 177
        Z with acute accent – 153         z with acute accent – 185
        Z with dot accent   – 155         z with dot accent   – 187

        « (French opening quotes) – 174
        » (French opening quotes) – 175
        „ (Polish opening quotes) – 255

    Note that the Polish diacritical letters have the codes of the Extended
    CM layout (Cork encoding).

 3. A few remarks on the design of the PL fonts
 ----------------------------------------------

   a) The METAFONT programs for letters and for the Polish opening quotes
      are based on the respective CM programs; we decided not to
      exploit a sneaky way of reading CM programs twice (or reading them
      and storing) and modifying `extra_beginchar' and `extra_endchar',
      or so, as we found such an aproach to be inconsistent with
      the general philosophy of the Computer Modern font family design
      (although see, e.g., the program for SS in the CSC font).

   b) Unlike the CM parametric files, the PL ones do not contain lists
      of parameter assignments. Instead, a CM driver file is input
      while processing the corresponding PL driver.

   c) The quotation marks are accessible via ligatures (,, << >>).
      The Polish diacritical letters can be accessed either directly or
      using an active prefix character (slash)—see the description of
      the format MeX. No ligatures are used to form the Polish diacritical
      characters. There are good reasons for doing so.

   d) Since the Polish diacritical letters are not meant to be used as
      math variables, they are not `math_adjusted'.

   e) METAFONT doesn't allow for more than 16 different heights per font;
      because of this limitation the upper half of the ASCII table is
      deliberately left almost empty.

      In spite of that an additional height introduced by accented
      majuscules may cause an automatic adjustation of the remaining
      heights, and it may happen that, e.g., `x_height' will be changed.
      This makes the full compatibility between PL and CM fonts rather
      impossible; let's hope that such incompatible situations will occur
      very rarely.

   f) An attempt was made to avoid introducing extra parameters; in some
      cases, however, such extra (optional) parameters may prove to be
      necessary for the final tunig. All optional parameters are described
      in the file PL_DOD.MF (an additional file for PL fonts; in fact,
      a base format). Examples of use of optional parameters can be found
      in the following files:
        PLB10, PLBX5, PLBX6, PLBX7, PLBX8, PLCSC10, PLDUNH10, PLFI10, PLFF10,
        PLITT10, PLR5, PLR6, PLR7, PLR8, PLR9, PLR12, PLR17, PLSL8, PLSL9,
        PLSL12, PLSSQ8, PLSSQI8, PLTCSC10, PLTI7, PLTI8, PLTI12, and PLVTT10.

   g) PLSY fonts include alternative less-or-equal and greater-or-equal
      signs (like AMSTeX `\leqslant' and `\geqslant'), used in Polish math
      texts; this extension was suggested by Mr. W\l{}odzimierz J. Martin.

   h) PLMI, PLMIB and PLTEX fonts are renamed (for uniformness) CMMI, CMMIB
      and CMTEX fonts. The latter one reflects the layout of the keyboard
      of the computer used by D. E. Knuth (D. E. Knuth, “Computer Modern
      Typefaces,” p. 568); it is unlikely that Polish characters were
      present there.

   i) The design of the Polish diacritical characters in fonts PLR, PLBX,
      PLTT, PLSS, PLTI and PLSSBX was consulted with Mr. Roman Tomaszewski,
      the President of the Polish Division of ATypI (Association Typographique
      Internationale).

      The authors are extremally grateful to him for his advices and for
      the time he devoted to the problem of the Polish version of CM fonts.

      Mr. Roman Tomaszewski died in December 1993.

   j) D. E. Knuth encourages users to generate their own fonts: “Many
      more variations (bold and/or slanted and/or sans-serif) could be
      tried.” he says (“Computer Modern Typefaces”, p. 30). The authors
      of the PL fonts share rather the Roman Tomaszewski's opinion, that one
      should be very, very careful in following this advice.

 4. A few remarks on the design of the Polish diacritical characters
 -------------------------------------------------------------------

   a) The accents over minuscules are very similar to the accents
      that can be obtained using TeX's acute accent (\') operation;
      accents over majuscules, however, are rotated a bit (if serifs)
      or flattened a bit (if not serifs); exceptionally, in the extremely
      slim PLDUNH10 font accents over majuscules are not sloped.

   b) The dot accent over `z' and `Z' is like a dot over the letter `i'.
      The dot accent put by TeX's command `\.' is a bit different, which
      does not look nice in Polish words like `gwi\.zd\.ze' (eng. whistles).

   c) The cross for the polish `l' and `L' is longer and thicker (for `L'
      is bigger than for `l') than the standard CM's cross (TeX commands
      `\l' and `\L').

   d) The programs for the Polish opening quotes are based on the CM's
      closing quotes; the French quotation marks are designed from scratch.

   e) The geometry of an ogonek is very simple: its outer and inner edges
      are single Bézier segments. The algorithm of computing the control
      points for the Bézier curves, however, is admittedly sophisticated.
      This is due to the fact that a wide spectrum of different ogonek shapes
      is in fact to be programmed: one shape is needed for caps, another for
      `a' with ogonek, yet another for `e' with ogonek, as they all have
      different joins. Moreover, a sansserif ogonek differs significantly
      from the serif one, a bold ogonek from a non-bold, an ogonek for hefty
      fonts should still be different. And, if you take into account that
      the basic font unit |u| may change during one session of font
      generation (monospace and caps-small-caps) and that a few different
      pens may be used to draw a single letter you'll understand why
      so many |if| … |else:| … |fi| commands are used in the ogonek
      program.

   f) Implicit kerns are mostly the same for the Polish diacritical letters
      as for the respective Latin ones; although, there are a few exceptions
      (see the files POLAN.MF, POLKUR.MF and POLKAP.MF). The same concerns
      the italic correction inserted after the Polish characters.

 5. METAFONT sources
 -------------------
  The MeX package contains the following METAFONT sources (it is assumed
  that the user has the complete set of CM sources):

      a) Files describing the Polish diacritical characters:

           PL_CUD.MF      PL_DOD.MF      PL_MLK.MF
           PL_DL.MF       PL_ML.MF       PL_SYM.MF

      b) Driver files:

           POLAN.MF   – corresponding to ROMAN.MF
           POLKAP.MF  – corresponding to CSC.MF
           POLKUR.MF  – corresponding to TEXTIT.MF
           POLMAT.MF  – corresponding to MATHSY.MF
           POLTYT.MF  – corresponding to TITLE.MF

      c) Parametric files:

           PLBSY10.MF     PLMI10.MF      PLSSBI36.MF    PLSY5.MF
           PLBXSL10.MF    PLMI12.MF      PLSSBI48.MF    PLSY6.MF
           PLBXTI10.MF    PLMI5.MF       PLSSBX10.MF    PLSY7.MF
           PLBX10.MF      PLMI6.MF       PLSSBX36.MF    PLSY8.MF
           PLBX12.MF      PLMI7.MF       PLSSBX48.MF    PLSY9.MF
           PLBX5.MF       PLMI8.MF       PLSSDC10.MF    PLTCSC10.MF
           PLBX6.MF       PLMI9.MF       PLSSDC40.MF    PLTEX10.MF
           PLBX7.MF       PLR10.MF       PLSSI10.MF     PLTEX8.MF
           PLBX8.MF       PLR12.MF       PLSSI12.MF     PLTEX9.MF
           PLBX9.MF       PLR17.MF       PLSSI17.MF     PLTI10.MF
           PLB10.MF       PLR5.MF        PLSSI8.MF      PLTI12.MF
           PLCSC10.MF     PLR6.MF        PLSSI9.MF      PLTI7.MF
           PLDUNH10.MF    PLR7.MF        PLSSQI8.MF     PLTI8.MF
           PLEX10.MF      PLR8.MF        PLSSQ8.MF      PLTI9.MF
           PLEX9.MF       PLR9.MF        PLSS10.MF      PLTT10.MF
           PLFF10.MF      PLSLTT10.MF    PLSS12.MF      PLTT12.MF
           PLFIB8.MF      PLSL10.MF      PLSS17.MF      PLTT8.MF
           PLFI10.MF      PLSL12.MF      PLSS8.MF       PLTT9.MF
           PLINCH.MF      PLSL8.MF       PLSS9.MF       PLU10.MF
           PLITT10.MF     PLSL9.MF       PLSY10.MF      PLVTT10.MF
           PLMIB10.MF     PLSSBI10.MF

      d) Extra parametric files:

           CMSSBI10.MF
           CMBX11.MF
           CMR11.MF
           CMSL11.MF
           CMTI11.MF
           DLR10.MF

      e) Additional file, being input while METAFONT processes a PL
         parametric file:

           FIK_MIK.MF

      f) Mode file for Linotronic 100 and 300

           LINOMODE.MF

      g) Format file for the MFT program:

           PL.MFT

         This file provides a format for a neat typesetting of the METAFONT
         sources of PL fonts; it is assumed that user has a file MFTMAC.TEX
         (this file may be found, e.g., in emTeX package of Eberhard Mattes
         or in any CTAN:/macros/generic/plain/base/mftmac.tex).

  6. Genarating PL fonts
  ----------------------

      Usually, METAFONT implementation comes up with an additional software
      which facilitates genarating fonts. The MeX package includes data files
      for the MFJOB program of E. Mattes, which controls generating fonts
      by emMF (for details see the documentation of the emTeX package).
      The following files are available:

           G180PL.MFJ   data for generating 180dpi (for 24 pin matrix printers)
                        PL fonts

           G240PL.MFJ   data for generating 240dpi (for 9 pin matrix printers)
                        PL fonts

           G300PL.MFJ   data for generating 300dpi (for HP compatible laser
                        printers) PL fonts

           GPLMODES.MFJ definition of respective modes for MFJOB

Installation of the format (FMT) files
======================================

In order to work with the MeX and LaMeX formats one has to generate
the respective FMT files using INITEX. The following files are necessary:
  MEX.TEX, LAMEX.TEX, MEX1.TEX, MEX2.TEX, MEXCONF.TEX, PLHYPH.TEX.
Moreover, the following files from the standard TeX package should
be available for INITEX:
  PLAIN.TEX, LATEX.TEX, LPLAIN.TEX, LFONTS.TEX, HYPHEN.TEX.

There are data and batch files in the distribution package, facilitating
the process of the generation of FMT files using emTeX (TEX186), namely:
   MAZ2PL.PCT, LAT2PL.PCT, MAZ2PL.TCP, LAT2PL.TCP, MK-TCP.BAT, GM-MEX.BAT,
   GM-LAMEX.BAT, GL-MEX.BAT, and GL-LAMEX.BAT.

The user may change the default behaviour of the formats changing
the MEXCONF.TEX file (see this file).

User's manual
=============

Polish diacritical letters
--------------------------

Usually, users access the Polish diacritical characters directly
(using a one-character notation).  In some applications, however,
a universal, “device-independent” notation may be convenient. In such
a situation one may switch on the prefix notation (command \prefixing).
This command makes a slash active, and the Polish diacritical characters
are represented as follows:

        /a – a with ogonek            /A – A with ogonek
        /c – c with acute accent      /C – C with acute accent
        /e – e with ogonek            /E – E with ogonek
        /l – l with cross             /L – L with cross
        /n – n with acute accent      /N – N with acute accent
        /o – o with acute accent      /O – O with acute accent
        /s – s with acute accent      /S – S with acute accent
        /x – z with acute accent      /X – Z with acute accent
        /z – z with dot accent        /Z – Z with dot accent

Slash itself is represented by // or by the command \normalslash.

The direct notation is restored by the \nonprefixing command. The Polish
users are supposed to prefere the direct access to the Polish letters, the
more so, as the control sequences may then contain Polish diacritical
characters.

Quotation marks
---------------

Polish opening quote and French quotes are available as ligatures
  ,, << and >> respectively.

Hyphenation
-----------

From the point of view of TeX, the hyphenation rules depend on both language
and font layout. Since there are a few potential layouts for the Polish
diacritical letters (Mazovia, Latin 2, ECM), there are, in fact, a few Polish
languages. The formats MeX and LaMeX provide a mechanism for smooth switching
between different font layouts within one document. The command \layout
(\layout{pl}, \layout{mazovia}, \layout{pone}, \layout{latintwo}) switches
automaticly the respective hyphenation rules (or forbids hyphenating at all,
if there is not enough room in TeX's memory to store all necessary
patterns). After fixing a layout, one can switch forth and back between the
Polish and English languages using the commands \language\polish and
\language\english, resp.

In Polish the words like `blah-blah' should by hyphenated rather
    blah-
    -blah
(note the hyphen preceeding the second line) than
    blah-
    blah.
A special command has been introduced, \=, providing a proper Polish
hyphenation when put instead of an explicit hyphen (blah\=blah); the
subwords may also be hyphenated if necessary. The original (PLAIN) meaning
of \=, macron, is now assigned to the \macron command.

Math mode
---------

The Polish diacritical characters may appear in math formulas (also as
indices) only in text fonts. There are no Polish characters in math italic,
since such characters are never used as single-character names of variables.

Special Polish less-or-equal and greater-or-equal signs (see section 3.g in
the chapter “PL fonts”) are rendered by the macros  \xleq (or \xle) and
\xgeq (or \xge), respecticvely.

Polish names for `tan', `cot', `tanh', `coth' are `tg', `ctg', `tgh', and
`ctgh', respectively. The macros \tg, \ctg, \tgh, and \ctgh can be used to
typeset them.

A new macro, \arc, has been introduced. This macro, when followed by
a function name (e.g., \arc\sin), typesets the word `arc' followed by a tiny
space, followed by the function name. This is a usual way of typesetting
in Polish the names of inverse trigonometric functions.

Bilingual styles for LaMeX
--------------------------

Following the ideas of H. Partl and J. Schrod (implemented in the German TeX),
bilingual versions of the styles article, book, letter, makeidx, openbib,
proc, report and titlepa (renamed to iarticle, ibook, iletter, imakeidx,
iopenbib, iproc, ireport and ititlepa, resp.) have been introduced.  The
commands \captionsenglish \dateenglish, \captionspolish and \datepolish can
be used to switch between the Polish and English languages.

Default values:
---------------

At the beginning of document processing the following defaults hold:
    \frenchspacing
    \nonprefixing
    \layout{pl}
    \language\polish

\MeX and \LaMeX logos
---------------------

In MeX and LaMeX the command \MeX typesets the MeX logo using a current font.
The \LaMeX command is accessible only in LaMeX and typesets the logo using
the \rm font.

Files
=====

The MeX package consists of the following kinds of files:

    1. The documentation files
    2. The TeX files
    3. The METAFONT files

Below is the complete annotated list of all the files forming
the MeX package. Please note that only the complete unchanged
set of files, including the documentation files, may be distributed
(see chapter “Rules”).

1. The documentation files

   MEXINFO.ENG – the file you are reading now
   MEXINFO.POL – a similar (but more detailed) text in Polish

2. The TeX files

   Macro files:
   ------------

        MEX.TEX – Polish version of the PLAIN.TEX macro file
      LAMEX.TEX – Polish version of the LPLAIN.TEX macro file
       MEX1.TEX – an auxiliary file input by MeX and LaMeX
       MEX2.TEX – another auxiliary file input by MeX and LaMeX
    MEXCONF.TEX – a configuration file for MeX and LaMeX
     PLHYPH.TEX – Polish hyphenation patterns

   Input filter files for emTeX (the TeX implementation by E. Mattes):
   -------------------------------------------------------------------

     MAZ2PL.PCT – conversion table from the Mazovia to PL encoding
     ISO2PL.PCT – conversion table from the ISO 8859-2 (ISOLatin2) to PL encoding
     LAT2PL.PCT – conversion table from the IBM Latin2 (CP852) to PL encoding
     WIN2PL.PCT – conversion table from the Windows CP1250 to PL encoding
     MAZ2PL.TCP, ISO2PL.TCP, LAT2PL.TCP WIN2PL.TCP –
                 ditto, the version for INITEX
     MK-TCP.BAT – batch file for translating from PCT to TCP

   The DOS system batch files for generating the MEX.FMT and LAMEX.FMT files:
   --------------------------------------------------------------------------

      GM-MEX.BAT – generate MEX.FMT    (with built-in Mazovia filter)
    GM-LAMEX.BAT – generate LAMEX.FMT  (with built-in Mazovia filter)
      GI-MEX.BAT – generate MEX.FMT    (with built-in ISO 8859-2 filter)
    GI-LAMEX.BAT – generate LAMEX.FMT  (with built-in ISO 8859-2 filter)
      GL-MEX.BAT – generate MEX.FMT    (with built-in IBM Latin 2 filter)
    GL-LAMEX.BAT – generate LAMEX.FMT  (with built-in IBM Latin 2 filter)
      GW-MEX.BAT – generate MEX.FMT    (with built-in CP1250 filter)
    GW-LAMEX.BAT – generate LAMEX.FMT  (with built-in CP1250 filter)


   Additional style files for LaMeX
   --------------------------------

    IARTICLE.STY     IMAKEIDX.STY      IREPORT.STY
    IBOOK.STY        IOPENBIB.STY      ITITLEPA.STY
    ILETTER.STY

3. The METAFONT files are listed in the section describing fonts.

Acknowledgements
================

We are indebted to many people who helped us in the long-lasting
project of adjusting TeX to the Polish language.

Listing all of them is impossible. Nevertheless, we would like to
express particularly warm thanks to the following persons:

    Andrzej Blikle
    Włodzimierz Bzyl
    Jacek Leszczyłowski
    Marian Łakomy
    Włodzimierz J. Martin
    Frank Mittelbach
    Grażyna Nowak
    Andrzej Odyniec
    Piotr Pianowski
    Tomasz Przechlewski
    Stanisław Szczyciński
    Roman Tomaszewski
    Stanisław Wawrykiewicz
