Annotation of 43BSDReno/contrib/emacs-18.55/info/texinfo-3, revision 1.1.1.1

1.1       root        1: Info file ../info/texinfo, produced by Makeinfo, -*- Text -*- from
                      2: input file texinfo.texinfo.
                      3: 
                      4: This file documents Texinfo, a documentation system that uses a
                      5: single source file to produce both on-line help and a printed manual.
                      6: 
                      7: This is edition 1.1 of the Texinfo documentation, and is for the
                      8: Texinfo that is distributed as part of Version 18 of GNU Emacs.
                      9: 
                     10: Copyright (C) 1988 Free Software Foundation, Inc.
                     11: 
                     12: Permission is granted to make and distribute verbatim copies of this
                     13: manual provided the copyright notice and this permission notice are
                     14: preserved on all copies.
                     15: 
                     16: Permission is granted to copy and distribute modified versions of
                     17: this manual under the conditions for verbatim copying, provided that
                     18: the entire resulting derived work is distributed under the terms of a
                     19: permission notice identical to this one.
                     20: 
                     21: Permission is granted to copy and distribute translations of this
                     22: manual into another language, under the above conditions for modified
                     23: versions, except that this permission notice may be stated in a
                     24: translation approved by the Foundation.
                     25: 
                     26: 
                     27: 
                     28: File: texinfo,  Node: Breaks Blank-Lines Groups,  Prev: Refilling & Noindent,  Up: Formatting Paragraphs
                     29: 
                     30: Breaks, Blank Lines and Groups
                     31: ==============================
                     32: 
                     33: Texinfo has several commands for making blank lines, for forcing
                     34: paragraph and page breaks in the printed manual and for preventing
                     35: text from running from one page to the next.
                     36: 
                     37: `@*'
                     38:      Force a line break in the printed manual.  This command has no
                     39:      effect on the Info file.
                     40: 
                     41: `@sp'
                     42:      Generate blank lines in both the printed manual and in the Info
                     43:      file.
                     44: 
                     45: `@br'
                     46:      Force a paragraph break in the printed manual.  This command has
                     47:      no effect on the Info file.
                     48: 
                     49: `@w'
                     50:      Prevent text from being split across two lines in the printed
                     51:      manual.  This command has no effect on the Info file.
                     52: 
                     53: `@page'
                     54:      Start a new page in the printed manual.  This command has no
                     55:      effect on the Info file.
                     56: 
                     57: `@group'
                     58:      Hold text together that must appear on one printed page.  This
                     59:      command has no effect on the Info file.
                     60: 
                     61: `@need'
                     62:      Start a new printed page if required space not on this one. 
                     63:      This command has no effect on the Info file.
                     64: 
                     65: * Menu:
                     66: 
                     67: * Line Breaks:: Force a line break in the printed manual.
                     68: * Sp::         Generate blank lines.
                     69: * Br::         Force a paragraph break in the printed manual.
                     70: * W::          Prevent a paragraph break in the printed manual.
                     71: * Page::       Start a new page in the printed manual.
                     72: * Group::      Hold text together that must appear on one printed page.
                     73: * Need::       Start a new printed page if required space not on this one.
                     74: 
                     75:  
                     76: 
                     77: File: texinfo,  Node: Line Breaks,  Next: Sp,  Prev: Breaks Blank-Lines Groups,  Up: Breaks Blank-Lines Groups
                     78: 
                     79: @*
                     80: --
                     81: 
                     82: `@*' forces a line break in the printed manual.  It has no effect on
                     83: the Info file output, where line breaks follow those in the source
                     84: file.  If you want a line break at a certain spot in both forms of
                     85: output, break the line there in the source file and put `@*' at the
                     86: end of the line.
                     87: 
                     88: 
                     89: 
                     90: File: texinfo,  Node: Sp,  Next: Br,  Prev: Line Breaks,  Up: Breaks Blank-Lines Groups
                     91: 
                     92: @sp
                     93: ---
                     94: 
                     95: A line containing `@sp N' generates N blank lines of space in either
                     96: the printed manual or the Info file.  For example,
                     97: 
                     98:      @sp 2
                     99: 
                    100: generates two blank lines.
                    101: 
                    102: 
                    103: 
                    104: File: texinfo,  Node: Br,  Next: W,  Prev: Sp,  Up: Breaks Blank-Lines Groups
                    105: 
                    106: @br
                    107: ---
                    108: 
                    109: In a printed manual, a line containing `@br' forces a paragraph
                    110: break; in the Info file output, it does nothing (not even a blank
                    111: line results from it).
                    112: 
                    113: 
                    114: 
                    115: File: texinfo,  Node: W,  Next: Page,  Prev: Br,  Up: Breaks Blank-Lines Groups
                    116: 
                    117: @w
                    118: --
                    119: 
                    120: In a printed manual, `@w{TEXT}' outputs TEXT and prohibits line
                    121: breaks within TEXT.  `@w' has no effect on the Info file output; it
                    122: is the same as would result from just TEXT.
                    123: 
                    124: 
                    125: 
                    126: File: texinfo,  Node: Page,  Next: Group,  Prev: W,  Up: Breaks Blank-Lines Groups
                    127: 
                    128: @page
                    129: -----
                    130: 
                    131: A line containing `@page' starts a new page in a printed manual.  The
                    132: line has no effect on Info files since they are not paginated.
                    133: 
                    134: 
                    135: 
                    136: File: texinfo,  Node: Group,  Next: Need,  Prev: Page,  Up: Breaks Blank-Lines Groups
                    137: 
                    138: @group
                    139: ------
                    140: 
                    141: A line containing `@group' begins an unsplittable vertical group,
                    142: which must appear entirely on one page.  The group is terminated by a
                    143: line containing `@end group'.  These two lines produce no output of
                    144: their own, and in the Info file output they have no effect at all.
                    145: 
                    146: If you forget to end a group, you may get strange and unfathomable
                    147: error messages when you run TeX.  This is because TeX keeps trying to
                    148: put the rest of the Texinfo file into the group and error messages do
                    149: not start to get generated until TeX has gone a long way.  It's a
                    150: good rule of thumb to look for a missing `@end group' if you get
                    151: incomprehensible error messages in TeX.
                    152: 
                    153: 
                    154: 
                    155: File: texinfo,  Node: Need,  Prev: Group,  Up: Breaks Blank-Lines Groups
                    156: 
                    157: @need
                    158: -----
                    159: 
                    160: A line containing `@need N' starts a new page in a printed manual if
                    161: fewer than N mils (thousandths of an inch) remain on the current
                    162: page.  The line has no effect on Info files since they are not
                    163: paginated.
                    164: 
                    165: 
                    166: 
                    167: File: texinfo,  Node: Marking Text,  Next: Conditionals,  Prev: Formatting Paragraphs,  Up: Top
                    168: 
                    169: Marking Text Within a Paragraph
                    170: *******************************
                    171: 
                    172: In Texinfo, text within a paragraph can be marked in a variety of ways.
                    173: The most important way is to specify whether a word or phrase is a
                    174: definition, a metasyntactic variable, a literal example of a program
                    175: or what not.
                    176: 
                    177: In addition, there are special commands for inserting single
                    178: characters  that have special meaning in Texinfo, such as braces, and
                    179: for inserting symbols with special handling, such as dots and
                    180: bullets.  Finally, there are ways to emphasize words.
                    181: 
                    182: * Menu:
                    183: 
                    184: * Specifying::                 Specifying commands, files and so on.
                    185: * Braces Atsigns Periods::     Inserting braces, `@' and periods.
                    186: * Dots Bullets Tex::           Inserting dots, bullets and the TeX logo
                    187: * Emphasis::                   Emphasizing text.
                    188: 
                    189:  
                    190: 
                    191: File: texinfo,  Node: Specifying,  Next: Braces Atsigns Periods,  Up: Marking Text
                    192: 
                    193: Specifying Definitions, Files, Commands etc.
                    194: ============================================
                    195: 
                    196: Texinfo has a variety of commands for specifying just what kind of
                    197: object a piece of text refers to.  Metasyntactic variables, for
                    198: example, are marked by one @-command and code by another.  Texinfo
                    199: uses this information to determine how to highlight the text.  Since
                    200: the pieces of text are labelled by commands that tell what kind of
                    201: object they are, it is easy to change the way Texinfo formats and
                    202: typesets such text.  For example, code is usually illustrated in a
                    203: typewriter font, but it would be easy to change the way Texinfo
                    204: highlights code to use another font.  This change would not effect
                    205: how metasyntatic variables are highlighted.  If straight typesetting
                    206: commands were used in the body of the file, you would have to check
                    207: every single occurrence to make sure that you were changing code and
                    208: not something else that should not be changed.
                    209: 
                    210: In addition, the commands can be used to generate useful information
                    211: from the file, such as lists of functions or file names.  It is
                    212: possible, for example, to write code in Emacs Lisp (or a keyboard
                    213: macro) to insert an index entry after every paragraph that contains
                    214: the text labelled by a specified command.  You could do this to
                    215: construct an index of functions if you had not already made the
                    216: entries.
                    217: 
                    218: The commands serve a variety of purposes:
                    219: 
                    220: `@code'
                    221:      Indicates text that is a literal example of a piece of a program.
                    222: 
                    223: `@samp'
                    224:      Indicates text that is a literal example of a sequence of
                    225:      characters.
                    226: 
                    227: `@file'
                    228:      Indicates the name of a file.
                    229: 
                    230: `@kbd'
                    231:      Indicates the names of keys on the keyboard or characters you
                    232:      type.
                    233: 
                    234: `@key'
                    235:      Used for the conventional name for a key on a keyboard.
                    236: 
                    237: `@ctrl'
                    238:      Indicates an ASCII control character.
                    239: 
                    240: `@var'
                    241:      Indicates a metasyntactic variable.
                    242: 
                    243: `@dfn'
                    244:      Indicates the introductory or defining use of a term.
                    245: 
                    246: `@cite'
                    247:      Indicates the name of a book.
                    248: 
                    249: * Menu:
                    250: 
                    251: * Code::       A literal example of a piece of a program.
                    252: * Samp::       A literal example of a sequence of characters.
                    253: * File::       The name of a file.
                    254: * Kbd::                The names of keys or else characters you type.
                    255: * Key::                The conventional name for a key on a keyboard.
                    256: * Ctrl::       Indicates the ASCII control character.
                    257: * Var::                A variable.
                    258: * Dfn::                The introductory or defining use of a term.
                    259: * Cite::       The name of a book.
                    260: 
                    261:  
                    262: 
                    263: File: texinfo,  Node: Code,  Next: Samp,  Up: Specifying
                    264: 
                    265: @code
                    266: -----
                    267: 
                    268: `@code' is used to indicate text that is a piece of a program which
                    269: consists of entire syntactic tokens.  The text follows, enclosed in
                    270: braces.
                    271: 
                    272: For example, `@code' is used for an expression in a program, the name
                    273: of a variable or function used in a program, or a keyword.  `@code'
                    274: is not used for a piece of a token, such as when speaking about the
                    275: characters used in a token; for example, when you are explaining what
                    276: letters or printable symbols can be used in the names of functions. 
                    277: It is also not used for input to programs unless the input is written
                    278: in a language that is like a programming language.  For example, it
                    279: is not used for the single character commands of GNU Emacs although
                    280: it is used for the names of Emacs Lisp functions that the keyboard
                    281: commands invoke.
                    282: 
                    283: You should also `@code' for command names in command languages that
                    284: resemble programming languages, such as Texinfo or the shell.  Note,
                    285: however, that `@code' is not used for options such as `-c' when such
                    286: options stand alone.  There is some argument as to whether an entire
                    287: shell command incorporating an option should be written using `@code'
                    288: or `@samp'.
                    289: 
                    290: It is an error to alter the case of a word inside an `@code' command.
                    291: This is a particularly insidious error if the language being
                    292: documented is case sensitive.  If the command is `printf', then
                    293: `Printf' is a misspelling.  If you do not like having such a command
                    294: with lower case at the beginning of a sentence, you may wish to
                    295: rearrange the sentence.
                    296: 
                    297: In the printed manual, `@code' puts the argument in bold face.  In
                    298: the Info file, it uses `...' quotation.  For example:
                    299: 
                    300:      To compare two files, showing text inserted or removed, use @code{diff}.
                    301: 
                    302:  produces
                    303: 
                    304:      To compare two files, showing text inserted or removed, use
                    305:      `diff'.
                    306: 
                    307: 
                    308: 
                    309: File: texinfo,  Node: Samp,  Next: File,  Prev: Code,  Up: Specifying
                    310: 
                    311: @samp
                    312: -----
                    313: 
                    314: `@samp' is used to indicate text that is a literal example of a
                    315: sequence of characters in a file, string, pattern, etc.  The text
                    316: follows, enclosed in braces.  The argument appears within `...'
                    317: quotation in both the Info file and the printed manual; in addition,
                    318: it is printed in a fixed-width font.
                    319: 
                    320:      To match @samp{foo} at the end of the line, use the regexp @samp{foo$}.
                    321: 
                    322:  produces
                    323: 
                    324:      To match `foo' at the end of the line, use the regexp `foo$'.
                    325: 
                    326: Any time you are referring to single characters, you should use
                    327: `@samp' unless `@kbd' is more appropriate.  Basically, `@samp' is a
                    328: catchall for whatever is not covered by `@code', `@file', `@kbd'.
                    329: 
                    330: Punctuation marks that are part of the English text that surrounds
                    331: the strings you are specifying are *never* included within the
                    332: braces.  In the following sentence, for example, the commas and
                    333: period are outside of the braces:
                    334: 
                    335:      A symbol name ends in @samp{a}, @samp{b}, or @samp{c}.
                    336: 
                    337:  
                    338: 
                    339: File: texinfo,  Node: File,  Next: Kbd,  Prev: Samp,  Up: Specifying
                    340: 
                    341: @file
                    342: -----
                    343: 
                    344: `@file' is used to indicate text that is the name of a file or
                    345: directory.  Currently, it is equivalent to `@samp' in its effects on
                    346: the output.  For example,
                    347: 
                    348:      The @file{.el} files are in 
                    349:      the @file{/gnu/emacs/lisp} directory.
                    350: 
                    351:  produces
                    352: 
                    353:      The `.el' files are in  the `/gnu/emacs/lisp' directory.
                    354: 
                    355: 
                    356: 
                    357: File: texinfo,  Node: Kbd,  Next: Key,  Prev: File,  Up: Specifying
                    358: 
                    359: @kbd
                    360: ----
                    361: 
                    362: `@kbd' is used much like `@code'.  The difference is that `@kbd' is
                    363: for names of keys on the keyboard, or of characters you can type. 
                    364: For example, to refer to the command `M-a', you would use
                    365: 
                    366:      @kbd{M-a}
                    367: 
                    368: and to refer to `M-x shell', you would use
                    369: 
                    370:      @kbd{M-x shell}
                    371: 
                    372: The `@kbd' command has the same effect as `@code' in Info, but may
                    373: produce a different font in a printed manual.
                    374: 
                    375: You can embed another @-command inside the braces of a `@kbd'
                    376: command.  This is the way to describe a command that would be
                    377: described more verbosely as ``press an `r' and then press the RET
                    378: key'':
                    379: 
                    380:      @kbd{r @key{RET}}
                    381: 
                    382: This produces: `r RET'
                    383: 
                    384: You also use the `@kbd' command if you are spelling out the letters
                    385: you type; for example:
                    386: 
                    387:      To give the @code{logout} command, 
                    388:      type the characters @kbd{l o g o u t @key{RET}}.
                    389: 
                    390:  This produces
                    391: 
                    392:      To give the `logout' command,  type the characters `l o g o u t
                    393:      RET'.
                    394: 
                    395: 
                    396: 
                    397: File: texinfo,  Node: Key,  Next: Ctrl,  Prev: Kbd,  Up: Specifying
                    398: 
                    399: @key
                    400: ----
                    401: 
                    402: `@key' is used for the conventional name for a key on a keyboard, as in
                    403: 
                    404:      @key{RET}
                    405: 
                    406: Often, `@key' is used within the argument of a `@kbd' command,
                    407: whenever the sequence of characters to be typed includes one or more
                    408: keys that are described by name.
                    409: 
                    410: For example, to produce `C-x ESC' you would use
                    411: 
                    412:      @kbd{C-x @key{ESC}}
                    413: 
                    414: The recommended names to use for keys are in upper case and are
                    415: 
                    416: SPC
                    417:      Space.
                    418: 
                    419: RET
                    420:      Return.
                    421: 
                    422: LFD
                    423:      Linefeed.
                    424: 
                    425: TAB
                    426:      Tab.
                    427: 
                    428: BS
                    429:      Backspace.
                    430: 
                    431: ESC
                    432:      Escape.
                    433: 
                    434: DEL
                    435:      Delete.
                    436: 
                    437: SFT
                    438:      Shift.
                    439: 
                    440: CTL
                    441:      Control.
                    442: 
                    443: META
                    444:      Meta.
                    445: 
                    446: There are subtleties to handling words like `meta' or `ctrl' which
                    447: are names of shift keys.  When mentioning a character in which the
                    448: shift key is used, such as `Meta-a', use the `@kbd' command alone
                    449: without the `@key' command, but when you are referring to shift key
                    450: in isolation, use the `@key' command.  For example, you would use
                    451: `@kbd{Meta-a}' to produce `Meta-a' and `@key{META}' to produce META.
                    452: 
                    453: 
                    454: 
                    455: File: texinfo,  Node: Ctrl,  Next: Var,  Prev: Key,  Up: Specifying
                    456: 
                    457: @ctrl
                    458: -----
                    459: 
                    460: `@ctrl' is used to describe an ASCII control character.  The pattern
                    461: of usage is `@ctrl{CH}', where CH is an ASCII character whose
                    462: control-equivalent is wanted.  Thus, you put in an `f' when you want
                    463: to indicate a `control-f'
                    464: 
                    465: Thus, to specify `control-f', you would enter
                    466: 
                    467:      @ctrl{f}
                    468: 
                    469: which produces
                    470: 
                    471:      f
                    472: 
                    473: In the Info file, this generates the specified control character,
                    474: output literally into the file.  This is done so a user can copy the
                    475: specified control character (along with whatever else he or she
                    476: wants) into another Emacs buffer and use it.  Since the
                    477: `control-h',`control-i', and `control-j' characters are formatting
                    478: characters, they should not be indicated this way.
                    479: 
                    480: In a printed manual, this generates text to describe or identify that
                    481: control character: an uparrow followed by the character CH.
                    482: 
                    483: 
                    484: 
                    485: File: texinfo,  Node: Var,  Next: Dfn,  Prev: Ctrl,  Up: Specifying
                    486: 
                    487: @var
                    488: ----
                    489: 
                    490: `@var' is used to indicate metasyntactic variables.  A metasyntactic
                    491: variable is something that stands for another piece of text.  You
                    492: would use a metasyntactic variable in the documentation of a function
                    493: to describe the arguments that are passed to that function.
                    494: 
                    495: `@var' is not used for names of particular variables in programming
                    496: languages.  For example, the Texinfo variable `texinfo-tex-command'
                    497: is not a metasyntactic variable.
                    498: 
                    499: Its effect in the Info file is to upcase the argument; in the printed
                    500: manual, to italicize it.  Example:
                    501: 
                    502:      To delete file @var{filename}, type @code{rm @var{filename}}.
                    503: 
                    504:  produces
                    505: 
                    506:      To delete file FILENAME, type `rm FILENAME'.
                    507: 
                    508: In some documentation styles, metasyntactic variables are shown with
                    509: angle brackets, for example:
                    510: 
                    511:      ..., type rm <filename>
                    512: 
                    513: 
                    514: 
                    515: File: texinfo,  Node: Dfn,  Next: Cite,  Prev: Var,  Up: Specifying
                    516: 
                    517: @dfn
                    518: ----
                    519: 
                    520: `@dfn' is used to identify the introductory or defining use of a
                    521: technical term.  The command should be used only in a passage whose
                    522: purpose is to introduce a term which will be used again or which the
                    523: reader ought to know.  Mere passing mention of a term for the first
                    524: time doesn't deserve `@dfn'.  It generates italics in the printed
                    525: manual, and double quotation marks in the Info file.  Example:
                    526: 
                    527:      Getting rid of a file is called @dfn{deleting} it.
                    528: 
                    529:  produces
                    530: 
                    531:      Getting rid of a file is called "deleting" it.
                    532: 
                    533: 
                    534: 
                    535: File: texinfo,  Node: Cite,  Prev: Dfn,  Up: Specifying
                    536: 
                    537: @cite
                    538: -----
                    539: 
                    540: `@cite' is used for the name of a book.  It produces italics in the
                    541: printed manual, and quotation marks in the Info file.
                    542: 
                    543: 
                    544: 
                    545: File: texinfo,  Node: Braces Atsigns Periods,  Next: Dots Bullets Tex,  Prev: Specifying,  Up: Marking Text
                    546: 
                    547: Inserting Braces, `@' and Periods
                    548: =================================
                    549: 
                    550: `@' and curly braces are special characters in Texinfo.  This means
                    551: that you have to put an `@' in front of these characters in order to
                    552: insert them into text.
                    553: 
                    554: Periods are also special.  Depending on whether the period is inside
                    555: of or at the end of a sentence, less or more space is inserted after
                    556: a period in a typeset manual.  Since it is not always possible for
                    557: Texinfo to determine when a period ends a sentence and when it is
                    558: used in an abbreviation, special commands are needed.  (Usually,
                    559: Texinfo figures out how to handle periods, so you don't have to use
                    560: the special commands; you just enter a period as you would if you
                    561: were using a typewriter, which means you put two spaces after the
                    562: period that ends a sentence and after a colon.)
                    563: 
                    564: * Menu:
                    565: 
                    566: * Inserting an Atsign::                inserting an atsign.
                    567: * Insert Left Brace::          Inserting a left brace.
                    568: * Insert Colon::               Preventing unintended additional whitespace.
                    569: * Insert Period::              Inserting a period that does end a sentence.
                    570: 
                    571:  
                    572: 
                    573: File: texinfo,  Node: Inserting An Atsign,  Next: Insert Left Brace,  Up: Braces Atsigns Periods
                    574: 
                    575: @@
                    576: --
                    577: 
                    578: `@@' stands for a single @ in either printed or Info output.
                    579: 
                    580: 
                    581: 
                    582: File: texinfo,  Node: Insert Left Brace,  Next: Insert Colon,  Prev: Inserting an Atsign,  Up: Braces Atsigns Periods
                    583: 
                    584: @{
                    585: --
                    586: 
                    587: `@{' stands for a single { in either printed or Info output.
                    588: 
                    589: @}
                    590: --
                    591: 
                    592: `@}' stands for a single } in either printed or Info output.
                    593: 
                    594: 
                    595: 
                    596: File: texinfo,  Node: Insert Colon,  Next: Insert Period,  Prev: Insert Left Brace,  Up: Braces Atsigns Periods
                    597: 
                    598: @:
                    599: --
                    600: 
                    601: `@:' is used after a character such as period or colon which normally
                    602: causes TeX to increase the width of the following whitespace, to
                    603: suppress that effect.  For example, it can be used after periods that
                    604: end abbreviations and do not end sentences.  `@:' has no effect on
                    605: the Info file output.
                    606: 
                    607:      It displays @code{Foo:}@: at that time.
                    608: 
                    609:  produces
                    610: 
                    611:      It displays `Foo:' at that time.
                    612: 
                    613: The meanings of `@:' and `@.' in Texinfo are designed to work well
                    614: with the Emacs sentence motion commands.  This means they are
                    615: different from their meanings in some other formatting systems that
                    616: use @-commands.
                    617: 
                    618: 
                    619: 
                    620: File: texinfo,  Node: Insert Period,  Prev: Insert Colon,  Up: Braces Atsigns Periods
                    621: 
                    622: @.
                    623: --
                    624: 
                    625: `@.' stands for a period that really does end a sentence, useful when
                    626: TeX would otherwise assume by its heuristics that that is not so. 
                    627: This happens when there is a single-capital-letter word at the end of
                    628: a sentence: TeX normally guesses that it is an abbreviation.
                    629: 
                    630: In the Info file output, `@.' is equivalent to a simple `.'.  The
                    631: Texinfo program preserves the amount of space that you use, so put
                    632: two spaces after a period if you intend it to be the end of a
                    633: sentence (as well as using `@.', if necessary, for the printed
                    634: manual's sake).
                    635: 
                    636:      Give it to X. Give it to X@.  Give it to X@.
                    637: 
                    638:  produces
                    639: 
                    640:      Give it to X. Give it to X.  Give it to X.
                    641: 
                    642: 
                    643: 
                    644: File: texinfo,  Node: Dots Bullets Tex,  Next: Emphasis,  Prev: Braces Atsigns Periods,  Up: Marking Text
                    645: 
                    646: Inserting Dots, Bullets and TeX
                    647: ===============================
                    648: 
                    649: An ellipsis, a line of dots, is typeset differently than a string of
                    650: periods; more whitespace is put between the dots in the ellipsis than
                    651: is put between the periods.  Because of this, a special command is
                    652: used in Texinfo for inserting dots.  Also, the trademark, TeX, is
                    653: typeset in a special fashion and it needs an @-command, as does the
                    654: command for inserting the copyright symbol.  The `@bullet' command is
                    655: special, too.  Each of these commands is followed by a pair of
                    656: braces, `{}', without any whitespace between the name of the command
                    657: and the braces.
                    658: 
                    659: * Menu:
                    660: 
                    661: * Dots::               Inserting dots.
                    662: * Bullet::             Inserting bullets.
                    663: * Tex::                        Inserting the TeX trademark.
                    664: 
                    665:  
                    666: 
                    667: File: texinfo,  Node: Dots,  Next: Bullet,  Up: Dots Bullets Tex
                    668: 
                    669: @dots{}
                    670: -------
                    671: 
                    672: `@dots{}' generates an ellipsis which is three dots in a row,
                    673: appropriately spaced, like this: `...'.  Do not simply write three
                    674: periods in the input file; that would work for the Info file output,
                    675: but would produce the wrong amount of space between the periods in
                    676: the printed manual.
                    677: 
                    678: 
                    679: 
                    680: File: texinfo,  Node: Bullet,  Next: Tex,  Prev: Dots,  Up: Dots Bullets Tex
                    681: 
                    682: @bullet{}
                    683: ---------
                    684: 
                    685: `@bullet{}' generates a large round dot, or the closest possible
                    686: thing to one.
                    687: 
                    688: Here is a bullet: *
                    689: 
                    690: 
                    691: 
                    692: File: texinfo,  Node: Tex,  Prev: Bullet,  Up: Dots Bullets Tex
                    693: 
                    694: @TeX{}
                    695: ------
                    696: 
                    697: `@TeX{}' generates `TeX'.  In a printed manual, this is a special
                    698: logo that is different from three ordinary letters.
                    699: 
                    700: 
                    701: 
                    702: File: texinfo,  Node: Emphasis,  Prev: Dots Bullets Tex,  Up: Marking Text
                    703: 
                    704: Emphasizing Text
                    705: ================
                    706: 
                    707: Usually, Texinfo changes the font automatically to mark words in the
                    708: text according to what category the words belong to.  The `@code'
                    709: command, for example, does this.  Most often, this is the best way to
                    710: mark specified words.  However, sometimes you will want to emphasize
                    711: text directly.  Texinfo has two ways to do this: commands that tell
                    712: Texinfo to emphasize the text but leave the method to the program,
                    713: and commands that specify the font to use.  The first method is
                    714: generally the best and it makes it possible to change the style of a
                    715: document without have to re-edit it line by line.
                    716: 
                    717: * Menu:
                    718: 
                    719: * Emph and Strong::    Emphasizing text.
                    720: * Fonts::              Selecting italic, bold or typewriter fonts.
                    721: 
                    722:  
                    723: 
                    724: File: texinfo,  Node: Emph and Strong,  Next: Fonts,  Up: Emphasis
                    725: 
                    726: @emph and @strong
                    727: -----------------
                    728: 
                    729: `@emph' and `@strong' are two forms of emphasis.  `@strong' is
                    730: stronger.
                    731: 
                    732: In printed output, `@emph' produces *italics* and `@strong' produces
                    733: *bold*.
                    734: 
                    735: In the Info file, both of these commands put asterisks around the
                    736: argument.
                    737: 
                    738: 
                    739: 
                    740: File: texinfo,  Node: Fonts,  Prev: Emph and Strong,  Up: Emphasis
                    741: 
                    742: @i,  @b and @t
                    743: --------------
                    744: 
                    745: These three commands specify font changes in the printed manual and
                    746: have no effect in the Info file.  `@i' requests italic font (in some
                    747: versions of TeX, a slanted font is used), `@b' requests bold face,
                    748: and `@t' requests the fixed-width font used by `@kbd'.  All three
                    749: commands apply to an argument that follows, surrounded by braces.
                    750: 
                    751: If possible, you should avoid using these three commands.  If you
                    752: find a need to use one, it probably indicates a lack in the Texinfo
                    753: language.
                    754: 
                    755: 
                    756: 
                    757: File: texinfo,  Node: Conditionals,  Next: Printing Hardcopy,  Prev: Marking Text,  Up: Top
                    758: 
                    759: Conditionals
                    760: ************
                    761: 
                    762: You may not always be able to use the same text for both the printed
                    763: manual and the on-line Info file.  In this case, you can use the
                    764: conditional commands to specify which text is for the printed manual
                    765: and which is for the Info file.
                    766: 
                    767: `@ifinfo' begins text that should be ignored by TeX when it typesets
                    768: the printed manual.  The text appears only in the Info file.  The
                    769: `@ifinfo' command should appear on a line by itself.  End the
                    770: info-only text with a line containing `@end ifinfo' by itself.  At
                    771: the beginning of a Texinfo file, the Info permissions are contained
                    772: within a region marked by `@ifinfo' and `@end ifinfo'.
                    773: 
                    774: Likewise, `@iftex' and `@end iftex' lines delimit text that will not
                    775: appear in the Info file but will appear in the printed manual.
                    776: 
                    777: For example,
                    778: 
                    779:      @iftex
                    780:      This text will appear only in the printed manual.
                    781:      @end iftex
                    782:      
                    783:      
                    784:      @ifinfo
                    785:      However, this text will appear only in the info manual.
                    786:      @end ifinfo
                    787: 
                    788: The preceding example produces the following.  Note how you only see
                    789: one of the two lines, depending on whether you are reading the
                    790: on-line Info version or the printed version of this manual.
                    791: 
                    792: However, this text will appear only in the info manual.
                    793: 
                    794: The `@titlepage' command is a special variant of `@iftex' that is
                    795: used for making the title and copyright pages of the printed manual.
                    796: 
                    797: * Menu:
                    798: 
                    799: * Using Tex Commands::         Using commands from regular TeX.
                    800: 
                    801:  
                    802: 
                    803: File: texinfo,  Node: Using Tex Commands,  Prev: Conditionals,  Up: Conditionals
                    804: 
                    805: Using TeX Commands
                    806: ==================
                    807: 
                    808: Inside a region delineated by `@iftex' and `@end iftex', you can
                    809: embed ordinary TeX commands.  Info will ignore these commands since
                    810: they are only in that part of the file that is seen by TeX.  The TeX
                    811: commands are the same as any TeX commands except that an `@' replaces
                    812: the `\' used by TeX.  For example, in the `@titlepage' section of a
                    813: Texinfo file, the TeX command `@vskip' is used to format the
                    814: copyright page.
                    815: 
                    816: You can enter TeX completely, and use `\' in the TeX commands by
                    817: delineating a region with the `@tex' and `@end tex' commands.  (These
                    818: commands automatically put the region inside of `@iftex' and `@end
                    819: iftex' commands.)  For example,
                    820: 
                    821:      @tex
                    822:      Here you would put text with TeX commands;
                    823:      such as $\bigl(x\in A(n)\bigm|x\in B(n)\bigr)$
                    824:      that will appear only  in the printed manual.
                    825:      @end tex
                    826: 
                    827: In the Info file, nothing between `@tex' and `@end tex' will appear.
                    828: 
                    829: 
                    830: 
                    831: File: texinfo,  Node: Printing Hardcopy,  Next: Creating an Info File,  Prev: Conditionals,  Up: Top
                    832: 
                    833: Printing Hardcopy
                    834: *****************
                    835: 
                    836: There are three shell commands for printing a hardcopy of a Texinfo
                    837: file.  One is for formatting the file, the second is for sorting the
                    838: index and the third is for printing the formatted document.  When you
                    839: use the shell commands, you can either work directly in the operating
                    840: system shell or work within a shell inside of GNU Emacs.
                    841: 
                    842: The typesetting program TeX is used for formatting a Texinfo file. 
                    843: TeX is a very powerful typesetting program and, if used right, does
                    844: an exceptionally good job.  The @-commands in a Texinfo file are
                    845: translated by a file called `texinfo.tex' into commands that TeX
                    846: understands.  (That is why the beginning of every Texinfo file starts
                    847: with the line that says `\input texinfo'; this command tells TeX to
                    848: use the `texinfo.tex' file in processing the Texinfo file. 
                    849: Customarily, `texinfo.tex' is in a directory called
                    850: `/usr/lib/tex/macros'.) `texinfo-format-buffer' reads the very same
                    851: @-commands in the Texinfo file and processes them differently from
                    852: TeX to make an Info file.
                    853: 
                    854: Usually, the TeX formatting command is the shell command `tex'
                    855: followed by the name of the Texinfo file.  The TeX command produces a
                    856: formatted DVI file as well as several auxiliary files containing
                    857: indices, cross references, etc.  The DVI file (for "DeVice
                    858: Independent" file) can be printed on a wide variety of printers.
                    859: 
                    860: The TeX formatting command itself does not sort the indices.  This is
                    861: a misfeature of TeX.  Hence, to generate a printed index, you first
                    862: need a sorted index to work from.
                    863: 
                    864: TeX outputs raw, unsorted index files under names that obey a
                    865: standard convention.  These names are the name of your main input
                    866: file to TeX, with everything after the first period thrown away, and
                    867: the two letter names of indices added at the end.  For example, the
                    868: raw index output files for the input file `foo.texinfo' would be
                    869: `foo.cp', `foo.vr', `foo.fn', `foo.tp', `foo.pg' and `foo.ky'.  Those
                    870: are exactly the arguments to give to `texindex'.  Or else, you can
                    871: use `??' as ``wild-cards'' and give the command in this form:
                    872: 
                    873:      texindex foo.??
                    874: 
                    875:  For each file specified, `texindex' generates a sorted index file
                    876: whose name is made by appending `s' to the input file name.  The
                    877: `@printindex' command knows to look for a file of that name. 
                    878: `texindex' does not alter the raw index output file. After you have
                    879: sorted the indices, you need to rerun the TeX command on the Texinfo
                    880: file.  This regenerates a formatted DVI file with the index entries
                    881: in the correct order.
                    882: 
                    883: To summarize, this is a three step process:
                    884: 
                    885:   1. Run the TeX command on the Texinfo file.  This generates the
                    886:      formatted DVI file as well as the raw index files with two
                    887:      letter extensions.
                    888: 
                    889:   2. Run the shell command `texindex' on the raw index files to sort
                    890:      them.  The arguments to `texindex' are the names of the raw
                    891:      index files.  `texindex' creates sorted index files whose names
                    892:      are the names of the raw index files with an `s' appended.  To
                    893:      cause `texindex' to sort all the raw index files, append `??' to
                    894:      the Texinfo file name in place of the `.texinfo' extension.
                    895: 
                    896:   3. Rerun the TeX command on the Texinfo file.  This regenerates a
                    897:      formatted DVI file with the index entries in the correct order. 
                    898:      This second run also makes all the cross references correct as
                    899:      well.  (The tables of contents are always correct.)
                    900: 
                    901: You need not run `texindex' after each TeX run.  If you don't, the
                    902: next TeX run will use whatever sorted index files happen to exist
                    903: from the previous use of `texindex'.  This is usually ok while you
                    904: are debugging.
                    905: 
                    906: Finally, the document can be printed out with the DVI print command
                    907: (a shell command).  Depending on the system used, the DVI print
                    908: command will be a command such as `lpr -d'.  The DVI print command
                    909: may require a file name without any extension or with a `.dvi'
                    910: extension.
                    911: 
                    912: The following commands, for example, sort the indices, format and
                    913: print the ``Bison Manual'' (where `%' is the shell prompt):
                    914: 
                    915:      % tex bison.texinfo
                    916:      % texindex bison.??
                    917:      % tex bison.texinfo
                    918:      % lpr -d bison.dvi
                    919: 
                    920: (Remember that the words for the shell commands may be different at
                    921: your site; but these are commonly used versions.)
                    922: 
                    923: It is often most convenient to give formatting and printing commands
                    924: from a shell within GNU Emacs.  This way, you can easily keep track
                    925: of errors.  To create a shell within Emacs, type `M-x shell'.  In
                    926: this shell, you can format and print the document.  You can switch to
                    927: and from this shell while it is running and do other things.  If you
                    928: are formatting a very long document on a slow machine, this can be
                    929: very convenient; on a VAX 750, for example, formatting often takes 8
                    930: seconds or more per page depending on how loaded the computer is. 
                    931: Faster machines take correspondingly less time.
                    932: 
                    933: * Menu:
                    934: 
                    935: * Requirements::       Formatting requirements.
                    936: * Compile-Command::    Formatting with the compile command.
                    937: 
                    938:  
                    939: 
                    940: File: texinfo,  Node: Requirements,  Next: Compile-Command,  Up: Printing Hardcopy
                    941: 
                    942: Formatting Requirements
                    943: =======================
                    944: 
                    945: Every Texinfo file that is to be input to TeX must begin with a line
                    946: that looks like
                    947: 
                    948:      \input texinfo   @c -*-texinfo-*-
                    949: 
                    950: This serves two functions.
                    951: 
                    952:   1. When the file is processed by TeX, it loads the macros needed
                    953:      for processing a Texinfo file.
                    954: 
                    955:   2. When the file is edited in Emacs, it causes Texinfo mode to be
                    956:      used.
                    957: 
                    958: Every Texinfo file must end with a line saying
                    959: 
                    960:      @bye
                    961: 
                    962: which terminates TeX processing and forces out unfinished pages.
                    963: 
                    964: You also have to include two lines that specify the Info file name
                    965: and the title of the printed manual:
                    966: 
                    967:      @setfilename NAME-OF-TEXINFO-FILE
                    968:      @settitle NAME OF MANUAL
                    969: 
                    970: You might also want to include a line saying
                    971: 
                    972:      @setchapternewpage odd
                    973: 
                    974: to cause each chapter to start on a fresh odd-numbered page.
                    975: 
                    976: By default, TeX typesets pages for printing in an 8.5 by 11 inch
                    977: format.  However, you can direct TeX to typeset a document in a 7 by
                    978: 9.25 inch format that is suitable for bound books by inserting the
                    979: following command on a line by itself at the beginning of the Texinfo
                    980: file, before the `@setchapternewpage' command:
                    981: 
                    982:      @smallbook
                    983: 
                    984: The Free Software Foundation distributes printed copies of the ``GNU
                    985: Emacs Manual'' in this size.
                    986: 
                    987: Finally, TeX sometimes is unable to typeset a line without extending
                    988: it into the right margin.  This can occur when TeX comes upon what it
                    989: interprets as a long word that it cannot hyphenate, like a net
                    990: address, or a very long title.  When this happens, TeX prints an
                    991: error message like this:
                    992: 
                    993:      Overfull \hbox (20.76302pt too wide)
                    994: 
                    995: and gives the line number along with the text of the offending line
                    996: marked at all the places that TeX knows to hyphenate words.  (In TeX
                    997: lines are in `horizontal boxes', hence the term, `hbox'.)
                    998: 
                    999: If the Texinfo file has an overfull hbox, you can rewrite the
                   1000: sentence so the overfull hbox does not occur or you can decide to
                   1001: leave it.  A small excursion into the right margin often does not
                   1002: matter and may not even be noticable.  However, unless told
                   1003: otherwise, TeX will print a large, ugly, black rectangle beside every
                   1004: line that is overfull.  This is so you will notice the location of
                   1005: the problem if you are correcting a draft.  To prevent such
                   1006: monstrosities from marring your final printout, put the following in
                   1007: the beginning of the Texinfo file on lines of their own, before the
                   1008: `@setchapternewpage' command:
                   1009: 
                   1010:      @iftex
                   1011:      @finalout
                   1012:      @end iftex
                   1013: 
                   1014: *Note Titlepage::, for information about creating a title page. 
                   1015: *Note Contents::, for information about creating a table of contents.
                   1016: 
                   1017: 
                   1018: 
                   1019: File: texinfo,  Node: Compile-Command,  Prev: Requirements,  Up: Printing Hardcopy
                   1020: 
                   1021: Using Local Variables and the Compile Command
                   1022: =============================================
                   1023: 
                   1024: Another way to give the TeX formatting command to Texinfo is to put
                   1025: that command in a "local variables list" at the end of the Texinfo
                   1026: file.  You can then specify the TeX formatting command as a
                   1027: `compile-command' and have Emacs run the TeX formatting command by
                   1028: giving the command `M-x compile'.  This creates a special shell
                   1029: called the `*compilation buffer*'.  For example, at the end of the
                   1030: `gdb.texinfo' file, after the `@bye', you would put the following:
                   1031: 
                   1032:      @c Local Variables:
                   1033:      @c compile-command: "tex gdb.texinfo"
                   1034:      @c End:
                   1035: 
                   1036: This technique is most often used by programmers who compile programs
                   1037: this way.
                   1038: 
                   1039: 
                   1040: 
                   1041: File: texinfo,  Node: Creating an Info File,  Next: Catching Mistakes,  Prev: Printing Hardcopy,  Up: Top
                   1042: 
                   1043: Creating an On-line Info file
                   1044: *****************************
                   1045: 
                   1046: In GNU Emacs, using Texinfo mode, you can see what part or all of a
                   1047: Texinfo file will look like in Info by using the keyboard command
                   1048: `C-c C-f' (`texinfo-format-region').  This formats a region and
                   1049: displays in a temporary buffer called `*Info Region*'; however, this
                   1050: command does not turn on Info reading program--it just displays what
                   1051: the region will look like.  The `texinfo-format-region' command is
                   1052: described more extensively in the chapter on using Texinfo mode. 
                   1053: *Note Info on a Region::.
                   1054: 
                   1055: In GNU Emacs, the way to create a working Info file is to visit the
                   1056: file and invoke
                   1057: 
                   1058:      `M-x texinfo-format-buffer'
                   1059: 
                   1060: A new buffer is created and the Info file text is generated there. 
                   1061: `C-x C-s' will save it under the name specified in the `@setfilename'
                   1062: command.
                   1063: 
                   1064: If the Texinfo file has more than 30,000 bytes,
                   1065: `texinfo-format-buffer' will automatically create a "tag table" for
                   1066: it.  With a tag table, Info can jump to new nodes more quickly than
                   1067: it can otherwise.  In addition, if the file has more than 100,000
                   1068: bytes in it, `texinfo-format-buffer' will split the file into shorter
                   1069: Indirect subfiles of about 50,000 bytes each.  Files are split so
                   1070: that Info does not have to make a large buffer to hold the whole of a
                   1071: large Info file; instead, Info allocates just enough memory for the
                   1072: small, split off file that is needed at the time.  This way, Emacs
                   1073: avoids wasting memory when you run Info.  (Before splitting was
                   1074: implemented, Info files were always short and "include" files were
                   1075: designed as a way to create a single, large printed manual out of the
                   1076: smaller Info files. *Note Include Files::, for more information.)
                   1077: 
                   1078: When the file is split, Info itself works through a shortened version
                   1079: of the original file that contains the tag table and references to
                   1080: the files that were split off.  The split off files are called
                   1081: "indirect" files.
                   1082: 
                   1083: The split off files have names that are created by appending `-1',
                   1084: `-2', `-3' and so on to the file names specified by the
                   1085: `@setfilename' command.  The shortened version of the original file
                   1086: continues to have the name specified by `@setfilename'.
                   1087: 
                   1088: At one stage in writing this document, for example, the Info file was
                   1089: saved as `test-texinfo' and that file looked like this:
                   1090: 
                   1091:      Info file: test-texinfo,    -*-Text-*-
                   1092:      produced by texinfo-format-buffer
                   1093:      from file: new-texinfo-manual.texinfo
                   1094:      
                   1095:      ^_
                   1096:      Indirect:
                   1097:      test-texinfo-1: 102
                   1098:      test-texinfo-2: 50422
                   1099:      test-texinfo-3: 101300
                   1100:      ^_^L
                   1101:      Tag table:
                   1102:      (Indirect)
                   1103:      Node: overview^?104
                   1104:      Node: info file^?1271
                   1105:      Node: printed manual^?4853
                   1106:      Node: conventions^?6855
                   1107:      ...
                   1108: 
                   1109:  (But `test-texinfo' had far more nodes than are shown here.)  Each of
                   1110: the split off, indirect files, `test-texinfo-1', `test-texinfo-2',
                   1111: and `test-texinfo-3', is listed in this file after the line that says
                   1112: `Indirect:'.  The tag table is listed after the line that says `Tag
                   1113: table:'.
                   1114: 
                   1115: You cannot run the `M-x Info-validate' node checking command on
                   1116: indirect files.  For information on how to prevent files from being
                   1117: split and how to validate the structure of the nodes, *note
                   1118: Info-Validating a Large File::.
                   1119: 
                   1120: * Menu:
                   1121: 
                   1122: * Installing an Info File::    Putting the Info file in the info directory.
                   1123: 
                   1124:  
                   1125: 
                   1126: File: texinfo,  Node: Installing an Info File,  Prev: Creating an Info File,  Up: Creating an Info File
                   1127: 
                   1128: Installing an Info file
                   1129: =======================
                   1130: 
                   1131: An Info file is usually installed in the GNU Emacs directory called
                   1132: `info'.  For Info to work, this directory must contain all the Info
                   1133: files, including the split off files.  In addition, the `info'
                   1134: directory must have a file that serves as a top level directory for
                   1135: the Info system.  This file is called `dir'.
                   1136: 
                   1137: For example, in the `info' directory, the file called `dir' has the
                   1138: top level menu for all the Info files in the system.  This file has a
                   1139: master menu that looks like this:
                   1140: 
                   1141:      * Menu:
                   1142:      
                   1143:      * Info:    (info).      Documentation browsing system.
                   1144:      * Emacs:   (emacs).     The extensible self-documenting text editor.
                   1145:      * Texinfo: (texinfo).   With one source file, make either a printed 
                   1146:                              manual using TeX or an Info file using
                   1147:                              Texinfo.
                   1148: 
                   1149:  To add a new Info file, just add it to this menu.  For example, if
                   1150: you were adding documentation for GDB, you would make the following
                   1151: entry:
                   1152: 
                   1153:      * GDB: (gdb).           The source-level C debugger.
                   1154: 
                   1155:  The first item is the menu item name; it is followed by a colon.  The
                   1156: second item is the name of the Info file, in parentheses; it is
                   1157: followed by a period.  The third part of the entry is the description
                   1158: of the item.
                   1159: 
                   1160: The top node of the file, named `top', should have as its parent the
                   1161: name of a node in another file, where there is a menu that leads to
                   1162: this file.  Specify the file name in parentheses.  If the file is to
                   1163: be installed directly in the Info directory file, use `(dir)' as the
                   1164: parent of the top node; this is short for `(dir)top', the node `top'
                   1165: in the file `dir', which is the main menu of Info.
                   1166: 
                   1167: 
                   1168: 
                   1169: File: texinfo,  Node: Catching Mistakes,  Next: Command Syntax,  Prev: Creating an Info File,  Up: Top
                   1170: 
                   1171: Catching Mistakes
                   1172: *****************
                   1173: 
                   1174: Besides mistakes with the content of what ever you are describing,
                   1175: there are two kinds of mistake you can make with Texinfo:  you can
                   1176: make mistakes with @-commands, and you can make mistakes with the
                   1177: structure of the nodes and chapters.
                   1178: 
                   1179: There are two tools for catching the first kind of mistake and two
                   1180: for catching the second.
                   1181: 
                   1182: For finding problems with @-commands, your best action is to run `M-x
                   1183: texinfo-format-region' on regions of your file as you write it.  In
                   1184: Texinfo mode, the `texinfo-format-region' command is bound to `C-c
                   1185: C-f'.  In addition, you can run TeX on the whole file.
                   1186: 
                   1187: For finding problems with the structure of nodes and chapters, you
                   1188: can use `C-c C-s' (`texinfo-show-structure') (and the related `occur'
                   1189: command) and you can use the `M-x Info-validate' command.
                   1190: 
                   1191: * Menu:
                   1192: 
                   1193: * Debugging with Info::            Catching errors with info formatting.
                   1194: * Debugging with Tex::             Catching errors with TeX formatting.
                   1195: * Using texinfo-show-structure::    Using `texinfo-show-structure'
                   1196:                                    to catch mistakes.
                   1197: * Running Info-Validate::          Checking for unreferenced nodes.
                   1198: 
                   1199:  
                   1200: 
                   1201: File: texinfo,  Node: Debugging with Info,  Next: Debugging with Tex,  Up: Catching Mistakes
                   1202: 
                   1203: Catching Errors with Info Formatting
                   1204: ====================================
                   1205: 
                   1206: After you have written part of a Texinfo file, you can use the `M-x
                   1207: texinfo-format-region' command to see whether the region formats
                   1208: properly.  In Texinfo mode, this command is bound to the keyboard
                   1209: command `C-c C-f'.
                   1210: 
                   1211: If you have made a mistake with an @-command, `M-x
                   1212: texinfo-format-region' will stop processing at or after the error and
                   1213: give an error message.  To see where in the file the error occurred,
                   1214: switch to the `*Info Region*' buffer; the cursor will be in a
                   1215: position that is after the location of the error.  Also, the text
                   1216: will not be formatted after the place the error occurred.
                   1217: 
                   1218: For example, if you accidently end a menu with the command `@end
                   1219: menus' with an `s' on the end, instead of with `@end menu', you will
                   1220: get an error message that says:
                   1221: 
                   1222:      @end menus is not handled by texinfo.
                   1223: 
                   1224:  The cursor will stop at the point in the file where the error occurs,
                   1225: or not long after it.  It will look like this:
                   1226: 
                   1227:      @menu
                   1228:      * Using texinfo-show-structure::    Using `texinfo-show-structure'
                   1229:                                          to catch mistakes.
                   1230:      * Running Info-Validate::           Checking for unreferenced nodes.
                   1231:      @end menus
                   1232: 
                   1233: The `texinfo-format-region' command does not always recognize errors.
                   1234: For example, no errors were reported when `texinfo-format-region' was
                   1235: run on the whole itemized list of which the following is a part:
                   1236: 
                   1237:      name of the Texinfo file as an extension.  The @samp{??} are `wildcards'
                   1238:      that cause the shell to substitute all the raw index files.  (@xref{sorting
                   1239:      indices), for more information about sorting indices.) @refill
                   1240:      @cindex Sorting indices
                   1241:      @cindex Indices, sorting
                   1242:      
                   1243:      @item 
                   1244:      @emph{Third}, rerun the @TeX{} command on the Texinfo file.  This
                   1245:      regenerates a formatted DVI file with the index entries in the correct
                   1246:      order.  This second run also makes all the cross references and table of
                   1247:      contents correct as well.
                   1248: 
                   1249:  Instead, `texinfo-format-region' ran without reporting the error, but
                   1250: it produced output that looked like this:
                   1251: 
                   1252:           name of the texinfo file as an extension.  The `??' are `wildcards'
                   1253:           that cause the shell to substitute all the raw index files.  (*Note for more information about sorting indices.) @refill @cindex Sorting indices @cindex Indices: sorting indices), rerun the TeX command on the texinfo file.  This
                   1254:           regenerates a formatted DVI file with the index entries in the correct
                   1255:           order.  This second run also makes all the cross references and table of
                   1256:           contents correct as well.
                   1257: 
                   1258:  However, when `texinfo-format-region' was run on part of the list
                   1259: that is shown, it did give an error message, `Search failed: "[{,}"'.
                   1260: (This error message is explained in the section on using the Emacs
                   1261: Lisp Debugger, *note Using the Emacs Lisp Debugger::.)
                   1262: 
                   1263: Sometimes `texinfo-format-region' will stop long after the original
                   1264: error;  this is because it does not discover the problem until then. 
                   1265: In this case, you will have to backtrack.
                   1266: 
                   1267: 
                   1268: 
                   1269: File: texinfo,  Node: Using the Emacs Lisp Debugger,  Up: Debugging with Info
                   1270: 
                   1271: Using the Emacs Lisp Debugger
                   1272: -----------------------------
                   1273: 
                   1274: If an error is especially elusive, you can turn on the Emacs Lisp
                   1275: debugger and look at the backtrace; this tells you where in the
                   1276: `texinfo-format-region' function the problem occurred.  You can turn
                   1277: on the debugger with the command:
                   1278: 
                   1279:      M-x set-variable RET debug-on-error RET t
                   1280: 
                   1281: and turn it off with
                   1282: 
                   1283:      M-x set-variable RET debug-on-error RET nil
                   1284: 
                   1285: Often, when you are using the debugger, it is easier to follow what
                   1286: is going on if you use the Emacs Lisp files that are not
                   1287: byte-compiled.  The byte-compiled sources send octal numbers to the
                   1288: debugger that may look mysterious.  To use the uncompiled source
                   1289: files, load `texinfmt.el' and `texinfo.el' with the `M-x load-file'
                   1290: command.
                   1291: 
                   1292: The debugger will not catch an error if `texinfo-format-region' does
                   1293: not detect one.  In the example shown above, `texinfo-format-region'
                   1294: did not find the error when the whole list was formatted, but only
                   1295: when part of the list was formatted.  When `texinfo-format-region'
                   1296: did not find an error, the debugger did not find one either.
                   1297: 
                   1298: However, when `texinfo-format-region' did report an error, it invoked
                   1299: the debugger.  This is the backtrace it produced:
                   1300: 
                   1301:      Signalling: (search-failed "[},]")
                   1302:        re-search-forward("[},]")
                   1303:        (while ...)
                   1304:        (let ...)
                   1305:        texinfo-format-parse-args()
                   1306:        (let ...)
                   1307:        texinfo-format-xref()
                   1308:        funcall(texinfo-format-xref)
                   1309:        (if ...)
                   1310:        (let ...)
                   1311:        (if ...)
                   1312:        (while ...)
                   1313:        texinfo-format-scan()
                   1314:        (save-excursion ...)
                   1315:        (let ...)
                   1316:        texinfo-format-region(103370 103631)
                   1317:      * call-interactively(texinfo-format-region)
                   1318: 
                   1319: The backtrace is read from the bottom up.  `texinfo-format-region'
                   1320: was called interactively; and it, in turn, called various functions,
                   1321: including `texinfo-format-scan', `texinfo-format-xref' and
                   1322: `texinfo-format-parse-args'.  Inside the function
                   1323: `texinfo-format-parse-args', the function `re-search-forward' was
                   1324: called; it was this function that could not find the missing right
                   1325: hand brace.
                   1326: 
                   1327: *Note : (emacs)Lisp Debug, for more information.
                   1328: 
                   1329: 
                   1330: 
                   1331: File: texinfo,  Node: Debugging with Tex,  Next: Using texinfo-show-structure,  Prev: Debugging with Info,  Up: Catching Mistakes
                   1332: 
                   1333: Catching Errors with TeX Formatting
                   1334: ===================================
                   1335: 
                   1336: You can also catch mistakes when you format a file with TeX.
                   1337: 
                   1338: Usually, you will want to do this after you have run
                   1339: `texinfo-format-buffer' on the same file.  `texinfo-format-buffer' is
                   1340: usually faster and sometimes gives error messages that make more
                   1341: sense.  *Note Debugging with Info::, for more information.
                   1342: 
                   1343: For example, TeX was run on the same itemized list discussed in the
                   1344: section on the use of  `texinfo-format-region' (*note Debugging with
                   1345: Info::.); the fragment with the error looked like this:
                   1346: 
                   1347:      name of the texinfo file as an extension.  The @samp{??} are `wildcards'
                   1348:      that cause the shell to substitute all the raw index files.  (@xref{sorting
                   1349:      indices, for more information about sorting indices.) @refill
                   1350: 
                   1351: This produced the following output, after which TeX stopped:
                   1352: 
                   1353:      Runaway argument?
                   1354:      {sorting indices, for more information about sorting indices.) @refill @ETC.
                   1355:      ! Paragraph ended before \xref was complete.
                   1356:      <to be read again> 
                   1357:                         \par 
                   1358:      l.27 
                   1359:           
                   1360:      ?
                   1361: 
                   1362: In this case, TeX produced an accurate and understandable error
                   1363: message: `Paragraph ended before \xref was complete.' (Note, however,
                   1364: that TeX translated the `@' into a `\'.)  Also, `\par' is an internal
                   1365: TeX command of no relevance to Texinfo.)
                   1366: 
                   1367: Unfortunately, TeX is not always so helpful, and sometimes you have
                   1368: to be truly a Sherlock Holmes to discover what went wrong.
                   1369: 
                   1370: In any case, if you run into a problem like this, you can do one of
                   1371: two things.
                   1372: 
                   1373:   1. You can tell TeX to continue running and to ignore errors  as
                   1374:      best it can by typing `r RET' at the  `?' prompt.
                   1375: 
                   1376:      This is often the best thing to do.  However, beware: the one
                   1377:      error may produce a cascade of additional error messages as it
                   1378:      consequences are felt through the rest of the file.
                   1379: 
                   1380:   2. You can tell TeX to stop this run by typing `x RET'  at the `?'
                   1381:      prompt.
                   1382: 
                   1383: Sometimes TeX will format a file without producing error messages
                   1384: even though there is a problem.  This usually occurs if a command is
                   1385: not ended but TeX is able to continue processing anyhow.  For
                   1386: example, if you fail to end an itemized list with the `@end itemize'
                   1387: command, TeX will write a DVI file that you can print out.  The only
                   1388: error message that TeX will give you is the somewhat mysterious
                   1389: comment that
                   1390: 
                   1391:      (\end occurred inside a group at level 1)
                   1392: 
                   1393: However, if you print the DVI file, you will find that the text of
                   1394: the file that follows the itemized list is entirely indented as if it
                   1395: were part of the last item in the itemized list.  The error message
                   1396: is the way TeX says that it expected to find an `@end' command
                   1397: somewhere in the file; but that it could not locate where it was
                   1398: needed.
                   1399: 
                   1400: Another source of notoriously hard to find errors is a missing `@end
                   1401: group' command.  If you ever are stumped by incomprehensible errors,
                   1402: look for a missing `@end group' command first.
                   1403: 
                   1404: If you do not have the header lines in the file, TeX may stop in the
                   1405: beginning of its run and display output that looks like the following.
                   1406: The `*' indicates that TeX is waiting for input.
                   1407: 
                   1408:      This is TeX, Version 2.0 for Berkeley UNIX (preloaded format=plain-cm 
                   1409:      87.10.25) (#tz-bar-a02987.tex [1])
                   1410:      *
                   1411: 
                   1412: In this case, simply type `\end RET' after the asterisk.  Then put
                   1413: the header lines into the Texinfo file and run the TeX command again.
                   1414: 
                   1415: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.