Annotation of 43BSDReno/contrib/emacs-18.55/info/texinfo-3, revision 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.