diff options
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/etex/base/NTS-FAQ | 1015 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/knuth/etc/virtual-fonts.knuth | 633 | ||||
-rw-r--r-- | Master/texmf-dist/doc/plain/plain-doc/csname.txt | 1892 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/asciichart/ascii.tex | 189 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/patgen/patgen2.tutorial | 331 |
5 files changed, 4060 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/etex/base/NTS-FAQ b/Master/texmf-dist/doc/etex/base/NTS-FAQ new file mode 100644 index 00000000000..1dd051f1e83 --- /dev/null +++ b/Master/texmf-dist/doc/etex/base/NTS-FAQ @@ -0,0 +1,1015 @@ +Date: Tue, 31 Jan 1995 21:15:16 +0100 +Sender: NTS-L Distribution list <NTS-L@DHDURZ1.EARN> +From: "J%org Knappen, Mainz" <KNAPPEN@VKPMZD.KPH.UNI-MAINZ.DE> +Subject: Frequently asked questions of NTS-L, 5th edition +X-To: nts-l <nts-l@dhdurz1.bitnet> +To: Multiple recipients of list NTS-L <NTS-L@DHDURZ1.EARN> + + Frequently Asked Questions of NTS-L + +Fifth edition +Date: 31-JAN-1995 +Archive name: nts-l-faq +Currently maintained by: knappen@vkpmzd.kph.uni-mainz.de (J%org Knappen) + +Remark about the format: + +This faq is divided into several sections and subsections. Each section +contains a subsection general with some ideas which have not yet been +discussed. I added a date to some subsections to allow you to retrieve +fuller discussions from the archives. The transactions of this group are +archived on + + ftp.th-darmstadt.de [130.83.55.75] *) + directory pub/tex/documentation/nts-l + +Each file in this directory is named yymm, where (guess :-) yy is the +year and mm is the month when the mail arrived. (I.e., all postings +of one month are bundled in one file.) +*) Avoid using the number above ... it is subject to changes. + +Related stuff which is very worth reading you can find on the CTAN archives +under tex/info/tex-implementors. In addition, I recommend reading the list +of TeX bugs (tex-archive/systems/knuth/errata/tex82.bug). + +-1. Contents + +0. About NTS +1. Proposed features of a New Typesetting system +1.1. Improvement of Quality +1.2. Internationality +1.3. New Look and Feel +1.4. Changing the ligaturing algorithm +1.5. Writing more than one dvi-file +1.6. Anchors +1.7. dump/restore mechanism +2. Proposed additions to TeX (concrete new primitives) +2.1. \lastmark etc. +2.2. \system +2.3. \skylineskiplimit, \skylinehorizontallimit +2.4. \directioncode +2.5. \textcode +2.6. \afterfi +2.7. \interactionmode +2.8. \mathspacing +2.9. \inputescapechar +2.10. \middle +2.11. \outputunit +2.12. \protected +2.13. \scantokens +2.14. \deferred +2.15. \everyeof +2.16. \readline +2.17. \evaluate +2.18. \ifevaluate +2.19. \everyeof +2.20. \fancyprompt +3. Metaremarks +3.1. TeX is not perfect +3.2. In which language shall NTS be written +3.3. The TeX language +3.4. The TeX engine +3.5. Extensions and Enhancements +4. Deviations +4.1. Automated Kerning +4.2. About Lout +5. Proposed changes to METAFONT +5.1. Writing to auxiliary files +6. Proposed changes to the tfm file format +6.1. Vertical kerning +6.2. Cross-font ligatures +7. Proposed changes to the dvi file format +7.1. Horizontal and Vertical Mirroring +7.2. Rotation of a glphy by 180 degrees +8. Additions to the TeX kit +8.1. dvicopy +8.2. dv2dp and dp2dv +8.3. gftotxt +8.4. qdtexvpl +8.5. fontinst +8.6. afmtotfm +8.7. dvipaste +8.8. METAPOST +8.9. Tie +8.10. dvi2dvi +9. Existing extensions to TeX +9.1. TeX-XeT +9.2. TeX--XeT +9.3. MLTeX +9.4. SiSiSi +9.5. Japanese TeX + +0. About NTS (Mar 93, see also Jul 92) + + At DANTE '93, held at the Technical University Chemnitz last week, Joachim + Lammarsch, President of Dante, announced that the NTS project which had been + started under the aegis of DANTE, was to be re-formed under a new + co-ordinator, Philip Taylor. The old core group, announced at the previous + annual DANTE meeting, was to be dissolved, and a new core group established. + Membership of the new core group will not be restricted to DANTE members, + but will instead be offered to various well-known names (and some + lesser-known!) in the international TeX community. + + see also: + F. Mittelbach: E-TeX Guidelines for future TeX, TUGboat v11n3 (1990) + P. Taylor: The future of TeX, EuroTeX'92 Prag (Proceedings); reprinted + in TUGboat v13n4, 433 (1992) + + As of September 1994, there are two activities going on, the ETeX group + is working on a extension of TeX and is going to produce a first ETeX soon. + The NTS group takes the path to reimplement TeX in common LISP to get + a deeper understanding of how the modules of TeX are cooperating which + eachother. + + Independently, the Omega project was launched to produce a typesetting system + which uses unicode as internal code and can handle arbitrarily encoded input + via filters. + + The beforementioned projects were presented at the 1994 TUG meeting at Santa + Barbara and at the EuroTeX'94 conference at Gdansk. For more information, + consult the respective proceedings. For the Omega project exists a mailing + list, omega@ens.fr. To subscribe, send an e-mail to LISTSERV@ens.fr. + + Omega is now announced to be presented at March 16, 1995 at CERN (Geneva). + +1. Proposed features of a New Typesetting system + +1.1. Improvement of Quality + +1.1.0 General: + Optimised page breaking, avoiding ``rivers'', letterspacing (see also 4.1), + Hyphenation (Haupt- und Nebentrennstellen), grid typesetting + +1.1.1 Skyline approach to line breaking (Mar 93) + +You can break paragraphs as usual with the current model, where all +lines are simple rectangular boxes. If there's no necessity to insert +\lineskip, then you don't have to look at the skyline. Only if two +lines are too near (e.g. distance<\lineskiplimit), you have to look +into the two rectangular boxes and to check if the boxes inside +overlap at one or more places. +For the worst case (i.e., you have to look at the skyline for all +pairs of lines) processing the skyline model consumes a lot of process +time, but this shouldn't hinder us to test this idea and look at the +results. + +Btw, the skyline model seems to be easy to implement in the current +TeX, because we need only some changes when the finally broken lines +of the paragraph are put on the vertical list. There are more changes +needed in the code, if the line break should be changed for the cases +where it is possible to avoid an overlap with other break points, but +IMHO it's nonetheless a relatively small change. + +Additionally you have to introduce some new parameters. I think of +something like: + \skylineskiplimit (b) + minimum vertical distance between two boxes + \skylinehorizontallimit (a) + minimum horizontal distance + + +line 1: ------------ + % % + % % ---------- + ------- <== (a) ==> % % + ~ % % + (b) % ------- + v % + ---------------------- +line 2: + +and other parameters, but the necessary parameter set, realization, +etc. for "skylines" are subject of discussion. + + +1.2. Internationality + +1.2.0 General: + Typesetting in arbitrary directions, unicode support (16bits), ISO10646 + support (32bits), ligatures pointing to other fonts, vertical kerning, + better accent handling (\topaccent and \botaccent) + + Remark: UTF-8 (UNICODE) can be handled with `TeX classic', LaTeX2e + support is provided by the CJK package written by Werner Lemberg. + +1.2.1 Supporting TeX--XeT primitives for right to left typesetting + TeX--XeT is an existing extension to TeX supporting right-to-left + typesetting an producing a usual dvi-file. TeX--XeT is written by + P. Breitenlohner and freely available. It is different from TeX-XeT + (one hyphen only). Allthough TeX will be frozen at version $\pi$, + this is not true for TeX--XeT. (see also 9.2) + +1.3. New Look and Feel + +1.3.0 General + Windows support, wysiwyg-like features + +1.3.1 Interaction with the operating system and other programmes + see 2.2. \system + +1.4. Changing the ligaturing algorithm + Replace the (IMHO over-)optimized ligature builder/kerning routines in + TeX by routines which separate between the building of ligatures and + the insertion of kerns between the characters/ligatures. + + This can be realized in a simple way by using two passes: in the + first pass the ligatures are built and in the second pass the + resulting ligatures and remaining single characters are used to + determine the necessary kerns. + + To ensure compatibility between e-TeX and TeX, it will be possible to + switch between the new and the current behaviour. + + Additionally a flag in the TFM file of each font can be used to + specify which behaviour is to be used for the font. This ensures that + "old" fonts with some tricky ligature/kerning programs depending on + the old behaviour can still be used with e-TeX. (I don't know if this + font dependent switching is really necessary. Comments, please!!) + + Example: + + A font contains the following ligatures and kerns: + + o " => ligature (o") (= \"{o}) + V o => kern(-smallkern) + V lig(o") => nothing + + Input: V o " + Output of current TeX: V kern(-smallkern) ligature(o") + Output with change: V ligature(o") + + Status: + + Bernd Raichle has written a simple, but running reimplementation of TeX's + ligature/kerning routine (in CommonLisp), which still waits to be + rewritten as a TeX.web change file. + The ligature builder/kerning routine is realized in one pass; kerns + are introduced in a delayed manner, i.e., after we are sure that + there's no possibility for a ligature. + Additionally there's a switch between the current TeX and the new + behaviour. (The TRIP test fails with the new behaviour.) + +PS: IMHO the ligature/kerning routines should be further changed to + remove the `shelf{}ful' anomaly (see TeXbook, exercise 5.1), i.e., + reinserting ligatures when words are hyphenated. + The change should allow ligatures for inputs like `f{}f' or + `f\relax f', which will simplify the macros in `german.sty', + Babel and changed macros for \", \', ... which are used to select + characters from DC fonts or other fonts with national characters. + +1.5. Writing more than one dvi-file (Nov 94) + I want to have TeX ready in the memory and avoid loading it anew and anew + for each run again which costs lots of startup time, if you have to load + every file via NFSS. + The idea I am toying with is to have something like + \level + which clones the current state of TeX and allows to start a new dvi-file. + Then you do anything you want (start even another \level) and at last you say + \exit + which performes like \end, except that it restores exactly the state before + the last cloning. + To communicate some information to the waiting lion, there may be one + exeption. You say + \exit{some_integer_number} + and this number can be read by using + \exitstatus. + Applications are many. If you have a format which usually requires several + runs, you can do all the runs within one job, and automatically decide, + whether a further run is necessary. Of course, you should device your format + to have a counter maxruns to avoid endless looping... + +1.6. Anchors (Nov 94) + Proposed by Jiri, an ``anchor point'' would be in some senses + be analogous to a mark, but rather than recording textual information it + would instead record the co-ordinates of itself, relative to the reference + point of the smallest surrounding box. Additional new primitives would + be required to return the co-ordinates of a specified anchor point. + +1.7. dump/restore mechanism + I'd suggest something much simpler, but also more general: Include \dump in + all versions of TeX. The initex/virtex distinction is simply not worth the + bother of retaining any more - the memory differences are trivial in modern + terms. \dump should ideally also be extended to allow dumping from inside of + a group. + Once you do this, it becomes possible to write programs to analyze format + files. Since the analysis programs would not be part of TeX proper, they can + be as elaborate as anyone might want to make them. Sorting would be no + problem, for example. + None of this would cost anything in TeX itself, and except for the ability + to \dump inside a group, if added, would not even have an effect on whether + the resulting E-TeX is properly "TeX", since it would be invisible to any + possible trip test. + +2. Proposed additions to TeX (concrete new primitives) + +2.0. General (Jun 92, Jul 92, Aug 93, Nov 94) + A rather long list of proposed primitives (more or less worked out) was + posted by Karl Berry on 10-Jun-1992. It contains suggestions like: + \elseif (selfexplaining), \format{foo} (allow the author to select a format), + \host{name} \host{os} \host{type} \getenv to extract host information + \TeXversion, \usertime, \everyeof, and others. + + It is currently not possible to get some information about the current + mode of TeX and make conditionals dependent on it and/or restore it after + some action (see 2.7. \interactionmode). More of this kind are a + conditional or primitive to signal, when TeX is in "expand only" mode + (\edef, \mark, \write, ...), when TeX is scanning numbers (here I'm + thinking---and hating---german.sty's active doublequote, which can also + be used as a marker for hexadecimal numbers), when TeX is peeking for + some special tokens (first column in an \halign), etc... + + A list of new primitives, enhancements and extensions has been prepared + on the NTS meeting at Lindau in October 1994. It was posted to this list in + November 1994 and provoked plenty of discussions and additional suggestions. + Under the discussed primitves were \bind, \contents<box#>, \futuredef, + \ifdefined, \ifcsname ... \endcsname, \unless, \OSname, \defaultextension. + +2.1. \lastmark etc. (Jun 92, Jul 92) + Currently you cannot remove a \write or \mark or + \insert or rule from any list at all. If we allow them to removed, how + will the commands appear to the user? If we have \lastmark like + \lastbox, then perhaps we need a mark data type so that we can say something + like \setmark0=\lastmark. It will probably be difficult + in the case of \insert's to think of a good command syntax. + + Perhaps \lastpenalty, \lastkern, \lastskip should + remove the penalty, kern, skip, ... so that they are consistent with + \lastbox. Then \unpenalty, \unkern, and \unskip would be unnecessary. + (Of course most macro packages would probably want to reimplement them, + as macros: \def\unpenalty{\count@\lastpenalty}, + \def\unkern{\dimen@\lastkern}, \def\unskip{\skip@\lastskip}.) + +2.2. \system (Mar 93) + +2.2.0 General + Oops, this got rather longish, but this topic has caused plenty of traffic. + I decided to quote directly the positions of both sides. The subpoints are + 1. Pro 2. Contra 3. Syntax + +2.2.1 Pro + First comes the proposal as formulated by Phil Taylor: + + There has been much discussion on how a \system primitive might interact + with different operating systems, each with different functionality and a + different syntax. My idea was to extend the concept of a `TeX + implementation', which at the moment implies the creation and application + of a change-file to the master TeX source, to include an implementation- + specific macro library. Thus each implementor, as well as creating and + applying a change file, would also be responsible for mapping a well-defined + set of macros, through the \system primitive, to the syntax and + functionality of the operating system for which he or she has assumed + responsibility. To cite a specific example: + + Assume that in e-Lib (a hypothetical macro library to accompany e-TeX), + a macro \sys$delete_file {<parameters>} is partially defined; then each + implementor would be responsible for mapping \sys$delete_file {<parameters}> + to his or her own implementation of \system. e-Lib would define the effect + and the result(s), \system would provide the interface, and the implementor + would be responsible for providing the mapping. + + The question has been asked: ``Why via \system and macros? Why not via + explicit primitives to carry out the various functions that are envisaged?'' + + To which I would suggest that the answer is ``Because `the various functions + which are envisaged' is both enormous (requiring many new primitives), and + yet not large enough (because no matter what functionality we posit, someone + will come up with an idea that has not been considered).'' By implementing + just one \system primitive, and an extensible e-Lib macro library, one can + create a robust and well-tested e-TeX whilst allowing new system interactions + to be added at the simplest points: through the implementation-independent + and implementation-specific components of e-Lib. + +2.2.2 Contra + And here's from the ``Minority Report'' (Tim Murphy and J"org Knappen) + + May I recall the immortal words of Ken Thompson, + "A program should do one thing, and do it well." (TM) + + I don't like the hackers to decide, making eTeX yet another programme from + which I can send e-mail and read news :-) Maybe people will tell me eTeX is + a fine operating system, but TeX version $\pi$ is the better typesetter :-) + + But there is another side of \system, I want to call it the monstrosity + side. Many people are thinking now, that TeX is a monster and difficult to + tame. \system will add to this monstrosity. It will create a new paradise + for hackers creating system hacks. And it will make people turn away from + eTeX and use other products, even if they are far less secure. (JK) + +2.2.3 Syntax + If a \system command is required, should it not have a similar syntax + and semantics to the a similar TeX command. I can't think of anything + else in TeX (prepares to be shown wrong) that expands in the mouth and + has side-effects. Should it not be like \read, \write etc. that is it + generates a whatsit that is obeyed at shipout, unless preceded by an + \immediate, in which case it is done immediately by the stomach. + There seem to be two obvious syntaxes, one like \write: + \system{foo} or \immediate\system{foo} + and one like \read: + \system{foo} to \baz or \immediate\system{foo} to \baz + The latter one would produce the exit code into \baz. Should this be + done with catcode 12 characters, or should it be done like \read, with + the current catcodes? + +2.3. \skylineskiplimit, \skylinehorizontallimit + see section 1.1.1 + +2.4. \directioncode (May 1993) + A \directioncode (with syntax analogous to \uccode, \lccode, sfcode) to be + assigned to each input character. The basic ones are + 0 -- transparent (space, full stop...) + 1 -- left-to-right (latin letters, digits...) + 2 -- right-to-left (hebrew letters, arab letters...), + a truly international NTS will also have codes for vertical typesetting + and some special cases. + + The question is how to use this idea consistently. One could extend the + notion of TeX's modes. Horizontal mode is in fact left-to-right mode, a + right-to-left mode is missing. To be complete, this mode will be equipped + with boxen and all the stuff TeX's left-to-right (aka horizontal) mode has. + + At the beginning of a paragraph NTS decides which mode to choose by the + \directioncode of the first input character. Sometimes the first character + will have the wrong code, in this case the insertion of an explicit + control sequence (like \lrbox{}) is necessary. If a character with another + directioncode occurs, NTS starts a \rlbox and finishes it as soon as a + character with the original \directioncode appears or at the end of the + paragraph. + + For the building of right-to-left tables a \rlalign is needed. + +2.5. \textcode (Sep 93, Nov 93) + Some of the character coding discussions in the Technical Working + Group on Multiple Language Coordination and some experiences I've made + with `german.sty' (specially the problems with an active doublequote + and hex integer constants!) lead to this _incomplete_ proposal/idea + for the following addition: + Introduce something like + \textcode (and \textchar & \textchardef) + which are the text (hmode) equivalent of TeX's \mathcode (and + \mathchar/\mathchardef) primitives. + + With an equivalent and appropriate implemented \textcode primitive + (with the choice to define a character as "pseudo-active"), it would + be possible to + * relate characters to different fonts + (using a generalized `fam' of \mathcode) + + * suppress expansion of active characters (it will only be + expanded, if it is read to form the hlist) + (using an equivalent \mathcode="8000 value) + [This point allows the use of e.g. a pseudo-active " + which expands to non-expandable tokens and it removes + the special construct \relax\ifmmode... for active + characters, too.] + +2.6. \afterfi (August 1993) + In the answer to an exercise of the ``Around the Bend'' series, Michael Downes + realised the non-existence of an \afterfi primitive (Note: He did not + demand it nor really miss it). Perhaps an \afterfi can + simplify some obscure mouth-only macros with nested conditionals??? + \afterfi should be expandable, because \if...\fi is expandable. + +2.7. \interactionmode (Nov 93, was: \currentinteractionmode) + Add a new count register \interactionmode, which reflects the user + interaction level with the following values: + <= 0 batch_mode + = 1 nonstop_mode + = 2 scroll_mode + >= 3 error_stop_mode + + The commands \batchmode...\errorstopmode, the "options" 'Q', 'R', 'S' + in the interactive error routine and all other TeX internal + interaction level changes (e.g. after an interruption) access this new + register. The level changes in the interactive error routine and the + old commands should always work, even if the symbol \interactionmode is + redefined (this means that the user can redefine \interactionmode, but the + commands \batchmode...\errorstopmode still work). + + Examples: + + \ifnum\interactionmode<1 \AskUser \else \UseDefault \fi + + {\interactionmode=0 % switch to \batchmode + \global\font\test=xyz10 % try to load font + }% % restore former interaction level + % ... now test if font has been loaded + % without error (i.e. != nullfont) + +2.8. \mathspacing (Nov 93) + Add a new count register array \mathspacing with 64 entries (we really + need only 64-8=56 entries, because some of them are never used, but to + simplify things 64 are used) with the following syntax: + + \mathspacing <num1>=<num2> % 0 <= <num1> <= 63 + + The spacing specified in number <num2> is inserted between the two + math atom types specified in number <num1>. The two numbers are coded + as + + <num1> = <left_atom_type> * 8 + <right_atom_type> + <num2> = ( (<display_spacing> * 256 + <text_spacing>) * 256 + + <script_spacing> ) * 256 + <scriptscript_spacing> + + This means that <num1> is easily expressed in octal and <num2> in + hexadecimal notation. + + <..._atom_type> is one of the following seven types: + + 0 ordinary 1 large operator + 2 binary operation 3 relation + 4 opening 5 closing + 6 punctuation 7 delimited subformula + + <..._spacing> can be specified separately for each of the four math + styles (display, text, script and scriptscript) with the following + values: + + 0 no space + 1 thin space (specified by \thinmuskip) + 2 medium space ( -- " -- \medmuskip) + 3 thick space ( -- " -- \thickmuskip) + + 4-255 reserved for other things + (e.g. other spacings and/or additional penalties, + like \relpenalty, \binoppenalty, ...) + + For more information see TeXbook, pp. 170f & Appendix G and TeX--The + Program, \S 764ff. + + Examples: (using TeX's standard spacing) + + Between an `ordinary' (= 0) and a `relation' (= 3) atom a thick + space (= 3) is inserted, but not in script or scriptscript style. + + \mathspacing '03 = "0033 + + Between a large operator (= 1) and an ordinary (= 0) atom a thin + space (= 1) is inserted: + + \mathspacing '10 = "1111 + + Necessary changes for the sketched proposal are very simple to + implement. + The syntax of \mathspacing is awful, but this is true for \mathcode, + \delimitercode, etc.etc., too. + +2.9. \inputescapechar (Nov 93, alternative names were proposed during + discussion) + Use two new internal count registers \inputescapechar and + \outputescapechar to specify the "escape" character to be used for + unprintable characters. + If \inputescapechar is not in [0..255], TeX's behaviour is used, + i.e., two equal characters with category 7 are used as a prefix for a + ~~x notated character, otherwise two characters with code + \inputescapechar are used for this prefix. + If \outputescapechar is not in [0..255], the character `~' is used + when an unprintable character has to be written. + + The default values of these two registers are + \inputescapechar = -1 + \outputescapechar = `~ + to be compatible with TeX's standard behaviour. + +2.10. \middle (Jan 94) + Generalize the syntax of \left<delimiter> <formula> \right<delimiter> + to allow one or more optional \middle delimiters, + \left<delimiter> <formula> \middle<delimiter> <formula> \right<delimiter>. + + The middle delimiter grows to the same height as the left and right ones. + Constructions of this kind are used throughout quantum mechanics (Dirac + notation), e.g. + $$ + \left\langle A \middle% \hat{O} \middle% B \right\rangle + $$ + By default, the \middle element is \mathrel, you can make it + \mathord by embracing it {\middle %}. + + +2.11. \outputunit (Dec 93) + \outputunit unit to be used when e-TeX shows some dimen or glue + value + Usage: \outputunit=<unit of measure> (s. TeXbook p. 270) + Rationale: + + Currently TeX forces the user to think in points when it outputs any + dimen or glue value (e.g. when issueing an overfull hbox warning). + But a program should adapt to the conventions of the user instead the + other way round. The addition of \outputunit whould make TeX much + more user-friendly, since only a few people are thinking in points. + +2.12. \protected (new prefix for macro definitions) (Nov 94) + Analogous to \long, \outer, etc., causes the associated macro to be + non-expanding in contexts where such behaviour is likely to be undesirable + (in particular in \writes and \edefs); an explicit \expandafter \empty + may be used to force expansion in these circumstances. + +2.13. \scantokens (Nov 94) + Allows an existing token-list to be re-input under a different catcode regime + from that under which it was created; as it uses all of TeX's present \input + mechanism, even %%ff notation will be interpreted as if \input. Causes an + `empty filename' to be input, resulting in `( )' appearing in the log file + if \tracingscantokens (q.v.) is strictly greater than zero. If the token + list represents more than one line of input, and if an error occurs, then + \inputlinenumber will reflect the logical input line from the token list + rather than the current input line number from the current file. + +2.14. \deferred (Nov 94) + At the moment, only \writes are deferred; there are cases when it would + be desirable for other things, too, to be expanded only during \shipout, + and \specials are one of these. (See also 2.2.3) + +2.15. \everyeof {<balanced text>} + Provides a hook whereby the contents of a token list register may be + inserted into TeX's reading orifice when end-of-file is encountered + during file reading. Would not be invoked of the file indicated + logical e-o-f through the medium of \endinput. Proposed by Phil + to allow clean processing of file-handling code which requires + a (sequence of characters yielding) \else or fi to be found in a + file, where no such sequence can be guaranteed. + +2.16. \readline <integer> to <cs> (Nov 94) + Allows a single line to be read from an input file as if each character + therein had catcode 12. Intended to be used for verbatim copying + operations, in conjunction with \scantokens, or to allow error-free parsing + of `foreign' (non-TeX) files. + +2.17. \evaluate {<arithmetic expression>} (Nov 94) + Intended for use on the r-h-s of \count, \dimen and \skip assignments, + it would allow the use of infix arithmetic operators such as +, -, * and /; + the type of the result would, in general, be the type of the simplest operand + forming a part of the expression, and the normal semantics of TeX would allow + this to be further coerced where necessary. Parenthesised sub-expressions + would be allowed. + + Additional operations were proposed: trigonometric functions, square + root, pythagorean addition (METAFONT's `++'), angle{<delta_x, delta_y>}. + +2.18. \ifevaluate{<boolean expression>}....\else....\fi (Nov 94) + The boolean expression should allow for the usual operators like + .not., .and., .or., .xor., =, >, <, <=, etc., if feasable it should also + allow the evaluation of arithmetic expressions. Some functions are needed + to get information old TeX \if's know now, I propose the name + \query<whatever> to these functions. + + At the moment I see need for the following \query<whatever> functions: + \queryeof returns `1' if eof, `0' else + \querymode returns `0' in the infamous `no mode' (do we need to + differentiate finer here? + `1' in vertical mode + `2' in restricted vertical mode + `3' in horizontal mode + `4' in restricted horizontal mode + `5' in math mode + `6' in restricted math mode + With \querymode \ifmmode, \ifhmode, \ifvmode, and \ifinner can be emulated. + \querydefined{\cs} `1' if defined, `0' else + \querycsname...\endcsname (ditto) + +2.19. \everyeof {<balanced text>} + Provides a hook whereby the contents of a token list register may be + inserted into TeX's reading orifice when end-of-file is encountered + during file reading. Would not be invoked of the file indicated + logical e-o-f through the medium of \endinput. Proposed by Phil + to allow clean processing of file-handling code which requires + a (sequence of characters yielding) \else or fi to be found in a + file, where no such sequence can be guaranteed. + +2.20. \fancyprompt + allow configuration of the TeX prompt (default `*'), e.g. + *\fancyprompt{eTeX>} + eTeX> + +3. Metaremarks + +3.0. General + Remarks about group efforts vs. one person creating software (Mar 93), + ALGOL 68 as a warning example + +3.1. TeX is not perfect (Jun 92, Jul 92) + The discussion has taken place in June and July 1992. Several details were + worked out, where TeX could be improved. Another point of criticism was + the programming language of TeX in general, several participants prefer a + procedural language over a macro language. + +3.2. In which language shall NTS be written (Mar 93) + In 1992, there was much discussion, in which language an NTS should be + implemented (candidates were LISP, C, and WEB). This has settled in March + 1993 (to PASCAL-WEB), because of the acceptance of the + idea that rather than wait for an ``all-singing, all dancing'' NTS, the + group should develop, in a stepwise manner, small but significant + enhancements to TeX. This implies that the enhancements are implemented as + change files in WEB. + +3.3. The TeX language (Oct/Nov 93) + The TeX language is a simple language in the sense, that it contains only + few concepts. It belongs to the Lisp family. In particular, it's a + list-based macro language with late binding. Actually, that's all one + needs to say to characterize it. + Its data constructs are simpler than in Common Lisp: `token list' is the + only first order type. Glue, boxes, numbers, etc., are engine + concepts; instances of them are described by token lists. + Its lexical analzsis is simpler than CL: One cannot program + it. One can only configure it. + Its control constructs are simpler than in CL: Only macros, no + functions. And the macros are only simple ones, one can't compute + in them. + +3.4. The TeX engine (Oct/Nov 93) + The TeX engine lies below the TeX language. Glue, boxes, numbers, etc. + belong to the TeX engine. The registers of the engine can be changed + by TeX's primitives. However, the latter seem to be quite unregular and + baroque. + +3.5. Extensions and Enhancements (Nov 94) + `Extensions' are basically new primitives which have no effect on the + semantics of existing TeX documents, except insofaras any document which + tests whether such a primitive is, in fact, undefined, will clearly obtain + opposite results under TeX and e-TeX; `enhancements' are more fundamental + changes to the TeX kernel which may affect the semantics of existing TeX + documents even if no new primitive is used or even tested. Such changes + may be, for example, differences in the construction of TeX's internal + lists, or perhaps different hyphenation or ligaturing behaviour. + +4. Deviations + +4.0. General + (empty) + +4.1. Automated Kerning (Oct 92) + Kindersley's "optical kerning": for the purposes of + kerning, each character is replaced by a circle centred on the centre of + gravity of that character; the radius of the circle is determined by the + fourth moment of the character (that is, the fourth root of the sum over + all black pixels of the fourth power of their distance from the centre). On + the UKTUG trip to Kindersley's studio, I tried to extract the reason why + the fourth, as opposed to third or fifth or whatever, moment is used; the + reason is apparently that it "looks right". + + We can construct elaborate schemes for kerning (Kindersley's fourth + moments, FontStudio's (convex?) envelopes, Calamus' eight widths, etc), but + the proof of the typographical pudding is in the eating of the resulting + words, so to speak. + +4.2 About Lout (June 1993) + In June 1993, the new system Basser Lout caused several questions and + suggestions on this list. The following is taken from a short review + of Lout by Bernd Raichle: + + `Lout' is a (yet another) document formatting system, released under + the terms of the GNU General Public License and available on some ftp + servers. + + IMHO it's more like a `troff' (with a better input language and some + newer concepts) than a `TeX'. + + A few citations from the documentation of lout: + + Lout is a high-level language for document formatting, designed and + implemented by the author. The implementation, known as Basser + Lout, is a fully operational production version written in C for the + Unix operating system, which translates Lout source code into + PostScript, a device-independent graphics rendering language + accepted by many high-resolution output devices, including most + laser printers. + [...] + When expert users can implement such applications quickly, + non-experts benefit. Although Lout itself provides only a small + kernel of carefully chosen primitives, + + Lout has 23 primitive operators... missing, for example, the simplest + arithmetical operators (there is only the operator "@Next" which + increases a number by one). + + packages written in Lout and distributed with Basser Lout provide an + unprecedented array of advanced features in a form accessible to + non-expert users. The features include rotation and scaling, fonts, + + These features are mostly based on the output language... Postscript + (if you are looking inside a Lout package, you find large portions of + embedded Postscript code). + + paragraph and page breaking, + + TeX does a better job for these two items, because Lout is missing + most of TeX's paragraph/page breaking parameters. (Note: Lout uses + TeX's hyphenation algorithm and the hyphenation patterns.) + + displays and lists, floating figures and tables, footnotes, chapters + and sections (automatically numbered), running page headers and + footers, odd-even page layouts, automatically generated tables of + contents, sorted indexes and reference lists, bibliographic and + other databases (including databases of formats for printing + references), equations, tables, diagrams, formatting of Pascal + programs, and automatically maintained cross references. + + TeX's math setting abilities are better. Lout uses a package named + `eq' derived from the `eqn' preprocessor used with `troff'. And there + are other packages named `tab' (for tabulars) and `fig' (drawing + figures). + + [...] + Lout is organized around four key concepts -- objects, definitions, + galleys, and cross references -- [...] + + The concept of `galleys' and the "expansion" of recursive defintions + are IMHO the only new concept in Lout: + + `galleys' are a way to describe a page, dividing it in certain regions + which can be filled from different sources (e.g. a footnote galley is + filled with footnote text, etc.). + + Recursive definitions are very simple, e.g. + def @Leaders { .. @Leaders } + defines the command (Lout calls it `object') to "expand" to a `..' and + if there is place for another "expansion" it is called again. + + For example + \hbox to 4in{Chapter 7 \dotfill 53} + is in Lout + 4i @Wide { Chapter 7 @Leaders 53 } + + With this recursive definitions, a whole document is defined as a + @PageList consisting of a @Page and a @PageList with an incremented + @PageNum. A @Page is defined as a set of `galleys' (header, text + body, footnotes, footer), which are also defined as a list of + text/footnotes/... and so on. + + Perhaps others can add more impressions, mine are based on the + documentation coming with the Lout package and some tests done in + 1-2 hours. + +5. Proposed changes to METAFONT + +5.O. General + Most of the General points in the discussion of TeX also apply to METAFONT. + +5.1. Writing to auxiliary files + METAFONT should be able to write to auxiliary files. Desparately needed + for packages which allow to draw figures in METAFONT and label them in TeX + (BoF session at EuroTeX '92, Prague). + + +6. Proposed changes to the tfm file format + +6.1. Vertical kerning (Jun 92) + This may sound exotic to you, but the AFM format can do + it. And I desperately need it for non-Latin alphabets (everytime I need + a character in a ligature raised or lowered, I have to reserve a position + in the font for it). + +6.2. Cross-font ligatures (Jun 92) + Ligatures pointing to other fonts!! Yes, imagine for example that your + 256 chars are full, you could still access characters by ligatures...but + they have to be in the same font. + +7. Proposed changes to the dvi file format + +7.0. General + A longer discussion about colour inclusion into the dvi-file occured in + Oct/Nov 93. The outcome was, that high-quality colour handling is a difficult + and device dependent task, better left to the printer driver. Colour can be + handled by the \special command which is sent directly to the driver. + + On comp.text.tex I saw a remark, that specials may occur on places in the + dvi-file, where TeX can't put them. Maybe eTeX should take care of this + point. + +7.1. Horizontal and Vertical Mirroring (Nov 94) + Allow a glyph to be mirrored in a vertical axis, placed centrally; + mirrored in a horizontal axis, placed at half the x(?)-height. + + It was noted, that the specification of the axes might cause problems. + It was also noted, that several drivers understand specials for the + requested action. + +7.2. Rotation of a glphy by 180 degrees (Nov 94) + This would greatly increase the power of vpl files (e.g. define schwa by + rotating e), and I hope that it would be possible for drivers to implement. + + It was noted, that this is fine, but rotation by 90 degrees cannot be + device independent, because there are printers with rectangular (non-square) + pixels. + +8. Additions to the TeX kit + +8.0. General + The TeX kit, meaning the bundle of programmes building up a complete TeX + installation, contains besides the major programmes TeX and METAFONT + additional programmes, traditionally divided into several groups: + + a) TeXware: dvitype, tftopl, pltotf, pooltype, pktype, patgen, vftovp, + vptovf, (outdated: pxtopk, pktopx) + b) MFware: mft, gftodvi, gftopk, gftype, (outdated: gftopxl) + c) webware: weave, tangle + + And, of course, drivers for the screens and printers. + + Other utility programmes more loosely associated with TeX are indexers + (makeindex, idxtex, glotex, ...) and bibliography tools (bibtex, + bibclean, ...). Makeindex and Bibtex are standard tools, because they + are described in the LaTeX manuals. + + Another group includes drawing programmes (TeXCAD, xfig, gnuplot, ...) to + create graphics to be imported to TeX documents and graphics converters + (ghostscript, xv, bmt2font, ...). + +8.1. dvicopy + Written in WEB by Peter Breitenlohner + Available from CTAN + Resolves all references to virtual fonts in a dvi file. Can be used to + create a dvi file without virtual fonts (e.g. for drivers which cannot + handle vf's). + +8.2. dv2dp and dp2dv + Written in C by Geoffrey Tobin + Available on request from the author + dv2dp makes a human readable file from a dvi file. The companion + programme dp2dv makes a dvi file frome a dvi property list file. + It allows you to change dvi files with a text editor. + +8.3. gftotxt + Written in C by Yannis Haralambous + Available ? + Extracts a certain kind of specials from the gf file into a text file. + Workaround for the famous non-ability of METAFONT to write auxiliary + files. + +8.4. qdtexvpl + Written by Eberhard Mattes + Available from the CTAN archives + Generates a virtual font from TeX macros. qd = quick and dirty. + +8.5. fontinst + Written in TeX by Alan Jeffrey + Available form CTAN + Makes virtual fonts from afm files (PostScript fonts). Used by the LaTeX + team to create virtual fonts and fd files for LaTeX2e. + +8.6. afmtotfm + Written in C by Thomas Rokicki + Available from CTAN (part of dvips distribution) + Makes tfm files from afm files. + +8.7. dvipaste + Part of LAMSTeX (Michael Spivak) + Allows to paste a dvi-file into another one. + +8.8. METAPOST + Written in Web by John Hobby + Now freely available from the CTAN + A tool to build graphics to be included in TeX documents, uses a METAFONT + style language. + +8.9. Tie + Written by Klaus Gunthermann + Available from CTAN + Allows to process multiple change files to a given Web source. A tool + of this kind is needed to build any eTeX distribution, since one has + tex.web, etex.ch, tex.ch-system, and etex.ch-system files to deal with. + +8.10. dvi2dvi + Available from CTAN + Postprocessor for dvi files, allowing e.g. 2-up or 4-up layout of full + pages. + +9. Existing extensions to TeX + +9.0 General + Here I include short description of existing extensions to TeX. This section + does not include commercial TeX implementations because of lack of solid + enough information on them. It also does not yet include ETeX, NTS, nor + Omega. + +9.1. TeX-XeT (Don Knuth and Pierre MacKay) + CTAN: tex-archive/systems/knuth + Adds new primitives \beginR, \endR, \beginL, and \endL for right to left + typesetting. Despite their names, the new primitives are insensitive to + TeX's grouping mechanism. Outputs a special file in dvi-ivd format, which + need be resolved by another programme or requires special drivers. + +9.2. TeX--XeT (Peter Breitenlohner) + Available from CTAN tex-archive/systems/knuth/tex--xet + Implements the same primitives as TeX-XeT, but outputs a normal dvi file. + Passes the trip test (as far as I know). + +9.3. MLTeX (Michael Ferguson) + Available from aldebaran.ee.mcgill.ca in pub/mltex + Adds a primitive \charsubdef, which allows the following: input of 8-bit + characters, participation of accented characters not present in the output + encoding in hyphenation, ligatures and kerning with accented letters. + Especially popular in francophone countries. + emTeX supports MLTeX via the /ml option. + +9.4. SiSiSi (Wilhelm Barth, Heinrich Nirschl, Heini Hofstaedter und Harald + Mueller) + Available from CTAN: tex-archive/systems/vms (sic!) + Implements another hyphenation algorithm (the name means SIchere + SInnentsprechende SIlbentrennung, which is translated `secure sensitive + hyphenation') specific to the german language (with Haupt- und + Nebentrennstellen). Fails the trip test, therefore not a legitimate TeX. + In use at TU Wien (Austria). + +9.5. Japanese TeX + [in preparation] + +The End. diff --git a/Master/texmf-dist/doc/generic/knuth/etc/virtual-fonts.knuth b/Master/texmf-dist/doc/generic/knuth/etc/virtual-fonts.knuth new file mode 100644 index 00000000000..1bc3a2bc405 --- /dev/null +++ b/Master/texmf-dist/doc/generic/knuth/etc/virtual-fonts.knuth @@ -0,0 +1,633 @@ +Date: 08 Jan 90 1727 PST +From: Don Knuth <DEK@SAIL.Stanford.EDU> +Subject: Virtual fonts: More fun for Grand Wizards +Keywords: fonts + +Many writers to TeXhax during the past year or so have been struggling with +interfaces between differing font conventions. For example, there's been a +brisk correspondence about mixing oldstyle digits with a caps-and-small-caps +alphabet. Other people despair of working with fonts supplied by manufacturers +like Autologic, Compugraphic, Monotype, etc.; still others are afraid to leave +the limited accent capabilities of Computer Modern for fonts containing letters +that are individually accented as they should be, because such fonts are not +readily available in a form that existing TeX software understands. + +There is a much better way to solve such problems than the remedies +that have been proposed in TeXhax. This better way was first realized +by David Fuchs in 1983, when he installed it in our DVI-to-APS +software at Stanford (which he also developed for commercial +distribution by ArborText). We used it, for example, to typeset my +article on Literate Programming for The Computer Journal, using native +Autologic fonts to match the typography of that journal. + +I was expecting David's strategy to become widely known and adopted. +But alas --- and this has really been the only significant +disappointment I've had with respect to the way TeX has been +propagating around the world --- nobody else's DVI-to-X drivers have +incorporated anything resembling David's ideas, and TeXhax +contributors have spilled gallons of electronic ink searching for +answers in the wrong direction. + +The right direction is obvious once you've seen it (although it wasn't +obvious in 1983): All we need is a good way to specify a mapping from +TeX's notion of a font character to a device's capabilities for +printing. Such a mapping was called a "virtual font" by the AMS +speakers at the TUG meetings this past August. At that meeting I spoke +briefly about the issue and voiced my hope that all DVI drivers be +upgraded within a year to add a virtual font capability. Dave Rodgers +of ArborText announced that his company would make their WEB routines +for virtual font design freely available, and I promised to edit them +into a form that would match the other programs in the standard +TeXware distribution. + +The preparation of TeX Version 3 and MF Version 2 has taken me much longer +than expected, but at last I've been able to look closely at the concept of +virtual fonts. (The need for such fonts is indeed much greater now than it +was before, because TeX's new multilingual capabilities are significantly +more powerful only when suitable fonts are available. Virtual fonts can +easily be created to meet these needs.) + +After looking closely at David Fuchs's original design, I decided to design +a completely new file format that would carry his ideas further, making the +virtual font mechanism completely device-independent; David's original code +was very APS-specific. Furthermore I decided to extend his notions so that +arbitrary DVI commands (including rules and even specials) could be +part of a virtual font. The new file format I've just designed is called +VF; it's easy for DVI drivers to read VF files, because VF format is similar +to the PK and DVI formats they already deal with. + +The result is two new system routines called VFtoVP and VPtoVF. These +routines are extensions of the old ones called TFtoPL and PLtoTF; +there's a property-list language called VPL that extends the ordinary +PL format so that virtual fonts can be created easily. + +In addition to implementing these routines, I've also tested the ideas by +verifying that virtual fonts could be incorporated into Tom Rokicki's dvips +system without difficulty. I wrote a C program (available from Tom) that +converts Adobe AFM files into virtual fonts for TeX; these virtual fonts +include almost all the characteristics of Computer Modern text fonts +(lacking only the uppercase Greek and the dotless j) and they include all +the additional Adobe characters as well. These virtual fonts even include +all the "composite characters" listed in the AFM file, from `Aacute' to +`zcaron'; such characters are available as ligatures. For example, to get +`Aacute' you type first `acute' (which is character 19 = ~S in Computer Modern +font layout, it could also be character 194 = Meta-B if you're using an +8-bit keyboard with the new TeX) followed by `A'. Using such fonts, it's +now easier for me to typeset European language texts in Times-Roman and +Helvetica and Palatino than in Computer Modern! [But with less than an hour's +work I could make a virtual font for Computer Modern that would do the same +things; I just haven't gotten around to it yet.] + +[A nice ligature scheme for dozens of European languages was just published +by Haralambous in the November TUGboat. He uses only ASCII characters, getting +Aacute with the combination <A. I could readily add his scheme to mine, by +adding a few lines to my VPL files. Indeed, multiple conventions can be +supported simultaneously (although I don't recommend that really).] + +Virtual fonts make it easy to go from DVI files to the font layouts of +any manufacturer or font supplier. They also (I'm sorry to say) make +"track kerning" easy, for people who have to resort to that oft-abused +feature of lead-free type. + +Furthermore, virtual fonts solve the problem of proofreading with screen +fonts or with lowres laserprinter fonts, because you can have several +virtual fonts sharing a common TFM file. Suppose, for example, that you +want to typeset camera copy on an APS machine using Univers as the +ultimate font, but you want to do proofreading with a screen previewer and +with a laserprinter. Suppose further that you don't have Univers for your +laserprinter; the closest you have is Helvetica. And suppose that you +haven't even got Helvetica for your screen, but you do have cmss10. Here's +what you can do: First make a virtual property list (VPL) file +univers-aps.vpl that describes the high-quality font of your ultimate +output. Then edit that file into univers-laser.vpl, which has identical +font metric info but maps the characters into Helvetica; similarly, make +univers-screen.vpl, which maps them into cmss10. Now run VPtoVF on each of +the three VPL files. This will produce three identical TFM files +univers.tfm, one of which you should put on the directory read by TeX. +You'll also get three distinct VF files called univers.vf, which you +should put on three different directories --- one directory for your +DVI-to-APS software, another for your DVI-to-laserwriter software, and the +third for the DVI-to-screen previewer. Voil~~Ra. + +So virtual fonts are evidently quite virtuous. But what exactly are +virtual fonts, detail-wise? Appended to this message are excerpts from +VFtoVP.WEB and VPtoVF.WEB, which give a complete definition of the +VF and VPL file formats. + +I fully expect that all people who have implemented DVI drivers will +immediately see the great potential of virtual fonts, and that they will +be unable to resist installing a VF capability into their own software +during the first few months of 1990. (The idea is this: For each font +specified in a DVI file, the software looks first in a special table to +see if the font is device-resident (in which case the TFM file is loaded, +to get the character widths); failing that, it looks for a suitable GF or +PK file; failing that, it looks for a VF file, which may in turn lead to +other actual or virtual files. The latter files should not be loaded +immediately, but only on demand, because the process is recursive. +Incidentally, if no resident or GF or PK or VF file is found, a TFM file +should be loaded as a last resort, so that the characters can be left +blank with appropriate widths.) + +%--- an excerpt from VFtoVP.web ----------------------------------------------- + +@* Virtual fonts. The idea behind \.{VF} files is that a general +interface mechanism is needed to switch between the myriad font +layouts provided by different suppliers of typesetting equipment. +Without such a mechanism, people must go to great lengths writing +inscrutable macros whenever they want to use typesetting conventions +based on one font layout in connection with actual fonts that have +another layout. This puts an extra burden on the typesetting system, +interfering with the other things it needs to do (like kerning, +hyphenation, and ligature formation). + +These difficulties go away when we have a ``virtual font,'' +i.e., a font that exists in a logical sense but not a physical sense. +A typesetting system like \TeX\ can do its job without knowing where the +actual characters come from; a device driver can then do its job by +letting a \.{VF} file tell what actual characters correspond to the +characters \TeX\ imagined were present. The actual characters +can be shifted and/or magnified and/or combined with other characters +from many different fonts. A virtual font can even make use of characters +from virtual fonts, including itself. + +Virtual fonts also allow convenient character substitutions for proofreading +purposes, when fonts designed for one output device are unavailable on another. + +@ A \.{VF} file is organized as a stream of 8-bit bytes, using conventions +borrowed from \.{DVI} and \.{PK} files. Thus, a device driver that knows +about \.{DVI} and \.{PK} format will already +contain most of the mechanisms necessary to process \.{VF} files. +We shall assume that \.{DVI} format is understood; the conventions in the +\.{DVI} documentation (see, for example, {\sl \TeX: The Program}, part 31) +are adopted here to define \.{VF} format. + +A preamble +appears at the beginning, followed by a sequence of character definitions, +followed by a postamble. More precisely, the first byte of every \.{VF} file +must be the first byte of the following ``preamble command'': + +\yskip\hang|pre| 247 |i[1]| |k[1]| |x[k]| |cs[4]| |ds[4]|. +Here |i| is the identification byte of \.{VF}, currently 202. The string +|x| is merely a comment, usually indicating the source of the \.{VF} file. +Parameters |cs| and |ds| are respectively the check sum and the design size +of the virtual font; they should match the first two words in the header of +the \.{TFM} file, as described below. + +\yskip +After the |pre| command, the preamble continues with font definitions; +every font needed to specify ``actual'' characters in later +\\{set\_char} commands is defined here. The font definitions are +exactly the same in \.{VF} files as they are in \.{DVI} files, except +that the scaled size |s| is relative and the design size |d| is absolute: + +\yskip\hang|fnt_def1| 243 |k[1]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|. +Define font |k|, where |0<=k<256|. + +\yskip\hang|@!fnt_def2| 244 |k[2]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|. +Define font |k|, where |0<=k<65536|. + +\yskip\hang|@!fnt_def3| 245 |k[3]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|. +Define font |k|, where |0<=k<@t$2~{24}$@>|. + +\yskip\hang|@!fnt_def4| 246 |k[4]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|. +Define font |k|, where |@t$-2~{31}$@><=k<@t$2~{31}$@>|. + +\yskip\noindent +These font numbers |k| are ``local''; they have no relation to font numbers +defined in the \.{DVI} file that uses this virtual font. The dimension%|s|, +which represents the scaled size of the local font being defined, +is a |fix_word| relative to the design size of the virtual font. +Thus if the local font is to be used at the same size +as the design size of the virtual font itself, |s| will be the +integer value $2~{20}$. The value of |s| must be positive and less than +$2~{24}$ (thus less than 16 when considered as a |fix_word|). +The dimension%|d| is a |fix_word| in units of printer's points; hence it +is identical to the design size found in the corresponding \.{TFM} file. + +@d id_byte=202 + +@<Glob...@>= +@!vf_file:packed file of 0..255; + +@ The preamble is followed by zero or more character packets, where each +character packet begins with a byte that is $<243$. Character packets have +two formats, one long and one short: + +\yskip\hang|long_char| 242 |pl[4]| |cc[4]| |tfm[4]| |dvi[pl]|. This long form +specifies a virtual character in the general case. + +\yskip\hang|short_char0..short_char241| +|pl[1]| |cc[1]| |tfm[3]| |dvi[pl]|. This short form specifies a +virtual character in the common case +when |0<=pl<242| and |0<=cc<256| and $0\le|tfm|<2~{24}$. + + +\yskip\noindent +Here |pl| denotes the packet length following the |tfm| value; |cc| is +the character code; and |tfm| is the character width copied from the +\.{TFM} file for this virtual font. There should be at most one character +packet having any given |cc| code. + +The |dvi| bytes are a sequence of complete \.{DVI} commands, properly +nested with respect to |push| and |pop|. All \.{DVI} operations are +permitted except |bop|, |eop|, and commands with opcodes |>=243|. +Font selection commands (|fnt_num0| through |fnt4|) must refer to fonts +defined in the preamble. + +Dimensions that appear in the \.{DVI} instructions are analogous to +|fix_word| quantities; i.e., they are integer multiples of $2~{-20}$ times +the design size of the virtual font. For example, if the virtual font +has design size $10\,$pt, the \.{DVI} command to move down $5\,$pt +would be a \\{down} instruction with parameter $2~{19}$. The virtual font +itself might be used at a different size, say $12\,$pt; then that +\\{down} instruction would move down $6\,$pt instead. Each dimension +must be less than $2~{24}$ in absolute value. + +Device drivers processing \.{VF} files treat the sequences of |dvi| bytes +as subroutines or macros, implicitly enclosing them with |push| and |pop|. +Each subroutine begins with |w=x=y=z=0|, and with current font%|f| the +number of the first-defined in the preamble (undefined if there's no +such font). After the |dvi| commands have been +performed, the |h| and%|v| position registers of \.{DVI} format are restored +to their former values, and then |h| is increased by the \.{TFM} width +(properly scaled)---just as if a simple character had been typeset. + +@d long_char=242 {\.{VF} command for general character packet} +@d set_char_0=0 {\.{DVI} command to typeset character 0 and move right} +@d set1=128 {typeset a character and move right} +@d set_rule=132 {typeset a rule and move right} +@d put1=133 {typeset a character} +@d put_rule=137 {typeset a rule} +@d nop=138 {no operation} +@d push=141 {save the current positions} +@d pop=142 {restore previous positions} +@d right1=143 {move right} +@d w0=147 {move right by |w|} +@d w1=148 {move right and set |w|} +@d x0=152 {move right by |x|} +@d x1=153 {move right and set |x|} +@d down1=157 {move down} +@d y0=161 {move down by |y|} +@d y1=162 {move down and set |y|} +@d z0=166 {move down by |z|} +@d z1=167 {move down and set |z|} +@d fnt_num_0=171 {set current font to 0} +@d fnt1=235 {set current font} +@d xxx1=239 {extension to \.{DVI} primitives} +@d xxx4=242 {potentially long extension to \.{DVI} primitives} +@d fnt_def1=243 {define the meaning of a font number} +@d pre=247 {preamble} +@d post=248 {postamble beginning} +@d improper_DVI_for_VF==139,140,243,244,245,246,247,248,249,250,251,252, + 253,254,255 + +@ The character packets are followed by a trivial postamble, consisting of +one or more bytes all equal to |post| (248). The total number of bytes +in the file should be a multiple of%4. + +%------------- and here's an extract from VPtoVF.web -------------------------- + +@* Property list description of font metric data. +The idea behind \.{VPL} files is that precise details about fonts, i.e., the +facts that are needed by typesetting routines like \TeX, sometimes have to +be supplied by hand. The nested property-list format provides a reasonably +convenient way to do this. + +A good deal of computation is necessary to parse and process a +\.{VPL} file, so it would be inappropriate for \TeX\ itself to do this +every time it loads a font. \TeX\ deals only with the compact descriptions +of font metric data that appear in \.{TFM} files. Such data is so compact, +however, it is almost impossible for anybody but a computer to read it. + +Device drivers also need a compact way to describe mappings from \TeX's idea +of a font to the actual characters a device can produce. They can do this +conveniently when given a packed sequence of bytes called a \.{VF} file. + +The purpose of \.{VPtoVF} is to convert from a human-oriented file of text +to computer-oriented files of binary numbers. There's a companion program, +\.{VFtoVP}, which goes the other way. + +@<Glob...@>= +@!vpl_file:text; + +@ @<Set init...@>= +reset(vpl_file); + +@ A \.{VPL} file is like a \.{PL} file with a few extra features, so we +can begin to define it by reviewing the definition of \.{PL} files. The +material in the next few sections is copied from the program \.{PLtoTF}. + +A \.{PL} file is a list of entries of the form +$$\.{(PROPERTYNAME VALUE)}$$ +where the property name is one of a finite set of names understood by +this program, and the value may itself in turn be a property list. +The idea is best understood by looking at an example, so let's consider +a fragment of the \.{PL} file for a hypothetical font. +$$\vbox{\halign{\.{#}\hfil\cr +(FAMILY NOVA)\cr +(FACE F MIE)\cr +(CODINGSCHEME ASCII)\cr +(DESIGNSIZE D 10)\cr +(DESIGNUNITS D 18)\cr +(COMMENT A COMMENT IS IGNORED)\cr +(COMMENT (EXCEPT THIS ONE ISN'T))\cr +(COMMENT (ACTUALLY IT IS, EVEN THOUGH\cr +\qquad\qquad IT SAYS IT ISN'T))\cr +(FONTDIMEN\cr +\qquad (SLANT R -.25)\cr +\qquad (SPACE D 6)\cr +\qquad (SHRINK D 2)\cr +\qquad (STRETCH D 3)\cr +\qquad (XHEIGHT R 10.55)\cr +\qquad (QUAD D 18)\cr +\qquad )\cr +(LIGTABLE\cr +\qquad (LABEL C f)\cr +\qquad (LIG C f O 200)\cr +\qquad (SKIP D 1)\cr +\qquad (LABEL O 200)\cr +\qquad (LIG C i O 201)\cr +\qquad (KRN O 51 R 1.5)\cr +\qquad (/LIG C ? C f)\cr +\qquad (STOP)\cr +\qquad )\cr +(CHARACTER C f\cr +\qquad (CHARWD D 6)\cr +\qquad (CHARHT R 13.5)\cr +\qquad (CHARIC R 1.5)\cr +\qquad )\cr}}$$ +This example says that the font whose metric information is being described +belongs to the hypothetical +\.{NOVA} family; its face code is medium italic extended; +and the characters appear in ASCII code positions. The design size is 10 +points, and all other sizes in this \.{PL} file are given in units such that +18 units +equals the design size. The font is slanted with a slope of $-.25$ (hence the +letters actually slant backward---perhaps that is why the family name is +\.{NOVA}). The normal space between words is 6 units (i.e., one third of +the 18-unit design size), with glue that shrinks by 2 units or stretches by 3. +The letters for which accents don't need to be raised or lowered are 10.55 +units high, and one em equals 18 units. + +The example ligature table is a bit trickier. It specifies that the +letter \.f followed by another \.f is changed to code @'200, while +code @'200 followed by \.i is changed to @'201; presumably codes @'200 +and @'201 represent the ligatures `ff' and `ffi'. Moreover, in both cases +\.f and @'200, if the following character is the code @'51 (which is a +right parenthesis), an additional 1.5 units of space should be inserted +before the @'51. (The `\.{SKIP}~\.D~\.1' skips over one \.{LIG} or +\.{KRN} command, which in this case is the second \.{LIG}; in this way +two different ligature/kern programs can come together.) +Finally, if either \.f or @'200 is followed by a question mark, +the question mark is replaced by \.f and the ligature program is +started over. (Thus, the character pair `\.{f?}' would actually become +the ligature `ff', and `\.{ff?}' or `\.{f?f}' would become `fff'. To +avoid this restart procedure, the \.{/LIG} command could be replaced +by \.{/LIG>}; then `\.{f?} would become `f\kern0ptf' and `\.{f?f}' +would become `f\kern0ptff'.) + +Character \.f itself is 6 units wide and 13.5 units tall, in this example. +Its depth is zero (since \.{CHARDP} is not given), and its italic correction +is 1.5 units. + +@ The example above illustrates most of the features found in \.{PL} files. +Note that some property names, like \.{FAMILY} or \.{COMMENT}, take a +string as their value; this string continues until the first unmatched +right parenthesis. But most property names, like \.{DESIGNSIZE} and \.{SLANT} +and \.{LABEL}, take a number as their value. This number can be expressed in +a variety of ways, indicated by a prefixed code; \.D stands for decimal, +\.H for hexadecimal, \.O for octal, \.R for real, \.C for character, and +\.F for ``face.'' Other property names, like \.{LIG}, take two numbers as +their value. And still other names, like \.{FONTDIMEN} and \.{LIGTABLE} and +\.{CHARACTER}, have more complicated values that involve property lists. + +A property name is supposed to be used only in an appropriate property +list. For example, \.{CHARWD} shouldn't occur on the outer level or +within \.{FONTDIMEN}. + +The individual property-and-value pairs in a property list can appear in +any order. For instance, `\.{SHRINK}' precedes `\.{STRETCH}' in the above +example, although the \.{TFM} file always puts the stretch parameter first. +One could even give the information about characters like `\.f' before +specifying the number of units in the design size, or before specifying the +ligature and kerning table. However, the \.{LIGTABLE} itself is an exception +to this rule; the individual elements of the \.{LIGTABLE} property list +can be reordered only to a certain extent without changing the meaning +of that table. + +If property-and-value pairs are omitted, a default value is used. For example, +we have already noted that the default for \.{CHARDP} is zero. The default +for {\sl every\/} numeric value is, in fact, zero, unless otherwise stated +below. + +If the same property name is used more than once, \.{VPtoVF} will not notice +the discrepancy; it simply uses the final value given. Once again, however, the +\.{LIGTABLE} is an exception to this rule; \.{VPtoVF} will complain if there +is more than one label for some character. And of course many of the +entries in the \.{LIGTABLE} property list have the same property name. + +@ A \.{VPL} file also includes information about how to create each character, +by typesetting characters from other fonts and/or by drawing lines, etc. +Such information is the value of the `\.{MAP}' property, which can be +illustrated as follows: +$$\vbox{\halign{\.{#}\hfil\cr +(MAPFONT D 0 (FONTNAME Times-Roman))\cr +(MAPFONT D 1 (FONTNAME Symbol))\cr +(MAPFONT D 2 (FONTNAME cmr10)(FONTAT D 20))\cr +(CHARACTER O 0 (MAP (SELECTFONT D 1)(SETCHAR C G)))\cr +(CHARACTER O 76 (MAP (SETCHAR O 277)))\cr +(CHARACTER D 197 (MAP\cr +\qquad(PUSH)(SETCHAR C A)(POP)\cr +\qquad(MOVEUP R 0.937)(MOVERIGHT R 1.5)(SETCHAR O 312)))\cr +(CHARACTER O 200 (MAP (MOVEDOWN R 2.1)(SETRULE R 1 R 8)))\cr +(CHARACTER O 201 (MAP\cr +\qquad (SPECIAL ps: /SaveGray currentgray def .5 setgray)\cr +\qquad (SELECTFONT D 2)(SETCHAR C A)\cr +\qquad (SPECIAL SaveGray setgray)))\cr +}}$$ +(These specifications appear in addition to the conventional \.{PL} +information. The \.{MAP} attribute can be mixed in with other attributes +like \.{CHARWD} or it can be given separately.) + +In this example, the virtual font is composed of characters that can be +fabricated from three actual fonts, `\.{Times-Roman}', +`\.{Symbol}', and `\.{cmr10} \.{at} \.{20\\u}' (where \.{\\u} +is the unit size in this \.{VPL} file). Character |@'0| is typeset as +a `G' from the symbol font. Character |@'76| is typeset as character |@'277| +from the ordinary Times font. (If no other font is selected, font +number~0 is the default. If no \.{MAP} attribute is given, the default map +is a character of the same number in the default font.) + +Character 197 (decimal) is more interesting: First an A is typeset (in the +default font Times), and this is enclosed by \.{PUSH} and \.{POP} so that +the original position is restored. Then the accent character |@'312| is +typeset, after moving up .937 units and right 1.5 units. + +To typeset character |@'200| in this virtual font, we move down 2.1 units, +then typeset a rule that is 1 unit high and 8 units wide. + +Finally, to typeset character |@'201|, we do something that requires a +special ability to interpret PostScript commands; this example +sets the PostScript ``color'' to 50\char`\%\ gray and typesets an `A' +from \.{cmr10} in that color. + +In general, the \.{MAP} attribute of a virtual character can be any sequence +of typesetting commands that might appear in a page of a \.{DVI} file. +A single character might map into an entire page. + +@ But instead of relying on a hypothetical example, let's consider a complete +grammar for \.{VPL} files, beginning with the (unchanged) grammatical rules +for \.{PL} files. At the outer level, the following property names +are valid in any \.{PL} file: + +\yskip\hang\.{CHECKSUM} (four-byte value). The value, which should be a +nonnegative integer less than $2^{32}$, is used to identify a particular +version of a font; it should match the check sum value stored with the font +itself. An explicit check sum of zero is used to bypass +check sum testing. If no checksum is specified in the \.{VPL} file, +\.{VPtoVF} will compute the checksum that \MF\ would compute from the +same data. + + +\yskip\hang\.{DESIGNSIZE} (numeric value, default is 10). The value, which +should be a real number in the range |1.0<=x<2048|, represents the default +amount by which all quantities will be scaled if the font is not loaded +with an `\.{at}' specification. For example, if one says +`\.{\\font\\A=cmr10 at 15pt}' in \TeX\ language, the design size in the \.{TFM} +file is ignored and effectively replaced by 15 points; but if one simply +says `\.{\\font\\A=cmr10}' the stated design size is used. This quantity is +always in units of printer's points. + +\yskip\hang\.{DESIGNUNITS} (numeric value, default is 1). The value +should be a positive real number; it says how many units equals the design +size (or the eventual `\.{at}' size, if the font is being scaled). For +example, suppose you have a font that has been digitized with 600 pixels per +em, and the design size is one em; then you could say `\.{(DESIGNUNITS R 600)}' +if you wanted to give all of your measurements in units of pixels. + +\yskip\hang\.{CODINGSCHEME} (string value, default is `\.{UNSPECIFIED}'). +The string should not contain parentheses, and its length must be less than 40. +It identifies the correspondence between the numeric codes and font characters. +(\TeX\ ignores this information, but other software programs make use of it.) + +\yskip\hang\.{FAMILY} (string value, default is `\.{UNSPECIFIED}'). +The string should not contain parentheses, and its length must be less than 20. +It identifies the name of the family to which this font belongs, e.g., +`\.{HELVETICA}'. (\TeX\ ignores this information; but it is needed, for +example, when converting \.{DVI} files to \.{PRESS} files for Xerox +equipment.) + +\yskip\hang\.{FACE} (one-byte value). This number, which must lie +between 0 and 255 inclusive, is a subsidiary ident\-ifi\-ca\-tion of +the font within its family. For example, bold italic condensed fonts +might have the same family name as light roman extended fonts, +differing only in their face byte. (\TeX\ ignores this information; +but it is needed, for example, when converting \.{DVI} files to +\.{PRESS} files for Xerox equipment.) + +\yskip\hang\.{SEVENBITSAFEFLAG} (string value, default is +`\.{FALSE}'). The value should start with either `\.T' (true) or `\.F' +(false). If true, character codes less than 128 cannot lead to codes +of 128 or more via ligatures or charlists or extensible characters. +(\TeX82 ignores this flag, but older versions of \TeX\ would only +accept \.{TFM} files that were seven-bit safe.) \.{VPtoVF} computes +the correct value of this flag and gives an error message only if a +claimed ``true'' value is incorrect. + +\yskip\hang\.{HEADER} (a one-byte value followed by a four-byte value). +The one-byte value should be between 18 and a maximum limit that can be +raised or lowered depending on the compile-time setting of |max_header_bytes|. +The four-byte value goes into the header word whose index is the one-byte +value; for example, to set |header[18]:=1|, one may write +`\.{(HEADER D 18 O 1)}'. This notation is used for header information that +is presently unnamed. (\TeX\ ignores it.) + +\yskip\hang\.{FONTDIMEN} (property list value). See below for the names +allowed in this property list. + +\yskip\hang\.{LIGTABLE} (property list value). See below for the rules +about this special kind of property list. + +\yskip\hang\.{BOUNDARYCHAR} (one-byte value). If this character appears in +a \.{LIGTABLE} command, it matches ``end of word'' as well as itself. +If no boundary character is given and no \.{LABEL} \.{BOUNDARYCHAR} occurs +within \.{LIGTABLE}, word boundaries will not affect ligatures or kerning. + +\yskip\hang\.{CHARACTER}. The value is a one-byte integer followed by +a property list. The integer represents the number of a character that is +present in the font; the property list of a character is defined below. +The default is an empty property list. + +@ Numeric property list values can be given in various forms identified by +a prefixed letter. + +\yskip\hang\.C denotes an ASCII character, which should be a standard visible +character that is not a parenthesis. The numeric value will therefore be +between @'41 and @'176 but not @'50 or @'51. + +\yskip\hang\.D denotes an unsigned decimal integer, which must be +less than $2^{32}$, i.e., at most `\.{D 4294967295}'. + +\yskip\hang\.F denotes a three-letter Xerox face code; the admissible codes +are \.{MRR}, \.{MIR}, \.{BRR}, \.{BIR}, \.{LRR}, \.{LIR}, \.{MRC}, \.{MIC}, +\.{BRC}, \.{BIC}, \.{LRC}, \.{LIC}, \.{MRE}, \.{MIE}, \.{BRE}, \.{BIE}, +\.{LRE}, and \.{LIE}, denoting the integers 0 to 17, respectively. + +\yskip\hang\.O denotes an unsigned octal integer, which must be less than +$2^{32}$, i.e., at most `\.{O 37777777777}'. + +\yskip\hang\.H denotes an unsigned hexadecimal integer, which must be less than +$2^{32}$, i.e., at most `\.{H FFFFFFFF}'. + +\yskip\hang\.R denotes a real number in decimal notation, optionally preceded +by a `\.+' or `\.-' sign, and optionally including a decimal point. The +absolute value must be less than 2048. + +@ The property names allowed in a \.{FONTDIMEN} property list correspond to +various \TeX\ parameters, each of which has a (real) numeric value. All +of the parameters except \.{SLANT} are in design units. The admissible +names are \.{SLANT}, \.{SPACE}, \.{STRETCH}, \.{SHRINK}, \.{XHEIGHT}, +\.{QUAD}, \.{EXTRASPACE}, \.{NUM1}, \.{NUM2}, \.{NUM3}, \.{DENOM1}, +\.{DENOM2}, \.{SUP1}, \.{SUP2}, \.{SUP3}, \.{SUB1}, \.{SUB2}, \.{SUPDROP}, +\.{SUBDROP}, \.{DELIM1}, \.{DELIM2}, and \.{AXISHEIGHT}, for parameters +1~to~22. The alternate names \.{DEFAULTRULETHICKNESS}, +\.{BIGOPSPACING1}, \.{BIGOPSPACING2}, \.{BIGOPSPACING3}, +\.{BIGOPSPACING4}, and \.{BIGOPSPACING5}, may also be used for parameters +8 to 13. + +The notation `\.{PARAMETER} $n$' provides another way to specify the +$n$th parameter; for example, `\.{(PARAMETER} \.{D 1 R -.25)}' is another way +to specify that the \.{SLANT} is $-0.25$. The value of $n$ must be positive +and less than |max_param_words|. + +@ The elements of a \.{CHARACTER} property list can be of six different types. + +\yskip\hang\.{CHARWD} (real value) denotes the character's width in +design units. + +\yskip\hang\.{CHARHT} (real value) denotes the character's height in +design units. + +\yskip\hang\.{CHARDP} (real value) denotes the character's depth in +design units. + +\yskip\hang\.{CHARIC} (real value) denotes the character's italic correction in +design units. + +\yskip\hang\.{NEXTLARGER} (one-byte value), specifies the character that +follows the present one in a ``charlist.'' The value must be the number of a +character in the font, and there must be no infinite cycles of supposedly +larger and larger characters. + +\yskip\hang\.{VARCHAR} (property list value), specifies an extensible +character. This option and \.{NEXTLARGER} are mutually exclusive; +i.e., they cannot both be used within the same \.{CHARACTER} list. + +\yskip\noindent +The elements of a \.{VARCHAR} property list are either \.{TOP}, \.{MID}, +\.{BOT} or \.{REP}; the values are integers, which must be zero or the number +or a character in the font. A zero value for \.{TOP}, \.{MID}, or \.{BOT} means +that the corresponding piece of the extensible character is absent. A nonzero +value, or a \.{REP} value of zero, denotes the character code used to make +up the top, middle, bottom, or replicated piece of an extensible character. + diff --git a/Master/texmf-dist/doc/plain/plain-doc/csname.txt b/Master/texmf-dist/doc/plain/plain-doc/csname.txt new file mode 100644 index 00000000000..2016f64bd50 --- /dev/null +++ b/Master/texmf-dist/doc/plain/plain-doc/csname.txt @@ -0,0 +1,1892 @@ + CSNAME.TXT + +This file contains all unique control sequences used by TeX and the +pricipal macro packages in use at AMS: + Plain: primitives; plain.tex + AMS-TeX: amstex.tex, amsppt.sty + LaTeX: (not yet installed) + + +\ *primitive (control space) +\! plain.tex +\" plain.tex +\# plain.tex +\$ plain.tex +\% plain.tex +\& plain.tex +\' plain.tex +\( plain.tex +\) plain.tex +\* plain.tex +\+ plain.tex +\, plain.tex +\- *primitive (discretionary hyphen) +\. plain.tex +\/ *primitive (italic correction) +\/ plain.tex +\: plain.tex (redefined in amstex.tex) +\; plain.tex (redefined in amstex.tex) +\< plain.tex +\= plain.tex (undefined in amstex.tex) +\> plain.tex (undefined in amstex.tex) +\? plain.tex +\*@@at(csname) amstex.tex (* will be replaced by some string) +\*@at(csname) amstex.tex (* will be replaced by some string) +\*@box(csname) amstex.tex (* will be replaced by some string) +\*@true(csname) amsppt.sty (* will be replaced by some string) +\*box@(csname) amsppt.sty (* will be replaced by some string) +\*Zat(csname) amstex.tex (* will be replaced by some string) +\*ZZat(csname) amstex.tex (* will be replaced by some string) +\@ amstex.tex +\@cclv plain.tex +\@cclvi plain.tex +\@crfalse plain.tex +\@crtrue plain.tex +\@foot plain.tex +\@if plain.tex +\@ins plain.tex +\@lign plain.tex +\@m plain.tex +\@M plain.tex +\@midfalse plain.tex +\@midtrue plain.tex +\@MM plain.tex +\@ne plain.tex +\@nother plain.tex +\@penup plain.tex +\@sf plain.tex +\@vereq plain.tex +\aa plain.tex +\AA plain.tex +\above *primitive +\abovedisplayshortskip *primitive +\abovedisplayskip *primitive +\abovewithdelims *primitive +\abstract amsppt.sty +\abstract@ amsppt.sty +\abstract@true amsppt.sty +\accent *primitive +\accentdimen@ amstex.tex +\accentedsymbol amstex.tex +\accentfam@ amstex.tex +\accentmu@ amstex.tex +\active plain.tex +\acute plain.tex +\Acute amstex.tex +\acuteaccent amstex.tex +\address amsppt.sty +\addresscount@ amsppt.sty +\address* amsppt.sty (expands to *i, *ii, etc.) +\addressnum@ amsppt.sty +\adjdemerits *primitive +\adjustfootnotemark amsppt.sty +\advance *primitive +\advancepageno plain.tex +\ae plain.tex +\AE plain.tex +\affil amsppt.sty +\affil@true amsppt.sty +\affilbox@ amsppt.sty +\after amstex.tex +\afterassignment *primitive +\afterbook@false amsppt.sty +\afterbook@true amsppt.sty +\aftergroup *primitive +\aleph plain.tex +\align amstex.tex +\align@ amstex.tex +\alignat amstex.tex +\alignat@ amstex.tex +\aligned amstex.tex +\aligned@ amstex.tex +\alignedat amstex.tex +\alloc@ plain.tex (redefined in amstex.tex) +\alloc@true amstex.tex +\allocationnumber plain.tex +\alloclist@ amstex.tex +\allowbreak plain.tex +\allowdisplaybreak@ amstex.tex +\allowlinebreak amstex.tex +\allowmathbreak amstex.tex +\alpha plain.tex +\amalg plain.tex +\ampersand@ amstex.tex +\amspptloaded@AmS amsppt.sty +\AmSTeX amstex.tex +\amstexloaded@ amstex.tex +\and amstex.tex +\and@ amstex.tex +\angle plain.tex +\ans@ amstex.tex +\Ans@ amstex.tex +\appendit@ amstex.tex +\approx plain.tex +\arccos plain.tex +\arcsin plain.tex +\arctan plain.tex +\arg plain.tex +\arrowvert plain.tex +\Arrowvert plain.tex +\ast plain.tex +\asymp plain.tex +\at@ amstex.tex +\atcount@ amstex.tex +\atdef@ amstex.tex +\athelp@ amstex.tex +\athelpZ(csname) amstex.tex +\atop *primitive +\atopwithdelims *primitive +\attag@ amstex.tex +\atZ(csname) amstex.tex +\atZZ(csname) amstex.tex +\atZZZ(csname) amstex.tex +\atZZZZ(csname) amstex.tex +\author amsppt.sty +\author@true amsppt.sty +\authorbox@ amsppt.sty +\b plain.tex +\B amstex.tex +\backslash plain.tex +\badans@false amstex.tex +\badans@true amstex.tex +\bar plain.tex +\Bar amstex.tex +\baselineskip *primitive +\batchmode *primitive +\Bbb amstex.tex +\Bbb@ amstex.tex +\Bbb@@ amstex.tex +\begingroup *primitive +\beginsection *primitive +\belowdisplayshortskip *primitive +\belowdisplayskip *primitive +\beta plain.tex +\bf plain.tex +\bffam plain.tex +\bffam@ amstex.tex +\bgroup plain.tex +\big plain.tex +\Big plain.tex +\bigaw@ amstex.tex +\bigbreak plain.tex +\bigcap plain.tex +\bigcap@ amstex.tex +\bigcirc plain.tex +\bigcup plain.tex +\bigcup@ amstex.tex +\bigg plain.tex +\Bigg plain.tex +\biggl plain.tex +\Biggl plain.tex +\biggm plain.tex +\Biggm plain.tex +\biggr plain.tex +\Biggr plain.tex +\bigl plain.tex +\Bigl plain.tex +\bigm plain.tex +\Bigm plain.tex +\bigodot plain.tex +\bigodot@ amstex.tex +\bigoplus plain.tex +\bigoplus@ amstex.tex +\bigotimes plain.tex +\bigotimes@ amstex.tex +\bigpagebreak amstex.tex +\bigr plain.tex +\Bigr plain.tex +\bigskip plain.tex +\bigskipamount plain.tex +\bigsqcup plain.tex +\bigsqcup@ amstex.tex +\bigtriangledown plain.tex +\bigtriangleup plain.tex +\biguplus plain.tex +\biguplus@ amstex.tex +\bigvee plain.tex +\bigvee@ amstex.tex +\bigvspace amstex.tex +\bigwedge plain.tex +\bigwedge@ amstex.tex +\binom amstex.tex +\binoppenalty *primitive +\binrel@ amstex.tex +\binrel@@ amstex.tex +\black@ amstex.tex +\BlackBoxes amstex.tex +\bmatrix amstex.tex +\bmod plain.tex +\body plain.tex +\bold amstex.tex +\bold@ amstex.tex +\bold@@ amstex.tex +\boldDelta amstex.tex +\boldGamma amstex.tex +\boldLambda amstex.tex +\boldOmega amstex.tex +\boldPhi amstex.tex +\boldPi amstex.tex +\boldPsi amstex.tex +\boldSigma amstex.tex +\boldTheta amstex.tex +\boldUpsilon amstex.tex +\boldXi amstex.tex +\book amsppt.sty +\book@false amsppt.sty +\book@true amsppt.sty +\bookbox@ amsppt.sty +\bookinfo amsppt.sty +\bookinfo@false amsppt.sty +\bookinfobox@ amsppt.sty +\bordermatrix plain.tex +\bot plain.tex +\bot@false amstex.tex +\bot@true amstex.tex +\botaligned amstex.tex +\botfolded@false amstex.tex +\botfolded@true amstex.tex +\botfoldedtext amstex.tex +\botmark *primitive +\botshave amstex.tex +\botsmash amstex.tex +\bowtie plain.tex +\box *primitive +\box255 *primitive (page contents) +\boxed amstex.tex +\boxmaxdepth *primitive +\brace plain.tex +\braceld plain.tex +\bracelu plain.tex +\bracerd plain.tex +\braceru plain.tex +\bracevert plain.tex +\brack plain.tex +\break plain.tex +\breve plain.tex +\Breve amstex.tex +\brokenpenalty *primitive +\buffer amstex.tex +\buffer@ amstex.tex +\buildrel plain.tex +\bullet plain.tex +\bunch amstex.tex +\bunchtag amstex.tex +\by amsppt.sty +\by@false amsppt.sty +\by@true amsppt.sty +\bybox@ amsppt.sty +\bye plain.tex +\bysame amsppt.sty +\bysame@false amsppt.sty +\bysame@true amsppt.sty +\bysamebox@ amsppt.sty +\c amstex.tex (center, in \matrix) +\c plain.tex +\c@ncel plain.tex +\cal plain.tex (undefined in amstex.tex) +\Cal amstex.tex +\Cal@ amstex.tex +\Cal@@ amstex.tex +\cap plain.tex +\caption amstex.tex +\captionwidth amstex.tex +\captionwidth@ amstex.tex +\cases plain.tex (redefined in amstex.tex) +\catcode *primitive +\CD amstex.tex +\CD@true amstex.tex +\cdot plain.tex +\cdotp plain.tex +\cdots plain.tex +\CenteredTagsOnSplits amstex.tex +\centering plain.tex +\centering@ amstex.tex +\centerline plain.tex +\cfrac amstex.tex +\cfraccount@ amstex.tex +\ch@ck plain.tex +\ChangeBuffer amstex.tex +\char *primitive +\chardef *primitive +\check plain.tex +\Check amstex.tex +\chi plain.tex +\choose plain.tex +\circ plain.tex +\cite amsppt.sty +\classnum@ amstex.tex +\cleaders *primitive +\cleartabs plain.tex +\closein *primitive +\closeout *primitive +\clubpenalty *primitive +\clubsuit plain.tex +\colon plain.tex +\columns plain.tex +\comment amstex.tex +\comment@ amstex.tex +\comment@@ amstex.tex +\comment@@@ amstex.tex +\cong plain.tex +\coprod plain.tex +\coprod@ amstex.tex +\copy plain.tex +\copyright plain.tex +\cos plain.tex +\cosh plain.tex +\cot plain.tex +\coth plain.tex +\count *primitive +\count@ plain.tex +\count0 plain.tex (page number, \pageno) +\countdef *primitive +\countxviii@ amstex.tex +\cr *primitive +\CR@ amstex.tex +\crcr *primitive +\csc plain.tex +\csname *primitive +\ctagsplit@false amstex.tex +\ctagsplit@true amstex.tex +\cup plain.tex +\d plain.tex +\D amstex.tex +\dag plain.tex +\dagger plain.tex +\dashv plain.tex +\date amsppt.sty +\date@ amsppt.sty +\date@true amsppt.sty +\day *primitive +\dbinom amstex.tex +\ddag plain.tex +\ddagger plain.tex +\ddddot amstex.tex +\dddot amstex.tex +\ddot plain.tex +\Ddot amstex.tex +\ddots plain.tex +\deadcycles *primitive +\def *primitive (use discouraged by amstex.tex; see \define) +\defahelp@ amstex.tex +\defaulthelp@ amstex.tex +\defaulthyphenchar *primitive +\defaultskewchar *primitive +\defbhelp@ amstex.tex +\define amstex.tex +\define@ amstex.tex +\define@@ amstex.tex +\deg plain.tex +\delcode *primitive +\delimiter *primitive +\delimiterfactor *primitive +\delimitershortfall *primitive +\delta plain.tex +\Delta plain.tex +\demo amsppt.sty +\demo@ amsppt.sty +\demonp % amsppt.sty +\det plain.tex +\dfrac amstex.tex +\diamond plain.tex +\diamondsuit plain.tex +\dim plain.tex +\dimen *primitive +\dimen@ plain.tex +\dimen@i plain.tex +\dimen@ii plain.tex +\dimendef *primitive +\dimentomu@ amstex.tex +\disabletabs amstex.tex +\DisableTabs amstex.tex +\discretionary *primitive +\displ@y plain.tex +\displ@y@ amstex.tex +\displaybreak amstex.tex +\displaybreak@ amstex.tex +\displayindent *primitive +\displaylimits *primitive +\displaylines plain.tex +\displaystyle *primitive +\displaywidowpenalty *primitive +\displaywidth *primitive +\displaywidth@ amstex.tex +\div plain.tex +\divide *primitive +\dlsl@ amstex.tex +\dmatherr@ amstex.tex +\do plain.tex +\doat@ amstex.tex +\document amstex.tex % amsppt.sty +\documentstyle amstex.tex +\dodummy@ amstex.tex +\dospecials plain.tex +\dosupereject plain.tex +\dot plain.tex +\Dot amstex.tex +\doteq plain.tex +\dotfill plain.tex +\dots plain.tex +\DOTS@ amstex.tex +\DOTS@@ amstex.tex +\DOTS@false amstex.tex +\DOTS@true amstex.tex +\dotsb amstex.tex +\DOTSB amstex.tex +\dotsb@ amstex.tex +\dotsc amstex.tex +\DOTSCASE@ amstex.tex +\dotsi amstex.tex +\DOTSI amstex.tex +\dotsm amstex.tex +\dotso@ amstex.tex +\dotsspace@ amstex.tex +\DOTSX amstex.tex +\doublehyphendemerits *primitive +\downarrow plain.tex +\Downarrow plain.tex +\downbracefill plain.tex +\dp *primitive +\drsr@ amstex.tex +\dsize amstex.tex +\dt@pfalse plain.tex +\dt@ptrue plain.tex +\dummyft@ amstex.tex +\dump *primitive +\eat@ amstex.tex +\edef *primitive +\egroup plain.tex +\eightbf amsppt.sty +\eightbig@ amsppt.sty +\eighti amsppt.sty +\eightit amsppt.sty +\eightpoint amsppt.sty +\eightrm amsppt.sty +\eightsl amsppt.sty +\eightsy amsppt.sty +\eject plain.tex +\ell plain.tex +\else *primitive +\empty plain.tex +\emptyset plain.tex +\enabletabs amstex.tex +\EnableTabs amstex.tex +\enabletabs@ amstex.tex +\end *primitive +\endalign amstex.tex +\endalignat amstex.tex +\endaligned amstex.tex +\endalignedat amstex.tex +\endauthor amsppt.sty +\endbmatrix amstex.tex +\endbotaligned amstex.tex +\endcases amstex.tex +\endCD amstex.tex +\endcfrac amstex.tex +\endcomment amstex.tex +\endcsname *primitive +\enddemo amsppt.sty +\enddocument amstex.tex +\endgather amstex.tex +\endgathered amstex.tex +\endgraf plain.tex +\endgroup *primitive +\endheading amsppt.sty +\endinput *primitive +\endinsert plain.tex +\endline plain.tex +\endlinechar *primitive +\endmatrix amstex.tex +\endmultline amstex.tex +\endpmatrix amstex.tex +\endproclaim amsppt.sty +\endref amsppt.sty +\endref@ amsppt.sty +\endroster amsppt.sty +\endSb amstex.tex +\endsmallmatrix amstex.tex +\endSp amstex.tex +\endsplit amstex.tex +\endtitle amsppt.sty +\endtopaligned amstex.tex +\endtopmatter amsppt.sty +\endvmatrix amstex.tex +\endVmatrix amstex.tex +\endxalignat amstex.tex +\endxxalignat amstex.tex +\enskip plain.tex +\enspace plain.tex +\epsilon plain.tex +\eqalign plain.tex +\eqalignno plain.tex +\eqno *primitive +\equiv plain.tex +\err@ amstex.tex +\Err@ amstex.tex +\errhelp *primitive +\errmessage *primitive +\errorstopmode *primitive +\errZ(csname) amstex.tex +\escapechar *primitive +\eta plain.tex +\everycr *primitive +\everydisplay *primitive +\everyhbox *primitive +\everyjob *primitive +\everymath *primitive +\everypar *primitive +\everypartoks@ amsppt.sty +\everyvbox *primitive +\ex@ amstex.tex +\exhyphenpenalty *primitive +\exists plain.tex +\exp plain.tex +\expandafter *primitive +\extra@ amstex.tex +\extra@false amstex.tex +\extra@true amstex.tex +\extrap@ amstex.tex +\f@@t plain.tex +\f@t plain.tex +\fam *primitive +\familycount@ amstex.tex +\fi *primitive +\filbreak *primitive +\filhss@ amsppt.sty +\finalhyphendemerits *primitive +\finalinfo amsppt.sty +\finalinfo@false amsppt.sty +\finalinfobox@ amsppt.sty +\findlimits@ amstex.tex +\finph@nt plain.tex +\finsm@sh plain.tex (redefined in amstex.tex) +\firstitem@false amsppt.sty +\firstitem@true amsppt.sty +\firstmark *primitive +\firstref@false amsppt.sty +\firstref@true amsppt.sty +\fivebf plain.tex +\fivei plain.tex +\fivemsx amstex.tex (depends on font availability) +\fivemsy amstex.tex (depends on font availability) +\fiverm plain.tex +\fivesy plain.tex +\flat plain.tex +\floatingpenalty *primitive +\flushpar amstex.tex +\fmtname plain.tex +\Fmtname amstex.tex +\fmtversion plain.tex +\Fmtversion amstex.tex +\fo@t plain.tex +\foldedtext amstex.tex +\foldedtext@ amstex.tex +\foldedwidth amstex.tex +\folio plain.tex +\font *primitive +\font@ amsppt.sty +\fontdimen *primitive +\fontlist@ amstex.tex +\fontname *primitive +\footins plain.tex +\footline plain.tex +\footmarkcount@ amstex.tex +\footmarkcount@@ amstex.tex +\footmarkform@ amsppt.sty +\footnote plain.tex (undefined in amstex.tex) +\footnote (redefined in amsppt.sty) +\footnotemark amsppt.sty +\footnoterule plain.tex (redefined in amsppt.sty) +\footnotetext amsppt.sty +\footstrut plain.tex +\for amstex.tex +\forall plain.tex +\format amstex.tex +\format@ amstex.tex +\frac amstex.tex +\fracwithdelims amstex.tex +\frenchspacing plain.tex +\frown plain.tex +\futurelet *primitive +\futureletnextat@ amstex.tex +\futureletnextatZ(csname) amstex.tex +\G@ amstex.tex +\galign@ amstex.tex +\galleys amstex.tex +\galleys@true amstex.tex +\gamma plain.tex +\Gamma plain.tex +\garbage@ amstex.tex +\gather amstex.tex +\gathered amstex.tex +\gcd plain.tex +\gdef *primitive +\gdef@ amstex.tex +\gdisplaywidth@ amstex.tex +\ge plain.tex +\geq plain.tex +\getmathch@ amstex.tex +\getpoints@ amstex.tex +\gets plain.tex +\gg plain.tex +\glineht@ amstex.tex +\global *primitive +\globaldefs *primitive +\gloop@ amstex.tex +\gmaxwidth@ amstex.tex +\gmeasure@ amstex.tex +\goodbreak plain.tex +\grave plain.tex +\Grave amstex.tex +\graveaccent amstex.tex +\gwidth@ amstex.tex +\H plain.tex +\h@false plain.tex +\h@true plain.tex +\halign *primitive +\hang plain.tex +\hangafter *primitive +\hangindent *primitive +\hashtoks@ amstex.tex +\haswidth amstex.tex +\hat plain.tex +\Hat amstex.tex +\hataccent amstex.tex +\hbadness *primitive +\hbar plain.tex +\hbox *primitive +\hcorrection amstex.tex +\hdots amstex.tex +\hdotsfor amstex.tex +\heading amsppt.sty +\headingbox@ amsppt.sty +\headline plain.tex +\heartsuit plain.tex +\hexnumber@ amstex.tex +\hfil *primitive +\hfill *primitive +\hfilneg *primitive +\hfuzz *primitive +\hgl@ plain.tex +\hglue plain.tex +\hideskip plain.tex +\hidewidth plain.tex +\hoffset *primitive +\hom plain.tex +\hookleftarrow plain.tex +\hookrightarrow plain.tex +\hphantom plain.tex +\hrule *primitive +\hrulefill plain.tex +\hsize *primitive +\hskip *primitive +\hss *primitive +\ht *primitive +\hyphenation *primitive +\hyphenchar *primitive +\hyphenpenalty *primitive +\i plain.tex +\ialign plain.tex +\ic@ amstex.tex +\idotsint amstex.tex +\if *primitive +\if@ plain.tex +\if@cr plain.tex +\if@mid plain.tex +\ifabstract@ amsppt.sty +\ifaffil@ amsppt.sty +\ifafterbook@ amsppt.sty +\ifalloc@ amstex.tex +\ifauthor@ amsppt.sty +\ifbadans@ amstex.tex +\ifbook@ amsppt.sty +\ifbookinfo@ amsppt.sty +\ifbot@ amstex.tex +\ifbotfolded@ amstex.tex +\ifby@ amsppt.sty +\ifbysame@ amsppt.sty +\ifcase *primitive +\ifcat *primitive +\ifCD@ amstex.tex +\ifctagsplit@ amstex.tex +\ifdate@ amsppt.sty +\ifdim *primitive +\ifDOTS@ amstex.tex +\ifdt@p plain.tex +\ifeof *primitive +\ifextra@ amstex.tex +\iff plain.tex +\iffalse *primitive +\iffinalinfo@ amsppt.sty +\iffirstitem@ amsppt.sty +\iffirstref@ amsppt.sty +\ifgalleys@ amstex.tex +\ifh@ plain.tex +\ifhbox *primitive +\ifhmode *primitive +\ifin@ amstex.tex +\ifinalign@ amstex.tex +\ifinany@ amstex.tex +\ifinbook@ amsppt.sty +\ifingather@ amstex.tex +\ifinner *primitive +\ifissue@ amsppt.sty +\ifjour@ amsppt.sty +\ifkey@ amsppt.sty +\ifkeybin@ amstex.tex +\iflastref@ amsppt.sty +\iflimits@ amstex.tex +\iflimtoken@ amstex.tex +\iflogo@ amsppt.sty +\ifmacro@ amstex.tex +\ifmanyby@ amsppt.sty +\ifmath@ amstex.tex +\ifmathbin@ amstex.tex +\ifmathch@ amstex.tex +\ifmathrel@ amstex.tex +\ifmathtags@ amstex.tex +\ifmeasuring@ amstex.tex +\ifmid@ amstex.tex +\ifmmode *primitive +\ifnextRunin@ amsppt.sty +\ifno@ amsppt.sty +\ifnofrills@ amsppt.sty +\ifnojourinfo@ amsppt.sty +\ifnot@ amstex.tex +\ifnum *primitive +\ifodd *primitive +\ifonecr@ amstex.tex +\ifp@ge plain.tex +\ifpage@ amsppt.sty +\ifpages@ amsppt.sty +\ifpaper@ amsppt.sty +\ifpaperinfo@ amsppt.sty +\ifprevbook@ amsppt.sty +\ifprevinbook@ amsppt.sty +\ifprevjour@ amsppt.sty +\ifproclaim@ amsppt.sty +\ifpubl@ amsppt.sty +\ifpubladdr@ amsppt.sty +\ifr@ggedbottom plain.tex +\ifrightdelim@ amstex.tex +\ifsyntax@ amstex.tex +\iftagin@ amstex.tex +\iftagsleft@ amstex.tex +\ifthanks@ amsppt.sty +\iftoappear@ amsppt.sty +\iftop@ amstex.tex +\iftopfolded@ amstex.tex +\iftrue *primitive +\ifus@ plain.tex +\ifv@ plain.tex +\ifvbox *primitive +\ifvmode *primitive +\ifvoid *primitive +\ifvol@ amsppt.sty +\ifx *primitive +\ifxat@ amstex.tex +\ifyr@ amsppt.sty +\ifzerocr@ amstex.tex +\ignorespaces *primitive +\iiiint amstex.tex +\iiint amstex.tex +\iint amstex.tex +\ilimits@ amstex.tex +\Im plain.tex +\imath plain.tex +\immediate *primitive +\impliedby amstex.tex +\implies amstex.tex +\in plain.tex +\in@ amstex.tex +\in@@ amstex.tex +\in@false amstex.tex +\in@true amstex.tex +\inaccessible not a defined \cs; occurs only in error messages +\inalign@true amstex.tex +\inany@true amstex.tex +\inbook amsppt.sty +\inbook@false amsppt.sty +\inbook@true amsppt.sty +\indent *primitive +\inf plain.tex +\infty plain.tex +\ingather@true amstex.tex +\injlim amstex.tex +\innerendproclaim@ amsppt.sty +\innerhdotsfor amstex.tex +\innerproclaim@ amsppt.sty +\input *primitive +\ins@ amstex.tex +\insc@unt plain.tex +\insert *primitive +\insertpenalties *primitive +\insplit@ amstex.tex +\int plain.tex +\intdots@ amstex.tex +\interdisplaylinepenalty plain.tex +\interfootnotelinepenalty plain.tex +\interlinepenalty *primitive +\intertext amstex.tex +\intertext@ amstex.tex +\intic@ amstex.tex +\intii amstex.tex +\intiii amstex.tex +\intiv amstex.tex +\intkern@ amstex.tex +\intno@ amstex.tex +\intop plain.tex +\ints@ amstex.tex +\ints@@ amstex.tex +\ints@@@ amstex.tex +\Invalid@ amstex.tex +\iota plain.tex +\issue amsppt.sty +\issue@false amsppt.sty +\issuebox@ amsppt.sty +\it plain.tex +\italic amstex.tex +\italic@ amstex.tex +\italic@@ amstex.tex +\item plain.tex +\item@ amsppt.sty +\itemitem plain.tex +\iterate plain.tex +\itfam plain.tex +\j plain.tex +\jmath plain.tex +\jobname *primitive +\joinrel plain.tex +\jot plain.tex +\jour amsppt.sty +\jour@false amsppt.sty +\jour@true amsppt.sty +\jourbox@ amsppt.sty +\kappa plain.tex +\ker plain.tex +\kern *primitive +\key amsppt.sty +\key@false amsppt.sty +\keybin@ amstex.tex +\keybin@false amstex.tex +\keybin@true amstex.tex +\keybox@ amsppt.sty +\keywords amsppt.sty +\keywords@ amsppt.sty +\l amstex.tex (left, in \matrix) +\l plain.tex +\L plain.tex +\lalign@ amstex.tex +\lambda plain.tex +\Lambda plain.tex +\land plain.tex +\langle plain.tex +\lastbox *primitive +\lastkern *primitive +\lastpenalty *primitive +\lastref@false amsppt.sty +\lastref@true amsppt.sty +\lastskip *primitive +\lbrace plain.tex +\lbrace@ amstex.tex +\lbrack plain.tex +\lccode *primitive +\lceil plain.tex +\lcfrac amstex.tex +\ldelim@ amstex.tex +\ldotp plain.tex +\ldots plain.tex +\le plain.tex +\leaders *primitive +\leavevmode plain.tex +\left *primitive +\leftarrow plain.tex +\Leftarrow plain.tex +\leftarrowfill plain.tex +\leftharpoondown plain.tex +\leftharpoonup plain.tex +\leftline plain.tex +\leftrightarrow plain.tex +\Leftrightarrow plain.tex +\leftroot amstex.tex +\leftroot@ amstex.tex +\leftskip *primitive +\leftskip@ amsppt.sty +\lendmultline@ amstex.tex +\lendsplit@ amstex.tex +\leq plain.tex +\leqalignno plain.tex +\leqno *primitive +\less amstex.tex +\let *primitive +\Let@ amstex.tex +\lfloor plain.tex +\lg plain.tex +\lgather@ amstex.tex +\lgroup plain.tex +\lhook plain.tex +\lim plain.tex +\liminf plain.tex +\limits *primitive +\limits@false amstex.tex +\limits@true amstex.tex +\LimitsOnInts amstex.tex +\LimitsOnNames amstex.tex +\LimitsOnSums amstex.tex +\limsup plain.tex +\limtoken@false amstex.tex +\limtoken@true amstex.tex +\line plain.tex +\linebreak amstex.tex +\lineht@ amstex.tex +\linepenalty *primitive +\lineskip *primitive +\lineskiplimit *primitive +\ll plain.tex +\llap plain.tex +\llap@ amstex.tex +\lmmeasure@ amstex.tex +\lmoustache plain.tex +\lmultline@ amstex.tex +\lmultline@@ amstex.tex +\lmultline@@@ amstex.tex +\ln plain.tex +\lnot plain.tex +\log plain.tex +\logo@false amsppt.sty +\logo@true amsppt.sty +\long *primitive +\longleftarrow plain.tex +\Longleftarrow plain.tex +\longleftrightarrow plain.tex +\Longleftrightarrow plain.tex +\longmapsto plain.tex +\Longrightarrow plain.tex +\longrightarrow plain.tex +\loop plain.tex +\looseness *primitive +\lor plain.tex +\lower *primitive +\lowercase *primitive +\lq plain.tex +\ltwidth@ amstex.tex +\lwidth@ amstex.tex +\m@g plain.tex +\m@ketabbox plain.tex +\m@ne plain.tex +\m@th plain.tex +\macro@ amstex.tex +\macro@@ amstex.tex +\macro@false amstex.tex +\macro@true amstex.tex +\mag *primitive +\magnification plain.tex +\magstep plain.tex +\magstephalf plain.tex +\makeacc@ amstex.tex +\Makeacc@ amstex.tex +\makefootline plain.tex +\makefootnote@ amsppt.sty +\makeheadline plain.tex +\makeph@nt plain.tex +\makesm@sh plain.tex (redefined in amstex.tex) +\maketag@ amstex.tex +\Maketag@ amstex.tex +\manyby amsppt.sty +\manyby@false amsppt.sty +\manyby@true amsppt.sty +\mapsto plain.tex +\mapstochar plain.tex +\mark *primitive +\math@ amstex.tex +\math@false amstex.tex +\math@true amstex.tex +\mathaccent *primitive +\mathaccent@ amstex.tex +\mathbin *primitive +\mathbin@ amstex.tex +\mathbin@false amstex.tex +\mathbin@true amstex.tex +\mathbreak amstex.tex +\mathch@ amstex.tex +\mathch@false amstex.tex +\mathch@true amstex.tex +\mathchar *primitive +\mathchardef *primitive +\mathchoice *primitive +\mathclose *primitive +\mathcode *primitive +\mathhexbox plain.tex +\mathinner *primitive +\mathmodeerr@ amstex.tex +\mathop *primitive +\mathopen *primitive +\mathord *primitive +\mathpalette plain.tex +\mathph@nt plain.tex +\mathpunct *primitive +\mathrel *primitive +\mathrel@ amstex.tex +\mathrel@false amstex.tex +\mathrel@true amstex.tex +\mathsm@sh plain.tex (redefined in amstex.tex) +\mathstrut plain.tex +\Mathstrut@ amstex.tex +\Mathstrut@noalign amstex.tex +\mathsurround *primitive +\mathtags@false amstex.tex +\mathtags@true amstex.tex +\matrix plain.tex (redefined in amstex.tex) +\max plain.tex +\maxbysamerule@ amsppt.sty +\maxdeadcycles *primitive +\maxdepth *primitive +\maxdimen plain.tex +\maxlwidth@ amstex.tex +\maxrwidth@ amstex.tex +\mdots@ amstex.tex +\mdots@@ amstex.tex +\meaning *primitive +\meaning@ amstex.tex +\meaning@@ amstex.tex +\measure@ amstex.tex +\measuring@false amstex.tex +\measuring@true amstex.tex +\medbreak plain.tex +\medmuskip *primitive +\medpagebreak amstex.tex +\medskip plain.tex +\medskipamount plain.tex +\medspace amstex.tex +\message *primitive +\mid plain.tex (symbol) +\mid@false amstex.tex +\mid@true amstex.tex +\midinsert plain.tex +\midspace amstex.tex +\min plain.tex +\minaw@ amstex.tex +\minCDarrowwidth amstex.tex +\minCDaw@ amstex.tex +\mit plain.tex (undefined in amstex.tex) +\mkern *primitive +\mlineht@ amstex.tex +\mltagbox@ amstex.tex +\mlwidth@ amstex.tex +\mod amstex.tex +\models plain.tex +\month *primitive +\moreref amsppt.sty +\moveleft *primitive +\moveright *primitive +\mp plain.tex +\mrwidth@ amstex.tex +\mscount plain.tex +\mskip *primitive +\msx@ amstex.tex +\msxfam amstex.tex +\msy@ amstex.tex +\msyfam amstex.tex +\mtagbox@ amstex.tex +\mu plain.tex +\MultC@ltrue multcol.out +\multilimits@ amstex.tex +\multint@ amstex.tex +\multintlimits@ amstex.tex +\multiply *primitive +\multispan plain.tex +\multispan@ amstex.tex +\multline amstex.tex +\multline@ amstex.tex +\multlinegap amstex.tex +\MultlineGap amstex.tex +\multlinegap@ amstex.tex +\multlinetaggap@ amstex.tex +\muskip *primitive +\muskipdef *primitive +\mwidth@ amstex.tex +\n@space plain.tex +\nabla plain.tex +\narrower plain.tex +\natural plain.tex +\ne plain.tex +\nearrow plain.tex +\neg plain.tex +\negintic@ amstex.tex +\negmedspace amstex.tex +\negthickspace amstex.tex +\negthinspace plain.tex +\neq plain.tex +\newbox plain.tex +\newbox@ amstex.tex +\newcodes@ amstex.tex +\newcount plain.tex +\newdimen plain.tex +\newfam plain.tex +\newhelp plain.tex +\newif plain.tex +\newinsert plain.tex +\newline amstex.tex +\newlinechar *primitive +\newmuskip plain.tex +\newread plain.tex +\newskip plain.tex +\newtoks plain.tex +\newtoks@ amstex.tex +\newwrite plain.tex +\next plain.tex +\next@ amstex.tex +\nextii@ amstex.tex +\nextiii@ amstex.tex +\nextiv@ amstex.tex +\nextix@ amstex.tex +\nextRunin@ amsppt.sty +\nextRunin@false amsppt.sty +\nextv@ amstex.tex +\nextvi@ amstex.tex +\nextvii@ amstex.tex +\nextviii@ amstex.tex +\ni plain.tex +\ninebf amsppt.sty +\ninei amsppt.sty +\nineit amsppt.sty +\ninerm amsppt.sty +\ninesl amsppt.sty +\ninesy amsppt.sty +\nlimits@ amstex.tex +\no amsppt.sty +\no@false amsppt.sty +\noaccents@ amstex.tex +\noalign *primitive +\NoBlackBoxes amstex.tex +\nobox@ amsppt.sty +\nobreak plain.tex +\noexpand *primitive +\nofrills amsppt.sty +\nofrills@ amsppt.sty +\nofrills@false amsppt.sty +\nofrills@true amsppt.sty +\noguidelines amsppt.sty +\noindent *primitive +\nointerlineskip plain.tex +\nojourinfo@false amsppt.sty +\nojourinfo@true amsppt.sty +\nolimits *primitive +\NoLimitsOnInts amstex.tex +\NoLimitsOnNames amstex.tex +\NoLimitsOnSums amstex.tex +\nolinebreak amstex.tex +\nologo amsppt.sty +\nomathbreak amstex.tex +\nomultlinegap amstex.tex +\nondmatherr@ amstex.tex +\nonfrenchspacing plain.tex +\nonmatherr@ amstex.tex +\nonscript *primitive +\nonstopmode *primitive +\nonvmodeerr@ amstex.tex +\nopagebreak amstex.tex +\nopagenumbers plain.tex +\nopages@ amstex.tex +\normalbaselines plain.tex +\normalbaselineskip plain.tex +\normalbottom plain.tex +\normallineskip plain.tex +\normallineskiplimit plain.tex +\not plain.tex +\not@ amstex.tex +\not@false amstex.tex +\not@true amstex.tex +\notin plain.tex +\nu plain.tex +\null plain.tex +\nulldelimiterspace *primitive +\number *primitive +\nwarrow plain.tex +\o plain.tex +\O plain.tex +\oalign plain.tex +\obeylines plain.tex +\obeyspaces plain.tex +\odot plain.tex +\oe plain.tex +\OE plain.tex +\of plain.tex +\offinterlineskip plain.tex +\oint plain.tex +\ointop plain.tex +\oldcodes@ amstex.tex +\oldnos amstex.tex +\oldstyle plain.tex (undefined in amstex.tex) +\omega plain.tex +\Omega plain.tex +\ominus plain.tex +\omit *primitive +\onecr@false amstex.tex +\onecr@true amstex.tex +\onlydmatherr@ amstex.tex +\ooalign plain.tex +\openin *primitive +\openout *primitive +\openup plain.tex +\operatorname amstex.tex +\operatornamewithlimits amstex.tex +\oplus plain.tex +\or *primitive +\oslash plain.tex +\otimes plain.tex +\outer *primitive +\output *primitive +\output@ amsppt.sty +\outputpenalty *primitive +\outsplit@ amstex.tex +\over *primitive +\overarrow amstex.tex +\overbrace plain.tex +\overfullrule *primitive +\overleftarrow plain.tex +\overleftarrow@ amstex.tex +\overleftrightarrow amstex.tex +\overleftrightarrow@ amstex.tex +\overline *primitive +\overline@ amstex.tex +\overlong amsppt.sty +\overlong@ amsppt.sty +\overrightarrow plain.tex +\overrightarrow@ amstex.tex +\overset amstex.tex +\oversetbrace amstex.tex +\overwithdelims *primitive +\owns plain.tex +\P plain.tex +\p@ plain.tex +\P@ amstex.tex +\p@gefalse plain.tex +\p@getrue plain.tex +\p@renwd plain.tex +\page amsppt.sty +\page@false amsppt.sty +\page@true amsppt.sty +\pagebody plain.tex +\pagebreak amstex.tex +\pagecontents plain.tex +\pagedepth *primitive +\pagefilllstretch *primitive +\pagefillstretch *primitive +\pagefilstretch *primitive +\pagegoal *primitive +\pageheight amstex.tex +\pageinsert plain.tex +\pageno plain.tex +\pages amsppt.sty +\pages@false amsppt.sty +\pagesbox@ amsppt.sty +\pageshrink *primitive +\pagestretch *primitive +\pagetotal *primitive +\pagewidth amstex.tex +\paper amsppt.sty +\paper@false amsppt.sty +\paperbox@ amsppt.sty +\paperinfo amsppt.sty +\paperinfo@false amsppt.sty +\paperinfobox@ amsppt.sty +\par *primitive +\par@ amsppt.sty +\parallel plain.tex +\parfillskip *primitive +\parindent *primitive +\parshape *primitive +\parskip *primitive +\partial plain.tex +\patterns *primitive +\pausing *primitive +\penalty *primitive +\penalty@ amsppt.sty +\perp plain.tex +\ph@nt plain.tex +\phantom plain.tex +\phi plain.tex +\Phi plain.tex +\pi plain.tex +\Pi plain.tex +\plaincdots@ amstex.tex +\plainfootnote amstex.tex (undefined) +\plainitem@ amsppt.sty +\plainldots@ amstex.tex +\plainoutput plain.tex +\plainproclaim amstex.tex +\plainroot@ amstex.tex +\pm plain.tex +\pmatrix plain.tex +\pmb amstex.tex +\pmb@ amstex.tex +\pmb@@ amstex.tex +\pmbraise@ amstex.tex +\pmod plain.tex +\pod amstex.tex +\pointcount@ amstex.tex +\pointsize@ amsppt.sty +\postdisplaypenalty *primitive +\ppunbox@ amsppt.sty +\Pr plain.tex +\pr@@@s plain.tex +\pr@@@t plain.tex +\pr@m@s plain.tex +\preabstract amsppt.sty +\preaffil amsppt.sty +\preamble@ amstex.tex +\Preamble@ amstex.tex +\preamble@@ amstex.tex +\preauthor amsppt.sty +\prec plain.tex +\preceq plain.tex +\predate amsppt.sty +\predefine amstex.tex +\predisplaypenalty *primitive +\predisplaysize *primitive +\preloaded plain.tex +\preloaded@ amstex.tex +\prepaper amsppt.sty +\prepunct@ amsppt.sty +\pretend amstex.tex +\pretitle amsppt.sty +\pretolerance *primitive +\prevdepth *primitive +\prevgraf *primitive +\previnbook@false amsppt.sty +\previnbook@true amsppt.sty +\prevjour@false amsppt.sty +\prevjour@true amsppt.sty +\prim@s plain.tex +\prime plain.tex +\prime@ amstex.tex +\printoptions amstex.tex +\proclaim plain.tex (undefined in amstex.tex) +\proclaim (redefined in amsppt.sty) +\proclaim@ amsppt.sty +\proclaim@false amsppt.sty +\proclaim@true amsppt.sty +\prod plain.tex +\prod@ amstex.tex +\projlim amstex.tex +\propto plain.tex +\psi plain.tex +\Psi plain.tex +\publ amsppt.sty +\publ@false amsppt.sty +\publaddr amsppt.sty +\publaddr@false amsppt.sty +\publaddrbox@ amsppt.sty +\publbox@ amsppt.sty +\qed amsppt.sty +\qopname@ amstex.tex +\qopnamewl@ amstex.tex +\qquad plain.tex +\quad plain.tex +\r amstex.tex +\r@@t plain.tex (modified by amstex.tex) +\r@ggedbottomfalse plain.tex +\r@ggedbottomtrue plain.tex +\radical *primitive +\raggedbottom plain.tex +\raggedright plain.tex +\raise *primitive +\ralign@ amstex.tex +\rangle plain.tex +\rbrace plain.tex +\rbrace@ amstex.tex +\rbrack plain.tex +\rceil plain.tex +\rcfrac amstex.tex +\rdelim@ amstex.tex +\Re plain.tex +\read *primitive +\redefine amstex.tex +\ref amsppt.sty +\ref@ amsppt.sty +\refdef@ amsppt.sty +\Refs amsppt.sty +\refskip@ amstex.tex +\relax *primitive +\relaxnext@ amstex.tex +\relbar plain.tex +\Relbar plain.tex +\relpenalty *primitive +\removelastskip plain.tex +\rendmultline@ amstex.tex +\rendsplit@ amstex.tex +\repeat plain.tex +\ResetBuffer amstex.tex +\retry@AmSfalse amstex.tex +\retry@AmStrue amstex.tex +\rfloor plain.tex +\rgather@ amstex.tex +\rgroup plain.tex +\rho plain.tex +\rhook plain.tex +\right *primitive +\rightappend@ amstex.tex +\rightarrow plain.tex +\Rightarrow plain.tex +\rightarrowfill plain.tex +\rightdelim@ amstex.tex +\rightdelim@false amstex.tex +\rightdelim@true amstex.tex +\rightharpoondown plain.tex +\rightharpoonup plain.tex +\rightleftharpoons plain.tex +\rightline plain.tex +\rightskip *primitive +\rlap plain.tex +\rlap@ amstex.tex +\rlh@ plain.tex +\rm plain.tex +\rmfam amstex.tex +\rmmeasure@ amstex.tex +\rmoustache plain.tex +\rmultline@ amstex.tex +\rmultline@@ amstex.tex +\rmultline@@@ amstex.tex +\rom@ amstex.tex +\rom@@ amstex.tex +\roman amstex.tex +\roman@ amstex.tex +\roman@@ amstex.tex +\romannumeral *primitive +\root plain.tex +\rootbox plain.tex +\roster amsppt.sty +\rostercount@ amsppt.sty +\rosterhangafter@ amsppt.sty +\rosteritem@ amsppt.sty +\rq plain.tex +\rtwidth@ amstex.tex +\runinitem amsppt.sty +\Runinitem amsppt.sty +\runinitem@ amsppt.sty +\rwidth@ amstex.tex +\S plain.tex +\S@ amstex.tex +\s@tcols plain.tex +\s@tt@b plain.tex +\savealignat@ amstex.tex +\saveskip@ amstex.tex +\sb plain.tex +\Sb amstex.tex +\scriptfont *primitive +\scriptscriptfont *primitive +\scriptscriptstyle *primitive +\scriptspace *primitive +\scriptstyle *primitive +\scrollmode *primitive +\searrow plain.tex +\sec plain.tex +\setbox *primitive +\setminus plain.tex +\setpunct@ amsppt.sty +\sett@b plain.tex +\settabs plain.tex +\sevenbf plain.tex +\seveni plain.tex +\sevenmsx amstex.tex (depends on font availability) +\sevenmsy amstex.tex (depends on font availability) +\sevenrm plain.tex +\sevensy plain.tex +\sfcode *primitive +\sharp plain.tex +\shave amstex.tex +\shipout *primitive +\shoveleft amstex.tex +\shoveright amstex.tex +\show *primitive +\showallocations amstex.tex +\showbox *primitive +\showboxbreadth *primitive +\showboxdepth *primitive +\showhyphens plain.tex +\showlists *primitive +\showthe *primitive +\sideset amstex.tex +\sigma plain.tex +\Sigma plain.tex +\sim plain.tex +\simeq plain.tex +\sin plain.tex +\sinh plain.tex +\sixbf amsppt.sty +\sixi amsppt.sty +\sixrm amsppt.sty +\sixsy amsppt.sty +\sixt@@n plain.tex +\skew plain.tex +\skewchar *primitive +\skewcharcount@ amstex.tex +\skip *primitive +\skip@ plain.tex +\skipdef *primitive +\sl plain.tex +\slanted amstex.tex +\slanted@ amstex.tex +\slanted@@ amstex.tex +\slash plain.tex +\sldl@ amstex.tex +\slfam plain.tex +\slimits@ amstex.tex +\smallbreak plain.tex +\smallcaptionwidth@ amstex.tex +\smallint plain.tex +\smallmatrix amstex.tex +\smallpagebreak amstex.tex +\smallskip plain.tex +\smallskipamount plain.tex +\smash plain.tex (redefined in amstex.tex) +\smash@ amstex.tex +\smc amstex.tex % amsppt.sty +\smile plain.tex +\snug amstex.tex +\sp plain.tex +\Sp amstex.tex +\sp@n plain.tex +\space plain.tex +\space@ amstex.tex +\spacefactor *primitive +\spacehdots amstex.tex +\spaceinnerdots amstex.tex +\spaces@ amstex.tex +\spaces@@ amstex.tex +\spaceskip *primitive +\spacute amstex.tex +\spadesuit plain.tex +\span *primitive +\spbar amstex.tex +\spbreve amstex.tex +\spcheck amstex.tex +\spddddot amstex.tex +\spdddot amstex.tex +\spddot amstex.tex +\spdot amstex.tex +\special *primitive +\spgrave amstex.tex +\sphat amstex.tex +\split amstex.tex +\split@ amstex.tex +\splitbotmark *primitive +\splitfirstmark *primitive +\splitmaxdepth *primitive +\splittopskip *primitive +\spreadlines amstex.tex +\spreadmatrixlines amstex.tex +\spreadmlines@ amstex.tex +\sptilde amstex.tex +\spvec amstex.tex +\sqcap plain.tex +\sqcup plain.tex +\sqrt plain.tex +\sqsupseteq plain.tex +\srdr@ amstex.tex +\ss plain.tex +\ssize amstex.tex +\sssize amstex.tex +\star plain.tex +\string *primitive +\string@ amstex.tex +\strip@ amstex.tex +\strut plain.tex +\strut@ amstex.tex +\strutbox plain.tex +\strutbox@ amstex.tex +\styname amsppt.sty +\styversion amsppt.sty +\subheading amsppt.sty +\subheading@ amsppt.sty +\subjclass amsppt.sty +\subjclass@ amsppt.sty +\subset plain.tex +\subseteq plain.tex +\succ plain.tex +\succeq plain.tex +\sum plain.tex +\sum@ amstex.tex +\sup plain.tex +\supereject plain.tex +\supset plain.tex +\supseteq plain.tex +\surd plain.tex +\swarrow plain.tex +\syntax amstex.tex +\syntax@true amstex.tex +\t plain.tex +\t@bb@x plain.tex +\t@bbox plain.tex +\tabalign plain.tex +\tabs plain.tex +\tabsdone plain.tex +\tabskip *primitive +\tabsyet plain.tex +\tag amstex.tex +\tagform@ amstex.tex +\tagin@ amstex.tex +\tagin@false amstex.tex +\tagin@true amstex.tex +\TagsAsMath amstex.tex +\TagsAsText amstex.tex +\tagsleft@false amstex.tex +\tagsleft@true amstex.tex +\TagsOnLeft amstex.tex +\TagsOnRight amstex.tex +\tan plain.tex +\tanh plain.tex +\tau plain.tex +\tbinom amstex.tex +\tdots@ amstex.tex +\tenbf plain.tex +\tenbig@ amsppt.sty +\tenex plain.tex +\teni plain.tex +\tenit plain.tex +\tenmsx amstex.tex (depends on font availability) +\tenmsy amstex.tex (depends on font availability) +\tenpoint amsppt.sty +\tenrm plain.tex +\tensl plain.tex +\tensmc amsppt.sty +\tensy plain.tex +\tentt plain.tex +\TeX plain.tex +\text amstex.tex +\text@ amstex.tex +\text@@ amstex.tex +\textdef@ amstex.tex +\textdef@@ amstex.tex +\textfont *primitive +\textfont@ amstex.tex +\textfonti amstex.tex +\textfontii amstex.tex +\textindent plain.tex +\textstyle *primitive +\tfrac amstex.tex +\thanks amsppt.sty +\thanks@ amsppt.sty +\thanks@true amsppt.sty +\the *primitive +\theabstract@ amsppt.sty +\thecaption@ amstex.tex +\thedots@ amstex.tex +\thefam@ amstex.tex +\thefootnotemark amsppt.sty +\thekeywords@ amsppt.sty +\therosteritem amsppt.sty +\theskewchar@ amstex.tex +\thespace@ amstex.tex +\thesubjclass@ amsppt.sty +\theta plain.tex +\Theta plain.tex +\thetag amstex.tex +\thickfrac amstex.tex +\thickfracwithdelims amstex.tex +\thickmuskip *primitive +\thickness amstex.tex +\thickspace amstex.tex +\thinmuskip *primitive +\thinspace plain.tex +\thr@@ plain.tex +\tie amstex.tex +\tilde plain.tex +\Tilde amstex.tex +\tildeaccent amstex.tex +\time *primitive +\times plain.tex +\title amsppt.sty +\titlebox@ amsppt.sty +\to plain.tex +\toappear amsppt.sty +\toappear@false amsppt.sty +\toappear@true amsppt.sty +\toks *primitive +\toks@ plain.tex +\toks@@ amstex.tex +\toksdef *primitive +\tolerance *primitive +\top plain.tex +\top@false amstex.tex +\top@true amstex.tex +\topaligned amstex.tex +\topfolded@false amstex.tex +\topfolded@true amstex.tex +\topfoldedtext amstex.tex +\topins plain.tex +\topinsert plain.tex +\topmark *primitive +\topmatter amsppt.sty +\TopOrBottomTagsOnSplits amstex.tex +\topshave amstex.tex +\topskip *primitive +\topsmash amstex.tex +\topspace amstex.tex +\totwidth@ amstex.tex +\tracingall plain.tex +\tracingcommands *primitive +\tracinglostchars *primitive +\tracingmacros *primitive +\tracingonline *primitive +\tracingoutput *primitive +\tracingpages *primitive +\tracingparagraphs *primitive +\tracingrestores *primitive +\tracingstats *primitive +\triangle plain.tex +\triangleleft plain.tex +\triangleright plain.tex +\tsize amstex.tex +\tt plain.tex +\ttfam plain.tex +\ttraggedright plain.tex +\tw@ plain.tex +\u plain.tex +\uccode *primitive +\uchyph *primitive +\unbracefonts@ amstex.tex +\undefined plain.tex +\undefined@ amstex.tex +\underarrow amstex.tex +\underbar plain.tex +\underbrace plain.tex +\underleftarrow amstex.tex +\underleftarrow@ amstex.tex +\underleftrightarrow amstex.tex +\underleftrightarrow@ amstex.tex +\underline *primitive +\underline@ amstex.tex +\underrightarrow amstex.tex +\underrightarrow@ amstex.tex +\underscore amstex.tex +\underset amstex.tex +\undersetbrace amstex.tex +\unhbox *primitive +\unhcopy *primitive +\unkern *primitive +\unpenalty *primitive +\unskip *primitive +\unvbox *primitive +\unvcopy *primitive +\uparrow plain.tex +\Uparrow plain.tex +\upbracefill plain.tex +\updownarrow plain.tex +\Updownarrow plain.tex +\uplus plain.tex +\uppercase *primitive +\uproot amstex.tex +\uproot@ amstex.tex +\upsilon plain.tex +\Upsilon plain.tex +\us@false plain.tex +\us@true plain.tex +\usualspace amsppt.sty +\usualspace@ amsppt.sty +\v plain.tex +\v@false plain.tex +\v@true plain.tex +\vadjust *primitive +\valign *primitive +\varDelta amstex.tex +\varepsilon plain.tex +\varGamma amstex.tex +\varinjlim amstex.tex +\varLambda amstex.tex +\varliminf amstex.tex +\varlimsup amstex.tex +\varOmega amstex.tex +\varphi plain.tex +\varPhi amstex.tex +\varpi plain.tex +\varPi amstex.tex +\varprojlim amstex.tex +\varPsi amstex.tex +\varrho plain.tex +\varsigma plain.tex +\varSigma amstex.tex +\vartheta plain.tex +\varTheta amstex.tex +\varUpsilon amstex.tex +\varXi amstex.tex +\vbadness *primitive +\vbox *primitive +\vcenter *primitive +\vcorrection amstex.tex +\vdash plain.tex +\vdots plain.tex +\vec plain.tex +\Vec amstex.tex +\vee plain.tex +\Vert plain.tex +\vert plain.tex +\vfil *primitive +\vfill *primitive +\vfilneg *primitive +\vfootnote plain.tex +\vfuzz *primitive +\vgl@ plain.tex +\vglue plain.tex +\vmatrix amstex.tex +\Vmatrix amstex.tex +\vmodeerr@ amstex.tex +\vnonvmode@ amstex.tex +\voffset *primitive +\voidb@x plain.tex +\vol amsppt.sty +\vol@false amsppt.sty +\volbox@ amsppt.sty +\vphantom plain.tex +\vrule *primitive +\vsize *primitive +\vskip *primitive +\vspace amstex.tex +\vspace@ amstex.tex +\vsplit *primitive +\vss *primitive +\vtop *primitive +\W@ amstex.tex +\wd *primitive +\wedge plain.tex +\widehat plain.tex +\widetilde plain.tex +\widowpenalty *primitive +\wlog plain.tex +\wp plain.tex +\wr plain.tex +\write *primitive +\xalignat amstex.tex +\xalignat@ amstex.tex +\xat@false amstex.tex +\xat@true amstex.tex +\xdef *primitive +\xi plain.tex +\Xi plain.tex +\xleaders *primitive +\xspaceskip *primitive +\xxalignat amstex.tex +\xxalignat@ amstex.tex +\xxattag@ amstex.tex +\year *primitive +\yr amsppt.sty +\yr@false amsppt.sty +\yrbox@ amsppt.sty +\z@ plain.tex +\z@skip plain.tex +\zerocr@false amstex.tex +\zerocr@true amstex.tex +\zeta plain.tex +\[ plain.tex +\] plain.tex +\^ plain.tex +\^^I plain.tex +\^^J amstex.tex +\^^M plain.tex +\_ plain.tex +\` plain.tex +\{ plain.tex +\| plain.tex +\} plain.tex +\~ plain.tex diff --git a/Master/texmf-dist/doc/support/asciichart/ascii.tex b/Master/texmf-dist/doc/support/asciichart/ascii.tex new file mode 100644 index 00000000000..c2f95e7da33 --- /dev/null +++ b/Master/texmf-dist/doc/support/asciichart/ascii.tex @@ -0,0 +1,189 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% +%% A S C I I wall chart %% +%% %% +%% by Victor Eijkhout %% +%% eijkhout@cs.utk.edu %% +%% %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +%% Choose your favourite format: +% +\nopagenumbers %% 2 lines +\vsize=28cm %% for PLAIN TeX +%\documentstyle{article} %% 4 lines for LaTeX +%\begin{document} %% not that it matters anything, +%\pagestyle{empty} %% rest of the document +%\setlength{\textheight}{28cm} %% is 'pure' TeX. +%%%%%% and don't forget the \bye / \end{document} at the end!! %%%%%%% +%% fonts +\font\bitfont=cmr7 \fontdimen3\bitfont=3mm +\font\codefont=cmr5 +\font\namefont=cmss10 scaled 1200 +\font\titlefont=cmss10 scaled 1440 +\font\commentfont=cmss10 +%% counts and dimens +\newdimen\thinlinewidth \thinlinewidth=.25mm +\newdimen\fatlinewidth \fatlinewidth=.5mm +\newdimen\rowheight \rowheight=1cm +\newdimen\colwidth \colwidth=1.6cm +\newdimen\Colwidth \Colwidth=2\colwidth + \advance\Colwidth by \thinlinewidth +\newdimen\topwhite \topwhite=2pt +\newdimen\botwhite \botwhite=3pt +\newdimen\leftwhite \leftwhite=2pt +\newdimen\rightwhite \rightwhite=2pt +\newcount\rowcount \rowcount=-1 %% note! +\newcount\colcount \colcount=0 +\newcount\thenumber +%% tidbits +\def\\{$\backslash$} +\def\thinline{\vrule width \thinlinewidth} +\def\fatline{\vrule width \fatlinewidth} +\tolerance=10000 +\vbadness=10000 +%% code conversion +\def\calcnumber{{\multiply\colcount by 16 + \advance\colcount by \rowcount + \global\thenumber=\colcount}} +\def\deccode{\number\thenumber} +\def\octcode{{\ifnum\thenumber>63 + \advance\thenumber by -64 + \count0=\thenumber \divide\count0 by 8 + 1\number\count0 + \else \count0=\thenumber \divide\count0 by 8 + \ifnum\count0>0 \number\count0 \fi\fi + \multiply\count0 by 8 + \advance\thenumber by -\count0 + \number\thenumber}} +\def\hexdigit#1{\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or + 8\or 9\or A\or B\or C\or D\or E\or F\or + \edef\tmp{\message{illegal hex digit + \number#1}}\tmp + \fi} +\def\hexcode{{\count0=\thenumber \divide\count0 by 16 + \ifnum\count0>0 \hexdigit{\count0}\fi + \multiply\count0 by 16 + \advance\thenumber by -\count0 \count0=\thenumber + \hexdigit{\count0}}} +%% the heading +\def\threebit#1#2#3{\vbox to 1.2\rowheight{\bitfont + \vskip\topwhite + \hbox to \colwidth{\hskip\leftwhite#1\hfil} + \vfil + \hbox to \colwidth{\hfil#2\hfil} + \vfil + \hbox to \colwidth{\hfil#3\hskip\rightwhite} + \vskip\botwhite}} +\def\comment#1{\vbox to \colwidth{\hrule height 0mm depth .25mm + \vfil + \hbox to \Colwidth{\commentfont\hfil#1\hfil} + \vfil}} +\def\dcomment#1#2{\vbox to \colwidth{\hrule height 0mm depth .25mm + \vfil + \hbox to \Colwidth{\commentfont\hfil#1\hfil} + \vskip \botwhite + \hbox to \Colwidth{\commentfont\hfil#2\hfil} + \vfil}} +\def\bithead{\vbox to \colwidth{\hsize=1.5\colwidth + \vskip\topwhite + \hbox to \hsize{\commentfont\hfil BITS\hfil} + \vfil + \hbox to \hsize{\bitfont\ b4 b3 b2 b1 } + \vskip\botwhite}} +%% routines for single chars +\def\fourbit#1\fb{\vbox to \rowheight{ + \vfil + \hbox to 1.5\colwidth{\bitfont #1\ } + \vfil}% + \global\advance\rowcount by 1 + \global\colcount=0} +\def\asc#1\ii{\calcnumber + \vbox to \rowheight{\offinterlineskip + \vskip\topwhite + \hbox to \colwidth{\codefont + \hskip\leftwhite + \deccode\hfil} + \vfil + \hbox to \colwidth{\vrule width 0cm + height 10pt depth 2pt + \namefont + \hfil#1\hfil} + \vfil + \hbox to \colwidth{\codefont + \hskip\leftwhite + \hexcode\hfil\octcode + \hskip\rightwhite} + \vskip\botwhite}% + \global\advance\colcount by 1} +%%%%%%%%%%%%%%%%% and now the table itself %%%%%%%%%%%%%%%%%%%%%%%%% +\vbox{ +\halign{\fourbit#\fb&\fatline\asc#\ii&\thinline\asc#\ii& + \fatline\asc#\ii&\thinline\asc#\ii& + \fatline\asc#\ii&\thinline\asc#\ii& + \fatline\asc#\ii&\thinline\asc#\ii\fatline\cr + \omit&\multispan8 \hskip\thinlinewidth + \titlefont ASCII CONTROL CODE CHART\hfil\cr + \noalign{\vskip3mm \hrule} + \omit\hfil\threebit{b7}{b6}{b5} + &\omit\fatline\threebit000&\omit\thinline\threebit001% + &\omit\fatline\threebit010&\omit\thinline\threebit011% + &\omit\fatline\threebit100&\omit\thinline\threebit101% + &\omit\fatline\threebit110&\omit\thinline\threebit111% + \fatline\cr + \noalign{\vskip-.5mm} %brute force + \omit\bithead + &\omit\fatline\comment{CONTROL}\span\omit + &\omit\fatline\dcomment{SYMBOLS}{NUMBERS}\span\omit + &\omit\fatline\comment{UPPER CASE}\span\omit + &\omit\fatline\comment{LOWER CASE}\span\omit\hfil\fatline\cr + \noalign{\hrule} + {} 0 0 0 0&NUL&DLE&SP &0 &@ &P &` &p \cr\noalign{\hrule} + {} 0 0 0 1&SOH&DC1&! &1 &A &Q &a &q \cr\noalign{\hrule} + {} 0 0 1 0&STX&DC2&" &2 &B &R &b &r \cr\noalign{\hrule} + {} 0 0 1 1&ETX&DC3&\# &3 &C &S &c &s \cr\noalign{\hrule} + {} 0 1 0 0&EOT&DC4&\$ &4 &D &T &d &t \cr\noalign{\hrule} + {} 0 1 0 1&ENQ&NAK&\% &5 &E &U &e &u \cr\noalign{\hrule} + {} 0 1 1 0&ACK&SYN&\& &6 &F &V &f &v \cr\noalign{\hrule} + {} 0 1 1 1&BEL&ETB&' &7 &G &W &g &w \cr\noalign{\hrule} + {} 1 0 0 0&BS &CAN&( &8 &H &X &h &x \cr\noalign{\hrule} + {} 1 0 0 1&HT &EM &) &9 &I &Y &i &y \cr\noalign{\hrule} + {} 1 0 1 0&LF &SUB&* &: &J &Z &j &z \cr\noalign{\hrule} + {} 1 0 1 1&VT &ESC&+ &; &K &[ &k &$\{$\cr \noalign{\hrule} + {} 1 1 0 0&FF &FS &, &$<$&L &\\ &l &$|$ \cr \noalign{\hrule} + {} 1 1 0 1&CR &GS &$-$ &= &M &] &m &$\}$\cr \noalign{\hrule} + {} 1 1 1 0&SO &RS &. &$>$&N &\char94 &n &\char126\cr + \noalign{\hrule} + {} 1 1 1 1&SI &US &/ &? &O &\_$\!$\_&o &DEL\cr\noalign{\hrule} + \noalign{\vskip2mm} + \omit&\omit\namefont \hfil LEGEND:\hfil \span\omit + &\multispan4\hskip\fatlinewidth + \vtop{\vskip-10pt\hbox{\vrule + \vbox to \rowheight{ + \offinterlineskip + \hrule\vskip \topwhite + \hbox to \colwidth{\codefont\hskip\leftwhite + dec\hfil} + \vfil + \hbox to \colwidth{\namefont\hfil CHAR\hfil} + \vfil + \hbox to \colwidth{\codefont\hskip\leftwhite + hex\hfil oct + \hskip\rightwhite} + \vskip\botwhite + \hrule }% + \vrule}} + \hfil + &\multispan2\bitfont \hskip\fatlinewidth + \vtop{\vskip-8pt\baselineskip=8.5pt + \hbox{Victor Eijkhout} + \rlap{Dept. of Comp. Sci.} + \rlap{University of Tennessee} + \rlap{Knoxville TN 37996, USA} + }\hfil\cr + } +} +%%%%%%%%%%%%%%%%%%%%%%% and that's it folks! %%%%%%%%%%%%%%%%%%%%%%%%%% + +\bye %% PLAIN TeX +%\end{document} %% LaTeX diff --git a/Master/texmf-dist/doc/support/patgen/patgen2.tutorial b/Master/texmf-dist/doc/support/patgen/patgen2.tutorial new file mode 100644 index 00000000000..5194083aa2c --- /dev/null +++ b/Master/texmf-dist/doc/support/patgen/patgen2.tutorial @@ -0,0 +1,331 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% A SMALL TUTORIAL ON THE MULTILINGUAL FEATURES OF PATGEN2 % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\documentstyle{article} +\title{A small tutorial on the multilingual features of PatGen2} +\author{Yannis Haralambous} +\date{} +\begin{document} +\maketitle + +\def\XeT{X\kern-.1667em\lower.5ex\hbox{E}\kern-.125emT} + +I will very briefly discuss and illustrate by an example the features +of PatGen2\footnote{the extension to PatGen by Peter Breitenlohner, +author of many beautiful and extremely useful \TeX ware, such as +\TeX--\XeT, {\tt DVIcopy} etc.}, related to the {\em translation} +file. + +\section{Syntax of the translation file} +\subsection{What is the problem} +The problem is that in our (non-English, non-Latin, +non-Indonesian\footnote{As far as I know, English, Latin and +Indonesian are the only languages without diacritics or special +characters...}) languages, we have more characters than just the~26 +letters of the Latin alphabet. Not to mention that alphabetical orders +can be quite different (remember: in Spanish, cucaracha comes before +chacal), and that there can be many ways to express these additional +characters: for example the French \oe{} (like in << Histoire de l'\oe +il >> by Georges Bataille) can be given to \TeX\ as an 8-bit +character, or as \verb*=\oe =, or as \verb=\oe{}=, or as \verb=^^f7= +(since we are {\em all} now working with DC fonts) and so forth. + +Now let's make (or enhance the) hyphenation patterns for our language(s). +Fred Liang has not provided PatGen with the extensibility feature: before +PatGen2, if your language had less than~26 letters you could hack patterns by +substituting letters, if it had more\ldots then the odds were against you. + +So the problem is to express additional characters in the patterns, in some +understandable way (and if possible to get the results in the appropriate +alphabetical order). + +\subsection{The solution} +PatGen2 allows you to include more characters than the~26 letters of +the alphabet. You can specify arbitrary many {\em input forms} for +each of them (these forms will be identified internally), and you can +specify the alphabetical order of your language. The latter feature is +only interesting when you want to study the patterns file to correct +bugs, it doesn't affect the result. + +These informations are transmitted to PatGen2 by means of a {\em +translation} file (usually with the extension \verb=.tra=). The syntax +of this file is not very user-friendly, but if you deal with PatGen +you are supposed to be a hacker anyway, and hackers just {\bf love} +weird-but-efficient-syntaxes [the proof: we all like +\TeX!\footnote{\ldots just joking}]. + +On the first line you specify the \verb=\lefthyphenmin= and +\verb=\righthyphenmin= values. The seven first positions of this line +are used as follows: two positions for \verb=\lefthyphenmin=, two +positions for \verb=\righthyphenmin=, and one position for substitute +symbols of each of \verb=.=, \verb=-=, \verb=*= in the output file. +This can be useful if you are going to use the dot the asterisk or the +hyphen to describe your additional characters (for example one may use +the dot to specify the dot accent on a letter). + +The next lines concern letters of the alphabet of our language. The +first position of each line is the delimiter of our fields. You know +from languages like C or {\tt awk} that it is very useful to define +our own delimiter (instead of the blank space) if for any reason we +want to {\em include} a blank space into our fields. This will be the +case in the example: one usually leaves a blank space after a \TeX\ +macro without argument. + +Otherwise just leave the first position blank. Next comes the +standard representation of our character (preferably lowercase). This +is how the character will appear in the patterns and in the hyphenated +output file. + +Follows again a delimiter, and all the {\em equivalent} +representations of your character: its uppercase form, and as many +other input forms we wish, always followed by a delimiter. + +The order of lines specifies the alphabetical order of your characters. + +When PatGen sees two consecutive delimiters, +it stops reading; so we can include +comments after that. + +\section{An example} +To illustrate this I have taken some +Greek words (people who know $X\acute\alpha% +\rho\rho\upsilon$ $K\lambda\acute\upsilon\nu\nu$ +and his album $\Pi\alpha\tau% +\acute\alpha\tau\epsilon\varsigma$ will recognize some of these +words\ldots) and included an $\alpha$ with accent, and a variant +representation of $\pi$, in form of a macro \verb*=\varpi =. Also I +followed the Greek alphabetical order in the translation file. + +Here is my list of words: + +\begin{verbatim} +A-NU-PO-TA-QTOS +A-KA-TA-M'A-QH-TOS +A-EI-MNH-STOS +MA-NA +TOUR-KO-GU-FTIS-SA +NU-QO-KO-PTHS +LI-ME-NO-FU-LA-KAS +MPRE-LOK +A-GA-\varpi A-EI +PEI-RAI-'AS +\end{verbatim} + +(file {\tt greek.dic}); and here is my translation file ({\tt greek.tra}): + +\begin{verbatim} + 1 1 + a A + 'a 'A + b B + g G + d D + e E + z Z + h H + j J + i I + k K + l L + m M + n N + o O +#p#P#\varpi ## + r R + s S + t T + u U + f F + q Q + y Y + w W +\end{verbatim} + +(yes, yes, that's not a joke; Greek really uses values~1 +and~1 for minimal right +and left hyphenations!). As you see, I have chosen \verb=#= as delimiter +in the case of $\pi$, because \verb=\varpi= is supposed to be followed +by a blank space. And then I wrote two delimiters (\verb=##=) to show PatGen2 +that I finished talking about $\pi$. + +Here is what I got on my console: + +\begin{verbatim} +PatGen -t greek.tra -o greek.out greek.dic +This is PatGen, C Version 2.1 / Macintosh Version 2.0 +Copyright (c) 1991-93 by Wilfried Ricken. All rights reserved. +left_hyphen_min = 1, right_hyphen_min = 1, 24 letters +0 patterns read in +pattern trie has 266 nodes, trie_max = 290, 0 outputs +hyph_start: 1 +hyph_finish: 2 +pat_start: 2 +pat_finish: 4 +good weight: 1 +bad weight: 1 +threshold: 1 +processing dictionary with pat_len = 2, pat_dot = 1 + +0 good, 0 bad, 31 missed +0.00 %, 0.00 %, 100.00 % +69 patterns, 325 nodes in count trie, triec_max = 440 +25 good and 42 bad patterns added (more to come) +finding 29 good and 0 bad hyphens, efficiency = 1.16 +pattern trie has 333 nodes, trie_max = 349, 2 outputs +processing dictionary with pat_len = 2, pat_dot = 0 + +29 good, 0 bad, 2 missed +93.55 %, 0.00 %, 6.45 % +45 patterns, 301 nodes in count trie, triec_max = 378 +2 good and 43 bad patterns added +finding 2 good and 0 bad hyphens, efficiency = 1.00 +pattern trie has 339 nodes, trie_max = 386, 6 outputs +processing dictionary with pat_len = 2, pat_dot = 2 + +31 good, 0 bad, 0 missed +100.00 %, 0.00 %, 0.00 % +47 patterns, 303 nodes in count trie, triec_max = 369 +0 good and 47 bad patterns added +finding 0 good and 0 bad hyphens +pattern trie has 344 nodes, trie_max = 386, 13 outputs +51 nodes and 11 outputs deleted +total of 27 patterns at hyph_level 1 + +pat_start: 2 +pat_finish: 4 +good weight: 1 +bad weight: 1 +threshold: 1 +processing dictionary with pat_len = 2, pat_dot = 1 + +31 good, 0 bad, 0 missed +100.00 %, 0.00 %, 0.00 % +27 patterns, 283 nodes in count trie, triec_max = 315 +0 good and 27 bad patterns added +finding 0 good and 0 bad hyphens +pattern trie has 295 nodes, trie_max = 386, 4 outputs +processing dictionary with pat_len = 2, pat_dot = 0 + +31 good, 0 bad, 0 missed +100.00 %, 0.00 %, 0.00 % +27 patterns, 283 nodes in count trie, triec_max = 303 +0 good and 27 bad patterns added +finding 0 good and 0 bad hyphens +pattern trie has 320 nodes, trie_max = 386, 6 outputs +processing dictionary with pat_len = 2, pat_dot = 2 + +31 good, 0 bad, 0 missed +100.00 %, 0.00 %, 0.00 % +24 patterns, 280 nodes in count trie, triec_max = 286 +0 good and 24 bad patterns added +finding 0 good and 0 bad hyphens +pattern trie has 328 nodes, trie_max = 386, 9 outputs +35 nodes and 7 outputs deleted +total of 0 patterns at hyph_level 2 +hyphenate word list? y +writing PatTmp.2 + +31 good, 0 bad, 0 missed +100.00 %, 0.00 %, 0.00 % +Time elapsed: 0:37:70 minutes. +\end{verbatim} + +and here are the results: first of all the patterns +(file {\tt greek.out}) + +\begin{verbatim} +a1g +a1e +a1k +a1m +a1n +a1p +a1t +a1q +'a1q +e1l +e1n +h1t +i1'a +i1m +i1r +1ko +o1g +o1p +o1t +o1f +r1k +s1s +1st +u1l +u1p +u1f +u1q +\end{verbatim} + +As you see, {\tt o1t} comes before {\tt o1f}: (smile) simply +because we are talking about $o1\tau$ and $o1\phi$. So the +alphabetical order is well respected. Also you see that PatGen2 +has read the word \verb*=A-GA-\varpi A-EI= exactly as if it +were \verb*=A-GA-PA-EI= and has made out of it the pattern +{\tt a1p} (if you look in the input words there is no other +reason for this pattern to exist). + +And here is our result (file {\tt PatTmp.2}): + +\begin{verbatim} +a*nu*po*ta*qtos +a*ka*ta*m'a*qh*tos +a*ei*mnh*stos +ma*na +tour*ko*gu*ftis*sa +nu*qo*ko*pths +li*me*no*fu*la*kas +mpre*lok +a*ga*pa*ei +pei*rai*'as +\end{verbatim} + +(Of course, it is correct; you think I would have shown it if it +weren't correct?) As you see there is no \verb*=\varpi = anymore: +PatGen2 has really replaced it by \verb=p=, and so +\verb*=A-GA-\varpi A-EI= has become \verb=a*ga*pa*ei=. + +\section{Where do I find more information?} +I voluntarily didn't discussed the various parameters used for +pattern generation. For these there is very good litterature: +\begin{itemize} +\item the \TeX book, by the Grand Wizard of \TeX\ arcana, +appendix H; +\item \LaTeX\ Erweiterungsm\"oglichkeiten, by Helmut Kopka, +Addison-Wesley, Pages 482--489; +\item Swedish Hyphenation for \TeX, by Jan Michael Rynning, +[sorry, I don't know where this paper is published]; +\item Word Hy-phen-a-tion by Com-put-er, Stanford University +Report {\tt STAN-CS-83-977}; +\item forthcoming paper by Dominik Wujastyk, on British +hyphenation; +\item Hyphenation Patterns for Ancient Greek and Latin, +TUGboat~13 (4), pages 457--469. +\item and many others\ldots +\end{itemize} + +Where to get PatGen2? probably everywhere, but certainly in +Stuttgart ({\tt IP 129.69.1.12}), +\verb=soft/tex/systems/pc/utilities/patgen.zip= (take a look also at +\verb=soft/tex/systems/knuth/texware/patgen.version2.1/patgen.README=). + +\section{Go forth, etc etc} +OK, once again {\sc Go Forth} and make masterpieces of hyphenation +patterns\ldots +{\bf but} please get in touch with the TWGMLC (Technical Working +Group on Multiple Language Coordination) first, since people there +are working on many languages: maybe they have already done what +you need and are still testing it; or maybe they haven't and in +that case you could help us a lot. + + +\end{document} + |