home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-01-11 | 47.6 KB | 1,411 lines |
- Info file ../info/texinfo, produced by Makeinfo, -*- Text -*- from
- input file texinfo.texinfo.
-
- This file documents Texinfo, a documentation system that uses a
- single source file to produce both on-line help and a printed manual.
-
- This is edition 1.1 of the Texinfo documentation, and is for the
- Texinfo that is distributed as part of Version 18 of GNU Emacs.
-
- Copyright (C) 1988 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
- manual provided the copyright notice and this permission notice are
- preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
- this manual under the conditions for verbatim copying, provided that
- the entire resulting derived work is distributed under the terms of a
- permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
- manual into another language, under the above conditions for modified
- versions, except that this permission notice may be stated in a
- translation approved by the Foundation.
-
-
- File: texinfo, Node: Breaks Blank-Lines Groups, Prev: Refilling & Noindent, Up: Formatting Paragraphs
-
- Breaks, Blank Lines and Groups
- ==============================
-
- Texinfo has several commands for making blank lines, for forcing
- paragraph and page breaks in the printed manual and for preventing
- text from running from one page to the next.
-
- `@*'
- Force a line break in the printed manual. This command has no
- effect on the Info file.
-
- `@sp'
- Generate blank lines in both the printed manual and in the Info
- file.
-
- `@br'
- Force a paragraph break in the printed manual. This command has
- no effect on the Info file.
-
- `@w'
- Prevent text from being split across two lines in the printed
- manual. This command has no effect on the Info file.
-
- `@page'
- Start a new page in the printed manual. This command has no
- effect on the Info file.
-
- `@group'
- Hold text together that must appear on one printed page. This
- command has no effect on the Info file.
-
- `@need'
- Start a new printed page if required space not on this one.
- This command has no effect on the Info file.
-
- * Menu:
-
- * Line Breaks:: Force a line break in the printed manual.
- * Sp:: Generate blank lines.
- * Br:: Force a paragraph break in the printed manual.
- * W:: Prevent a paragraph break in the printed manual.
- * Page:: Start a new page in the printed manual.
- * Group:: Hold text together that must appear on one printed page.
- * Need:: Start a new printed page if required space not on this one.
-
-
- File: texinfo, Node: Line Breaks, Next: Sp, Prev: Breaks Blank-Lines Groups, Up: Breaks Blank-Lines Groups
-
- @*
- --
-
- `@*' forces a line break in the printed manual. It has no effect on
- the Info file output, where line breaks follow those in the source
- file. If you want a line break at a certain spot in both forms of
- output, break the line there in the source file and put `@*' at the
- end of the line.
-
-
- File: texinfo, Node: Sp, Next: Br, Prev: Line Breaks, Up: Breaks Blank-Lines Groups
-
- @sp
- ---
-
- A line containing `@sp N' generates N blank lines of space in either
- the printed manual or the Info file. For example,
-
- @sp 2
-
- generates two blank lines.
-
-
- File: texinfo, Node: Br, Next: W, Prev: Sp, Up: Breaks Blank-Lines Groups
-
- @br
- ---
-
- In a printed manual, a line containing `@br' forces a paragraph
- break; in the Info file output, it does nothing (not even a blank
- line results from it).
-
-
- File: texinfo, Node: W, Next: Page, Prev: Br, Up: Breaks Blank-Lines Groups
-
- @w
- --
-
- In a printed manual, `@w{TEXT}' outputs TEXT and prohibits line
- breaks within TEXT. `@w' has no effect on the Info file output; it
- is the same as would result from just TEXT.
-
-
- File: texinfo, Node: Page, Next: Group, Prev: W, Up: Breaks Blank-Lines Groups
-
- @page
- -----
-
- A line containing `@page' starts a new page in a printed manual. The
- line has no effect on Info files since they are not paginated.
-
-
- File: texinfo, Node: Group, Next: Need, Prev: Page, Up: Breaks Blank-Lines Groups
-
- @group
- ------
-
- A line containing `@group' begins an unsplittable vertical group,
- which must appear entirely on one page. The group is terminated by a
- line containing `@end group'. These two lines produce no output of
- their own, and in the Info file output they have no effect at all.
-
- If you forget to end a group, you may get strange and unfathomable
- error messages when you run TeX. This is because TeX keeps trying to
- put the rest of the Texinfo file into the group and error messages do
- not start to get generated until TeX has gone a long way. It's a
- good rule of thumb to look for a missing `@end group' if you get
- incomprehensible error messages in TeX.
-
-
- File: texinfo, Node: Need, Prev: Group, Up: Breaks Blank-Lines Groups
-
- @need
- -----
-
- A line containing `@need N' starts a new page in a printed manual if
- fewer than N mils (thousandths of an inch) remain on the current
- page. The line has no effect on Info files since they are not
- paginated.
-
-
- File: texinfo, Node: Marking Text, Next: Conditionals, Prev: Formatting Paragraphs, Up: Top
-
- Marking Text Within a Paragraph
- *******************************
-
- In Texinfo, text within a paragraph can be marked in a variety of ways.
- The most important way is to specify whether a word or phrase is a
- definition, a metasyntactic variable, a literal example of a program
- or what not.
-
- In addition, there are special commands for inserting single
- characters that have special meaning in Texinfo, such as braces, and
- for inserting symbols with special handling, such as dots and
- bullets. Finally, there are ways to emphasize words.
-
- * Menu:
-
- * Specifying:: Specifying commands, files and so on.
- * Braces Atsigns Periods:: Inserting braces, `@' and periods.
- * Dots Bullets Tex:: Inserting dots, bullets and the TeX logo
- * Emphasis:: Emphasizing text.
-
-
- File: texinfo, Node: Specifying, Next: Braces Atsigns Periods, Up: Marking Text
-
- Specifying Definitions, Files, Commands etc.
- ============================================
-
- Texinfo has a variety of commands for specifying just what kind of
- object a piece of text refers to. Metasyntactic variables, for
- example, are marked by one @-command and code by another. Texinfo
- uses this information to determine how to highlight the text. Since
- the pieces of text are labelled by commands that tell what kind of
- object they are, it is easy to change the way Texinfo formats and
- typesets such text. For example, code is usually illustrated in a
- typewriter font, but it would be easy to change the way Texinfo
- highlights code to use another font. This change would not effect
- how metasyntatic variables are highlighted. If straight typesetting
- commands were used in the body of the file, you would have to check
- every single occurrence to make sure that you were changing code and
- not something else that should not be changed.
-
- In addition, the commands can be used to generate useful information
- from the file, such as lists of functions or file names. It is
- possible, for example, to write code in Emacs Lisp (or a keyboard
- macro) to insert an index entry after every paragraph that contains
- the text labelled by a specified command. You could do this to
- construct an index of functions if you had not already made the
- entries.
-
- The commands serve a variety of purposes:
-
- `@code'
- Indicates text that is a literal example of a piece of a program.
-
- `@samp'
- Indicates text that is a literal example of a sequence of
- characters.
-
- `@file'
- Indicates the name of a file.
-
- `@kbd'
- Indicates the names of keys on the keyboard or characters you
- type.
-
- `@key'
- Used for the conventional name for a key on a keyboard.
-
- `@ctrl'
- Indicates an ASCII control character.
-
- `@var'
- Indicates a metasyntactic variable.
-
- `@dfn'
- Indicates the introductory or defining use of a term.
-
- `@cite'
- Indicates the name of a book.
-
- * Menu:
-
- * Code:: A literal example of a piece of a program.
- * Samp:: A literal example of a sequence of characters.
- * File:: The name of a file.
- * Kbd:: The names of keys or else characters you type.
- * Key:: The conventional name for a key on a keyboard.
- * Ctrl:: Indicates the ASCII control character.
- * Var:: A variable.
- * Dfn:: The introductory or defining use of a term.
- * Cite:: The name of a book.
-
-
- File: texinfo, Node: Code, Next: Samp, Up: Specifying
-
- @code
- -----
-
- `@code' is used to indicate text that is a piece of a program which
- consists of entire syntactic tokens. The text follows, enclosed in
- braces.
-
- For example, `@code' is used for an expression in a program, the name
- of a variable or function used in a program, or a keyword. `@code'
- is not used for a piece of a token, such as when speaking about the
- characters used in a token; for example, when you are explaining what
- letters or printable symbols can be used in the names of functions.
- It is also not used for input to programs unless the input is written
- in a language that is like a programming language. For example, it
- is not used for the single character commands of GNU Emacs although
- it is used for the names of Emacs Lisp functions that the keyboard
- commands invoke.
-
- You should also `@code' for command names in command languages that
- resemble programming languages, such as Texinfo or the shell. Note,
- however, that `@code' is not used for options such as `-c' when such
- options stand alone. There is some argument as to whether an entire
- shell command incorporating an option should be written using `@code'
- or `@samp'.
-
- It is an error to alter the case of a word inside an `@code' command.
- This is a particularly insidious error if the language being
- documented is case sensitive. If the command is `printf', then
- `Printf' is a misspelling. If you do not like having such a command
- with lower case at the beginning of a sentence, you may wish to
- rearrange the sentence.
-
- In the printed manual, `@code' puts the argument in bold face. In
- the Info file, it uses `...' quotation. For example:
-
- To compare two files, showing text inserted or removed, use @code{diff}.
-
- produces
-
- To compare two files, showing text inserted or removed, use
- `diff'.
-
-
- File: texinfo, Node: Samp, Next: File, Prev: Code, Up: Specifying
-
- @samp
- -----
-
- `@samp' is used to indicate text that is a literal example of a
- sequence of characters in a file, string, pattern, etc. The text
- follows, enclosed in braces. The argument appears within `...'
- quotation in both the Info file and the printed manual; in addition,
- it is printed in a fixed-width font.
-
- To match @samp{foo} at the end of the line, use the regexp @samp{foo$}.
-
- produces
-
- To match `foo' at the end of the line, use the regexp `foo$'.
-
- Any time you are referring to single characters, you should use
- `@samp' unless `@kbd' is more appropriate. Basically, `@samp' is a
- catchall for whatever is not covered by `@code', `@file', `@kbd'.
-
- Punctuation marks that are part of the English text that surrounds
- the strings you are specifying are *never* included within the
- braces. In the following sentence, for example, the commas and
- period are outside of the braces:
-
- A symbol name ends in @samp{a}, @samp{b}, or @samp{c}.
-
-
- File: texinfo, Node: File, Next: Kbd, Prev: Samp, Up: Specifying
-
- @file
- -----
-
- `@file' is used to indicate text that is the name of a file or
- directory. Currently, it is equivalent to `@samp' in its effects on
- the output. For example,
-
- The @file{.el} files are in
- the @file{/gnu/emacs/lisp} directory.
-
- produces
-
- The `.el' files are in the `/gnu/emacs/lisp' directory.
-
-
- File: texinfo, Node: Kbd, Next: Key, Prev: File, Up: Specifying
-
- @kbd
- ----
-
- `@kbd' is used much like `@code'. The difference is that `@kbd' is
- for names of keys on the keyboard, or of characters you can type.
- For example, to refer to the command `M-a', you would use
-
- @kbd{M-a}
-
- and to refer to `M-x shell', you would use
-
- @kbd{M-x shell}
-
- The `@kbd' command has the same effect as `@code' in Info, but may
- produce a different font in a printed manual.
-
- You can embed another @-command inside the braces of a `@kbd'
- command. This is the way to describe a command that would be
- described more verbosely as "press an `r' and then press the RET key":
-
- @kbd{r @key{RET}}
-
- This produces: `r RET'
-
- You also use the `@kbd' command if you are spelling out the letters
- you type; for example:
-
- To give the @code{logout} command,
- type the characters @kbd{l o g o u t @key{RET}}.
-
- This produces
-
- To give the `logout' command, type the characters `l o g o u t
- RET'.
-
-
- File: texinfo, Node: Key, Next: Ctrl, Prev: Kbd, Up: Specifying
-
- @key
- ----
-
- `@key' is used for the conventional name for a key on a keyboard, as in
-
- @key{RET}
-
- Often, `@key' is used within the argument of a `@kbd' command,
- whenever the sequence of characters to be typed includes one or more
- keys that are described by name.
-
- For example, to produce `C-x ESC' you would use
-
- @kbd{C-x @key{ESC}}
-
- The recommended names to use for keys are in upper case and are
-
- SPC
- Space.
-
- RET
- Return.
-
- LFD
- Linefeed.
-
- TAB
- Tab.
-
- BS
- Backspace.
-
- ESC
- Escape.
-
- DEL
- Delete.
-
- SFT
- Shift.
-
- CTL
- Control.
-
- META
- Meta.
-
- There are subtleties to handling words like `meta' or `ctrl' which
- are names of shift keys. When mentioning a character in which the
- shift key is used, such as `Meta-a', use the `@kbd' command alone
- without the `@key' command, but when you are referring to shift key
- in isolation, use the `@key' command. For example, you would use
- `@kbd{Meta-a}' to produce `Meta-a' and `@key{META}' to produce META.
-
-
- File: texinfo, Node: Ctrl, Next: Var, Prev: Key, Up: Specifying
-
- @ctrl
- -----
-
- `@ctrl' is used to describe an ASCII control character. The pattern
- of usage is `@ctrl{CH}', where CH is an ASCII character whose
- control-equivalent is wanted. Thus, you put in an `f' when you want
- to indicate a `control-f'
-
- Thus, to specify `control-f', you would enter
-
- @ctrl{f}
-
- which produces
-
- f
-
- In the Info file, this generates the specified control character,
- output literally into the file. This is done so a user can copy the
- specified control character (along with whatever else he or she
- wants) into another Emacs buffer and use it. Since the
- `control-h',`control-i', and `control-j' characters are formatting
- characters, they should not be indicated this way.
-
- In a printed manual, this generates text to describe or identify that
- control character: an uparrow followed by the character CH.
-
-
- File: texinfo, Node: Var, Next: Dfn, Prev: Ctrl, Up: Specifying
-
- @var
- ----
-
- `@var' is used to indicate metasyntactic variables. A metasyntactic
- variable is something that stands for another piece of text. You
- would use a metasyntactic variable in the documentation of a function
- to describe the arguments that are passed to that function.
-
- `@var' is not used for names of particular variables in programming
- languages. For example, the Texinfo variable `texinfo-tex-command'
- is not a metasyntactic variable.
-
- Its effect in the Info file is to upcase the argument; in the printed
- manual, to italicize it. Example:
-
- To delete file @var{filename}, type @code{rm @var{filename}}.
-
- produces
-
- To delete file FILENAME, type `rm FILENAME'.
-
- In some documentation styles, metasyntactic variables are shown with
- angle brackets, for example:
-
- ..., type rm <filename>
-
-
- File: texinfo, Node: Dfn, Next: Cite, Prev: Var, Up: Specifying
-
- @dfn
- ----
-
- `@dfn' is used to identify the introductory or defining use of a
- technical term. The command should be used only in a passage whose
- purpose is to introduce a term which will be used again or which the
- reader ought to know. Mere passing mention of a term for the first
- time doesn't deserve `@dfn'. It generates italics in the printed
- manual, and double quotation marks in the Info file. Example:
-
- Getting rid of a file is called @dfn{deleting} it.
-
- produces
-
- Getting rid of a file is called "deleting" it.
-
-
- File: texinfo, Node: Cite, Prev: Dfn, Up: Specifying
-
- @cite
- -----
-
- `@cite' is used for the name of a book. It produces italics in the
- printed manual, and quotation marks in the Info file.
-
-
- File: texinfo, Node: Braces Atsigns Periods, Next: Dots Bullets Tex, Prev: Specifying, Up: Marking Text
-
- Inserting Braces, `@' and Periods
- =================================
-
- `@' and curly braces are special characters in Texinfo. This means
- that you have to put an `@' in front of these characters in order to
- insert them into text.
-
- Periods are also special. Depending on whether the period is inside
- of or at the end of a sentence, less or more space is inserted after
- a period in a typeset manual. Since it is not always possible for
- Texinfo to determine when a period ends a sentence and when it is
- used in an abbreviation, special commands are needed. (Usually,
- Texinfo figures out how to handle periods, so you don't have to use
- the special commands; you just enter a period as you would if you
- were using a typewriter, which means you put two spaces after the
- period that ends a sentence and after a colon.)
-
- * Menu:
-
- * Inserting an Atsign:: inserting an atsign.
- * Insert Left Brace:: Inserting a left brace.
- * Insert Colon:: Preventing unintended additional whitespace.
- * Insert Period:: Inserting a period that does end a sentence.
-
-
- File: texinfo, Node: Inserting An Atsign, Next: Insert Left Brace, Up: Braces Atsigns Periods
-
- @@
- --
-
- `@@' stands for a single @ in either printed or Info output.
-
-
- File: texinfo, Node: Insert Left Brace, Next: Insert Colon, Prev: Inserting an Atsign, Up: Braces Atsigns Periods
-
- @{
- --
-
- `@{' stands for a single { in either printed or Info output.
-
- @}
- --
-
- `@}' stands for a single } in either printed or Info output.
-
-
- File: texinfo, Node: Insert Colon, Next: Insert Period, Prev: Insert Left Brace, Up: Braces Atsigns Periods
-
- @:
- --
-
- `@:' is used after a character such as period or colon which normally
- causes TeX to increase the width of the following whitespace, to
- suppress that effect. For example, it can be used after periods that
- end abbreviations and do not end sentences. `@:' has no effect on
- the Info file output.
-
- It displays @code{Foo:}@: at that time.
-
- produces
-
- It displays `Foo:' at that time.
-
- The meanings of `@:' and `@.' in Texinfo are designed to work well
- with the Emacs sentence motion commands. This means they are
- different from their meanings in some other formatting systems that
- use @-commands.
-
-
- File: texinfo, Node: Insert Period, Prev: Insert Colon, Up: Braces Atsigns Periods
-
- @.
- --
-
- `@.' stands for a period that really does end a sentence, useful when
- TeX would otherwise assume by its heuristics that that is not so.
- This happens when there is a single-capital-letter word at the end of
- a sentence: TeX normally guesses that it is an abbreviation.
-
- In the Info file output, `@.' is equivalent to a simple `.'. The
- Texinfo program preserves the amount of space that you use, so put
- two spaces after a period if you intend it to be the end of a
- sentence (as well as using `@.', if necessary, for the printed
- manual's sake).
-
- Give it to X. Give it to X@. Give it to X@.
-
- produces
-
- Give it to X. Give it to X. Give it to X.
-
-
- File: texinfo, Node: Dots Bullets Tex, Next: Emphasis, Prev: Braces Atsigns Periods, Up: Marking Text
-
- Inserting Dots, Bullets and TeX
- ===============================
-
- An ellipsis, a line of dots, is typeset differently than a string of
- periods; more whitespace is put between the dots in the ellipsis than
- is put between the periods. Because of this, a special command is
- used in Texinfo for inserting dots. Also, the trademark, TeX, is
- typeset in a special fashion and it needs an @-command, as does the
- command for inserting the copyright symbol. The `@bullet' command is
- special, too. Each of these commands is followed by a pair of
- braces, `{}', without any whitespace between the name of the command
- and the braces.
-
- * Menu:
-
- * Dots:: Inserting dots.
- * Bullet:: Inserting bullets.
- * Tex:: Inserting the TeX trademark.
-
-
- File: texinfo, Node: Dots, Next: Bullet, Up: Dots Bullets Tex
-
- @dots{}
- -------
-
- `@dots{}' generates an ellipsis which is three dots in a row,
- appropriately spaced, like this: `...'. Do not simply write three
- periods in the input file; that would work for the Info file output,
- but would produce the wrong amount of space between the periods in
- the printed manual.
-
-
- File: texinfo, Node: Bullet, Next: Tex, Prev: Dots, Up: Dots Bullets Tex
-
- @bullet{}
- ---------
-
- `@bullet{}' generates a large round dot, or the closest possible
- thing to one.
-
- Here is a bullet: *
-
-
- File: texinfo, Node: Tex, Prev: Bullet, Up: Dots Bullets Tex
-
- @TeX{}
- ------
-
- `@TeX{}' generates `TeX'. In a printed manual, this is a special
- logo that is different from three ordinary letters.
-
-
- File: texinfo, Node: Emphasis, Prev: Dots Bullets Tex, Up: Marking Text
-
- Emphasizing Text
- ================
-
- Usually, Texinfo changes the font automatically to mark words in the
- text according to what category the words belong to. The `@code'
- command, for example, does this. Most often, this is the best way to
- mark specified words. However, sometimes you will want to emphasize
- text directly. Texinfo has two ways to do this: commands that tell
- Texinfo to emphasize the text but leave the method to the program,
- and commands that specify the font to use. The first method is
- generally the best and it makes it possible to change the style of a
- document without have to re-edit it line by line.
-
- * Menu:
-
- * Emph and Strong:: Emphasizing text.
- * Fonts:: Selecting italic, bold or typewriter fonts.
-
-
- File: texinfo, Node: Emph and Strong, Next: Fonts, Up: Emphasis
-
- @emph and @strong
- -----------------
-
- `@emph' and `@strong' are two forms of emphasis. `@strong' is
- stronger.
-
- In printed output, `@emph' produces *italics* and `@strong' produces
- *bold*.
-
- In the Info file, both of these commands put asterisks around the
- argument.
-
-
- File: texinfo, Node: Fonts, Prev: Emph and Strong, Up: Emphasis
-
- @i, @b and @t
- --------------
-
- These three commands specify font changes in the printed manual and
- have no effect in the Info file. `@i' requests italic font (in some
- versions of TeX, a slanted font is used), `@b' requests bold face,
- and `@t' requests the fixed-width font used by `@kbd'. All three
- commands apply to an argument that follows, surrounded by braces.
-
- If possible, you should avoid using these three commands. If you
- find a need to use one, it probably indicates a lack in the Texinfo
- language.
-
-
- File: texinfo, Node: Conditionals, Next: Printing Hardcopy, Prev: Marking Text, Up: Top
-
- Conditionals
- ************
-
- You may not always be able to use the same text for both the printed
- manual and the on-line Info file. In this case, you can use the
- conditional commands to specify which text is for the printed manual
- and which is for the Info file.
-
- `@ifinfo' begins text that should be ignored by TeX when it typesets
- the printed manual. The text appears only in the Info file. The
- `@ifinfo' command should appear on a line by itself. End the
- info-only text with a line containing `@end ifinfo' by itself. At
- the beginning of a Texinfo file, the Info permissions are contained
- within a region marked by `@ifinfo' and `@end ifinfo'.
-
- Likewise, `@iftex' and `@end iftex' lines delimit text that will not
- appear in the Info file but will appear in the printed manual.
-
- For example,
-
- @iftex
- This text will appear only in the printed manual.
- @end iftex
-
-
- @ifinfo
- However, this text will appear only in the info manual.
- @end ifinfo
-
- The preceding example produces the following. Note how you only see
- one of the two lines, depending on whether you are reading the
- on-line Info version or the printed version of this manual.
-
- However, this text will appear only in the info manual.
-
- The `@titlepage' command is a special variant of `@iftex' that is
- used for making the title and copyright pages of the printed manual.
-
- * Menu:
-
- * Using Tex Commands:: Using commands from regular TeX.
-
-
- File: texinfo, Node: Using Tex Commands, Prev: Conditionals, Up: Conditionals
-
- Using TeX Commands
- ==================
-
- Inside a region delineated by `@iftex' and `@end iftex', you can
- embed ordinary TeX commands. Info will ignore these commands since
- they are only in that part of the file that is seen by TeX. The TeX
- commands are the same as any TeX commands except that an `@' replaces
- the `\' used by TeX. For example, in the `@titlepage' section of a
- Texinfo file, the TeX command `@vskip' is used to format the
- copyright page.
-
- You can enter TeX completely, and use `\' in the TeX commands by
- delineating a region with the `@tex' and `@end tex' commands. (These
- commands automatically put the region inside of `@iftex' and `@end
- iftex' commands.) For example,
-
- @tex
- Here you would put text with TeX commands;
- such as $\bigl(x\in A(n)\bigm|x\in B(n)\bigr)$
- that will appear only in the printed manual.
- @end tex
-
- In the Info file, nothing between `@tex' and `@end tex' will appear.
-
-
- File: texinfo, Node: Printing Hardcopy, Next: Creating an Info File, Prev: Conditionals, Up: Top
-
- Printing Hardcopy
- *****************
-
- There are three shell commands for printing a hardcopy of a Texinfo
- file. One is for formatting the file, the second is for sorting the
- index and the third is for printing the formatted document. When you
- use the shell commands, you can either work directly in the operating
- system shell or work within a shell inside of GNU Emacs.
-
- The typesetting program TeX is used for formatting a Texinfo file.
- TeX is a very powerful typesetting program and, if used right, does
- an exceptionally good job. The @-commands in a Texinfo file are
- translated by a file called `texinfo.tex' into commands that TeX
- understands. (That is why the beginning of every Texinfo file starts
- with the line that says `\input texinfo'; this command tells TeX to
- use the `texinfo.tex' file in processing the Texinfo file.
- Customarily, `texinfo.tex' is in a directory called
- `/usr/lib/tex/macros'.) `texinfo-format-buffer' reads the very same
- @-commands in the Texinfo file and processes them differently from
- TeX to make an Info file.
-
- Usually, the TeX formatting command is the shell command `tex'
- followed by the name of the Texinfo file. The TeX command produces a
- formatted DVI file as well as several auxiliary files containing
- indices, cross references, etc. The DVI file (for "DeVice
- Independent" file) can be printed on a wide variety of printers.
-
- The TeX formatting command itself does not sort the indices. This is
- a misfeature of TeX. Hence, to generate a printed index, you first
- need a sorted index to work from.
-
- TeX outputs raw, unsorted index files under names that obey a
- standard convention. These names are the name of your main input
- file to TeX, with everything after the first period thrown away, and
- the two letter names of indices added at the end. For example, the
- raw index output files for the input file `foo.texinfo' would be
- `foo.cp', `foo.vr', `foo.fn', `foo.tp', `foo.pg' and `foo.ky'. Those
- are exactly the arguments to give to `texindex'. Or else, you can
- use `??' as "wild-cards" and give the command in this form:
-
- texindex foo.??
-
- For each file specified, `texindex' generates a sorted index file
- whose name is made by appending `s' to the input file name. The
- `@printindex' command knows to look for a file of that name.
- `texindex' does not alter the raw index output file. After you have
- sorted the indices, you need to rerun the TeX command on the Texinfo
- file. This regenerates a formatted DVI file with the index entries
- in the correct order.
-
- To summarize, this is a three step process:
-
- 1. Run the TeX command on the Texinfo file. This generates the
- formatted DVI file as well as the raw index files with two
- letter extensions.
-
- 2. Run the shell command `texindex' on the raw index files to sort
- them. The arguments to `texindex' are the names of the raw
- index files. `texindex' creates sorted index files whose names
- are the names of the raw index files with an `s' appended. To
- cause `texindex' to sort all the raw index files, append `??' to
- the Texinfo file name in place of the `.texinfo' extension.
-
- 3. Rerun the TeX command on the Texinfo file. This regenerates a
- formatted DVI file with the index entries in the correct order.
- This second run also makes all the cross references correct as
- well. (The tables of contents are always correct.)
-
- You need not run `texindex' after each TeX run. If you don't, the
- next TeX run will use whatever sorted index files happen to exist
- from the previous use of `texindex'. This is usually ok while you
- are debugging.
-
- Finally, the document can be printed out with the DVI print command
- (a shell command). Depending on the system used, the DVI print
- command will be a command such as `lpr -d'. The DVI print command
- may require a file name without any extension or with a `.dvi'
- extension.
-
- The following commands, for example, sort the indices, format and
- print the ``Bison Manual'' (where `%' is the shell prompt):
-
- % tex bison.texinfo
- % texindex bison.??
- % tex bison.texinfo
- % lpr -d bison.dvi
-
- (Remember that the words for the shell commands may be different at
- your site; but these are commonly used versions.)
-
- It is often most convenient to give formatting and printing commands
- from a shell within GNU Emacs. This way, you can easily keep track
- of errors. To create a shell within Emacs, type `M-x shell'. In
- this shell, you can format and print the document. You can switch to
- and from this shell while it is running and do other things. If you
- are formatting a very long document on a slow machine, this can be
- very convenient; on a VAX 750, for example, formatting often takes 8
- seconds or more per page depending on how loaded the computer is.
- Faster machines take correspondingly less time.
-
- * Menu:
-
- * Requirements:: Formatting requirements.
- * Compile-Command:: Formatting with the compile command.
-
-
- File: texinfo, Node: Requirements, Next: Compile-Command, Up: Printing Hardcopy
-
- Formatting Requirements
- =======================
-
- Every Texinfo file that is to be input to TeX must begin with a line
- that looks like
-
- \input texinfo @c -*-texinfo-*-
-
- This serves two functions.
-
- 1. When the file is processed by TeX, it loads the macros needed
- for processing a Texinfo file.
-
- 2. When the file is edited in Emacs, it causes Texinfo mode to be
- used.
-
- Every Texinfo file must end with a line saying
-
- @bye
-
- which terminates TeX processing and forces out unfinished pages.
-
- You also have to include two lines that specify the Info file name
- and the title of the printed manual:
-
- @setfilename NAME-OF-TEXINFO-FILE
- @settitle NAME OF MANUAL
-
- You might also want to include a line saying
-
- @setchapternewpage odd
-
- to cause each chapter to start on a fresh odd-numbered page.
-
- By default, TeX typesets pages for printing in an 8.5 by 11 inch
- format. However, you can direct TeX to typeset a document in a 7 by
- 9.25 inch format that is suitable for bound books by inserting the
- following command on a line by itself at the beginning of the Texinfo
- file, before the `@setchapternewpage' command:
-
- @smallbook
-
- The Free Software Foundation distributes printed copies of the ``GNU
- Emacs Manual'' in this size.
-
- Finally, TeX sometimes is unable to typeset a line without extending
- it into the right margin. This can occur when TeX comes upon what it
- interprets as a long word that it cannot hyphenate, like a net
- address, or a very long title. When this happens, TeX prints an
- error message like this:
-
- Overfull \hbox (20.76302pt too wide)
-
- and gives the line number along with the text of the offending line
- marked at all the places that TeX knows to hyphenate words. (In TeX
- lines are in `horizontal boxes', hence the term, `hbox'.)
-
- If the Texinfo file has an overfull hbox, you can rewrite the
- sentence so the overfull hbox does not occur or you can decide to
- leave it. A small excursion into the right margin often does not
- matter and may not even be noticable. However, unless told
- otherwise, TeX will print a large, ugly, black rectangle beside every
- line that is overfull. This is so you will notice the location of
- the problem if you are correcting a draft. To prevent such
- monstrosities from marring your final printout, put the following in
- the beginning of the Texinfo file on lines of their own, before the
- `@setchapternewpage' command:
-
- @iftex
- @finalout
- @end iftex
-
- *Note Titlepage::, for information about creating a title page.
- *Note Contents::, for information about creating a table of contents.
-
-
- File: texinfo, Node: Compile-Command, Prev: Requirements, Up: Printing Hardcopy
-
- Using Local Variables and the Compile Command
- =============================================
-
- Another way to give the TeX formatting command to Texinfo is to put
- that command in a "local variables list" at the end of the Texinfo
- file. You can then specify the TeX formatting command as a
- `compile-command' and have Emacs run the TeX formatting command by
- giving the command `M-x compile'. This creates a special shell
- called the `*compilation buffer*'. For example, at the end of the
- `gdb.texinfo' file, after the `@bye', you would put the following:
-
- @c Local Variables:
- @c compile-command: "tex gdb.texinfo"
- @c End:
-
- This technique is most often used by programmers who compile programs
- this way.
-
-
- File: texinfo, Node: Creating an Info File, Next: Catching Mistakes, Prev: Printing Hardcopy, Up: Top
-
- Creating an On-line Info file
- *****************************
-
- In GNU Emacs, using Texinfo mode, you can see what part or all of a
- Texinfo file will look like in Info by using the keyboard command
- `C-c C-f' (`texinfo-format-region'). This formats a region and
- displays in a temporary buffer called `*Info Region*'; however, this
- command does not turn on Info reading program--it just displays what
- the region will look like. The `texinfo-format-region' command is
- described more extensively in the chapter on using Texinfo mode.
- *Note Info on a Region::.
-
- In GNU Emacs, the way to create a working Info file is to visit the
- file and invoke
-
- `M-x texinfo-format-buffer'
-
- A new buffer is created and the Info file text is generated there.
- `C-x C-s' will save it under the name specified in the `@setfilename'
- command.
-
- If the Texinfo file has more than 30,000 bytes,
- `texinfo-format-buffer' will automatically create a "tag table" for
- it. With a tag table, Info can jump to new nodes more quickly than
- it can otherwise. In addition, if the file has more than 100,000
- bytes in it, `texinfo-format-buffer' will split the file into shorter
- Indirect subfiles of about 50,000 bytes each. Files are split so
- that Info does not have to make a large buffer to hold the whole of a
- large Info file; instead, Info allocates just enough memory for the
- small, split off file that is needed at the time. This way, Emacs
- avoids wasting memory when you run Info. (Before splitting was
- implemented, Info files were always short and "include" files were
- designed as a way to create a single, large printed manual out of the
- smaller Info files. *Note Include Files::, for more information.)
-
- When the file is split, Info itself works through a shortened version
- of the original file that contains the tag table and references to
- the files that were split off. The split off files are called
- "indirect" files.
-
- The split off files have names that are created by appending `-1',
- `-2', `-3' and so on to the file names specified by the
- `@setfilename' command. The shortened version of the original file
- continues to have the name specified by `@setfilename'.
-
- At one stage in writing this document, for example, the Info file was
- saved as `test-texinfo' and that file looked like this:
-
- Info file: test-texinfo, -*-Text-*-
- produced by texinfo-format-buffer
- from file: new-texinfo-manual.texinfo
-
- ^_
- Indirect:
- test-texinfo-1: 102
- test-texinfo-2: 50422
- test-texinfo-3: 101300
- ^_^L
- Tag table:
- (Indirect)
- Node: overview^?104
- Node: info file^?1271
- Node: printed manual^?4853
- Node: conventions^?6855
- ...
-
- (But `test-texinfo' had far more nodes than are shown here.) Each of
- the split off, indirect files, `test-texinfo-1', `test-texinfo-2',
- and `test-texinfo-3', is listed in this file after the line that says
- `Indirect:'. The tag table is listed after the line that says `Tag
- table:'.
-
- You cannot run the `M-x Info-validate' node checking command on
- indirect files. For information on how to prevent files from being
- split and how to validate the structure of the nodes, *note
- Info-Validating a Large File::.
-
- * Menu:
-
- * Installing an Info File:: Putting the Info file in the info directory.
-
-
- File: texinfo, Node: Installing an Info File, Prev: Creating an Info File, Up: Creating an Info File
-
- Installing an Info file
- =======================
-
- An Info file is usually installed in the GNU Emacs directory called
- `info'. For Info to work, this directory must contain all the Info
- files, including the split off files. In addition, the `info'
- directory must have a file that serves as a top level directory for
- the Info system. This file is called `dir'.
-
- For example, in the `info' directory, the file called `dir' has the
- top level menu for all the Info files in the system. This file has a
- master menu that looks like this:
-
- * Menu:
-
- * Info: (info). Documentation browsing system.
- * Emacs: (emacs). The extensible self-documenting text editor.
- * Texinfo: (texinfo). With one source file, make either a printed
- manual using TeX or an Info file using
- Texinfo.
-
- To add a new Info file, just add it to this menu. For example, if
- you were adding documentation for GDB, you would make the following
- entry:
-
- * GDB: (gdb). The source-level C debugger.
-
- The first item is the menu item name; it is followed by a colon. The
- second item is the name of the Info file, in parentheses; it is
- followed by a period. The third part of the entry is the description
- of the item.
-
- The top node of the file, named `top', should have as its parent the
- name of a node in another file, where there is a menu that leads to
- this file. Specify the file name in parentheses. If the file is to
- be installed directly in the Info directory file, use `(dir)' as the
- parent of the top node; this is short for `(dir)top', the node `top'
- in the file `dir', which is the main menu of Info.
-
-
- File: texinfo, Node: Catching Mistakes, Next: Command Syntax, Prev: Creating an Info File, Up: Top
-
- Catching Mistakes
- *****************
-
- Besides mistakes with the content of what ever you are describing,
- there are two kinds of mistake you can make with Texinfo: you can
- make mistakes with @-commands, and you can make mistakes with the
- structure of the nodes and chapters.
-
- There are two tools for catching the first kind of mistake and two
- for catching the second.
-
- For finding problems with @-commands, your best action is to run `M-x
- texinfo-format-region' on regions of your file as you write it. In
- Texinfo mode, the `texinfo-format-region' command is bound to `C-c
- C-f'. In addition, you can run TeX on the whole file.
-
- For finding problems with the structure of nodes and chapters, you
- can use `C-c C-s' (`texinfo-show-structure') (and the related `occur'
- command) and you can use the `M-x Info-validate' command.
-
- * Menu:
-
- * Debugging with Info:: Catching errors with info formatting.
- * Debugging with Tex:: Catching errors with TeX formatting.
- * Using texinfo-show-structure:: Using `texinfo-show-structure'
- to catch mistakes.
- * Running Info-Validate:: Checking for unreferenced nodes.
-
-
- File: texinfo, Node: Debugging with Info, Next: Debugging with Tex, Up: Catching Mistakes
-
- Catching Errors with Info Formatting
- ====================================
-
- After you have written part of a Texinfo file, you can use the `M-x
- texinfo-format-region' command to see whether the region formats
- properly. In Texinfo mode, this command is bound to the keyboard
- command `C-c C-f'.
-
- If you have made a mistake with an @-command, `M-x
- texinfo-format-region' will stop processing at or after the error and
- give an error message. To see where in the file the error occurred,
- switch to the `*Info Region*' buffer; the cursor will be in a
- position that is after the location of the error. Also, the text
- will not be formatted after the place the error occurred.
-
- For example, if you accidently end a menu with the command `@end
- menus' with an `s' on the end, instead of with `@end menu', you will
- get an error message that says:
-
- @end menus is not handled by texinfo.
-
- The cursor will stop at the point in the file where the error occurs,
- or not long after it. It will look like this:
-
- @menu
- * Using texinfo-show-structure:: Using `texinfo-show-structure'
- to catch mistakes.
- * Running Info-Validate:: Checking for unreferenced nodes.
- @end menus
-
- The `texinfo-format-region' command does not always recognize errors.
- For example, no errors were reported when `texinfo-format-region' was
- run on the whole itemized list of which the following is a part:
-
- name of the Texinfo file as an extension. The @samp{??} are `wildcards'
- that cause the shell to substitute all the raw index files. (@xref{sorting
- indices), for more information about sorting indices.) @refill
- @cindex Sorting indices
- @cindex Indices, sorting
-
- @item
- @emph{Third}, rerun the @TeX{} command on the Texinfo file. This
- regenerates a formatted DVI file with the index entries in the correct
- order. This second run also makes all the cross references and table of
- contents correct as well.
-
- Instead, `texinfo-format-region' ran without reporting the error, but
- it produced output with very long lines, containing some of the
- original `@cindex' commands mixed in. (It is not practical to
- display these over long lines here.
-
- However, when `texinfo-format-region' was run on part of the list
- that is shown, it did give an error message, `Search failed: "[{,}"'.
- (This error message is explained in the section on using the Emacs
- Lisp Debugger, *note Using the Emacs Lisp Debugger::.)
-
- Sometimes `texinfo-format-region' will stop long after the original
- error; this is because it does not discover the problem until then.
- In this case, you will have to backtrack.
-
-
- File: texinfo, Node: Using the Emacs Lisp Debugger, Up: Debugging with Info
-
- Using the Emacs Lisp Debugger
- -----------------------------
-
- If an error is especially elusive, you can turn on the Emacs Lisp
- debugger and look at the backtrace; this tells you where in the
- `texinfo-format-region' function the problem occurred. You can turn
- on the debugger with the command:
-
- M-x set-variable RET debug-on-error RET t
-
- and turn it off with
-
- M-x set-variable RET debug-on-error RET nil
-
- Often, when you are using the debugger, it is easier to follow what
- is going on if you use the Emacs Lisp files that are not
- byte-compiled. The byte-compiled sources send octal numbers to the
- debugger that may look mysterious. To use the uncompiled source
- files, load `texinfmt.el' and `texinfo.el' with the `M-x load-file'
- command.
-
- The debugger will not catch an error if `texinfo-format-region' does
- not detect one. In the example shown above, `texinfo-format-region'
- did not find the error when the whole list was formatted, but only
- when part of the list was formatted. When `texinfo-format-region'
- did not find an error, the debugger did not find one either.
-
- However, when `texinfo-format-region' did report an error, it invoked
- the debugger. This is the backtrace it produced:
-
- Signalling: (search-failed "[},]")
- re-search-forward("[},]")
- (while ...)
- (let ...)
- texinfo-format-parse-args()
- (let ...)
- texinfo-format-xref()
- funcall(texinfo-format-xref)
- (if ...)
- (let ...)
- (if ...)
- (while ...)
- texinfo-format-scan()
- (save-excursion ...)
- (let ...)
- texinfo-format-region(103370 103631)
- * call-interactively(texinfo-format-region)
-
- The backtrace is read from the bottom up. `texinfo-format-region'
- was called interactively; and it, in turn, called various functions,
- including `texinfo-format-scan', `texinfo-format-xref' and
- `texinfo-format-parse-args'. Inside the function
- `texinfo-format-parse-args', the function `re-search-forward' was
- called; it was this function that could not find the missing right
- hand brace.
-
- *Note : (emacs)Lisp Debug, for more information.
-
-
- File: texinfo, Node: Debugging with Tex, Next: Using texinfo-show-structure, Prev: Debugging with Info, Up: Catching Mistakes
-
- Catching Errors with TeX Formatting
- ===================================
-
- You can also catch mistakes when you format a file with TeX.
-
- Usually, you will want to do this after you have run
- `texinfo-format-buffer' on the same file. `texinfo-format-buffer' is
- usually faster and sometimes gives error messages that make more
- sense. *Note Debugging with Info::, for more information.
-
- For example, TeX was run on the same itemized list discussed in the
- section on the use of `texinfo-format-region' (*note Debugging with
- Info::.); the fragment with the error looked like this:
-
- name of the texinfo file as an extension. The @samp{??} are `wildcards'
- that cause the shell to substitute all the raw index files. (@xref{sorting
- indices, for more information about sorting indices.) @refill
-
- This produced the following output, after which TeX stopped:
-
- Runaway argument?
- {sorting indices, for more information about sorting indices.) @refill @ETC.
- ! Paragraph ended before \xref was complete.
- <to be read again>
- \par
- l.27
-
- ?
-
- In this case, TeX produced an accurate and understandable error
- message: `Paragraph ended before \xref was complete.' (Note, however,
- that TeX translated the `@' into a `\'.) Also, `\par' is an internal
- TeX command of no relevance to Texinfo.)
-
- Unfortunately, TeX is not always so helpful, and sometimes you have
- to be truly a Sherlock Holmes to discover what went wrong.
-
- In any case, if you run into a problem like this, you can do one of
- two things.
-
- 1. You can tell TeX to continue running and to ignore errors as
- best it can by typing `r RET' at the `?' prompt.
-
- This is often the best thing to do. However, beware: the one
- error may produce a cascade of additional error messages as it
- consequences are felt through the rest of the file.
-
- 2. You can tell TeX to stop this run by typing `x RET' at the `?'
- prompt.
-
- Sometimes TeX will format a file without producing error messages
- even though there is a problem. This usually occurs if a command is
- not ended but TeX is able to continue processing anyhow. For
- example, if you fail to end an itemized list with the `@end itemize'
- command, TeX will write a DVI file that you can print out. The only
- error message that TeX will give you is the somewhat mysterious
- comment that
-
- (\end occurred inside a group at level 1)
-
- However, if you print the DVI file, you will find that the text of
- the file that follows the itemized list is entirely indented as if it
- were part of the last item in the itemized list. The error message
- is the way TeX says that it expected to find an `@end' command
- somewhere in the file; but that it could not locate where it was
- needed.
-
- Another source of notoriously hard to find errors is a missing `@end
- group' command. If you ever are stumped by incomprehensible errors,
- look for a missing `@end group' command first.
-
- If you do not have the header lines in the file, TeX may stop in the
- beginning of its run and display output that looks like the following.
- The `*' indicates that TeX is waiting for input.
-
- This is TeX, Version 2.0 for Berkeley UNIX (preloaded format=plain-cm
- 87.10.25) (#tz-bar-a02987.tex [1])
- *
-
- In this case, simply type `\end RET' after the asterisk. Then put
- the header lines into the Texinfo file and run the TeX command again.
-
-
-