TUGBOAT

Volume 16, Number 4 / December 1995

351 Addresses

General Delivery 353 Writing future is reading the past / Michel Goossens 355 Editorial comments / Barbara Beeton day at a small press book fair; Sources of information on printing and book arts on the Web; A TEX Users Group for Spanish speakers; A brief comment on the merger of TUGboat and TEXandTUGNEWS 357 Upcoming TTN merger into TUGboat / Peter Flynn

Software & Tools 358 Introduction to FasTEX: a system of keyboard shortcuts for the fast keying of TEX / Filip Machi, Jerrold . Marsden and Wendy G. McKay Philology 364 The style russianb for Babel: problems and solutions / Olga Lapko and Irina Makhovaya 373 A package for Church-Slavonic typesetting / Andrey Slepukhin Fonts 381 Release 1.2 of the dc-fonts: Improvements to the European letters and first release of text companion symbols / J¨org Knappen

Graphics 388 A METAFONT–EPS interface / Boguslaw Jackowski

Technical 395 A proposed standard for specials / Tomas G. Rokicki Working Group 401 A directory structure for TEX files (Version 0.999) / TUG Working Group Reports on a TEX Directory Structure

Hints & Tricks 413 Whatever is wrong with my LATEXfile? / Sebastian Rahtz Macros 416 New perspectives on TEX macros / Jonathan Fine LATEX 418 Never again active characters! Ω-Babel / Yannis Haralambous, John Plaice and Johannes Braams News & 428 Calendar Announcements 429 Call for papers: TUG ’96 427 TUG’97—Soliciting bids for host site 432 EuroTEX ’95, Papendal, The Netherlands, 4 – 8 September 1995 / Michel Goossens

Late-Breaking 379 Production notes on the Russian papers / Michel Goossens News 440 Production notes / Mimi Burbank and Michel Goossens 440 Future issues

TUG Business 441 1996 TEX Users Group election 441 1996 TUG election — nomination form 442 Institutional members

Advertisements 443 TEX consulting and production services 443 Index of advertisers TEXUsersGroup Board of Directors Memberships and Subscriptions Donald Knuth, Grand Wizard of TEX-arcana† TUGboat (ISSN 0896-3207) is published quarterly Michel Goossens, President ∗ ∗ by the TEX Users Group, Flood Building, 870 Judy Johnson , Vice President Market Street, #801; San Francisco, CA 94102, Mimi Jett∗, Treasurer . S. A. Sebastian Rahtz∗, Secretary Barbara Beeton 1996 dues for individual members are as follows: Karl Berry Ordinary members: $55 Mimi Burbank Students: $35 Michael Ferguson Membership in the T X Users Group is for the E Peter Flynn calendar year, and includes all issues of TUGboat George Greenwade for the year in which membership begins or is Yannis Haralambous renewed. Individual membership is open only to Jon Radel named individuals, and carries with it such rights Tom Rokicki and responsibilities as voting in the annual election. Norm Walsh TUGboat subscriptions are available to organi- J´ıˇri Zlatuˇska zations and others wishing to receive TUGboat in a Raymond Goucher, Founding Executive Director † name other than that of an individual. Subscription Hermann Zapf, Wizard of Fonts † rates: $70 a year, including air mail delivery. ∗ Second-class postage paid at San Francisco, member of executive committee †honorary CA, and additional mailing offices. Postmaster: TUGboat Send address changes to ,TEXUsers Addresses Telephone Group, 1850 Union Street, #1637, San Francisco, All correspondence, +1 415 982-8449 CA 94123, U.S.A. payments, parcels, etc. Fax Institutional Membership TEX Users Group +1 415 982-8559 Institutional Membership is a means of showing 1850 Union Street, #1637 continuing interest in and support for both T X E San Francisco, Electronic Mail and the TEX Users Group. For further information, CA 94123 USA (Internet) contact the TUG office. If you are visiting: General correspondence: [email protected] TEX Users Group TUGboat c Copyright 1995, TEXUsersGroup Flood Building Submissions to TUGboat: Permission is granted to make and distribute verbatim 870 Market Street, #801 [email protected] copies of this publication or of individual items from this publication provided the copyright notice and this permission San Francisco, notice are preserved on all copies. CA 94102, USA Permission is granted to copy and distribute modified versions of this publication or of individual items from this publication under the conditions for verbatim copying, TEX is a trademark of the American Mathematical provided that the entire resulting derived work is distributed Society. under the terms of a permission notice identical to this one. Permission is granted to copy and distribute transla- tions of this publication or of individual items from this publication into another language, under the above condi- tions for modified versions, except that this permission notice may included in translations approved by the TEXUsers Group instead of in the original English. Some individual authors may wish to retain traditional copyright rights to their own articles. Such articles can be identified by the presence of a copyright notice thereon.

Printed in U.S.A. The mass market in the U.S. has always held a “good enough” mentality; consumers have always preferred a marginally adequate product that is priced lowest over a superior product at a higher price. Caren Eliezer The Seybold Report on Desktop Publishing (October 2, 1995)

COMMUNICATIONS OF THE TEX USERS GROUP EDITOR BARBARA BEETON

VOLUME 16, NUMBER 4 • DECEMBER 1995 SAN FRANCISCO • CALIFORNIA • U.S.A. TUGboat TUGboat Editorial Board

During 1996, the communications of the TEXUsers Barbara Beeton, Editor Group will be published in four issues. One issue Mimi Burbank, Production Manager will contain the Proceedings of the 1996 TUG Victor Eijkhout, Associate Editor, Macros Annual Meeting. One issue (Vol. 17, No. 4) will Alan Hoenig, Associate Editor, Fonts be a theme issue, edited by a guest editor, with Christina Thiele, Associate Editor, Philology and participation by invitation. Linguistics TUGboat is distributed as a benefit of mem- Production Team: bership to all members. Barbara Beeton, Mimi Burbank (Manager), Wietse Submissions to TUGboat are reviewed by vol- Dol, Robin Fairbairns, Michel Goossens, Sebastian unteers and checked by the Editor before publica- Rahtz, Christina Thiele tion. However, the authors are still assumed to be See page 351 for addresses. the experts. Questions regarding content or accu- racy should therefore be directed to the authors, Other TUG Publications with an information copy to the Editor. TUG publishes the series TEXniques, in which have Submitting Items for Publication appeared reference materials and user manuals for macro packages and T X-related software, as well The next regular issue will be Vol. 17, No. 1; E as the Proceedings of the 1987 and 1988 Annual deadlines for that issue will have passed by the time Meetings. Other publications on T Xnical subjects this issue is mailed. Mailing is scheduled for March. E also appear from time to time. Deadlines for other future issues are listed in the TUG is interested in considering additional Calendar, page 428. manuscripts for publication. These might include Manuscripts should be submitted to a member manuals, instructional materials, documentation, or of the TUGboat Editorial Board. Articles of general works on any other topic that might be useful to interest, those not covered by any of the editorial the T X community in general. Provision can be departments listed, and all items submitted on E made for including macro packages or software in magnetic media or as camera-ready copy should computer-readable form. If you have any such items be addressed to the Editor, Barbara Beeton (see or know of any that you would like considered for address on p. 351). publication, send the information to the attention Contributions in electronic form are encour- of the Publications Committee in care of the TUG aged, via electronic mail, on diskette, or made office. available for the Editor to retrieve by anonymous FTP; contributions in the form of camera copy Trademarks are also accepted. The TUGboat “style files”, for use with either plain TEXorLATEX, are available Many trademarked names appear in the pages of “on all good archives”. For authors who have no TUGboat. If there is any question about whether network FTP access, they will be sent on request; a name is or is not a trademark, prudence dictates please specify which is preferred. Write or call the that it should be treated as if it is. The following TUG office, or send e-mail to [email protected]. list of trademarks which appear in this issue may This is also the preferred address for submitting not be complete. contributions via electronic mail. Adobe Illustrator is a trademark of Adobe Systems Incorporated. Reviewers CorelDraw is a registered trademark of Corel Cor- poration. Additional reviewers are needed, to assist in check- Fontographer is a registered trademark of Altsys ing new articles for completeness, accuracy, and Corporation. presentation. Volunteers are invited to submit their MS/DOS is a trademark of MicroSoft Corporation names and interests for consideration; write to TUG-

METAFONT is a trademark of Addison-Wesley Inc. [email protected] or to the Editor, Barbara Beeton PC T X is a registered trademark of Personal T X, (see address on p. 351). E E Inc. PostScript is a trademark of Adobe Systems, Inc. TUGboat Advertising and Mailing Lists TEXandAMS-TEX are trademarks of the American For information about advertising rates, publication Mathematical Society. schedules or the purchase of TUG mailing lists, Textures is a trademark of Blue Sky Research. write or call the TUG office. Unix is a registered trademark of X/Open Co. Ltd. 352 TUGboat, Volume 16 (1995), No. 4

Jon Radel Andrey Slepukhin Hermann Zapf P. . Box 2276 Lavra Seitersweg 35 Reston, VA 22090-0276 U.S.A. Sergiev Posad D-64287 Darmstadt, Germany [email protected] Russia Jiˇr´ı Zlatuˇska [email protected] Sebastian Rahtz Faculty of Informatics Production Methods Group Christina Thiele Masaryk University Elsevier Science Ltd 15 Wiltshire Circle Bureˇsova 20 The Boulevard Nepean K2J 4K9, Ontario Canada 602 00 Brno, Czech Republic Langford Lane, Kidlington [email protected] [email protected] Oxford OX5 1GB, U.K. Norm Walsh [email protected]. Online Publishing Tomas Rokicki O’Reilly & Associates, Inc. 725B Loma Verde 90 Sherman Street Palo Alto, CA 94303 U.S.A. Cambridge, MA 02140-3244 U.S.A. [email protected] [email protected]

Figure 1: Flying into Moscow Figure 2: Meeting site in Dubna

Figure 3: Anyone for sailing on the Volga?

For more information on TUG’96 — see page 428. TUGboat, Volume 16 (1995), No. 4 353

and using Unicode as internal encoding. Some appli- Opening Words cations based upon Ω are already available (see the articles of Plaice and Haralambous in recent TUG- boats). ε Writing the Future is Reading the Past In the summer, version 1 of -TEX was announc- ed. This successor to TEX is, like Ω, based upon Michel Goossens the original TEX code, and provides extensions in TUG President the areas of additional control over expansions, re- The year 1995 now lies behind us, and in less than scanning tokens, environmental enquiries, additional four years will have reached the end of the 20th marks and debugging facilities, bi-directional type- century, and the end of the second millennium, at setting, and a few supplementary primitives. least for those using a “Western” cultural reference want to stress once more that both the Ω and ε frame. Let me note that this is by far no longer the -TEX developments are clearly evolutionary, paying majority of the inhabitants of this planet, so that the a lot of attention to backward compatibility, and notion of “end of an era”, is completely artificial. tackle one or two precise problem areas at a time. Indeed, in building for the future we should al- This ensures that users are presented with a well- ways take the long view to make sure that decisions known and trusted upgrade path, so that the tran- we consider urgent today have no unforeseen nega- sition between present and augmented versions of tive side-effects a few years from now. Knuth, when TEX will be a natural process. I am therefore sure ε he decided to develop a system that would allow that -TEX and Ω will both have a brilliant future. A him to typeset — in a completely digital way — the I am equally confident that LTEX2ε will, with second edition of “The Art of Computer Program- each half-yearly release, become more robust and ming” — thought it was going to take him a “short” provide a clear reference frame to act as the defini- sabbatical year. In the end he needed seven (the tive markup system, which can be used by all those who want to benefit from the advantages of generic magic number?) years to create TEXand META- markup and interchange of documents. FONT plus the Computer Modern fonts. Today many enthusiasts think they can improve in no time upon After the efforts of the CTAN pioneers a few this or that aspect of digital typography, be it better- years ago to build a reliable TEX Internet archive TUGboat looking fonts, optimized multi-column algorithms, structure, you will find in this issue of the perfect float placement, etc. By now detailed studies conclusions of the “TDS”(TEX Directory Structure) A Technical Working Group. This initiative’s aim is to by the NTS (New Typesetting System) and LTEX3 initiatives, respectively evolutionary successors to define a “plug-and-play” run-time directory struc- TEXandLATEX, have shown that it is far from triv- ture for TEX files that can be used by all present-day ial to come up with efficient general algorithms for operating systems and is ISO 9660-compliant. A In the field of fonts, an optimized version of the vastly improving today’s TEX/LTEX paradigms, and that several man-years of work will still be needed DC fonts has just appeared, and it is foreseen that in these areas before Mr. Joe User will be able to the long-awaited European (or Extended) Computer profit from them directly. Modern (EC) family will be available by the end of Therefore, it came as a relief to me that just 1996. At the same time work is going on to define a A “Text Companion” (TC) font to allow a clearer sep- over two years ago the LTEX3 team decided to - velop LATEX2ε, whose prime aim was to bring to- aration between real math and more general sym- A bols (for currencies, trademarks, some arrows, mu- gether all variant flavours of LTEX into one format, and to provide often-requested simple extensions to sical notes, etc.). At present they are mixed in the LATEX’s original functionality (as defined by Lam- CM math fonts, and it would be more logical and port in the middle eighties). And, it can be said, we practical to make all general characters uniformly owe the LAT X2ε team a lot of gratitude for their available to TEX users by grouping them in their E A foresight and thorough work. own font. At the same time the LTEX3 team has published some ideas on possible layouts for 256- Also in the field of the typesetting engine it- 1 self, the official release of Ω took place in March of character math fonts, so that it is hoped that also this year, and a consolidated version 1.2 appeared in this area a consolidation effort can take place in in December 1995. The Ω system extends T X’s the not-too-distant future. E TUGboat functionality mainly in the area of multi-language Readers of will, without doubt, have typesetting by extending all data-types to 16 bits, 1 See TTN 4 #2, pp. 17 – 18. 354 TUGboat, Volume 16 (1995), No. 4

remarked the prominence given to hypertext devel- Therefore, since August, a Production Team2 has opments this year, with articles on HTML/SGML, worked very hard to publish these last five issues PDF and Acrobat, T.V. Raman’s Aster, translators of TUGboat, and I think we have succeeded in the to and from LATEX, etc. It is probably true to say area of catching up with the backlog. Some com- that these new tools will become ever more impor- promises and trade-offs had to be taken, but we are tant in the future and provide an ideal bridge to link now quite confident that this team-based production excellent typography based on LATEX with instan- scheme will make it possible to have TUGboat ap- taneous availability of information worldwide. The pear regularly in the future. But at the same time same well-structured generically marked-up SGML we must tackle the financial problem, and, therefore, or LATEX document can form the basis of preparing the TUG’s Board of Directors has unanimously de- the various views of the information, and this as- cided to discontinue the publication of TEXandTUG pect of re-use is a sure winner for these systems in News as a separate item, and to merge it with TUG- the rapidly changing world of electronic publishing. boat, with immediate effect. That is, there will be By skimming through your four issues of TUG- no further issues of TTN after 4,3. This has the ad- boat of 1995 you certainly will find other areas which vantage of publishing all TEX-related information in you consider important or interesting. I would only one place, and at the same time saves up to $10,000 like to mention the many articles on the non-English in printing and postal costs. We hope to be able in use of TEX (encodings, hyphenation patterns, fonts) the future to redirect part of those savings to im-

and the revival of METAFONT as an intelligent high- prove the free services that we offer the TEXcom- level font-generation and drawing tool. munity. As you go through this final issue of 1995, you TUG regularly renews part of its Board of Di- will also notice the use of Russian alongside - rectors. Therefore, on page 441 you can find a nomi- glish in two articles, and the TUG 1996 conference nation form for the 1996 elections, which are to take ammouncement. These articles, and the fact that place this spring. All 1996 TUG members can stand Dubna in Russia was chosen to host TUG’96 show for election and I sincerely hope that many of you that TEX is now truly global, and it is therefore time will take this opportunity to show your support for that the TUG adapts to that situation by taking into TUG by running for the Board. This is without account the wishes and needs of every TEXuserin doubt one of the best ways to actively participate the world by acting as a central knowledge reposi- in the life of the TEX community and contribute in tory of TEX-related developments. TUG, as an orga- shaping its future. nization, realizes that it is impossible to serve a par- Knuth promised at TUG’s 10th Annual meet- ticular user base better than local TEX User Groups, ing in Stanford in 1989 that he would attend hence- where they exist. Yet, it is important to provide a forth all TUG Conferences that would be a power forum for discussing all TEX-related activities in a of 2. And as this year’s Conference in St. Peters- 22 coherent framework, where all important informa- burg Beach was TUG’s 16 = 2 th Annual Meeting, tion is kept in a unique place. TUG and TUGboat Don Knuth honored us with his presence. I am sure must even more than in the past be the voice and that all those who attended TUG’95 and profited up-to-date road-map of the TEX community. And from his stimulating questions, interesting sugges- that is why we want to open up TUGboat to all tions, and gentle remarks will already look forward TEX users and user organizations in the world. to meet Don again at TUG’s 32nd meeting in ... Already in St. Petersburg Beach in Florida at 2011. The venue? Well, that’s the only unknown, TUG’95 last August, I explained that TUG was not isn’t it, because I am confident that TEX will still in a rosy financial situation. With respect to last be alive and well! year the number of our members has decreased by Let me finish by wishing you and your fami- about 20%, while printing and postal charges have lies all the best for the new year, with a lot of fun, increased. We therefore expect a shortfall of about motivating work, and, above all, health and happi- $30,000 for 1995, and unless drastic actions are taken ness. And, I sincerely hope to see you all in 1996, TUG will have great difficulties surviving. in Dubna at TUG’96, or anywhere else in the world One of our problems last in 1994/95 was the where our (TEXornon-TEX) roads might cross. irregularity of TUGboat, TUG’s flagship publica- tion. For various reasons it had become impossible 2 to keep to the three-monthly schedule of TUGboat This team, under the leadership of TUGboat-editor Bar- and we think that quite a few of our readers did not bara Beeton, consists of Mimi Burbank, Wietse Dol, Robin Fairbairns, Sebastian Rahtz, Christina Thiele, and myself. renew their 1995 membership just for that reason. Malcolm Clark helped us as editor of TUGboat 16(2). TUGboat, Volume 16 (1995), No. 4 355

Editorial Comments those portions of the paper that should remain ink- free, . . . even how to create a “rainbow” border on Barbara Beeton a traditional press (although this last was not part A day at a small press book fair of the main project). Many of these techniques are simply impossible on “modern” printing equipment; Early this fall, over the weekend of the Columbus however, the fine quality of the results is a fitting Day holiday (in the U.S., this is celebrated on the goal for craftsmen in the newer technologies. Monday closest to October 12, especially in loca- Continuing his discussion of the decorative types, tions with a sizeable population of Italian descent) I Mr. Mortimer showed several slides of contempo- had the opportunity to attend a book fair organized rary (i.e., 1820s) posters on which they had been by my favorite bookshop, Oak Knoll Books of New used; these were mainly for the theater, agricultural Castle, Delaware. Oak Knoll deals in “books about shows, and masonic events. The present printing books” — typography, printing, design, . . . bibliogra- project took about two years. Near the end of that phy—and has a strong commitment to the contin- time, one of the assistants in the printing house re- ued health of the book arts. In support of this, membered seeing a specimen book with some of the the proprieter, Bob Fleck, and his staff have under- designs, and undertook a search—which met with taken to arrange “events” where small presses and success. The cover of the specimen book identified craftsmen in the traditions associated with printing it as being from the firm of Louis John Pouchee, can get some exposure and meet prospective new and several of the types were prominently displayed customers. The book fair was the second in what there. Apparently, Pouchee was an upstart in the promises to be an annual tradition. type business and antagonized some of the other, The highlight of the fair was a talk by Ian Mor- larger firms (typefounding was a very competitive timer, the head of the printing house I.M. Impri- business in the 19th century). It isn’t known what mum, London, on the printing of a definitive edi- actually happened, but it seems likely that a com- tion of specimens of decorative wood types created petitor bought up Pouchee’s holdings and promptly in the early 1800s by Louis John Pouchee. The wood made them disappear from public view, but was blocks, carved in solid boxwood, and intended as not so thorough that the types themselves were de- masters for stereotypes, were found among the - stroyed. The timing of this solution to the mystery fects of the Caslon type foundry at the time of its was especially satisfying, as it permitted the creator closing, without identification. The blocks are now of the types to be identified in the printed catalog. held by the St Bride printing library in London, and One small additional fillip to the project was the printing was undertaken under library auspices. the use of another font of type that had apparently At the beginning of the project, nothing was also not been used extensively. This was a very - known about the provenance of the types, not even egant sans serif that had been created about 1820, the name of the creator. Nonetheless, the quality but failed to gain popularity at that time and was of design and workmanship of the types was ex- abandoned. (Sans serif types were “invented” anew ceptional, and no printed specimens were known. at mid-century and became staples of the industry Aside from the effects of age — 150 years of disuse from that time.) The ability to print with such a and lack of attention was evidenced in some minor contemporaneous type was clearly a source of great warping and splitting and in the absence of some pleasure to Mr. Mortimer, and I can vouch for the letters in a couple of the alphabets—the condition highly satisfactory appearance of the results. of the blocks was such that it is believed they had Following Mr. Mortimer’s talk, a panel of the never before been used directly for printing, so the small press owners gave their views on questions work described is in a very real sense a first edition. such as these. Mr. Mortimer illustrated his description of the • printing process with slides that illuminated the Where will the book be in five years? The steps to even the least knowledgeable of the au- best answer: “where it damn well wants to.” dience. I learned a great deal about printing from No one thought the book as produced by the “real” type in order to ensure uniform distribution of small press is about to disappear, although sev- ink on the printed surface—how to ensure that the eral felt that reference and trade books would type heights are even, how to use “make-ready” to be heavily influenced by the techniques of elec- tronic distribution. permit greater pressure on areas of solid black, how • to apply differential inking so that areas of great de- Does anyone running a small press (as repre- tail will not be blurred, how to use a frisket to cover sented on the panel) have an e-mail address? No, not one; one panelist pointed out that it 356 TUGboat, Volume 16 (1995), No. 4

takes too long to clean the ink off one’s hands An announcement by the Catholic University for a computer to be particularly useful on an of America Libraries and the School of Library and ongoing basis. But perhaps there is an interme- Information Science at CUA introduces “A Guide diate approach wherein an engaged and knowl- to the Book Arts and Book History on the World edgeable bookseller can represent small presses Wide Web”, accessible at the address http://www. and provide the means of introducing them to cua.edu/www/mullen/bookarts.html. This guide a wider audience, to the benefit of all. is “an organized list of links to Web pages that deal with book arts and book history.” • Is knowledge of the traditional printing crafts of From L’Ecole´ des Arts visuels, Universit´eLaval, any use to modern students of typography and Qu´ebec, comes the page IKONQuebec, at http:// design? An adamant and vocal response by Mr. www.ulaval.ca/ikon/HOME.HTML. This site deals Mortimer that this is the only way students are with graphic design including and beyond the book, going to learn to handle space was seconded by and contains a bibliography of “les 700 meilleurs a young woman in the audience who said that livres sur le graphisme”, most of which are in either she had been in one of Mr. Mortimer’s classes French or English. several years earlier and thanked him for what Check them out! he had taught her. ATX Users Group for Spanish speakers The afternoon was occupied by a show of wares E by nearly 20 small presses, and by demonstrations At the very end of December, a message from Jos´e of printing (on a very small press, one made origi- R. Portillo Fernandez announced the formation of a nally as a toy in a size suitable for printing business new TEX Users Group — Grupo de Usuarios de TEX cards), bookbinding, and typefounding by current Hispanoparlantes, GUTH. practitioners of those crafts. All the exhibitors were Some of the activities of GUTH will be the main- unfailingly helpful and the enthusiasm of the audi- tenance of a FAQ, publication of a Boletin, creation ence was obvious. I’ come home with some fine and maintenance of hyphenation dictionaries, styles, new treasures and am already looking forward to and a Babel package, and an FTP site. A Web page next year. has already been installed: http://gordo.us.es/ For anyone interested in “books about books”, Actividades/GUTH. Oak Knoll now has a presence on the Web, at If you are interested in the activities of this new http://www.oakknoll.com, or you can write to group, but don’t have Web access, you can get in [email protected]. touch with Sources of information on printing and Jos´e Ra Portillo Fern´andez book arts on the Web E.T.S. Arquitectura Matem´atica Aplicada 1 In addition to the Oak Knoll Web page, which is Reina Mercedes, 2 also accessible through the Antiquarian Booksellers’ E-41012 Sevilla (Espa˜na) Association of America (ABAA) World Wide Web E-mail: [email protected]. Server, at http://www.clark.net/pub/rmharris/ booknet1.html, several other Web sites devoted to There is also a newsgroup about Spanish-lan- printing and the book arts have come to my atten- guage TEX, es.eunet.spanish-tex, and an associ- tion. ated discussion list, [email protected]. William S. Peterson, at the University of Mary- land, College Park, has created a Web page “de- A brief comment on the merger of TUGboat T XandTUGNews voted to British and American fine printing of the and E nineteenth and twentieth centuries, with particu- As you have already read in Michel Goossens’ intro- lar emphasis on William Morris and the Kelmscott duction to this issue, TTN has ceased publication Press.” The address is http://www.wam.umd.edu/ after issue 4(3). TTN was created as an attempt to ~wsp/home.htm. Even a quick glance at the page attract members to TUG who didn’t feel ready for shows the hand of one who respects traditional book the heavy technical matter of TUGboat. Although design. Pointers to numerous sources are given, as there have been differences of opinion over whether well as essays on the stated area of coverage. This such a separate forum was necessary or successful, site is under construction, and will surely expand it is a fact that TTN has gathered much interesting into an even more interesting collection than it is and useful material, in a form that could easily be already. slipped into a purse or briefcase and carried onto an TUGboat, Volume 16 (1995), No. 4 357 airplane for easy reading, and I am sorry to see it I am looking forward to this continuing in the end. new format of publication, because I feel strongly What I don’t want to happen is for the ongoing that one of the best ways to persuade the less tech- in-print forum for this material to disappear too. nical TEX users to start reading TUGboat is to get Technical material submitted to TUGboat is them reading TTN. I certainly remember my own subjected to considerable scrutiny, refereed, and of- early days with TEX, struggling to learn the oper- ten edited heavily in an effort to present the facts in ating system, editor, print spooler, job control lan- a style suitable for a technical journal. This will not guage, and TEX all at the same time . . . I would cer- change. However, “lighter” material, what appears tainly have appreciated something to cut my teeth in Typographer’s Inn or ‘Hey — it works!’, for ex- on before I developed an appetite for raw Knuth or ample, will be accommodated without any attempt Lamport. User support people in companies and to make it hew to an inappropriate “higher stan- universities have mailed me to say ‘thank you’ for dard”. Peter Flynn and I will be working together providing this entr´ee to TEX, and I know some of to incorporate this material as a distinct and rec- them are now reading this. ognizable sub-publication that will retain its own The technical minutiæ of production are still personality. We have not yet had an opportunity to being worked out. We have considered (and dis- discuss the real details, but the current columnists carded, I am happy to say) suggestions like printing will be invited — and I hope that they will agree — the TTN components on coloured stock, or having to continue in new surroundings. them bound on a perforated stub like a booklet on The new, combined TUGboat/TTN will become bowel control inside the Reader’s Digest.Ihopethat reality with the next issue, 17(1). our contributors, both occasional and regular, will Let me take this opportunity to thank Peter continue to write, and I hope that the new proxim- Flynn, the present editor, and Christina Thiele, the ity of TTN to TUGboat will mean that we can be founding editor (there have been no others), for their even more encouraging to users in the future. hard work. Well done! ⋄ Peter Flynn Computer Center University College ⋄ Barbara Beeton Cork, Ireland American Mathematical Society Email: [email protected] P.O. Box 6248 Providence, RI 02940 USA Editor’s note: Email: [email protected] Peter expresses very well what I find to be the major failing of TUGboat —itdoesn’tof- ten contain much that can be comprehended im- mediately by someone who is not already relatively skilled in using T X. Despite frequent invitations T XandTUGNews E Some thoughts on E welcoming tutorial material and articles on modest Peter Flynn but useful techniques, and an annual harangue on the subject at the summer TUG meeting, almost In one way I was very fortunate to become the next nothing of this sort appears in my in basket. TTN editor of after Christina Thiele. Her lead broke Even more than articles sent to me, I would the new ground well, so my own spadework was very much like to find one or more volunteers who much reduced. In another way she is always a hard feel the same way, who are willing to listen in on act to follow, but I appreciate having such a high the various electronic TEX discussions, talk to other standard to work to. T Xies, follow up on items that they think will be TTN E As Barbara says, was aimed at those mem- of general interest, and solicit even very small con- bers or potential members who did not feel the need tributions for publication. Now that TTN, with its for the technical depth of TUGboat,orwhowanted “smaller is better” flavor, is joining TUGboat,there something comprehensible which they could show to will be an even greater scope for this material. non-TEXies. I think we have been very fortunate in If you are such a person, and would like to help having writers of the technical caliber displayed in find good material to fill our pages, please send a TTN to date who are nevertheless capable of ex- message to [email protected] or to Peter or me, and pressing and explaining their topics in a form that we will put you to work. doesn’t require pre-reading of chapters 20–26 of The TEXbook. –bb TUGboat, Volume 16 (1995), No. 4 355

Editorial Comments those portions of the paper that should remain ink- free, . . . even how to create a “rainbow” border on Barbara Beeton a traditional press (although this last was not part A day at a small press book fair of the main project). Many of these techniques are simply impossible on “modern” printing equipment; Early this fall, over the weekend of the Columbus however, the fine quality of the results is a fitting Day holiday (in the U.S., this is celebrated on the goal for craftsmen in the newer technologies. Monday closest to October 12, especially in loca- Continuing his discussion of the decorative types, tions with a sizeable population of Italian descent) I Mr. Mortimer showed several slides of contempo- had the opportunity to attend a book fair organized rary (i.e., 1820s) posters on which they had been by my favorite bookshop, Oak Knoll Books of New used; these were mainly for the theater, agricultural Castle, Delaware. Oak Knoll deals in “books about shows, and masonic events. The present printing books” — typography, printing, design, . . . bibliogra- project took about two years. Near the end of that phy—and has a strong commitment to the contin- time, one of the assistants in the printing house re- ued health of the book arts. In support of this, membered seeing a specimen book with some of the the proprieter, Bob Fleck, and his staff have under- designs, and undertook a search—which met with taken to arrange “events” where small presses and success. The cover of the specimen book identified craftsmen in the traditions associated with printing it as being from the firm of Louis John Pouchee, can get some exposure and meet prospective new and several of the types were prominently displayed customers. The book fair was the second in what there. Apparently, Pouchee was an upstart in the promises to be an annual tradition. type business and antagonized some of the other, The highlight of the fair was a talk by Ian Mor- larger firms (typefounding was a very competitive timer, the head of the printing house I.M. Impri- business in the 19th century). It isn’t known what mum, London, on the printing of a definitive edi- actually happened, but it seems likely that a com- tion of specimens of decorative wood types created petitor bought up Pouchee’s holdings and promptly in the early 1800s by Louis John Pouchee. The wood made them disappear from public view, but was blocks, carved in solid boxwood, and intended as not so thorough that the types themselves were de- masters for stereotypes, were found among the ef- stroyed. The timing of this solution to the mystery fects of the Caslon type foundry at the time of its was especially satisfying, as it permitted the creator closing, without identification. The blocks are now of the types to be identified in the printed catalog. held by the St Bride printing library in London, and One small additional fillip to the project was the printing was undertaken under library auspices. the use of another font of type that had apparently At the beginning of the project, nothing was also not been used extensively. This was a very el- known about the provenance of the types, not even egant sans serif that had been created about 1820, the name of the creator. Nonetheless, the quality but failed to gain popularity at that time and was of design and workmanship of the types was ex- abandoned. (Sans serif types were “invented” anew ceptional, and no printed specimens were known. at mid-century and became staples of the industry Aside from the effects of age — 150 years of disuse from that time.) The ability to print with such a and lack of attention was evidenced in some minor contemporaneous type was clearly a source of great warping and splitting and in the absence of some pleasure to Mr. Mortimer, and I can vouch for the letters in a couple of the alphabets—the condition highly satisfactory appearance of the results. of the blocks was such that it is believed they had Following Mr. Mortimer’s talk, a panel of the never before been used directly for printing, so the small press owners gave their views on questions work described is in a very real sense a first edition. such as these. Mr. Mortimer illustrated his description of the • printing process with slides that illuminated the Where will the book be in five years? The steps to even the least knowledgeable of the au- best answer: “where it damn well wants to.” dience. I learned a great deal about printing from No one thought the book as produced by the “real” type in order to ensure uniform distribution of small press is about to disappear, although sev- ink on the printed surface—how to ensure that the eral felt that reference and trade books would type heights are even, how to use “make-ready” to be heavily influenced by the techniques of elec- tronic distribution. permit greater pressure on areas of solid black, how • to apply differential inking so that areas of great de- Does anyone running a small press (as repre- tail will not be blurred, how to use a frisket to cover sented on the panel) have an e-mail address? No, not one; one panelist pointed out that it 356 TUGboat, Volume 16 (1995), No. 4

takes too long to clean the ink off one’s hands An announcement by the Catholic University for a computer to be particularly useful on an of America Libraries and the School of Library and ongoing basis. But perhaps there is an interme- Information Science at CUA introduces “A Guide diate approach wherein an engaged and knowl- to the Book Arts and Book History on the World edgeable bookseller can represent small presses Wide Web”, accessible at the address http://www. and provide the means of introducing them to cua.edu/www/mullen/bookarts.html. This guide a wider audience, to the benefit of all. is “an organized list of links to Web pages that deal with book arts and book history.” • Is knowledge of the traditional printing crafts of From L’Ecole´ des Arts visuels, Universit´eLaval, any use to modern students of typography and Qu´ebec, comes the page IKONQuebec, at http:// design? An adamant and vocal response by Mr. www.ulaval.ca/ikon/HOME.HTML. This site deals Mortimer that this is the only way students are with graphic design including and beyond the book, going to learn to handle space was seconded by and contains a bibliography of “les 700 meilleurs a young woman in the audience who said that livres sur le graphisme”, most of which are in either she had been in one of Mr. Mortimer’s classes French or English. several years earlier and thanked him for what Check them out! he had taught her. ATX Users Group for Spanish speakers The afternoon was occupied by a show of wares E by nearly 20 small presses, and by demonstrations At the very end of December, a message from Jos´e of printing (on a very small press, one made origi- R. Portillo Fernandez announced the formation of a nally as a toy in a size suitable for printing business new TEX Users Group — Grupo de Usuarios de TEX cards), bookbinding, and typefounding by current Hispanoparlantes, GUTH. practitioners of those crafts. All the exhibitors were Some of the activities of GUTH will be the main- unfailingly helpful and the enthusiasm of the audi- tenance of a FAQ, publication of a Boletin, creation ence was obvious. I’ve come home with some fine and maintenance of hyphenation dictionaries, styles, new treasures and am already looking forward to and a Babel package, and an FTP site. A Web page next year. has already been installed: http://gordo.us.es/ For anyone interested in “books about books”, Actividades/GUTH. Oak Knoll now has a presence on the Web, at If you are interested in the activities of this new http://www.oakknoll.com, or you can write to group, but don’t have Web access, you can get in [email protected]. touch with Sources of information on printing and Jos´e Ra Portillo Fern´andez book arts on the Web E.T.S. Arquitectura Matem´atica Aplicada 1 In addition to the Oak Knoll Web page, which is Reina Mercedes, 2 also accessible through the Antiquarian Booksellers’ E-41012 Sevilla (Espa˜na) Association of America (ABAA) World Wide Web E-mail: [email protected] Server, at http://www.clark.net/pub/rmharris/ booknet1.html, several other Web sites devoted to There is also a newsgroup about Spanish-lan- printing and the book arts have come to my atten- guage TEX, es.eunet.spanish-tex, and an associ- tion. ated discussion list, [email protected]. William S. Peterson, at the University of Mary- land, College Park, has created a Web page “de- A brief comment on the merger of TUGboat T XandTUGNews voted to British and American fine printing of the and E nineteenth and twentieth centuries, with particu- As you have already read in Michel Goossens’ intro- lar emphasis on William Morris and the Kelmscott duction to this issue, TTN has ceased publication Press.” The address is http://www.wam.umd.edu/ after issue 4(3). TTN was created as an attempt to ~wsp/home.htm. Even a quick glance at the page attract members to TUG who didn’t feel ready for shows the hand of one who respects traditional book the heavy technical matter of TUGboat. Although design. Pointers to numerous sources are given, as there have been differences of opinion over whether well as essays on the stated area of coverage. This such a separate forum was necessary or successful, site is under construction, and will surely expand it is a fact that TTN has gathered much interesting into an even more interesting collection than it is and useful material, in a form that could easily be already. slipped into a purse or briefcase and carried onto an TUGboat, Volume 16 (1995), No. 4 357 airplane for easy reading, and I am sorry to see it I am looking forward to this continuing in the end. new format of publication, because I feel strongly What I don’t want to happen is for the ongoing that one of the best ways to persuade the less tech- in-print forum for this material to disappear too. nical TEX users to start reading TUGboat is to get Technical material submitted to TUGboat is them reading TTN. I certainly remember my own subjected to considerable scrutiny, refereed, and of- early days with TEX, struggling to learn the oper- ten edited heavily in an effort to present the facts in ating system, editor, print spooler, job control lan- a style suitable for a technical journal. This will not guage, and TEX all at the same time . . . I would cer- change. However, “lighter” material, what appears tainly have appreciated something to cut my teeth in Typographer’s Inn or ‘Hey — it works!’, for ex- on before I developed an appetite for raw Knuth or ample, will be accommodated without any attempt Lamport. User support people in companies and to make it hew to an inappropriate “higher stan- universities have mailed me to say ‘thank you’ for dard”. Peter Flynn and I will be working together providing this entr´ee to TEX, and I know some of to incorporate this material as a distinct and rec- them are now reading this. ognizable sub-publication that will retain its own The technical minutiæ of production are still personality. We have not yet had an opportunity to being worked out. We have considered (and dis- discuss the real details, but the current columnists carded, I am happy to say) suggestions like printing will be invited — and I hope that they will agree — the TTN components on coloured stock, or having to continue in new surroundings. them bound on a perforated stub like a booklet on The new, combined TUGboat/TTN will become bowel control inside the Reader’s Digest.Ihopethat reality with the next issue, 17(1). our contributors, both occasional and regular, will Let me take this opportunity to thank Peter continue to write, and I hope that the new proxim- Flynn, the present editor, and Christina Thiele, the ity of TTN to TUGboat will mean that we can be founding editor (there have been no others), for their even more encouraging to users in the future. hard work. Well done! ⋄ Peter Flynn Computer Center University College ⋄ Barbara Beeton Cork, Ireland American Mathematical Society Email: [email protected] P.O. Box 6248 Providence, RI 02940 USA Editor’s note: Email: [email protected] Peter expresses very well what I find to be the major failing of TUGboat —itdoesn’tof- ten contain much that can be comprehended im- mediately by someone who is not already relatively skilled in using T X. Despite frequent invitations T XandTUGNews E Some thoughts on E welcoming tutorial material and articles on modest Peter Flynn but useful techniques, and an annual harangue on the subject at the summer TUG meeting, almost In one way I was very fortunate to become the next nothing of this sort appears in my in basket. TTN editor of after Christina Thiele. Her lead broke Even more than articles sent to me, I would the new ground well, so my own spadework was very much like to find one or more volunteers who much reduced. In another way she is always a hard feel the same way, who are willing to listen in on act to follow, but I appreciate having such a high the various electronic TEX discussions, talk to other standard to work to. T Xies, follow up on items that they think will be TTN E As Barbara says, was aimed at those mem- of general interest, and solicit even very small con- bers or potential members who did not feel the need tributions for publication. Now that TTN, with its for the technical depth of TUGboat,orwhowanted “smaller is better” flavor, is joining TUGboat,there something comprehensible which they could show to will be an even greater scope for this material. non-TEXies. I think we have been very fortunate in If you are such a person, and would like to help having writers of the technical caliber displayed in find good material to fill our pages, please send a TTN to date who are nevertheless capable of ex- message to [email protected] or to Peter or me, and pressing and explaining their topics in a form that we will put you to work. doesn’t require pre-reading of chapters 20–26 of The TEXbook. –bb 358 TUGboat, Volume 16 (1995), No. 4

which can be used to simplify entering large or com- Software & Tools plex structures. Although FasTEX comes with a comprehensive, well thought out, and thoroughly tested list of shortcuts, personal shortcuts are easily customized. Introduction to FasTEX: A System of Keyboard Shortcuts for the Here are the kinds of shortcuts contained in the distributed FasT Xfiles. Fast Keying of TEX E Filip Machi, Jerrold E. Marsden and Wendy 1.2 Examples of Simple Expansions G. McKay These are complete expansions of some commonly used T X commands. 1 General Features of FasTEX E • FasTEX is a system of keyboard shortcuts for speed- Greek letters ing up the typing of TEX from the keyboard. FasTEX Togetthis Type is currently available for the Macintosh and UNIX. \alpha xa It replaces any keyboard shortcut by the equivalent \beta xb TEX command or group of commands in Plain TEX, ... A S A S A A M -TEX, M -LTEX, or LTEX. At the start of The general shortcut naming rule for producing the session, the typist specifies which flavor of TEXis Greek letters is “x” followed by the Latin equivalent to be used from the set of files, one for each flavor, of the Greek letter, to produce the TEX command containing the mapping information that expands for that Greek symbol. the keyboard shortcut into the corresponding TEX command(s). These files we shall refer to as the • Math environment “FasTEX shortcut files”. Togetthis Type While keying in the text of the document, the $ d typist enters keyboard shortcuts. Expansion of a $\alpha$ dxa shortcut is activated by typing one of several prede- $\beta$ dxb fined activation keys. After pressing the activation ... key the shortcut name is overwritten with the ex- The letter “d” at the start of a shortcut name pansion text. It is common to use the spacebar as generally means surround the expansion text with one of the activation keys. dollar signs. For example, FasT X replaces the keystroke se- E • Capital letters quence “xa” by \alpha, and the sequence “dxa” by $\alpha$ etc. (The motivation for “xa” is that ‘x’ Togetthis Type introduces any Greek letter and “a” is the Latin $A$ dca form of the Greek letter alpha. Similarly, the let- \Gamma xcg ter “d” preceding the “xa” in this example indicates ... that dollar signs be put around the expansion of “xa”.) FasTEX can deal with long or short abbrevi- In compound shortcut names like ‘dca’ and xcg’, ations with equal ease. capital letters are entered by typing a “c”, to in- Using FasTEX, the typist, whether the author dicate “Capital”, before the lowercase version of the or another keyboard entry person, is able to keep letter. his/her hands on the standard portion of the key- • Calligraphic letters board; and need only very rarely hit keys far from Togetthis Type the home row of the keyboard, such as the backslash or dollar sign key. \cal A cca \cal B ccb 1.1 What Types of Shortcuts Come with ... FasTEX? A “c” preceding the shortcut name for a capi- The distributed FasTEX shortcuts are all designed tal letter will produce the calligraphic form of that to keep the typist’s fingers near the home row keys. letter. Some FasTEX shortcuts just rename standard TEX • Superscripts commands, while others expand into mulitple lines Togetthis Type of T X incantations, referred to here as templates, E ^\alpha hxa TUGboat, Volume 16 (1995), No. 4 359

^\beta hxb 1.4 Complex Expansions—Templates ^4 h4 This category contains expansions for such things ... as matrices, commutative diagrams, equation envi- • Subscripts ronments, figures, tables, command definitions for the preamble section of a T X file, etc. Even larger Togetthis Type E templates are available to produce skeleton versions _\alpha lxa of complete documents, such as letters and articles. _\beta lxb _4 l4 Some examples are given in the display above. ... 1.5 The Importance of Producing Default Remember this as “h” for higher, “l” for lower. Files • Fractions When dealing with coauthors, or anytime one is Togetthis Type communicating documents, it is important to be \frac{1}{2} f12 able to deliver files that are as “plain vanilla” as pos- ... sible so that the recipient avoids typesetting prob- lems or troubles understanding the TEX source file • Other Symbols (German or Fraktur, Open or Black- for editing purposes. For example, custom defini- board Bold letters) tions (or macros) can seriously interfere with this Togetthis Type need and even make otherwise beautifully composed \frak G gmcg documents difficult for exchange between coauthors. {\Bbb R}^2 opcr2 FasTEX can help with these problems because all the ... shortcuts are local modifications to the keyboard in- put and do not remain in the actual text of the file • Word or Word-phrase abbreviations created. Togetthis Type 1.6 FasT X is Universal, Fast, and Department of Mathematics wcdm E Accurate Department of Physics wcdp Euler-Poincar\’e wep The FasTEX system is editor, application, and com- ... puter platform independent, and as we already in- A “w” at the start of a shortcut name means it dicated, can be used with plain TEX, AMS-TEX, is a word or word-phrase abbreviation. AMS-LATEX, or LATEX. The use of FasTEX will speed up the typical users typing input by a factor of about • Formatting features 3. Togetthis Type This speed up is achieved by not only faster \\ nl inputting, but through the fact that it avoids sim- \newline nlin ple typing errors (if FasTEX is activated, the docu- \hspace{0.2in} hsp ment will typeset). How many times has a document ... failed to typeset for you because your finger slipped 1.3 Examples of Generic (Universal) when typing a backslash alpha or similar TEXcom- Simple Expansions mand? This won’t happen with FasTEX! In addition, FasTEX is a convenient way of re- These expansion create partial TEX commands that membering, storing and learning TEX commands. can be extended or completed using other shortcuts FasTEX does not conflict with normal English use- or additional user input. In general, these shortcut age; however, versions of FasTEX suitable for for- names have a trailing “u”, meaning Universal (or eign languages require the replacement of certain Unfinished). shortcut names, depending on the language (some Togetthis Type shortcut names may be words in certain foreign lan- \frac{ fu guages, such as “la” which is the code for “lower \int intu (subscript) a”; however, this is also a word in French ^{ hu but not in English). _{ lu {\it hitu \sqrt{ squ ... 360 TUGboat, Volume 16 (1995), No. 4

To get this Type \begin{equation} beq \end{equation} eeq

\begin{eqnarray} lequ \lefteqn{ } \nonumber \\ && \end{eqnarray}

\title{Title of paper} teaut \author{ Author1 \thanks{Research partially supported by ...} \\Department of Mathematics \\University of ... \\ \and Author2 \thanks{Research partially supported by ...} \\Department of Physics \\State University of ... } \date{put in custom date; omit for today’s date} \maketitle

1.7 You can get FasTEX off the WEB Togetthis Type Description \begin{equation} As we shall explain in more detail below, FasTEX beq begin equation is currently available free on the World Wide Web \phi xph greek letter phi _\alpha lxa subscript (or lower) α for the Macintosh and UNIX environments. The (x) ox ‘of x’(x in parentheses) UNIX version differs slightly from the Mac version = eq equal but the basic operation and the names of the short- \int intu set up the integral cuts are the same for both systems. System inde- _0 l0 subscript0 pendence is another attractive feature when dealing ^x hx superscript x with coauthors who may be using different systems \frac{ fu prepare for a fraction but want to be able to efficiently share information f f f in numerator about FasTEX. (t) ‘of t’(t in parentheses) }{ fof forward fraction 1.8 Documentation (go to the denominator) \alpha xa greek letter alpha FasTEX comes with complete documentation that ^2 sq square it (or use “h2”) can be purchased from the authors. } eb end brace (of fraction) 2 A Sample Input \,dt spdt thin space dt \end{equation} eeq end equation Here is an example of the input sequence one would use for the following equation using LATEX. 3 The Macintosh Version of FasTEX x f(t) The Macintosh version of FasTEX uses the shareware φα(x)= 2 2 dt (1) Z0 α + x control panel TypeIt4Me, and the FasTEX shortcut The sequence “beq xph lxa ox eq intu l0 hx fu f files. You will need some version of system 7 to use ot fof xa sq eb spdt eeq” produces the text in LATEX. FasTEXontheMac. A brief description of these shortcuts will help the The programs and files may be found on the reader to understand how the shortcuts names are following WEB sites. a key to the functionality of the FasTEX system. As a typist becomes familiar with the pseudo-generic Program Available from system of naming shortcuts, typing TEXdocuments TypeIt4Me http://delta.com/star.org/starhome.html becomes easier and faster to do. FasTEX files http://avalon.caltech.edu/cds TUGboat, Volume 16 (1995), No. 4 361

3.1 Installation and AMS-LATEX; again, you choose the one you After collecting the software off the WEB or using are working with for the particular document. the FasTEX disk (Macintosh users can purchase a If for some reason you do not want TypeIt4Me to disk containing everything needed from TUG or the activate, you simply turn it off with the appropriate authors): hot key (which we have set at Shift-Option-O)—that 1. Copy the TypeIt4Me control panel to the con- is an “oh”. When off, the TypeIt4Me icon appears trol panels folder. dimmed. For example, if you are typing a passage 2. Copy the shortcut files to a convenient folder in French, you probably should turn off TypeIt4Me. or on the desktop available for TypeIt4Me to 3.3 A Note about $ open. The dollar sign is of course the most common key 3. Restart the machine. needed for typesetting mathematical expressions. Be- 4. Open your favorite editor (Textures, Alpha, etc.) cause of its freqent use, we have made the single and type a shortcut such as “xa-spacebar” to shortcut “d” for it. Surprisingly, this causes very test the system. few problems. Of course, as with all shortcuts, this 3.2 A little about TypeIt4Me does not cause a problem with a “d” occuring in a word. If you want to type a literal “d” in the middle TypeIt4Me is a shareware product of Ricardo Ettore of a formula and do not want it to come out with and if you really use it, you are expected to support a dollar sign, you can use the shortcut “sd” which the shareware idea and send him $30US. It is worth produces a literal “d”, or you can type a “d” and every penny! It is great for many purposes besides (at least on the Macintosh) hold the shift key down TEX: email addresses, commonly typed phrases, etc. when typing the spacebar, which keeps TypeIt4Me After restarting your machine, you will see the temporarily from activating. TypeIt4Me icon in the top left corner of your screen. Here are a few of the menu items you will find under 3.4 A Sample Creation of a Shortcut the icon: Let us suppose that you want to create a shortcut for 1. A help manual under About TypeIt4Me explains a combination that occurs frequently in your work. the workings of TypeIt4Me in detail. For example, assume it is a dxdy occurring in a 2. To add an entry of your own, type it some- double integral. First of all, decide on what spacing where (such as your TEX editor), copy it to the you want in the mathematics. For instance, let’s say clipboard, and call up the Add an entry item that the literal keystrokes you want are \;dx\,dy (for us, this is equivalent to the hot key “Shift- and, consistent with the FasTEX scheme of naming, Option-C”) and insert your shortcut name in you chose the shortcut name “spdxdy”. Then you the window. Now that shortcut is available! would create this shortcut as follows: 3. To edit entries, call up this menu item (for us, 1. Type \;dx\,dy in any text editor. it is the hot key “Shift-Option-E”). The dia- 2. Select and copy it to the clipboard. log box that results is self-explanitory; you can, as the name suggests, edit any existing entry, 3. Select “add an entry” from the TypeIt4Me menu change shortcut names, etc. (or hit “Shift-Option-C”). 4. The preferences choice allows you to set hot 4. Type in the shortcut name spdxdy. keys, select what keys trigger the shortcut be- That’s it! Now that shortcut is available. sides the spacebar, let you decide if you want the trigger included in the expansion, etc. 4TheUNIX version of FasTEX 5. Below this you find date and time items. There is a version of the Macintosh FasTEXengine 6. The final menu items tell you what file of short- (TypeIt4Me) that runs on most flavors of UNIX. cuts you want open. On the Macintosh there is Called scedit,theUNIX version is based on the Ex- a limitation of having one file open at a time pect program of Don Libes. Though not identical to and each file is limited to 2500 shortcuts (this the Mac version of TypeIt4Me, scedit attempts to is due to resource editor limitations and is nor- include all of the essential functionality of the Mac mally not a problem). You probably want to version, with a few consessions to differences in the have your addresses, email addresses, etc., in a operating systems. different file from the TEX shortcuts. FasTEX The shortcut files that make up FasTEX are nec- provides different files for LATEX, AMS-TEX, essarily different between the Mac and UNIX, but 362 TUGboat, Volume 16 (1995), No. 4

both are derived from a common base file, so porta- personal configuration file which overrides the public bility between Mac and UNIX introduces no incom- one—see Customization below. patibilities. Installation consists of editing the Makefile that The scedit program works by isolating an editor came with the FasTEX distribution to reflect the program of the user’s choice from the keyboard and installation directories you chose, then running the screen (window). All interaction between the user command ‘make install’. and the editor is intercepted by the scedit program, Within the Makefile, the variable INSTALLDIR which performs the shortcut expansions. should be edited to contain the name of a directory An advantage of this approach is that shortcut containing the sub-directories bin, lib/scedit and expansion is independent of the windowing environ- man. If any of these directories or sub-directories ment under which scedit runs, so for example, scedit does not exit, you should create them first and set will work over a telnet or modem connection. A dis- their permissions to allow the kind of access you advantage is that the editor program run by scedit think appropriate. Also, edit the variable EXPECT can not respond to mouse events. to contain the name of the directory containing the One benefit to using scedit over expansion fa- Expect executable. When you complete these two cilities that may be native to a particular editor pro- edits you may run ‘make install’. gram is that the same shortcut files will work across The following example shows a typical installa- different editor programs, regardless of what kind tion of UNIX FasTEX into a personal area. To in- of expansion facility the editor may have, if any. stall into a system area just change the names of the For example, both vi and emacs have native expan- destination directories (and be sure you have write sion (abbreviation) capabilities that are incompati- permission in the affected system directories). ble with each other; but scedit and FasT X works E mkdir /accts/fil/fastex with either editor by changing a few configuration chmod 755 /accts/fil/fastex parameters. mkdir /accts/fil/fastex/bin The scedit program has some additional capa- chmod 755 /accts/fil/fastex/bin bilities over the Mac TypeIt4Me program. One sig- mkdir /accts/fil/fastex/lib nificant feature is that scedit can have many short- chmod 755 /accts/fil/fastex/lib cut files active at once, unlike TypeIt4Me, which mkdir /accts/fil/fastex/lib/scedit allows only one active shortcut file. chmod 755 /accts/fil/fastex/lib/scedit 4.1 System Requirements mkdir /accts/fil/fastex/man chmod 755 /accts/fil/fastex/man The scedit program will run on most versions of mkdir /accts/fil/fastex/man/man1 UNIX. The main requirement is that the UNIX plat- chmod 755 /accts/fil/fastex/man/man1 form have a recent version (5.7.0 or later) of the Expect program installed. chmod 644 Makefile To run FasT XonUNIX you need: E vi Makefile ... Program Available from INSTALLDIR = /accts/fil/fastex Expect/Tcl ftp://ftp.cme.nist.gov/pub/expect EXPECT = /usr/local/bin/expect scedit http://avalon.caltech.edu/cds ... FasTEX files http://avalon.caltech.edu/cds make install 4.2 Installation At this point FasTEX has been installed and The UNIX version of FasTEX can be installed in your is ready to use. You may wish to create an alias personal file space or in a system area. Either ap- for the scedit executable so that you do not have to proach will work, and the choice depends mainly on type its full path name when you invoke it. Alterna- whether you want to maintain the FasTEX system tively, you can place a symbolic link to the scedit ex- yourself or leave that up your computer’s system ecutable into one of the bin directories listed in your administrator. shell’s PATH variable. With this latter approach, There are four components to the UNIX FasTEX you could make scedit available to the general user system which need to be installed in four distinct community by placing the symbolic link into a sys- areas. These are the scedit program, the FasTEX tem bin directory, such as /usr/local/bin if that shortcut files, the documentation and the public, de- is where locally added programs are kept on your fault configuration file. Each user may also have a system: TUGboat, Volume 16 (1995), No. 4 363

ln -s /accts/fil/fastex/bin/scedit Viewing the shortcuts in this way is helpful when usr/local/bin you forget the name of a shortcut and want to look Another approach is to place the symbolic link it up; you can then use the full search capabilities into your own personal bin directory if you wanted of your editor to help you locate shortcut definitions access to scedit to be semi-private. within a potentially large shortcut file. Any changes you make to a shortcut file when 4.3 Customization viewed in this way will be incorporated back into The file sceditrc, which was installed into the lib di- the active scedit session when you exit the view- rectory during the installation procedure, contains ing editor. So, for example, to add a new shortcut customization parameters for scedit. These param- while editing a document, use (~ef) to view/edit eters control several aspects of the way scedit oper- your ”first” shortcut file (the ”first” file is the one ates, and take effect for every user of scedit. that scedit reads before the main shortcut file), add An optional file, .sceditrc in each user’s home the new shortcut to the file using the editor, then directory, can also contain scedit parameter values. write and quit the editor. The new shortcut will These will override the values in sceditrc located in now be available to you as you resume editing your the lib directory. In this way each user can specify document. personal customization of scedit. A list of all the escape commands is available The parameters include: FASTEX_FILES which through the escape command (~h). To enter a ac- contains a list of shortcut file names to use by de- tual tilde character into the text of your document, fault; FASTEX_PATH which lists the directories to be double the tilde (~~). searched for shortcut files listed on the command The usual UNIX job control mechanism can also line; NAME_SUFFIX which contains the list of charac- be used to suspend and resume the entire scedit ses- ters that will serve to activate shortcut expansion; sion. REDRAW which holds the sequence of characters that ⋄ Filip Machi will make your editor redraw the screen; etc. The Center for Extreme Ultraviolet scedit documentation discusses these and the other Astrophysics parameters in more detail. University of California at Berkeley Standard (Bourne) shell syntax can be used in 5030 the customization files. This allows a single cus- Berkeley tomization file to include parameters for a variety of CA 94720 different editors. The default sceditrc file that comes USA with the scedit distribution shows how to represent Email: [email protected] separate customizations for vi and emacs, selected ⋄ Jerrold E. Marsden by examining the UNIX standard environment vari- Control and Dynamical Systems able EDITOR. California Institute of Technology 104-44 4.4 Some specific differences between Pasadena the scedit and TypeIt4Me versions of CA 91125 FasTEX USA Email: [email protected] Because the UNIX version of FasTEX does not as- sume a windowing environment, some of the user ⋄ Wendy G. McKay interaction with scedit is necessarily different than Control and Dynamical Systems the user interaction with TypeIt4Me. For example, California Institute of Technology scedit uses special escape keystrokes to perform file 104-44 management operations that would be done with Pasadena pull-down menus on the Mac. Most of these meta- CA 91125 USA level operations are introduced with the tilde char- Email: [email protected] acter (~). For example, the escape command ~e1.would start a new editing session on the main shortcuts file. The display and keyboard will now be attached to this new editor session. The old editor session is waiting undisturbed in the background. When you exit this new editor session, the old one is resumed.

TUGb oat Volume No

Now we shall describ e the macros of the le

russianb according to the classication just out

Philology

lined

Macros b orrowed from other styles

The Style russianb for Bab el

The le russianb was based up on the already exist

Problems and solutions

ing versions of some alreadyexisting styles german

Olga Lapko

A A

and fran for L T X germanb for L T X E

E ε

Irina Makhovaya

A

cais for L T X These les have the language

E ε

sp ecic macros which Russian typographic rules

Abstract

need

As is the case with other languages based on non

from germanb

Latin alphab ets when preparing a style one must

for French and German double

• macros

takeinto account the typographic rules traditionally

quotes Note French double quotes are

used in the given language This pap describ es

created by METAFONT in a Cyrillic font

the package russianb which includes such macros

and have their own ligature ie

as captionsrussian to address the four types of

A

standard Russian L T X do cuments daterussian

for hyphenation in comp ound

• shortcuts

E

Asbuk and asbuk for Russian alphab et coun

words and words with nonletter charac

ters and mathrussian for Russian math op erators

ters Russian words are not as long as Ger

Some problems concerning the usage of this style

man ones but a few long ones do exist

eg usage of dierent enco dings are describ ed

And of course as in germanb the sign

was made active

Introduction

righthyphenmin for

• lefthyphenmin

As is generally known T X is based on the Latin

E

Russian as for German the values

alphab et and while in theory it is p ossible to use

are used in the hyphenation algorithms

T X for other alphab ets Greek Arabic Cyrillic

E

from francais

and so on in practice there are a lot of problems

for the punctionation marks

• macros

when we try to use T X with other alphab ets The

E

where the amount of white space is

Bab el package is the rst successful attempt to

slightly increased in front of these signs

solve the problems of multilingual T X

E

T X lo oks for a space b etween a word and

E

In this pap er we discuss the concrete diculties

this sign then if there is a space T X

E

we encountered while creating the russianb le for

unskips it and puts in an extra little

Bab el The whole set of p eculiarities of typesetting

space of

do cuments in Russian can b e sub divided into three

is switched on

• frenchspacing

classes

additional characters as in fran

• some

features b orrowed from western Europ ean ty

cais are describ ed in our style eg the

p ography esp ecially German and French

number sign

features p eculiar to Russian typography only

and which can be easily describ ed in the le

Macros created in the Russian style and

russianb

which p ose no problems in usage

features p eculiar to Russian typography and

The macros describ ed b elow were b orrowed from

which p ose some diculties in describing and

various releases of the russiansty le for use with

using them

A

L T X

E

We also see two very imp ortant general prob

macros for math op erators whose names dier

lems the variety of enco ding schemes which cur

from English ones eg in Russian manuscripts

rently exist and the need for p ortability of the

we write tg and ctg instead of tan and cotan

present package le to dierent platforms a problem

additional macros for printing counter values

whichwe could solve only partially

using upp ercase and lowercase Cyrillic letters

Asbuk and asbuk as analogs to Alph and

russianb is an analog of the lename germanb the name

is chosen to avoid confusion with Russianlanguage Bab el

alph

A

styles currently used with L T X Currently russianb

E

In addition we created a shorthand macro for the

in b etaversion comes as an extension to the CyrTUGemTeX

Russian emdash in printed do cuments this distribution

TUGb oat Volume No

sign is somewhat shorter and is surrounded by formulas suchas one must

• in x ... y

write x unbrk ldots y to pre spaces ab out of the current font size ie a pt

vent the rst break or the breaking sign space in a pt font this emdash can never b e sep

must b e redened to allow lo okahead arated from the word preceding it Note the macro

for an explicit hyphen sign was of course rewrit

case the signs and are redened

• in

ten b ecause of this new macro for the Russian em

T X macros suchas cannot use

we A S

E See examples in gs and

dash M

SbendSb ie bgroupegroup

Macros that need explanations or are

in other words it is imp ossible to use

dicult to use

something like leq and

In this section we discuss macros for breaking inline

It should be clear from the ab ove that we must

formulas Russian typographic tradition requires us

rewrite all the denitions of binary and relational

to rep eat the last sign of a broken formula on the

op erators as well as of certain signs which cannot

next line

b e followed by a line break

A package sp ecially written by MI Grinchuk

At present this style exists as an addon and

to solve this problem contains macros to rep eat

can b e turned on or o by the user An example

signs when a formula is broken The package oers

of how to use this package is shown in g

two options

hand breaking in this case wehave the values

Enco ding and font problems

binoppenalty relpenalty to

The russianb le was created for the nonLatin

break the formula one must use the commands

user who uses the Cyrillic alphab et One of the

brokenbin and brokenrel

basic problems is there are a lot of dierent enco d

automatic breaking values for the same macros

ings in eachof which Cyrillic letters have dierent

as ab ove are made nonequal relpenalty

Because of this our le has some particular > co des

Some signs are

> binoppenalty >

features when compared with other les developed

equal to mathcode and divided into two

for the Bab el system

groups a binary and relational signs

To make this style indep endent of enco ding we

allow breaks after them and b the signs

have to use macro names instead of Cyrillic letters

which prohibit breaks On top of

themselves Russian letters and signs in this style

that almost all mathematical signs have b een

are used in macros for the date daterussian

rewritten using the new commands brkbin

and the text strings for the four standard styles of

A and brkrel to allow or prevent breaking eg

L T Xcaptionsrussian and also in commands

E

for printing counter values by using Cyrillic upp er

defwedge brkbinmathcharE

and lowercase letters Asbuk and asbuk

defgg brkrelmathcharD

The macro names for Cyrillic letters and some

defexists mathcharunbrk

signs are introduced with the help of a subsidiary

defbigl mathopenbigunbrk

le eg lhrcodsty which corresp onds to a given

defbigm mathrel bigunbrk

enco ding scheme This le also switches the Cyrillic

deflangle delimiterA unbrk

font family

In particular the command not must b e rede

The co ding schemes used in Russia usually con

ned as follows

sist of a table where in the upp er part one nds

the Cyrillic letters using one of a set of layouts

defnot brkrelmathchar

while the lower part contains the Latin letters in the

and so on In this case T X breaks formu

E

usual ASCI I layout For successful usage of Rus

las by itself but sometimes we have to handle

sian hyphenation patterns Cyrillic letters are set to

breaking using the sp ecial commands unbrk or

catcodeletter in russianb Cyrillic letters are

allowbrk

restored to their normal category again in case their

This package has some drawbacks although

category had b een changed There is already a long

of a rather exotic nature

tradition of using Russian letters in macro names

must write x brkbin y

• one

instead of x y

It is a b eta release

op erators like sin must b e written

• math

Currently this switching is only implemented for

A

with arguments in curly braces T X

L ε E

TUGb oat Volume No

Russian letters are letters to o arent they More co ding schemes and p ortability across dierent com

over there are packages which use Russian words as puter environments

commands in some sp ecial cases

Acknowledgements

At this p ointwe should also mention that to re

sp ect Russian typographic tradition the mathcode In conclusion we would like to mention that a lot

for Cyrillic letters is set to ie class for of our colleagues have made valuable contributions

variable and family fam rm to the development of the le russianb Mikhail

Grinchuk Eugenii Ivanov Sergey Lvovskii Andrey

What needs to b e done

Slepukhin Yurii Tyumentsev and others We are

The presentstyle is meant to b e used when working very much obliged to all of them

with bit Russian do cuments where one some

References

times has fragments in the Latin alphab et or to

enter do cuments using transliteration Braams J Bab el a multilingual styleoption

A

For entering bit do cuments the subsidiary le system for use with L T Xs standard do cument

E

russianb in the current version we input cyr styles TUGb oat pages

cod simply declares a new font family and enco d

Gilenson P Spravochnik tekhnicheskogo redak

ing at the b eginning of the do cument which then

tora Moscow Kniga

loads the RussianEnglish hyphenation only plus

Go ossens M F Mittelbach and A Samarin

the macros for each language this approach re

A

The L T X Companion Reading Mass

E

quires less memory see g

AddisonWesley

For RussianLatin pap ers input with translit

Haralambous Y and J Plaice First applica

eration where for each Russian letter one uses a

tion of Greek Arabic Khmer Poetica ISO

Latin equivalent we must declare that sometimes

UNICODE etc TUGb oat pages

Latin letters represent Cyrillic ones so we haveto

toggle not only hyphenation patterns and macros

Kho dulev A and I Makhovaya On T X ex

but ab ove all fonts and enco dings to o see g

E

p erience in Mir Publishers Pro ceedings of the

Conclusion

Seventh Europ ean T X Conference Sept

E

Prague Czechoslovakia pages

The main diculty with the russianb style le

is that we have to use macro names for Cyril

Lapko O MAKEFONT as part of CyrTUG

lic letters For now these letters are describ ed

emT X package Pro ceedings of the Eighth

E

as defCYRaa In this case the commands

Europ ean T X Conference Sept

E

uppercase and lowercase dont work correctly

nsk Poland pages

Gda ´

so one has to use additional denitions for these

commands

⋄ Olga Lapko

Ab ovewehave describ ed a few solutions to the

Irina Makhovaya

problem of using the russianb le with dierent

Mir Publishers

Pervyi Rizhskii Pereulok platforms and environments However b ecause we

Moscow Russia

have had almost no o ccasion to actually work on

Email olgamirmsksu

dierent environments we cannot really say very

irinamirmsksu

much ab out p ossible remaining diculties

The presentwork is only a rst attempt to cre

russianb Bab el

ate a Russianlanguage style le extension for the

Bab el package We hop e to provoke discussions and

further work in this direction by our colleagues We

also lo ok forward to the package which should

be able to solve many of the problems describ ed

in this article esp ecially those connected with en

In a Russian do cument where transliteration is used it

often happ ens that many letters are made active therefore

the assignment catcodeletter is only made inside a group

when loading the hyphenation tables

A

Currently such a le only exists for L T X russianb

ε E

TUGb oat Volume No

captionrussian

daterussian Asbuk

asbuk

ÉÚ germanb

mathrussian

úÁÍÅÞÁÎÉÅ

METAFONT

÷×ÅÄÅÎÉÅ

• shorthands

T X

E

germanb

T X

lefthyphenminrighthyphenmin

E •

Bab el

russianb

ÉÚ francais

Bab el

T X

E

T X unskips

E

em

russianb

frenchspacing

francais

íÁËÒÏÓÙ, ÓÏÚÄÁÎÎÙÅ ÓÐÅÃÉÁÌØÎÏ ÄÌÑ

ÒÕÓÓËÏÇÏ ÓÔÉÌÑ É ÎÅ ×ÙÚÙ×ÁÀÝÉÅ ÐÒÏÂÌÅÍ

ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ

russiansty

russianb

A

L T X

E

íÁËÒÏÓÙ, ÐÏÚÁÉÍÓÔ×Ï×ÁÎÎÙÅ ÉÚ ÄÒÕÇÉÈ

ÓÔÉÌÅÊ

russianb

tan

A

german L T X

E

cotan tg ctg

A A

francais L T X germanb L T X E

E ε ε

Asbuk asbuk

Bab el

Alph alph

russianb germanb

shorthand

A

L T X russianb

E

b eta

CyrTUGemT X E

TUGb oat Volume No

sin

pt pt

• x ... y

úÁÍÅÞÁÎÉÅ

x unbrk ldots y

íÁËÒÏÓÙ, ÉÓÐÏÌØÚÏ×ÁÎÉÅ ËÏÔÏÒÙÈ

T X SbendSb

A S

×ÙÚÙ×ÁÅÔ ×ÏÐÒÏÓÙ ÉÌÉ ÚÁÔÒÕÄÎÅÎÉÑ

M E

bgroupegroup

leq

T X

E

ÒÁÚÒÙ× ×ÒÕÞÎÕÀ

binoppenalty relpenalty

brokenbin brokenrel

ðÒÏÂÌÅÍÙ ÓÈÅÍ ËÏÄÉÒÏ×ËÉ É ÛÒÉÆÔÏ×

Á×ÔÏÍÁÔÉÞÅÓËÉÊ ÒÁÚÒÙ×

russianb

relpenalty

> binoppenalty >

mathcode

Bab el

brkbin brkrel

defwedge brkbinmathcharE

defgg brkrelmathcharD

defexists mathcharunbrk

daterussian

defbigl mathopenbigunbrk

A

defbigm mathrel bigunbrk

L T X captionsrussian

E

deflangle delimiterA unbrk

Asbuk asbuk

not

defnot brkrelmathchar

cyrcodsty

T X

E

unbrk allowbrk

b eta

x brkbin y

A

x y L T X

ε E

TUGb oat Volume No

russianb

catcodeletter russianb

Bab el

mathcode

âÌÁÇÏÄÁÒÎÏÓÔÉ

fam rm

russianb

þÔÏ ÓÌÅÄÕÅÔ ÓÄÅÌÁÔØ

óÐÉÓÏË ÌÉÔÅÒÁÔÕÒÙ

J Braams Bab el a multilingual styleoption

A

system for use with L T Xs standard do cument

E

styles TUGBoat Vol No russianb

cyrcod

M Go ossens F Mittelbach and A Samarin

A

The L T X Companion AddisonWesley

E

Reading MA

Y Haralambous J Plaice First application

of Greek Arabic Khmer Poetica ISO

Unico de etc TUGBoat Vol

No

A Kho dulev and I Makhovaya On T X

E

exp erience in Mir Publishers Pro ceedings of the

th EuroT X Conference Prague pp

E

O Lapko MAKEFONT as part of CyrTUG

emT X package Pro ceedings of the eight

E

nsk pp Europ ean T X Conference Gda

E ´

russianb

defCYRaa

uppercase lowercase

Email olgamirmsksu

irinamirmsksu

T X catcodeletter

E

A

L T X

ε E

TUGb oat Volume No

No

cos

sin α α

ctg

tg α , α sin

cos α α

cos

sin α α

tg ctg

α , α sin

cos α α

üÔÏ ÍÁÌÅÎØËÉÊ ÐÒÉÍÅÒ ÒÕÂÌÅÎÏÇÏ ÔÅËÓÔÁ.

deftheenumiiasbukenumii

beginenumerate

item

item

beginenumerate

item

verb verb

item verb verb

endenumerate

item

item No verbNo

endenumerate

beginequation

tgalphafracsinalphacosalphaquad

quadctgalphafraccosalphasinalpha

endequation

boldmathbeginequation

tgalphafracsinalphacosalphaquad

quadctgalphafraccosalphasinalpha

endequation

textsf

Figure The LCY enco ding demo

LCY

TUGb oat Volume No

Danna raspeqatka demonstriruet nekotorye primery nabora na russkom zyke s ispolzovaniem

transliteracii v qastnosti nabora kavyqek znaka tire i matematiqeskih formul V russkih iz

danih ispolzuts

kavyqki analogiqno nemeckim kavyqkam lapki“

kavyqki eloqki kotorye mono nabrat dvum sposobami

bolxe ili menxe vot kak to vygldit loqki s pomow znakov a “ “ <, >

” ”

i s ispolzovaniem aktivno kavyqki

b "< ">

znak tire v russko poligrafii neskolko koroqe i vsegda otbivaets nebolximi probelami

okolo kegl sm p

opredelen znak nomera kotory nabiraets kak

\No

A ewe mono pokazat sleduwie formuly s izmenennymi matematiqeskimi operatorami cos

sin α α

tg ili ctg

α , α sin

cos α α

sleduwie formuly vydeleny poluirnym xriftom cos

sin α α

tg ili ctg

α , α sin

cos α α

to malenki primer rublenogo teksta

\def\theenumii{\asbuk{enumii}}

Dannaya raspechatka demonstriruet nekotorye primery nabora na russkom yazyke s ispolp1zovaniem transliteratsii, v chastnosti, nabora kavychek, znaka tire i matematicheskikh formul. V russkikh izdaniyakh ispolp1zuyut{}sya : \begin{enumerate} \item kavychki "‘lapki"’, analogichno nemeckim kavychkam ; \item kavychki ", kotorye mozhno nabratp1 dvumya sposobami ; \begin{enumerate} \item s pomoshchp1yu znakov "‘bolp1she"’ ili "‘menp1she"’ :{} {\selectlanguage{english}\verb|<|, \verb|>|} "--- vot kak e1to vyglyadit: ; \item s ispolp1zovaniem aktivnoi0 kavychki :{} {\selectlanguage{english}\verb|"<|} i {\selectlanguage{english}\verb|">|} ; \end{enumerate} \item znak tire v russkoi0 poligrafii neskolp1ko koroche i vsegda otbivaet\/sya nebolp1shimi probelami okolo 0,2 keglya, sm. p. 4 ; \item opredelen znak nomera"---\No, kotoryi0 nabiraet{}sya kak {\selectlanguage{english}% \verb|\No|}. \end{enumerate} A eshche mozhno pokazatp1 sleduyushchie formuly s izmenennymi matematicheskimi operatorami \begin{equation} \tg\alpha=\frac{\sin\alpha}{\cos\alpha},\quad \rusmath{ili}\quad\ctg\alpha=\frac{\cos\alpha}{\sin\alpha} \end{equation} sleduyushchie formuly vydeleny poluzhirnym shriftom :{} {\boldmath\begin{equation} \tg\alpha=\frac{\sin\alpha}{\cos\alpha},\quad \rusmath{ili}\quad \ctg\alpha=\frac{\cos\alpha}{\sin\alpha} \end{equation}} \textsf{E1to malenp1kii0 primer rublenogo teksta.}

Figure 2:TheLWN encoding demo.

Demonstraci Ris LWN.

TUGb oat Volume No

X Y X Y

∗ ∗

T X T Y

 K K

b b b

D D D Y Y X X Y, Y

χ X →

→ Y

X Y

b ∼ b

D D

X X → Y Y M

X N Y

χ

∗ ∗

TM X ∩ X TN Y ∩ Y

χ

S X × Y

 K AS K AN ≃

b

D

≃ AM d X p , p ∈ X d

deftildetoleavevmodevcenterbaselineskipptlineskipex

ialigncrcrhidewidthsimhidewidthcrcrtocrcr

emulation of AmSTeX symbols

defvarOmegamathit

defvarPhimathitPhi

defvarPsimathit

noindent X Y varOmegaX varOmegaY

TX TY

varPhiK

varPsiK mathbsf DbYvarOmegaY mathbsf DbXvarOmegaX

mathbsf DbYvarOmegaY

chivarOmegaXbrkreltildeto varOmegaY

varOmegaX varOmegaY

mathbsf DbXvarOmegaXbrkreltildetomathbsf DbYvarOmegaY

M X N Y

chi TMXcapvarOmegaX

TNYcap varOmegaY chi

S Xtimes Y

K AS varPhiKANsimeq AMd

mathbsf DbXppinvarOmegaX d

Figure The math breaks demo

TUGboat, Volume 16 (1995), No. 4 373

A Package for Church Slavonic Typesetting current font version consists of 148 symbols includ- ing some old Slavonic letters which are no longer in Andrey Slepukhin use. Introduction The diacritic problem The multilingual ability of TEX is one of its most im- In developing SlavTEX, the main problem was that portant properties. Due to T X it has become possi- E every word in a Church Slavonic text has at least ble to produce high-quality books in many different one diacritic. None of the computer typesetting sys- languages (sometimes with very exotic grammatical tems known to the author (except TEX, of course), rules). During the past 16 years, T X has became E contains any convenient tools for typesetting a text a real polyglot and it seems that it doesn’t want to with accents. TEXusesthe\accent macro for this stop evolving. In this paper one more, maybe rather purpose, but this macro seems to be designed for exotic, example of practical usage of T Xiscon- E rather infrequent usage, because it gives the follow- sidered, along with many ideas and solutions which ing undesirable effects: result from five years of experience with TEX. • the kern between accented and previous sym- General solutions bols disappears; What does a language-specific package have to look • TEX doesn’t allow any hyphens in the remain- like from the point of view of a computer typeset- der of the word after an accented symbol and ting system? It must include at least the following can make invalid hyphens in the initial part of components: the word. • quality fonts; These effects arise because TEX uses explicit kerning • tools for simplifying the text formatting; while expanding the \accent macro. So, it seems • hyphenation table; that the best solution for the diacritic problem (re- • punctuation or some other poligraphic rule de- alized for many European languages, for example) scription. is a method whereby a letter together with an ac- These requirements form the basis of SlavTEX devel- cent is represented by a single character in the font. opment. The first two items have been realized sat- However, in the case of Church Slavonic, this solu- isfactorily. As to the realization of the third one— tion cannot be applied in this form because there it depends on the volume of the dictionary, which are too many possible ‘letter–accent’ pairs, and the is not sufficiently complete yet. The fourth item is limit of 256 symbols would soon be exhausted. absent because Church Slavonic has no precise rules It would be wonderful if the following idea for punctuation and other similar objects. worked: the various ‘letter-accent’ combinations would be placed in a font at identical positions mod- Fonts ulo 256 (i.e., 256 positions apart), so that their met- Designing quality fonts is, in general, a very hard rics would coincide. Unfortunately, it is not possible task; moreover, the author’s knowledge on the sub- to force TEX to put a symbol with character code ject at the beginning of this work was minimal. So, greater than 255 into the dvi file. Such a restriction the designing of the base version of fonts took more is quite unexpected since the dvi file format sup- than half a year, and various improvements are still ports the use of symbols with character codes up to under development. The work has been complicat- 232 − 1. One other well-known method to deal with ed by the fact that a large number of symbols (there the accents is their realization as strongly shifted left are already 44 purely alphabetic characters) in the characters of zero width. Such an option is unsat- Church Slavonic alphabet must be included. Also isfactory too because it does not solve the kerning the glyphs for symbols have very few shared ele- problem while significantly complicating construc- ments. The typeface, which was in wide use at the tion of the hyphenation table. beginning of the twentieth century, was taken as a To solve the accent problem we need to under- model for the fonts created here. The following tech- stand where diacritics are placed in Church Slavon- nology was applied to develop the fonts: the sym- ic. Some can be placed only over the first letter bols were magnified and separate elements extract- in the word, and some can be placed only over the ed, then base and control points of outline curves last letter. These two cases are realized by the spe-

were placed manually and the METAFONT macros cial macros \fcaccent and \lcaccent. The sec- were designed; the symbols obtained were finally im- ond macro can be written in a very simple way

proved using the METAFONT graphic output. The because it only needs to locate the accent with 374 TUGboat, Volume 16 (1995), No. 4 the help of kerns. The macro \fcaccent has a Numbering \nobreak\hskip0pt construction in addition, which In Church Slavonic, literal numeration is accepted, enables the hyphenation of the word after the dia- which can be described by the following algorithm: critic. As for the accents in the middle of a word, some Given an integer n ≥ 0, let S(n)beitsrep- of them are realized together with the correspond- resentation in Church Slavonic. Consider the ing letters, and other represent symbols, in general following table: used to abbreviate certain words (in Church Slavon- n S(n) n S(n) n S(n)

ic they are called titlo). The words containing these

1 10 100

symbols cannot, as a rule, be hyphenated, but it was

2 20 200

possible to write a special macro, placing an accent

3 30 300

and preserving the kerns both before and after the

4 40 400

symbol. It is a quite sophisticated macro which uses

5 50 500 such T X commands as \futurelet.

E

x s 6 60 600

To make inputting text easier, the symbols ’, ",

o z 7 70 700

‘, ~, _, | and < are made active and are expanded to

w 8 80 800

the corresponding macros. The selection of Church

9 f 90 900 Slavonic mode is realized by the \beginslav macro, The representation of zero is absent in Church and the return to normal mode is realized by the Slavonic, but let it be empty for convenience. \endslav macro. If 10 ≤ n<20, then S(n)=S(n mod 10)S(10). Separating colors If 20 ≤ n<100, then S(n)=S(n − (n mod 10))S(n mod 10). If 100 ≤ n<1000, then S(n)= Another problem that had to be solved during pack- S(n − (n mod 100))S(n mod 100). If 1000 ≤ n< age development was that of color separation. Al-

10000, then S(n)=S(n − (n mod 1000))S(n mod most all Church Slavonic texts are two-colored. Un- 1000). fortunately, using colors via PostScript was imprac- There are disagreements about the represen- tical, because a PostScript-printer is a rarity in Rus- tation of numbers greater than 9999. In the sia. So, to make color separations and to obtain SlavTEX package, we use a modern option, where separate slides for each color, the SliTEXideaofus- the rule S(n)=S(n − (n mod 1000))S(n mod ing invisible fonts was applied. However, kerning 1000) is true for all numbers ≥ 1000. The problems make the use of SliT X impossible. In- E macro \slnum() automatically generates deed, having a word with a first letter emphasized the number representation in Church Slavonic. For by the use of another color (in Church Slavonic texts

example, \slnum(1995) gives . One has to be this occurs very often), SliT X loses the required E careful since this macro is valid only inside Church kern between the first letter and the remainder of Slavonic mode. the word when switching to the other font. So, for such cases we need special macros. To implement TEX without encoding the color separation a special font selection scheme During the development of SlavT X, an idea ap- was designed, somewhat similar to NFSS. After E peared which solves the compatibility problem when including the font description file and appropriate transferring any package to another platform. This macros, the user can declare the use of any color problem is especially acute in Russia because Rus- via the macro \newcolor(). This macro sian letter encodings on different platforms do not gives rise to the macros \g{} coincide. A version of T X Cyrillization made by and \. The first of these switches the col- E CyrTUG is specific for PC-compatible computers or, preserving kerning, and the second switches it under MS-DOS. This results in a justified unhap- without preserving any implicit kern (T X inter- E piness amongst the many unix users in big research prets this macro in the simplest way, so its usage institutes which need T X most of all. makes sense). Now, typing \showcolor() E The procedure to easily transfer any T Xpack- or \hidecolor() in the input file, we can E age to different platforms is given below: make any selection by a specified color visible or in- visible in the output. The text before the first usage • The encoding table containing a map between of \g{} or \ will always character codes and their symbolic names (for be visible. example, like PostScript names) must be de- fined for each specific platform and font family. TUGboat, Volume 16 (1995), No. 4 375

• A utility (which can even be written in TEX!) It would be nice if others shared the author’s must be created to generate two files from the interest in the problem of Church Slavonic and an- original encoding table — a TEX encoding table cient texts. Maybe at some future date, a multilin-

and a METAFONT encoding table. gual edition of the Bible (in Church Slavonic, Greek,

• AsetofMETAFONT macros must be added to Latin, Hebrew ... what else?) produced with TEX redefine the beginchar macro; it must allow could come into existence. the use of symbolic names instead of charac- ter codes by declaring usenames:=1 or whatev- Examples er like this. A simple example of a Church Slavonic text:

ᤨ ¨á¥ å áàâ ¥ á ­¥ ¡ ¦ ©

A hyphenation table must be written, using £|

¨«ã© ¬ ï £à íè­ £® symbolic names; when generating the base file, ¯®¬’ ‘ ’ TEX should first read the encoding, then it and the result of its compilation:

should convert the original hyphenation table

i into a temporary file using the current encod- ing and then it should read the file obtained. An example of color separation: a sequence of • \catcode, \lccode and \uccode should be de- macros fined using symbolic names. \beginslav\family(slav)\size(12)% A variant of this idea is implemented in the latest \black%

version of the package presented and is now being \def\pray{%

á ¤¨ ¨á¥ å áàâ ¥ á ­¥

tested. It is hoped that new Cyrillization versions \redg S| { }

¦ © ¯®¬ ¨«ã© ¬ ï £à íè­ £® from CyrTUG will be written in the form described ¡_ i , ’ ‘ ’ above. It would facilitate the work of the many TEX }% users in Russia and of people who need to typeset \black% Russian (or other Cyrillic) texts. \hidecolor(black)% \showcolor(red)%

Type1fromMETAFONT? \par\noindent\pray One more idea, implemented as part of the SlavTEX \hidecolor(red)% project, was inspired by an article by Jackowski \showcolor(black)% and Ry´cko [2]. Moreover, the arrival of a Post- \par\noindent\pray Script-printer on the author’s desk helped stimu- \showcolor(red)% \par\noindent\pray late its realization. There exists a set of METAFONT macros with which one can obtain a text represen- \endslav

tation of Type 1 fonts from METAFONT sources and gives the result

from that, a downloadable font by L. Hetherington’s

i

Type 1 utilities. This macro package was initially

i

designed to solve the specific problem of represen-

i tating Church Slavonic in Type 1 format, but the conversion of Computer Modern fonts (and others) This example shows that accents can be placed over is also possible. This work deserves separate treat- a group of characters, and not only over a single ment and is not described in this paper. character. Problems and plans References The most important problem today is adapting [1] Alipiy, Ieromonakh (Gamanovich). Grammatika SlavTEXtoLATEX2ε, or rather, its realization as tserkovno-slavjanskogo jazyka. Moscow: Palom- aLATEX2ε package. The author also plans to de- nik, 1991. velop a package for typesetting music in non-linear [2] Jackowski, Boguslaw, and Marek Ry´cko. notation (so-called krjuki), in use before the eigh- “Labyrinth of METAFONT paths in outline”, teenth century. The following problems associated Proceedings of the Eighth European TEXCon- with Church Slavonic typesetting also should be not- ference (Sept. 26–30, 1994, Gda´nsk, Poland), ed: designing a font of initial caps and a special font 18–32. for headings. In this font different combinations of [3] Donald E. Knuth. The TEXbook. Addison Wes- letters must have specific glyphs (this task seems to ley, Reading, MA, 1990.

be rather gigantic, because such a font would have [4] Donald E. Knuth. The METAFONTbook. Addison a monstrous number of symbols and ligatures). Wesley, Reading, MA, 1990.

376 TUGboat, Volume 16 (1995), No. 4

ä ªâ®à®¢ ãá«®¦­¨¢è¨å à ¡®âã á«¥¤ã¥â

[5] Slovar’ russkogo jazyka XI–XVII vv.Moscow: [।¨ , ,

®â¬¥â¨âì â® æ¥àª®¢­® á« ¢ï­áª¨© «ä ¢¨â

Nauka, 1975. , çâ® -

¡®«ì讥 ª®«¨ç¥á⢮ ᨬ¢®«®¢ ⮫ì ᮤ¥à¦¨â ( -

¡ãª¢ ¨ ­ ç¥àâ ­¨ï íâ¨å ᨬ¢®«®¢ ¨¬¥

Andrey Slepukhin ª® —44), -

¬ «® ¯®å®¦¨å í«¥¬¥­â®¢ Rª ç¥á⢥ ®¡à §æ Lavra, Sergiev Posad, Russia îâ .

Email: [email protected]

¢§ïâ èà¨äâ ¯®«ã稢訩 è¨à®ª®¥ à á¯à®

¡ë« , -

¢ ­ ç «¥ ¢¥ª \¥å­®«®£¨ï à §

áâà ­¥­¨¥ XX . -

à ¡®âª¨ èà¨äâ ¡ë« á«¥¤ãîé ï ᨬ¢®«ë 㢥

¤«ï ­ ¡®à æ¥àª®¢­® á« ¢ï­áª¨å

 ª¥â - : -

«¨ç¨¢ «¨áì à §¡¨¢ «¨áì ­ ®â¤¥«ì­ë¥ í«¥¬¥­

⥪á⮢ , -

§ ⥬ ¢àãç­ãî ¯à¨¡«¨§¨â¥«ì­® ¯à®áâ ¢«ï

âë, -

P­¤à¥© [«¥¯ã娭

«¨áì ®¯®à­ë¥ â®çª¨ ¨ íâ¨ í«¥¬¥­âë ®¯¨áë¢ «¨áì

á ¯®¬®éìî ¬ ªà®ª®¬ ­¤ METAFONT ¯®«ã祭

R¢¥¤¥­¨¥ ’ ; -

­ë¥ ᨬ¢®«ë ¤ «¥¥ ¤®¢®¤¨«¨áì á ¨á¯®«ì§®¢ ­¨¥¬

¡¥§ãá«®¢ ¨§ á ¬ëå ¢ ¦­ëå ᢮©áâ¢

Ž¤­¨¬ TEX’ -

¢ë¢®¤ METAFONT R ­ áâ®ï騩

£à ä¨ç¥áª®£® ’ .

ï¥âáï ¥£® ¬­®£®ï§ëç­®áâì Q« £®¤ àï

­® .

¬®¬¥­â èà¨äâ ᮤ¥à¦¨â ¢ª«îç ï

148 ᨬ¢®« ,

«® ¢®§¬®¦­ë¬ ¨§¤ ­¨¥ ª­¨£ ­ á ¬ëå

TeX’ ãáâ

¡ãª¢ë áâ à® á« ¢ï­áª®£® ï§ëª ¢ë

­¥ª®â®àë¥ - , -

ï§ëª å ¯®à®© á ¢¥áì¬ ¯à¨å®â«¨¢ë¬¨

à §­ëå (

¨§ 㯮âॡ«¥­¨ï

襤訥 .

á ¢ëá®ç ©è¨¬ ¯® ¯à ¢¨« ¬¨

£à ¬¬ â¨ç¥áª¨¬¨ ) -

ª ç¥á⢮¬ W á «¨è­¨¬ «¥â

«¨£à ä¨ç¥áª¨¬ . 10

à®¡«¥¬ ¤¨ ªà¨â¨ç¥áª¨å §­ ª®¢

áâ « ­ áâ®ï騬 ¯®«¨ áãé¥á⢮¢ ­¨ï

᢮¥£® TEX -

Žá­®¢­ ï ¯à®¡«¥¬ ¯à¨ à §à ¡®â

, ¢®§­¨ªè ï -

¨ ¯®å®¦¥ ­¥ ᮡ¨à ¥âáï ®áâ ­ ¢«¨¢ âì

£«®â®¬ , , -

¯ ª¥â [«¢~ ¡ë« á¢ï§ ­ á ⥬ çâ® ¢

ª¥ TEX, , ­ ¤®á⨣­ã⮬ R í⮩ áâ âì¥ à áᬠâਢ

áï . -

á« ¢ï­áª¨å ⥪áâ å ª ¦¤®¥ á«®¢® ¨¬¥

æ¥àª®¢­®- -

¥é¥ ®¤¨­ ¡ëâì ¬®¦¥â ¤®¢®«ì­® íª§®â¨ç¥

¥âáï , , -

¯® ªà ©­¥© ¬¥à¥ ®¤¨­ ¤¨ ªà¨â¨ç¥áª¨© §­ ª

¥â .

¯à¨¬¥à ¯à¨¬¥­¥­¨ï ¬­®£®ï§ëç­®áâ¨

᪨© TEX’

®¤­ ¨§ ¨§¢¥áâ­ëå ¢â®àã á¨á⥬ ª®¬¯ìî

¨ -

¯à ªâ¨ª¥ â ª¦¥ ¬­®£¨¥ ¨¤¥¨ ¨ à¥è¥­¨ï

­ , ,

â¥à­®£® ­ ¡®à ­¥ ¨¬¥¥â 㤮¢«¥â¢®à¨â¥«ì­ëå

¢ १ã«ìâ ⥠«¥â­¥£® ®¯ëâ à ¡®âë

¢®§­¨ªè¨¥ 5-

á।á⢠¤«ï ­ ¡®à ⥪á⮢ á ¤¨ ªà¨â¨ç¥áª¨¬¨ ®¬

á TEX’ .

‹ãç訩 ¨§ ¨§¢¥áâ­ëå ᯮᮡ ¯à¥¤«

§­ ª ¬¨. -

£ ¥â T«ï í⮩ 楫¨ ®­ ¨á¯®«ì§ã¥â ¬ ªà®ª® ®¡§®à

Ž¡é¨© TEX. -

­® ®­ ¢¨¤¨¬® ¡ë« à ááç¨â ­

¬ ­¤ã \accent, , ,

aâ® á â®çª¨ §à¥­¨ï ª®¬¯ìîâ¥à­®© ¨§¤ ⥫ì᪮©

­ ¤®áâ â®ç­® ।ª®¥ ¯à¨¬¥­¥­¨¥ ¯®â®¬ã

«¨èì ,

á¨áâ¥¬ë ¤®«¦¥­ ¯à¥¤áâ ¢«ïâì ᮡ®© ¯ ª¥â ¤«ï

çâ® ¨á¯®«ì§®¢ ­¨¥ í⮩ ¬ ªà®ª®¬ ­¤ë ¢ë§ë¢ ¥â

à ¡®âë á ª ª¨¬ ï§ëª®¬ Ž­ ¤®«¦¥­ ᮤ¥à

- «¨¡® ? -

­¥¦¥« ⥫ì­ëå íä䥪â

¤¢ :

¯® ªà ©­¥© ¬¥à¥ á«¥¤ãî騥 ª®¬¯®­¥­âë

¦ âì :

ª¥à­ ¬¥¦¤ã ªæ¥­â¨àã¥¬ë¬ á¨¬¢®

• ¨á祧 ¥â - èà¨äâë

• ª ç¥á⢥­­ë¥ ;

¨ ¯à¥¤ë¤ã騬

Ǩ ;

®¡«¥£ç¥­¨ï ­ ¡®à ⥪áâ

• á।á⢠;

ª®­¥æ á«®¢ ­ 稭 ï á ªæ¥­â¨à㥬®£® ᨬ ¯¥à¥­®á®¢

• â ¡«¨æã ; • , -

¢®« ­¥ ¯¥à¥­®á¨âáï ¢®®¡é¥ ­ ç «® ¬®

¯®«¨£à ä¨ç¥áª¨å ¯à ¢¨« ¨á¯®«ì

• ®¯¨á ­¨¥ , - , , -

¦¥â ¯¥à¥­®á¨âìáï ­¥¯à ¢¨«ì­®

¢ ¤ ­­®¬ ï§ëª¥

§ã¥¬ëå ; ;

âॡ®¢ ­¨ï ¨ áâ «¨ ®á­®¢®© ¯à¨ à §à â¨ íä䥪âë ¢®§­¨ª îâ ¨§ § ⮣® çâ®

â¨ - - , TEX,

¯ ª¥â [«¢~ ¥à¢ë¥ ¤¢ ¯ã­ªâ 㤠«®áì ¯à¨ à¥ «¨§ 樨 ¬ ªà®ª®¬ ­¤ë ¨á¯®«ì

¡®âª¥ TEX. \accent -

¤«ï ª §ã¥â ï¢­ë© ª¥à­ ®í⮬㠢¥à®ïâ­® «ãç訬 ॠ¢¯®«­¥ 㤮¢«¥â¢®à¨â¥«ì­®

ॠ«¨§®¢ âì , - . , -

ॠ«¨§ 樨 âà¥â쥣® ¯®ª ­¥ å¢ â 襭¨¥¬ çâ® ¨ ॠ«¨§®¢ ­® ­ ¯à¨¬¥à ¤«ï ­¥

ç¥á⢥­­®© - ( , , -

­¥®¡å®¤¨¬®£® ®¡ê¥¬ á«®¢ àï ç¥â¢¥àâë© ª®â®àëå ¥¢à®¯¥©áª¨å ï§ëª®¢ ï¥âáï ॠ«¨§

¥â , ) -

â ª ª ª ¢ æ¥àª®¢­® æ¨ï ¡ãª¢ë ¢¬¥áâ¥ á ªæ¥­â®¬ ¢ ¢¨¤¥ ®â¤¥«ì­®£® ®âáãâáâ¢ã¥â

¯à ªâ¨ç¥áª¨ , -

ï§ëª¥ ª ª¨å «¨¡® ¯®«¨£à ä¨ç¥áª¨å ᨬ¢®« ¢ èà¨ä⥠Ž¤­ ª® ¢ á«ãç ¥ á æ¥àª®¢­®

á« ¢ï­áª®¬ - . , -

¯à ¢¨« ¯à®áâ® ­¥â ï§ëª®¬ â ª®¥ à¥è¥­¨¥ ¢ ç¨á⮬ ¢¨

. á« ¢ï­áª¨¬ -

­¥ ¯à®å®¤¨â ¯®áª®«ìªã ¢®§¬®¦­ëå ª®¬¡¨

¤¥ , -

bà¨äâë

¡ãª¢ ¤¨ ªà¨â¨ç¥áª¨© §­ ª â ª ¬­®£®

­ 権 — ,

Z §à ¡®âª èà¨ä⮢ ¢®®¡é¥ ï¥âáï ®ç¥­ì âàã ᨬ¢®«®¢ ¢ èà¨ä⥠¯à®áâ® ­¥ å¢ â¨â

- çâ® 256 !

§ ­ï⨥¬ ª ⮬㠦¥ ¯®§­ ­¨ï ¢â®à ¢  ¢¥à­®¥ ®ç¥­ì å®à®è¨¬ à¥è¥­¨¥¬ ¯à®¡«¥¬ë

¤®¥¬ª¨¬ , ,

¢®¯à®á¥ ª ­ ç «ã à ¡®âë ¡ë«¨ ¬¨­¨¬ «ì ¡ë«® ¡ë á«¥¤ãî饥 à §«¨ç­ë¥ ¯ àë ¡ãª¢

í⮬ - : —

®í⮬㠭 à §à ¡®âªã ¡ §®¢®£® ¢ ਠ­ ¤¨ ªà¨â¨ç¥áª¨© §­ ª ¨¬¥îâ ¢ èà¨ä⥠¯®§¨æ¨¨

­ë¬¨. -

èà¨ä⮢ ãè«® ¡®«ìè¥ ¯®«ã£®¤ ¢­¥á¥­¨¥ ᮢ¯ ¤ î騥 ¯® ¬®¤ã«î ¨ ¨å ¬¥âਪ¨ ¢

â , 256,

ã«ãç襭¨© ¯à®¤®«¦ ¥âáï ¤® á¨å ¯®à ä ©«¥ ᮢ¯ ¤ î⠊ ᮦ «¥­¨î ­¨ª ª¨¬ à §«¨ç­ëå . TFM- . ,

TUGboat, Volume 16 (1995), No. 4 377

®â ­¥«ì§ï ¤®¡¨âìáï çâ®¡ë ®­ ¢ ¯à¨è«®áì ®âª § âìáï â ª ª ª ¢ Z®áᨨ

®¡à §®¬ TEX’ , Script ,

¢ë¢¥« ᨬ¢®« á ª®¤®¬ ¡®«ì訬 祬 ¯à¨­â¥à ¢á¥ ¥é¥ ï¥âáï ¡®«ì让

DVI- ä ©« , PostScript-

®£à ­¨ç¥­¨¥ ⥬ ¡®«¥¥ ­¥¯®­ïâ­® ।ª®áâìî ¯®í⮬ã ç⮡ë ॠ«¨§®¢ âì à §

256. \ ª®¥ , . -

ä®à¬ â ä ©« ¯®¤¤¥à¦¨¢ ¥â ¨á ¤¥«¥­¨¥ 梥⮢ ¨ ¯®«ãç¨âì ®â¤¥«ì­ë¥ á« ©¤ë ¯®áª®«ìªã DVI- -

32

¯®«ì§®¢ ­¨¥ ᨬ¢®«®¢ á ª®¤ ¬¨ ¤® Ué¥ ¡ë« ¨á¯®«ì§®¢ ­ ¨¤¥ï ª ¦¤®£® ⥪áâ

2 − 1. ¤«ï ,

¨§¢¥áâ­ë© ᯮᮡ ¡®àì¡ë á ¤¨ ªà¨â¨ç¥áª¨ ®¡ ¨á¯®«ì§®¢ ­¨¨ ­¥¢¨¤¨¬ëå èà¨ä

®¤¨­ - SliTEX’ ” ” -

§­ ª ¬¨ ¤¥« âì ¨å ¢ ¢¨¤¥ ᨬ¢®«®¢ á ­ã«¥ ⮢ Ž¤­ ª® ¨§ § ¯à®¡«¥¬ á ª¥à­¨­£®¬ ¨á

¬¨ — - . , - , -

è¨à¨­®© ¨ ᨫ쭮 ᬥ饭­ëå ¢«¥¢® \ ª®© ¯®«ì§®¢ âì ¢ ç¨á⮬ ¢¨¤¥ ­¥ 㤠¥âáï

¢®© . SliTEX .

⮦¥ ï¥âáï ­¥ã¤®¢«¥â¢®à¨â¥«ì­ë¬ R á ¬®¬ ¤¥«¥ ¥á«¨ ã ­ á ¥áâì á«®¢® ¯¥à¢ ï

¢ ਠ­â , , ,

¯®áª®«ìªã ¯à®¡«¥¬ã á ª¥à­¨­£®¬ ®­ ­¥ à¥è ¥â ¨ â ª®â®à®£® ¢ë¤¥«¥­ ¤à㣨¬ 梥⮬

, ¡ãª¢ ( -

⮣® ¯®áâ஥­¨¥ â ¡«¨æë ¯¥à¥­®á®¢ ¢ í⮬ ª®¥ ¢ æ¥àª®¢­® á« ¢ï­áª¨å ⥪áâ å á«ãç ¥âáï

ªà®¬¥ , -

¡ë«® ¡ë ¤¥«®¬ ¢¥áì¬ § âà㤭¨â¥«ì­ë¬ ®ç¥­ì ç áâ® â® ª¥à­ ¬¥¦¤ã ¢ë¤¥«¥­­®© ¡ãª¢®©

á«ãç ¥ . ),

a⮡ë à¥è¨âì ¯à®¡«¥¬ã ¯à¨è«®áì ¯®­ïâì ®áâ «ì­ë¬ á«®¢®¬ ¯à®¯ ¤ ¥â ¢ á¢ï§¨ á ¯¥à¥

, , ¨ -

ª ª®¬ã ¯à¨­æ¨¯ã à ááâ ¢«ïîâáï ¤¨ ªà¨â¨ç¥ ª«î祭¨¥¬ ­ ¤à㣮© èà¨ä⠏®í⮬㠤«ï â

¯® - . , -

§­ ª¨ ¢ æ¥àª®¢­® á« ¢ï­áª®¬ ï§ëª¥ Žª § ª®£® த ¢ë¤¥«¥­¨© ¯à¨å®¤¨âáï ¨á¯®«ì§®¢ âì

᪨¥ - . -

çâ® ­¥ª®â®àë¥ ¨§ ­¨å ¢áâà¥ç îâáï ⮫쪮 á¯¥æ¨ «ì­ë¥ ¬ ªà®ª®¬ ­¤ë a⮡ë ॠ«¨§®

«®áì, . -

¯¥à¢®© ¡ãª¢®© á«®¢ ­¥ª®â®àë¥ â®«ìª® ¢ âì à §¤¥«¥­¨¥ 梥⮢ ¡ë« ॠ«¨§®¢ ­ ᯥæ¨

­ ¤ , — , -

â¨ ¤¢ á«ãç ï ॠ«¨§ãîâ ᯥ «ì­ ï á¨á⥬ ¯®¤ª«î祭¨ï èà¨ä⮢ ­¥¬­® ¯®á«¥¤­¥©

­ ¤ . - , -

¬ ªà®ª®¬ ­¤ë ¨ £® ¯®å®¦ ï ­ ®á«¥ í⮣® ¯®«ì§®¢ ⥫ì

æ¨ «ì­ë¥ \fcaccent \lcaccent. NFSS.

¯®á«¥¤­¥© ­¥ ¯à¥¤áâ ¢«ï¥â ®á®¡®£® ¬®¦¥â ®¯¨á âì ¨á¯®«ì§ã¥¬ë¥ 梥⠬ ªà®ª®

 ¯¨á ­¨¥ -

â ª ª ª ®­ «¨èì à §¬¥é ¥â á ¯®¬®éìî ¬ ­¤ ¬¨ 梥⠝⠬ ªà®ª®¬ ­

âà㤠, \newcolor(< >). -

¤¨ ªà¨â¨ç¥áª¨© §­ ª R ¬ ªà®ª®¬ ­¤¥ ¤ ¯®à®¦¤ ¥â ¬ ªà®ª®¬ ­¤ë 梥â ⥪áâ

ª¥à­®¢ . \< >g{< >}

í⮣® ¨á¯®«ì§ã¥âáï ª®­áâà㪠¨ 梥⠏¥à¢ ï ¨§ ­¨å ¯¥à¥ª«îç ¥â 梥â

\fcaccent ªà®¬¥ , - \< >.

ª®â®à ï ¯®á«¥ ¢ëà ¢­¨ á á®åà ­¥­¨¥¬ ª¥à­¨­£ ¢â®à ï ¡¥§ á®åà ­¥

æ¨ï \nobreak\hskip0pt, - , — -

¤¨ ªà¨â¨ç¥áª®£® §­ ª á ¯®¬®éìî ª¥à­®¢ ­¨ï ª¥à­¨­£ ®­ ¡®«¥¥ ¯à®áâ® ¨­â¥à¯à¥â¨àã

¢ ­¨ï ( -

¥âáï ®¬ ¯®í⮬㠥¥ ¨á¯®«ì§®¢ ­¨¥ ¨¬¥¥â ¯¥à¥­®á á«®¢

à §à¥è ¥â . TeX’ ,

ª á ¥âáï â¥å ¤¨ ªà¨â¨ç¥áª¨å §­ ª®¢ á¬ëá« \¥¯¥àì ¥á«¨ ¢® ¢å®¤­®¬ ä ©«¥ 㪠§ âì

aâ® , ). ,

¢áâà¥ç îâáï ¢ á¥à¥¤¨­¥ á«®¢ â® ç áâì 梥â â® ¢ë¤¥«¥­¨ï ¤ ­­ë¬ 梥

ª®â®àë¥ , \showcolor(< >), -

¨§ ­¨å ॠ«¨§®¢ ­ ¢¬¥á⥠á ᮮ⢥âáâ¢ãîé¨ ¡ã¤ãâ ¢¨¤­ë ¯à¨ ¯¥ç ⨠\¥ªáâ à ᯮ«®

- ⮬ . , -

¡ãª¢ ¬¨ ¢ ¢¨¤¥ ®â¤¥«ì­ëå ᨬ¢®«®¢ ¦¥­­ë© ¤® ¯¥à¢®© ¬ ªà®ª®¬ ­¤ë 梥⠨«¨

¬ , \< >

¯à¨¬¥­ï¥¬ë¥ 梥⠡㤥⠢¨¤¨¬ë¬ ­¥§ ¢¨á¨¬® ®â ¬ ªà® ¯à¥¤áâ ¢«ï¥â ᮡ®© §­ ª¨

ç áâì , , \< >g -

®á­®¢­®¬ ¤«ï ᮪à 饭¨ï ­ ¯¨á ­¨ï ­¥ª®â® ª®¬ ­¤

¢ , - \showcolor.

á«®¢ ¢ æ¥àª®¢­® á« ¢ï­áª®¬ ï§ëª¥ ®­¨ ­®

àëå ( - -

ã¬¥à æ¨ï

­ §¢ ­¨¥ â¨â«® [«®¢ ᮤ¥à¦ 騥 íâ¨

áïâ ” ”). ,

§­ ª¨ ª ª ¯à ¢¨«® ­¥ ¯¥à¥­®áïâáï ¯®í⮬ã áâ á« ¢ï­áª®¬ ï§ëª¥ ¯à¨­ï⠡㪢¥­ æ¥àª®¢­®

, , , - R - -

¢®§¬®¦­ë¬ ­ ¯¨á âì ¬ ªà®ª®¬ ­¤ã ª®â®à ï ­ ï ­ã¬¥à æ¨ï ®¯¨áë¢ ¥¬ ï á«¥¤ãî騬 «£®

«® , , -

á®åà ­ïï ª¥à­ ª ª à¨â¬®¬ ­ ¤ ᨬ¢®«®¬ ªæ¥­â

áâ ¢¨â , :

â ª ¨ ¯®á«¥ í⮣® ᨬ¢®« â® ¤®¢®«ì­® å¨ ãáâì 楫®¥ ç¨á«®

¤®, . - n— , n ≥ 0, S(n)—

¬ ªà®ª®¬ ­¤ ¢ ç áâ­®á⨠¤«ï ¥¥ ­ ¯¨ ¥£® ¯à¥¤áâ ¢«¥­¨¥ ¢ æ¥àª®¢­® á« ¢ï­áª®¬ ï§ëª¥

âà ï , , - - .

¯à¨è«®áì ¯à¨¬¥­¨âì â ª®¥ á।á⢮ ª ª T«ï ­ ç « ¢¢¥¤¥¬ â ¡«¨æã á ­¨ï , :

\futurelet. n S(n) n S(n) n S(n)

㤮¡á⢠­ ¡®à ⥪áâ ᨬ¢®«ë

T«ï ’, 1 10 100

ᤥ« ­ë ªâ¨¢­ë¬¨ ¨ à á

", ‘, ~, _, | ¨ < - 2 20 200

¢ ᮮ⢥âáâ¢ãî騥 ¬ ªà®ª®¬ ­¤ë

ªàë¢ îâáï . 3 30 300

¢ æ¥àª®¢­® á« ¢ï­áª¨© ०¨¬ ®áãé¥

¥à¥å®¤ - - 4 40 400

¢ë室

á⢫ï¥âáï ¬ ªà®ª®¬ ­¤®© \beginslav, — 5 50 500

s x

¬ ªà®ª®¬ ­¤®© \endslav. 6 60 600

o z

7 70 700

Z §¤¥«¥­¨¥ 梥⮢

w

8 80 800

f

á ª®â®à®© ¯à¨è«®áì á⮫ª ¯à®¡«¥¬

Tà㣠ï , - 9 90 900

¢ æ¥àª®¢­® à¥¤áâ ¢«¥­¨¥ ç¨á«

¯à¨ ­ ¯¨á ­¨¨ ¯ ª¥â íâ® à §¤¥«¥­¨¥

­ãâìáï — 0 -

á« ¢ï­áª®¬ ï§ëª¥ ®âáãâáâ¢ã¥â ­® ¤«ï 㤮¡áâ¢

梥⮢ ¢á¥ æ¥àª®¢­® á« ¢ï­áª¨¥

. à ªâ¨ç¥áª¨ - ,

¡ã¤¥¬ áç¨â âì ¥£® ¯ãáâë¬

ïîâáï ¤¢ã梥â­ë¬¨ Š ᮦ «¥­¨î

⥪áâë . , .

ॠ«¨§ 樨 à §¤¥«¥­¨ï 梥⮢ ç¥à¥§ ®â Post-

378 TUGboat, Volume 16 (1995), No. 4

⮠⥬ ª®­¢¥àâ¨àã¥â â ¡«¨æã ¯¥à¥­®á®¢ ¢ ¯à®

U᫨ 10 ≤ n<20, S(n)=S(n mod -

â® ¬¥¦ãâ®ç­ë© ä ©« á ¨á¯®«ì§®¢ ­¨¥¬ ⥪ã

10)S(10). U᫨ 20 ≤ n<100, S(n)=S(n − -

饩 ª®¤¨à®¢ª¨ ¨ ç¨â ¥â ¯®«ã祭­ë© ä ©«

(n mod 10))S(n mod 10). U᫨ 100 ≤ n<1000, ;

U᫨ ¨ ®¯¨áë¢ îâáï

â® S(n)=S(n − (n mod 100))S(n mod 100). • \catcode, \lccode \uccode

â®  á ¨á¯®«ì§®¢ ­¨¥¬ ᨬ¢®«ì­ëå ¨¬¥­ 1000 ≤ n<10000, S(n)=S(n − (n mod â ª¦¥ ;

S n

í⮩ ¨¤¥¨ ॠ«¨§®¢ ­ ¢ ¯®á«¥¤­¥©

1000)) ( mod 1000). R ਠ­â

Žâ­®á¨â¥«ì­® ¯à¥¤áâ ¢«¥­¨ï ç¨á¥« ¡®«ì

¯à¥¤áâ ¢«¥­­®£® ¯ ª¥â ¨ ­ 室¨âáï ¢

, - ¢¥àᨨ

è¨å 祬 áãé¥áâ¢ãîâ à §­®£« á¨ï ¢ ¯ ª¥â¥

â¥áâ¨à®¢ ­¨ï _®ç¥âáï ­ ¤¥ïâìáï çâ®

, 9999, , ¯à®æ¥áᥠ. ,

[«¢~ ॠ«¨§®¢ ­ ᮢ६¥­­ë© ¢ ਠ­â £¤¥ ¯à

®¡à §®¬ ¡ã¤ãâ ®ä®à¬«¥­ë ¨ ¯®

TEX , - ­ «®£¨ç­ë¬ - 

¢¨«® S n S n − n S n

¢¥àᨨ ª¨à¨««¨§ 樨 à á¯à®

( )= ( ( mod 1000)) ( mod 1000) á«¥¤ãî騥 TEX’ , -

­ ¢á¥ ç¨á« P¢â®

à á¯à®áâà ­ï¥âáï ≥

¢® ¢á类¬ á«ãç ¥ íâ® ®¡

1000. - áâà ­ï¥¬ë¥ CyrTUG, -

¬ â¨ç¥áªãî £¥­¥à æ¨î § ¯¨á¨ ç¨á¥« ¢ æ¥àª®¢­®

¡ë à ¡®âã ¤«ï ¬­®£¨å ¯®«ì§®¢ ⥫¥©

- «¥£ç¨«®

á« ¢ï­áª®¬ ï§ëª¥ ॠ«¨§ã¥â ¬ ªà®ª®¬ ­¤

®áᨨ â ª¦¥ ¤«ï ¢á¥åâ¥å ª®¬ã ­¥®¡

TEX’ ¢Z , , -

ç¨á«®  ¯à¨¬¥à ¤ áâ

à ¡®â âì á àãá᪨¬¨ ⥪áâ ¬¨

\slnum(< >). , \slnum(1995) 室¨¬® .

 æ ~ç¥ ¢­¨¬ ⥫ì­ë ¬ ªà®ª®¬ ­¤

. Qã¤ì⥠:

Type 1 ¨§ Metafont’ ? ⮫쪮 ¢ æ¥àª®¢­® á« ¢ï­áª®¬

\slnum ¤¥©áâ¢ã¥â -

०¨¬¥

®¤­ ¨¤¥ï ॠ«¨§®¢ ­­ ï ¯à¨ à §à ¡®âª¥

. Ué¥ ,

¡ë« ­ ¢¥ï­ áâ â쥩 â ª¦¥ ¯®

[«¢~ TEX’ [3], - ª®¤¨à®¢®ª

TEX ¡¥§

­ á⮫¥ ¢â®à ¯à¨­â¥à R

¥­¨¥¬ PostScript- .

R ¯à®æ¥áá¥ à ¡®âë ­ ¤ [«¢~ ®¬ ¯®ï¢¨« áì ¨¤¥ï

¢à¥¬ï ¨¬¥¥âáï ­ ¡®à ¬ ªà®®¯à¥¤¥«¥

TEX’ , ­ áâ®ï饥 -

ª®â®à ï ¯®§¢®«ï¥â à¥è¨âì ¯à®¡«¥¬ë ᮢ¬¥áâ¨

¤«ï METAFONT á ¯®¬®éìî ª®â®à®£® ¬®¦

- ­¨© ’ , -

¬®á⨠¯à¨ ¯¥à¥­®á¥ ª ª®£® «¨¡® ¯ ª¥â ­ ¤àã

¯®«ãç¨âì èà¨äâ ¢ ä®à¬ ⥠¢ ⥪áâ®

- - ­® Type 1 -

£ãî ¯« âä®à¬ã â ¯à®¡«¥¬ ®á®¡¥­­® ªâã

¢¨¤¥ § ⥬ ¨á¯®«ì§ãï ã⨫¨âë

. - ¢®¬ , , Type 1 ,

«ì­ ¢ ãá«®¢¨ïå Z®áᨨ ¯®áª®«ìªã ­ à §­ëå

®¬ ¢ ¢¨¤¥ § £àã¦

, ­ ¯¨á ­­ë¥ L. Hetherington’ ,— -

¯« âä®à¬ å ª®¤¨à®¢ª àãááª¨å ¡ãª¢ à §«¨ç­

èà¨ä⮢ [ ¯®¬®éìî í⮣® ­ ¡®à ¬ ªà®

. ¥¬ëå . -

R¥àá¨ï ª¨à¨««¨§ 樨 à á¯à®áâà ­ï¥¬ ï

¬®¦­® ¯®«ãç¨âì ¯à¥¤áâ ¢«¥­¨¥ ¢ ¢¨¤¥

TEX’ , ª®¬ ­¤

à ááç¨â ­ ¢ ®á­®¢­®¬ ­ ¯®«ì§®¢ â¥

èà¨ä⮢ â à ¡®â

CyrTUG, - Type 1 ¨ Computer Modern.

«¥© ᮢ¬¥á⨬ëå ª®¬¯ìîâ¥à®¢ à ¡®â

¯®íâ® ®â¤¥«ì­®£® à áᬮâ७¨ï ¨

IBM PC- , - § á«ã¦¨¢ ¥â , -

îé¨å ¯®¤ â® ¢ ç áâ­®á⨠¢ë§ë¢

¢ ¤ ­­®© áâ âì¥ ­¥ ®¯¨áë¢ ¥âáï

MS DOS. , , - ‹ .

¥â á¯à ¢¥¤«¨¢®¥ ­¥¤®¢®«ìá⢮ ¬­®£®ç¨á«¥­­ëå

à®¡«¥¬ë ¨ ¯« ­ë

á।¨ ª®â®àëå ªà㯭ë¥

¯®«ì§®¢ ⥫¥© unix’ , —

­ ãç­ë¥ ¨­áâ¨âãâë ª®â®àë¥ ¢ ¥ ­ã¦¤ îâ

¢ ¦­®© ¨§ áãé¥áâ¢ãîé¨å ­ ᥣ®¤­ïè

, TEX’ - [ ¬®© -

áï ¡®«ìè¥ ¢á¥£®

¤¥­ì ¯à®¡«¥¬ ®áâ ¥âáï ¯®¤ª«î祭¨¥ ¯ ª¥

. ­¨© -

«¥£ª®£® ¯¥à¥­®á ­ ¤àã£ãî ¯« âä®à

X¤¥ï A

[«¢~ ª â®ç­¥¥ ¥£® ®ä®à¬«¥­¨¥ ª ª

- â TEX L TEX2ε,

§ ª«îç ¥âáï ¢ á«¥¤ãî饬

‹ A

R ¡ã¤ã饬 ¢â®à â ª¦¥ ᮡ¨

: L TEX2ε- ¯ ª¥â . -

à ¥âáï § ­ïâìáï à §à ¡®âª®© ¯ ª¥â ¤«ï § ¯¨

â ¡«¨æ ª®¤¨à®¢ª¨ ¤«ï ª®­ªà¥â

• R¢®¤¨âáï - -

ᨠ¬ã§ëª¨ ¢ ¡¥§«¨­¥©­®© ­®â 樨 â ª ­ §ë

¯« âä®à¬ë ¨ ª®­ªà¥â­®£® ᥬ¥©áâ¢

­®© ( -

¢ ¥¬ë¥ ªà ¨á¯®«ì§®¢ ¢è¥©áï ¢ Z®áᨨ

ᮤ¥à¦ é ï ᮮ⭮襭¨¥ ¬¥¦¤ã

èà¨ä⮢, ” ”),

¢¯«®âì ¤® ¢¥ª R ç¨á«¥ ¯à®¡«¥¬ á¢ï

­ ¯à¨ ª®¤ ¬¨ ¨ ¨å ¨¬¥­ ¬¨

ᨬ¢®«ì­ë¬¨ ( - XVII . , -

§ ­­ëå á æ¥àª®¢­® á« ¢ï­áª¨¬ ï§ëª®¬ ¬®¦­®

¨á¯®«ì§ã¥¬ë¬¨ ¢ ¥

¬¥à, PostScript’ ); - ,

à §à ¡®âªã èà¨ä⮢ ¤«ï ¡ãª¢¨æ

㯮¬ï­ãâì ,

ã⨫¨â ®­ ¬®¦¥â ¡ëâì

• Ž¯à¥¤¥«ï¥âáï (

á¯¥æ¨ «ì­®£® èà¨äâ ¤«ï § £®«®¢ª®¢ ¢

â ª¦¥— ,

¤ ¦¥ ­ ¥ ª®â®à ï ¨§

­ ¯¨á ­ TEX’ !),

à §«¨ç­ë¥ ¡ãª¢®á®ç¥â ­¨ï ¨¬¥îâ à §

ª®â®à®¬ -

ª®¤¨à®¢ª¨ £¥­¥à¨àã¥â ¤¢ ä ©

â ¡«¨æë -

­ ç¥àâ ­¨ï íâ § ¤ ç ª ¦¥âáï ¢¥áì¬

«¨ç­ë¥ (

¯¥à¢ë© â ¡«¨æ ª®¤¨à®¢ª¨ ¤«ï META

« : — -

â ª ª ª ¯®¤®¡­ë© èà¨äâ ¤®«¦¥­

ä ­â áâ¨ç­®©,

¢â®à®© ¤«ï

FONT’ , — TEX’

¨¬¥âì ®ç¥­ì ¬­®£® ᨬ¢®«®¢ ¨ ®£à®¬­®¥ ç¨á«®

­ ¡®à ¬ ªà®ª®¬ ­¤ ¤«ï META • T®¡ ¢«ï¥âáï -

«¨£ âãà).

ª®â®àë© ¯¥à¥®¯à¥¤¥«ï¥â ¬ ªà®ª®

FONT’ , -

­ ¤¥ïâìáï çâ® ªâ® ­¨¡ã¤ì à §

_®ç¥âáï , - -

â ª çâ® ¯à¨ ãáâ ­®¢ª¥

¬ ­¤ã beginchar ,

¨­â¥à¥á ¢â®à ª ¯à®¡«¥¬¥ æ¥àª®¢­®

¤¥«¨â -

­¥© ¬®£ãâ ¡ëâì ¨á¯®«ì§®¢ ­ë

usenames:=1 ¢

¨ ¤à¥¢­¨å ⥪á⮢ Œ®¦¥â ¡ëâì

á« ¢ï­áª¨å . , ¨¬¥­

ᨬ¢®«ì­ë¥ ;

­¨¡ã¤ì ¯®ï¢¨âáï ¬­®£®ï§ëç­®¥ ¨§¤ ­¨¥

ª®£¤ -

\ ¡«¨æ ¯¥à¥­®á®¢ ®¯¨áë¢ ¥âáï á ¨á¯®«ì ­ æ¥àª®¢­® á« ¢ï­áª®¬ £à¥ç¥áª®¬ «

• - Q¨¡«¨¨ ( - , , -

ᨬ¢®«ì­ëå ¨¬¥­ ¯à¨ £¥­¥à 樨 ⨭᪮¬ ¥¢à¥©áª®¬ ­ ª ª®¬ ¥é¥ ¢ë¯®«

§®¢ ­¨¥¬ ; , ... ?), -

ç¨â ¥â â ¡«¨æã ª®¤¨à®¢ª¨ § ­¥­®¥ á ¯®¬®éìî ä®à¬ â TEX , - TEX’ . TUGboat, Volume 16 (1995), No. 4 379

à¨¬¥àë Production Notes on the Russian Papers

¯à¨¬¥à ­ ¡®à ⥪áâ ­ æ¥àª®¢­®

à®á⮩ - Michel Goossens ï§ëª¥ á« ¢ï­áª®¬ :

The two previous articles both have their first

ᤨ ¨á¥ å áàâ ¥ á ­¥ ¡ ¦ © £|

part in English, then an equivalent text in Russian,

¨«ã© ¬ ï £à íè­ £® ¯®¬’ ‘ ’

and finally a part with examples in both languages.

१ã«ìâ â ¥£® ª®¬¯¨«ï樨

¨ : Apart from these similarities the Russian text was

i coded in completely different ways for both articles.

The Lapko-Makhovaya article uses the KOI8

¯®á«¥¤®¢ ⥫쭮áâì 梥⮤¥«¥­¨ï à¨¬¥à : encoding popular in the Unix community in Russia. ª®¬ ­¤ The KOI8 input was matched by hyphenation \beginslav\family(slav)\size(12)% patterns and a font layouts using the same encoding.

\def\pray{% On the other hand the Slepukhin article was

á ¤¨ ¨á¥ å áàâ ¥ á ­¥

\redg S| { }

¦ © ¯®¬ ¨«ã© ¬ ï £à íè­ £® ¡_ i , ’ ‘ ’ machines, and the normal Russian and SlavTEX }% fonts matched that encoding, as did the Russian \black% hyphenation patterns needed to run that paper. \hidecolor(black)% Both Russian encodings are 8-bits wide and \showcolor(red)% coincide with ASCII in positions 0 to 127, but they \par\noindent\pray place the Cyrillic characters in completely different \hidecolor(red)% locations between 128 and 2551. \showcolor(black)% To run both articles two different formats had \par\noindent\pray to be generated. The first contained the English \showcolor(red)% and Russian hyphenation patterns using the KOI8 \par\noindent\pray encoding, the second one English and Russian in the

\endslav Alternativniy encoding. Also different style files and

ª á«¥¤ãî饬ã १ã«ìâ â㠯ਢ®¤¨â : font encodings were necessary. Both font instances

are based on the LH Cyrillic font family developed

i

by Olga Lapko and her colleagues of CyrTUG [1],

i

only the encoding is different.

i Presently CyrTUG, the Cyrillic TEXUsers

Group has a working group coordinated by Olga

R í⮬ ¯à¨¬¥à¥ å®à®è® ¢¨¤­® ªæ¥­â ¬®¦­® , çâ®

Lapko trying to come up with a unique encoding,

­® ¨ ­ ¤ ­¥ ⮫쪮 ­ ¤ ®¤­¨¬ ᨬ¢®«®¬ áâ ¢¨âì ,

but, as stated in the babel article, we will probably ᨬ¢®«®¢ á®ç¥â ­¨¥¬ .

have to wait until the Ω system is ready to try and «¨â¥à âãàë [¯¨á®ª solve the problems discussed in Section “Encoding and font problems”. [1] Donald E. Knuth. The T Xbook. Addison E Finally, as a technical aside, the picture on the Wesley, Reading, MA, 1990. next page, showing an example of SlavTEX output, [2] Donald E. Knuth. The METAFONTbook. Addison had its text typeset with the SlavTEX system, while Wesley, Reading, MA, 1990. the first letter of the text and the surrounding frame [3] Bogus law Jackowski, Marek Ry´cko. Labyrinth are bitmaps.

of METAFONT paths in outline. EuroT X E References Proceedings, 1994: 18–32.

[1] Olga G. Lapko. MAKEFONT as part of the

P«¨¯¨© S ¬ ­®¢¨ç Sà ¬¬ ⨠[4] X¥à®¬®­ å ( ). -

CyrTUG-EMTEX package. Proceedings of the

æ¥àª®¢­® á« ¢ï­áª®£® ï§ëª  «®¬­¨ª ª - . , 8th European TEX Conference, pages 110–118, Œ®áª¢ , 1991.

Gda´nsk, Poland, 1994.

àãá᪮£® ï§ëª ¢¢  㪠[5] [«®¢ àì XI–XVII . ,

Œ®áª¢ , 1975. ⋄ Michel Goossens CERN, Geneva, Switzerland

Email: [email protected]

[«¥¯ã娭 ⋄ P­¤à¥©

1

‹ ¢à ®á ¤ Z®áá¨ï , [¥à£¨¥¢ , More information on KOI8 can be found at the URL Email: [email protected] http://www.nar.com/tag/koi8_explained.html.

380 TUGboat, Volume 16 (1995), No. 4

ŒŽ‹X\RP ZPWZbX\U‹œPŸ

Q I

i

i ew y w

e w i

q q

y y e

e q o

iw

i q

e jw

i i

i qi i

o w

i

i jw

w q

e e e

i e e i

w

[«¢~ An example of SlavTEX—à¨¬¥à TEX TUGboat, Volume 16 (1995), No. 4 381

2 Supported Languages Fonts The following languages are supported by the Cork encoding: Afrikaans, Albanian, Breton, Croatian, Czech, Danish, Dutch, English, Estonian, Faroese, Release 1.2 of the dc-fonts: Finnish, French, Frisian, Gaelic, Galician, German, Improvements to the European letters and Greenlandic, Hungarian, Icelandic, Irish (modern first release of text companion symbols orthography), Italian, Letzeburgish, Lusatian (Sor- Jörg Knappen bian), Norwegian, Polish, Portuguese, Rhaetian (Ru- mantsch), Rumanian, Slovak, Slovene, Spanish, Swe- Abstract dish, Turkish. Many non-European languages using I describe the improvements made to the dc fonts in the standard latin alphabet (e.g., Bahasa Indonesia, release 1.2, and the text companion font added. The Suaheli) are also supported. ec fonts will finally replace the present 128-character In Europe, the following languages aren’t sup- A ported: Azeri, Basque, Catalan, Esperanto, Irish cm fonts as the default fonts of LTEX. (old orthography), Latvian, Lithuanian, Maltese, Sa- 1 Introduction mi, Welsh. Of course, Greek and all languages with In 1990 at the TUG meeting in Cork, Ireland, the cyrillic writing are outside the scope of the Cork en- coding. European TEX user groups agreed on a 256-character encoding supporting many European languages with 3 Improvements to the dc Fonts latin writing. This encoding is both an internal en- 3.1 Accents coding for TEXandafont encoding. This double nature is a consequence of the fact that both kind of In good typography, the accent marks should look encodings cannot be entirely separated within TEX. different for capitals and lowercase letters respec- The design goals of the Cork encoding are to al- tively. The accent over a capital should be of a ‘flat’ low as many languages as possible to be hyphenated design, while the accent on a lowercase letter should correctly and to guarantee correct kerning for those be ‘steep’. The Computer Modern fonts by D. E. languages. Therefore it includes many ready-made Knuth only have steep accents, suitable for lower- accented letters. case letters. It also includes some innovative features which have not become very popular yet, though they de- ´o´x O´X´ serve to become so. The first to mention is a special, zero-width invisible character, the compound word Fig. 1: Letters with acute accent in the cmr font mark (cwm). The second is the separation of the There are no pre-accented letters provided, which two characters hhypheni and hhyphenchari.Byap- leads to problems with proper hyphenation and kern- propriate design of the hyphenchar glyph, hanging ing. However, the floating accent approach guaran- hyphenation can be achieved. tees the consistency of all accented letters. The final version of the Cork encoded fonts will With the (now out-of-date) version 1.1 of the dc ec be called (European Computer Modern or Ex- fonts, the situation is different. We have predesigned tended Computer Modern) fonts. The current ver- accented letters for all languages included in the ISO dc sion, called fonts, is an intermediate step towards standards 8859-1 and 8859-2. If an ‘exotic’ accented the final version. Note that in the case of bug fixes letter is needed, it does not fit with the provided and improvements, the metrics may change. ones. The need for a text companion font was first articulated in the discussion of new 256 character ´ mathematical fonts in 1993. In order to achieve a ó´xÓX better orthogonality between text and math, some Fig. 2: Letters with acute accent in the dcr font (v1.1) text symbols stored in the math fonts should be 1 Note that the floating acute accent is the same for moved to the text companion fonts . The text com- capitals and lowers, but different from both, being panion fonts are also the ideal place to store some even steeper than the lowercase one. new characters, like currency symbols. With version 1.2 of the dc fonts, all inconsisten- 1 cies have gone. The accents are different between The archives of the math-font-discuss mailing list are available for ftp on ftp.cogs.susx.ac.uk in directory capitals and lowers as they should be, and floating pub/tex/mathfont. accents can be applied in a consistent manner.

382 TUGboat, Volume 16 (1995), No. 4



x X

Fig. 3: Letters with acute accent in the dcr font (v1.2) Fig. 7: Some czech and slovak special letters in the dcr Since the Cork encoding provides only one slot for font (1.2) each accent, the capital acute accent is taken from The height of umlaut dots has been adjusted to the the text companion font tcr. This is possible because value contributed by the czechoslovak group (ä oc- dc TEX allows cross-font accenting. curs in slovak); the value used in version 1.1 of the The acute accent and the readily accented let- fonts was considered too low even by german users. ters were taken with kind permission of the authors from the polish pl fonts, which provide the highest ¨a ä available quality for these shapes. The hungarian Fig. 8: The letter ä in cmr, dcr v1.1, and dcr v1.2 double acute accent and the grave accent follow the The hyphenchar is now designed to hang out design of the acute accent. of its bounding box, thus allowing for hanging hy- phenation.

3.2 Quotation marks The design of quotation marks provides another chal- lenge for the ec fonts. In the Computer Modern Fig. 9: Hyphen and hyphenchar with their bounding

fonts, they are optimised to english usage. box

The release of version also contains a new

a classical serif italic font It was already pre

“ ” shape

for version but no parameter and driver

Fig. 4: Quotation marks in the cmr font pared

les were present for it It is an italic with upper

They lie asymmetrically in their boxen, which makes

serifs instead of ingoing hooks This paragraph is

a wider space before and after a quotation. However,

typeset using the dcci font to show its appearance this kind of design produces a disaster, if the same english opening quotation mark is used as a german 4Thetc Fonts or polish closing quotation mark. Currently, macros 4.1 A text symbol encoding have to compensate for this. In the dc fonts 1.2, the quotation marks lie sym- Over the years, many reasons have accumulated for metrically in a tighter box, and the additional space a new text symbol encoding. There are some text is created by kerning against the boundarychar. symbols currently stashed in the math fonts, the

footnote marks, and the bullet (•) are among them.

Fig. 5: Quotation marks in the dcr font (v1.2) ∗§¶†‡k Fig. 10: Footnote symbols from the cm math fonts The boundarychar feature was introduced with TEX3 In 256-character math fonts they should not be and METAFONT 2; it is reasonable to assume that preserved, but moved to a text symbol encoding. nowadays every TEX user has access to these or later

versions2.

* § c ¶ T U V 3.3 Miscellaneous Fig. 11: Footnote symbols from the tcr font The shapes for polish letters are now taken from the I have added serifs to the paragraph sign (¶)inthe polish pl font, leading to improved shapes on the serif typefaces, and I have added another one having ogoneked letters and the crossed l. only one vertical stroke. The design of the section

sign (§) was improved significantly, as can be seen

from the boldface glyphs. Fig. 6: Polish special letters in the dcr font (v1.2)

With the help of the czechoslovak T Xusers’ § Ÿ E Fig. 12: Old and new design of the section mark goup, the shapes of czech and slovak special letter have been improved, too. ISO standards 8859-1 (Latin 1), 8859-2 (Latin 2), and 6937 contain several custom signs. It will be eas- 2 ier to typeset text encoded according to those stan- Maybe it was not a reasonable assumption in 1990, when the Cork encoding was born and the above mentioned ver- dards if the necessary symbols were easily accessible sions were brand new. through a text symbol font. TUGboat, Volume 16 (1995), No. 4 383

ième th c

$ ¢ ¥ ¤ \ Š ‹  Œ £ 2 5 M

Fig. 14: Some superscript letters lacking in expert fonts

Ž  Z [ ` š Fig. 13: Currency signs from the tcr font Therefore the rule of thumb for the distribution of glyphs is the following: Put all glyphs wich can be

conveniently made with METAFONT and are needed with TEX into the encoding TS1, and put the re- Finally, I wanted to have different style accents maining glyphs, mainly superscripts and subscripts, for capitals and lowercase letters. Since the Cork into the encoding TSA. There are some duplications encoding does not have space for another fourteen and deviations from this rule of thumb, e.g., super- accent glyphs, I decided to have the lowercase ac- script 1, 2, and 3 are part of ISO 8859-1, thus they dc cents, which are needed far more often, in the occur in TS1 as well as in TSA. fonts, and to put the capital accents into the text companion fonts. 5 Standard Control Sequences The users of commercial fonts also want to ac- The following standard control sequences are as- cess all glyphs stored in those fonts. Since most of A signed with LTEX’s T1 encoding for the dc fonts: those glyphs are textual, they all should be included \r Ring accent (\r u gives ů) into a text symbol font encoding. \k Ogonek (\k e gives ę) 4.2 The font encodings TS1 and TSA \dh, \DH Icelandic letter edh (ð, Ð) \dj, \DJ Letter d with stroke (ñ, Ð) For mainly technical reasons, I think the candidates \ng, \NG Letter eng (ŋ, Ŋ) for a text symbol encoding should be distributed \th, \TH Icelandic letter thorn (þ, Þ). over two fonts, their encoding named TS1 and TSA respectively. There are important differences be- The package textcomp by Sebastian Rahtz as-

tween the technologies supported by METAFONT and signs standard names to all text companion symbols. TEX compared to the path most commercial font The documentation prints a nice table. suppliers choose. The Computer Modern family of fonts supports 6 Ligatures the notion of a designsize, i.e., there are subtle dif- In the proportional fonts, the following ligatures are ferences between the shapes at different point sizes implemented: as illustrated in the next section. TEXisableto raise and lower letters, thus it does not need an al- ready raised digit to produce a superscript. It can -- – (en dash) also produce nice fractions using a macro from the --- — (em dash) 1 1 1 ‘‘ “ (english opening quotes, TEXbook, exercise 11.6, as /2, /4,and /6. Most commercial vendors took the easier path; german closing quotes) their fonts come in only one size and are scaled up ’’ ” (english and polish closing quotes) and down to other sizes. Thus, a small superscript ,, „ (german and polish opening quotes) does not look right, and to compensate for this a pre- << « (french opening quotes) designed superscript is added to the fonts. A sub- >> » (french closing quotes) script, too, because earlier text processors weren’t !‘ !‘ (spanish opening exclamation mark) able to raise or lower letters. For similar reasons, ?‘ ?‘ (spanish opening question mark) fraction glyphs were provided, or fraction were con- fi fi tructed out of a sequence hsuperscript digitihfractioni ff ff hsubscript digiti, where fraction is a special slash to fl fl construct fractions. ffi ffi On the other hand, it is almost impossible to ffl ffl

follow this path with TEXand METAFONT :Thesize There is another important ligature, not shown of the superscripts can be influenced by TEX macros, above: and therefore there is no unique ‘virtual designsize’ hhyphenihhyphenchari gives hhyphenchari. for ready-made superscripts. This allows the implementation of new hyphenation The selection of superscripts offered by com- patterns with hyphenchar ´127 allowing hyphen- mercial vendors is at the moment rather sparse; many ation of words containing explicit hyphens. This often needed ones are lacking. ligature was missing by accident in the September 384 TUGboat, Volume 16 (1995), No. 4

1995 release of dc 1.2, but has been added in patch- dcr1000 European Computer Modern level 1 released in December 1995. roman at 10pt tcr1000 Text companion symbols roman 7 New Names of the Font Files at 10pt Currently, the extended Computer Modern fonts have dcss1728 European Computer Modern sans the prefix dc. This prefix will change to ec with the serif at 17.28pt final release after another round of bug fixing. I dcbx0900 European Computer Modern hope to make the transition from dc to ec in about roman bold extended at 9pt one year. The text companion fonts have the prefix Some remaining fonts come at one size only; tc, which is not subject to change. However, later those are: releases may include more characters and therefore dcssdc10 sans serif demi-bold condensed have different checksums. No characters shall be re- dcsq8 sans serif quotation moved from the tc fonts. dcqi8 sans serif quotation inclined Most of the dc fonts can be generated at any dclq8 latex sans serif quotation size one wants in the range from 5pt to 100pt. For dcli8 latex sans serif quotation inclined each size, a unique name is needed. idclq8 invisible latex sans serif quotation With release 1.2 of the dc fonts, a new, more idcli8 invisible latex sans serif quotation precise naming scheme is in effect. Since there are inclined. The last four fonts are for the slides document class, widely used operating sytems limiting the file name which replaces old SliT X. They contain a special to 8 characters (plus an extension of 3 characters), E version of the capital letter ‘I’. the following scheme is used: 8 Upgrading to ec • The first two letters (either dc or tc)denotethe Here is the following non-official schedule for the up- encoding and the general design of the font. grade from the dc to ec fonts: One intermediate re- lease (1.3) shall come out in spring 1996; the final release of the ec fonts shall be made in autumn 1996. • The following one or two letters denote the fam- Afterwards, the fonts will be frozen and only neces- ily, shape, and series attributes of the font, e.g., sary bug fixes will be applied. r for roman, bx for bold extended, it for italic, or bi for bold extended italic. A complete over- view is given at the end of this section. A The Cork Encoding position description (octal) • The following four digits give the design size in TEX’s points multiplied by 100, e.g., 1000 Accents for lowercase letters denotes ten point, 1440 denotes magstep 2, i.e., 14.4 point, and 0500 denotes five point. 000 grave 001 acute 002 circumflex Here are the implemented styles: 003 tilde Roman family: r roman, b bold, bx bold ex- 004 umlaut tended, sl slanted, bl bold extended slanted, cc 005 hungarian caps and small caps, ti (text) italic, bi bold ex- 006 ring tended italic, u unslanted italic, ci classical serif 007 hachek italic (new design). 010 breve Sans serif family: ss sans serif, si sans serif 011 macron inclined (slanted), sx sans serif bold extended, so 012 dotabove sans serif bold extended oblique (slanted). 013 cedilla Typewriter family: tt typewriter, tc type- 014 ogonek writer caps and small caps, st slanted typewriter, it italic typewriter, vt variable width typewriter. Miscellaneous Various other fonts: bm variant bold roman, 015 single base quote dh dunhill, fb Fibonacci parameters, ff funny, fi 016 single opening guillemet funny italic. 017 single closing guillemet Here are some examples: 020 english opening quotes TUGboat, Volume 16 (1995), No. 4 385

021 english closing quotes 176 ASCII tilde 022 basequotes 177 hyphenchar (hanging) 023 opening guillemets 024 closing guillemets Letters for eastern European languages (from Latin-2) 025 en dash 026 em dash 200 capital letter 027 compound word mark (invisible) 201 capital letter A with ogonek 030 perthousandzero 202 capital letter C with acute 031 dotless i 203 capital letter C with hachek 032 dotlessj 204 capital letter D with hachek 033 ligatureff 205 capital letter E with hachek 034 ligaturefi 206 capital letter E with ogonek 035 ligaturefl 207 capital letter G with breve 036 ligatureffi 210 capital letter L with acute 037 ligatureffl 211 capital letter L with hachek 040 visible space 212 capital letter crossed L 213 capital letter N with acute ASCII 214 capital letter N with hachek 215 capital letter Eng 041 exclamation mark 216 capital letter O with hungarian double acute 042 straight quotes 217 capital letter R with acute 043 hash mark 220 capital letter R with hachek 044 dollar sign 221 capital letter S with acute 045 percentsign 222 capital letter S with hachek 046 ampersand 223 capital letter S with cedilla 047 apostrophe 224 capital letter T with hachek 050 opening parenthesis 225 capital letter T with cedilla 051 closing parenthesis 226 capital letter U with hungarian double acute 052 asterisk 227 capital letter U with ring 053 plus sign 230 capital letter Y with diaeresis 054 comma 231 capital letter Z with acute 055 hyphen (note: not minus sign) 232 capital letter Z with hachek 056 fullstop 233 capital letter Z with dot 057 solidus 234 capital letter IJ 060 digit0 235 capital letter I with dot ... 236 lowercase letter d with bar 071 digit9 237 sectionsign 072 colon 240 lowercase letter a with breve 073 semicolon 241 lowercase letter a with ogonek 074 less than sign 242 lowercase letter c with acute 075 equals sign 243 lowercase letter c with hachek 076 greater than sign 244 lowercase letter d with hachek 077 question mark 245 lowercase letter e with hachek 080 commercial at 246 lowercase letter e with ogonek 081 capital letter A 247 lowercase letter g with breve ... 250 lowercase letter l with acute 132 capital letter Z 251 lowercase letter l with hachek 133 opening square bracket 252 lowercase letter crossed l 134 backslash 253 lowercase letter n with acute 135 closing square bracket 254 lowercase letter n with hachek 136 ASCII circumflex 255 lowercase letter eng 137 underscore 256 lowercase letter o with hungarian double acute 140 opening quote (not ASCII grave!) 257 lowercase letter r with acute 141 lowercase letter a 260 lowercase letter r with hachek ... 261 lowercase letter s with acute 172 lowercase letter z 262 lowercase letter s with hachek 173 opening curly brace 263 lowercase letter s with cedilla 174 verticalbar 264 lowercase letter t with hachek 175 closing curly brace 265 lowercase letter t with cedilla 386 TUGboat, Volume 16 (1995), No. 4

266 lowercase letter u with hungarian double acute 355 lowercase letter i with acute 267 lowercase letter u with ring 356 lowercase letter i with circumflex 270 lowercase letter y with diaeresis 357 lowercase letter i with diaeresis 271 lowercase letter z with acute 360 lowercase letter edh 272 lowercase letter z with hachek 361 lowercase letter n with tilde 273 lowercase letter z with dot 362 lowercase letter o with grave 274 lowercase letter ij 363 lowercase letter o with acute 275 spanish inverted exclamation mark 364 lowercase letter o with circumflex 276 spanish inverted question mark 365 lowercase letter o with tilde 277 poundsign 366 lowercase letter o with diaeresis 367 lowercase letter Letters for western European languages (from Latin-1) 370 lowercase letter o with slash 371 lowercase letter u with grave 300 capital letter A with grave 372 lowercase letter u with acute 301 capital letter A with acute 373 lowercase letter u with circumflex 302 capital letter A with circumflex 374 lowercase letter u with diaeresis 303 capital letter A with tilde 375 lowercase letter y with acute 304 capital letter A with diaeresis 376 lowercase letter thorn 305 capital letter A with ring 377 lowercase letter sharp s (deviating from 306 capital letter Latin-1) 307 capital letter C with cedilla 310 capital letter E with grave 311 capital letter E with acute 312 capital letter E with circumflex 313 capital letter E with diaeresis B The Text Companion Encoding 314 capital letter I with grave position description 315 capital letter I with acute (octal) 316 capital letter I with circumflex 317 capital letter I with diaeresis Accents for capital letters 320 capital letter Edh (D with bar) 321 capital letter N with tilde 000 grave 322 capital letter O with grave 001 acute 323 capital letter O with acute 002 circumflex 324 capital letter O with circumflex 003 tilde 325 capital letter O with tilde 004 umlaut 326 capital letter O with diaeresis 005 hungarian 327 capital letter OE 006 ring 330 capital letter O with slash 007 hachek 331 capital letter U with grave 010 breve 332 capital letter U with acute 011 macron 333 capital letter U with circumflex 012 dotabove 334 capital letter U with diaeresis 013 cedilla 335 capital letter Y with acute 014 ogonek 336 capital letter Thorn 337 capital letter Sharp S (deviating from Miscellaneous Latin-1) 340 lowercase letter a with grave 015 base single straight quote 341 lowercase letter a with acute 022 base double straight quotes 342 lowercase letter a with circumflex 025 twelve u dash 343 lowercase letter a with tilde 026 three quarters emdash 344 lowercase letter a with diaeresis 030 left pointing arrow 345 lowercase letter a with ring 031 right pointing arrow 346 lowercase letter ae 032 tie accent (lowercase) 347 lowercase letter c with cedilla 033 tie accent (capital) 350 lowercase letter e with grave 040 blanksymbol 351 lowercase letter e with acute 044 dollar sign 352 lowercase letter e with circumflex 047 straight quote 353 lowercase letter e with diaeresis 052 centered star 354 lowercase letter i with grave 057 fraction TUGboat, Volume 16 (1995), No. 4 387

Oldstyle digits Symbols from ISO 8859-1 (Latin-1) 060 oldstyle digit 0 242 cent 061 oldstyle digit 1 243 sterling 062 oldstyle digit 2 244 currencysign 063 oldstyle digit 3 245 yen 064 oldstyle digit 4 246 broken vertical bar 065 oldstyle digit 5 247 sectionsign 066 oldstyle digit 6 250 high dieresis 067 oldstyle digit 7 251 copyright 070 oldstyle digit 8 252 feminine ordinal indicator 071 oldstyle digit 9 254 logicalnot 256 circled R Miscellaneous 257 macron 260 degreesign 115 mhosign 261 plus-minus sign 117 bigcircle 262 superscript 2 127 ohmsign 263 superscript 3 136 arrowup 264 tick(ASCII-style acute) 137 arrowdown 265 micro sign 140 backtick(ASCII grave) 266 pilcrow sign 142 born 267 centered dot 144 died 271 superscript 1 154 leaf 272 masculine ordinal indicator 155 married 274 fraction one quarter 156 musicalnote 275 fraction one half 176 low tilde 276 fraction three quarters 177 shortequals 326 multiplication sign (times) 366 division sign TS1-symbols

200 ASCII-style breve 201 ASCII-style hachek ⋄ 202 double tick (ASCII double acute) Jörg Knappen 203 double backtick Barbarossaring 43 204 dagger D-55118 Mainz 205 ddagger Germany 206 double vert Email: [email protected]. 207 perthousand uni-mainz.de 210 bullet 211 centigrade 212 dollaroldstyle 213 centoldstyle 214 florin 215 colon 216 won 217 naira 220 guarani 221 peso 222 lira 223 recipe 224 interrobang 225 gnaborretni 226 dong sign 227 trademark 388 TUGboat, Volume 16 (1995), No. 4

graphic objects programmed using METAFONT can Graphics be further processed by these programs. It should be stressed that it not the idea of

employing METAFONT to produce PostScript code that is important here. A much better tool for A METAFONT–EPS interface

this purpose is J.D. Hobby’s METAP OST.Itis Boguslaw Jackowski possibile to further process the objects generated

by MFTOEPS that makes this package worthy of Do not explain too much. mention. W. Strunk Jr. and E. B. White,

Overview of the MFTOEPS package The Elements of Style The MFTOEPS.MF program contains the definitions Introduction of the following macros which are meant to be used for generating EPS files: TEX is not a lion, TEX is an octopus...This sounds like heresy, but it is my deepest conviction that one eps_mode_setup fix_line_width write_preamble fix_line_join of the most wonderful features of the TEX/ META- write_postamble fix_line_cap FONT system is its openness, i.e., the capability of collaboration with other systems. Hence the find_BB fix_miter_limit association with an octopus: set_BB fix_dash fill_C fix_fill_cmyk draw_C fix_draw_cmyk clip_C Obviously, not all possibilities of PostScript are exploited, but the main idea was to provide a simple tool for producing output “eatable” by programs which are not PostScript interpreters. Therefore only a small subset of the PostScript language can be taken into account. Nevertheless, these 15 commands are enough to produce an innumerable

variety of graphic objects. MFTOEPS METAFONT programs using have the following structure: 1. input mftoeps; The paper illustrates this statement by pre- 2. eps_mode_setup; % instead of mode_setup

3. h METAFONT code i senting a brief description of an interface for META-

4. find_BB h list of paths i; MFTOEPS FONT-to-PostScript, . The kernel of the 5. write_preamble jobname; package is a METAFONT program (MFTOEPS.MF) which provides necessary definitions for translating 6. h METAFONT code containing fill_C, draw_C, clip_C,etc.i the description of graphic objects from METAFONT to PostScript. The PostScript code is written to 7. write_postamble; a log file. It can be extracted from the log file 8. end. either manually or with the help of additional util- The structure seems straightforward, except for ities. There are two programs in the package for some notational details which will be explained in a performing this task: an AWK program and a TEX moment. Perhaps only the fourth line needs a few program, the latter a bit slower but more universal. remarks. A properly formed EPS file should contain The PostScript files (specifically, Encapsulated the coordinates of the corners of the bounding box

PostScript files) produced by MFTOEPS are read- in a comment line at the beginning of the file. able by some popular graphics programs, namely, by Macro write_preamble needs to know the respec- Adobe Illustrator (Macintosh and PC compatibles), tive coordinates, as it is responsible for generating CorelDraw! (PC compatibles), and Fontographer the header of an EPS file. Macro find_BB simply (Macintosh and PC compatibles). In other words, prepares the data for write_preamble. TUGboat, Volume 16 (1995), No. 4 389

As you can see, using the plain beginchar Remarks: and endchar commands is not essential, although This command ends the writing of the PS code,

usually it is convenient to make use of them. switches METAFONT back to errorstopmode,and performs necessary “last minute” actions (see be- low).

Synopsis of the interface of the MFTOEPS package Commands: set_BB find_BB reset_BB Conventions: In the following I shall use the words Usage: number, pair, string,andpath as abbreviations for set_BB h four numbers or two pairs numeric expression, pair expression, string expres- separated by commas i; sion,andpath expression, respectively. The angle find_BB h a list of paths separated by commas i; brackets, h and i, used for marking parameters reset_BB; of macros, are “meta-characters,” i.e., they do not Remarks:

belong to the METAFONT code. The commands set_BB or find_BB should be in- Command: voked prior to invoking write_preamble. set_BB eps_mode_setup sets the coordinates of the corners of the bounding Usage: box of a graphic object; it is useful when the bound- eps_mode_setup h an optional number (0 or 1) i; ing box of a graphic object is known in advance or Remarks: if it is required to force an artificial bounding box. This command should be used instead of the usual find_BB computes the respective bounding box for a mode_setup command. The forms eps_mode_setup list of paths; if several find_BB statements are used, and eps_mode_setup 1 are equivalent. One of them the common bounding box is calculated for all paths (preferably the former) should be used for normal that appear in the arguments. The result is stored in processing, i.e., for generating EPS files. Invoking the variables xl_crd, yl_crd, xh_crd,andyh_crd. eps_mode_setup 0 is meant primarily for testing There are two functions, llxy and urxy, return- purposes and is supposed to be used by experienced ing pairs (xl_crd,yl_crd) and (xh_crd,yh_crd), programmers who know what they are doing. There respectively. The last command, reset_BB,makes is a string variable, extra_eps_setup, similar to xl_crd, yl_crd, xh_crd,andyh_crd undefined extra_mode_setup; at the end of eps_mode_setup (the initial situation); reset_BB is performed by the command scantokens extra_eps_setup is in- the write_postamble macro, which is convenient voked, enabling user-oriented adjustments, e.g., in the case of generating several EPS files in a single changing the default resolution. METAFONT run. Command: Commands: write_preamble fill_C draw_C Usage: Usage: write_preamble h string i; fill_C h a list of paths separated by commas i; Remarks: draw_C h a list of paths separated by commas i; Remarks: This command initializes the process of writing the PostScript code. The string expression is These commands are to be used instead of the the name (without extension) of the resulting EPS usual METAFONT fill and draw ones. They cause a list of paths followed by the PostScript file; the extension is always EPS. METAFONT is switched to batchmode in order to avoid slowing operation eofill (fill_C)orstroke (draw_C)to down the process by writing mess(ages) to the be translated to a PostScript code. The list of paths terminal. Inspection of the log file is thus highly constitutes a single curve in the sense of PostScript. recommended. Command: Command: clip_C write_postamble Usage: Usage: clip_C h a list of paths separated by commas, write_postamble; possibly empty i; 390 TUGboat, Volume 16 (1995), No. 4

Remarks: Remarks: The macro clip_C with a non-empty parameter These commands define the colours of the in- works similarly to the fill_C command, except that teriors of graphic objects (fix_fill_cmyk)and the eoclip operator is issued instead of eofill. colours of outlines (fix_draw_cmyk) using the cyan- This causes an appropriate change to the current magenta-yellow-black model (the basic model of the

clipping area. According to PostScript’s principles, MFTOEPS package). They should be used after the resulting area is a set product of the current write_preamble (because write_preamble defines clipping area and the area specified in the argument the black colour as a default for both macros) and of the eoclip command. The empty parameter prior to invoking the corresponding fill_C and marks the end of the scope of the most recent clip_C draw_C commands. There are also (just in case) command with a non-empty parameter. In other macros fix_fill_rgb and fix_draw_rgb using red- words, nested clip_C commands form a “stack” green-blue model; the argument to both of these structure. If needed, the appropriate number of macros is a triple of numbers. (The user can control parameterless clip_C commands is issued by the the process of conversion from RGB to CMYK by write_postamble macro, thus the user does not the redefinition of macros under_color_removal need to worry about it. Warning: files produced and black_generation.) The numbers forming the using clip_C are interpreted properly by Adobe arguments of the macros are supposed to belong to Illustrator (provided path directions are defined the interval [0...:1]. properly) but not by CorelDraw! (ver. 3.0). Besides the fifteen basic macros there are two Commands: functions and two control variables that may be of

fix_line_width fix_line_join some interest for a virtual user of the MFTOEPS fix_line_cap fix_miter_limit package: fix_dash Additional functions: Usage: pos_turn neg_turn fix_line_width h a non-negative number Usage: (dimension) i; pos_turn (h path i) fix_line_join ; h anumber(0,1or2)i neg_turn (h path i) fix_line_cap h anumber(0,1or2)i; Remarks: fix_miter_limit h anumber≥ 1 i; fix_dash (h a list of numbers (dimensions) Each function returns the path passed as the separated by commas, argument, except that the orientation of the possibly empty i) path is changed, if necessary: pos_turn returns h a number (dimension) i paths oriented counter-clockwise, neg_turn — ori- Remarks: ented clockwise. This may be useful for creating pictures which are to be processed further by Adobe These command are to be used in connection with Illustrator, because this program is sensitive to the the draw_C command. fix_line_width fixes the orientation of paths. thickness of the outline. The other four commands correspond to PostScript operations setlinejoin, Control variable: setlinecap, setmiterlimit,andsetdash (see yeseps the PostScript Language Reference Manual for Remarks: details). All commands should be used after No EPS file will be generated unless the variable write_preamble,aswrite_preamble sets the de- yeseps is assigned a definite value. It is advis- fault thickness (0.4pt), default line join (0), default able to set this variable in a command line (see line cap (0), default miter limit (10), and a solid section “Examples”). line as a default for stroking (fix_dash () 0). Control variable: Commands: testing fix_fill_cmyk fix_draw_cmyk Remarks: Usage: If the variable testing is assigned a definite value, fix_fill_cmyk h four numbers separated the whole PostScript code is flushed to the termi- by commas i; nal, thus slowing down significantly the process of fix_draw_cmyk h four numbers separated generating an EPS file (cf. the description of the by commas i; write_preamble command). TUGboat, Volume 16 (1995), No. 4 391

Examples PROGS), which — perhaps after slight adjustments — can be used for this task. It is enough to write All sample programs in this section are presented m2e rectan in extenso. The reader is not supposed to study the (no extension, please) from the command line in code thoroughly. Nevertheless, I prefer to leave the order to obtain the required RECTAN.EPS file. The reader to decide which parts of the code are to be batch makes use of AWK for extracting the Post- skipped. Script code from the log file. There is also an Let us start with a trivial example of a “pure” alternative batch, M2E-ALT.BAT, that employs TEX METAFONT program:

for this purpose. In both batches METAFONT is 1. beginchar(48, % ASCII code called in the following way: 2. 2cm#, % width mf386 &plain \yeseps:=1; input %1 3. 1cm#, % height Observe the assignment yeseps:=1. In fact, as- 4. 0cm# % depth signing a definite (arbitrary) value to the yeseps 5. ); variable triggers the action of generating an EPS 6. fill unitsquare xscaled w yscaled h; file. 7. endchar; I hope that making scripts for other operating 8. end. systems is not found to be extremely difficult. The program, obviously, generates a font I would be very much obliged if others could containing one character: a darkened rectangle contribute such scripts to the package. 2cm×1cm. In order to generate an EPS file con- Let us consider now a more complex example. taining the same figure, a few modifications are Suppose that the file POLYGON.MF contains the necessary: following definitions: 1. vardef regular_polygon(expr n) = 1. input mftoeps; 2. % n is the number of vertices; 2. eps_mode_setup; 3. % the diameter of the circumscribed 3. beginchar(48, % just something 4. % circle is equal to 1, its centre 4. 2cm#, % width 4. % is in the origin 5. 1cm#, % height 5. (up % first vertex 6. 0cm# % depth 6. for i:=1 upto n-1: 7. ); 7. -- % next vertices: 8. set_BB 0,-d,w,h; % coordinates 9. (up rotated (i*(360/n))) 9. % of the corners 9. endfor 10. % of the bounding box 10. -- cycle) scaled .5 11. write_preamble "rectan"; 11. enddef; 12. fill_C unitsquare xscaled w yscaled h; 12. vardef flex_polygon(expr n,a,b) = 13. write_postamble; 13. % n is the number of vertices, 14. endchar; 14. % a, b are the angles (at vertices) 15. end. 15. % between a tangent to a ‘‘flex side’’ Four new commands have appeared: eps_mode_ 16. % and the corresponding secant setup, set_BB, write_preamble and write_post- 17. save zz; amble; moreover, fill has been replaced by fill_C. 18. pair zz[ ]; % array of vertices This is a usual routine for converting an “ordinary” 19. for i:=0 upto n-1:

METAFONT program to a form suitable for generat- 20. zz[i]:=up rotated (i*(360/n)); ing EPS files. Obviously, draw should be replaced by 21. endfor draw_C,andfilldraw —with the two operations 22. (zz[0] {(zz[1]-zz[0]) rotated a} fill_C and draw_C. In the latter case the order of 23. for i:=1 upto n-1: the operations fill_C and draw_C is significant if 24. .. {(zz[i]-zz[i-1]) rotated b} the drawing and filling colours are different. 25. zz[i] Having made this change you can easily gener- 26. {(zz[(i+1) mod n]-zz[i]) rotated a} ate the respective EPS file, provided you are a DOS 27. endfor user. Assume that the modified program is stored 28. .. {(zz[0]-zz[n-1]) rotated b} cycle)

in the file RECTAN.MF. In the package MFTOEPS 29. scaled .5 you will find a DOS batch, M2E.BAT (subdirectory 30. enddef; 392 TUGboat, Volume 16 (1995), No. 4

The first function, regular_polygon, returns a closed path that is — as the name suggests — a regular polygon with a given number of vertices. The second function, flex_polygon, returns a curve that is in a sense a “generalized polygon” — the following examples show why this epithet is appropriate:

So far the examples have contained fill_C and draw_C commands with arguments being single

paths. PostScript, in contrast to METAFONT, 1 2 3 accepts groups of paths as a single curve. Therefore the fill_C and draw_C commands were defined to

accept the lists of METAFONT paths as arguments. In the resulting PostScript code they constitute 4 5 a single object. The main reason is that such objects may contain transparent holes. This enables The first picture was generated by the following achieving such effects as: program: It is a transparent hole. 1. input polygons; It is a transparent hole. 2. input mftoeps; It is a transparent hole. 3. eps_mode_setup; It is a transparent hole. 4. beginchar(0,16mm#,16mm#,0); It is a transparent hole. 5. path P[ ]; % ‘‘room’’ for two polygons 6. % preparing: The graphic object was generated by the fol- 7. P[1]:=regular_polygon(7) lowing simple program: 8. scaled w shifted (.5w,.5h); 1. input mftoeps; eps_mode_setup; 9. P[2]:=flex_polygon(7,0,0) 2. w#=4cm#; h#=2cm#; define_pixels(w,h); 10. scaled w shifted (.5w,.5h); 3. set_BB origin, (w,h); 11. % exporting: 4. write_preamble jobname; 12. find_BB P[1], P[2]; 5. % 25 percent of black for filling: 13. write_preamble jobname; 6. fix_fill_cmyk 0,0,0,.25; 14. % 25 percent of black for filling: 7. fix_line_width 1pt; 15. fix_fill_cmyk 0,0,0,.25; 8. for oper:="draw_C", "fill_C": 16. fix_line_width 1pt; 9. scantokens oper 17. fill_C P1; draw_C P2; 10. % outer edge: 18. write_postamble; 11. fullcircle 19. endchar; 12. xscaled w yscaled h 20. end. 13. shifted (.5w,.5h), 14. % inner edge: The remaining four figures can be obtained by 15. reverse fullcircle simple modifications of line 9 of the program: 16. xscaled .7w yscaled .7h P[2]:=flex_polygon(7,-180/7,180/7) % 2 17. shifted (.5w,.5h); P[2]:=flex_polygon(7,45,45) % 3 18. endfor P[2]:=flex_polygon(7,-45,45) % 4 19. write_postamble; P[2]:=flex_polygon(7,45,-45) % 5 20. end. These fairly trivial objects can be used to One innocent trick was used in order to shorten

achieve some rather non-trivial effects (METAFONT the code: the loop in the combination with the

sources are included in the MFTOEPS package): scantokens command (lines 8 and 9). It is advisable to have paths that form transparent holes appropriately oriented — therefore the opera- tor reverse is used in line 15. A TEXcodefor obtaining the above figure is obvious: it is enough TUGboat, Volume 16 (1995), No. 4 393

to put the picture on top of a text box, using, for 18. 0 for q:=1 upto N-1: , 3^q-1 endfor: example, the \llap command. 19. % i.e.: 20. % ‘‘for n:=0, 3^1-1, ..., 3^(N-1)-1:’’ Removing the command fix_fill_cmyk (line 6) 21. path p[], q[]; D:=1/3D; k:=-1; and replacing the command fill_C (line 8) by 22. for i:=0 upto n: for j:=0 upto n: clip_C gives the opportunity to obtain yet another 23. k:=k+1; effect: 24. p[k]=unitsquare scaled D It is a clipped text. 25. shifted_accordingly(i,j,n,D); It is a clipped text. 26. q[k]=reverse unitsquare scaled 1/3D It is a clipped text. 27. shifted (1/3D,1/3D) It is a clipped text. 28. shifted_accordingly(i,j,n,D); In this case, however, the TEX code is somewhat 29. endfor; endfor; complicated, since macros for inclusion of an EPS file 30. clip_C p0, q0 (I use Tomas Rokicki’s EPSF.TEX) embed the code 31. for i:=1 upto k: of the EPS fileintoaPostScriptsave–restore 32. , p[i], q[i] group. A clipping path is subjected to such a 33. endfor; grouping, contrary to the state of the currently 34. endfor; painted picture. Therefore some \special hackery 35. fill_C unitsquare scaled w; is needed (the respective TEX source is included 36. write_postamble;

with samples in the MFTOEPS package). 37. endfor; The distinction between single and multiple 38. % --- paths in the context of drawing outlines (draw_C) 37. end. is meaningless. The program is lengthy mainly because of The final example shows how to use clipping to technical details that are not especially interesting; generate a geometric figure known as “Sierpi´nski’s however, there are three points worthy of comment. carpet”. In order to construct the “carpet” you First, observe that a couple of EPS files are produced

start with a square with a central hole; this hole in one METAFONT run (the loop in line 13 is relevant is a square with each edge one-third the length of here); second, loops are used to form arguments to the edge of the original square. Now you divide the loop in line 18 and to the clip_C command in

the original figure into nine squares and replace all line 30—it is a very useful feature of METAFONT filled small squares with a copy of the square with that loops behave exactly like macros; and third, the central hole, scaled down to fit the area of the observe that the operation fill_C is used only once. small square. Then you apply the same procedure The resulting EPS files are shown in the following to the smaller squares, an so on, ad infinitum. picture: Here you have the program accomplishing this task (infinity “equals” three): 1. input mftoeps; eps_mode_setup; 2. % --- 3. def ^ = ** enddef; % syntactic sugar 4. primarydef i //n=%ditto You may argue that such a figure can be 5. (if n=0: 0 else: i/n fi) generated easily in a simpler way, without clipping. 6. % why not to divide by 0? True, yet I like this approach — can you imagine a 7. enddef; straightforward method for generating a “circular 8. def shifted_accordingly(expr i,j,n,D)= carpet” without clipping? Moreover, one can use 9. shifted ((i//n)[0,w-D],(j//n)[0,w-D]) 10. enddef; 11. % --- 12. w#=16mm#; h#=16mm#; define_pixels(w,h); 13. for N:=1,2,3: % 4, 5, 6, ..., infinity 14. set_BB 0,0,w,h; clipping in more complicated situations, not only 15. write_preamble jobname & decimal(N); for filling. But, on the other hand, finding the 16. D:=3w; precise bounding box for a clipped figure becomes 17. for n:= a non-trivial task. You must remember, moreover, 394 TUGboat, Volume 16 (1995), No. 4

that clipping consumes a lot of the resources of a PostScript interpreter, thus it should be used with great care.

Final remarks Note that routines for finding the outline of a

The MFTOEPS package was not devised as a com- set union or a set intersection of a group of graphic

petitor to such giants as Adobe Illustrator or objects are not MFTOEPS-oriented. A package CorelDraw!. On the contrary, it can be regarded providing tools for programming such operations, as their little ally. Interactive programs don’t cope ROEX, is already available. Perhaps it is most

particularly well with tasks that bear logical struc- useful in the context of exporting to EPS, however, METAFONT ture.InsuchcasesMETAFONT —with its wealth it can be used with plain ,and—I

of programmable path operations, absent “by defi- guess — with METAP OST as well. nition” from the menus of interactive programs — is Universal routines of this kind are important certainly a preferable tool. from the point of view of the openness of the

One of the advantages of the applied approach TEX/ METAFONT system, and its openness — as was is its portability—the only software needed is already mentioned — is one of the most powerful

METAFONT and either AWK or TEX. Another features of the system.

advantage is its flexibility. It is not particularly Note also that the openness of a system con- MFTOEPS difficult to modify the MFTOEPS package to pro- cerns both output and input. accom- duce another PostScript dialect, if for some reason plishes the first part of the conjunction, but one

the dialect of Adobe Illustrator is inconvenient. can think also about an export from PostScript METAFONT MFTOEPS can also be modified to produce out- to . A package accomplishing this task, put in other lingos, e.g., HP-GL (Hewlett-Packard PS_CxONV, has been recently released as a public Graphic Language). domain contribution. Its kernel is a converter, There is still a lot of work to be done. Of course, written in PostScript and using the Ghostscript every program can be improved, but perhaps more interpreter of PostScript, which translates a gen-

important would be preparing a library of META- eral PostScript code into a canonical EPS form

FONT routines useful for creating objects with a (there exists a similar program in the standard vector representation. Ghostscript distribution, namely, PS2AI, written For example, it would be convenient to have a by Jason Olszewski, but it does not fit this par- procedure which, for a given set of graphic objects ticular problem); the result of such a conversion

finds a single curve (outline) filling of which would can be translated to a METAFONT program using

give the same optical result. In other words, such the AWK-based utility, EPSTOMF, also recently re- a procedure would perform the task of finding leased into the public domain. This would complete

an outline for a set union of graphic objects. a link between METAFONT and PostScript. I do Such a procedure is known as removing overlaps. believe that providing such links is one of the most The example of the “circular carpet” (see above) efficient routes towards a limitless development of illustrates a similar problem: to find an outline for the TEX/ METAFONT system. a set intersection of a group of graphic objects. If the carpet is generated using clipping, the Glossary PostScript file contains, in fact, the following ele- AWK: a simple yet powerful batch text processor. ments: Bounding box: the smallest rectangle surrounding the glyph of a picture; coordinates of its lower left and upper right corners (in big points) should appear in a structural comment in a header of an EPS file. EPS file: Encapsulated PostScript file; a single-page They are partially invisible because of clipping, EPS still they are there. In some contexts, e.g., if the PostScript document; the purpose of the figure is to be cut on a cutting plotter, it is crucial file is to be included (“encapsulated”) as a part of other PostScript programs and to exchange to replace such a multiplicity of objects by a single object: graphic data among applications. Even-odd rule: a rule that specifies the interior of a (multiple) path in the following way: if TUGboat, Volume 16 (1995), No. 4 395

for a given point and for any ray drawn from this point to infinity, the number of intersection points of the ray and the path is odd, the point is inside; if the number is even, the point is outside; command eofill and eoclip operators follow this rule. Path orientation: nodes of a closed single path are ordered; if traversing a path following the order of its nodes results in a counter-clockwise turn(s), the path is positively oriented, if it results in a clockwise turn(s), its orientation is negative; the number of turns (signed) is called a

turningnumber(METAFONT) or a winding num- ber (PostScript); the operators fill and clip make use of a winding number, the operators eofill and eoclip ignore it.

Availability EPSTOMF The packages MFTOEPS, and PS_CONV can be found at ftp.pg.gda.pl in the directories /pub/TeX/GUST/contrib/MF-PS/MFTOEPS /pub/TeX/GUST/contrib/MF-PS/EPSTOMF /pub/TeX/GUST/contrib/PS/PS_CONV

References [1] Adobe Systems Inc. PostScript Language Refer- ence Manual. Reading, Mass.: Addison-Wesley, 1991. [2] Aho, A.V., B.W. Kernighan, P.J. Weinberger. The AWK Programming Language, Reading, Mass.: Addison-Wesley, 1988.

[3] Jackowski, B., M. Ry´cko. “Labyrinth of META-

FONT paths in outline.” Proceedings of the Eighth European TEX Conference (Sept. 26–30, 1994, Gda´nsk, Poland), pages 18–32.

[4] Knuth, D.E. The METAFONTbook. Reading, Mass.: Addison-Wesley, 1992. D. E. Knuth:

The METAFONTbook, Addison-Wesley, 1992.

⋄ Bogus law Jackowski BOP s.c., Gda´nsk, Poland TUGboat, Volume 16 (1995), No. 4 395

Technical Working Group Reports

A proposed standard for specials Tomas G. Rokicki Introduction This note presents the current state of the draft standard, as presented by the author and Michael Sofka at the standards session at TUG’95. 1 Identifying syntax Standard specials shall be syntactically identified by beginning with a colon (‘:’). All specials beginning with a colon shall follow the guidelines established here. Any special beginning with a colon, followed by an agreed keyword with agreed semantics, shall be interpreted according to the rules set out in this document and according to the agreed semantics of that keyword. Any special beginning with two consecutive col- ons shall be considered an experimental special. It will be interpreted following the syntax and scoping semantics specified in this document, but individual drivers are free to interpret these specials however they wish. This convention allows experimentation with specials in conjunction with the scoping mech- anism described here. 2Syntax Standard specials shall consist of a sequence of the 95 printable ASCII characters plus the tab charac- ter. Tabs will always be interpreted as spaces. Each standard special shall begin with a colon, optionally followed immediately by another colon. Following this shall be a sequence of elements separated by whitespace. Whitespace is also allowed between the colon (or optional colon) and the first element. Whitespace shall consist of any number of tab or space characters. The elements shall fall in the following cate- gories: symbol, keyword, key/value pair. We also define the syntax of numbers, dimen- sions, and lists, for convenience. A symbol is any sequence of characters. If the symbol consists of only the 95 printable ASCII char- acters, and does not contain a double quote, equals sign, space, tab, backslash, or comma, it can be 396 TUGboat, Volume 16 (1995), No. 4

specified by the sequence of characters that com- as an ideal model for the driver writer, and its se- prise it; when a symbol is so specified, it is called mantics should form a base on which more complex a simple symbol. Otherwise, it can be specified by scoping rules can be built. enclosing the exact characters in a pair of double In this section, we describe how flat DVI files are quotes. Any double quote or backslash within the interpreted. At the minimum, each driver should be symbol must be preceded by a backslash. When a capable of handling flat DVI files. symbol is specified through the use of double quotes, AflatDVI file is one that can be processed it is a quoted symbol. (with respect to specials) with no prescanning or A keyword is a simple symbol. preprocessing. Each special is located syntactically A number is a simple symbol that consists of where it belongs semantically. In addition, assum- an optional negative sign followed by a sequence of ing the beginning of the first page has been scanned at least one digit, with one optional period (‘.’) in- for document global specials, each page can be pro- cluded in the sequence of digits. cessed and reprocessed independently of any other A dimension is a symbol that obeys the rules and in random order, skipping arbitrary sequences of a number except that it is followed immediately of pages. Thus, a flat DVI file is ideal for quick (with no intervening whitespace) by one of the fol- browsing and previewing. lowing pairs of characters: ‘bp’, ‘cm’, ‘dd’, ‘in’, ‘mm’, ‘pc’, ‘pt’, ‘sp’. 3.1.1 Object specials An equals sign shall appear only as part of a The first category of specials, called object specials, quoted symbol, or to separate a keyword and some is those specials that themselves render objects to other symbol forming a key/value pair. the page, but do not affect the rendering of other A list is a sequence of symbols separated by objects. One such example is a special that indicates commas with no intervening whitespace. that a particular graphical figure should be rendered Figure 1 gives a BNF formulation for standard at a particular location on the page. specials. Square brackets enclose optional compo- All object specials shall begin with the keyword nents. Quotes enclose literal characters. Parenthe- ‘object’. ses group. Angle brackets enclose nonterminals. An Object specials take several implicit parameters asterisk represents zero or more occurrences; a plus that affect how they are rendered. These implicit sign indicates at least one and possibly more occur- parameters include the current DVI location on the rences. Vertical bars indicate choice. page, and the DVI magnification. In general, case is significant in specials. Unless otherwise specified for a particular ob- ject special, all object specials shall be interpreted 3 Specials scoping and infrastructure such that their lower left-hand corner is rendered Specials exist in the DVI file as just another sequen- at the current DVI location. In addition, all object tial command. Yet, often we desire a special to have specials shall be scaled by the DVI magnification in a scope. One use of specials is to modify the way effect. certain commands in the DVI file are interpreted. Object specials cannot take the optional scop- For instance, a special might indicate that all subse- ing keywords described in section 3.2. quent characters until an overriding special shall be The initial syntax for object specials is as fol- rendered in a specific color. Another special might lows: indicate that a certain set of pages is to be printed on different media. Yet a third special might indicate that the background color of the entire document := ’:’ [’:’] ’object’ should be mauve. For this reason, we are introducing standard 3.1.2 Attribute specials scoping semantics for standard specials. The second category of specials is attribute specials. These specials affect the way the page is rendered. 3.1 Flat DVI files Normally, an attribute special affects the rendering Ideally, scoping could always be handled simply by state for subsequent DVI commands until overridden placing an appropriate special at the beginning and by another attribute special that affects the same end of each scoped region, and no further action rendering attribute. We shall discuss how our scop- would need to be taken. For various reasons, as we ing mechanism can change these rules in section 3.2. shall describe, this is not always possible or conve- All attribute specials begin with the keyword nient. Nonetheless, such a ‘flat’ scoping would serve ‘attribute’. TUGboat, Volume 16 (1995), No. 4 397

:= ’:’ [’:’] [] ( )+ := | := (tab | ’ ’)+ := := [’=’ ] := | := (’,’ )* := | := ()+ := ’"’ ()* ’"’ := | ’\’ ’\’ | ’\’ ’"’ := [’-’] ()+ [. ()*] | [’-’] . ()+ := := ’bp’ | ’cm’ | ’dd’ | ’in’ | ’mm’ | ’pc’ | ’pt’ | ’sp’

Figure 1:ABNF grammar for specials

One interesting case should be mentioned here. the time the DVI driver sees the special, it has prob- In a flat DVI file, it is possible for an attribute spe- ably already rendered the header, so it may be diffi- cial to contain the scoping keyword ‘pop’. If the cult or inconvenient to change the background color ‘attribute’ keyword in a flat DVI file is followed of the sheet at this point. immediately by the keyword ‘pop’, then that cor- Another example is when a colored paragraph is responding attribute in the rendering state is set broken across a page boundary, and the DVI driver (back) to its initial state. (This is necessary be- wishes to render only the second page, without scan- cause, when flattening scoped specials, the initial ning the first page. In the absence of specials, this state might not be known for all attributes; this pro- is easily done. However, if there is only a single spe- vides a convenient way to access that default initial cial specifying the red color at the beginning of the value.) paragraph (on page one), there is no indication in The initial syntax for attribute specials is as page two that the color should still be red. follows: As a final example, consider the use of nested := ’:’ [’:’] attribute specials. One word in a blue paragraph ’attribute’ is to be colored green. The special at the end of ( )* the green word indicates that the ‘previous’ color := ’push’ | ’pop’ state should be restored. In this case, the special | ’page’ | ’global’ at the beginning of the paragraph, indicating that the paragraph should be blue, is also semantically 3.2 Scoped specials visible at the end of the green word. Sometimes a special must occur at a syntactic loca- The scoping rules we introduce in this section tion different from where it semantically affects the introduce a scoping mechanism, and define how spe- rendering state. One example of this is where an at- cials that use this mechanism, and thus cause a DVI tribute affecting the background color of the paper is file to be scoped (rather than flat), can be trans- specified as part of the running text of a document, formed into flat specials for easier rendering. in a document with headers. Normally, this spe- cial will follow the headline in the DVI file, because TEX’s output routine typically ships the header be- fore the whatsits attached to the body text. So by 398 TUGboat, Volume 16 (1995), No. 4

3.2.1 Stacks Note that there is no predefined correlation be- The first mechanism is a convenient ‘stack’ mech- tween attributes that are specified page and those anism that allows the previous state of a particu- that are local. Thus, a special such as lar attribute to be easily restored. The two key- :attribute backgroundcolor mauve words that indicate this mechanism should be used are ‘push’and‘pop’. that occurs between two characters on a page makes If the keyword ‘attribute’ in a special is fol- little sense. Indeed, where the special obviously af- lowed by the keyword ‘push’, then the current state fects the entire page, but it is not specified with a of that attribute is pushed onto a stack internal to page keyword, the operation of the DVI driver shall the DVI processor. Then, the remainder of the spe- be undefined. cial is used to determine the new value of the at- If multiple page attribute specials for the same tribute. attribute appear on a page, they shall all be seman- If the keyword ‘attribute’ in a special is fol- tically moved to the top of the page—in the same lowed by the keyword ‘pop’, then the previously order as they occur on the page. saved value of the attribute is restored. Any actual 3.2.3 Global attribute value specified in the special is ignored. If the stack is empty when a ‘pop’ special is Some specials affect the document as a whole, or it encountered, then the value of the attribute is set to is desired that they affect the document as a whole. the default initial value for that attribute. Specials that define a paper size are one example of Attribute specials that use neither push nor pop these. Generally, such specials should occur before are still fully legal; they affect the current setting of any characters or rules or object specials on the first the attribute, but do not affect the stored stack. page. Note that each attribute has its own indepen- As discussed before, it is sometimes inconve- dent stack. Thus, the following sequence of specials nient or difficult to ensure that these specials actu- is perfectly legal: ally occur at the beginning of the page. Thus, we define the scoping keyword ‘global’ that indicates :attribute push color red this special should semantically appear at the begin- :attribute push trap true ning of the entire document. Thus, if a document :attribute pop color contains a single (hypothetical) paper size attribute, :attribute pop trap specified as DVI drivers should support a stack depth for :attribute global papersize 8.5in 11in each attribute of at least twenty levels. anywhere in the document, then the entire docu- ′′ ′′ 3.2.2 Page ment should be rendered on 8.5 × 11 paper. For pragmatic reasons (we may not want to, or Some specials affect the page, or paper, or media, be able to, prescan the entire document), we require rather than the rendering of characters or rules. Spe- that such global specials occur somewhere on the cials that specify the paper size or background color first page in order to take effect. are examples of these. Such specials should ordi- Note that there is no predefined correlation be- narily occur before any characters or rules or object tween the attributes that are specified global and specials on the page itself; such is the case for flat those that are local or page-specific. DVI files. If multiple global attributes for the same at- As discussed before, it is sometimes inconve- tribute appear in a document, all shall be semanti- nient or difficult to ensure that these specials actu- cally moved to the front of the document — in the ally occur at the beginning of the page itself. Thus, same order as they occur in the document. we define the scoping keyword ‘page’ that indicates this special should semantically appear at the begin- 3.3 Flattening process ning of the page. Thus, if a page contains a single The scoping rules are concentrated on the distinc- (hypothetical) background color attribute, specified tion between a special’s syntactic and semantic lo- as cation. The process of flattening a DVI file resolves :attribute page backgroundcolor mauve these differences, by eliminating all stack operations (except for defaulting pops) and by moving all spe- anywhere on the page, then the page should be ren- cials to their logical semantic location. This opera- dered with a mauve background. tion converts a scoped DVI filetoaflatDVI file. TUGboat, Volume 16 (1995), No. 4 399

When flattening occurs, object specials remain in their original location. Page 2: For instance, consider a scoped DVI file that :attribute page papersize 8.5in 11in appears as follows: :attribute color red Page 1: :attribute color green :attribute push color red :attribute color blue :attribute global backgroundcolor mauve :attribute color red Page 2: :attribute pop papersize :attribute push color green :attribute pop color Page 1: :attribute color blue :attribute color red :attribute page papersize 8.5in 11in :attribute pop color :attribute pop color Page 3: This flattening can be performed with a spe- cial DVI to DVI processor (which we hope to pro- :attribute pop color vide). The use of such a preprocessor will allow fancyscopedspecialstobeusedinanenvironment This would be flattened into the following flat DVI that supports only flat specials. For DVI files that file: are intended to be widely distributed and portable, Page 1: such a flattening should probably be done. :attribute global backgroundcolor mauve This flattening can also be performed dynami- cally, as a DVI file is being created or read from disk, :attribute color red so long as single-page scanning is available. (We :attribute pop color hope to provide code for this as well, that will allow Page 2: easy integration of scoped specials into previewers :attribute page papersize 8.5in 11in and printer drivers with a minimum of effort.) :attribute color red 4 Proposed object specials :attribute color green The primary and most important proposed object special is that for encapsulated PostScript file inclu- :attribute color blue sion. :attribute color red 4.1 EPSF inclusion The syntax for the encapsulated PostScript inclu- :attribute pop papersize :attribute pop color sion special is as follows: Page 3: := :attribute color red (’epsf’ | ’psfile’) ’=’ :attribute pop color ( )* [] If a page reversal program that obeys the spe- := ’width=’ cials is run, the following DVI file would result. Note | ’height=’ | ’scale=’ that the only difference is that the global specials are [’,’ ] moved from the original first page to the new first | ’clip=’ (’on’ | ’off’) page. | ’boundingbox=’ Page 3: ’,’ ’,’ :attribute global backgroundcolor mauve ’,’ :attribute color red In this special, the symbol following the key- :attribute pop color word ‘epsf’or‘psfile’ is interpreted as a filename 400 TUGboat, Volume 16 (1995), No. 4

containing a encapsulated PostScript file for inclu- file. If ‘psfile’ is specified, the bounding box must sion. This file should follow the Adobe standards be specified; the operation of the special is undefined for EPSF files; otherwise the effects of this special if no bounding box is specified. (The reasoning be- are undefined. hind this seeming inconsistency is partially political Positioning occurs as follows. First, a bounding and partially religious.) box is determined. If one is specified in the special In order to include a normal EPSF image in its it is used. Otherwise, if none is specified in the spe- entirety, either the ‘psfile’orthe‘epsf’ keyword cial and the keyword is given as ‘epsf’, the EPSF can be used; if a bounding box value is specified in document itself is scanned for a bounding box. the special command, the semantics are equivalent. The bounding box values at this point, inter- If only a rectangular subportion of an EPSF im- preted in PostScript units, map the region of the age or PS page is to be rendered, then the ‘psfile’ illustration that will be included. keyword should be specified, along with a bounding The TEX width is set to the horizontal size of box describing precisely what portion of the image the bounding box, and the TEX height is set to should be included. Clipping should be turned on the vertical size of the bounding box, both inter- to ensure that the rest of the image does not show preted as 72 units to the inch. Consideration of any up outside the DVI rectangle. width, height, and scale parameters may further af- fect these values, as described below. 4.1.2 Bounding box Next, the optional width and height specifiers The bounding box is specified as a comma-separated are considered. If neither is given, this step is omit- list of numbers. These numbers are interpreted as ted. If both are given, their values replace the TEX PostScript units. There are 72PostScript units to height and width set before. If only one is given, it the inch. The four numbers are, in sequence, the x- replaces the corresponding TEX value, and the other coordinate of the lower left corner, the y-coordinate TEX value is set to preserve the aspect ratio. of the lower left corner, the x-coordinate of the up- Next, if the ‘scale’ keyword is given, the TEX per right corner, and the y-coordinate of the upper height and width are further modified. If only one right corner. All four must be specified. numeric parameter is given, both the width and Note that we do not restrict these numbers to height are multiplied by this parameter. Otherwise, be integers. While Adobe requires these to be in- the width is multiplied by the first parameter and tegers in their Document Structuring Conventions, the height is multiplied by the second parameter. some applications generate floating point numbers. Finally, the width and height values are multi- In addition, the higher precision afforded by floating plied by the current DVI magnification in effect. point might be useful in some circumstances. The resulting values describe the size of a rect- angle on the DVI page. The lower left hand corner 4.1.3 Scaling of this rectangle is positioned at the current DVI lo- The scaling parameter consists of one or two num- cation. The geometric mapping from the original bers separated by a comma. These are used to spec- bounding box to this rectangle defines the scaling ify a scaling ratio for an EPSF image. If only one that is performed on the EPSF file when it is ren- number is specified, the scaling preserves the aspect dered. ratio of the image. If the clipping keyword is specified to be ‘on’, or if no clipping keyword is specified, the rendering 4.1.4 Clipping of the EPSF file will be constrained to fall within Clipping can be set to either ‘on’or‘off’. The de- the DVI rectangle calculated above. Otherwise, no fault is ‘on’. clipping will be performed, and if the EPSF file ren- ders outside its bounding box borders, portions of 4.1.5 Rotation the image will also be rendered outside the DVI rect- Rotation is not currently supported, although it is angle. currently under discussion. 4.1.1 PS vs. EPSF 5 Proposed attribute specials The effects of the keyword ‘epsf’ and the keyword 5.1 Color ‘psfile’ are almost identical—with one minor dif- Under development. ference. If ‘epsf’ is specified, then the bounding box keyword and values are optional; if they are not specified, the bounding box is read from the EPSF TUGboat, Volume 16 (1995), No. 4 401

5.2 Background color Under development. 5.3 Paper size Paper size and orientation are important character- istics of the document, and should be specified in the document itself rather than on the driver command line. The syntax for the paper size special is: := ’papersize’ [ ] [] The value (composed of two dimensions) may be omitted only if one of the specified scoping oper- ators is ‘pop’. The dimensions specify horizontal and then ver- tical size. As is conventional, the DVI origin is located one inch down and one inch from the left of the top left corner of the paper. A typical papersize special is :attribute global papersize 8.5in 11in To specify that landscape letter size is in effect for the current page forward, use :attribute page push papersize 11in 8.5in followed by :attribute page pop papersize on the page you wish to return to portrait. 6 Document history This section shall record a history of the changes to this document. 22 September 1995: Originated by Tomas Ro- kicki on the basis of extensive discussions at TUG’94 and TUG’95, discussion on the TWG-DVI mailing list, and discussion at a meeting at MSRI in Decem- ber of 1994. 10 January 1996: Edited for publication in TUG- boat by Robin Fairbairns, Barbara Beeton, and Tomas Rokicki.

⋄ Tomas G. Rokicki 725B Loma Verde Palo Alto, CA 94303 USA Email: [email protected] TUGboat, Volume 16 (1995), No. 4 401

A Directory Structure for TEX Files (Version 0.999) TUG Working Group on a TEX Directory Structure (TWG-TDS) 1 Introduction TEX is a powerful, flexible typesetting system used by thousands of people around the world. It is ex- tremely portable and runs on virtually all operat- ing systems. One unfortunate side effect of TEX’s flexibility, however, is that there has been no single “right” way to install it. This has resulted in many sites having different installed arrangements. The primary purpose of this document is to describe a standard TEX Directory Structure (TDS): a directory hierarchy for macros, fonts, and the other implementation-independent TEX system files. As a matter of practicality, this document also suggests ways to incorporate the rest of the TEXfilesintoa single structure. The TDS has been designed to work on all modern systems. In particular, the Technical Working Group (TWG) believes it is usable under MacOS, MS-DOS, OS/2,Unix,VMS, and Windows NT. We hope that administrators and developers of both free and commercial TEX implementations will adopt this standard. This document is intended both for the TEX system administrator at a site and for people prepar- ing TEX distributions—everything from a complete runnable system to a single macro or style file. It may also help TEX users find their way around sys- tems organized this way. It is not a tutorial: we necessarily assume knowledge of the many parts of a working TEX system. If you are unfamiliar with any of the programs or file formats we refer to, con- sult the references in Appendix D. 1.1 The role of the TDS The role of the TDS is to stabilize the organization of TEX-related software packages that are installed and in use, possibly on multiple platforms simulta- neously. At first glance, it may seem that the Compre- hensive TEX Archive Network (CTAN) archives ful- fill at least part of this role, but this is not the case. The role of CTAN is to simplify archiving and dis- tribution, not installation and use. In fact, the roles of the TDS and CTAN are fre- quently in conflict, as you will see elsewhere in this document. For distribution, many different types of files must be combined into a single unit; for use, it is traditional to segregate files (even similar files) from a single package into separate, occasionally distant, directories. 402 TUGboat, Volume 16 (1995), No. 4

1.2 Conventions As a result, the TWG concluded that a com- In this document, “/” is used to separate filename prehensive TDS requires implementations to support components; for example, texmf/fonts. This is the some form of implicit subdirectory searching. More Unix convention but the ideas are in no way Unix- precisely, implementations must make it possible to specific. specify that TEX, METAFONT , and their companion utilities search in both a specified directory and re- In this document, “TEX” generally means the cursively through all subdirectories of that directory TEX system, including METAFONT , DVI drivers, when looking for an input file. Other forms of subdi- utilities, etc., not just the TEX program itself. The word “package” in this document has its rectory searching, for example recursive-to-one-level usual meaning: a set of related files distributed, searches, may also be provided. We encourage im- installed, and maintained as a unit. This is not a plementors to provide subdirectory searching at the A option of the installer and user for all paths. LTEX2ε package, which is a style file supplementing a document class. The TDS does not specify a syntax for specify- We use the following typographic conventions: ing recursive searching, but we encourage implemen- tors to provide interoperability (see Section B.2). literal Literal text such as filename is typeset in typewriter type. 2.2 Rooting the tree In this document, we shall designate the root TDS hreplaceablei Replaceable text such as hpackagei, directory by ‘texmf’(for“TEXandMETAFONT ”). identifying a class of things, is typeset in italics We recommend using that name where possible, but inside angle brackets. the actual name of the directory is up to the in- staller. On PC networks, for example, this could 2 General map to a logical drive specification such as T:. This section describes common properties through- Similarly, the location of this directory on the out the TDS tree. system is site-dependent. It may be at the root of the file system; on Unix systems, /usr/local/ 2.1 Subdirectory searching share, /usr/local, /usr/local/lib,and/opt are Many TEX installations store large numbers of re- common choices. lated files in single directories, for example, all TFM The name texmf was chosen for several rea- files and/or all TEX input files. sons: it reflects the fact that the directory contains

This monolithic arrangement hinders mainte- files pertaining to an entire TEX system (including

METAP OST Bib nance of a TEX system: it is difficult to determine METAFONT , , TEX, etc.), not just what files are used by what packages, what files need TEX itself; and it is descriptive of a generic installa- to be updated when a new version is installed, or tion rather than a particular implementation. what files should be deleted if a package is removed. A site may choose to have more than one TDS It is also a source of error if two or more packages hierarchy installed (for example, when installing an happen to have input files with the same name. upgrade). This is perfectly legitimate. Therefore, the TWG felt each package should 2.3 Local additions be in a separate directory. But we recognized that explicitly listing all directories to be searched would The TDS cannot specify precisely when a package be unbearable. A site may wish to install dozens is or is not a “local addition”. Each site must de- of packages. Aside from anything else, listing that termine this according to their own conventions. At many directories would produce search paths many the two extremes, one site might wish to consider thousands of characters long, overflowing the avail- “nonlocal” only those files that came with the par- able space on some systems. ticular TEX distribution they installed; another site Also, if all directories are explicitly listed, in- might consider “local” only those files that were ac- stalling or removing a new package would mean tually developed at the local site and not distributed changing a path as well as installing or removing elsewhere. the actual files. This would be a time-consuming We recognize two common methods for local and error-prone operation, even with implementa- additions to a distributed texmf tree. Both have tions that provide some way to specify the direc- their place; in fact, some sites may employ both tories to search at runtime. On systems without simultaneously: runtime configuration, it would require recompiling 1. A completely separate tree which is a TDS software, an intolerable burden. structure itself; for example, /usr/local/umbtex TUGboat, Volume 16 (1995), No. 4 403

at the University of Massachusetts at Boston. All implementations we know of already have This is another example of the multiple texmf these capabilities. hierarchies mentioned in the previous section. One place where duplicate names are likely to 2. A directory named ‘local’ at any appropriate occur is not an exception:

level, for example, in the hformati, hpackagei, • Names of METAFONT input files (as opposed and hsupplieri directories discussed in the fol- to bitmap fonts) must be unique within all of lowing sections. The TDS reserves the directory texmf/fonts. In practice, this is a problem name local for this purpose. with those variants of Computer Modern which We recommend using local for site-adapted contain slightly modified files named punct.mf, configuration files, such as language.dat for romanl.mf, and so on. We believe the only the Babel package or graphics.cfg for the feasible solution here is simply to rename the graphics package. Unmodified configuration derivative files to be unique. files from a package should remain in the pack- age directory. The intent is to separate locally 3 Top-level directories modified or created files from distribution files, The directories under the texmf root identify the to ease installing new releases. major components of a TEX system (see Table 1 One common case of local additions is dynami- for a summary). A site may omit any unneeded cally generated files, e.g., PK fonts by the MakeTeXPK directories. script originated by Dvips. A site may store the gen- Although the TDS by its nature can specify pre- erated files directly in any of: cise locations only for implementation-independent • their standard location in the main TDS tree (if files, we recognize that installers may well wish to it can be made globally writable); place other files under texmf to simplify adminis- • an alternative location in the main TDS tree tration of the TEX tree, especially if it is maintained (for example, under texmf/fonts/tmp); by someone other than the system administrator. • a second complete TDS tree (as outlined above); Therefore, additional top-level directories may be present. • any other convenient directory (perhaps under The top-level directories specified by the TDS /var, for example /var/spool/fonts). are: No one solution will be appropriate for all sites. tex for TEX files (Section 3.1). 2.4 Duplicate filenames fonts for font-related files (Section 3.2).

Different files by the same name may exist in a TDS metafont for METAFONT files which are not fonts tree. The TDS generally leaves unspecified which of (Section 3.3). two files by the same name in a search path will be metapost for METAP OST files (Section 3.4). found, so generally the only way to reliably find a bibtex for BibT X files (Section 3.5). given file is for it to have a unique name. However, E the TDS requires implementations to support the doc for user documentation (Section 3.6). following exceptions: source for sources. This includes both traditional • Names of T X input files must be unique program sources (for example, Web2c sources E A within each first-level subdirectory of texmf/ go in texmf/source/web2c)andLTEX dtx tex and texmf/tex/generic, but not within sources (which go in texmf/source/latex). all of texmf/tex; i.e., different TEX formats source is intended for files which are not may have files by the same name. (Section 3.1 needed at runtime by any TEX program; it discusses this further.) Thus, no single format- should not be included in any search path. independent path specification, such as a re- For example, plain.tex does not belong under cursive search beginning at texmf/tex specify- texmf/source, even though it is a “source file” ing no other directories, suffices. So implemen- in the sense of not being derived from another tations must provide format-dependent path file, but rather in texmf/tex/plain/base,as specifications, for example via wrapper scripts explained in Section 3.1. or configuration files. himplementationi for implementations (examples: • Many font files will have the same name (e.g., emtex, web2c), to be used for whatever purpose cmr10.pk), as discussed in Section 3.2.2. Imple- deemed suitable by the implementor or TEXad- mentations must distinguish these files by mode ministrator. Files that cannot be shared be- and resolution. tween implementations, such as pool files (tex. 404 TUGboat, Volume 16 (1995), No. 4

pool) and memory dump files (plain.fmt)go In the case where a format consists of only a here, in addition to implementation-wide con- single file and has no auxiliary packages, that figuration files. See Section B.3 for examples of file can simply be placed in the hformati direc- real himplementationi trees. tory, instead of hformati/base. For example, hprogrami for individual configuration files and pro- Texinfo goes in texmf/tex/texinfo/texinfo. gram-specific input files for TEX-related pro- tex,nottexmf/tex/texinfo/base/texinfo. grams (examples: mft, dvips). In fact, the tex. tex, metafont, metapost,andbibtex direc- The TDS reserves the following hpackagei tories above may be seen as instances of this names: case. • base, for the base distribution of each for- mat, including files used by INITEX when 3.1 Macros dumping format files. For example, in the TEX macro files shall be stored in separate direc- standard LATEX distribution, the ltx files tories, segregated by TEX format and package name created during the build process shall be (we use ‘format’ in its traditional TEX sense to mean stored in the base directory. a usefully \dump-able package): • hyphen, for hyphenation patterns, includ- texmf/tex/hformati/hpackagei/ ing the original American English hyphen. hformati is a format name (examples: amstex, tex. These are typically used only by latex, plain, texinfo). INITEX. In most situations, this directory The TDS allows distributions that can be need exist only under the generic format. used as either formats or packages (e.g., Tex- • images, for image input files, such as En- info, Eplain) to be stored at either level, at capsulated PostScript figures. Although the option of the format author or TEXadmin- it is somewhat non-intuitive for these to istrator. We recommend that packages used be under a directory named “tex”, TEX as formats at a particular site be stored at needs to read these files to glean bounding the hformati level: by adjusting the TEXin- box or other information. A mechanism puts search path, it will be straightforward to for sharing image inputs between TEXand use them as macro packages under another for- other typesetting programs (e.g., Interleaf, mat, whereas placing them in another tree com- FrameMaker) is beyond the scope of the pletely obscures their use as a format. TDS. In most situations, this directory The TDS reserves the following hformati need exist only under the generic format. names: • local, for local additions and configura- • generic, for input files that are useful tion files. See Section 2.3. across a wide range of formats (exam- • misc, for packages that consist of a single ples: null.tex, path.sty). Generally, file. An administrator or package main- this means any format that uses the cat- tainer may create directories for single-file egory codes of Plain TEX and does not packages at their discretion, instead of us- rely on any particular format. This is ing misc. in contrast to those files which are use- ful only with Plain TEX (which go un- 3.2 Fonts der texmf/tex/plain), e.g., testfont. Font files shall be stored in separate directories, seg- tex and plain.tex itself. regated by file type, font supplier, and typeface (PK • local, for local additions. See Section 2.3. and GF files need additional structure, as detailed in Thus, for almost every format, it is neces- the next section): sary to search at least the hformati directory texmf/fonts/htypei/hsupplieri/htypefacei/ generic and then the directory (in that order). htypei isthetypeoffontfile.TheTDS reserves the Other directories may need to be searched as following htypei names: well, depending on the format. When using • afm, for Adobe font metrics. AMS-TEX, for example, the amstex, plain, and generic directories should be searched, be- • gf, for generic font bitmap files. cause AMS-TEX is compatible with Plain. • pk, for packed bitmap files. hpackagei isaTEX package name (examples: babel, • source, for font sources (METAFONT files, texdraw). property lists, etc.). TUGboat, Volume 16 (1995), No. 4 405

• tfm,forTEX font metric files. system is the assumption of a single target resolu- • type1, for Type 1 fonts (in any format). tion. • vf, for virtual fonts. Two naming strategies are commonly used to identify the resolution of bitmap font files. On sys- As usual, a site may omit any of these direc- tems that allow long filenames (and in the origi- tories that are unnecessary (gf is a particularly

nal METAFONT program itself), the resolution is likely candidate for omission). included in the filename (e.g., cmr10.300pk). On hsupplieri is a name identifying font source (exam- systems which do not support long filenames, fonts ples: adobe, ams, public). The TDS reserves are generally segregated into directories by resolu- the following hsupplieri names: tion (e.g., dpi300/cmr10.pk). • ams, for the American Mathematical Soci- Because the TDS cannot require long filenames, ety’s AMS-fonts collection. we must use the latter scheme for naming fonts. So • local, for local additions. See Section 2.3. we have two more subdirectory levels under pk and • public, for freely redistributable fonts gf: where the supplier neither (1) requested texmf/fonts/pk/ their own directory (e.g., ams), nor (2) also hmodei/hsupplieri/htypefacei/dpihnnni/ made proprietary fonts (e.g., adobe). It texmf/fonts/gf/ does not contain all extant freely dis- hmodei/hsupplieri/htypefacei/dpihnnni/ tributable fonts, nor are all files therein hmodei is a name which identifies the device type necessarily strictly public domain. (examples: cx, gsftopk, ljfour). Usually, this

• tmp, for dynamically-generated fonts, as is isthenameoftheMETAFONT mode used to traditional on some systems. It may be build the PK file. For fonts rendered as bitmaps omitted if unnecessary, as usual. by a program that does not distinguish between htypefacei is the name of a typeface family (exam- different output devices, the hmodei name shall ples: cm, euler, times). The TDS reserves the be that of the program (e.g., ps2pk, gsftopk). following htypefacei names: dpihnnni specifies the resolution of the font (exam- • cm (within public), for the 75 fonts de- ples: dpi300, dpi329). ‘dpi’ stands for dots fined in Computers and Typesetting, Vol- per inch, i.e., pixels per inch. We recognize that ume E. pixels per millimeter is used in many parts of the world, but dpi is too traditional in the T X • latex (within public), for those fonts dis- E world to consider changing now. tributed with LATEX in the base distribu- tion. The integer hnnni is to be calculated as if us-

ing METAFONT arithmetic and then rounded; • local, for local additions. See Section 2.3.

i.e., it is the integer METAFONT uses in its out- Some concrete examples: put gf filename. We recognize small differences texmf/fonts/source/public/pandora/pnr10.mf in the resolution are a common cause of frus- texmf/fonts/tfm/public/cm/cmr10.tfm tration among users, however, and recommend texmf/fonts/type1/adobe/utopia/putr.pfa implementors follow the level 0 DVI driver stan- For complete supplier and typeface name lists, dard (see Appendix D) in bitmap font searches by allowing a fuzz of ±0.2% (with a minimum consult Filenames for TEX fonts (see Appendix D). of 1) in the hdpii. 3.2.1 Font bitmaps Implementations may provide extensions to the Font bitmap files require two characteristics in addi- basic naming scheme, such as long filenames and tion to the above to be uniquely identifiable: (1) the font library files, provided that the basic scheme is type of device (i.e., mode) for which the font was also supported. created; (2) the resolution of the bitmap. Following common practice, the TDS segregates 3.2.2 Valid font bitmaps fonts with different device types into separate di- The TWG recognizes that the use of short filenames rectories. See modes.mf in Appendix D for recom- has many disadvantages. The most vexing is that mended mode names. it results in the creation of dozens of different files Some printers operate at more than one resolu- with the same name. At a typical site, cmr10.pk will tion (e.g., at 300 dpi and 600 dpi), but each such res- be the filename for Computer Modern Roman 10pt olution will necessarily have a different mode name. at 5–10 magnifications for 2–3 modes. (Section 2.4 Nothing further is needed, since implicit in the TEX discusses duplicate filenames in general.) 406 TUGboat, Volume 16 (1995), No. 4

To minimize this problem, we strongly recom- • support, for additional input files required by

mend that PK files contain enough information to METAP OST utility programs, including a font identify precisely how they were created: at least map, a character adjustment table, and a sub-

the mode, base resolution, and magnification used directory containing low-level METAP OST pro- to create the font. grams for rendering some special characters. This information is easy to supply: a simple ad- dition to the local modes used for building the fonts 3.5 BibTEX with METAFONT will automatically provide the re- BibTEX-related files shall be stored in: quired information. If you have been using a local texmf/bibtex/bib/hpackagei/ modes file derived from (or that is simply) modes.mf texmf/bibtex/bst/hpackagei/ (see Appendix D), the required information is al- The bib directory is for BibT X database (.bib) ready in your PK files. If not, a simple addition based E files, the bst directory for style (.bst)files. on the code found in modes.mf canbemadetoyour hpackagei is the name of a BibT X package. local modes file and the PK files rebuilt. E The TDS reserves the following hpackagei names

3.3 Non-font METAFONT files (the same names are reserved under both bib and bst):

Most METAFONT input files are font programs or Bib parts of font programs and are thus covered by the • base, for the standard TEX databases and previous section. However, a few non-font input files styles, such as xampl.bib, plain.bst. do exist. Such files shall be stored in: • local, for local additions. See Section 2.3. texmf/metafont/hpackagei/ • misc,forBibTEX packages consisting of only a single file. hpackagei is the name of a METAFONT package (for example, mfpic). 3.6 Documentation The TDS reserves the following hpackagei names: Most packages come with some form of documen- • base, for the standard METAFONT macro files tation: user manuals, example files, programming as described in The METAFONTbook,suchas plain.mf and expr.mf. guides, etc. In addition, many independent files not part of any macro or other package describe various • local, for local additions. See Section 2.3. aspects of the TEX system. • misc,forMETAFONT packages consisting of The TDS specifies that these additional docu- only a single file (for example, modes.mf). mentation files shall be stored in a structure that parallels to some extent the fonts and tex directo- 3.4 METAP OST ries, as follows:

METAP OST is a picture-drawing language developed texmf/doc/hcategoryi/... by John Hobby, derived from Knuth’s METAFONT . Its primary purpose is to output Encapsulated Post- hcategoryi identifies the general topic of docu- Script instead of bitmaps. mentation that resides below it; for example, a TEX

METAP OST input files and the support files for format name (latex), program name (bibtex, tex),

METAP OST -related utilities shall be stored in: or other system components (web, fonts). texmf/metapost/hpackagei/ The TDS reserves the following categories: • Within each hcategoryi treeforaTEX format, hpackagei isthenameofa METAP OST package. At the present writing none exist, but the TWG thought the directory base is reserved for base docu- it prudent to leave room for contributed packages mentation distributed by the format’s main- that might be written in the future. tainers. The TDS reserves the following hpackagei names: • general, for standalone documents not spe- cific to any particular program (for example,

• base, for the standard METAP OST macro files, Joachim Schrod’s Components of T X ). such as plain.mp, mfplain.mp, boxes.mp,and E graph.mp. This includes files used by INIMP • help, for meta-information, such as FAQ’s, when dumping mem files containing preloaded David Jones’ macro index, etc. macro definitions. • html,forHTML documents. • local, for local additions. See Section 2.3. • info, for processed Texinfo documents. (Info

• misc,forMETAP OST packages consisting of files, like anything else, may also be stored out- only a single file. side the TDS, at the installer’s option.) • local, for local additions. See Section 2.3. TUGboat, Volume 16 (1995), No. 4 407 bibtex/ BibTEX input files bib/ BibTEX databases base/ base distribution (e.g., xampl.bib) misc/ single-file databases hpackagei/ name of a package bst/ BibTEXstylefiles base/ base distribution (e.g., plain.bst, acm.bst) misc/ single-file styles hpackagei/ name of a package doc/ see Section 3.6 and the summary below fonts/ font-related files htypei/ file type (e.g., pk) hmodei/ type of output device (for pk and gf only) hsupplieri/ name of a font supplier (e.g., public) htypefacei/ name of a typeface (e.g., cm) dpihnnni/ font resolution (for pk and gf only) himplementationi/ TEX implementations, by name (e.g., emtex)

metafont/ METAFONT (non-font) input files base/ base distribution (e.g., plain.mf) misc/ single-file packages (e.g., modes.mf) hpackagei/ name of a package (e.g., mfpic)

metapost/ METAP OST input and support files base/ base distribution (e.g., plain.mp) misc/ single-file packages hpackagei/ name of a package

support/ support files for METAP OST -related utilities mft/ MFT inputs (e.g., plain.mft) hprogrami/ TEX-related programs, by name (e.g., dvips) source/ program source code by name (e.g., latex, web2c) tex/ TEX input files hformati/ name of a format (e.g., plain) base/ base distribution for format (e.g., plain.tex) misc/ single-file packages (e.g., webmac.tex) local/ local additions to or local configuration files for hformati hpackagei/ name of a package (e.g., graphics, mfnfss) generic/ format-independent packages hyphen/ hyphenation patterns (e.g., hyphen.tex) images/ image input files (e.g., Encapsulated PostScript) misc/ single-file format-independent packages (e.g., null.tex). hpackagei/ name of a package (e.g., babel)

Table 1: A skeleton of a TDS texmf directory tree

The doc directory is intended for implementation- A Unspecified pieces independent and operating system-independent doc- The TDS cannot address the following aspects of a umentation files. Implementation-dependent files functioning TEX system: shall be stored elsewhere, as provided for by the im- plementation and/or TEX administrator (for exam- ple, VMS help files under texmf/vms/help). 1. The location of executable programs: this is too The documentation directories may contain site-dependent even to recommend a location, TEX sources, DVI files, PostScript files, text files, ex- let alone require one. A site may place exe- ample input files, or any other useful documentation cutables outside the texmf tree altogether (e.g., format(s). See Table 2 for a summary. /usr/local/bin), in a platform-dependent di- rectory within texmf, or elsewhere. 408 TUGboat, Volume 16 (1995), No. 4

ams/ amsfonts/ amsfonts.faq, amfndoc amslatex/ amslatex.faq, amsldoc amstex/ amsguide, joyerr bibtex/ BibTEX base/ btxdoc.tex fonts/ fontname/ Filenames for TEX fonts oldgerm/ corkpapr hformati/ name of a TEX format (e.g., generic, latex) base/ for the base distribution misc/ for contributed single-file package documentation hpackagei/ for package general/ across programs, generalities errata/ errata, errata[1-8] texcomp/ Components of TEX generic/ for non-format-specific TEX packages babel/ german/ germdoc help/ meta-information ctan/ info about CTAN mirror sites faq/ FAQsofcomp.text.tex,etc. html/ HTML files info/ GNU Info files, made from Texinfo sources latex/ example of hformati base/ ltnews*, *guide,etc. graphics/ grfguide hprogrami/ TEX-related programs, by name (examples follow) metafont/ mfbook.tex, metafont-for-beginners,etc. metapost/ mpman, manfig,etc. tex/ texbook.tex, A Gentle Introduction to TEX,etc. web/ webman, cwebman

Table 2: A skeleton of a TDS directory tree under texmf/doc

2. Upgrading packages when new releases are made: TEX distribution or installation, however, we outline we could find no way of introducing version here the necessary restrictions. The TDS specifica- specifiers into texmf that would do more good tions themselves are compatible with these. than harm, or that would be practical for even ISO-9660 is the only universally acceptable file a plurality of installations. system format for CD-ROMs. A subset thereof meets the stringent limitations of all operating systems in 3. The location of implementation-specific files use today. It specifies the following: (e.g., TEX .fmt files): by their nature, these must be left to the implementor or TEXmain- • File and directory names, not including any di- tainer. See Section B.3. rectory path or extension part, may not exceed eight characters. 4. Precisely when a package or file should be con- sidered “local”, and where such local files are • Filenames may have a single extension. Exten- installed. See Section 2.3 for more discussion. sions may not exceed three characters. Direc- tory names may not have an extension. A.1 Portable filenames • Names and extensions may consist of only the The TDS cannot require any particular restriction on characters A–Z, 0–9, and underscore. Lowercase filenames in the tree, since the names of many exist- letters are excluded. (The only common place ing TEX files conform to no particular scheme. For where mixed-case names occur in the TEX sys- the benefit of people who wish to make a portable tem is in LATEX font descriptor files, and LATEX TUGboat, Volume 16 (1995), No. 4 409

does not rely on case alone to distinguish among parallel to existing production directories. This test- these files.) ing will likely flush out problems that were not obvi- • A period separates the filename from the exten- ous in the confined settings of the developers’ sites; sion and is always present, even if the name or for example, it should help to resolve OS and pack- extension is missing (e.g., FILENAME. or .EXT). age dependencies, package interdependencies, and • A version number, ranging from 1–32767, is other details not addressed by this TDS version. appended to the file extension, separated by a After most of the dust has settled, hopefully semicolon (e.g., FILENAME.EXT;1). even conservative TEX administrators will begin to • Only eight directory levels are allowed, includ- adopt the TDS.Eventually,mostTEX sites will have ing the top-level (mounted) directory (see Sec- adopted the common structure, and most packages tion 2.2). Thus, the deepest valid ISO-9660 will be readily available in TDS-compliant form. path is: We believe that this process will occur relatively texmf/L2/L3/L4/L5/L6/L7/L8/FOO.BAR;1 quickly. The TDS committee spans a wide range of 1 2345678 interests in the TEX community. Consequently, we believe that most of the key issues involved in defin- The deepest TDS path needs only seven levels: ing a workable TDS definition have been covered, texmf/fonts/pk/cx/public/cm/dpi300/cmr10.pk often in detail. TEX developers have been consulted 1 2 345 67 about implementation issues, and have been trying Some systems display a modified format of ISO- out the TDS arrangement. Thus, we hope for few 9660 names, mapping alphabetic characters to low- surprises as implementations mature. ercase, removing version numbers and trailing peri- Finally, there are several (current or prospec- ods, etc. tive) publishers of TEX CD-ROMs. These publish- ers are highly motivated to work out details of TDS B Implementation issues implementation, and their products will provide in- We believe that the TDS can bring a great deal of expensive and convenient ways for experimentally- order to the current anarchic state of many TEX minded TEX administrators to experiment with the installations. In addition, by providing a common TDS. frame of reference, it will ease the burden of docu- Efforts are under way to set up a “TDS Reg- menting administrative tasks. Finally, it is a neces- istry” that will coordinate assignment of TDS-com- sary part of any reasonable system of true “drop-in” pliant directory names and provide a definitive distribution packages for TEX. database of TDS-compliant software distributions. (Perhaps this could also serve many sites as the def- B.1 Adoption of the TDS inition of when a package is local.) For now, dis- We recognize that adoption of TDS will not be im- tribution through CTAN serves as an imprecise reg- mediate or universal. Most TEX administrators will istry. not be inclined to make the switch until: • Clear and demonstrable benefits can be shown B.2 More on subdirectory searching for the TDS. Recursive subdirectory searching is the ability to • TDS-compliant versions of all key programs are specify a search not only of a specified directory hdi, available in ported, well-tested forms. but recursively of all directories below hdi. • A “settling” period has taken place, to flush out Since the TDS specifies precise locations for problems. The public release of this document most files, with no extra levels of subdirectories al- is the first step in this process. lowed, true recursive searching is not actually re- Consequently, most of the first trials of the TDS quired for a TDS-compliant implementation. We do, will be made by members of the TDS committee however, strongly recommend recursive searching as and/or developers of TEX-related software. Indeed, the most user-friendly and natural approach to the some of this has taken place during the course of problem, rather than convoluted methods to specify our deliberations (see Appendix D for a sample tree paths without recursion. available electronically). They will certainly result This feature is already supported by many im- in the production of a substantial number of TDS- plementations of TEX and companion utilities, for compliant packages. example DECUS TEXforVMS, Dvips(k), emTEX Once installable forms of key TDS-compliant (and its drivers), PubliC TEX, Web2c, Xdvi(k),and packages are more widespread, some TEX adminis- Y&YTEX. trators will set up TDS-compliant trees, possibly in 410 TUGboat, Volume 16 (1995), No. 4

Even if your TEX implementation does not di- rectory name will be modified to something more rectly support subdirectory searching, you may find specific (e.g., vms_decus). Table 3 shows the VMS it useful to adopt the structure if you do not use directory structure. many fonts or packages. For instance, if you only use Computer Modern and AMS fonts, it would be B.3.2 Web2c 7.0 feasible to store them in the TDS layout and list All implementation-dependent TEX system files (in- the directories individually in configuration files or cluding .pool, .fmt, .base,and.mem files) are environment variables. stored by default directly in texmf/web2c.The The TWG recognizes that subdirectory search- configuration file texmf.cnf and various subsidiary ing places an extra burden on the system and may MakeTeX... scripts used as subroutines are also be the source of performance bottlenecks, partic- stored there. ularly on slower machines. Nevertheless, we feel Non-TEX specific files are stored following the that subdirectory searching is imperative for a well- GNU coding standards. Given a root directory organized TDS, for the reasons stated in Section 2.1. hprefix i (/usr/local by default), we have default Implementors are encouraged to provide enhance- locations as follows as shown in Table 4. ments to the basic principle of subdirectory search- See prep.ai.mit.edu:/pub/gnu/standards. ing to avoid performance problems, e.g., the use of * for the rationale behind and descriptions of this a filename cache (this can be as simple as a re- arrangement. A site may of course override these cursive directory listing) that is consulted before defaults; for example, it may put everything under disk searching begins. If a match is found in the a single directory such as /usr/local/texmf. database, subdirectory searching is not required, and performance is thus independent of the num- C Is there a better way? ber of subdirectories present on the system. Defining the TDS required many compromises. Both Different implementations specify subdirectory the overall structure and the details of the individ- searching differently. In the interest of typographic ual directories were arrived at by finding common clarity, the examples here do not use the hreplaceablei ground among many opinions. The driving forces font. were feasibility (in terms of what could technically Dvips: via a separate TEXFONTS_SUBDIR environ- be done and what could reasonably be expected ment variable. from developers) and regularity (files grouped to- emTEX : t:\subdir!!; t:\subdir! for a single level gether in an arrangement that “made sense”). of searching. Some interesting ideas could not be applied due Kpathsea: texmf/subdir// to implementations lacking the necessary support: VMS: texmf:[subdir...] Xdvi: texmf/subdir/**; texmf/subdir/* forasin- • Path searching control at the TEX level. If doc- gle level of searching (patchlevel 20 of the pro- uments could restrict subdirectory searching to gram onwards). a subdirectory via some portable syntax in file Y&Y TEX : t:/subdir// or t:\subdir\\. names, restrictions on uniqueness of filenames B.3 Example implementation-specific trees could be relaxed considerably (with the cooper- ation of the formats), and the TEX search path The TDS cannot specify a precise location for would not need to depend on the format. implementation-specific files, but for informative purposes, we provide here the default locations for some implementations. Please contact us with ad- ditions or corrections. These paths are not defini- • Multiple logical texmf trees. For example, a tive, may not match anything at your site, and may site might have one (read-only) location for change without warning. stable files, and a different (writable) location We recommend all implementations have de- for dynamically-created fonts or other files. It fault search paths that start with the current direc- would be reasonable for two such trees to be tory (e.g., ‘.’). Allowing users to include the parent logically merged when searching. directory (e.g., ‘..’) is also helpful. C.1 Macro structure DECUS B.3.1 Public TEX The TWG settled on the hformati/hpackagei ar- If another VMS implementation besides Public DE- rangement after long discussion about how best to CUS TEX appears, the top level implementation di- arrange the files. TUGboat, Volume 16 (1995), No. 4 411 texmf/ vms/ VMS implementation specific files exe/ end-user commands common/ command procedures, command definition files, etc. axp/ binary executables for Alpha AXP vax/ binary executables for VAX formats/ pool files, formats, bases help/ VMS help library, and miscellaneous help sources mgr/ command procedures, programs, docs, etc., for system management

Table 3: The VMS directory structure hprefix i/ installation root (/usr/local by default) bin/ executables man/ man pages info/ info files lib/ libraries (libkpathsea.*) share/ texmf/ TDS root web2c/ implementation-dependent files (.pool, .fmt, texmf.cnf,etc.)

Table 4: The VMS directory structure

The primary alternative to this arrangement C.2.1 Font file type location was a scheme which reversed the order of these direc- We considered the supplier-first arrangement cur- tories: hpackagei/hformati. This reversed arrange- rently in use at many sites: ment has a strong appeal: it keeps all of the files re- lated to a particular package in a single place. The fonts/hsupplieri/htypefacei/htypei/ arrangement actually adopted tends to spread files out into two or three places (macros, documenta- This improves the maintainability of the font tion, and fonts, for example, are spread into different tree, since all files comprising a given typeface are sections of the tree right at the top level). in one place, but unless all the programs that search Nevertheless, the hformati/hpackagei structure this tree employ some form of caching, there are won for a couple of reasons: serious performance concerns. For example, in order to find a TFM file, the simplest implementation would • It is closer to current practice; in fact, several require TEX to search through all the directories that members of the TWG have already implemented contain PK files in all modes and at all resolutions. the TDS hierarchy. The alternative is not in use In the end, a poll of developers revealed consid- at any known site, and the TWG felt it wrong erable resistance to implementing sufficient caching to mandate something with which there is no mechanisms, so this arrangement was abandoned. practical experience. The TDS arrangement allows the search tree to be • The alternative arrangement increases the num- restricted to the correct type of file, at least. Con- ber of top-level directories, so the files that cerns about efficiency remain, but there seems to be must be found using subdirectory searching are no more we can do without abandoning subdirectory spread out in a wide, shallow tree. This could searching entirely. have a profound impact on the efficiency of sub- We also considered segregating all font-related

directory searching. files strictly by file type, so that METAFONT sources wouldbeinadirectorytexmf/fonts/mf, prop- C.2 Font structure erty list files in texmf/fonts/pl, the various forms The TWG struggled more with the font directory of Type 1 fonts separated, and so on. Although structure than anything else. This is not surprising; more blindly consistent, we felt that the drawback the need to use the proliferation of PostScript fonts of more complicated path constructions outweighed with TEX is what made the previous arrangement this. The TDS merges file types (mf and pl under with all files in a single directory untenable, and source, pfa and pfb and gsf under type1)where therefore what initiated the TDS effort. beneficial. 412 TUGboat, Volume 16 (1995), No. 4

C.2.2 Mode and resolution location D Related references We considered having the mode at the bottom of the This appendix gives pointers to related files and font tree: other documents. In this document, hCTAN:i means the root of fonts/pk/hsupplieri/htypefacei/hmodei/hdpii/ an anonymous ftp CTAN tree. This is both a host In this case, however, it is difficult to limit sub- name and a directory name. For example: directory searching to the mode required for a par- ftp.dante.de:/tex-archive ticular device. ftp.shsu.edu:/tex-archive We then considered moving the dpihnnni up to ftp.tex.ac.uk:/tex-archive below the mode: Finger [email protected] foracompletelist of CTAN sites; there are mirrors worldwide. fonts/pk/hmodei/hdpii/hsupplieri/htypefacei/ Here are the references: But then it is not feasible to omit the dpihnnni • The TDS mailing list archives can be retrieved level altogether on systems which can and do choose via ftp from shsu.edu:[twg-tds] and to use long filenames. vms.rhbnc.ac.uk:/archives/twg.tds.*. • AsampleTDS tree: hCTAN:itds. C.2.3 Modeless bitmaps • A collection of BibTEX databases and styles: The TDS specifies using utility names as mode ftp.math.utah.edu:/pub/tex/bib. names for those utilities which generate bitmaps, e.g., texmf/fonts/pk/gsftopk/.Analternative • Components of TEX by Joachim Schrod: CTAN was to introduce a single directory modeless/ below h :idocumentation/components-of-TeX. which all such directories could be gathered. This • The level 0 DVI driver standard: has the considerable advantage of not requiring each hCTAN:idviware/driv-standard/level-0. such directory name to be listed in a search path. • Filenames for TEX fonts: But it has disadvantages, too: it would use the hCTAN:idocumentation/fontname. last available directory level, preventing any future This distribution includes recommended sup- expansions; and it would put PK files at different plier and typeface names. depths in the tree, possibly hindering search strate- • ISO-9660 CD-ROM file system standard: gies and certainly a likely source of confusion. We http://www.iso.ch/cate/cat.html. decided to stay with existing practice and keep the

• A complete set of METAFONT modes: utility name at the same level as the mode names. CTAN fonts/modes/modes.mf We are making an implicit assumption that h :i . This file includes recommended mode names.

METAFONT is the only program producing mode- dependent bitmaps. If this becomes false we could E Contributors add an abbreviation for the program to mode names, The TWG had no formal meetings; electronic mail as in mfcx vs. xyzcx for a hypothetical program Xyz, or we could at that time add an additional program was the primary communication medium. Sebastian Rahtz is the T X Users Group Tech- name level uniformly to the tree. For our present E nical Council liaison. Norman Walsh is the commit- purposes, it seems more important to concisely rep- resent the current situation than to take account of tee chair. For version 0.999 of the draft, Karl Berry took over as editor and coordinated this release. hypothetical possibilities that may never be realized. Original contributors: C.3 Documentation structure Barbara Beeton Karl Berry We considered placing additional documentation Vicki Brown David Carlisle files in the same directory as the source files for the Thomas Esser Alan Jeffrey packages, but we felt that users should be able to J¨org Knappen Pierre MacKay find documentation separately from sources, since Rich Morin Sebastian Rahtz most users have no interest in sources. Joachim Schrod Christian Spieler We hope that a separate, but parallel, structure Elizabeth Tachikawa Philip Taylor for documentation would (1) keep the documenta- Ulrik Vieth Paul Vojta tion together and (2) make it as straightforward as Norman Walsh possible for users to find the particular documenta- tion they were after. TUGboat, Volume 16 (1995), No. 4 413

Additional contributors: David Aspinall Nelson Beebe Harriet Borton Bart Childs Damian Cugley Alan Dunwell Michael Ferguson Erik Frambach Bernard Gaulle Jeffrey Gealow George Greenwade Thomas Herter Berthold Horn Charles Karney David Kastrup David Kellerman WonkooKim RichardKinch Robin Kirkham Alex Kok Eberhard Mattes Bob Morris Lenny Muellner OrenPatashnik DavidRhead MarkSinke Andrew Trevorrow Doug Waud Chee-Wai Yeung TUGboat, Volume 16 (1995), No. 4 413

Perhaps these musings1 will stimulate others to write about their working methods in TUGboat. 2 Golden rules If you do not take the following precautions, you might as well give up writing or editing LATEXnow: 1. Look at TEX errors; those messages flashing across the screen are not some kind of screen saver. 2. Be prepared to read the log file too; did you realize it has extra information? Specifically, it will list characters missing from a font. 3. OK, so you ignored those two rules; but at least realize you have a log file, and take it with you when you visit the doctor. 4. Lay out the source sensibly; how can you find errors if your input is one long line of mixed macros and text? 5. Use syntax checkers; there are many of these: Iuselacheck, from the authors of Emacs AUCTEX, and the one built into Eddi4TEX, but there are others. For LATEX especially, it is a godsendtohavethemissing\end{enumerate} Hints & Tricks spotted for you. 6. LATEX has several packages to help show you what it is working with: showkeys shows you the labels you define; syntonly will run a Whatever is Wrong with my LAT X File? A E LTEX file fast, ignoring fancy typesetting; the Sebastian Rahtz listfiles command lists the macro files that were used at the end (handy for checking ver- 1 Introduction sions), and the draft option will show overfull Contrary (perhaps) to what many TEX people ex- boxes and all manner of other things for some perience, much of the LATEX that I have to untangle packages. is not written by me. At Elsevier Science we accept 7. If you are a confident macro programmer, be A LTEX files for more or less any of our 1200+ jour- aware of the many TEX primitives that can help nals, and our production editors have to coerce the you: set \errorcontextlines to give more submissions into a standard form so that we can ap- context for help messages, use \message to put ply our journal-specific styles. Along the way, many in diagnostic messages, try \meaning to find out problems can arise, and we hold in-house training what a macro really is defined as, rather that sessions to discuss techniques for finding bugs in what you assumed it was. Don’t despair at the other people’s LATEX. These notes arise from those amount of verbiage \tracingall gives you — sessions, and are offered as a light-hearted reminder there is gold there if you dig deep enough. A to LTEX writers and editors alike about some of the 8. Remember primitive programmer’s debugging ways the agony of using our idiosyncratic system can techniques; if all else fails in your quest to see be lessened. Following a felicitous parallel drawn by why LAT X dies with that weird error in your TUGboat E the reviewer of this article, think of this 10000 line file, move \end{document} gradually like those posters on the doctor’s wall which you back up the file from the end until it does work, read while waiting to see the specialist. It is not a and then stare at the 10 lines which you know serious guide to TEX debugging, for which I am not provoke the error, with a wet towel around your qualified, and which would require a very large book indeed. . . 1 An earlier version was published as part of the editorial in Baskerville 5(5), and is used with permission of the UK TEX Users Group. 414 TUGboat, Volume 16 (1995), No. 4

head. It is faster than reading all 10000 lines \section{Safety Index Interpolation} over and over again hopelessly. . . will considerably aid readability and maintenance. A 9. Do not mail the LTEX development team, It is a curious fact that some files sent in to Else- or other package authors, every time TEX vier journals purporting to be LATEX are little more gives you an error prompt; you’ll irritate than plain TEX with \documentstyle inserted at hard-pressed volunteers working in their spare the front, and the above is not unusual. It also time. If you wait until you have a good, well- arises when a frustrated LATEX user cannot work out documented, repeatable, error condition that how to make the \section command do what is re- your friends get too, then you can report it, quired, so brute force is used at the last moment. and likely get a friendly reply and a fix. Do not stop at simply choosing rational places 10. Read before you Write. There are many excel- for line endings; is this A lent books about TEXandLTEX that you can 1 \title{Some dull results} buy and read, as well as the freely available ‘Fre- 2 \author{My AlterEgo} quently Asked Questions’ document (make sure 3 ... you get the UKTUG version, as it is consider- 4 and that was the last paragraph. ably changed and enhanced from the original). 5 \section{Another section} You cannot use LATEX without a manual. 6 \begin{enumerate} 7 \item \emph{Look} at \TeX\ errors; 3 Examples 8 those messages flashing across 3.1 Layout 9 the screen are not some kind of 10 screen saver. Did you think I was joking about laying out your 11 \item Read the log file too; did text in a readable fashion? Can you easily find the 12 you realize it has extra error in this example? 13 information? Specifically, it will 14 1 \begin list characters missing 15 2 {document}\baselineskip=12pt\newcommand from a font. 16 3 {\F}{Fig.~}\newcommand {\w}{\omega \end{enumerate} 4 }\newcommand {\k}{\xi }\newcommand as easy to read as this? 5 {\p}{\phi 1 %------6 }\maketitle\thispagestyle{empty}\centerline 2 \title 7 {\bf \underline{Abstract}}\vskip 3 {Some dull results} 8 6ptA probabilisticoptimal design 4 9 methodology for complex structures 5 \author 10 using the existing probabilistic 6 {My AlterEgo} 11 optimization techniques. \vskip 7 %------12 12pt\centerline{\bf 8 13 \underline{Nomenclature}\vskip 6pt 9 .... 14 \begin{tabbing}\( A 10 and that was the last paragraph. 15 \)\hspace{0.45in} \=: 11 16 Transformation matrix\\\( a_i \) 12 %------17 \>: Gradient of performance 13 \section{Another section} 18 function with respect \\$\hskip 14 19 1.25in$ to $i^{th}$ random variable 15 \begin{enumerate} 20 \\\( b \) \>: Design variable 16 \item \emph{Look} at \TeX\ errors; those 21 vector\\\( {\it CDF} \) \>: 17 messages flashing across the screen 22 Cumulative distribution 18 are not some kind of screen saver. 23 function\\\( {\it COV} \) \>: 19 \item Read the log file too; did you 24 Coefficient of variation \\\( C_x 20 realize it has extra information? 25 \) \>: Covariance 21 Specifically, it will list characters That is, of course, an artifical example, but one does 22 missing from a font. come across files which look a bit like this. Common 23 \end{enumerate} A sense (and the LTEX manual) will suggest that re- Again, this seems trivial, but consistent and read- placing code like: able layout of the code is well worth the trou- \vskip 3pt\noindent{\bf \underline{Safety ble; some intelligent editors (like Gnu Emacs in Index Interpolation}}\vskip 1pt AUCTEX mode) can do almost all of it automati- with cally. TUGboat, Volume 16 (1995), No. 4 415

3.2 Syntax errors T X error messages are not as obscure as we some- "bad.tex", line 5: E <- unmatched "\end{documen}" times think; here is an example where the puzzling "bad.tex", line 3: output is all explained in the log file: -> unmatched "math begin \(" 1 {This is not so bad, "bad.tex", line 5: 2 \bfseries\ttfamily hello?} <- unmatched "end of file bad.tex" 3 {This is not so bad, \scshape "bad.tex", line 2: 4 Hello \bfseries Goodbye?} -> unmatched "\begin{document}" 5 {\it\bf\Large byebye} However, it sees nothing wrong with this: 6 \end{document} 1 \documentclass{article} Why do we not see bold typewriter or bold small 2 \begin{document} A caps? Because the fonts do not exist, and LTEX 3 Funnies: \dag, \AA and \" tells us it has had to make substitutions as best it 4 \section{Introduction} can: 5 \end{document} A LaTeX Font Warning: Font shape about which LTEXsays: ‘OT1/cmtt/bx/n’ in size <10> not available ! Argument of \@xdblarg has an extra }. (Font) Font shape ‘OT1/cmtt/m/n’ tried instead on input line 4. \par LaTeX Font Warning: Font shape } ‘OT1/cmr/bx/sc ’ undefined l.5 \section (Font) using ‘OT1/cmr/bx/n’ {Introduction} instead on input line 6. ? What more could you ask? Regular LATEXusers How long did it take you to spot the problem? must learn to understand these New Font Selec- Can someone suggest a technique other than towel- tion Scheme messages, as they are a crucial part round-the-head staring to catch it? of LAT X2ε. E 3.3 Hyphenation Now let us look at a bad file which is quite easy to understand: If hyphenation is your bugbear, do you understand the difference between the following large heavy an- 1 \documentclass{article} imals? 2 something 3 \begin{document} 1 rhinoceroses 4 hello \( a= 2 \showhyphens{rhinoceroses} 5 \end{documen 3 \hyphenation{rh-ino-cer-os-es} 4 rhinoceroses LAT X says of this, in an unusually clear way: E 5 \begin{sloppypar} ! Missing $ inserted. 6 rhinoceroses 7 \end{sloppypar} $ 8 rh\"inoceroses l.4 9 \fontencoding{T1}\selectfont 10 rh\"inoceroses ? 11 \par\hskip\z@skip ) 12 rhinoceroses Runaway argument? Remember that: {documen ! File ended while scanning use of \end. 1. TEX may need help hyphenating the word; give it clues; \par 2. If you want justification at all costs, set the <*> bad right parameters — sloppypar goes too far, us- ing very lax settings, but it works; ? 3. If you put accents in words, hyphenation dies though the ‘missing $’ is a bit confusing when what ... it meant was ‘missing \)’. lacheck does a much bet- 4. . . . unless you use T1 encoding, which cleverly ter job: transforms \"i to an 8-bit character internally 416 TUGboat, Volume 16 (1995), No. 4

so that TEX proceeds happily (but remember you most of the pain described in this article, and that you need 8-bit hyphenation patterns to do others are sure to follow. a proper job); Choose LATEX with a light heart: If you can 5. The first word of a paragraph will not hyphen- keep your head when all about you Are losing theirs ate. Insert something harmless to bypass this and blaming it on you...If you can wait and not law. betiredbywaiting...ifyoucanmeetwithTriumph and Disaster, And treat those two imposters just the 3.4 Frequently encountered pitfalls same; ...If you can bear to hear the truth you’ve I expect all my readers have written something like spoken Twisted by knaves to make a trap for fools, this at some time: Or watch the things you gave your life to, broken, 1 \begin{figure} And stoop and build ’em up with worn-out tools 2 \label{fig1} ...Ifyoucanfilltheunforgiving minute With sixty 3 \caption{This is a caption} seconds’ worth of distance run, Yours is TEXand 4 \end{figure} everything thats in it, And — which is more — you’ll and wondered why the labels are wrong. It is not be a Man, my son! the figure environment which sets labels, but the \caption command; what the example above will ⋄ Sebastian Rahtz do is set the label ‘fig1’ to the value of the most Production Department, recent section, equation, list item or whatever. Elsevier Science Ltd, The Boulevard, Langford Lane, Do the new LAT X2e packages puzzle you? Why E Kidlington, Oxford OX5 1GB doesn’t this work: UK 1 \usepackage{graphicx} Email: [email protected] 2 \begin{document} 3 This is \rotatebox{75}{hello sunshine} 4 at an angle 5 \end{document} Simply because rotation, colour, scaling, and graph- ics insertion are all device dependent, and LATEX needs to know what dvi driver you have. You prob- ably meant something like: \usepackage[dvips]{graphicx} Lastly, did your TEX just say ‘bufsize ex- ceeded’? Maybe the file it was reading came from a Mac? or a word-processor which stored each para- graph as a single long line? If it is a graphic file, it may have come from a Mac package, and TEXis throwing up while searching for a %%BoundingBox line. You should realize that DOS, Unix and Mac treat line-endings differently! If you don’t have a dedicated utility to fix this, try using zip to package up the files, and then unzip them, using the flag to convert text files to the local native format. 4 Conclusions One could go on listing common problems, and mys- terious LATEX errors, for many pages. But the funda- mental message is that you cannot treat TEXprod- ucts like the finite and menu-driven offerings from Microsoft. If you write your documents using a com- puter programmer’s assembly language, you are al- ways going to be exploring strange new worlds. If you think you have better ways of spending your time — don’t use TEX directly at all. The excel- lent Scientific Word interface to LATEX will spare 416 TUGboat, Volume 16 (1995), No. 4

Macros

New Perspectives on TEX Macros Jonathan Fine

Abstract

Using the TEX macro language as an example, this article indicates how SGML can be used the specify the source file syntax for literate programming. (This is part of the philosophy behind the author’s SIMSIM project, which will allow TEX to typeset SGML documents.) Some of the advantages are shown. The problems of implementation are not discussed.

Introduction

This article is about TEX macros, SGML and literate programming. It also explains some of the philosophy behind the author’s SIMSIM package, which will provide a basis for the formatting by TEX of SGML documents. The author hopes for a first release to selected test sites by the end of 1995. TUGboat, Volume 16 (1995), No. 4 417

Knuth implemented literate programming by More examples defining the WEB file format, and producing two aux- The benefits of the SGML approach grow, the larger iliary programs, WEAVE and TANGLE, which transform and more complicated the macros are. Here is an a WEB file into T X and Pascal files respectively. E example. (The closing is to be understood. This was done in the early 1980s. Today it might The SGML omitted end tags feature will supply it be better to use an SGML document type definition if the next tag is also a , or any other element in the place of the WEB file format. This would that cannot occur within a element. In the allow existing and future SGML tools to process the same way, the short reference feature can recognise program source code. a leading blank and within the element, TANGLE can also reorder the code, so that the translate it into . Similarly, within programmer can present the code the program in the carriage return can be translated an order which suits the programmer (and reader) into the end tag .) rather than the compiler. This is considered by its practitioners to be an essential feature of literate is like programming. (The author thanks the referee for the \show primitive of &TeX except pointing this out.) that it is not like an error message. immediate write 16 Consider now TEX macros. Here is a macro definition, written in an unspecified SGML DTD. { > ~~~ string Token = writes the meaning Token |Token| to the console. } message { string Token } The ~ stands for an ordinary space character. Dirty tricks are required to get a sequence of such Its meaning should be clear. The intention is to characters into the replacement text of a macro. define a macro, whose name is echo.Ittakes T X runs more efficiently if numeric constants a single parameter, which the author is calling a E such as 16 are replaced by tokens that have been Token. The replacement text is given by the lines in \chardef’d to the appropriate value. It is much the element that begin with a leading space. easier to write (and read) 16 than it is the control Notice that there are no backslashes. Instead, the sequence \sixt@@n that is used in the source file character string message is standing for the control for plain and LAT X. The characters > and = stand sequence whose name is message (and which is E for themselves, as ‘other’ characters. usually referred to by \message). As usual, { and The replacement text of a T X macro is a } stand for characters with category code 1 and 2 E sequence of tokens. The syntax and semantics of the respectively. Finally, Token stands for #1,asToken source code file format should allow the programmer was the first parameter to be declared. to specify, perhaps implicitly, the sequence of tokens Compare this definition to the text desired. The analog of TANGLE should produce a \def\echo#1{\message{\string#1}} file from which TEX can produce (at high speed) that would be used in an ordinary macro file to the specified macro definition. The technical means express the same meaning. to accomplish this are not discussed in this article. Here is another example. Suffice to say that everything described here is takes a known to be possible. token (or balanced list) and throws it away. From SGML tags to TEX actions As an SGML document is parsed, information which has empty replacement text. Here becomes available to the text processing application. \def\gobble#1{} Typesetting (or any other processing) of an SGML document consists of linking actions to the start is the ordinary form for this definition. and end tags, and to other events. Suppose the The SGML form requires more effort to write, document to be processed has an element called but that is because it is more expressive. For , with an attribute called text.The complicated macros, it is a great help, to have code below named rather than numbered macro parameters. 418 TUGboat, Volume 16 (1995), No. 4

1. This tag has a text with a rigorous syntax, and that SGML provides 2. attribute, whose value will be typeset a means of specifying that syntax. In addition, 3. in a box. a growing collection of SGML software tools are 4. begingroup becoming available. 5. // some code is omitted Literate programming (which if not in the 6. let end-element endgroup humanities is at least an art) also requires a rigorous 7. hbox { (tag-name*text) } document syntax. There is a strong case for using specifies processing for such an element. SGML in this context also. For this to succeed, Line 4 tells us that once the tag has been there must be available suitable typesetting tools, parsed, a group is begun. Line 5 is a comment. that will accept SGML documents. The author’s Line 6 says that \endgoup is the action to be SIMSIM project is intended to provide such. performed when the element comes to an end. Note ⋄ Jonathan Fine that because SGML allows hyphens, periods and 203 Coldhams Lane digits to occur in a name, it is convenient to allow Cambridge CB1 3HY the same for control sequences. Incidentally, it is UK much easier to type and to read a hyphen, than it Email: [email protected] is an underscore. It is line 7 that sets the value of the text attribute in a horizontal box. The sequence of characters (tag-name*text) stands for a single token, whose expansion will be the current value of the text attribute of the element. Thus, the text will cause the SGML parser to define the token referred to by (tag-name*text) to be a macro whose expansion is the sequence This and that of letters. Just quite what that token is, should be of no concern to the programmer. Indeed, it should not be possible for the programmer to access this token, except throught the (tag*att) construct. In the same way typesets the &TeX logo. ’T kern lower hbox { ’E } kern ’X specifies the action to be linked to the SGML entity &TeX. By way of explanation, the right quote ’ is an escape character. Thus, ’T stands for a letter T with (for technical reasons) category code ‘other’. The element in the macro definition should be translated, by the TANGLE equivalent, to an appropriate quantity. So long as the semantics are well defined, the translation can be made.

Conclusion In the humanities, it is becoming more widely ac- cepted that structured documents should be stored 418 TUGboat, Volume 16 (1995), No. 4

LATEX

Never again active characters! Ω-Babel Yannis Haralambous, John Plaice and Johannes Braams »Weißt Du, wo ich das Wasser des Lebens finden kann?« »An der Grenze Phantásiens«, sagte Dame Aiuóla. »Aber Phantásien hat keine Grenzen«, antwortete er. »Doch, aber sie liegen nicht außen, sondern innen.«

M. Ende, Die unendliche Geschichte Abstract This progress report of the Ω development team (the first two authors) presents the first major applica- tion of Ω: an adaptation of Babel, the well-known multilingual LATEX package, developed by the third author. We discuss problems related to multilingual typesetting, and show their solutions in the Ω-Babel system. The paper is roughly divided into two parts: the first one (sections 1–4) is intended for average LATEX users, especially those typesetting in languages other than American English; the second part (section 5) is more technical and will be of more interest to developers of multilingual LATEX software. TUGboat, Volume 16 (1995), No. 4 419

1 Introduction Ω-Babel is the first real-world application of Ω:we are in the process of adapting the multilingual LATEX package Babel by Johannes Braams (1991a, 1991b) to take advantage of the functionality of Ω.This allows safer and more complete LATEX typesetting of languages other than American English. Prob- lems due to technical limitations of TEX are solved; for example, the LATEX macros \MakeUppercase and \MakeLowercase have been replaced by Ω filtering processes. The whole process is simpler and more natural. In this progress report we present the first step in adapting Babel to Ω. There will be (at least) two more steps which we describe below; for more information, see section 5 (the technicalities). 1. Babel adapted to Ω;weuseDC font output. \MakeUppercase and \MakeLowercase macros are being replaced by macros launching transla- tion processes. Various input encoding transla- tion processes are being written. The inputenc and fontenc packages are being adapted (their Figure 1: Allegory: input (on the left) and Ω counterparts are called inpenc and fntenc). output (on the right) encodings, too close together. This step has been completed. 2. UC (Unicode Computer Modern) fonts will be released by spring 1996. These fonts contain bel (Bahasa, Breton, Catalan, Croatian, Czech, Dan- Latin, Greek and Cyrillic characters, and a cer- ish, Dutch, English, Estonian, Finnish, French, Gali- tain number of dingbats and graphical charac- cian, German, Hungarian, Irish, Italian, Lower or ters. Ω-Babel uses UC fonts for output: new upper Sorbian, Norwegian, Polish, Romanian, Scot- languages will be dealt with (Bulgarian, Es- tish, Slovakian, Slovenian, Spanish, Swedish, Por- peranto, Greek, Latvian, Lithuanian, Maltese, tuguese or Turkish), then Ω can make it easier for Russian, Vietnamese, Welsh, etc.). Alan Jef- you and give you better results. All you have to do frey’s fontinst will be adapted to make ex- is download the Ω implementation for your machine tended virtual fonts in UC encoding. from ftp://ftp.ens.fr/pub/tex/yannis/omega/ Latin letters with dieresis will be provided in systems or the top-level omega directory1;ifyou two versions: with high or low accent: French- use a T X implementation not already covered, then → E men like dieresis ( tréma) to be high, Ger- (kindly) suggest to the implementor that they → mans prefer to have it ( Umlaut) a little lower. consider including Ω support). Then download the 3. Arabic alphabet languages, Hebrew and Yid- Ω-Babel package from ftp://ftp.ens.fr/pub/tex/ dish will be added at some point during 1996. yannis/omega/macros/obabel or , install it on your 4. Soft hyphenation will be done through Ω trans- machine and use it! The basic syntax is the same lation processes. This allows dynamic loading as in Babel, but we will discuss new options and of hyphenation algorithms, independently of the functionality in section 4.1. process of format creation. There will be no Ω need to recompile formats when adding or chang- 3 General philosophy of combined and ing hyphenation patterns. It will also be possi- Babel ble to add new features to hyphenation (auto- In Fig. 1, the reader can see an allegory of how TEX matic processing of German „ck→k-k“, prefer- works: input (the worker on the left) and output ential hyphenations, etc.). 2 Practically, what does this mean for me? 1 At press time Ω has been ported to several UNIX ma- It means that if you are typesetting in some non- chines (Sun, Silicon Graphics and others), DOS (by Kraus American English language covered by current Ba- Kalle) and Macintosh (by Tom Kiffe). 420 TUGboat, Volume 16 (1995), No. 4

(the one on the right) are close together. For exam- the fact that there should be no ‘ff’, ‘fi’, ... ple, consider the fact that hyphenation patterns— ligatures, etc. which are a language-intrinsic feature—are described See 4.4 for a good example of the difference and in the output font encoding. In Fig. 2 you can see combined use of aliases and inherent transforms. how Ω remedies this situation: input and output are clearly separated and, in between, there is a big Hyphenation container (imagine a huge barrel), the Unicode en- Hyphenation must be done on the level where the coding. information is most device-independent: that is, the Whatever you type is first of all converted into Unicode level. Not only can you define hyphenation Unicode. This conversion is language dependent; algorithms using all possible 16-bit characters (for for example, the ASCII character ‘i’ does not mean example to hyphenate Welsh, which uses letters such the same thing in Turkish and in the other Latin- as “ˆw”), but your algorithm is automatically valid alphabet languages. Unicode is very big; so you will for any input or output encoding. We’ll come back hardly ever ask for something not available; even if to this issue later in 1996, when we reach step 3 of that happens there is a “private zone” where we can Ω-Babel development. temporarily store characters of our own choice. Once inside Unicode we deal with pure device- Upper/lowercasing independent information: we can process it in many This is certainly not a trivial process: different let- different ways. In Fig. 2 we list five possible trans- ters may share the same glyph for their upper or Ω forms, all pertaining to -Babel, and we will discuss lower forms (example: both the Icelandic eth “ð” Ω these in turn. The translation processes needed and the Croatian dz “ñ” share the glyph “Д for for every language are activated when you enter the their upper form); letters may have different upper Ω corresponding -Babel environment. Our goal is to forms depending on the semantics of the word (ex- keep the technical aspects hidden: the average user ample: one possible upper form of the German “ß” typesetting in a given language does not need to be is “SS”, another one is “SZ”), or on local traditions aware of the different transformations we have just (in bad French typography, upper forms of accented described. letters are not always accented), or on the language Aliasing itself (example: the upper form of the Turkish letter “i” is “İ” and not “I”—the lower form of “I” is “ı” We call “aliasing” the making of aliases. An alias and not “i”) these are major incompatibilities, and is the expression of a character in some convenient hence we should be able to dynamically change the way: for example in 7-bit ASCII. InGermanBa- upper/lowercasing process. bel, when you write "s instead of \ss{},thisisan Finally, as Martin Dürst pointed out on the alias: (a) it is 7-bit, (b) you can very well avoid it if omega list2, there are six kinds of letter cases: your keyboard and screen support 8-bit characters, 1. regular lowercase (glyph becomes uppercase when and (c) in TEX, it used to be handled using active characters. we apply the uppercasing process); 2. regular uppercase (glyph becomes lowercase when Inherent transforms we apply the lowercasing process); These go deeper than aliases; they are: 3. fixed lowercase (glyph is invariant under the up- 1. either transforms that traditionally belong to percasing process), for example the “m” and TEX syntax, like --- for “—”, or ‘‘ for the En- “b” in the German „GmbH“; glish opening double quote, or ?‘ for the Span- 4. fixed uppercase (glyph is invariant under the ish inverted question mark “¿”; lowercasing process), for example the first letter 2. or transforms that historically derive from dacty- of a name; lographical keyboard traditions (for example, the French << that gets converted into “«” with 5. fake lowercase (the glyph is uppercase, it be- the appropriate spacing, or the Catalan l.l comes lowercase when we apply the uppercas- which produces “l.l”); ing process), for example the “i” in the mod- 3. or things that are supposed to be hidden from ern German word “STUDENTiNNEN” (=po- the user: for example, the Dutch ij which al- litically correct male and female students); ways produces the “ij” ligature, unless the user 2 Join us on the Ω e-mail discussion forum places something invisible in between: bewijs [email protected], by sending the usual subscription mes- vs. bi{}jektie; or, in Turkish and Portuguese, sage to [email protected]. TUGboat, Volume 16 (1995), No. 4 421

coming from going to keyboard DVI file

aliases changing case

inherent contextual analysis

Input encoding(s) hyphenation Output encoding(s)

Figure 2:TheΩ way: inserting Unicode between input and output encodings.

6. fake uppercase (the glyph is lowercase, it be- 4.1 Ω-Babel syntax comes uppercase when we apply the lowercas- To be able to use Ω-Babel you have to load the ing process), for example the “I” in the the same omega package: this is done automatically if you modern German word “StudentInnen”, written use either inpenc (the input encoding package) or in lowercase type. fntenc (the output font encoding package). The Ω introduces two new commands to handle “fixed” former can take as an option an input encoding (the case (\fixedcase) and “fake” case (\fakecase). Us- reader can find a list of such options on Table 3), ing these commands, you can write the default value is lat1 (ISO Latin-1). The latter can take only one option for the moment: T1.Asof \fixedcase{T}ruth step 2 of Ω-Babel development a new encoding will be added: UT1. Here is an example of the loading of to be sure that your word will always be “Truth, these packages: with a big T” or \usepackage[stmac]{inpenc} \fixedcase{S}tudent\fakecase{I}nnen \usepackage[T1]{fntenc} As in the original Babel package, you load Ω-Babel to obtain correctly spelled politically correct (fe)male by using the command \usepackage,andbygiv- students in German. The argument of \fixedcase ing the names of languages you are going to use as or \fakecase must be a single letter. an optional argument. These names are separated In Table 1 we present some examples of the use by commas, and the last one becomes the “default” of the different case-related commands. Note in the language, as in first example, that—contrary to the usual TEX up- percasing commands—math mode is not affected. \usepackage[turkish,german,francais]{obabel} The names for languages are the same as in original Contextual analysis Babel. This transform is perhaps less important for Latin- Once Ω-Babel is loaded, you are in the “default alphabet languages (although it becomes important language”: captions, date, hyphenation, 7-bit input when you want to use a “long s” at the beginning of and typographical specifications are adapted. a word). It is extremely important for Greek (final Contrary to the original Babel where the com- or medial sigma), Hebrew (there are five letters with mand \selectlanguage was used to switch between medial and final form), and especially for the Arabic languages, in Ω-Babel you have to use an environ- alphabet. ment, called lang. Here is an example: 4 Details on each language \documentclass{article} \usepackage[stmac]{inpenc} Before we start considering languages one by one, a \usepackage[T1]{fntenc} brief description of Ω-Babel syntax. \usepackage[germanb,turkish,% 422 TUGboat, Volume 16 (1995), No. 4

\MakeUppercase{is it an $a$ or a $b$?} → IS IT AN a OR A b \MakeUppercase{mon \oe il} → MON ŒIL (in German) \MakeUppercase{ma"se oder ma"?} → MASSE ODER MASZE? \MakeLowercase{\MakeUppercase{ma"ze}} → maße (in Turkish) \MakeUppercase{kap\i y\i{} i\c ceri} → KAPIYI İÇERİ \MakeLowercase{BROWN} → brown \MakeLowercase{\fixedcase{B}ROWN} → Brown \MakeLowercase{\fixedcase{S}TUDENT\fakecase{i}NNEN} → StudentInnen

Table 1: Some examples of upper/lowercasing. francais]obabel} mon mari!’’ if the clever option is on), the result \begin{document} will be the same: « Ciel, mon mari! ». Not a sin- gle character is active, so there can be no possible Histoires d’oiseaux en deux langues : interference with other TEXorLATEX macros. When we pass to step 2 of Ω-Babel develop- \begin{lang}{german} ment, francais will also act on the “Unicode → "Uber allen Gipfeln ist Ruh, output font” level and switch to low dieresis letters3. die V"oglein schweigen im Walde... \end{lang} 4.3 German \begin{lang}{turkish} The German features are loaded by the germanb op- Kedinin yakalad\i\u g\i{} ku\c sun tion. All original Babel aliases have been kept: t\"uyleri havada u\c cu\c suyordu... "a \"a, also implemented for the other lowercase \end{lang} and uppercase vowels. \end{document} "s to produce the German ß (like \ss{}). "z to produce the German ß (like \ss{}). This is because Ω uses a stack for translation "ck for ck to be hyphenated as k-k. processes: every time you enter a lang environment, "ff for ff to be hyphenated as ff-f,thisisalso Ω pushes a set of translation processes on the stack implemented for l, m, n, p, r and t Ω (see also section 5); every time you leave it, pops "S for SS to be \MakeUppercase{"s}. a set of translation processes from the stack. The environment approach is also essential for "Z for SZ to be \MakeUppercase{"z}. typesetting reasons: in right-to-left languages (Ara- "| disable ligature at this position. bic, Hebrew, etc.), line breaking is done differently "- an explicit hyphen sign, allowing hyphenation in depending on whether we are in “global” or in “en- the rest of the word. capsulated” right-to-left mode. "" like "-, but producing no hyphen sign (for com- As in the original Babel, the \languagename pound words with hyphen, e.g. x-""y). macro contains the name of the language. "~ for a compound word mark without a break- Finally you have the following additional Ω com- point. mands: \fixedcase and \fakecase as described above, and a command \omegaversion which re- "= for a compound word mark with a breakpoint, turns the version of your Ω implementation. allowing hyphenation in the composing words. Let us now take one by one the languages cov- "‘ for German left double quotes (looks like „). ered by Ω-Babel to see what has changed. "’ for German right double quotes. "< << 4.2 French for French left double quotes (similar to ). "> for French right double quotes (similar to >>). French features are loaded by the francais option. Besides the usual hyphenation, caption and date 3 Default letters with dieresis will carry a “low” accent, changes, Ω-Babel transforms the punctuation you French “higher” accented letters will be the exception, in- type, whether you include blank spaces or not. troduced by an additional translation process: this decision of the Ω team has no political connotation %,itcomesjust For example, whether we write << Ciel, mon from the fact that French letters with tréma are far rarer than mari ! >> or <> (or even ‘‘Ciel, German letters with Umlaut. TUGboat, Volume 16 (1995), No. 4 423

(description taken from the source file, germanb.dtx). This is not the best way of solving this problem: Maybe it is not very clear from the description above, we are forced to use DC fonts (until we reach step when you should use "z instead of "s: in fact, they 2ofΩ-Babel development), and these fonts have an both produce exactly the same result, but when automatic ligaturing mechanism to produce the lig- they are uppercased, the first becomes “SS” and the atures: by inserting a zero-length skip we avoid the second “SZ” (for example, „MASSE“ comes from ligature, but lose a possible kern between the letters. „Masse“ and „MASZE“ from „Maße“). The forthcoming UC fonts will have no internal It should be noted also that although “French ligatures: all ligatures will be provided by transla- double quotes” are called “French”, they are not tion processes, so that we can activate and deacti- typeset with the proper French spacing, as in the vate them ad libitum. French Ω-Babel style. The UC fonts will also contain an “ft” ligature 4.6 Catalan and closely kerned versions of “ck” and “ch” (as re- The Catalan features are loaded by the catalan op- quested by Frank Mittelbach in 1991), and the pos- tion. We provide the following inherent transforms: sibility of typesetting with a “long s” as in old Ger- l.l and L.L which produce “l.l” and “L.L” respec- man (the “long s” is in fact a Unicode character, tively. Of course, these can also be typeset by using and the UC fonts will contain all kind of ligatures the aliases "ll and "LL, as in the original Babel “long s + i”, “long s + l”, ...). style. We must point out that for the moment this 4.4 Dutch character is produced in a very unorthodox way (28 Dutch features are loaded by the dutch option. Once lines of code!!). We will obtain real typesetting of again, all original Babel aliases have been kept. We Catalan only after step 2 of Ω-Babel development, have included one automatic transformation: ij and since “l.l” and “L.L” are characters of the UC fonts IJ produce the “ij” ligature, in lower and upper (this is not the case for DC fonts: the dots have to form. To avoid this ligature, it suffices to introduce be dragged to the right place...). an empty group between the letters, or any other “invisible” command. 4.7 Spanish Dutch is a fine example of separation of aliases The Spanish features are loaded by the spanish and inherent transforms. Consider for example the option. All aliases requested by the author of the case of the letter “ï” in the word „ongeïnteresseerd”. original Babel style have been included in the Ω- When this word is hyphenated as „onge-interesseerd”, Babel adaptation, except one: ~n ~N for ñ, Ñ. In the letter “i” loses the dieresis (the dieresis is there TEX, the character ~ is traditionally used to obtain to indicate that “ei” is not a diphthong; by hyphen- a non-breakable space, and this should be valid for ating at that location there is no doubt any more all languages. that this is the case, so the dieresis is useless). In some languages (like in Greek) one can argue On the TEX level, Babel solves this problem that letters carrying the tilde accent do not appear by using a \discretionary command. This is an at the beginning of a word. This is unfortunately essential transformation, inherent to the Dutch lan- not the case of Spanish (we found four such words guage. Hence, we have both an alias and an inherent in a pocket dictionary: ñandú, ñoño, ñudo, ñudoso, transform: there might be more...). That’s why we decided alias inherent not to retain this alias for Spanish (fortunately, the −−−→ −−−−−→ "a 0x00e4 \allowhyphens% author of the Spanish style also has a second alias \discretionary{-}{U}{^^^^00dc}% for the same letter: ’n ’N). \allowhyphens 4.8 Turkish 4.5 Portuguese The Turkish features are loaded by the turkish op- Portuguese features are loaded by the portugues tion. This language has two versions of letter “i”: option. Portuguese has just a few aliases, similar to with and without dot. The glyph “I” is the upper- those of the German style. The important fact is case form of letter “ı” and the glyph “İ” is the upper- that Portuguese has a special inherent transform to case form of letter “i”. The distinction is essential, avoid ‘ff’, ‘fi’, ‘fl’, ‘ffi’ and ‘ffl’ ligatures. We obtain both for hyphenation and for upper/lowercasing. To this by inserting between these letters the character solve this problem, we have defined new codes in zero width space, which—when going to the DC (the private zone of) Unicode, for the Turkish up- output fonts—becomes a \kern0pt command. percase form of ‘i’ and the Turkish lowercase form 424 TUGboat, Volume 16 (1995), No. 4

of ‘I’. Whenever you switch to Turkish, the inher- Input encoding (for example, Macintosh 500 ent translation process sends all of your (otherwise Standard Roman → Unicode, or codepage innocent) ‘i’s and ‘I’s to these far away locations in 437 → Unicode, etc.) thecode(0xe083 and 0xe084, that is decimal 57475 Aliases (for example, "a → ä, "z → “spe- 1000 cial” ß, etc.) and inherent transforms (for and 57476!!), so that Ω has no doubt on the infor- example, French guillemets, Dutch ‘ij’ lig- mation it is processing. Of course, after processing, ature, avoiding ‘ff’ ligatures in Turkish and we return to the usual ‘i’ and ‘I’ glyphs of the DC Portuguese, etc.) fonts. Hyphenation (not available yet) 2000 Like French, Turkish needs special punctuation Contextual analysis (Greek final sigma, 2500 spacing for the colon, exclamation mark and equal Hebrew final letters, Arabic alphabet con- sign. This is also done through the inherent trans- textual forms, etc.) lation process. Case change (lower to uppercase, case in- 3000 Finally, like Portuguese, Turkish avoids ‘ff’-like version, etc.) ligatures: the same methods are applied. Output encoding (for example, Unicode to 3500 DC, or Unicode to UC,etc.) 4.9 Breton, Danish, Estonian, Finnish, Galician, Polish, Slovene, Upper Table 2: IDs for usual translation tasks. Sorbian These language styles use aliases, mostly similar to when there is a process of a given ID in a given list, those of the German style (Breton aliases and in- and you push upon it a list which has no process herent transforms are similar to the French ones, a with the same ID, then that process remains active. coincidence?). We have adapted these aliases; there So, for example, if you attribute ID 2500 to a have been no further changes. contextual analysis process, and ID 1000 to an alias- 4.10 Bahasa, Croatian, English, Czech, ing and inherent transform, then you can push the Irish, Italian, Lower Sorbian, latter upon the former: both will still remain active. Hungarian, Norwegian, Romanian, But if you wish to change the language, you will Scottish, Slovakian, Swedish push a process of ID 1000 (for the new language), and it will replace the previous one. Last, but not least, these language styles use no This means that we have to be consistent in aliases at all (either due to their simplicity, or to our choices of translation process IDs: we can al- the wishes (or keyboard facilities?) of the respective ways insert additional processes between the exist- authors). They all have the same trivial alias and ing ones, but to be able to push them away automat- inherent translation processes. ically when conditions change (for example when we 4.11 Forthcoming language styles switch languages), we must keep the same IDs. In Table 2 we present some IDswehavechosenforthe To prepare a Babel or Ω-Babel language style the tasks described in this paper. most difficult task is to create the hyphenation pat- So, in each Ω-Babel language style a CTP list is terns. We already have Welsh, Esperanto and Lithua- defined (CTP stands for “compiled translation pro- nian hyphenation patterns. As for non-Latin alpha- cesses”), consisting of a CTP of ID 1000 which con- bet languages, we have hyphenation patterns and tains both aliases and inherent transforms.4 Each fonts for Greek, Russian, Bulgarian and Serbian: all time we open a new lang environment, we push these languages will be covered by Ω-Babel, in step new CTPs over it; when we leave the environment it 2ofΩ-Babel development. is automatically popped off the stack (CTP loading 5 Let’s get technical! obeys TEX’s grouping rules). There are two main differences between TEXandΩ: 5.1 Description of available CTPs (a) the latter works with bigger numbers (more code 5.1.1 Input encoding CTPs positions, more fonts, more boxes, more registers, etc.), (b) it uses translation processes. Translation In Table 3 we list the input encoding CTPswehave processes are organized in lists, which are pushed prepared. on a stack. Inside a list, a translation process has 4 an ID, a (not necessarily integer) number between 1 The original idea was to split this CTP into one for ID and 4095. When you push a stack on a list, transla- aliases and one for inherent transforms, of s 1000 and 1500; but for speed reasons we have decided to bundle these two into tion processes with the same IDs replace each other; asingleCTP. TUGboat, Volume 16 (1995), No. 4 425

ISO Latin-1 lat1uni.ctp 0xe000 ISO Latin-2 lat2uni.ctp ↓ “Direct-to-Unicode” 8-bit table (see ISO Latin-3 lat3uni.ctp below) ISO Latin-4 lat4uni.ctp 0xe0ff ISO Latin-5 lat5uni.ctp 0xe100 ISO Latin-6 lat6uni.ctp ↓ Fake ASCII (see below) Macintosh Standard Roman stmacuni.ctp 0xe17f Macintosh Central Europe cemacuni.ctp 0xe180 Uppercase German ß (glyph: SS) Macintosh Croatian hrmacuni.ctp 0xe181 Lowercase special German ß ("z) Macintosh Icelandic ismacuni.ctp 0xe182 Uppercase special German ß (glyph: Macintosh Turkish trmacuni.ctp SZ) Windows ANSI ansiuni.ctp 0xe183 Uppercase Turkish ı (glyph: I) IBM codepage 437 cp437uni.ctp 0xe184 Lowercase Turkish İ (glyph: i) IBM codepage 850 cp850uni.ctp 0xe185 Uppercase letter kra (glyph: K) IBM codepage 852 cp852uni.ctp 0xe186 Uppercase Afrikaans ’n (glyph: ’N) IBM codepage 857 cp857uni.ctp 0xe187 Uppercase long s (glyph: S) IBM codepage 860 cp860uni.ctp 0xe188 Uppercase h (glyph: H) ¯ ¯ IBM codepage 861 cp861uni.ctp 0xe189 Uppercase ¨t (glyph: T)¨ 0xe18a Uppercase ˚w (glyph: W)˚ Table 3: Available input encoding CTPs. 0xe18b Uppercase ˚y (glyph: Y)˚ ֓ ֓ 0xe18c Uppercase a (glyph: A) 0xe18d Uppercase  (glyph: J) Any suggestions for further enhancement of this 0xe18e TEXcharacter list will be welcome (for the moment we are deal- 0xe18f Uppercase ˇ (glyph: J)ˇ ing only with Latin alphabet encodings, Greek and 0xe190 Apple Macintosh logo Cyrillic will follow, the rest is for... later %). 0xe191 Fixed case modifier There is not much to say about these transla- 0xe192 Fake case modifier 0xe1a0 tions. In the Macintosh encodings we have chosen π Ω ↓ Needed for Greek and Armenian to send and to the corresponding Greek letters 0xe1cf in Unicode (although they are supposed to be math symbols), ∆ to the math symbol increment and Table 4: How Ω uses the Unicode private zone. not to the Greek letter Delta, ♦ to the geometric shape lozenge, and the Macintosh Apple to the (private) Unicode character 0xe090 (yes, we have reserved a slot for the Apple logo: after all Yannis Language styles with no inherent transforms owes that to those little machines “for the rest of (other than ‘ff’ ligatures, --- punctuation etc.) use us”5). the common CTP minilang.ctp. In the codepage 437 to Unicode translation, we 5.1.3 CTPs for hyphenation send 0xd5 (a small vertical stroke) to Unicode 0x02c8 modifier letter vertical line. Once again, any These are under development. suggestions will be welcome. 5.1.4 CTPs for contextual analysis 5.1.2 CTPs for aliases and inherent These are also under development; the Arabic one is transforms up and running, but we have to bundle the complete There is one CTP for every Ω-Babel language style, package. except for Bahasa, Croatian, English, Czech, Irish, 5.1.5 Case change CTPs Italian, Lower Sorbian, Hungarian, Norwegian, Ro- manian, Scottish, Slovakian and Swedish which share We have prepared CTPs for uppercasing and low- a minimal CTP called minalias.ctp. The name of ercasing, called uppercas.ctp and lowercas.ctp. each CTP is formed by the two-letter ISO code for These are symmetric: both uppercase followed by the corresponding language, as described in Hara- lowercase, as lowercase followed by uppercase are lambous (1992a), and the extension .ctp: for ex- equal to the identity. This has been achieved by at- ample: fr.ctp, de.ctp,etc. tributing a few special code positions in the private zone of Unicode. In Table 4 the reader can find an 5 No, we have not reserved any slot for the Windows overview of the private zone of Unicode as we are logo %. using it at the present time. 426 TUGboat, Volume 16 (1995), No. 4

This table will certainly change in the future, contextual form, we perform the opposite offset and but we promise to keep the changes upwards com- our string becomes once again a regular TEXcom- patible. mand. We will return to this in more detail when What are the “Direct-to-Unicode” slots for? Sup- Arabic Ω is released. pose you are writing a macro which will produce The fixed and fake case modifiers affect the char- a character in the 8-bit range of Unicode (which acter following them: they are introduced by the is similar to the ISO Latin-1 encoding), for exam- \fixedcase and \fakecase commands, and are only ple Ç, which has code ^^c7. If you write ^^c7 or considered by the uppercas and lowercas trans- \char"C7 (or Ç,usinganISO Latin-1 screen font), lation processes, in the following way: a character then Ω will pass this character through the input following the fixed case modifier is not affected by encoding filter: if your macro is used on a machine either uppercas or lowercas; a character following with a different input encoding, the output will not the fake case modifier (like the ‘I’ in StudentInnen) bethesame.OneneedsawaytoproduceaUnicode is converted “the other way around”: uppercas will character ^^^^00c7 independently of the input en- call lowercas,andlowercas will call uppercas,for coding. This can always be done by temporarily the specific character only. deactivating the input encoding: a more simple so- The various strange characters you see on the lution is to apply an offset of 0xe000 to the codes lists are not included in Unicode for various reasons, that must remain invariant by the input re-encoding we need them in particular to keep uppercas and process: use ^^^^e0c7 instead of ^^^^00c7 in your lowercas symetric. macro, and the result will always be Ç (of course, CTP the end user will be able to utilize macros like \c{C}: 5.1.6 Output font s this is how these macros are defined in our system). We have already written the CTP for the Unicode And what is this “fake ASCII” all about? It is a → DC font encoding: all characters included in the trick similar to the previous one, but it sends the in- DC font table are used as is, others are constructed formation further down the chain of translation pro- by using the \accent primitive. For step 2 of Ω- cesses. It is used to send information to one of the Babel development, we will prepare a Unicode → last translation processes (for example the output UC translation process. We expect users to write encoding translation process) which should not be their own translation processes for other output font modified at all by the intermediate processes, while encodings. staying in the same buffer. A buffer is a sequence of bytes read by Ω and processed by translation pro- 6Conclusion cesses: Ω will stop reading a buffer as soon as it We want TEX implementors to join us in the Ω ad- encounters a character that is not of catcode 11 or venture and consider including Ω in their TEXdis- 12. Why do we need that? tributions; those based in Web2C should find it very Suppose you are writing Arabic. Contextual easy. There will be virtual UC fonts, based upon real analysis is entirely done inside a buffer.6 We may fonts in the 0x20-0xff range. also want the central letter of a word to be typeset in We want DVIware developers to consider mak- 7 red (this can be of great help in an Arabic grammar ing their DVI software compatible with our XVF and book). Inserting a \red command inside the word XFM files (extended VF and extended TFM), which will completely break the contextual analysis. We are 16-bit. For the moment we have extended Peter solve the problem by transposing the characters \, Breitenlohner’s dvicopy into a 16-bit version (which r, e, d to the private Unicode zone (by a fixed off- we call xdvicopy); using this utility we are able to set of 0xe000). The contextual analysis translation de-virtualize extended virtual fonts into their under- process is aware of the fact that characters in that lying real fonts, which for the moment are all only range shall not interfere in the process of performing 8-bit. De-virtualized DVI files are then compatible contextual analysis. Once the contextual analysis is with every DVI software in the market. But it would done, and our candidate for being red has the right be quicker and more practical for the user if software

6 recognized XVF and XFM files directly (after all, the Otherwise we would have to record somewhere the form DVI standard allows up to 32-bit characters: our of the last-read letter: this is possible of course, but we won’t know why the buffer was terminated: was it something harm- DVI files conform to the standard). less, like an empty group (in which case the contextuality is Finally, we want users to give Ω and Ω-Babel kept), or was it something as horrible as a \newpage com- a hard try, and us a hard time in debugging the mand? In which case we had better finish our word before Ω going to the next page. software, the macros and (later on) the fonts. will 7 This is rendered as a grey scale in TUGboat. soon grow a lot: several Oriental TEX packages are TUGboat, Volume 16 (1995), No. 4 427 already ready and waiting to be adapted to Ω (see Velthuis, F. J. Devanagari for TEX, 1991. references below), but before this happens, we want Haralambous, Y. and J. Plaice. “Ω,aTEX Exten- to be sure that the Latin-Greek-Cyrillic part of it is sion Including Unicode and Featuring Lex-like clean and robust. Filtering Processes”. In Proceedings of the 1994 EuroTEX Conference (Gdansk). 1994. References Andulem (Amnulehe), A. “The road to Ethiopic ⋄ Yannis Haralambous TEX”. TUGboat 10(3), 352–354, 1989. 187, rue Nationale Braams, J. “Babel, a multilingual style-option sys- 59800 Lille, France tem for use with LATEX’s standard document Email: haralambous@ styles”. TUGboat 12(2), 1991a. univ-lille1.fr Braams, J. “An update on the Babel system”. TUG- URL: http://www.ens.fr/ boat 14(1), 1991b. ~yannis Haralambous, Y. “TEX and those other languages ⋄ John Plaice ... ”. TUGboat 12(4), 539–548, 1991. Université Laval Haralambous, Y. “TEX Conventions Concerning Québec, Canada Languages”. TTN 1(4), 3–10, 1992a. Email: [email protected] Haralambous, Y. TEX et les Langues Orientales. ⋄ Johannes Braams Paris, 1992b. TEXniek Haralambous, Y. “Typesetting the Holy Qur’¯an Kooienswater 62 with TEX”. In Proceedings of the 2nd Interna- The Netherlands tional Conference on Multilingual Computing— Email: [email protected] Arabic and Latin script (Durham). 1992c. Haralambous, Y. “The Khmer Script tamed by the Lion (of TEX)”. In Proceedings of the 14th TEX Users Groups Annual Meeting (Aston, Birming- ham). 1993a. Haralambous, Y. “Un système TEX berbère”. In Actes de la table ronde internationale « Phonologie et notation usuelle dans le domaine berbère », INALCO. 1993b. Haralambous, Y. “Indica, a Preprocessor for In- dic Languages—Sinhalese TEX”. In Proceedings of the 15th TEX Users Groups Annual Meeting (Santa Barbara). 1994a. Haralambous, Y. “Tiqwah: a Typesetting System for Biblical Hebrew, based on TEX”. In Pro- ceedings of the Fourth International Colloquium “Bible and Computer: Desk and Discipline, The impact of computers on Bible Studies” (Amster- dam). 1994b. Haralambous, Y. “Sabra: a Syriac TEX system”. In Proceedings of the First International Forum on Syriac Computing (Washington, D.C.). 1995. Haralambous, Y. and J. Plaice. “First Applica- tions of Ω: Greek, Arabic, Khmer, Poetica, ISO 10646/unicode,etc.”.InProceedings of the 15th TEX Users Groups Annual Meeting (Santa Barbara). 1994. Mittelbach, F. “E-TEX: Guidelines for Future TEX Extensions”. TUGboat 11(3), 1991. Plaice, J. “Progress in the Ω Project”. In Proceed- ings of the 15th TEX Users Groups Annual Meet- ing (Santa Barbara). 1994. 428 TUGboat, Volume 16 (1995), No. 4

Calendar

1996 May 7 DANTE TEX–Stammtisch at the Universit¨at Bremen, Germany. Jan 11 UK TEX Users Group, School (For contact information, see Feb 6.) of Oriental and African May 29 GUTenberg ’96, on TEX distributions, Studies, London. Structured and GUTenberg Annual Meeting, Documentation (with BCS Paris, France. electronic publishing specialist Jul 18 – 21 SHARP 1996: Society for group). For information, e-mail the History of Authorship, [email protected] Reading and Publishing, Feb 6 DANTE TEX–Stammtisch at the Fourth Annual Conference, Universit¨at Bremen, Germany. For Worcester, Massachusetts. information, contact Martin Schr¨oder For information, contact the ([email protected]; telephone American Antiquarian Society, 0421/628813). First Tuesday (if not [email protected]. a holiday), 18:00, Universit¨at Bremen th th Jul 28 – TUG 17 Annual Meeting: MZH, 28359 Bremen, 4 floor, Aug 2 “Poly-T X”, Dubna, Russia. across from the elevator. E For information, send e-mail to DANTE Mar 5 TEX–Stammtisch at the [email protected]. See the Universit¨at Bremen, Germany. Call for Papers, next page. (For contact information, see Feb 6.) Aug 20 TUGboat Volume 17, No. 4: Feb 20 TUGboat Volume 17, nd Deadline for receipt of technical 2 regular issue: manuscripts (tentative). Theme Deadline for receipt of technical issue, contributions by invitation. manuscripts (tentative). Sep 23 PODP, Workshop on Principles Mar20 UKTEX Users Group, University of of Document Processing, Warwick. TEX and the Internet. Xerox Palo Alto Research Center, Local organizer, Malcolm Palo Alto, California. For information, Clark. For information, e-mail visit the PODP Web page at [email protected] http://www.cs.umbc.edu/ Mar 27 – 29 DANTE ’96 and 14th general conferences/podp/. DANTE meeting of e.V., Sep 24 – 26 EP96, the International Conference Universit¨at Augsburg, on Electronic Documents, Germany. For information, Document Manipulation and contact Gerhard Wilhelms Document Dissemination, ([email protected]). Xerox Palo Alto Research Center, Apr 2 DANTE TEX–Stammtisch at the Palo Alto, California. Universit¨at Bremen, Germany. Deadline for submission of papers: (For contact information, see Feb 6.) 1 April 1996. For information, contact Apr 23 TUGboat Volume 17, [email protected] or visit 2nd regular issue: http://www.xsoft.com/XSoft/ep96.html. Deadline for receipt of news items, Oct 21 TUGboat Volume 17, No. 4: reports (tentative). Deadline for receipt of news items, th May 2 – 4 BachoTEX ’96: GUST 4 reports (tentative). Annual Meeting in Bachotek, Poland, “The World around For additional information on the events listed TEX”. For information, above, contact the TUG office (415-982-8449, fax: contact Jola Szelaty´nska 415-982-8559, e-mail: [email protected]) unless other- ([email protected]). wise noted.

Status as of 31 December 1995

TUGb oat Volume No

The th Annual T X Users Group Meeting

E

OT X

E

July August

Organization TUG CyrTUG JINR

CALL FOR PAPERS

Dear Friends

So the time has arrived when T X the Polyglot who T X

E E

has for manyyears happily sp oken many dierent lan

guages written in the Latin alphab et extends its knowl

edge in the eld of other alphab ets During the Summer

of a visit is planned to Russia where T X will have T X

E E

its rst practical session in Cyrillic

Russia is that large country with its enormous spaces

inhabited by those enigmatic Russians who started the

century with a Revolution and ended it with Pere

stroyka A country who founded a brilliant mathemat

ical school colonized the Cosmos and conquered the

world with its literature music and ballet

T Xuser So what awaits the T X user who plans to attend

E E

TUG TUG

At Moscows international Sheremetevo Airp ort con

ference participants will b e met by a member of the orga

nizing committee and escorted by bus to Dubna where

th nd th

from July to August the TUG conference

will take place see b elow for more ab out Dubna If

for some reason or another you envision cold the taiga

and white b ears then we can reassure you Dubna is in

the Europ ean part of Russia and if you want to see the

ice on the nordic o ceans you will have to travel further

than you would to reach the subtropics of the Black Sea

shore Indeed you will so on nd that the pine forest

in which the comfortable town of Dubna is situated will

remind you of a park In July and August the weather

is mostly warm and sunny with an average temp erature

◦ ◦

C

Guests will be housed in a comfortable hotel of C

on the banks of the Volga river in single or double ro oms

hot water shower telephone and television The Rus

sian cuisine is characterized by its abundance so one

can forget ab out slimming

The so cial program includes a picnic on the picturesque

banks of the Volga where we will b e taken by b oat a bus

excursion to Sergiev Posad the center of the Russian

Ortho dox Church where Andrey Slephkhin works

see his article on page and on the last day a

visit to Moscow following which the participants can

be dropp ed of at the airp ort to y home or at one of

the railway stations if they want to prolong their visit

TUGb oat Volume No

The conferences preliminary program will be an

nounced as so on as we receive from you dear read

ers prop osals for presentations courses that you

would like to teach or attend p oster sessions or any

problems or sub jects that interest you Please

send your suggestions to the conference electronic

TUGpdsjinrru address TUGpdsjinrru

Write to us all your prop osals will enrich the

theme of our conference

 Polytechnic

Polymath

OT X

E  Polyglot



Practical Information Transportation

Conference costs The Organizing Committee will arrange direct

transp ortation by bus from the Sheremetevo Air

The Conference Committee foresees a cost in the

p ort to Dubna km north of Moscow The Sec

range USD This sum includes the com

retariat should be informed of the ight number

plete cost of the conference namely the registration

precise date and time of arrival Moscow time no

fee lo dging nights with six breakfasts lunches

later than four working days b efore a participant

and dinners coeetea breaks so cial events and

wishes to b e met at the airp ort It is our intention

transp ort from Sheremetevo Airp ort to Dubna The

to have each participant met by a member of Orga

payment should be made in the following way a

nizing Committee Details will b e available later

nonrefundable sum of per p erson should be

$

transferred to a bank account to be announced

Organizing Committee

b efore June st After receipt of that sum an ocial

invitation necessary for obtaining a visa see be

Vladimir Vasilievitch Korenkov

low will b e faxed to the participant The rest will

Dubna

be payable in cash up on arrival at the Conference

korenkovcvjinrru

no credit cards or cheques can b e used in Dubna

We hop e to arrange bursary funds for supp ort of stu

dents and those participants who demonstrate need

Irina Anatolievna Makhovaya

Moscow

Visas

irinamirmsksu

Most of the visitors from outside Russia will

need a visa to attend the Conference There

Sebastian Rahtz Oxford UK

fore for arranging a visa into Russia participants

srahtzelseviercouk

should inform the Conference Secretariat Mrs

Program Committee

N Dokalenko Email natalyyprjinrdubnasu

Fax or of their and

Evgeniy VasilievitchPankratiev

p ossibly the accompanying p ersonss full name

Moscow

date of birth citizenship passp ort number arrival

pankratshademsuru

and departure dates The Secretariat will forward

by fax the visa supp ort message to the participants

Michel Go ossens Geneva Switzerland

with which they should apply for visas to the near

goossenscernch

est Russian Embassy or Consulate Please note that

you should apply for a visa valid for Dubna Moscow

Mimi Burbank Florida USA

1

and Sergiev Posad

mimiscrifsuedu

1

If you plan to visit other cities in Russia you should obtain the relevant do cuments and join them to the visa application

so that the names of all places to b e visited can b e entered on the visa form as required

TUGb oat Volume No

Deadlines Nuclear Research JINR the name of Dubna has

constantly b een in the pages of the worlds newspa

Submission of abstracts February

p ers and journals Dubna is one of the world centres

Acceptance signied to authors February

for fundamental research in nuclear physics The

Preliminary articles March

Joint Institute plays an imp ortant role as a co ordi

Prop osals for workshops demos April

nator of investigations of the scientists from JINR

p oster sessions

memberstate institutes Wide international scien

Registration and transfer of a May

tic and technical co op eration is one of the funda

nonrefundable sum of per

$

mental concepts of the JINR

person to a Dubna bank

Dubna is indeed a town of international friend

Visa supp orting information June

ship Foreign sp eech can b e heard everywhere But

Revised articles June

the words no matter in which language they are

Start of Conference July

pronounced are clear to everybo dy friendly co op

Welcome to Dubna

eration and fraternity unite all the physicists and

mathematicians living and working in Dubna into

Dubna was founded in when the Convention es

an international scientic community

tablishing the Joint Institute for Nuclear Research

On Octob er Dubna op ened its do ors

was signed The town is situated on the picturesque

to its rst university International University of

banks of the Volga river and the Moscow sea

Dubna Nature So ciety and Man The univer

km to the north of Moscow One can reach Dubna

sity is comp osed of ve cathedra or faculties in

from Moscow within hours going by car by bus

cluding so cio economic sciences ecology and earth

or by express train It will take you hours to

science computer education linguistics and health

go to Dubna from the Sheremetevo International

and physical education Two more faculties law

Airp ort Waterways connect Dubna not only to the

and government and technology are also b eing

Russian Volga cities but also to the waters of the

contemplated

Black the Caspian the Baltic and the White seas

The town has great exp erience in holding inter

There is no harmful environmental impact from

national conferences and exchanges of delegations

the industrial plants this together with the large

between countries in the sphere of science educa

tracts of forest in the environs of Dubna and the

tion and culture Dubna and La Crosse Wisconsin

vast water area dotted with small islands makes

USA are sister cities Dubna is famous for its hospi

the area quite attractive for tourism and rest The

tality Famous scientists public gures and states

Volga embankment is one of the prettiest parts of

men from dierent countries visit Dubna They are

the town In springtime the streets of Dubna are

always impressed by the gracious welcome they re

full of the o dour of lilacs the apple trees are pink

ceivein Dubna and warm generosity which Dubna

white in summer lime trees maples birch trees

residents demonstrate

and p oplars make the town seem totally green in

autumn the town is all golden excepting the ever

A few words on Moscow

green of old pine trees The towns mo dern lo ok

Moscow the capital of Russia has a p opulation of

harmonizes with the quietness of the surrounding

some nine million p eople It is a city rich in cultural

forest The town was built in the midst of a forest

architectural and historical monuments and at the

There are separate patches of trees in the town it

same time b oasts a rapidly developing mo dern ur

self and the town park is just a part of the forest

ban community with brand new blo cks of ats long

It takes just a few minutes to get to the forest from

straight and broad avenues parks gardens stadi

the shopping centre on fo ot A few minutes walk

ums schools cinemas department stores recreation

and you are outside the city limits

centres bridges and highways Though forward

Small as it is Dubna is a real metrop olis It

lo oking it cherishes the memory of its past and

is a scientic metrop olis It is a big little city as

its old sections lend it a sp ecial charm

a visiting American scientist called it many years

ago Since the foundation of the Joint Institute for

See page for views of some lo cal scenery

Lo ok for current information on the WWW at httpwwwscrifsuedumimitugtughtml 432 TUGboat, Volume 16 (1995), No. 4

Attending EuroTEX’95 in Papendal and Czech) participants were picked up later on the way to Papendal. In this way the travel expenses of Michel Goossens about forty people were kept to a minimum. This I arrived with the night train from Basel at great initiative, which, I hope, will be repeated in 8:29 precisely in Arnhem Railway station on Mon- the future, shows the enormous solidarity in the TEX day morning September 4th. I decided to take a community. It can serve as a proof that TEXisnot cab to Papendal, the Sports Center a few km out- only a (or “the”) utility to compose beautiful docu- side of the town, where I arrived just before nine. In ments in most of the languages written by mankind, no time I was registered and given two keys to my but it also brings people of various nations, cultures, room, where, as expected, I would spend only a min- and backgrounds together, and thus fosters commu- imal amount of time during the four next nights... nication, which is the basis of all human success. Indeed, while walking the fifty meters or so to The Conference Starts the breakfast area, I met many known faces, and I had to promise each one of them that we would have A few minutes before 2 p.m., the conference was a chat later during the conference. formally opened by Erik Frambach, the President of NTG. He welcomed all participants, and then A Truly International Gathering passed things over to me. In my role as President TUG NTG EuroTEX conferences are quite different from the of , I congratulated for the magnificent TUG conferences, in that many more participants work they had done for allowing so many partici- from Russia and Central Europe participate, and pants from different parts of Europe to take part in TUG this year was no exception. In all 103 TEXusers the EuroTEX meeting, and I underlined that from 18 different countries (4 from Belgium, 1 from fully supports all such initiatives and is doing its Canada, 7 from the Czech Republic, 2 from France, best to help all TEX users in the world. I there- 17 from Germany, 1 from Hungary, 2 from Lithua- fore invited everybody who wanted to express con- nia, 18 from the Netherlands, 1 from Norway, 20 structive ideas about how to develop or improve the from Poland, 15 from Russia, 1 from South Africa, actions of TUG in the area of supporting the inter- 2 from Spain, 1 from Sweden, 3 from Switzerland, national community better, to find me during the 1 from Turkey, 6 from the United Kingdom, and week for a discussion. Finally Johannes Braams, on 1 from the United States of America) came to Eu- behalf of the Program Committee, explained the few roTEX’95, where our hosts, the Dutch-speaking TEX changes that had to be introduced in the program in Users Group NTG, had prepared a nice, interest- order to accommodate a maximum of the wishes of ing, and extremely dense program of TEX and text- speakers and participants, and he gave a few details processing related presentations given by contribu- on logistics for the rest of the week. tors who are active in the various areas mentioned. Monday p.m. — Font Developments After breakfast the members of the Program Committee, Johannes Braams, Chris Rowley and Thus, well informed, the conference could start with myself, met to make final adjustments to the sched- the talk on VFComb, a program for designing vir- ule of the various talks and tutorials, taking into tual fonts by Alexander Berdnikov and Sergey Tirtia account the availability of the speakers, so that the from St. Peterburg (Russia). The main aim of their program could be communicated to the participants MS-DOS program is to facilitate setting up virtual of the conference, who now started to arrive. fonts for use with CM and the Cyrillic LL-fonts. This program is especially interesting in that it constructs The EuroTEXBus font and user-defined ligature tables extracted from But before going any further let me explain how such various fonts and combines it with metric informa- a large group from Russia and Central Europe was tion from various tfm-files. The VFComp program able to come to Papendal. It was mainly thanks to not only supports the full syntax of .pl and .vpl the generous contributions of the NTG, who donated files, but also adds some symbolic variables and con- a sizable sum of money they had collected by sell- ditional operators to ease the production and debug- ing the 4AllTEX CD-ROM(s), plus over $1800 from ging of virtual fonts. the book auction that took place at TUG’95 in St. The next speaker, J¨org Knappen of Mainz (Ger- Petersburg Beach (Florida, USA) that a Polish bus many), described his work on version 1.2 of the DC was hired. In Warsaw the Russian, Lithuanian and fonts and the text companion symbol fonts. He first part of the Polish group boarded, while other (Polish gave an overview of the improvements introduced into version 1.2 with respect to the previous release TUGboat, Volume 16 (1995), No. 4 433 in order to cope with criticism in the areas of the simplifying text input, and put together hyphen- placement of accents, the design of the quotation ation tables. Church Slavonic has a lot of charac- marks, plus the outlines for various Polish, Czech, ters and they have very few common parts, so that Slovak diacritics, and the height of the umlauts. The designing them takes a lot of time. The main prob- text companion TC fonts try to address the problem lem, however, is that almost every word in Church of more clearly separating the symbols present in Slavonic texts has a diacritical mark. Since the the CM math fonts from the really mathematical placement of the diacritical mark is not fixed, and characters, and to make uniformly available to TEX the use of the \accent primitive has a lot of un- users several custom signs (currencies, trademarks, wanted side-effects, Andrey developed the various some arrows, a musical note, etc.) that are present letter-accent combinations as separate glyphs. By in the ISO standards 8859-1, 8859-2 and 6937. For carefully studying Church Slavonic texts it was found practical reasons J¨org proposes to put all those char- that some letter-accent combination could only oc- acters into two different fonts, TS1andTSA.Last cur in certain locations in a word. In this way, with but not least, the speaker underlined the importance the help of a set of special macros and using active of design size in fonts, since the linear scaling of a characters, the number of needed symbols could be font over a large range gives the wrong results. He kept below 256, the limit of symbols in a single font. therefore proposed encoding the design size of the Other problems he had to solve were coloring sym- font in the font name in each case by using the trail- bols (a practice occurring extremely frequently in ing four digits of the name to represent the design in such texts), numbering (numbers are represented by points (multiplied by a factor of 100). He therefore letter combinations), and encoding (several different has to rename a few of the present DC font names, encodings are actively used in the Cyrillic world). since one has only two characters left for weight and To help solve the last problem he proposes using shape. For instance the present dcssi10 would be- symbolic names to map to character codes and has come dcsi1000,anddcbxti10 is dcbi1000 in the implemented these ideas in the latest version of his new scheme. Thanks to J¨org’s work, and the work package. He is also working on Type1 variants of his done earlier by the LATEX3 team on math font en- fonts, and on extending his character set to include codings, it is now hoped that a proposal for the two older Slavonic letters, initial caps, and a special font math fonts will be reached soon, so that by next for headings. Finally, he has expressed a wish that summer the DC fonts will be promoted to the EC at some time in the not too distant future it might be fonts, and be accompanied by a useful and stan- possible to typeset a multilingual Bible with paral- dardized set of 256-character math fonts. lel texts in Church Slavonic, Greek, Latin, Hebrew, Just before the tea break, Jiˇr´ıZlatuˇska from and any other language. Brno (Czech Republic) gave a talk on how to use Olga Lapko of Mir Publishers (Moscow, Rus-

METAFONT and TEX together for typesetting text sia) then presented work she has been doing to- 1 and graphics. By using TEX’s extended ligature gether with Irina Makhovaya and other collabora- mechanism, label placement on diagrams generated tors of CyrTUG, on developing a Russian style for

by METAFONT , as well as the generation of curvi- the babel system that implements in a user-friendly

linear texts, can be accomplished in one METAFONT way the typographics and national peculiarities of pass and only requires a simple TEX interface. In- the Russian language, such as correct names for stitutional seals and other logos can thus be conve- some math operators, repeating signs in broken math niently generated. formulae, and Russian-character enumeration lists. Several font encodings are supported and are inter- Multiple Languages faced to 256-glyph Russian fonts.3 After the break Andrey Slepukhin (Sergiev Posad, In the next talk Johannes Braams reviewed his Russia) introduced the audience to the magnificent work on the babel system. The present release 3.5 world of old Church Slavonic typesetting.2 Andrey has a completely rewritten interface to deal with works for the Holy Trinity St. Sergius Lavra pub- shortcuts, introduces new ways to switch languages, lishing house, printers of Bibles and other texts in has been made compatible with LATEX2ε’s input and Church Slavonic. For his project of printing such font encoding packages, has added support for a con- texts he has to develop high quality fonts, tools for figuration file and many more different languages,

1 He presented this talk also at TUG’95, see TUGboat 16 (3), p. 223–228, 1995. 2 His article is published in both Russian and English in 3 Their article is published in both Russian and English this issue of TUGboat, p. 373. in this issue of TUGboat, p. 364. 434 TUGboat, Volume 16 (1995), No. 4

and offers an extended syntax for specifying hyphen- TEX Plotter, a program to create two- and three- ation patterns. dimensional pictures developed by Alexander Berd- The final talk of the afternoon was by Petr So- nikov and Sergey Turtia of St. Petersburg (Rus- jka from Brno (Czech Republic), who presented his sia), was presented next. The program is written work on hyphenation for compound words. His pa- in Pascal for MS-DOS, and plots functions depend- per was chosen at TUG’954 as the best technical ing on two variables. It allows one to obtain equi- paper by Knuth for pointing out problems with hy- line and surface representations of complex func- phenation that he himself had not considered. The tions without running into overflow problems with problem is with long compound words that occur TEX’s memory. The program has a menu-driven frequently in German, Dutch and Slavic languages. user interface which allows the creation and viewing In these languages constituent word parts are not of pictures in a variety of forms, including LATEX’s signaled by a hyphen or other fill character, thus picture environment, the epic/eepic package com- making it difficult to find the correct hyphenation in mands or emTEX \specials. Future releases will some cases. Petr proposed extensions to the hyphen- also support mfpic,PICTEXandEPS files. ation algorithm and primitives which would make it Gabriel Valiente Feruglio of Palma de Mallorca possible to deal with these cases. Perhaps an in- (Spain) then gave a detailed overview of the various teresting suggestion to be implemented in e-TEXor commutative diagram packages that are available. Ω? He compared eleven of them in terms of their ability After dinner Sebastian Rahtz headed a work- to generate complex diagrams, quality of documen- shop on Acrobat and electronic publishing. He pre- tation and generated output, ease of installation, sented tools that take advantage of LATEX to gen- user interface, resource requirements, and portabil- erate hypertext views of a document. In his pre- ity. The way a diagram is structured to increase sentation he made it clear that LATEX, HTML,and readability is a somewhat subjective matter, often PDF should be viewed as complementary represen- related to points of aesthetics, so that it is difficult tations, that each has its advantages and is suited for to say which package is the best in applications. In addressing the specific needs of some applications. his estimation, the familiarity of an author with the syntax of one package is often more important than Tuesday a.m. — Graphics and Packages the intrinsic power of other packages. The Tuesday morning started with a presentation After coffee Hans Hagen of Pragma (Zwolle, by Andrey Astrelin of Moscow (Russia), who talked the Netherlands) presented a paper on typesetting about a new implementation of graphics in TEX. chemical formulae with the PPCHTEX system he Of the three basic ways of introducing graphics in- wrote together with A.F. Otten.5 The system is side TEX (special fonts, using rules, or exploiting basedonPICTEX. Basic structures for often used the \special command) his implementation uses chemical structure diagrams are available as macros, the approach of extending TEX’s graphics capabil- and can be combined and “dressed” with radicals in ities by writing graphics commands via \special various way to obtain complex formulae. The syntax commands into the .dvi file, which is then post- is straightforward and logical. It also allows typeset- processed to realize the required functionality. Each ting reaction equations easily and provides for sev- command is represented by a character and zero or eral special features, like fine-tuning the position of more numeric arguments. There are general graph- radicals, placing small formulae inside running text, ics commands, complemented by path and area com- and optimizing the depth of subscripts. mands. The .dvi file is processed by a special MS- The last talk of the morning was by Daniel DOS program, where the graphics \special com- Taupin (Orsay, France) who introduced MusiXTEX, mands are replaced by emTEX \specials pointing an improved version of his earlier MusicTEX system to .pcx pictures. These facilities are complemented for typesetting polyphonic music with TEX. MusiX- by macros to place text and graphics on the page TEX was developed together with Werner Icking and and a library of graphics macros that is still under Andreas Egler. It uses three passes (MusicTEXwas development. It is planned that future releases will a one-pass system), where during the second pass a offer support for generating .pk fonts and PostScript program muflex is used to compute optimal spac- output. ing to position the notes and determine the length

5 Their article will be published in an upcoming issue of 4 His article is published in TUGboat 16 (3), p. 302–305, TUGboat. Their approach can be compared to the one of 1995. XyMTEX described in TUGboat 16 (1), p. 81 – 88. TUGboat, Volume 16 (1995), No. 4 435 for slurs and ties. This makes for more aestheti- version control. The speaker thought that TEXwas cally pleasing scores. A planned future improve- an ideal tool to explore the advantages and limits ment is cleaner lyrics insertions. Some issues remain of electronic documents and that TEX and Acrobat between Andreas Egler and the other two develop- thus formed a nearly perfect match, combining the ers about future developments and the compatibility advantages of both a flexible programming language between MusicTEXandMusiXTEX. and a powerful document delivery system. After the tea break Sebastian Rahtz (Elsevier Tuesday p.m. — Electronic Documents Science, Oxford, United Kingdom) talked about the The theme of the Tuesday afternoon was electronic experience he had gained working on the hyperref documents, and Wiegert Tierie of Adobe Systems package, developed together with Yannis Haralam- Benelux (Amsterdam, the Netherlands) started off bous of Lille (France). This LATEX package uses with a detailed overview of Abode’s Acrobat series LATEX’s cross-reference commands to transmit the of utilities to create, use, store, annotate, send, view necessary information to PDF and thus provides a and print electronic documents. To do this Adobe rather straightforward and effortless way for LATEX developed the “Portable Document Format” (PDF), users to transform their documents into hypertext. a language that is based on PostScript and includes Sebastian pointed out some difficulties of this ap- commands to implement a hypertext functionality. proach, namely the successful handling of fonts, and He introduced the (freely available) Reader — for the generation of back-references from the bibliogra- reading PDF documents — , Exchange — for intro- phy and index. Although it thus is easy to generate ducing annotations—, Writer—for directly creat- PDF from LATEX documents in a way that they are ing PDF files from applications—, Distiller—for faithful representations of each other, all problems translating PostScript documents into PDF — , Cat- of optimizing the presentation for screen viewing, as alog — for creating full-text indexes — , and finally explained by Hagen in the previous talk, still remain Search — for full-text searches. Via Application Pro- to be addressed. gramming Interfaces (API’s) developers can easily During the next half hour or so I gave an in- plug in their own extensions to take full advantage troduction to SGML,usingHTML as an example of of the capabilities of the Acrobat system, thus allow- a DTD. I emphasized that using and understanding ing an optimal integration of Acrobat into custom SGML is straightforward by using examples drawn products. from HTML. I outlined the structure of a DTD and Hans Hagen of Pragma (Zwolle, the Nether- how it describes a document, its elements, their at- lands) then told us about his experience using TEX tributes and the entities that are available. The to generate hypertext documents in PDF. Hans ex- mathematics and table extensions of HTML3 were pects that in a few years PDF will be as stable and presented briefly, but it was emphasized that HTML’s standard as TEX is today, so that at that time PDF main aim is describing the document’s structure, not might well become an important format for distribu- its perfect typesetting, where it is better to consider tion of documents. Because PDF is based on Post- the PDF solution, so that HTML and PDF are com- Script it can combine high typographic quality with plementary rather than competing technologies. hypertext capabilities offered via PDF’s pdfmark My second talk presented the LATEX2HTML tool operator. Building a utility able to exploit both of Nikos Drakos, which translates LATEXdocuments TEX’s and PDF’s strong points relies on communi- into HTML using a perl program. All standard LATEX cating information from TEX to PDF via \special commands are dealt with. Tabular and mathematics commands that will contain pdfmark instructions. constructs are turned into images since they cannot Hans emphasized, however, that writing hypertext yet be treated by HTML, and the same strategy is documents for viewing on a screen requires a some- applied to user-defined commands or environments. what different approach from optimizing them for I emphasized that with a little work by the user paper. He presented a set of points that have to such user-defined extensions can be dealt with by be dealt with, in particular different aspect ratios, providing a perl routine for the extension in ques- a more complex pagebody to optimally place nav- tion, thus increasing substantially the usabilitity of igation aids, synchronization of screen and printed the generated HTML document, decreasing at the versions of documents, the design of the typographic same time its size and fragmentation. The hyper- interface, the generation of tables of contents, mul- text extension package html was described and it tiple indexes, cross-references. Other points to be was shown how it allows the introduction of hyper- considered are how to handle multiple documents, text elements into a LATEX document, so that it can shared data, status bars, active figures, color, and 436 TUGboat, Volume 16 (1995), No. 4

be optimized both for printing and hypertext view- the Netherlands) of the δαTEX package that he de- ing on screen. Finally, work on providing support veloped with his colleagues Seven Kliffen and Ruud for the automatic generation of HTML3 and the im- Koning. The δαTEX system is a series of TEX macros plementation of HTML3 capabilities in the experi- for storing and retrieving data that work both with mental arena browser were briefly mentioned. LATEX and plain TEX. The system makes it possi- The afternoon was concluded by a panel discus- ble to keep source texts short and guarantees data sion on electronic documents, chaired by Joachim integrity and uniformity in typesetting. Data are Schrod of Darmstadt (Germany), with all speakers stored in δαTEX format in a δαT file. The format is of the afternoon as panel members. Each of the simple, versatile, easy to learn, and as portable as a speakers again emphasized the complementarity of TEX document. Conversion utilities to generate δα the various approaches to enrich the LATEX source from ASCII files are available. δαTEX has sorting- code with markup that can be used to exploit the out facilities, supports default fields, conditionals, hypertext capabilities of the various output media and wrapping. targeted. However, hypertext viewing on a com- Kees van der Laan (Garnwerd, the Netherlands) puter screen is quite different from writing books, explained how to use his BLUe’s format to manage and therefore care must be taken to design and mark a database. In particular, TEXnical details concern- up documents with enough generality to optimize ing storage and access of the material are hidden their re-use in the various circumstances. Another from the user, and since the database code is writ- interesting question which was raised was the level teninplainTEX, it can in fact be used with any of control that should be given to the viewer to TEX format. High-level user commands allows non- customize the appearance of the viewed document. TEXnical users to take full advantage of this tool, Should one allow complete freedom to the receiver which moreover allows one to include pictures and to represent the document (font type and size, set- cross-references. Facilities for preparing letters to ting of colors, preferences for lists, page size, etc.) be sent to multiple addressees are also included. or should the author be able to freeze some or all Philip Taylor (London, United Kingdom) then of the document’s appearance (for instance for legal gave one of his famous pedagogical presentations, documents). It became soon evident that a general explaining how one can use \csname...\endcsname answer to this question was impossible, and that as constructs advantageously in various often-occurring much flexibility as needed should be given to the programming paradigms in TEX. He showed how receiver. As the hypertext medium, and the free- this construct helps to clarify the programming logic dom to “view as one likes” are still quite new, the in many TEX macros, and thus makes documenting plethora of browsers, and possibilities to (over)dress and maintaining such macros more straightforward one’s documents will soon die out as the technology and more robust. As an interesting side-remark matures, and some studies in readability and effi- he mentioned the fact that an undefined \csname- ciency in communication information via the screen construct has the value \relax can be a disadvan- on the Internet come up with some guidelines that tage in some cases. All in all a well-prepared, stim- will eliminate the more extreme excesses in the area, ulating, and thought-out talk, for which Phil rightly just as fontitis, or the disease to use as many fonts got the prize for the most pedagogical presentation a possible in one’s documents, died out after a few of the conference. Congratulations Phil! years after people realized that the documents be- Just after the coffee break Laurent Siebenmann came unreadable. (Paris, France) introduced his TEX utility Occam After dinner a long presentation/discussion ses- that is useful for managing macros. The Occam util- sion on the achievements of the e-TEX project was ity eliminates from a set of TEX macros all those organized by the e-TEX team, with Phil Taylor, Jiˇr´ı that are not referenced (and thus not necessary), Zlatuˇska, Bernd Raichle, and Friedholm Sowa, who thereby reducing (sometimes significantly) the size came specially for that day, present. It was an ex- of a TEX source document, at the same time making tremely useful discussion, that lasted until midnight, the maintenance and comprehension of the support- and I am sure that both the members of the e-TeX ing macro collection easier. team and the participants benefited greatly from the The final talk of the morning was a presen- exchange of ideas. tation of pascal,aTEX macro package for type- setting Pascal programs, based on work by Pedro Wednesday a.m. — Tools I Palao Gostanza and Manual N´u˜nez Garc´ia (Madrid, The tools section started on Wednesday morning Spain), and presented by the former. This utility al- with the presentation by Andries Lenstra (Uitgeest, lows the user to clearly indicate the structure of a TUGboat, Volume 16 (1995), No. 4 437 program by using special typesetting conventions. 9660-compliant directory structure that can be used Technically speaking, all reserved words and iden- as a plug-and-play run-time system by all operating 6 tifiers become TEX control sequences, so that no systems. external parser is necessary and layout conventions A panel discussion on the theme TEX quo vadis? can be easily enforced. Extensions of these ideas concluded the afternoon. Several members in audi- to other structural programming languages such as ence thanked the various teams who are working so Modula-2, Ada, or ML should be straightforward. hard to improve the functionality of TEX, LATEX, and their user production environments and gave Wednesday p.m. — General Developments A valuable input to the respective development teams, in TEXandLTEX who promised to look at ways of implementing the The afternoon was reserved for presentations related suggestions put forward. to recent general developments in TEXandLATEX. Chris Rowley (Open University, United Kingdom), Wednesday Evening — The Social Event as a representative of the LATEX3 Team, gave an At 16:30 two buses took all participants to the cen- overview of the activities of the team. Having de- ter of Arnhem, where we had two hours for a walk voted the Group’s resources over the past two years through the streets of this historic town, perhaps on the development and consolidation of LATEX2ε, best known from the film “A bridge too far”, which the Group will now concentrate on further studies described the battle for the bridges over the Rhine on the way to LATEX3. During his talk Chris also in the vicinity of Arnhem. The inner city, which explained the Group’s policy on modifying files in was almost completely devastated in 1944, has since the LATEX2ε distribution. been rebuilt, and has become a modern local center Next Philip Taylor, speaking for the NTS and where the importance of the river Rhine is omni- ε-TEX teams, announced that version 1 of ε-TEXwas present. It was thus also appropriate that our whole now available, and gave a list of the extensions which company boarded the ship “MPS Graaf van Bylant”, have been introduced. He emphasized that ε-TEX named after a wealthy count who in the 18th century can be used in a 100% compatibility mode with TEX owned large parts in the neighbourhood of Arnhem. and he expressed the hope that with time and af- It was already getting dark when we left the em- ter a lot of tests, most TEX users will have enough bankment, and set off for a three-hour tour of the confidence to use ε-TEX as a valid replacement for Rhine and the IJssel, taking us along the quays with TEX. In fact, when generating the format file with its wharfs, warehouses, and the apartment build- initex, one can configure ε-TEXsothatitiscom- ing in the background, with their thousands of little pletely compatible with TEX, and the extensions and lighted windows, each corresponding to a little cell enhancements are disallowed. The new features im- of present-day society, people eating, drinking, talk- plemented in this first version are in the areas of ing, watching television or just enjoying each other’s additional control over expansions, re-scanning to- company: yellow-orange rectangular reflections of kens, environmental enquiries, additional marks and human joy and grief, micro-windows on the life of a debugging facilities, bi-directional typesetting, and modern city. But I am sure that these metaphysical a few supplementary primitives. considerations were absent from the heads of most John Plaice (Laval University, Ste-Foy, Qu´ebec, EuroTEXers that evening, since our NTG hosts did Canada) of the Ω team then gave an update of work their utmost best to make the outing as enjoyable as done since the summer of 1994 on this 16-bit exten- possible. Apart from the excellent food and drinks sion to TEX. In particular, he described the addi- (including quite a few bottles of Polish and Russian tional collaboration with a graduate student in Es- Vodka, contributed by GUST and CyrTUG), there tonia in the area of generalized multi-dimensional were also the MAPS awards for the best papers in the typesetting, and recent progress in the area of Ara- proceedings. They went to Gabriel Feruglio for his bic. A beta-version now runs on a PC.Dynamic overview article of commutative diagrams and Bo- memory allocation is next on the list of features guslaw Jackowski for his beautiful article on the use

to be implemented in order to reduce the memory of EPS and METAFONT (this was, in fact, already requirements of the system when static arrays are his second MAPS award!). On top of that the MAPS used. editing team decided to award two “special” prizes It was then Joachim Schrod’s turn to introduce and it was quite a nice surprise that MAPS chose to the audience to the proposals of the “tds” (TEXDi- rectory Structure) team, whose members have been 6 More about tds can be found in this issue of TUGboat, working for many months on the definition of an ISO p. 401. 438 TUGboat, Volume 16 (1995), No. 4

honor the “TUGboat Production Team”, for their weeks. The speaker emphasized that such a sys- efforts to publish TUGboat on time again. With tem needs close cooperation between the organizing great pleasure Barbara Beeton, Sebastian Rahtz and committee and the typesetter, and it presupposes I myself received the now-traditional MAPS-sweets- that the instructions have been announced to the cone (a collections of 256 sweets of many different contributors about six month before the conference. colors, with the necessary “glue” and all other neces- To minimize the need for direct hotline-type support sary attributes. . . ). And I found it very appropriate (it was found that with the W95 system only 1–2% that MAPS gave also a special prize to Erik Fram- of the authors needed personal help) a sufficiently bach, who had been doing an enormous amount of self-documenting help facility should be provided. visible (and even more invisible) work to make the Various ways of improving the archiving of sci- conference the success it has become. Apart from entific documents by optimizing the ways external these formal parts of the evening, there was of course material can be included by standardized keywords ample occasion for direct person-to-person discus- for TEX’s \special commands were discussed by sions and other forms of socializing, making con- Laurent Siebenmann, the next speaker. Although tacts, making new acquaintances and friends, and his ideas were quite interesting, it was not com- around midnight, when we arrived back at the Pa- pletely evident that his demands were not already pendal Sport Center, we could all go to bed trying dealt with by the work of the dvi-standard com- to assimilate all those new and enriching impressions mittee, that had a few meetings at TUG’95 in St. and contacts of this memorable Wednesday Evening Petersburg, and Laurent was invited to contact the EuroTEX’95 cruise. members of that working group. The speaker also said a few words about the effort concerning atomic Thursday a.m. — Tools II fonts... The last formal session of the conference on the After the coffee break Kees van der Laan showed Thursday morning started with a talk by Philip Tay- how one can implement indexing in a one-pass TEX lor who tried to convince the audience that TEXis run. Although only moderate indexes can be dealt quite an unsuitable language for marking up docu- with in this way, the approach is nevertheless quite ments. He came to this conclusion after he had to useful for smaller documents, or for proofing indexes deal with the production of a book in the field of on a chapter-by-chapter basis. For the markup Kees linguistics, and had to communicate with an author followed closely the circumflex (^) notation proposed who did not know TEX. Phil therefore developed by Knuth in the TEXbook. Sorting is possible and a syntax, , for “A TEX Markup Language”, several methods of ordering (lowercase/uppercase, where all markup is enclosed between the triangu- accented/non-accented/word ordering) are available. lar brackets < and >, thus disallowing all direct TEX This indexing system is part of the BLUeTEX sys- markup. Phil explained the precautions that he had tem. to take to implement this scheme, and discussed the Stanislav Brabec (Prague, Czech Republic) dis- advantages and drawbacks. It seemed clear that cussed his typesetting system, based on plain TEX. for non-TEX-aware authors this approach can cer- He uses TEX’s powerful programming facilities to tainly maximize the efficiency for preparing docu- generate macros for managing references, contents ments where TEX should be used as the typesetting tables, defining page layout, with a flexible facility engine, but where otherwise consistency and struc- for adding cropmarks, specifying margins, prepara- tural markup can be checked at a level of . tion of booklets, and typesetting in landscape mode. Similar ideas were supported by Antonin Strejc His systems upages.tex allows one to interpret the (Prague, Czech Republic) who described the W95 input stream on a token-by-token basis, is able to environment, where contributors to a conference can prepare output for PostScript devices, with support use an MS-DOS based authoring system, which is a for rotation and scaling; it generates device-indepen- menu-driven interface to LATEX. The authors can dent color, with provision for color signatures and specify the information needed for preparing their separations, and has primitives for line-drawings. article (title, author, affiliation, abstract, etc.) via The last formal presentation of the conference these menus, and also have the possibility of en- was by Bogus law Jackowski (BOP,Gda´nsk, Poland), 7

tering other text elements, like lists, equations, ta- who presented his METAFONT -EPS interface. The

bles, and figures. Thanks to this approach, which heart of this interface is the MFTOEPS METAFONT guarantees consistent and correct markup, the edi- package which provides the necessary definitions for tors of the proceedings were able to typeset almost 1000 pages by over 430 contributors in about two 7 His article is published in this issue of TUGboat, p. 388. TUGboat, Volume 16 (1995), No. 4 439 translating the descriptions of graphics objects from It was NTG’s President, Erik Frambach, who

METAFONT to PostScript. The PostScript code is had the honor of having the last word. He gave written to a log file, that can be post-processed to a complete list of the people who had spent many generate EPS files that can be read by popular Post- months since the beginning of 1995 to make the con- Script drawing tools like Adobe Illustrator, Coral- ference a success: yes it takes many people to do all Draw, or Fontographer. The package comes with the little (and not-so-little) tasks to have everything two such utilities, one written in awk, the other, ready on time. Then he announced that the first more general, but slower, in TEX. This system is 4AllTEX prize had been awarded to Eberhard Mat- thus merely useful for generating PostScript code tes, the father of emtex,theTEX engine that lies that should be edited further by the tools mentioned without doubt at the heart of most TEX installations above. For generating end-user PostScript, John in the world. A cheque of 3, 141.59 German Marks Hobby’s METAPOST program is probably more suited. will be sent to Eberhard, and the applause that ac- The author is also working on a program PSTOMF, companied the announcement underlined how much that would translate EPS files (via the ghostview all TEX users worldwide, especially those using PC’s,

program) into METAFONT , thus completing the link appreciate his extremely valuable and continuous

between METAFONT and PostScript and allowing contributions. With this Erik formally closed the everybody to make use of the advantages of both conference in a grandiose way, and hoped to see ev- languages. erybody again next year on the Volga in Dubna. It was at about half past twelve when Johannes Thursday p.m. and Friday a.m. — Tutorials Braams, in the name of the EuroTEX’95 Program Committee, thanked all speakers for their contribu- The Thursday afternoon two tutorials ran in paral-

tions, and Wietse Dol for his work on preparing the lel, namely one by Bogus law Jackowski on META- 8

Proceedings. He then invited Andrey Slepukhin FONT and another by Piet van Oostrum on page to step forward to receive the prize for “Best Pre- layout with LATEX. Both teachers gracefully agreed sentation of EuroTEX’95”, not only for his seminal to repeat their respective tutorials the next morn- work in the area of font creation of beautiful Church ing to give a maximum number of participants the Slavonic letters, but also for developing solutions for chance to attend both and to give those who had the many technical problems relating to typesetting to leave already the Thursday evening the chance complex documents. A prize for the most pedagog- to attend the one of their choice. As I had meetings ical presentations (not only at this conference, but scheduled with various people during the time of the also on other occasions) was given to Philip Taylor. tutorials I was unable to go to either of them, but Sincere congratulations to both recipients of these listening to those fortunate enough to have attended prizes. I learned that they were both an enormous success. I then, in the name of the international TEX Congratulations to both Bogus law and Piet for their Organization, TUG, thanked the NTG organizers careful preparations and pedagogical presentations. for their dedication and hard work in making Eu- Finally, on the Friday afternoon, those inter- roTEX’95 possible. I also thanked the many con- ested were able to join our friends from Central and tributors, and last but not least the participants Eastern Europe in a visit of Amsterdam with the to the conference, and I invited everybody to the EuroTEX bus, a second (and especially appreciated) joint TUG-EuroTEX meeting that will take place “social event”. next year 1996 in Dubna (Russia) from Sunday July The Saturday morning with the departure of 28th to Thursday August 2nd, 1996. This will be the the EuroTEX bus for Warsaw via Berlin, the last first time a conference will take place in a country EuroTEXies left the Papendal Sports Center. Thus whose major language does not use the Latin al- EuroTEX’95 became history and will henceforth be phabet. A unique occasion to remain up-to-date on remembered as the latest (in fact the ninth) in the what is happening in the world of TEX and friends, series of European TEX Conferences. Thank you and to become acquainted with the rich Russian cul- NTG, thank you Erik, and Wietse, and Gerard, and ture thanks to direct contact with Russian people all your colleagues for that week of intense TEXhap- and visits to famous monuments. piness, and see you all next July in Russia!

⋄ Michel Goossens 8 Copies of the EuroTEX’95 Proceedings — counting more CERN, Geneva, Switzerland than 440 pages — are available at the price of 50 Dutch Email: [email protected] Guilders (postage included) from NTG, P.O. Box 394, NL- 1740 AJ Schagen, The Netherlands. 440 TUGboat, Volume 16 (1995), No. 4

Fonts Late-Breaking Most of this issue has been set in Computer Modern News (or DC, version 1.1) fonts — in Malyshev’s BaKoMa PostScript Type1 versions. Exceptions are, obvi- ously, the Russian articles by Slepukhin, and Lapko Production Notes and Makhovaya. Knappen’s article was typeset us- ing the T1 encoding of Computer Modern fonts, in Mimi Burbank and Michel Goossens addition to the DC, version 1.2 fonts. Production Notes Output Well, for those of you who are relative novices at The final camera copy was prepared at SCRI on an some of the more arcane uses of TEX, I’d love to IBM RS6000 running AIX,usingtheWeb2C imple- spend some time explaining some of the “on-the- mentation of TEX. Output was printed on a QMS 680 job training” I get with each issue produced by the print system at 600 dpi. production team. First of all, I must say that I have no idea how Future Issues ever one person did the job alone! Now that the The next issue will contain TTN material, as well as technology has become so advanced, and the world abstracts from other LUG publications, a summary of TEXandMETAFONT has grown so much, it has of the CyrTUG’95 meeting, and articles on math in become a delight to look at output. This production LATEX, the first of a two-part tutorial on typography team, though there are still administrative obstacles by Phil Taylor, and articles on graphics and META- to be worked out, is a dynamic group, and T Xnical E FONT . problems are solved rather easily and quickly. The Plans are underway for TUGboat 17(2) to be greatest source of frustration now seems to be net- the Proceedings Issue for 1996, so that copies will works, and devices. be available for the meeting in Dubna, Russia. This This issue heralds in a new era in typesetting will be a change in the usual order of issues; 17(3) TUGboat and the first truly bilingual issue. For will be a regular issue, and 17(4) will be a multi- a more detailed description of how the two Russian lingual “theme” issue, with a guest editor. Sugges- articles were prepared, see Michel’s production notes tions are welcome for prospective topics and guest at the end of Andrey Slepukhin’s article on page 379. editors. Send them to the Editor, Barbara Beeton All files were received electronically. This issue (see address on page 351), or via electronic mail to is chock full of T1 encoding, use of the new (and [email protected]. old) dc fonts, multiple uses of METAFONT ,consid- erable use of Babel, and an additional two Russian ⋄ Mimi Burbank formats. Over 70 files were used to produce cam- SCRI, Florida State University, era copy for Slepukhin’s article, while only 13 files Tallahassee, FL 32306 – 4052 were needed to produce camera copy for Lapko and Email: [email protected] Makhovaya’s article and the TUG’96 announcement ⋄ Michel Goossens on page 429. Some 50 files were necessary to run CERN, Geneva, Switzerland Jackowski’s article, 29 of which were .eps figures. Email: [email protected] Macros 80% of the articles received were in LATEX2ε. While some articles were received tagged for another or for no publication, most articles were received as fully tagged for TUGboat, using either plain-based or LATEX conventions described in the Authors’ Guide (see TUGboat 10, no. 3, pages 378 – 385). Several macros defined by authors or from LATEX packages clashed with those of ltugboat.cls (for instance multicol.sty and ltugboat’suse of the twocolumn option), and some time was spent trying to get them to “cohabit” in the same file. TUGboat, Volume 16 (1995), No. 4 441

1996 TUG Election — Nomination Form TUG Business Only current (1996) TUG members are eligible to partic- ipate. The signatures of two (2) members are required in addition to that of the nominee. Type or print 1996 TEX Users Group Election names clearly, exactly as they appear in the most re- cent TUG membership list or on a TUG mailing label; Barbara Beeton new members should enter the name which they used on for the Elections Committee their membership application form. Names that do not exactly match the TUG records will not be accepted as The terms of 6 members of the Board of Directors valid. will expire as of the 1996 Annual Business Meet- ing, which will take place in conjunction with the The undersigned TUG members propose to nomi- 17th Annual TUG Meeting in July 1996 in Dubna, nate the following TUG member for the position of Russia. The directors whose terms expire in 1996 member of the TUG BoardofDirectors,fora are Mimi Burbank, Michael Ferguson, Peter Flynn, term beginning with the July 1996 Annual Meeting: Mimi Jett, Tom Rokicki and Norm Walsh. There is also one additional vacancy due to a resignation. Name of Nominee: The election will be held this Spring, and nomina- tions for these seven openings are now being invited. Signature: The Bylaws provide that “Any member may be Date: nominated for election to the Board by submitting a nomination petition in accordance with the TUG Election Procedures. Election of the directors shall Members supporting this nomination: be by written mail ballot of the entire membership, 1. carried out in accordance with those same Proce- (please print) dures.” The term of office of a director is three (3) years. Incumbent officers may be nominated for suc- (signature) (date) cessive terms. The name of any member may be placed in 2. nomination for election to the board by submission (please print) of a petition, signed by two other current (1996) members, to the TUG office at least two weeks (14 days) prior to the mailing of ballots. (A candidate’s (signature) (date) membership dues for 1996 will be expected to be paid by the nomination deadline.) A petition form Return this petition form to the TUG office (FAXed follows this announcement; forms may also be ob- petition forms will be accepted). Petitions and all re- quired supplementary material (photograph, biography tained from the TUG office, and electronically from and personal statement for inclusion on the ballot) must CTAN the usergrps/tug area of . be received in the TUG office no later than March 15, Along with a petition form, each candidate is 1996.1 It is the responsibility of the candidate to ensure asked to supply a passport-size photograph, a short that this deadline is met. Under no circumstances will biography, and a statement of intent to be included incomplete applications be accepted. with the ballot; the biography and statement of in- tent together may not exceed 400 words. 2 nomination form The deadline for receipt at the TUG office of - 2 photograph titions and ballot information is March 15, 1996. 2 biography/personal statement Ballots will be mailed to all members in early April. Marked ballots must be postmarked no later T X Users Group FAX: 415-982-8559 May 17 May 31 E than , and received no later than . Nominations for 1996 Election These deadlines will be noted on the ballots. 1850 Union Street, #1637 Ballots will be counted by a disinterested party San Francisco, CA 94123 not part of the TUG organization. The results of the U.S.A. election should be available by early June, and will TUGboat be announced in a future issue of as well 1 Supplementary material may be sent separately from as through various TEX-related electronic lists. the form, and supporting signatures need not all appear on one form. 442 TUGboat, Volume 16 (1995), No. 4

Iowa State University, University of California, Irvine, Institutional Ames, Iowa Information & Computer Science, Irvine, California Members Los Alamos National Laboratory, University of California, University of Canterbury, Los Alamos, New Mexico Christchurch, New Zealand

The Aerospace Corporation, Marquette University, University College, El Segundo, California Department of Mathematics, Cork, Ireland Statistics and Computer Science, University of Delaware, Air Force Institute of Technology, Milwaukee, Wisconsin Wright-Patterson AFB, Ohio Newark, Delaware Mathematical Reviews, University of Groningen, American Mathematical Society, American Mathematical Society, Groningen, The Netherlands Providence, Rhode Island Ann Arbor, Michigan Universit¨at Koblenz–Landau, ArborText, Inc., Max Planck Institut Koblenz, Germany Ann Arbor, Michigan f¨ur Mathematik, Brookhaven National Laboratory, Bonn, Germany University of Manitoba, Winnipeg, Manitoba Upton, New York NewYorkUniversity, CNRS - IDRIS, Academic Computing Facility, University of Oslo, Orsay, France New York, New York Institute of Informatics, Blindern, Oslo, Norway CERN, Geneva, Switzerland Nippon Telegraph & Telephone Corporation, University of Southern California, College Militaire Royal de Saint Basic Research Laboratories, Information Sciences Institute, Jean, St. Jean, Quebec, Canada Tokyo, Japan Marina del Rey, California College of William & Mary, Personal TEX, Incorporated, University of Stockholm, Department of Computer Science, Mill Valley, California Department of Mathematics, Williamsburg, Virginia Stockholm, Sweden Princeton University, Communications Princeton, New Jersey University of Texas at Austin, Security Establishment, Austin, Texas Department of National Defence, Smithsonian Astrophysical Ottawa, Ontario, Canada Observatory, Cambridge, Universit`a degli Studi di Trieste, Massachusetts Trieste, Italy CSTUG, Praha, Czech Republic Space Telescope Science Institute, Uppsala University, Elsevier Science Publishers B.V., Baltimore, Maryland Uppsala, Sweden Amsterdam, The Netherlands Springer-Verlag, Vrije Universiteit, FermiNationalAccelerator Heidelberg, Germany Amsterdam, The Netherlands Laboratory, Batavia, Illinois Stanford Linear Accelerator Wolters Kluwer, Florida State University, Center (SLAC), Dordrecht, The Netherlands Supercomputer Computations Stanford, California Research, Tallahassee, Florida Yale University, Stanford University, Department of Computer Science, Grinnell College, Computer Science Department, New Haven, Connecticut Noyce Computer Center, Stanford, California Grinnell, Iowa Texas A&M University, Hong Kong University of Department of Computer Science, Science and Technology, College Station, Texas Department of Computer Science, Hong Kong United States Naval Postgraduate School, Institute for Advanced Study, Monterey, California Princeton, New Jersey United States Naval Observatory, Institute for Defense Analyses, Washington DC Communications Research Division, Princeton, New Jersey University of California, Berkeley, Center for EUV Astrophysics, Berkeley, California TUGboat, Volume 16 (1995), No. 4 443

TEX Consulting & Production Services

Information about these services can be obtained Quixote Digital Typography, Don Hosek from: 555 Guilford, Claremont, CA 91711; TEXUsersGroup (909) 621-1291; Fax: (909) 625-1342; 1850 Union Street, #1637 [email protected] A San Francisco, CA 94123, U.S.A. Complete line of TEX, L TEX, and METAFONT services Phone: +1 415 982-8449 including custom LATEX style files, complete book Fax: +1 415 982-8559 production from manuscript to camera-ready copy; Email: [email protected] custom font and logo design; installation of customized TEX environments; phone consulting service; database North America applications and more. Call for a free estimate.

Anagnostopoulos, Paul C. Richert, Norman Windfall Software, 1614 Loch Lake Drive, El Lago, TX 77586; 433 Rutland Street, Carlisle, MA 01741; (713) 326-2583 (508) 371-2316; [email protected] TEX macro consulting. We have been typesetting and composing high-quality Type 2000 books and technical Publications since 1989. Most of the 16 Madrona Avenue, Mill Valley, CA 94941; books are produced with our own public-domain macro (415) 388-8873; Fax: (415) 388-8865 package, ZzTEX, but we consult on all aspects of TEXand [email protected] book production. We can convert almost any electronic $2.50 per page for 2000 DPI TEX and PostScript camera manuscript to TEX. We also develop book and electronic ready output! We provide high quality and fast turnaround publishing software for DOS and Windows. I am a to dozens of publishers, journals, authors and consultants computer analyst with a Computer Science degree. who use TEX. Computer Modern, PostScript and

Cowan, Dr. Ray F. METAFONT fonts available. We accept DVI and 141 Del Medio Ave. #134, Mountain View, CA 94040; PostScript files only and output on RC paper. $2.25 per (415) 949-4911; [email protected] page for 100+ pages, $2.00 per page for 500+ pages; add Twelve Years of TEX and Related Software Consulting: $.50 per page for PostScript. Books, Documentation, Journals, and Newsletters TEX&LATEX macropackages, graphics; PostScript language Outside North America applications; device drivers; fonts; systems. TypoTEXLtd. Hoenig, Alan Electronical Publishing, Batty´any u. 14. Budapest, 17 Bay Avenue, Huntington, NY 11743; (516) 385-0736 Hungary H-1015; (036) 11152 337 TEX typesetting services including complete book Editing and typesetting technical journals and books with production; macro writing; individual and group TEX from manuscript to camera ready copy. Macro writing, TEX instruction. font designing, TEX consulting and teaching. NAR Associates 817 Holly Drive E. Rt. 10, Annapolis, MD 21401; (410) 757-5724 Extensive long term experience in TEX book publishing with major publishers, working with authors or publishers to turn electronic copy into attractive books. We offer complete free lance production services, including design, copy editing, art sizing and layout, typesetting and repro production. We specialize in engineering, science, computers, computer graphics, aviation and medicine. Ogawa, Arthur 40453 Cherokee Oaks Drive, Three Rivers, CA 93271-9743; (209) 561-4585 Experienced in book production, macro packages, programming, and consultation. Complete book production from computer-readable copy to camera-ready copy.