Info file: latex-mode.info, -*-Text-*- produced by latexinfo-format-buffer from file: ltxinfo.ltx  File: latex-mode.info Node: Bibliographies, Prev: Word abbreviations, Up: LaTeX support, Next: Indexing Bibliographies ============== Literature citations are conveniently provided for on `C-c c' (`LaTeX-cite'), which generates a `\cite{}' command with the cursor after the open brace. With an argument, it produces `\cite[]{}' instead, with the cursor between the square brackets. There is another function, `LaTeX-bibitem', on `C-c C-b', which generates a `\bibitem{}' for you; with an argument, it produces `\bibitem[]{}'. Normally, you should be using a program like BibTeX [Lamport:latex, Appendix B] or `Tib' [Alexander:TB7-3-138,Alexander:TB8-2-102] for preparation of bibliographies from a data base and the citations recorded in the LaTeX `.aux' file. If you find yourself using this command, you are doing the job the hard and inflexible way. `LaTeX-mode' automatically invokes the function `update-LaTeX-bibtags' to extract the list of bibliography files from the `\bibdata' command in the `.aux' file, or the `\bibliography' command in the LaTeX file. Each such file is then located in the `BIBINPUTS' search path, and scanned to extract citation tags which are stored as an association list in the variable `LaTeX-bibtags'. Each list entry contains a citation tag and the name of the file in which the tag was found. If the `BIBINPUTS' environment variable is not set, then the Emacs variable `LaTeX-BIBINPUTS' is used instead to get a suitable search path. You can view the citation tag list by invoking the function `show-LaTeX-bibtags'. You can request completion on a citation tag inside a `\cite' command by using the function `LaTeX-bibtag-with-completion' normally bound to `C-c C'. If you are visiting a subfile in a multi-file document, or have just modified the list of bibliography files in the `\bibliography' command, you should manually run `update-LaTeX-bibtags' to update the variable `LaTeX-bibtags'.  File: latex-mode.info Node: Indexing, Prev: Bibliographies, Up: LaTeX support, Next: Cross-references Indexing ======== Index preparation is a tedious job that cannot be entirely automated [Aurbach:TQ3-1,Bentley:EPODD-1-1-3,Chen:UCB-TR-87-347,Chen:SPE-19-9-897,Lamport:makeindex]. Nevertheless, technical documents can benefit significantly from a good index, and support tools like `makeindex' or `texindex' can handle much of the drudge work of sorting and formatting the index entries. `LaTeX-mode' provides two functions to support generation of index entries in the LaTeX file. `LaTeX-add-word-to-index' on `C-c .' wraps an index entry around the word at the cursor position, either using a private indexing macro like `\X' described earlier (*Note Creating a new LaTeX file::), or by duplicating the word inside a standard LaTeX `\index'{} command. The choice between the two is determined by the Emacs variable `LaTeX-index-macro'; a non-`nil' value supplies the indexing macro name. With a numeric argument, multiple words can be selected for indexing. `LaTeX-index' on `C-c x' generates `\index{}' so you can type an explicit index entry that will not appear at that point in the text. For use in the X Window System on workstations and personal computers acting as X clients, `latex.el' provides additional functions, `x-LaTeX-index-start' and `x-LaTeX-index-end' that are bound to mouse actions; they cannot usefully be invoked from the keyboard. To index a phrase in the document like *gnats and gnus*, simply hold down the shift key and click the right mouse button at the start of the first word, and then holding the button down, sweep the mouse across the entire phrase, lifting the button anywhere in the last word. Bingo: the buffer now contains `\X{gnats and gnus}'! I find it useful to sit down with a typeset copy of a document, and use a colored highlighter pen to mark phrases to be indexed. With the marked-up copy, it is then straightforward to use the mouse to add the marked phrases to the index. For documents like this one, with lots of technical terms to be indexed, it pays to think about matters before you start writing. Define suitable macros that will typeset those terms in a particular font, and also automatically create an index entry for them. For example, I typeset and index an Emacs function using a private `\FUNCTION{}' macro. The Emacs variable `LaTeX-index-start-with-newline' can be set to a non-`nil' value if you prefer to have the inserted index entry start a new line. The variable `LaTeX-index-end-with-newline' can be set to a non-`nil' value to have a newline generated after the inserted index entry. The default for both is `nil', so that no additional lines are generated.  File: latex-mode.info Node: Cross-references, Prev: Indexing, Up: LaTeX support, Next: French typography Cross-references ================ LaTeX's `\label', `\pageref', and `\ref' commands provide a convenient way to generate cross-references to equations, figures, pages, sections, and tables. In `LaTeX-mode', they are readily available on the keys `C-c l' (that's the letter `l'), `C-c p', and `C-c r'. Since definitions with `\label' tend to be separated from their references, you may often find yourself unable to remember the exact name of the label you want. If you type the label name incorrectly, you won't discover the error until you have run LaTeX twice. To avoid this delay, two functions provide additional support: * `show-LaTeX-labels' finds all labelsin the buffer and displays them with their line numbers; I ran that function while I was writing a companion article, and got the output LaTeX labels in buffer ltxmode.ltx: "X-command" [line 1220] "customizing-lists" [line 2358] "fig-bindings-1" [line 856] "fig-bindings-2" [line 928] "fig-latex-index" [line 789] "fig-latex-mode-1" [line 659] "fig-latex-mode-2" [line 744] "fig-letter" [line 2561] "fig-startup-code" [line 1006] "gnu-emacs-size" [line 376] "indexing" [line 2048] "latex-support" [line 946] "mode-hook" [line 1310] "word-abbreviations" [line 1931] showing the labels in alphabetical order. With an argument, the labels are shown instead in line number order. * `check-LaTeX-labels'scans the entire buffer, looking for labels that are referenced, but undefined. At each such label found, a recursive edit is entered to allow you to supply the missing label;when you exit the recursive edit, the search for undefined labels continues from where it left off. These functions locate label references by searching for the string defined by the variable `LaTeX-label-reference'; it contains a regular expression that normally matches both `\pageref' and `\ref'. If you have defined private macros that also receive labels as arguments, you may wish to extend it. For example, the companion document has `\FIGREF' and `\PAGEREF' macros that simplify cross-referencing. Similarly, these functions locate label definitions by searching for the string defined by the variable `LaTeX-label-definition', another regular expression that normally matches `\label'. You may wish to customize it if private macros also generate labels. Multi-file documents pose a challenge: labels defined in one file may be referenced in another file, and it would be helpful to be able to show a list of all currently-defined labels when one is needed for a cross-reference. It is not feasible for the code in `latex.el' to attempt to figure out what files are used for a particular document, nor is it acceptable to ask the user to provide those file names. Yet we somehow need to scan those files to find all of the labels. The solution is that LaTeX can do part of this job for us: LaTeX processing of the master file produces in the corresponding `.aux' file all defined labels embedded in `\newlabel' commands. The function `update-LaTeX-labels' does the remainder of the job: it prompts for the name of the master `.aux' file, and then scans it to extract a list of labels from the `\newlabel' commands. This list is then *appended* to the current contents of the variable `LaTeX-aux-file-label-tags'. Augmentation, rather than replacement, permits selective construction of list subsets by multiple invocations of `update-LaTeX-labels' on different files. `check-LaTeX-labels' includes the values from `LaTeX-aux-file-label-tags' in its list of defined labels. For convenience, whenever `LaTeX-mode' is run (normally when a file is first visited), it will search the buffer for the first TeX macro which is preceded only by optional whitespace on its line. If that macro is `\documentstyle', then the file must be the master file for the document, so `LaTeX-aux-file-label-tags' is set to `nil', and `update-LaTeX-labels' is automatically called on the corresponding `.aux' file. This means that manual invocation of `update-LaTeX-labels' is needed only when you visit a sub-file without first visiting the master file. In recent versions of `latex.el', `LaTeX-pageref' and `LaTeX-ref' have been augmented by `LaTeX-pageref-with-completion' and `LaTeX-ref-with-completion'. The new functions are bound to `C-c p' and `C-c r', replacing the bindings to the older functions. The new ones use an internal function to dynamically scan the buffer for `\label{}' definitions, add the contents of `LaTeX-aux-file-label-tags' to the labels collected, and construct a list that can be used for command completion. They then prompt for a label, and if you type a query, they will display the current list of labels. You can use completion to select any one of them, or you can enter an arbitrary label that is not in the completion list. Here is what the completion list looks like for this document: Possible completions are: X-command customizing-lists fig-bindings-1 fig-bindings-2 fig-latex-index fig-latex-mode-1 fig-latex-mode-2 fig-letter fig-startup-code gnu-emacs-size indexing latex-support mode-hook word-abbreviations Because the dynamic label scan that happens each time these functions are executed may be slow in large documents, the old functions remain available for rebinding to keys. The Emacs variable `LaTeX-label-start-with-newline' can be set to a non-`nil' value if you prefer to have the inserted label entry start a new line. The variable `LaTeX-label-end-with-newline' can be set to a non-`nil' value to have a newline generated after the inserted label entry. The default for both is `nil', so that no additional lines are generated.  File: latex-mode.info Node: French typography, Prev: Cross-references, Up: LaTeX support, Next: Miscellaneous functions French typography ================= English typographicalconventions for spacing around punctuation are at odds with good French typography.TeX's `\frenchspacing' macro [Knuth:texbook, p. 74] [Lamport:latex, p. 154] does not entirely satisfy French conventions: it only makes spaces after punctuation the same as interword spaces. In French typography,the punctuation characters `: ; ? !' are *preceded* by an unbreakable interword space (in TeX language, a *tie*). Em-dashes (---) are always surrounded by spaces; in English typography, such spacing is a matter of personal style. Quotations are made with guillemets as `<< ... >>', instead of as "..."; the open guillemet is followed by a space, and the close one is preceded by a space. The GUTenberg organization has developed a standard TeX and LaTeX style file, `french.sty', to provide suitable definitions of the guillemets as the control sequences `"<' (or `\flqq') and `">' (or `\frqq'), as well as more convenient accent primitives. It is tedious to remember to type the TeX tie command everywhere that special French punctuation spacing is required, so the minor mode function `French-LaTeX-mode' is provided in `latex.el'. Each time it is invoked, it toggles between French and non-French conventions. It can be used in either TeX or LaTeX files. When French mode is selected, the Emacs mode line contains the string `French', and new functions `LaTeX-French-colon', `LaTeX-French-exclamation', `LaTeX-French-langle', `LaTeX-French-minus', `LaTeX-French-query', `LaTeX-French-rangle', and `LaTeX-French-semicolon' are bound to the appropriate keys. The quotation mark is rebound to `self-insert-command' so that the special handling normally provided by `LaTeX-quote' (*Note Dots and commas and quotation marks::) is suppressed. The French angle bracket functions insert an angle bracket, expand `<<' to `"<', and `>>' to `">', and then supply the necessary ties. Isolated angle brackets are inserted without further modification. Guillemets can thus be inserted either by typing their named control sequences, or by `"<' or `<<', and `">' or `>>'. `LaTeX-French-minus' inserts a minus sign, and if it is the end of an em-dash, supplies surrounding spaces (*not* ties). While it would be possible to have TeX provide for the French spacing requirements by suitable macro definitions of active characters, such redefinitions risk interfering with other macros. It seems best to provide for the spacing requirements in the input file itself, letting Emacs remember the necessary rules. French mode can be customized by defining a suitable value of the `French-LaTeX-mode-hook' variable; *Note LaTeX macros::.  File: latex-mode.info Node: Miscellaneous functions, Prev: French typography, Up: LaTeX support, Next: Miscellaneous variables Miscellaneous functions ======================= `LaTeX-counter' on `C-c k' generates a counter name with completion, using the names stored in the variable `LaTeX-standard-counters'. `LaTeX-footnote' on `C-c f' generates a `\footnote{}'. Not only does this save typing, but it also prevents my fingers from producing `\bootnote{}', which looks reasonable enough, but makes TeX unhappy. Non-`nil' values of the variables `LaTeX-footnote-end-with-newline' and `LaTeX-footnote-start-with-newline' request that newlines be generated before and after the footnote; the default values are `nil'. `LaTeX-news' on `C-c C-n' views the `latex.el' file to show the revision history recorded in it. `LaTeX-tab' on `C-c Tab' indents to the current `\begin{...}' ...`\end{...}' nesting level. `LaTeX-protect' on `C-c C-p' inserts a `\protect' macro at the current point. It is needed whenever fragile commands (e.g. any LaTeX command that has a star form [Lamport:latex, p. 27]) are present in a moving argument [Lamport:latex, p. 151]. In particular, all macros in `\index{}' entries should be preceded by `\protect'. Otherwise, you can get long macro expansions that cause buffer-overflow problems for indexing programs, and make the index file hard to read. Also, macro expansions can introduce special characters which cause problems for indexing programs like `makeindex'. `LaTeX-set-indentation' on `C-c ,' sets the current indentation column to the value of its argument, or to the cursor column if there is no argument. It is only rarely necessary to use this function, because the indentation is reset by several other functions. `LaTeX-verb' on `C-c v' generates a `\verb|...|' command with the cursor after the first vertical bar. With an argument, it creates the `\verb*|...|' form, which makes spaces visible. The delimiter character can be changed from a vertical bar by reassigning the Emacs variable `LaTeX-verb-delimiter'. For example, to set it to a plus sign instead of a vertical bar: (setq LaTeX-verb-delimiter ?\+) The funny `?\' prefix is one of Lisp's character quotes. As shown elsewhere (*Note LaTeX macros::), this assignment should normally be placed inside a mode hook. It can also be executed dynamically inside the Emacs minibuffer. Alternatively, you can use `M-x set-variable'; it will prompt for the variable name and value. There are several other functions in `latex.el' that I shall not document here; they are intended for internal use only, and are subject to change without warning. They all begin with the reserved prefix `internal-'.  File: latex-mode.info Node: Miscellaneous variables, Prev: Miscellaneous functions, Up: LaTeX support, Next: Customizing lists Miscellaneous variables ======================= There are a number of variables that we have not yet described. You should not have to modify any of them, but you occasionally might want to know what they are. `LaTeX-current-indentation' tracks the current environment indentation as the number of spaces from the left margin. It is updated dynamically by many functions. `LaTeX-mode-map' holds the map that associates keys with functions. `LaTeX-mode-version' is a string containing the version number and date of the last revision to the code. You should cite its value when reporting bugs; `LaTeX-gripe' puts it in the e-mail subject line. `LaTeX-standard-environments' contains the list of environment names used by `LaTeX-begin-end-block'. `LaTeX-standard-fonts' holds a list of font names and sizes. `LaTeX-standard-italic-fonts' is a list of the LaTeX control sequences for fonts that require italic corrections. `LaTeX-standard-list-environments' is a list of LaTeX environments which can have `\item' entries. `LaTeX-standard-options' is a list of options that can go in the square brackets of the `\documentstyle' command. It is used by `make-LaTeX-document' and `make-SLiTeX-document'. `LaTeX-standard-styles' is a list of styles that can go in the braces of the `\documentstyle' command. It is used by `make-LaTeX-document'. `LaTeX-standard-unindented-environments' is a list of environments that must not be indented. Variables beginning with the reserved prefix `internal-' are for internal use only; they are subject to change without warning, and will not be documented here.  File: latex-mode.info Node: Customizing lists, Prev: Miscellaneous variables, Up: LaTeX support, Next: LaTeX support Customizing lists ================= It is undesirable for users to have to duplicate the long initializations of standard fonts, macros, environments, and so on, when all they want to do is add a few more items to the lists. Therefore, for each variable `LaTeX-standard-xxx', there is a corresponding variable `LaTeX-extra-xxx' that is intended for user customization. The extra values are appended to the standard ones to make new lists that are used for command completion. Here are the names of these customization variables: `LaTeX-extra-counters', `LaTeX-extra-dotted-abbreviations', `LaTeX-extra-environments', `LaTeX-extra-fonts', `LaTeX-extra-italic-fonts', `LaTeX-extra-list-environments', `LaTeX-extra-macros', `LaTeX-extra-options', `LaTeX-extra-styles', `LaTeX-extra-tied-abbreviations', and `LaTeX-extra-unindented-environments'. Suppose for example that you want to add new environments named `conjecture', `postulate', and `wildguess' to the standard list used by `LaTeX-begin-end-block'. In the `LaTeX-mode-hook' in your `.emacs' file, add this assignment: (setq LaTeX-extra-environments '( ("conjecture") ("postulate") ("wildguess") ) ) When you subsequently type `C-c b', these three new names will appear in the environment name completion list. Such lists are automatically alphabetized during the completion process, so the names can be given in any order in the assignment. There is no provision for deleting names from the standard lists; after all, they are *standard*! Also, remember that the new additions are made known only to Emacs; you still have to teach LaTeX how to typeset them. You may have wondered in the example above why I wrote `("conjecture")' instead of just `"conjecture"' in the assignment of `LaTeX-extra-environments'. The extra parentheses make a list out of each element in the variable. In `latex.el', all variables that hold multiple strings store them as *lists of lists* of strings, rather than as simpler lists of strings. This choice was intentional, because it facilitates adding additional related strings in the form of Lisp *association lists*. The variables `LaTeX-extra-environments', `LaTeX-extra-macros', `LaTeX-standard-environments', and `LaTeX-standard-macros' already use association lists to hold trailing braces and brackets, and descriptive comments.  File: latex-mode.info Node: SliTeX support, Prev: LaTeX support, Up: Top, Next: Letter support SliTeX support ************** SLiTeX works much like LaTeX, so little additional support is required. All of the commands in the preceding sections can be used, and the editing mode is still called `LaTeX-mode'. When you select a new SLiTeX file to edit, you can create an initial template with `make-SLiTeX-document' on `C-c s'. It prompts only for document style options, since the major style is fixed at `slides', and produces something like this: % -*-latex-*- % Document name: /u/beebe/tex/tugboat/foo.stx % Creator: Nelson Beebe [beebe@math.utah.edu] % Creation Date: Mon Jul 29 08:15:15 1991 \documentstyle[]{slides} \begin{document} \onlyslides{1-9999} \onlynotes{1-9999} % \colors{} % {red,green,blue,etc.} colors % \colorslides{} % input file \blackandwhite{} % input file \end{document} The cursor is left positioned in the brace pair of the `\blackandwhite{}' macro, where you can type the name of another file that you can create in `LaTeX-mode', using `slide' environments generated by `C-c b sli' `RETurn'. It is convenient to number each slide with a comment, so that you have the numbers available if you need them for the `\onlynotes' and `\onlyslides' commands. The function `renumber-slides' on `C-c 0' modifies relevant commands in the buffer to read something like this: \begin{slide}{} % slide number 1 ... \begin{slide}{} % slide number 2 ... \begin{overlay}{red} % overlay number 2-a ... \begin{overlay}{green} % overlay number 2-b ... \begin{note} % note number 2-1 ... \begin{slide}{} % slide number 3 ... \begin{note} % note number 3-1 ... \begin{note} % note number 3-2 Any existing comments on the commands are discarded. Notice the special handling accorded the SLiTeX `note' and `overlay' environments; they receive a major number equal to that of the closest preceding slide, followed by a hyphen and a minor number or letter [Lamport:latex, pp. 136--137]. The Emacs variable `SLiTeX-begin-slide' defines the regular expression used to find the start of the `note', `overlay', and `slide' environments.  File: latex-mode.info Node: Letter support, Prev: SliTeX support, Up: Top, Next: Bug reporting Letter support ************** LaTeX [Lamport:latex, pp. 66ff] provides a `letter' document style, but there is a fair amount of constant `boilerplate' that has to be typed each time you use it. This suggests that the best approach is to have private template files that already have a letter outline in them, and then arrange to start each letter with a copy of the template already inserted into the buffer. Emacs' programmability makes this straightforward. The startup file code in Table 1 loads a small Lisp file, `letter.el'. It defines a `letter-mode' function, and associates it with files with extension `.ltr'. If I then visit a new file `rb-jones.ltr', I immediately get the buffer shown in Table 8, with the cursor positioned in the empty brace pair in `\begin{letter}{}', ready for entry of the address. The query in `\opening{Dear ?}' is a reminder to enter something there, and then the body of the letter can be typed in following the `\opening' line. ---------------------------------------------------------------------- % -*-LaTeX-*- % Document name: /u/beebe/rb-jones.ltr % Creator: Nelson Beebe [beebe@math.utah.edu] % Creation Date: Mon Jul 29 20:06:18 1991 %--------------------------------------------- % EVERYTHING TO THE RIGHT OF A % IS A REMARK % TO YOU AND IS IGNORED BY LaTeX. % % WARNING! DO NOT TYPE ANY OF THE FOLLOWING % 10 CHARACTERS AS NORMAL TEXT CHARACTERS: % & $ # % _ { } ^ ~ \% % The following seven are printed by typing a % backslash in front of them: % $ & # % _ { and }. %--------------------------------------------- \documentstyle[nhfb-letter]{letter} \begin{document} \begin{letter}{} \opening{Dear ?} \closing{Sincerely,} \ps{{$\cal NHFB$}/\LaTeX} \end{letter} \end{document} ---------------------------------------------------------------------- Table 8 : Letter template. My personal style option `nhfb-letter' provides for a University and Department letterhead on the first page, and defines a few private macros that I often need in my correspondence. Once the letter file has been saved, I suspend Emacs, or switch to another workstation window, and then process the letter by typing make LET=rb-jones The UNIX `make' utility is a wonderful tool; here it directs the execution of commands to expand tabs to blanks, changes the file protection to remove access to all but its owner, runs LaTeX, and then runs a PostScript DVI driver, sending the output to a nearby printer. Then it sends the output PostScript through a shell filter that modifies the `showpage' command to print the string *File Copy* in outline letters diagonally across each page, and queues that to the printer as well. On those occasions where I require multiple copies of the original letter, I just type something like make LET=rb-jones C=3 This gives me one file copy, and three originals for signing and mailing. With this support, preparation of typeset letters is just as easy as typewritten ones, and the result looks much better. And I can use mathematics and a variety of fonts too!  File: latex-mode.info Node: Bug reporting, Prev: Letter support, Up: Top, Next: Conclusion Bug reporting ************* `LaTeX-gripe' on `C-c g' makes it easy to complain about `LaTeX-mode'; it puts you in an e-mail buffer with a mail header something like this: To: beebe@math.utah.edu Subject: LaTeX-mode gripe report {beta test 0.23 [08-May-1991]} The standardized subject field makes it easy for the author to identify such messages in his voluminous e-mail correspondence, and also automatically identifies the code version. If you don't have an electronic mail connection yet, you probably soon will. For now, just send me your comments in postal mail. Machine-readable submissions can be sent on IBM PC or Apple Macintosh floppy disks.  File: latex-mode.info Node: Conclusion, Prev: Bug reporting, Up: Top, Next: Bibliography Conclusion ********** `LaTeX-mode' editing support in GNU Emacs provides a very powerful, and pleasant, way to prepare LaTeX and SLiTeX input. The original TOPS-20 version written in TECO was begun in October 1984, and used extensively at Utah until our DEC-20/60 retired on October 31, 1990. It consists of about 1000 lines of code defining 24 functions. The power of Lisp over TECO made it possible to be much more ambitious in the functionality of the GNU Emacs version, and I consequently suspended further development of the TECO code in January 1988 when I began the Lisp coding. The current Lisp version is more than 4 times the size of the TECO one, both in lines of code, and in editing functions. Despite the increase in size, it is *much* easier to maintain. The GNU Emacs implementation was released for beta testing in March, 1988. About 70 sites have participated in the beta test of `latex.el'. I thank these many people for their contributions of comments, and sometimes, even code. Is it bug free? No computer program for a realistic problem ever is; there are simply too many details for humans ever to get completely right. The `latex.el' revision history shows mostly additions of new functionality, and code changes for better performance. The virtue of the Emacs editing environment is that new functions can be written, debugged, and tested in the editor itself, providing immediate feedback and confidence in the correctness of operation. Much of the code is in small functions that are independent of the others, following the Lisp programming tradition. After removal of comments and empty lines, and ignoring the initializations of large tables, the average is about 22 lines of code and documentation per function. This is close to the 20-line average for all of GNU Emacs. Documentation contributions are included here because Emacs functions, and some variables, carry their own documentation with them, even after compilation. That documentation is readily available for viewing in the editor. I believe that this code could serve as a model for other Emacs-like editors that have an extension language in which new functions can be written. I had planned to write an EEL version for the `epsilon' editor on PC DOS, but alas, have not found the time to do so. This is not a small job, but it should be straightforward for someone familiar with both Lisp and EEL. The `latex.el' file is over 4200 lines long, with about 155KB of text; Emacs compiles it into about 100KB of byte codes. The latter figure should give some idea of the memory requirements for implementations in other editors. I hope some reader will prepare such a translation and make it freely available, as `latex.el' is. A large portion of the TeX community uses personal computers that are inadequate for GNU Emacs, but have smaller Emacs-like editors available, and such editing support would be a great boon for them. If you plan to undertake such a translation effort, check with the author of `latex.el' first to find out if anyone else is already working on one. Some other work in the TeX community for editing support has been reported in the TeX User Group TeXniques series [McPherson:TQ1-1,Muller:TQ7-235,vonBechtolsheim:TQ7-195] and in TUGboat [Clark:TB10-1-14-15,Eijkhout:TB11-4-605,Hoenig:TB7-1-51,Hoover:TB10-4-549-559,Hornbach:TB7-2-99,Kleine:TB7-2-111,Williams:TB11-3-421-424]. I believe that `latex.el' is much more powerful, however. Those who use UNIX workstations or VMS systems where GNU Emacs is already available should eventually find `latex.el' in the `emacs/lisp' directory, and until then, can obtain it directly from the author, provided they have Internet electronic mail or `ftp' access. If you have a UNIX or VMS system, but do not yet have GNU Emacs, you can get Emacs from any site that already has it, or better, you can get the latest version directly from the Free Software Foundation. The latter is accessible either via Internet anonymous `ftp' to the machine `prep...', or through postal mail to Free Software Foundation, Inc. 675 Massachusetts Ave Cambridge, MA 02139 USA The postal mail approach carries some shipping and documentation charges, but the software itself is free.  File: latex-mode.info Node: Bibliography, Prev: Conclusion, Up: Top, Next: Concept Index Bibliography ************ Alexander:TB7-3-138 James Alexander. `Tib': a reference setting package for TeX. *TUGBoat*, 7(3):138, October 1986. Alexander:TB8-2-102 James Alexander. `Tib': a reference setting package, update. *TUGBoat*, 8(2):102, July 1987. Aurbach:TQ3-1 R. L. Aurbach. User's guide to the IdxTeX program. *TeXniques, Publications for the TeX community*, (3):i, 1--14, 1987. Bentley:EPODD-1-1-3 J. L. Bentley and B. W. Kernighan. Tools for printing indexes. *Electronic Publishing---Origination, Dissemination, and Design*, 1(1):3--18, April 1988. Chen:UCB-TR-87-347 Pehong Chen and Michael A. Harrison. Automating index preparation. Technical Report 87/347, Computer Science Division, University of California, Berkeley, CA, USA, March 1987. This is an expanded version of [Chen:SPE-19-9-897]. Chen:SPE-19-9-897 Pehong Chen and Michael A. Harrison. Index preparation and processing. *Software---Practice and Experience*, 19(9):897--915, September 1988. The LaTeX text of this paper is included in the `makeindex' software distribution. Clark:TB10-1-14-15 Adrian Clark. An enhanced TeX-editor interface for VMS. *TUGBoat*, 10(1):14--15, April 1989. Eijkhout:TB11-4-605 Victor Eijkhout. A new editor. *TUGBoat*, 11(4):605, November 1990. Hoenig:TB7-1-51 A. Hoenig and M. Pfeffer. TeX text editors for the IBM PC. *TUGBoat*, 7(1):51, March 1986. Hoover:TB10-4-549-559 Anita Z. Hoover. Using WordPerfect 5.0 to Create TeX and LaTeX Documents. *TUGBoat*, 10(4):549--559, December 1989. Hornbach:TB7-2-99 Kathy Hornbach. Language Sensitive Editor Templates and Guide for use with LaTeX. *TUGBoat*, 7(2):99, June 1986. Kleine:TB7-2-111 Karl Kleine. Customized editors for TeX. *TUGBoat*, 7(2):111, June 1986. Knuth:texbook Donald E. Knuth. *The TeXbook*. Addison-Wesley 1984. Lamport:latex Leslie Lamport. *LaTeX---A Document Preparation System---User's Guide and Reference Manual*. Addison-Wesley 1985. Lamport:makeindex Leslie Lamport. *MakeIndex: An Index Processor For LaTeX*, 17 February 1987. The LaTeX text of this paper is included in the `makeindex' software distribution. McPherson:TQ1-1 Kent McPherson. VAX Language-Sensitive Editor (LSEDIT) Quick Reference Guide. *TeXniques, Publications for the TeX community*, (1):ii, 1--9, 1988. Muller:TQ7-235 Paul M. Muller. FASTeX: A PC text editor and front-end for TeX. *TeXniques, Publications for the TeX community*, (7):235--254, 1988. Schoepf:TB11-2-284-296 Rainer Schoepf. A new implementation of the LaTeX `verbatim' and `verbatim*' environments. *TUGBoat*, 11(2):284--296, June 1990. Shertzer:grammar Margaret Shertzer. *The Elements of Grammar*. Collier Books, Macmillan Publishing Company, 1986. vonBechtolsheim:TQ7-195 Stephan von Bechtolsheim. Using the Emacs editor to safely edit TeX sources. *TeXniques, Publications for the TeX community*, (7):195--202, 1988. Williams:TB11-3-421-424 Linda Williams and Linda Hall. Increased efficiency using advanced EDT editing features. *TUGBoat*, 11(3):421--424, September 1990.  File: latex-mode.info Node: Concept Index, Prev: Bibliography, Up: Top, Next: Control Sequence Index Concept Index ************* * Menu: * << ... >>: French typography. * abbreviation: Dots and commas and quotation marks. * abbreviation: Dots and commas and quotation marks. * abbreviation: Dots and commas and quotation marks. * abbreviation: Dots and commas and quotation marks. * abbreviation: Dots and commas and quotation marks. * abbreviation: Dots and commas and quotation marks. * abbreviation: Dots and commas and quotation marks. * abbreviation: Dots and commas and quotation marks. * abbreviation: Dots and commas and quotation marks. * abbreviation: Word abbreviations. * abbreviation: Word abbreviations. * abbreviation: Word abbreviations. * abbreviation: Word abbreviations. * angle bracket: French typography. * apostrophe: Dots and commas and quotation marks. * Apple Macintosh: Bug reporting. * art10.sty: Creating a new LaTeX file. * association list: Customizing lists. * .aux file: Bibliographies. * .aux file: Bibliographies. * .aux file: Cross-references. * .aux file: Cross-references. * .aux file: Cross-references. * backslash: Math mode. * backslash: Math mode. * backslash: Math mode. * backslash: Mismatched delimiters. * backslash: Mismatched delimiters. * beta test: Conclusion. * bibliography: Bibliographies. * bibliography: Bibliography. * BibTeX: Bibliographies. * boilerplate: Letter support. * buffer overflow: Comments. * buffer overflow: Miscellaneous functions. * bug report: Bug reporting. * bug report: Miscellaneous variables. * bug report: Preliminaries. * bug report: Preliminaries. * bug reporting: Bug reporting. * caret: Math mode. * closing apostrophe: Dots and commas and quotation marks. * code size: Conclusion. * code version: Bug reporting. * comma: Dots and commas and quotation marks. * comma: Dots and commas and quotation marks. * comma: Dots and commas and quotation marks. * comma: Dots and commas and quotation marks. * comma: Dots and commas and quotation marks. * comma: Font changes. * command completion: Creating a new LaTeX file. * command completion: Creating a new LaTeX file. * command completion: Creating a new LaTeX file. * command completion: Cross-references. * command completion: Cross-references. * command completion: Cross-references. * command completion: Customizing lists. * command completion: Customizing lists. * command completion: LaTeX macros. * command completion: LaTeX macros. * command completion: LaTeX macros. * command completion: LaTeX macros. * command completion: Miscellaneous functions. * comment: Comments. * complaint: Bug reporting. * complaint: Miscellaneous variables. * complaint: Preliminaries. * complaint: Preliminaries. * completion: Creating a new LaTeX file. * completion: Creating a new LaTeX file. * completion: Creating a new LaTeX file. * completion: Cross-references. * completion: Cross-references. * completion: Cross-references. * completion: Customizing lists. * completion: Customizing lists. * completion: LaTeX macros. * completion: LaTeX macros. * completion: LaTeX macros. * completion: LaTeX macros. * completion: Miscellaneous functions. * concept index: Concept Index. * conventions for naming: Miscellaneous functions. * conventions for naming: Miscellaneous variables. * conventions for naming: Preliminaries. * counter name: Miscellaneous functions. * creating a new LaTeX file: Creating a new LaTeX file. * cross-references: Cross-references. * cursor: Bibliographies. * cursor: Bibliographies. * cursor column: Miscellaneous functions. * cursor: Common commands. * cursor: Creating a new LaTeX file. * cursor flash: Mismatched delimiters. * cursor: Indexing. * cursor: LaTeX environments. * cursor: LaTeX environments. * cursor: LaTeX macros. * cursor: LaTeX macros. * cursor: Letter support. * cursor: Math mode. * cursor: Math mode. * cursor: Math mode. * cursor: Miscellaneous functions. * cursor: Mismatched environments. * cursor: Mismatched environments. * cursor: SliTeX support. * customization: Customizing lists. * date of revision: Bug reporting. * date of revision: Miscellaneous variables. * DEC-20: Conclusion. * delimiter mismatch: Mismatched delimiters. * display math: Math mode. * display math: Math mode. * display math: Math mode. * display math: Math mode. * documentation of function: Conclusion. * documentation of function: Preliminaries. * documentation of function: Preliminaries. * dollar sign: Math mode. * dollar sign: Math mode. * dollar sign: Math mode. * dollar sign: Math mode. * dollar sign: Math mode. * dollar sign: Math mode. * dollar sign: Math mode. * dollar sign: Math mode. * dollar sign: Math mode. * dollar sign: Math mode. * dollar sign: Mismatched delimiters. * dollar sign: Mismatched delimiters. * dollar sign: Mismatched delimiters. * dot: Dots and commas and quotation marks. * edit-abbrevs: Word abbreviations. * EEL: Conclusion. * EEL: Conclusion. * ellipsis: Dots and commas and quotation marks. * ellipsis: Dots and commas and quotation marks. * .emacs file: Customizing lists. * .emacs file: LaTeX macros. * .emacs file: Preliminaries. * .emacs file: Preliminaries. * .emacs file: Word abbreviations. * e-mail: Bug reporting. * e-mail: Bug reporting. * e-mail: Conclusion. * e-mail: Creating a new LaTeX file. * e-mail: Miscellaneous variables. * e-mail: Preliminaries. * e-mail: Preliminaries. * e-mail: Word abbreviations. * em-dash (---): French typography. * em-dash (---): French typography. * end of sentence: Dots and commas and quotation marks. * end of sentence: Dots and commas and quotation marks. * end of sentence: Dots and commas and quotation marks. * end of sentence: Dots and commas and quotation marks. * end of sentence: Dots and commas and quotation marks. * end of sentence: Dots and commas and quotation marks. * end of sentence: Dots and commas and quotation marks. * English typography: French typography. * environment: LaTeX environments. * epsilon editor: Conclusion. * file copy: Letter support. * file extensions: Letter support. * file extensions: Preliminaries. * floppy disk: Bug reporting. * font change: Font changes. * font change: Font changes. * footnote: Miscellaneous functions. * fragile command: Miscellaneous functions. * Free Software Foundation: Conclusion. * French typography: French typography. * French typography: French typography. * french.sty: French typography. * full stop: Dots and commas and quotation marks. * function documentation: Conclusion. * function documentation: Preliminaries. * function documentation: Preliminaries. * gnats and gnus: Creating a new LaTeX file. * gnats and gnus: Indexing. * grave accent: Dots and commas and quotation marks. * gripe: Bug reporting. * gripe: Miscellaneous variables. * gripe: Preliminaries. * gripe: Preliminaries. * guillemet: French typography. * GUTenberg: French typography. * Halloween: Conclusion. * highlighter pen: Indexing. * history of revisions: Conclusion. * history of revisions: Miscellaneous functions. * hook: Customizing lists. * hook: French typography. * hook: LaTeX macros. * hook: LaTeX macros. * hook: LaTeX macros. * hook: Miscellaneous functions. * hook: Word abbreviations. * hook: Word abbreviations. * hostname: Creating a new LaTeX file. * IBM PC: Bug reporting. * IBM PC: Conclusion. * indexing: Indexing. * initial: Dots and commas and quotation marks. * inline comment: Comments. * inline math: Math mode. * inline math: Math mode. * inline math: Math mode. * internal functions: Miscellaneous functions. * internal variables: Miscellaneous variables. * italic correction: Dots and commas and quotation marks. * italic correction: Dots and commas and quotation marks. * italic correction: Dots and commas and quotation marks. * italic correction: Font changes. * italic correction: Font changes. * italic correction: Font changes. * key binding: Cross-references. * key binding: Cross-references. * key binding: Mismatched delimiters. * key binding: Mismatched delimiters. * key binding: Mismatched environments. * key binding: Preliminaries. * key binding: Preliminaries. * key binding: Preliminaries. * key binding: Preliminaries. * key map: Miscellaneous variables. * letter: Letter support. * letterhead: Letter support. * licensing information: Licensing information. * literal: Dots and commas and quotation marks. * literal: Math mode. * literature: Bibliography. * login name: Creating a new LaTeX file. * lplain.tex: Word abbreviations. * .ltr file: Letter support. * .ltx file: Preliminaries. * Macintosh: Bug reporting. * macros: LaTeX macros. * make utility: Letter support. * makeindex utility: Bibliography. * makeindex utility: Bibliography. * makeindex utility: Indexing. * makeindex utility: Miscellaneous functions. * map of keys: Miscellaneous variables. * mark stack: Mismatched delimiters. * math mode: Math mode. * math mode: Mismatched delimiters. * minibuffer: LaTeX macros. * minibuffer: Miscellaneous functions. * mode hook: LaTeX macros. * mode hook: Miscellaneous functions. * mode hook: Word abbreviations. * mode line: French typography. * mouse: Indexing. * mouse: Indexing. * mouse: Indexing. * mouse: Indexing. * name prefix: Miscellaneous functions. * name prefix: Miscellaneous variables. * name prefix: Preliminaries. * naming conventions: Miscellaneous functions. * naming conventions: Miscellaneous variables. * naming conventions: Preliminaries. * nesting check: Mismatched environments. * nesting check: Mismatched environments. * nesting error: Mismatched environments. * nesting level: LaTeX environments. * nesting level: Miscellaneous functions. * nesting level: Mismatched environments. * news: Miscellaneous functions. * note environment: SliTeX support. * opening apostrophe: Dots and commas and quotation marks. * option: Comments. * option: Creating a new LaTeX file. * option: Creating a new LaTeX file. * option: Creating a new LaTeX file. * option: Creating a new LaTeX file. * option: Creating a new LaTeX file. * option: Letter support. * option: Miscellaneous variables. * option: SliTeX support. * outline letters: Letter support. * overflow of buffer: Comments. * overflow of buffer: Miscellaneous functions. * overlay environment: SliTeX support. * PC: Bug reporting. * PC: Conclusion. * PC DOS: Conclusion. * period: Dots and commas and quotation marks. * personal name: Creating a new LaTeX file. * plain.tex: Word abbreviations. * plus sign: Miscellaneous functions. * PostScript: Letter support. * prefix command: Preliminaries. * prefix in names: Miscellaneous functions. * prefix in names: Miscellaneous variables. * prefix in names: Preliminaries. * problem report: Bug reporting. * problem report: Miscellaneous variables. * problem report: Preliminaries. * problem report: Preliminaries. * protecting arguments: Miscellaneous functions. * punctuation: Word abbreviations. * query: Creating a new LaTeX file. * query: Creating a new LaTeX file. * query: Cross-references. * query: LaTeX macros. * query: Letter support. * quotation mark: Dots and commas and quotation marks. * quotation mark: Dots and commas and quotation marks. * recursive edit: Cross-references. * references: Bibliography. * regular expression: Comments. * regular expression: Comments. * regular expression: Cross-references. * regular expression: SliTeX support. * reporting bugs: Bug reporting. * reporting bugs: Miscellaneous variables. * reporting bugs: Preliminaries. * reporting bugs: Preliminaries. * revision date: Bug reporting. * revision date: Miscellaneous variables. * revision history: Conclusion. * revision history: Miscellaneous functions. * scope of names: Preliminaries. * sentence end: Dots and commas and quotation marks. * sentence end: Dots and commas and quotation marks. * sentence end: Dots and commas and quotation marks. * sentence end: Dots and commas and quotation marks. * sentence end: Dots and commas and quotation marks. * sentence end: Dots and commas and quotation marks. * sentence end: Dots and commas and quotation marks. * set-variable: Miscellaneous functions. * showpage: Letter support. * slide environment: SliTeX support. * SLiTeX: SliTeX support. * space: Creating a new LaTeX file. * space: LaTeX macros. * space: Word abbreviations. * startup file: Customizing lists. * startup file: LaTeX macros. * startup file: Preliminaries. * startup file: Preliminaries. * startup file: Word abbreviations. * .stx file: Preliminaries. * .sty file: Creating a new LaTeX file. * .sty file: Preliminaries. * style file: Comments. * style file: Creating a new LaTeX file. * style file: Creating a new LaTeX file. * style file: Creating a new LaTeX file. * style file: Creating a new LaTeX file. * style file: French typography. * subscript: Math mode. * superscript: Math mode. * TECO: Conclusion. * template file: Letter support. * \TeX book: Word abbreviations. * .tex file: Preliminaries. * \TeX{}book: Word abbreviations. * texindex utility: Indexing. * Tib: Bibliographies. * tie: Dots and commas and quotation marks. * tie: Dots and commas and quotation marks. * tie: French typography. * tie: French typography. * tie: French typography. * tilde: Dots and commas and quotation marks. * TOPS-20: Conclusion. * TUGboat: Conclusion. * underscore: Math mode. * UNIX: Conclusion. * variables: Miscellaneous variables. * version number: Miscellaneous variables. * version of code: Bug reporting. * vertical bar: Miscellaneous functions. * vertical bar: Miscellaneous functions. * visibility of names: Preliminaries. * VMS: Conclusion. * VMS: Conclusion. * word abbreviation: Word abbreviations. * word abbreviation: Word abbreviations. * word abbreviation: Word abbreviations. * X Window System: Indexing.  File: latex-mode.info Node: Control Sequence Index, Prev: Concept Index, Up: Top, Next: Function Index Control Sequence Index ********************** * Menu: * \[} * $ ... $: Math mode. * $$ ... $$: Math mode. * \/: Dots and commas and quotation marks. * \@: Dots and commas and quotation marks. * \@: Dots and commas and quotation marks. * \@: Dots and commas and quotation marks. * \@: Dots and commas and quotation marks. * \@: Dots and commas and quotation marks. * "<: French typography. * "<: French typography. * ">: French typography. * ">: French typography. * \(: Math mode. * \): Math mode. * \: Math mode. * ": Preliminaries. * \abovedisplayshortskip: LaTeX macros. * \adss: LaTeX macros. * \begin: LaTeX environments. * \begin: LaTeX environments. * \begin{...}: LaTeX environments. * \begin{...}: LaTeX environments. * \begin{...}: LaTeX environments. * \begin{...}: Math mode. * \begin{...}: Miscellaneous functions. * \begin{...}: Mismatched environments. * \begin{...}: Mismatched environments. * \begin{...}: Mismatched environments. * \begin: Preliminaries. * \begin: Preliminaries. * \begin: SliTeX support. * \begin: SliTeX support. * \begin{conjecture}: LaTeX environments. * \begin{displaymath}: Math mode. * \begin{document}: Creating a new LaTeX file. * \begin{document}: Creating a new LaTeX file. * \begin{document}: Creating a new LaTeX file. * \begin{document}: Letter support. * \begin{document}: SliTeX support. * \begin{equation}: Math mode. * \begin{itemize}: LaTeX environments. * \begin{letter}{}: Letter support. * \begin{letter}{}: Letter support. * \begin{quote}: LaTeX environments. * \begin{quote}: Mismatched environments. * \begin{quote}: Mismatched environments. * \begin{slide}{}: SliTeX support. * \begin{verbatim}: LaTeX environments. * \begin{verse}: Mismatched environments. * \bibdata: Bibliographies. * \bibitem[]{}: Bibliographies. * \bibitem{}: Bibliographies. * \bibliography: Bibliographies. * \bibliography: Bibliographies. * \blackandwhite{}: SliTeX support. * \bootnote{}: Miscellaneous functions. * \cal: Letter support. * \cdots: Dots and commas and quotation marks. * \cite: Bibliographies. * \cite[]{}: Bibliographies. * \cite{}: Bibliographies. * \closing: Letter support. * \colors: SliTeX support. * \colorslides: SliTeX support. * \comment: Comments. * \ddots: Dots and commas and quotation marks. * \def: Comments. * \documentstyle: Creating a new LaTeX file. * \documentstyle: Creating a new LaTeX file. * \documentstyle: Cross-references. * \documentstyle: Letter support. * \documentstyle: Miscellaneous variables. * \documentstyle: Miscellaneous variables. * \documentstyle: SliTeX support. * \em: Font changes. * \end: LaTeX environments. * \end{...}: LaTeX environments. * \end{...}: LaTeX environments. * \end{...}: LaTeX environments. * \end{...}: LaTeX environments. * \end{...}: LaTeX environments. * \end{...}: Math mode. * \end{...}: Miscellaneous functions. * \end{...}: Mismatched environments. * \end{...}: Mismatched environments. * \end{...}: Mismatched environments. * \end: Preliminaries. * \end: Preliminaries. * \end{conjecture}: LaTeX environments. * \end{displaymath}: Math mode. * \end{document}: Creating a new LaTeX file. * \end{document}: Creating a new LaTeX file. * \end{document}: Letter support. * \end{document}: SliTeX support. * \end{equation}: Math mode. * \end{itemize}: LaTeX environments. * \end{letter}: Letter support. * \end{quote}: LaTeX environments. * \end{quote}: Mismatched environments. * \end{verbatim}: LaTeX environments. * \end{verbatim}: LaTeX environments. * \end{verse}: Mismatched environments. * \end{verse}: Mismatched environments. * \FIGREF: Cross-references. * \flqq: French typography. * \footnote{}: Miscellaneous functions. * \frenchspacing: French typography. * \frqq: French typography. * \FUNCTION{}: Indexing. * \index: Indexing. * \index: Indexing. * \index: Miscellaneous functions. * \index: Preliminaries. * \it: Font changes. * \item: LaTeX environments. * \item: LaTeX environments. * \item: LaTeX environments. * \item: LaTeX environments. * \item[]: LaTeX environments. * \item: Miscellaneous variables. * \label: Common commands. * \label: Cross-references. * \label: Cross-references. * \label: Cross-references. * \label: Cross-references. * latex to \LaTeX{} : Word abbreviations. * \ldots: Dots and commas and quotation marks. * \ldots: Dots and commas and quotation marks. * \long: Comments. * \longrightarrow: LaTeX macros. * \^^M: Word abbreviations. : Math mode. * \newcommand: Comments. * \newcommand: Creating a new LaTeX file. * \newcommand: Creating a new LaTeX file. * \newcommand: Letter support. * \newcommand: SliTeX support. * \newlabel: Cross-references. * \newlabel: Cross-references. * \onlynotes: Preliminaries. * \onlynotes: SliTeX support. * \onlynotes: SliTeX support. * \onlyslides: Preliminaries. * \onlyslides: SliTeX support. * \onlyslides: SliTeX support. * \opening: Letter support. * \opening: Letter support. * \opening{Dear ?}: Letter support. * \PAGEREF: Cross-references. * \pageref: Cross-references. * \pageref: Cross-references. * \protect: Miscellaneous functions. * \protect: Miscellaneous functions. * \protect: Word abbreviations. * \ps: Letter support. * \ref: Cross-references. * \ref: Cross-references. * \sl: Font changes. * \: Dots and commas and quotation marks. * \: Dots and commas and quotation marks. * \: Word abbreviations. * \: Word abbreviations. * \: Word abbreviations. * tex to \TeX{}: Word abbreviations. * \TeX{} vs. \TeX\: Word abbreviations. * \TeX{}: Word abbreviations. * {\TeX}: Word abbreviations. * \TeX\: Word abbreviations. * \vdots: Dots and commas and quotation marks. * \verb*|...|: Miscellaneous functions. * \verb|...|: Miscellaneous functions. * \X: Creating a new LaTeX file. * \X: Indexing. * \X{gnats and gnus}: Creating a new LaTeX file.