The Latex Companion (Addison-Wesley Series on Tools and Techniques for Computer T)
LaTeX is a generic typesetting system that uses TeX as its formatting engine. This companion is a detailed guide through the visible and not-so-visible beauties of LaTeX. As such, it is a comprehensive treatise of those points not fully discussed in Leslie Lamport's  LaTeX: A Document Preparation System (henceforth referred to as the LaTeX book) 49. Extensions to basic LaTeX, as described in that book, are discussed, so that the LaTeX book, together with this companion, provide a ready reference to the full functionality of the LaTeX system.Due to its flexibility, ease of use, and professional typographic quality, LaTeX is presently used in almost all areas of science and the humanities. Unlike many word processors, LaTeX (and its underlying formatting engine TeX) comes free of charge and is not linked to any particular computer architecture or operating system. Since LaTeX source files are plain text files, it is possible to ship them, and the packages referenced, from any computer to any other computer in the world (over electronic networks or via normal mail). The recipient will be able to obtain a final output copy identical to the one generated at the sender's site, independently of the hardware used. Thus members of groups, geographically spread over several sites in different countries, or even on different continents, can now work together in composing complex documents where different parts can be dealt with by different individuals, and then brought together without problems. Moreover, the use of electronic manuscripts has the potential to speed up the publication of papers by publishers.LaTeX is not difficult to learn and a beginner can benefit from the system after reading through the first few chapters of LamportLeslie Lamport's LaTeX book, the basic reference on LaTeX.  After some experience, you will probably have to solve some more advanced problems whose solution cannot be found directly in that book.  If you are one of those users who would like to know how LaTeX can be extended to create the nicest documents possible without becoming a (La)TeX guru , then this book is for you.You will be guided,  step by step, through the various important areas of LaTeX and be shown the links that exist between them. The structure of a LaTeX document, the basic formatting tools, and the layout of the page are all dealt with in great detail. A sufficient library of packages in the area of floats, graphics, tables, PostScript, and multi-language support are presented in a convenient way. This book is the first volume to include all of the important LaTeX tools, such as: up-to-date descriptions of version 2 of the New Font Selection Scheme (NFSS2), the AMSLaTeX mathematics extensions, the epic and eepic extensions to LaTeX's picture environment, and the MakeIndex and BibTeX programs for producing and controlling the generation of indices and bibliographic references. Finally, an overview of ways to define new commands and environments, lengths, boxes, general lists, etc., as well as ways of facilitating the handling of these objects, complete the picture.All three of us have been involved for several years in the support and development of LaTeX applications in various professional environments and countries. We have taught the secrets of LaTeX to many different audiences, and have been listening to the user community by following the discussions in the text processing related news groups and at TeX conferences. This has allowed us to gather a coherent view of a vast collection of subjects, which, we think, you might need one day if you want to fully exploit the richness and strengths of the LaTeX system. Note, however, that this book is not a replacement for, but a companion to, the  LaTeX book. You are assumed to have read the first part of that book, and in any case,  it should be considered a reference for  precise and full description of the LaTeX commands.To make the presented information even more complete and useful, our readers are kindly invited to send their comments, suggestions, or remarks to any one of the authors. We shall be glad to correct any remaining mistakes or oversights in a future edition, and are open to suggestions for improvements or the inclusion of important developments that we may have overlooked.LaTeX2e--The New LaTeX ReleaseOver the years many extensions have been developed for LaTeX with one unfortunate result: incompatible LaTeX formats came into use at different sites. Thus, to process documents from various places, a site maintainer was forced to keep LaTeX (with and without NFSS), SliTeX, AMSLaTeX, and so on.  In addition, when looking at a source file it was not always clear what format the document was written for.To put an end to this unsatisfactory situation a new LaTeX release was announced for fall 1993 that brings all such extensions back under a single format and thus prevents the proliferation of mutually incompatible dialects of LaTeX 2.09. With LaTeX2e the new font selection will be standard and style files like amstex (formerly AMSLaTeX format) or slides (formerly SliTeX format) will become extension packages, all working with the same base format.  The introduction of a new release also made it possible to add a small number of often-requested features (like an extended version of #79#>newcommand). All the new possibilities are described in this book, thus allowing you to make full use of the new LaTeX release.To make it easy to distinguish between old LaTeX 2.09 sources and new sources (making use of new features), the first command in a LaTeX document was changed from \documentstyle to \documentclass, thus enabling the software to automatically detect an old source file and switch to compatibility mode if necessary.The LaTeX3 ProjectLaTeX is presently being rewritten under the coordination of one of the authors (Frank Mittelbach), Chris Rowley and Rainer Schöpf. This endeavor is called the LaTeX3 Project 57. A lot of the functionality described in this book as extensions to basic LaTeX will be available in that system: as part of the kernel, or in one of the extension packages. To help funding, half of the royalties from this book will go directly to the LaTeX3 Project. Therefore, when buying this book, you not only obtain a handy, complete, and up-to-date reference to many important and useful packages available with LaTeX today, but you also actively contribute to making LaTeX more powerful and user-friendly in the future.How to Read This BookThe titles of the various chapters should convey relatively clearly the subject area addressed in each case. In principle, all chapters can be read more or less independently and, if necessary, pointers are given to where complementary information can be found in other parts of the book.Chapter 1 gives a short introduction to the LaTeX system.Chapter 2 discusses generic and document-oriented markup.Chapter 3 describes LaTeX's basic typesetting commands.Chapter 4 explains which tools are available to globally define thevisual layout of the pages of a document by using pagestyles.Chapter 5 shows how to assemble material into columns and rows withthe extended tabular and array environments, andtheir multipage equivalents--supertabular and longtable.Chapter 6 provides a general treatment of floating material.Chapter 7 discusses in detail LaTeX's New Font Selection Scheme (NFSS2)and presents its various user commands.It is shown how to add new fonts, both in math and text mode.Chapter 8 reviews the amstex package, which addsmany powerful typesetting commands in the field of mathematics.Chapter 9 looks at the problem of using LaTeX in the multi-languageor non-English environment.The babel system and other language-specific packages are described.Chapter 10 addresses the field of device-independent graphicsshowing how the epic, eepic and other packagesextend the possibilitiesof LaTeX's basic picture environment.Chapter 11 shows how the PostScript page description language not onlycan turn LaTeX into a full-blown graphics utility, but also how itmakes it possible, via the NFSS, for a user to choose a fontfrom amongsthundreds of font families, available as PostScript Type 1 outlines.Chapter 12 tackles the problems associated with preparing an index.The program MakeIndex is described in detail.Chapter  13 surveys how LaTeX's companion program BibTeX triesto solve problems related to maintaining bibliographic data bases.Various existing bibliographic styles are discussed and the format of theBibTeX language used in the style files is presented in detail,allowing the user to customize an existing style.Chapter 14 shows how to document LaTeX filesusing the doc package and its companion programdocstrip.Appendix 1 first reviews how to handle and manipulate the basic LaTeX programmingstructures. The extensions introduced by the calc packagein the field of arithmetic operations, andextended control structures added to LaTeX2eare discussed.Appendix 2 explains how to get the files described in this bookfrom the various TeX archives or from the TeX Users Groups.In order to make the examples as independent as possible from basic TeX, extensive use has been made of the packages calc and ifthen, which are described in the appendices A.4 and A.5. You should study the extensions to LaTeX, introduced in these packages, if you want to understand how many of the examples in this book function in detail.Many examples make use of new features in LaTeX2e; especially font changes for text are all done in LaTeX2e style, i.e.,with the commands shown in table 7.2 on page 171. Abbreviated forms, like {\bf word} are normally not used, since they are style defined  commands and may or may not be available for all classes of documents.While it is certainly possible to make good use of most parts of this book within a LaTeX 2.09 environment (the event of LaTeX2e happened after 90% of the book was finished) we suggest that you upgrade to the new version as soon as possible so that the worldwide community of LaTeX users again speaks a single language. As said above, LaTeX2e is able to identify and process old documents written for LaTeX 2.09. However, packages written or updated for LaTeX2e will not run with the old system.Typographic ConventionsAs explained in the discussion about the links between content and form or generic and layout markup, it is essential that the presentation of the material conveys immediately its function in the framework of the text. Therefore, we present below the typographic conventions  used in this book.LaTeX command and environment names are in monospaced type (for example, #133#>caption, enumerate, \begin{tabular}), while names of package and class files are in sans-serif type (eg. article).The syntax of LaTeX constructs is presented inside a rectangular box. Command arguments are shown in italic type.\commandname{arg1}{arg1}{arg3}Lines containing examples with LaTeX commands are indented and are typeset in a monospaced type at a size somewhat smaller than that of the main text. \chapter{Title of the Chapter} \section{Section Title} Some text...When it is important to show the result of a series of commands, then the input and output are shown side by side as follows:For large examples, where the input and output cannot be  shown conveniently alongside one another, the following layout is used:Commands to be typed by the user on a computer terminal are shown in monospaced type and are underlined, e.g.,: This is user input.Using All Those PackagesIn this book we describe over 150 packages and options that extend or modify LaTeX's basic possibilities. In order to show their action, we (in principle) have to load them   all at the same time. For various reasons that is impractical, if not impossible. Indeed many packages, like program, use up a lot of counters, and TeX only allows a total of 256 counters. Therefore, when you hit this limit you must reduce the number of files you load simultaneously. In the production of this book we used a different strategy: we prepared some of the examples as separate files and included them  as Encapsulated PostScript. Moreover, we used the package hackalloc. It redefines the allocation primitive so that all allocation becomes group-local. This means that by loading packages only when they are needed  inside a brace group, the counter and length variables will be deallocated when you exit from the group. This procedure, however, can have some side effects, and should only be used with great care. However, we used most of the packages together, with the result that we had to recompile TeX several times during the preparation of this book. One of the log files produced during the last steps of the preparation showed the following summary: Here is how much of TeX's memory you used:  9692 strings out of 16716  118315 string characters out of 133654  236569 words of memory out of 262141  8131 multiletter control sequences out of 9500  81058 words of font info for 228 fonts, out of 90000 for 255  20 hyphenation exceptions out of 607  34i,23n,41p,509b,1403s stack positions out of 300i,40n,60p,3000b,4000s Output written on companion.dvi (555 pages, 2008780 bytes). As you can see, we nearly reached the font limit (which cannot be raised further) because of the many fonts shown in chapter 7, and the usage for strings, characters, main memory, and control sequences is probably much higher than in any LaTeX run you ever made. This is not surprising given that the whole book is produced in a single LaTeX run with all those packages working together to produce the  examples.Even when you do not reach a limit of the kind mentioned above, there are other interference effects between different packages.  For instance, some extensions such as french make some characters active (i.e.,some characters act as though they were control sequences) .  Problems may result when such a character is then encountered in another package.  This means that not all of the packages described in this book can be used together.  Sometimes you can solve the problem by loading problematic packages as one of the last #161#>usepackage declarations.  Also, some packages make the @ character active (eg.amstex), and this can have nasty consequences if you load other packages that use the @ character.As a rule of thumb, if you observe some odd behavior when you add a package to an existing list of packages, which seemed to work nicely together before,  there might be a compatibility problem. Try loading the new file at the end, and if that does not work, take out each of the other files one by one. In this way you might find the file or files that are responsible for the problem.0201541998P04062001