WHERE TO FIND MORE INFORMATION This file explains how to use TeX, LaTeX, and MetaFont on a day-to-day basis. By basing your work on one of the sample documents provided, and using the hints in this file, you should be able to produce simple documents with a minimum of fuss. For more complicated work, you will definitely need one or more of the following as a reference. I suggest that you start with LaTeX, and use "The TeXBook" as a reference when you find you need more detail. Both of these books have excellent first chapters to help you get started and understand what's going on. Those people interested in pursuing font design further may be interested in the METAFONTBook, and the companion "Computer Modern Typefaces." Finally, it should be noted that TeX and MetaFont were written partly as educational examples of large, practical programs. Towards this end, Knuth has published the complete source of both programs. Leslie Lamport, "LaTeX: A Document Preparation System," Addison-Wesley, 1986. Donald Knuth, "The TeXBook," Volume A of "Computers and Typesetting," Addison-Wesley, 1986. Donald Knuth, "TeX: The Program," Volume B of "Computers and Typesetting," Addison-Wesley, 1986. Donald Knuth, "The METAFONTBook," Volume C of "Computers and Typesetting," Addison-Wesley, 1986. Donald Knuth, "METAFONT: The Program," Volume D of "Computers and Typesetting," Addison-Wesley, 1986. Donald Knuth, "Computer Modern Typefaces," Volume E of "Computers and Typesetting," Addison-Wesley, 1986. ============================================================================== TeX USAGE NOTES Typesetting a file with TeX or LaTeX is generally as easy as "tex file.tex" or "latex file.tex". In both cases, the ".tex" can be omitted for ease of typing. Since both TeX and LaTeX documents traditionally use the same extension, you will often have to look at the file to determine which to use. To check whether a document is a LaTeX file, look for a "\documentstyle" command at the very beginning of the file (usually the very first line). If this command is lacking, then it's definitely not a LaTeX document and so you should try using Plain TeX. (Although it may be for another dialect of TeX such as e-TeX or AMS-TeX, the most common possibilities are LaTeX and Plain TeX.) Usually, when you run TeX (everything I'm going to say about TeX also applies to LaTeX), you'll see a few warning messages and then TeX will finish. While it's running, TeX displays information on the screen so you know what's going on. In particular, whenever it starts to read a file, it prints "(" followed by the file name, and then ")" when that file ends. It also prints out the page numbers in square brackets whenever it writes a page of output. When TeX is done, you'll have at least two (and sometimes more) new files. The ".log" file contains everything that TeX printed to the screen and sometimes a little bit more. You can use this to review any errors when you're done. The ".dvi" file specifies where each character in the printed output should go on the page. You can run this through a "DVI translator" to generate the correct output for your printer. Note that if you're using LaTeX's features for handling cross-references or for building a table of contents or bibliography automatically, you may have to run latex two (or even three) times before everything comes out right. Occasionally, TeX feels it must stop and ask for clarification. When it does so, it will print a helpful message, including the text it was processing, and will put up a "?" prompt. If you read the TeXBook, you'll find the full story about what you can do here, but for now, you should know that simply pressing will prompt TeX to try and keep going. You can also type "I\stop" and to tell TeX to try to wrap up what it's doing and quit. In particular, it will try to write the current page, which you can then print to help understand what the problem is. If that doesn't stop TeX, typing "x" and will cause TeX to simply stop without cleaning up. Occasionally, TeX will finish a file and display a "*" prompt. This simply means that TeX ran out of input before it saw a command telling it the input was finished, and TeX is now giving you the opportunity to type the rest of your document. Usually, a simple "\end" will finish everything. TeX is very particular about how it's results look, and so it's quite common for it to generate warnings when it decides that the output isn't quite good enough. This usually results in "Underfull hbox" or "Overfull hbox" or similar error messages about "vboxes". The simple explanation is that an "hbox" is a "horizontal box", usually a line in your document (which is made by stacking letters horizontally, hence the name). Underfull or overfull hbox errors means that when TeX attempted to break a paragraph into lines, it couldn't find a good enough way to do so. Usually, if you look at the output, you can find a hyphenation which TeX has overlooked, or rewrite the text slightly so that TeX can handle it more easily. Similarly, a "vbox" is a "vertical box", usually a page of your document. Vbox errors usually only occur when you have a large table or figure which can't be broken across pages. Typically, you should just ignore these errors at first, since the process of editing your text to make it read better will cause many of these errors to go away (and, sadly, some new ones to appear). You should only worry about hbox and vbox errors in the very last stages of polishing your document, and even then, only if you think the output is as poor as TeX does. (A note about "badness": TeX thinks 10000 is "infinitely bad", which often indicates a problem that will stand out in the final product. Badnesses of less than about 5000 are often not noticable unless you look very closely.) Missing fonts: Occasionally, TeX will complain that it is missing a font. TeX uses "tfm" files to tell it the sizes of the letters in a font. If you are missing a TFM file, and can't find a copy of it, you can use MetaFont to create the TFM file (cmr10.tfm applies to the font cmr10 at any resolution or magnification, and MetaFont will generate this file when you create any version of cmr10), or you can try to change to a different font. The fonts used by LaTeX are in the file lfonts.tex, and this can be edited to your preferences, although you must remember to recreate the lplain.fmt file afterwards. ============================================================================== USING THE DVI TRANSLATORS TeX's DVI output only tells where each character belongs on the page; it says nothing about what the individual characters look like. A DVI translator program uses this information to create an output file for a particular printer. Usually, TeX systems have used bitmap fonts created by MetaFont, although it is possible to use the fonts built-in to a particular printer. The DVI translators that have been maintained by Nelson Beebe at the University of Utah, some of which are included in this package, work in two different ways, depending on the printer. With printers that support downloadable fonts, including Postscript and most other laser printers, the translator builds a file which creates the downloaded fonts as bitmaps and then instructs the printer where to put each letter. For other printers, the translator simply builds a bitmap image of each page and prints that. The translators are often run by simply giving them the name of the DVI file, i.e. "dvilj2 about_latex.dvi" if you are using an HP LaserJet II. When used in this fashion, the translator will create an output file with the extension ".dvi_lj2" (the extension depends upon the particular translator being used), and an error log with the extension ".dvi_err". If there are no errors, you can use the OS9 "merge" utility to send the file to the printer. If you have a print spooler, be sure the spooler can handle binary graphics files correctly (unless you are using a Postscript printer, in which case it shouldn't matter). Under Unix and OS9, the translators support I/O redirection. If you redirect the input, the translator will send the result to the standard output path. This allows you to skip a step and simply type "dvilj2 /p". Especially at first, you should probably avoid doing this, since this does not give you a chance to build any missing fonts. Generally, you should use the first method, then create any fonts that were missing, then rerun the translator to recreate the output file using the new fonts. If the translator cannot find a font it needs, it will attempt to find a close match. Unfortunately, this is a slow process that usually does not work very well. The translator will then generate a message along the lines of Font file [cmr12 [247 dpi]] could not be opened, ... This means that the translator expected to find the font "cmr12.247pk", but couldn't. This should be enough information for you to create the missing font using the "makefont" program and the instructions below. ============================================================================== USING METAFONT MetaFont is a system for designing fonts and font families. It is considerably more flexible than most outline font systems. The MetaFont program reads MetaFont font descriptions and creates bitmapped fonts at any desired size and resolution. If you want to know more about the MetaFont language for defining fonts, you should read the METAFONTBook. Here, I'll concentrate on explaining how to use MetaFont to create fonts at various sizes. There are three different ways in which font sizes are specified, and all three interact. Understanding this interaction is important to understanding how you use MetaFont to creating a font at a particular size. The first way of specifying font size is the "design size" of the font. This is the size at which the font looks best on paper, and is usually expressed in units called "points," abbreviated "pt." For reference, there are 72.27 points in one inch, and typical book fonts are 10 or 12 point fonts. The "point size" of a font doesn't necessarily refer to any specific feature of the font. Often, it refers to height of a typical capital letter, but not always. In MetaFont files, the design size is usually included in the font name, i.e., cmtt7 is a "seven point" font, although cmr17 is actually a 17.28 pt font. There are times when a font should appear at some multiple of it's design size. MetaFont (and TeX) refer to this as "magnification". A good example of how this is useful is the following. If we make all of our fonts twice as big, print a file, then photographically reduce the result, then the fonts will appear at their design size, but with twice the resolution that our printer supported. More often, magnification is used to produce a larger version of a font we already have. If we only have a certain font in a 10 point design size, then a 1.2 magnification will produce a 12 point bitmap. While the results are not quite as good as a font designed as a 12 point font, they are usually acceptable. You should generally not use large magnifications, especially with small fonts (less than 10 pt). Likewise, shrinking a font to a very small size isn't recommended, since smaller fonts are usually somewhat modified, with slightly simplified designs and thicker lines to make them easy to read at that particular size. One particular magnification deserves special mention. A magnification of 1.2 (120%) is called one "magstep." For example, cmr10 at "magstep 1" is 1.2 times as big, or 12 pt. Cmr10 at "magstep 2" is 1.2*1.2 times as big, 14.4 pt. This explains why it is common in MetaFont for a "14 pt font" to really be 14.4 pts, and similarly "17 pt fonts" are usually 17.28 points, which is 10 pts at magstep 3. There are also negative and fractional magsteps, especially magstep .5, which is the square root of 1.2. The third factor is resolution. Consider creating a 10 pt font for a 600 dot-per-inch (dpi) printer and printing it on a 300 dpi printer. You of course end up with a font that is twice as big. Similarly, if you "render" (make a bitmap of) a font at 360 dpi and print it on a 300dpi printer, then the font will be 360/300 = 1.2 times as big. So, if you want a 12-point version of cmsl10, one way to do it is to render it at 1.2 times the resolution. With all of that, let's tackle a typical MetaFont command line: virmf '&cmbase \mode:=EpsonMXFX; \batchmode; \mag:=magstep(3); \input cmcsc10; \end' The quotes simply keep the shell from attempting to interpret the ampersand and semicolons. This runs the "virmf" program with the "cmbase" macro package loaded from it's pre-compiled form. This macro package is needed by the Computer Modern font definitions. The rest of the line is a sequence of MetaFont commands: \mode Sets the printer-dependent variables, including the printer resolution and various correction factors. \batchmode Tells MetaFont not to stop on errors, and to not display progress information. You can replace this with "\scrollmode" if you'd prefer to see progress information (advisable on slower computers). \mag The magnification to be used. The expression "magstep(3)" is a 1.728 magnification. You can also use plain numbers or other expressions (i.e., "\mag:=360/300;"). \input Tells MetaFont to read the corresponding file. This particular file contains the instructions for creating a 10 point "caps and small caps" font. \end When MetaFont finishes the \input, it will typically prompt you for further commands. The \end tells it to simply exit. The output of this will be a ".tfm" file, which contains information used by TeX to place letters on the page (including the height and width of each character), a ".log" file which contains any errors that may have occurred, and a GF file with the actual font bitmap information. The extension of the GF file tells the horizontal resolution of the font. In this case, the mode specifies 240 dpi, so the extension will be ".415gf", where the 415 is 240 times magstep 3 rounded to the nearest integer. When printed on a 240 dpi printer, the result will be a 17.28 point version of cmcsc10. The Basic "makefont" program attempts to do this automatically. It has the printer mode and base resolution built in, and takes the design size from the font name. It then attempts to compute the magnification based on the point size or desired resolution of the result. This usually involves rounding, and so will usually not be as correct as specifying the magnification. For best results, when trying to create a font at a specific resolution (for example, the resolution of the font that a DVI translator told you was missing), you should try to figure the magstep and use that whenever possible. For example, if you have a 144 dpi printer, and are told that you need a 173 dpi font, then you should probably use magstep 1 instead. If you are told you need a 158 dpi font, then you should probably use magstep .5 (one-half magstep is the square root of 1.2, which is about 1.1). Makefont then runs the program "PKtoGF", which coverts GF format into the more compact PK format (which has a similar naming convention), and deletes the log file and the GF file. Building a few fonts at a time as you need them does save disk space, but can become rather tedious. There are a couple of makefiles supplied with the system which can automatically make a large number of fonts. These files are distributed "as-is," and you should edit them to reflect the fonts you actually want. I don't gaurantee that these makefiles work with Microware's make program, either.