Annotation of 43BSDReno/contrib/emacs-18.55/man/texinfo.texinfo, revision 1.1

1.1     ! root        1: \input texinfo    @c -*-texinfo-*-
        !             2: @comment %**start of header (This is for running Texinfo on a region.)
        !             3: @setfilename ../info/texinfo
        !             4: @settitle Texinfo 1.1
        !             5: @comment %**end of header (This is for running Texinfo on a region.)
        !             6: 
        !             7: @iftex
        !             8: @finalout
        !             9: @end iftex
        !            10: 
        !            11: @ifinfo
        !            12: This file documents Texinfo, a documentation system that uses a single
        !            13: source file to produce both on-line help and a printed manual.  
        !            14: 
        !            15: This is edition 1.1 of the Texinfo documentation, and is for the Texinfo
        !            16: that is distributed as part of Version 18 of GNU Emacs.
        !            17: 
        !            18: Copyright (C) 1988 Free Software Foundation, Inc.
        !            19: 
        !            20: Permission is granted to make and distribute verbatim copies of
        !            21: this manual provided the copyright notice and this permission notice
        !            22: are preserved on all copies.
        !            23: 
        !            24: @ignore
        !            25: Permission is granted to process this file through TeX and print the
        !            26: results, provided the printed document carries copying permission
        !            27: notice identical to this one except for the removal of this paragraph
        !            28: (this paragraph not being relevant to the printed manual).
        !            29: 
        !            30: @end ignore
        !            31: Permission is granted to copy and distribute modified versions of this
        !            32: manual under the conditions for verbatim copying, provided that the entire
        !            33: resulting derived work is distributed under the terms of a permission
        !            34: notice identical to this one.
        !            35: 
        !            36: Permission is granted to copy and distribute translations of this manual
        !            37: into another language, under the above conditions for modified versions,
        !            38: except that this permission notice may be stated in a translation approved
        !            39: by the Foundation.
        !            40: @end ifinfo
        !            41: 
        !            42: @setchapternewpage odd
        !            43: @titlepage
        !            44: @sp 11
        !            45: @center @titlefont{Texinfo}
        !            46: @sp 2
        !            47: @center The GNU Documentation Format
        !            48: @sp 2
        !            49: @center by Richard M. Stallman and Robert J. Chassell
        !            50: @sp 2
        !            51: @center Edition 1.1
        !            52: @sp 2
        !            53: @center May 1988
        !            54: 
        !            55: @comment   Include the Distribution inside the titlepage environment so
        !            56: @c that headings are turned off. 
        !            57: 
        !            58: @page
        !            59: @vskip 0pt plus 1filll
        !            60: Copyright @copyright{} 1988 Free Software Foundation, Inc.
        !            61: 
        !            62: @sp 2
        !            63: This is version 1.1 of the Texinfo documentation, and is for @*
        !            64: the Texinfo that is distributed as part of Version 18 of GNU Emacs.
        !            65: @sp 2
        !            66: 
        !            67: Published by the Free Software Foundation @*
        !            68: 675 Massachusetts Avenue, @*
        !            69: Cambridge, MA 02139 USA @*
        !            70: Printed copies are available for $10 each.
        !            71: 
        !            72: Permission is granted to make and distribute verbatim copies of
        !            73: this manual provided the copyright notice and this permission notice
        !            74: are preserved on all copies.
        !            75: 
        !            76: Permission is granted to copy and distribute modified versions of this
        !            77: manual under the conditions for verbatim copying, provided that the entire
        !            78: resulting derived work is distributed under the terms of a permission
        !            79: notice identical to this one.
        !            80: 
        !            81: Permission is granted to copy and distribute translations of this manual
        !            82: into another language, under the above conditions for modified versions,
        !            83: except that this permission notice may be stated in a translation approved
        !            84: by the Foundation.
        !            85: 
        !            86: @end titlepage
        !            87: 
        !            88: 
        !            89: @node Top, License, (dir), (dir)
        !            90: 
        !            91: @menu
        !            92: * License::                    Licensing information.
        !            93: * Overview::                   What is Texinfo?
        !            94: * Texinfo Mode::               Special features in GNU Emacs.
        !            95: * Beginning a File::           What to put at the beginning of a Texinfo file.
        !            96: * Ending a File::              What to put at the end of a Texinfo file.
        !            97: * Structuring::                        How to make nodes and chapters.
        !            98: * Quotations and Examples::    How to insert quotations and examples.
        !            99: * Lists and Tables::           How to make lists and tables.
        !           100: * Cross References::           How to make cross references.
        !           101: * Formatting Paragraphs::      How to format paragraphs.
        !           102: * Marking Text::               How to mark code, definitions, variables etc.
        !           103: * Conditionals::               Putting text in only Info or the printed work.
        !           104: * Printing Hardcopy::          How to print a hardcopy of the manual.
        !           105: * Creating an Info File::      How to create an on-line Info file.
        !           106: * Catching Mistakes::          How to find problems.
        !           107: 
        !           108: Indices, nodes containing large menus
        !           109: 
        !           110: * Command Index::              An item for each @@-command.
        !           111: * Concept Index::              An item for each concept.
        !           112: 
        !           113: A detailed node listing
        !           114: 
        !           115: Overview
        !           116: * Info File::                  Characteristics of the Info file.
        !           117: * Printed Manual::             Characteristics of the printed manual.
        !           118: * Conventions::                        General syntactic conventions.
        !           119: * Short Sample::               A short sample Texinfo file.
        !           120: 
        !           121: Using Texinfo Mode
        !           122: * Info on a Region::           Formatting a region for Info.
        !           123: * Showing the Structure::      Showing the structure of a file.
        !           124: * Inserting::                  Inserting frequently used commands.
        !           125: 
        !           126: Beginning a Texinfo File.
        !           127: * First Line::                 The first line of a Texinfo file.
        !           128: * Start-of-Header::            Identifying the start of the header.
        !           129: * Setfilename::                        Specifying the name of the Info file.
        !           130: * Settitle::                   Specifying the title used by the headings.
        !           131: * Setchapternewpage::          Starting chapters on odd numbered pages.
        !           132: * Titlepage::                  The title and copyright page.
        !           133: * Center::                     Centering a line.
        !           134: * Copyright & Printed Permissions:: Ensuring free distributability.
        !           135: * Top Node::                   The master menu.  
        !           136: * License and Distribution::   Your are free to copy and distribute this.
        !           137: 
        !           138: Ending a Texinfo File
        !           139: * Contents::                   Generating tables of contents.
        !           140: * Indices::                    Generating indices.
        !           141: * Index Entries::              Defining the entries of an index.
        !           142: * Combining Indices::          Putting two or more indices together.
        !           143: * Printing Indices & Menus::   Printing an index and generating menus.
        !           144: 
        !           145: Node and Chapter Structuring
        !           146: * Chapter::                    Creating a chapter.
        !           147: * Unnumbered and Appendix::    Chapter-like parts.
        !           148: * Section::                    Creating sections
        !           149: * Subsection::                 Creating subsections.
        !           150: * Subsubsection::              Creating subsubsections.
        !           151: 
        !           152: * Node::                       Creating nodes.
        !           153: * Menu::                       Creating menus.
        !           154: 
        !           155: 
        !           156: Making quotations and examples
        !           157: * Quotation::                  Inserting long quotations.
        !           158: * Example::                    Inserting examples of code and the like.
        !           159: * Display::                    Inserting displayed text.
        !           160: 
        !           161: Making lists and two column tables
        !           162: * Itemize::                    Creating itemized lists.
        !           163: * Enumerate::                  Creating enumerated lists.
        !           164: * Table::                      Creating two column tables.
        !           165: * Itemx::                      Putting an extra item in the 
        !           166:                                first column of a table.
        !           167: 
        !           168: Making Cross References
        !           169: * Xref::                       Making a regular cross reference.
        !           170: * Pxref::                      Making a parenthetical cross reference.
        !           171: * Inforef::                    Making a cross reference to an Info file.
        !           172: 
        !           173: 
        !           174: Formatting Paragraphs
        !           175: * Refilling & Noindent::       Refilling paragraphs 
        !           176:                                and preventing indentation
        !           177: * Refill::                     Using the @code{@@refill} command.
        !           178: * Noindent::                   Using the @code{@@noindent} command.
        !           179: 
        !           180: 
        !           181: Breaks, Blank Lines and Groups
        !           182: * Line Breaks::                        Inserting line breaks in @TeX{}.
        !           183: * Sp::                         Inserting blank lines.
        !           184: * Br::                         Inserting paragraph breaks.
        !           185: * W::                          Preventing line breaks.
        !           186: * Page::                       Starting new pages.
        !           187: * Group::                      Holding text together on one page.
        !           188: * Need::                       Keeping text together.
        !           189: 
        !           190: Marking Text Within a Paragraph
        !           191: * Code::                       A literal example of a piece of a program.
        !           192: * Samp::                       A literal example of a sequence of characters.
        !           193: * File::                       The name of a file.
        !           194: * Kbd::                                The names of keys or else characters you type.
        !           195: * Key::                                The conventional name for a key on a keyboard.
        !           196: * Ctrl::                       Indicates the ASCII control character.
        !           197: * Var::                                A variable.
        !           198: * Dfn::                                The introductory or defining use of a term.
        !           199: * Cite::                       The name of a book.
        !           200: 
        !           201: Inserting Braces, @samp{@@} and Periods
        !           202: * Braces Atsigns Periods::     Inserting braces, @samp{@@} and periods.
        !           203: * Dots Bullets Tex::           Inserting dots, bullets and the @TeX{} logo
        !           204: * Emphasis::                   Emphasizing text.
        !           205: 
        !           206: Emphasizing Text
        !           207: * Emph and Strong::            Emphasizing text.
        !           208: * Fonts::                      Selecting italic, bold or typewriter fonts.
        !           209: 
        !           210: Creating an Info File
        !           211: * Installing an Info File::    Putting the Info file in the 
        !           212:                                @file{info} directory.
        !           213: 
        !           214: Catching Mistakes
        !           215: * Debugging with Info::            Catching errors with info formatting.
        !           216: * Using the Emacs Lisp Debugger::   Using the Emacs Lisp Debugger
        !           217: * Debugging with Tex::             Catching errors with @TeX{} formatting.
        !           218: * Using texinfo-show-structure::    Using @code{texinfo-show-structure}
        !           219:                                    to catch mistakes.
        !           220: * Using Occur::                            Using @code{occur} to catch mistakes.
        !           221: * Running Info-Validate::          Checking for unreferenced nodes.
        !           222: 
        !           223: Finding badly referenced nodes
        !           224: * Info-Validating a Large File::     Running @code{Info-validate} 
        !           225:                                     on a large file.
        !           226: * Splitting::                        Splitting a file manually.
        !           227: 
        !           228: Appendices
        !           229: * Command Syntax::             Details about the syntax.
        !           230: * Include Files::              Making one printed file out of 
        !           231:                                several Info files.
        !           232: * TeX Input::                  Where @TeX{} finds its @samp{\input} file.
        !           233: * Sample Permissions::         You may copy GNU Software.
        !           234: * Ifinfo Permissions::         What to put in the `ifinfo' section.
        !           235: * Titlepage Permissions::      What to put in the `@@titlepage' section.
        !           236: @end menu
        !           237: 
        !           238: @node     License,   Overview,  Top, Top 
        !           239: @comment  node-name, next, previous,  up
        !           240: @unnumbered Licensing Information
        !           241: 
        !           242:   The programs currently being distributed that relate to Texinfo
        !           243: include two portions of GNU Emacs, plus two other separate programs
        !           244: (@code{texindex} and @code{texinfo.tex}).  These programs are
        !           245: @dfn{free}; this means that everyone is free to use them and free to
        !           246: redistribute them on a free basis.  The Texinfo related programs are not
        !           247: in the public domain; they are copyrighted and there are restrictions on
        !           248: their distribution, but these restrictions are designed to permit
        !           249: everything that a good cooperating citizen would want to do.  What is
        !           250: not allowed is to try to prevent others from further sharing any version
        !           251: of these programs that they might get from you.
        !           252: 
        !           253:   Specifically, we want to make sure that you have the right to give
        !           254: away copies of the programs that relate to Texinfo, that you receive
        !           255: source code or else can get it if you want it, that you can change these
        !           256: programs or use pieces of them in new free programs, and that you know
        !           257: you can do these things.
        !           258: 
        !           259:   To make sure that everyone has such rights, we have to forbid you to
        !           260: deprive anyone else of these rights.  For example, if you distribute
        !           261: copies of the Texinfo related programs, you must give the recipients all
        !           262: the rights that you have.  You must make sure that they, too, receive or
        !           263: can get the source code.  And you must tell them their rights.
        !           264: 
        !           265:   Also, for our own protection, we must make certain that everyone finds
        !           266: out that there is no warranty for the programs that relate to Texinfo.
        !           267: If these programs are modified by someone else and passed on, we want
        !           268: their recipients to know that what they have is not what we distributed,
        !           269: so that any problems introduced by others will not reflect on our
        !           270: reputation.
        !           271: 
        !           272:   The precise conditions of the licenses for the programs currently
        !           273: being distributed that relate to Texinfo are found in the General Public
        !           274: Licenses that accompany them.  The programs that are part of GNU Emacs
        !           275: are covered by the GNU Emacs copying terms (@pxref{License, , , emacs,
        !           276: The GNU Emacs Manual}), and other programs are covered by licenses that
        !           277: are contained in their source files.
        !           278: 
        !           279: @node Overview, Texinfo Mode, License, Top
        !           280: @comment  node-name,  next,  previous,  up
        !           281: @chapter Overview of Texinfo
        !           282: @cindex Overview of Texinfo
        !           283: @cindex Texinfo overview
        !           284: 
        !           285: Texinfo is a documentation system that uses a single source file for both
        !           286: on-line help and a printed manual.  This means that instead of writing two
        !           287: different documents, one for the on-line help and the other for the printed
        !           288: manual, only one document needs to be written.  When the system is revised,
        !           289: only one file has to be revised.@refill
        !           290: 
        !           291: Using Texinfo, you can create a document with the normal features of a book
        !           292: such as chapters, sections, cross references and indices.  The chapters and
        !           293: sections of the printed manual can be made to correspond to the nodes of
        !           294: the on-line help.  The cross references and indices can be used in both the
        !           295: on-line help and in the printed document.  Indices are generated
        !           296: semi-automatically.  The @cite{GNU Emacs Manual} is a good example of a
        !           297: Texinfo file.@refill
        !           298: 
        !           299: To make the printed manual, the Texinfo source file is processed by the
        !           300: @TeX{} typesetting program; the resulting DVI file can be typeset and
        !           301: printed as a book.  To make the on-line help, the Texinfo source file is by
        !           302: processed the @kbd{M-x texinfo-format-buffer} command; the resulting Info
        !           303: file is installed in the @file{info} directory.@refill
        !           304: 
        !           305: Since the Texinfo source file is used for a dual task---to create both the
        !           306: on-line help and the printed manual---it must be written in a special
        !           307: format that uses @@-commands (words preceded by an @samp{@@}) to indicate
        !           308: chapters, sections, nodes, examples, index entries and the like.@refill
        !           309: 
        !           310: Before writing a Texinfo source file, you should be familiar with the
        !           311: on-line Info documentation reading program.  (@inforef{Info, info, info},
        !           312: for more information.)  If you are writing a document that will be both
        !           313: on-line and printed, you will need both Info and @TeX{}.
        !           314: 
        !           315: To make an Info file, you use the @kbd{M-x texinfo-format-buffer} command
        !           316: in GNU Emacs.@refill
        !           317: 
        !           318: To make a printed manual, you need to use @TeX{}, a powerful,
        !           319: sophisticated typesetting program written by Donald Knuth.  @TeX{} is
        !           320: freely distributable. It is written in a dialect of Pascal called WEB and
        !           321: can be compiled either in Pascal or (by using a conversion program that
        !           322: comes with the @TeX{} distribution) in C.  (For information about getting
        !           323: @TeX{}, @pxref{TeX Mode, , , emacs, The GNU Emacs Manual})
        !           324: 
        !           325: When @TeX{} processes a Texinfo source file, @TeX{} makes use of a macro
        !           326: definitions file called @file{texinfo.tex} that comes with the GNU Emacs
        !           327: distribution in the @file{emacs/man} sources directory.  (The first line of
        !           328: every Texinfo file has a command that says @code{\input texinfo}; this
        !           329: tells @TeX{} to use the @file{texinfo.tex} file.)@refill
        !           330: 
        !           331: If the @file{texinfo.tex} file has not already been copied to the directory
        !           332: which contains the other @TeX{} macro definition files when Emacs was
        !           333: installed, you will probably want to copy it to that directory.  Usually,
        !           334: this is the @file{/usr/lib/tex/macros} directory.  For more information,
        !           335: @pxref{TeX Input, , @TeX{} Input Initialization}
        !           336: 
        !           337: Documentation for GNU utilities and libraries should be written in Texinfo
        !           338: format.
        !           339: 
        !           340: @menu
        !           341: * Info File::         Characteristics of the Info file.
        !           342: * Printed Manual::    Characteristics of the Printed Manual.
        !           343: * Conventions::       General Syntactic Conventions.
        !           344: * Short Sample::      A short sample Texinfo file.
        !           345: @end menu
        !           346: 
        !           347: @node Info File, Printed Manual, , Overview
        !           348: @comment  node-name,  next,  previous,  up
        !           349: @section Characteristics of the Info file
        !           350: @cindex Characteristics of the Info file
        !           351: @cindex Info file characteristics
        !           352: 
        !           353: A Texinfo file can be transformed into a printed manual and an on-line Info
        !           354: file.
        !           355: 
        !           356: An on-line Info file is a file formatted so that the Info documentation
        !           357: reading program can operate on it.  Info files are divided into pieces
        !           358: called @dfn{nodes}, each of which contains the discussion of one topic.
        !           359: Each node has a name, and contains both text for the user to read and
        !           360: pointers to other nodes, which are identified by their names.  The Info
        !           361: program displays one node at a time, and provides commands with which the
        !           362: user can move to the other nodes to which the current node points.
        !           363: 
        !           364: @ifinfo
        !           365: @inforef{Info, info, info}, for more information about using Info.
        !           366: @end ifinfo
        !           367: 
        !           368: Normally, most of the nodes are arranged in a tree which branches down.
        !           369: Each node may have any number of child nodes that describe subtopics of the
        !           370: node's topic.  The names of these child nodes, if any, are listed in a
        !           371: @dfn{menu} within the parent node; this allows certain Info commands to
        !           372: be used to move to one of the child nodes.  Each child node records the
        !           373: parent node name, as its `Up' pointer.  Thus, if a node were at the logical
        !           374: level of a `chapter', its child nodes would be `sections'; likewise,
        !           375: the child nodes of a section would be subsections.
        !           376: 
        !           377: The root of the tree is the top node of the file, through which users
        !           378: enter the file from the Info directory.  By convention, this node is always
        !           379: called @samp{Top}.  This node normally contains just a brief summary of the
        !           380: file's purpose, and a large menu through which the rest of the file is
        !           381: reached.
        !           382: 
        !           383: Generally you enter the Info file from the top; then you can either traverse
        !           384: the file systematically by going from node to node or you can search large
        !           385: menus that correspond to indices and go directly to the node that has the
        !           386: information you want.
        !           387: 
        !           388: If you want to read through an Info file in sequence, as if it were a
        !           389: printed manual, you can get the whole file with the advanced Info command
        !           390: @kbd{g *}.  (@inforef{Expert, info, info}.)@refill
        !           391: 
        !           392: All the children of any one parent are linked together in a bidirectional
        !           393: chain of `Next' and `Previous' pointers.  This means that all the nodes
        !           394: that are logically parallel to sections within a chapter are all linked
        !           395: together.  Normally the order in this chain is the same as the order of the
        !           396: children in the parent's menu.  The last child has no `Next' pointer, and
        !           397: the first child normally has the parent as its `Previous' pointer (as well
        !           398: as its `Up' pointer, of course).
        !           399: 
        !           400: Structuring the nodes in a tree is a matter of convention, not a
        !           401: requirement.  In fact, the `Up', `Previous' and `Next' pointers of a node
        !           402: can point to any other nodes, and the menu can contain any other nodes.
        !           403: The structure of nodes can be any directed graph.  But it is usually more
        !           404: comprehensible to make it a tree.  Info provides another kind of pointer
        !           405: between nodes, called a reference, that can be sprinkled through the text
        !           406: of a node.  This is usually the best way to represent links that do not fit
        !           407: the tree structure.
        !           408: 
        !           409: Most often the nodes fall into a strict tree structure that corresponds to
        !           410: the structure of chapters and sections in the printed
        !           411: manual.  But there are times when this is not right for the material being
        !           412: discussed.  Therefore, Texinfo uses separate commands to specify the node
        !           413: structure of the Info file and the section structure of the printed manual.
        !           414: Also, Texinfo requires that you specify menus explicitly, rather than
        !           415: generate them automatically based on an assumed tree structure.
        !           416: 
        !           417: @node     Printed Manual, Conventions, Info File, Top
        !           418: @comment  node-name,  next,  previous,  up
        !           419: @section Characteristics of the Printed Manual
        !           420: @cindex Printed manual characteristics
        !           421: @cindex Characteristics, printed manual 
        !           422: 
        !           423: A Texinfo file can be formatted and typeset as a printed manual.  The
        !           424: printed manual will be the same as any other book; it will have a title
        !           425: page, copyright page, table of contents, and preface as you would expect,
        !           426: as well as chapters, numbered or unnumbered sections and subsections, not
        !           427: to mention page headers, cross references and indices.
        !           428: 
        !           429: Texinfo can be used for writing a book without ever having the intention of
        !           430: converting it into on-line help.  Texinfo can be used for writing a novel;
        !           431: and it can even be used to write a memo, although this application is not
        !           432: recommended since electronic mail is so much easier.
        !           433: 
        !           434: Texinfo uses the formatting language called @TeX{} for typesetting.  A file
        !           435: called @file{texinfo.tex} contains information (definitions or
        !           436: @dfn{macros}) that @TeX{} uses when it typesets a Texinfo file.  (The
        !           437: macros tell @TeX{} how to convert the Texinfo @@-commands to @TeX{}
        !           438: commands which @TeX{} can then process to create the typeset document.)
        !           439: @file{texinfo.tex} contains the specifications for printing a document,
        !           440: either with 7 inch by 9.25 inch pages or with 8.5 inch by 11 inch pages.
        !           441: (This is 178 mm by 235 mm or else 216 mm by 280 mm.) Also, by changing the
        !           442: parameters in @file{texinfo.tex} you can easily change the size of the
        !           443: printed document.  In addition, you can readily change the style in which
        !           444: the printed document is formatted; for example, you can change the sizes and
        !           445: fonts used, the amount of indentation for each paragraph, the degree to
        !           446: which words are hyphenated, and the like.  By changing the specifications,
        !           447: you can make a book look dignified, old and serious, or light-hearted,
        !           448: young and cheery.@refill
        !           449: 
        !           450: @TeX{} is very powerful and has a great many features.  Because a Texinfo
        !           451: file must be able to present information both on a character-only terminal
        !           452: in Info form and in a typeset book, the commands that Texinfo supports are
        !           453: necessarily limited.
        !           454: 
        !           455: 
        !           456: @node   Conventions, Short Sample,  Printed Manual, Overview
        !           457: @comment  node-name,  next,  previous,  up
        !           458: @section General Syntactic Conventions
        !           459: @cindex  General syntactic conventions
        !           460: @cindex  Syntactic conventions
        !           461: @cindex  Conventions, syntactic
        !           462: 
        !           463: 
        !           464: Texinfo files contain a strictly limited set of constructs.  The strict
        !           465: limits make it possible for Texinfo files to be understood both by @TeX{}
        !           466: and by the code which converts them into Info files.
        !           467: 
        !           468: All ASCII printing characters except @samp{@@}, @samp{@{} and @samp{@}} can
        !           469: appear in body text in a Texinfo file and stand for themselves.  @samp{@@}
        !           470: is the escape character which introduces commands.  @samp{@{} and @samp{@}}
        !           471: should be used only to surround arguments to certain commands.  @samp{@{}
        !           472: and @samp{@}} appearing anywhere else will be treated by @TeX{} as a
        !           473: grouping but treated by the code that produces an Info file as themselves;
        !           474: this inconsistency is undesirable, so don't let it occur.  To put one of
        !           475: these special characters into the document, put an @samp{@@} character in
        !           476: front of it.  For example, you would insert @samp{@@@@}, @samp{@@@{}, and
        !           477: @samp{@@@}}.@refill
        !           478: 
        !           479: It is customary in @TeX{} to use doubled single-quote characters to begin
        !           480: and end quotations, @samp{``} like these @samp{''}.  This convention should
        !           481: be followed in Texinfo files.  Also, three hyphens in a row, @samp{---},
        !           482: are used for a dash---like this.  In @TeX{}, a single or even a double
        !           483: hyphen produces a dash that is shorter than you want.@refill
        !           484: 
        !           485: @comment Remove for version 19
        !           486: 
        !           487: @TeX{} ignores the line-breaks in the input text, except for blank lines,
        !           488: which separate paragraphs.  Info generally preserves the line breaks that
        !           489: are present in the input file.  Therefore, break the lines in the Texinfo
        !           490: file the way you want them to appear in the output Info file, and let
        !           491: @TeX{} take care of itself.
        !           492: 
        !           493: Since Info does not normally refill paragraphs when it processes them, a
        !           494: line with @@-commands in it will sometimes look bad after Info has run on
        !           495: it.  To cause Info to refill the paragraph after finishing with the other
        !           496: processing, you need to put the command @code{@@refill} at the end of the
        !           497: paragraph. (@xref{Refilling & Noindent, , Refilling paragraphs and
        !           498: Preventing indentation}.)@refill
        !           499: 
        !           500: To prevent a paragraph from being indented in the printed manual, put the
        !           501: command @code{@@noindent} on a line by itself before the start of the text
        !           502: that should not be indented.
        !           503: 
        !           504: If you mark off a region of the Texinfo file with the @code{@@iftex} and
        !           505: @code{@@end iftex} commands so that the region will appear only in the
        !           506: printed copy, you can use @TeX{} commands that cannot be used in the Info
        !           507: file.
        !           508: 
        !           509: In order to be made into a printed manual, a Texinfo file @strong{must}
        !           510: begin with lines that looks like
        !           511: 
        !           512: @example
        !           513: \input texinfo   @@c -*-texinfo-*-
        !           514: @@setfilename @var{info-file-name}
        !           515: @@settitle @var{Name of Manual}
        !           516: @end example
        !           517: 
        !           518: @noindent
        !           519: The @samp{\input texinfo} line tells @TeX{} to use the @file{texinfo.tex}
        !           520: file.  This line is usually followed by a start-of-header line (not shown
        !           521: here) and then by the @samp{@@setfilename @var{info-file-name}} and
        !           522: @samp{@@settitle @var{Name of Manual}} lines.  These two lines are needed
        !           523: to provide a name for the Info file and to specify the name used on the
        !           524: left-hand page headers of the printed manual.@refill
        !           525: 
        !           526: The two lines that contain the @code{@@setfilename} and @code{@@settitle}
        !           527: commands usually are sandwiched between the start-of-header line and the
        !           528: end-of-header line. (@xref{Start-of-Header}, for more information.)  The
        !           529: start-of-header and end-of-header lines are needed if you are going to run
        !           530: @TeX{} or Info on just part of a file.@refill
        !           531: 
        !           532: @node  Short Sample,      , Conventions, Overview
        !           533: @comment  node-name,  next,  previous,  up
        !           534: @section A Short Sample Texinfo File
        !           535: @cindex Sample texinfo file
        !           536: 
        !           537: A Texinfo file looks like the following, which is a complete but very short
        !           538: Texinfo file.  The @code{@@comment} command introduces comments that will
        !           539: not appear in either the Info file or the printed manual; they are for the
        !           540: person who reads the Texinfo file.
        !           541: 
        !           542: The first part of the file, from @samp{\input texinfo} through to
        !           543: @samp{@@end titlepage}, looks more intimidating than it is.  Most of the
        !           544: material is standard boilerplate; when you write a manual, you just put in
        !           545: the name of your own manual in this section.@refill
        !           546: 
        !           547: All the commands that tell @TeX{} how to typeset the printed manual and
        !           548: tell @code{texinfo-format-buffer} how to create an Info file are preceded
        !           549: by @samp{@@}; thus, @code{@@node} indicates a node and @code{@@chapter}
        !           550: indicates the start of a chapter.
        !           551: 
        !           552: @example
        !           553: \input texinfo   @@c -*-texinfo-*-
        !           554: @@setfilename name-of-texinfo-file
        !           555: @@settitle Name of Manual
        !           556: @@setchapternewpage odd
        !           557: 
        !           558: @@ifinfo
        !           559: @@comment The following line inserts the copyright notice 
        !           560: @@comment into the Info file.
        !           561: Copyright @@copyright@{@} 1988 Free Software Foundation, Inc.
        !           562: @@end ifinfo
        !           563: 
        !           564: @@comment The titlepage section does not appear in the Info file.
        !           565: @@titlepage
        !           566: @@sp 10
        !           567: @@comment The title is printed in a large font.
        !           568: @@center @@titlefont@{Sample Title@}
        !           569: 
        !           570: @@comment  The following two commands start the copyright page
        !           571: @@comment  for the printed manual.  This will not appear in the Info file.
        !           572: @@page
        !           573: @@vskip 0pt plus 1filll
        !           574: Copyright @@copyright@{@} year copyright-owner
        !           575: @@end titlepage
        !           576: 
        !           577: @@comment The Top node contains the master menu for the Info file.
        !           578: @@comment This appears only in the Info file, not the printed manual.
        !           579: 
        !           580: @@node    Top,       First Chapter, (dir),    (dir)
        !           581: @@comment node-name, next,          previous, up
        !           582: 
        !           583: @@menu
        !           584: * First Chapter::    The first chapter is the 
        !           585:                      only chapter in this sample.
        !           586: @@end menu
        !           587: 
        !           588: @@node     First Chapter,     , Top,      Top
        !           589: @@comment  node-name,     next, previous, up
        !           590: @@chapter First Chapter
        !           591: @@cindex Reference to First Chapter
        !           592: 
        !           593: This is the contents of the first chapter. 
        !           594: 
        !           595: Here is a numbered list.
        !           596: 
        !           597: @@enumerate
        !           598: @@item
        !           599: This is the first item.
        !           600: 
        !           601: @@item
        !           602: This is the second item.
        !           603: @@end enumerate
        !           604: 
        !           605: The @@kbd@{M-x texinfo-format-buffer@} command transforms a Texinfo file
        !           606: like this into an Info file; and @@TeX@{@} typesets it for a printed
        !           607: manual.
        !           608: 
        !           609: @@node    Concept Index,    ,  Previous Node, Top
        !           610: @@comment node-name,    next,  previous,      up
        !           611: @@unnumbered Concept Index
        !           612: 
        !           613: @@printindex cp
        !           614: 
        !           615: @@contents
        !           616: @@bye
        !           617: @end example
        !           618: 
        !           619: Here is what the contents of the first chapter of the sample look like:
        !           620: 
        !           621: @quotation
        !           622: 
        !           623: This is the contents of the first chapter. 
        !           624: 
        !           625: Here is a numbered list.
        !           626: 
        !           627: @enumerate
        !           628: @item
        !           629: This is the first item.
        !           630: 
        !           631: @item
        !           632: This is the second item.
        !           633: @end enumerate
        !           634: 
        !           635: The @kbd{M-x texinfo-format-buffer} command transforms a Texinfo file like
        !           636: this into an Info file; and @TeX{} typesets it for a printed manual.
        !           637: @end quotation
        !           638: 
        !           639: @node  Texinfo Mode, Beginning a File,  Overview, Top
        !           640: @comment  node-name,  next,  previous,  up
        !           641: @chapter Using Texinfo Mode
        !           642: @cindex Texinfo mode
        !           643: @cindex Mode, using Texinfo
        !           644: @cindex GNU Emacs
        !           645: @cindex Emacs
        !           646: 
        !           647: In GNU Emacs, Texinfo mode is a major mode for editing Texinfo files.
        !           648: This means that Emacs has commands and features especially designed for
        !           649: working with Texinfo files.  Like all other Emacs features, you can
        !           650: customize or enhance these as you wish.  In particular, the keybindings are
        !           651: very easy to change.  The keybindings described here are the default or
        !           652: standard ones.
        !           653: 
        !           654: The major features of Texinfo mode are:
        !           655: 
        !           656: @itemize @bullet
        !           657: @item 
        !           658: Paragraph filling control.
        !           659: 
        !           660: @item 
        !           661: A command to show the structure of the file.
        !           662: 
        !           663: @item 
        !           664: Pre-defined keystroke commands to insert commonly used strings of text.
        !           665: 
        !           666: @item 
        !           667: Formatting a part of a file for Info, rather than the whole file.
        !           668: @end itemize
        !           669: 
        !           670: In general, in Texinfo mode, the GNU Emacs editing commands are like those
        !           671: in text-mode.  The major difference is that the paragraph separation
        !           672: variable and syntax table are set up so expression commands skip Texinfo
        !           673: bracket groups.  This means, for example, that the @kbd{M-q}
        !           674: (@code{fill-paragraph}) command will refill a paragraph but not the
        !           675: @@-command on a line adjacent to it.@refill
        !           676: 
        !           677: By convention, the Texinfo file name shall end with the extension
        !           678: @file{.texinfo} so that Emacs knows to use Texinfo mode for editing it.
        !           679: 
        !           680: @menu
        !           681: * Info on a Region::           Formatting part of a file for Info.
        !           682: * Showing the Structure::      Showing the structure of a file.
        !           683: * Inserting::                  Inserting frequently used commands. 
        !           684: @end menu
        !           685: 
        !           686: @node Info on a Region, Showing the Structure, Texinfo Mode, Texinfo Mode
        !           687: @comment  node-name,  next,  previous,  up
        !           688: @section Formatting a Region for Info
        !           689: @cindex  Running Info on a region
        !           690: @cindex  Info, formatting on a region
        !           691: @findex texinfo-format-region
        !           692: 
        !           693: To see what part of a Texinfo file will look like after it has been
        !           694: transformed into an Info file, use the command @kbd{C-c C-f}
        !           695: (@code{texinfo-format-region}).  This command formats the current region of
        !           696: the Texinfo file for Info and writes it to a temporary buffer called
        !           697: @samp{*Info Region*}.@refill
        !           698: 
        !           699: For @code{texinfo-format-region} to work, the file @strong{must} include a
        !           700: line that has @code{@@setfilename} in its header.@refill
        !           701: 
        !           702: The command is:
        !           703: 
        !           704: @table @kbd
        !           705: @item  C-c C-f 
        !           706: texinfo-format-region
        !           707: @end table
        !           708: 
        !           709: @node Showing the Structure, Inserting, Info on a Region, Texinfo Mode     
        !           710: @comment  node-name,  next,  previous,  up
        !           711: @section Showing the Structure of a File
        !           712: @cindex  Showing the structure of a file
        !           713: @cindex Structure of a file, showing it
        !           714: @cindex File structure, showing it
        !           715: @cindex Texinfo file structure, showing it
        !           716: 
        !           717: You can show the structure of a Texinfo file by using the @kbd{C-c C-s}
        !           718: command (@code{texinfo-show-structure}).  This command shows the structure
        !           719: of a Texinfo file by listing the lines with the @@-commands for
        !           720: @code{@@node}, @code{@@chapter}, @code{@@section} and the like.  These
        !           721: lines are displayed in another window called the @samp{*Occur*} window.  In
        !           722: that window, you can position the cursor over one of the lines and use the
        !           723: @kbd{C-c C-c} command (@code{occur-mode-goto-occurrence}), to jump to the
        !           724: corresponding spot in the Texinfo file.@refill
        !           725: 
        !           726: The two commands are:
        !           727: 
        !           728: @table @kbd
        !           729: @item  C-c C-s 
        !           730: texinfo-show-structure
        !           731: 
        !           732: @item  C-c C-c
        !           733: occur-mode-goto-occurrence
        !           734: @end table
        !           735: 
        !           736: Often, when you are working on a manual, you will be interested only in the
        !           737: structure of the current chapter.  In this case, you can mark off the
        !           738: region of the buffer that you are interested in with the @kbd{C-x n}
        !           739: (@code{narrow-to-region}) command and @code{texinfo-show-structure} will
        !           740: work on only that region.  (To see the whole buffer again, use @kbd{C-x w}
        !           741: (@code{widen}).)@refill
        !           742: 
        !           743: @node     Inserting, , Showing the Structure, Texinfo Mode
        !           744: @comment  node-name,  next,  previous,  up
        !           745: @section Inserting Frequently Used Commands
        !           746: @cindex Inserting frequently used commands
        !           747: @cindex Frequently used commands, inserting them
        !           748: @cindex Commands, inserting them
        !           749: 
        !           750: Texinfo mode provides commands that insert various frequently used
        !           751: @@-commands into the buffer.  You can use these commands to save
        !           752: keystrokes.  And you can insert balanced curly braces with the @kbd{M-@{}
        !           753: command, (@code{texinfo-insert-braces}) and later use the @kbd{M-@}}
        !           754: command (@code{up-list}) to move forward past the closing brace.@refill
        !           755: 
        !           756: The special commands are invoked by typing @kbd{C-c} twice and then the
        !           757: first letter of the @@-command.
        !           758: 
        !           759: @table @kbd
        !           760: @item  C-c C-c c
        !           761: texinfo-insert-@@code
        !           762: 
        !           763: @item  C-c C-c d 
        !           764: texinfo-insert-@@dfn
        !           765: 
        !           766: @item  C-c C-c e 
        !           767: texinfo-insert-@@end
        !           768: 
        !           769: @item  C-c C-c i 
        !           770: texinfo-insert-@@item
        !           771: 
        !           772: @item  C-c C-c n 
        !           773: texinfo-insert-@@node
        !           774: 
        !           775: @item  C-c C-c s
        !           776: texinfo-insert-@@samp
        !           777: 
        !           778: @item  C-c C-c v
        !           779: texinfo-insert-@@var
        !           780: 
        !           781: @item M-@{ 
        !           782: texinfo-insert-braces
        !           783: 
        !           784: @item M-@} 
        !           785: up-list
        !           786: @end table
        !           787: 
        !           788: This list was generated by analyzing the frequency with which commands were
        !           789: used in the @cite{GNU Emacs Manual} and the @cite{GDB Manual}.  If you wish
        !           790: to add your own insert commands, you can bind a keyboard macro to a key, use
        !           791: abbreviations or extend the code in @file{texinfo.el}.
        !           792: 
        !           793: @node Beginning a File, Ending a File, Texinfo Mode, Top
        !           794: @comment  node-name,  next,  previous,  up
        !           795: @chapter Beginning a Texinfo File
        !           796: @cindex Beginning a Texinfo file
        !           797: @cindex Texinfo file beginning
        !           798: @cindex File beginning
        !           799: 
        !           800: Various pieces of information have to be provided to Texinfo at the
        !           801: beginning of a Texinfo file, such as the name of the file, the title
        !           802: of the document and the like.  Generally, the beginning of a Texinfo file
        !           803: has four parts:
        !           804: 
        !           805: @enumerate
        !           806: @item 
        !           807: The header, marked by start-of-header and end-of-header lines, that
        !           808: includes the commands for naming the Texinfo file and telling @TeX{} what
        !           809: definitions' file to use when processing the file.
        !           810: 
        !           811: @item 
        !           812: A section, marked by the @code{@@ifinfo} and @code{@@end ifinfo} commands,
        !           813: that contains a short statement of what the file is about, the copyright
        !           814: notice and copying permissions. This section appears only in the Info file.
        !           815: 
        !           816: @item 
        !           817: A section, marked by the @code{@@titlepage} and @code{@@end titlepage}
        !           818: commands, that contains the title page, the copyright page and copying
        !           819: permissions.  This section appears only in the printed manual.
        !           820: 
        !           821: @item
        !           822: The @samp{Top} node that contains an extensive menu for the whole Info
        !           823: file.  The contents of this node only appear in the Info file.
        !           824: @end enumerate
        !           825: 
        !           826: If the Texinfo file has a section containing licensing information and a
        !           827: warranty disclaimer, that section usually follows the @samp{Top} node.  The
        !           828: licensing section will be followed by a preface or else by the first
        !           829: chapter of the manual.
        !           830: 
        !           831: Since the copyright notice and the copying permissions are in sections that
        !           832: appear only in the Info file or only in the printed manual, this
        !           833: information has to be repeated twice.
        !           834: 
        !           835: The following sample shows what is needed.
        !           836: 
        !           837: @example
        !           838: \input texinfo   @@c -*-texinfo-*-
        !           839: @@comment %**start of header (This is for running Texinfo on a region.)
        !           840: @@setfilename name-of-texinfo-file
        !           841: @@settitle Name of Manual
        !           842: @@setchapternewpage odd
        !           843: @@comment %**end of header (This is for running Texinfo on a region.)
        !           844: 
        !           845: @@ifinfo
        !           846: This file documents @dots{}
        !           847: 
        !           848: Copyright @@copyright@{@} year  copyright-owner
        !           849: 
        !           850: Permission is granted to @dots{}
        !           851: @@end ifinfo
        !           852: 
        !           853: @@titlepage
        !           854: @@sp 10
        !           855: @@center @@titlefont@{Name of Manual When Printed@}
        !           856: @@sp 2
        !           857: @@center Subtitle, If Any
        !           858: @@sp 2
        !           859: @@center Author
        !           860: 
        !           861: @@comment  The following two commands start the copyright page.
        !           862: @@page
        !           863: @@vskip 0pt plus 1filll
        !           864: Copyright @@copyright@{@} year copyright-owner
        !           865: 
        !           866: Published by @dots{}
        !           867: 
        !           868: Permission is granted to @dots{}
        !           869: @@end titlepage
        !           870: 
        !           871: 
        !           872: @@node Top, Overview, (dir), (dir)
        !           873: 
        !           874: @@menu
        !           875: * First Chapter::              The first chapter is usually an overview.
        !           876: * Second Chapter::             @dots{}
        !           877:   <many more menu items here>
        !           878: @@end menu
        !           879: 
        !           880: @@node    First Chapter, Second Chapter, top,      top
        !           881: @@comment node-name,     next,           previous, up
        !           882: @@chapter First Chapter
        !           883: @@cindex Reference to First Chapter
        !           884: @end example
        !           885: 
        !           886: @menu
        !           887: * Header::                     Necessary first lines.
        !           888: * Permissions for Info::       Copyright notice and copying permissions.
        !           889: * Titlepage & Copyright Page:: Printed title and copyright pages.
        !           890: * Top Node::                   The top node and master menu.
        !           891: * License and Distribution::   The importance of the license. 
        !           892: @end menu
        !           893: 
        !           894: @node Header, Permissions for Info , Beginning a File, Beginning a File
        !           895: @comment  node-name,  next,  previous,  up
        !           896: @section The Texinfo File Header
        !           897: @cindex Header for Texinfo files
        !           898: @cindex Texinfo file header
        !           899: 
        !           900: Texinfo files start with at least three lines that provide Info and @TeX{}
        !           901: with necessary information.  If you want to run @TeX{} on just a part of
        !           902: the Texinfo File, you also have to mark these heading lines with
        !           903: start-of-header and end-of-header lines.@refill
        !           904: 
        !           905: @menu
        !           906: * First Line::                 The first line of a Texinfo file.
        !           907: * Start-of-Header::            Identifying the start of the header.
        !           908: * Setfilename::                        Specifying the name of the Info file.
        !           909: * Settitle::                   Specifying the title used by the headings.
        !           910: * Setchapternewpage::          Starting chapters on odd numbered pages.
        !           911: * End-of-Header::              Identifying the end of the header.
        !           912: @end menu
        !           913: 
        !           914: @node     First Line, Start-of-Header, Header, Header
        !           915: @comment  node-name,  next,  previous,  up
        !           916: @subsection The First Line of a Texinfo File
        !           917: @cindex First line of a Texinfo file
        !           918: @cindex Beginning line of a Texinfo file
        !           919: 
        !           920: 
        !           921: Every Texinfo file that is to be the top-level input to @TeX{} must begin
        !           922: with a line that looks like this:
        !           923: 
        !           924: @example
        !           925: \input texinfo   @@c -*-texinfo-*-
        !           926: @end example
        !           927: 
        !           928: @noindent
        !           929: The line serves two functions:
        !           930: 
        !           931: @enumerate
        !           932: @item 
        !           933: When the file is processed by @TeX{}, it loads the macros needed for
        !           934: processing a Texinfo file.  These are in a file called @file{texinfo.tex}
        !           935: which is usually located in the @file{/usr/lib/tex/macros} directory.@refill
        !           936: 
        !           937: @item 
        !           938: When the file is edited in GNU Emacs, it causes Texinfo mode to be used.@refill
        !           939: @end enumerate
        !           940: 
        !           941: The @samp{\input texinfo} line should be followed by the start-of-header
        !           942: line.  This makes it possible for the command for running @TeX{} on a part
        !           943: of the Texinfo file (@code{texinfo-hardcopy-region}) to operate.  The
        !           944: reason for this is that the @code{texinfo-hardcopy-region} command will
        !           945: look on the line preceding the start-of-header line for the @samp{\input
        !           946: texinfo} line.
        !           947: 
        !           948: @node Start-of-Header, Setfilename, First Line, Header
        !           949: @comment  node-name,  next,  previous,  up
        !           950: @subsection @samp{start-of-header}
        !           951: @cindex start-of-header
        !           952: @findex start-of-header
        !           953: 
        !           954: The start-of-header line should immediately follow the first line of the
        !           955: Texinfo file.  
        !           956: 
        !           957: @ifinfo
        !           958: The @code{texinfo-hardcopy-region} command will look at the
        !           959: line preceding the start-of-header line to find the @samp{\input
        !           960: texinfo} line.
        !           961: @end ifinfo
        !           962: 
        !           963: Usually, the start-of-header line looks like this:
        !           964: 
        !           965: @example
        !           966: @@comment %**start of header (This is for running Texinfo on a region.)
        !           967: @end example
        !           968: 
        !           969: The reason for the odd string of characters (@samp{%**}) is so that the
        !           970: @code{texinfo-hardcopy-region} command does not accidently find something
        !           971: that it shouldn't when it is looking for the header.
        !           972: 
        !           973: In the default configuration, the phrase @samp{(This is for running Texinfo
        !           974: on a region.)} is not needed and is just included to make it easier for
        !           975: someone reading the Texinfo file.
        !           976: 
        !           977: The start-of-header line and the end-of-header line are Texinfo mode
        !           978: variables that you can change.
        !           979: 
        !           980: @node     Setfilename, Settitle, Start-of-Header, Header
        !           981: @comment  node-name,  next,  previous,  up
        !           982: @subsection @@setfilename
        !           983: @cindex Setfilename command
        !           984: @cindex Info file requirement for @@setfilename
        !           985: @findex setfilename
        !           986: 
        !           987: In order to be made into an Info file, a Texinfo file must contain a line
        !           988: that looks like this:
        !           989: @example
        !           990: @@setfilename @var{info-file-name}
        !           991: @end example
        !           992: 
        !           993: @noindent
        !           994: This line specifies the name of the Info file to be generated.  In fact, there
        !           995: can be other things in the file before this line, but they are ignored in
        !           996: the generation of an Info file.  The @code{@@setfilename} line is ignored
        !           997: when a printed manual is generated.
        !           998:  
        !           999: @node Settitle, Setchapternewpage, Setfilename, Header
        !          1000: @comment  node-name,  next,  previous,  up
        !          1001: @subsection @@settitle
        !          1002: @findex settitle
        !          1003: 
        !          1004: In order to be made into a printed manual file, a Texinfo file must contain
        !          1005: a line that specifies the title of the manual.  Texinfo uses this
        !          1006: information during printing to put the title on every other page as a
        !          1007: heading; Texinfo puts the current chapter title on the other pages.
        !          1008: Texinfo can find the name of the chapter title from the information
        !          1009: provided by the @code{@@chapter} command, but you must tell it the manual
        !          1010: title with @code{@@settitle}:
        !          1011: 
        !          1012: @example
        !          1013: @@settitle @var{Title}
        !          1014: @end example
        !          1015: 
        !          1016: @noindent
        !          1017: This command, on a line by itself, causes @var{title} to be used for the
        !          1018: headings.  Usually, you will use the same words for the title on the title
        !          1019: page and for the title specified by this command for the headings, but the
        !          1020: two could be different.  For example, the title on the title page may be
        !          1021: longer than the title specified by the @code{settitle} command.
        !          1022: 
        !          1023: The @code{@@settitle} command should precede everything that generates
        !          1024: actual output.
        !          1025: 
        !          1026: @node Setchapternewpage, End-of-Header, Settitle, Header
        !          1027: @comment  node-name,  next,  previous,  up
        !          1028: @subsection @@setchapternewpage
        !          1029: @cindex Starting chapters
        !          1030: @cindex Pages, starting odd
        !          1031: @findex setchapternewpage
        !          1032: 
        !          1033: Conventionally, chapters start on the page on the right hand side of a
        !          1034: book; and the right hand page has an odd number.  To make sure that Texinfo
        !          1035: does this, you can use the command @code{@@setchapternewpage}.  For
        !          1036: example, to cause each chapter to start on a fresh odd-numbered page:
        !          1037: 
        !          1038: @example
        !          1039: @@setchapternewpage odd
        !          1040: @end example
        !          1041: 
        !          1042: Page numbering is turned on by the @code{@@end titlepage} command, so the
        !          1043: @code{@@setchapternewpage} should come before it.  Although it can occur
        !          1044: anywhere in the beginning of the file, it is most convenient to put it in
        !          1045: this location.
        !          1046: 
        !          1047: 
        !          1048: @node End-of-Header, , Setchapternewpage, Header
        !          1049: @comment  node-name,  next,  previous,  up
        !          1050: @subsection  @samp{end-of-header}
        !          1051: @cindex end-of-header
        !          1052: 
        !          1053: The end-of-header line should follow the line containing the
        !          1054: @code{@@setchapternewpage} command.
        !          1055: 
        !          1056: Usually, the end-of-header line looks like this:
        !          1057: 
        !          1058: @example
        !          1059: @@comment %**end of header (This is for running Texinfo on a region.)
        !          1060: @end example
        !          1061: 
        !          1062: @ifinfo
        !          1063: In the default configuration, the phrase @samp{(This is for running Texinfo
        !          1064: on a region.)} is not needed and is just included to make it easier for
        !          1065: someone reading the Texinfo file.
        !          1066: 
        !          1067: The reason for the odd string of characters (`%**') is so that the
        !          1068: @code{texinfo-hardcopy-region} command does not accidently find something
        !          1069: that it shouldn't when it is looking for the header.
        !          1070: 
        !          1071: The start-of-header line and the end-of-header line are Texinfo mode
        !          1072: variables that you can change.
        !          1073: @end ifinfo
        !          1074: 
        !          1075: @iftex
        !          1076: Also, @pxref{Start-of-Header}
        !          1077: @end iftex
        !          1078: 
        !          1079: @node Permissions for Info,  Titlepage & Copyright Page, Header, Beginning a File
        !          1080: @comment  node-name,  next,  previous,  up
        !          1081: @section Copying Permissions for Info
        !          1082: 
        !          1083: Since the title page and the copyright page appear only in the printed copy
        !          1084: of the manual, the same information has to inserted in a section that
        !          1085: appears only in the Info file.  This section usually contains a brief
        !          1086: description of the contents of the Info file, a copyright notice and
        !          1087: copying permissions.
        !          1088: 
        !          1089: The copyright notice should read:
        !          1090: 
        !          1091: @example
        !          1092: Copyright @var{year} @var{copyright-owner}
        !          1093: @end example
        !          1094: 
        !          1095: @noindent
        !          1096: and be put on a line by itself.
        !          1097: 
        !          1098: Standard text for the copyright permissions is contained in the appendix.
        !          1099: @xref{Ifinfo Permissions}, for the complete text.
        !          1100: 
        !          1101: @node Titlepage & Copyright Page, Top Node, Permissions for Info, Beginning a File
        !          1102: @comment  node-name,  next,  previous,  up
        !          1103: @section The Title and Copyright Pages
        !          1104: @cindex Titlepage
        !          1105: @cindex Copyright page
        !          1106: 
        !          1107: The title and copyright pages appear in the printed manual, but not in the
        !          1108: Info file.  Because of this, it is possible to use a couple of slightly
        !          1109: obscure @TeX{} typesetting commands that could not be used in an Info file.
        !          1110: In addition, this part of the beginning of a Texinfo file contains the text
        !          1111: of the copying permissions that will appear in the printed manual.
        !          1112: 
        !          1113: @menu
        !          1114: * Titlepage::                  Creating a title page for the printed manual.
        !          1115: * Center::                     Centering a line.
        !          1116: * Copyright & Printed Permissions::    Inserting the copyright notice 
        !          1117:                                        and printed permissions.
        !          1118: @end menu
        !          1119: 
        !          1120: @node     Titlepage, Center , Setchapternewpage, Titlepage & Copyright Page
        !          1121: @comment  node-name,  next,  previous,  up
        !          1122: @subsection @@titlepage
        !          1123: @cindex Titlepage
        !          1124: @findex titlepage
        !          1125: 
        !          1126: Start the material for the title page and following copyright page with
        !          1127: @code{@@titlepage} on a line by itself and end it with @code{@@end
        !          1128: titlepage} on a line by itself.  The title page and copyright page material
        !          1129: appears only in the printed manual, not in the Info file.  
        !          1130: 
        !          1131: Also, the @code{@@end titlepage} command starts a new page and turns on
        !          1132: page numbering (generation of headings).  Therefore, all the material that
        !          1133: you want to appear on unnumbered pages should be put between the
        !          1134: @code{@@titlepage} and @code{@@end titlepage} commands.  By using the
        !          1135: @code{@@page} command you can force a page break within the region
        !          1136: delineated by the @code{@@titlepage} and @code{@@end titlepage} commands
        !          1137: and create more than one unnumbered page.  This is how the copyright page
        !          1138: is produced.@refill
        !          1139: 
        !          1140: @findex titlefont
        !          1141: To select a large font suitable for the title itself, you can use the
        !          1142: command @code{@@titlefont}.  For example:
        !          1143: 
        !          1144: @example
        !          1145: @@center @@titlefont@{Texinfo@}
        !          1146: @end example
        !          1147: 
        !          1148: Also, you can use @code{@@sp} commands to adjust vertical spacing.  
        !          1149: For example:
        !          1150: 
        !          1151: @example
        !          1152: @@sp 2
        !          1153: @end example
        !          1154: 
        !          1155: @noindent
        !          1156: In the sample, the spacing was chosen to fit an 8 1/2 by 11 inch manual.
        !          1157: 
        !          1158: @node Center, Titlepage, Copyright & Printed Permissions, Titlepage & Copyright Page
        !          1159: @comment  node-name,  next,  previous,  up
        !          1160: @subsection @@center
        !          1161: @cindex Centering a line
        !          1162: @findex center
        !          1163: 
        !          1164: A line containing @code{@@center @var{text}} produces a line of output
        !          1165: containing @var{text}, centered between the margins.@refill
        !          1166: 
        !          1167: 
        !          1168: 
        !          1169: @node     Copyright & Printed Permissions, Center, , Titlepage & Copyright Page
        !          1170: @comment  node-name,  next,  previous,  up
        !          1171: @subsection The Copyright Page and Printed Permissions
        !          1172: @cindex Copyright
        !          1173: @cindex Printed permissions
        !          1174: @cindex Permissions, printed
        !          1175: 
        !          1176: By international treaty, the copyright notice for a book should either be
        !          1177: on the title page or on the back of the title page.  Other locations in a
        !          1178: book are not official and do not provide copyright protection.  The
        !          1179: copyright notice should include the year followed by the name of the person
        !          1180: or organization who has the copyright.
        !          1181: 
        !          1182: When the copyright notice is on the back of the title page, the page is not
        !          1183: numbered.  Therefore, in Texinfo, the information on the copyright page
        !          1184: should be within the region delineated by the @code{@@titlepage} and
        !          1185: @code{@@end titlepage} commands.@refill
        !          1186: 
        !          1187: @findex vskip
        !          1188: @findex filll
        !          1189: To cause a page break, the @code{@@page} command is used.  In the sample,
        !          1190: the @code{@@page} command is followed by the somewhat mysterious line that
        !          1191: reads: @samp{@@vskip 0pt plus 1filll}.  This is a line that uses @TeX{}
        !          1192: commands to push the copyright notice and the other text on the copyright
        !          1193: page towards the bottom of the page.  The @code{@@vskip} command means to
        !          1194: skip lines and put in white space.  The @samp{0pt plus 1filll} means to put
        !          1195: in zero points of mandatory white space, and as much optional white space
        !          1196: as needed.  Note the use of three @samp{l}s in the word @samp{filll}; this
        !          1197: is the correct use in @TeX{}.@refill
        !          1198: 
        !          1199: @findex copyright
        !          1200: The @code{@@copyright@{@}} command generates a @samp{c} inside a circle.
        !          1201: The copyright notice itself has the following legally defined sequence: 
        !          1202: 
        !          1203: @example
        !          1204: Copyright @copyright{} @var{year} @var{copyright-owner}
        !          1205: @end example
        !          1206: 
        !          1207: It is customary to put information on how to get a manual after the
        !          1208: copyright notice (the address of the Free Software Foundation, for example)
        !          1209: and the permissions.  
        !          1210: 
        !          1211: Note that the permissions have to be repeated here as well as in the
        !          1212: `ifinfo' section that immediately follows the header since this section
        !          1213: appears only in the printed manual and the `ifinfo' section appears only in
        !          1214: the Info file.
        !          1215: 
        !          1216: Standard text for the permissions appears in the appendix.  
        !          1217: @xref{Sample Permissions}.
        !          1218: 
        !          1219: @node Top Node, License and Distribution, Titlepage & Copyright Page, Beginning a File    
        !          1220: @comment  node-name,  next,  previous,  up
        !          1221: @section The Top Node and Master Menu
        !          1222: @cindex Top node
        !          1223: @cindex Master menu
        !          1224: 
        !          1225: The @samp{Top} node contains an extensive, master menu for the whole Info
        !          1226: file.  The contents of this node appear only in the Info file.  Nothing in
        !          1227: this node should appear in the printed file.  Since a node line by itself
        !          1228: and a menu by itself are not printed, the contents of this node do not have
        !          1229: to be within a region delineated by @code{@@ifinfo} and @code{@@end ifinfo}
        !          1230: commands.  However, any text within the node should be marked off in that
        !          1231: manner.  You may want to put a short summary before the master menu inside
        !          1232: a region delineated by @code{@@ifinfo} and @code{@@end ifinfo} commands.
        !          1233: Usually, the `Previous' and `Up' nodes refer to the top level directory of
        !          1234: the whole Info system, with pointers to @samp{(dir)}.@refill
        !          1235: 
        !          1236: Generally, the top menu is divided into parts.  
        !          1237: 
        !          1238: @itemize @bullet
        !          1239: 
        !          1240: @item
        !          1241: The first part contains the major nodes in the Texinfo file: the nodes for
        !          1242: the chapters, chapter-like sections and the major appendices.
        !          1243: 
        !          1244: @item
        !          1245: The second part contains entries for the indices.  In an Info file, it is
        !          1246: very useful to have indices here at the beginning of the file in the top
        !          1247: node rather than at the end, as in a printed book.
        !          1248: 
        !          1249: @item
        !          1250: The third and subsequent parts contain a listing of the other, lower level
        !          1251: nodes, often ordered by chapter.  This way, an inquirer can go directly to
        !          1252: a particular node if he or she is searching for specific information.
        !          1253: (These nodes are not required; use them if you think they are a
        !          1254: convenience.)
        !          1255: @end itemize
        !          1256: 
        !          1257: Each section in the menu can be introduced a descriptive line.  So long as
        !          1258: the line does not begin with an asterisk, it will not be treated as a menu
        !          1259: item.  (@xref{Menu, , Making Menus}, for more information.)
        !          1260: 
        !          1261: For example, the Top node of this manual looks like this (but with many
        !          1262: more entries):
        !          1263: 
        !          1264: @example
        !          1265: @@node Top, Overview, (dir), (dir)
        !          1266: 
        !          1267: @@menu
        !          1268: * Overview::                    What is Texinfo?
        !          1269: * Texinfo Mode::                Special features in GNU Emacs.
        !          1270: @dots{}
        !          1271: 
        !          1272: Indices, nodes containing large menus
        !          1273: 
        !          1274: * Command Index::               An item for each @@-command.
        !          1275: * Concept Index::               An item for each concept.
        !          1276: 
        !          1277: A detailed node listing
        !          1278: 
        !          1279: Overview
        !          1280: * Info File::                   Characteristics of the Info file.
        !          1281: * Printed Manual::              Characteristics of the printed manual.
        !          1282: 
        !          1283: Using Texinfo Mode
        !          1284: * Info on a Region::            Formatting a region for Info.
        !          1285: * Showing the Structure::       Showing the structure of a file.
        !          1286: @dots{}
        !          1287: @dots{}
        !          1288: @end example
        !          1289: 
        !          1290: 
        !          1291: @node License and Distribution, , Top Node, Beginning a File
        !          1292: @comment  node-name,  next,  previous,  up
        !          1293: @section Licensing and Distribution Information
        !          1294: @cindex Distribution
        !          1295: @cindex License agreement
        !          1296: 
        !          1297: If the Texinfo file has a section containing the ``General Public License''
        !          1298: and the distribution information and a warranty disclaimer, this section
        !          1299: usually follows the @samp{Top} node.  The licensing and distribution
        !          1300: information and the disclaimer are followed by a preface or else by the
        !          1301: first chapter of the manual.
        !          1302: 
        !          1303: The licensing agreement is very important to Project GNU documentation and
        !          1304: software.  Without it, you may find that you can no longer get the software
        !          1305: or its documentation.  This sounds paradoxical, but the state of the world
        !          1306: is such that documentation and software that does not have a
        !          1307: ``restrictive'' license to make them freely distributable may be lost to
        !          1308: the public.  This has happened.@refill
        !          1309: 
        !          1310: For a good example of the text that could be used for the Distribution,
        !          1311: General Public License and NO WARRANTY sections of your document, see the
        !          1312: latest version of the @cite{GNU Emacs Manual}.
        !          1313: 
        !          1314: @cindex Preface
        !          1315: Although a preface is not a required part of a Texinfo file, it is very
        !          1316: helpful.  Ideally, it should state clearly and concisely what the file is
        !          1317: about and who would be interested in reading it.  In general, the preface
        !          1318: would follow the licensing and distribution information, although sometimes
        !          1319: people put it earlier in the document.  Usually, a preface is put in an
        !          1320: @code{@@unnumbered} section.  (@xref{Unnumbered and Appendix}.)
        !          1321: 
        !          1322: @node     Ending a File, Structuring, Beginning a File, Top
        !          1323: @comment  node-name,  next,  previous,  up
        !          1324: @chapter Ending a Texinfo File
        !          1325: @cindex Ending a Texinfo file
        !          1326: @cindex Texinfo file ending
        !          1327: @cindex File ending
        !          1328: @findex bye
        !          1329: 
        !          1330: The end of a Texinfo file should include the indices, the commands to
        !          1331: generate detailed and summary tables of contents and the @@-command
        !          1332: that tells @TeX{} that it has reached the end of the file.
        !          1333: 
        !          1334: For example, a Texinfo file might be ended as follows:
        !          1335: 
        !          1336: @example
        !          1337: @@node    Concept Index,     , Previous Node, Top
        !          1338: @@comment node-name,     next, previous,      up
        !          1339: @@unnumbered Concept Index
        !          1340: 
        !          1341: @@printindex cp
        !          1342: 
        !          1343: @@contents
        !          1344: @@bye
        !          1345: @end example
        !          1346: 
        !          1347: The @code{@@bye} command should be on a line by itself and every Texinfo
        !          1348: file must end with such a line.  This command terminates @TeX{} processing
        !          1349: and forces out unfinished pages.@refill
        !          1350: 
        !          1351: @menu
        !          1352: * Contents::           Generating a table of contents
        !          1353: * Indices::            Generating, sorting and printing indices
        !          1354: @end menu
        !          1355: 
        !          1356: @node     Contents, Indices , , Ending a File
        !          1357: @comment  node-name,  next,  previous,  up
        !          1358: @section Generating a Table of Contents
        !          1359: @cindex Table of contents
        !          1360: @cindex Contents, Table of 
        !          1361: 
        !          1362: The commands @code{@@chapter}, @code{@@section}, etc., supply the
        !          1363: information to make up a table of contents, but they do not cause an actual
        !          1364: table to be generated.  To do this, you must use the commands
        !          1365: @code{@@contents} and @code{@@summarycontents}.@refill
        !          1366: 
        !          1367: @table @code
        !          1368: 
        !          1369: @item @@contents
        !          1370: The table of contents command outputs (into a printed manual) a complete
        !          1371: table of contents, based on the @code{@@chapter}, @code{@@unnumbered} and
        !          1372: other sectioning commands.  This command should be used on a line by
        !          1373: itself.@refill
        !          1374: 
        !          1375: @item @@summarycontents 
        !          1376: The summary contents command generates a summary table of contents that
        !          1377: lists only the chapters (and appendices and unnumbered chapters); sections,
        !          1378: subsections and subsubsections are omitted.  This command should be used on
        !          1379: a line by itself.  Only large manuals need a summary table of
        !          1380: contents.@refill
        !          1381: @end table
        !          1382: 
        !          1383: You can use either one of these commands, or both.  Each command
        !          1384: automatically generates a chapter-like heading at the top of the page.
        !          1385: Tables of contents should be generated at the very end of the manual, just
        !          1386: before the @code{@@bye} command; the tables of contents commands should
        !          1387: follow any indices that are output, so that the indices will appear in the
        !          1388: contents.@refill
        !          1389: 
        !          1390: @group
        !          1391: @example
        !          1392: @var{indices}@dots{}
        !          1393: @@summarycontents
        !          1394: @@contents
        !          1395: @@bye
        !          1396: @end example
        !          1397: @end group
        !          1398: 
        !          1399: The commands @code{@@contents} and @code{@@summarycontents} are ignored when an
        !          1400: Info file is being generated.
        !          1401: 
        !          1402: @node     Indices, , Contents, Ending a File
        !          1403: @comment  node-name,  next,  previous,  up
        !          1404: @section Creating Indices
        !          1405: @cindex Indices
        !          1406: @cindex Creating indices
        !          1407: 
        !          1408: Using Texinfo, you can generate printed indices and Info file menus without
        !          1409: having to sort and collate entries manually.  Texinfo will do this for you
        !          1410: automatically.  Each index covers a certain kind of entry (functions, or
        !          1411: variables, or concepts, etc.)@: and lists all of those entries in
        !          1412: alphabetical order, together with information on how to find the discussion
        !          1413: of each entry.  In a printed manual, this information consists of page
        !          1414: numbers.  In an Info file, it consists of a menu item leading to the first
        !          1415: node referenced.
        !          1416: 
        !          1417: When you are making index entries, it is good practice to think of the
        !          1418: different categories under which people may look for something.  Different
        !          1419: people @emph{do not} think of the same words when they look something up.
        !          1420: They think of different words.  A helpful index will have items indexed
        !          1421: under all the different words that people may use.  For example, someone might
        !          1422: think it obvious that the two letter names for indices should be listed
        !          1423: under ``Indices, two letter names'', since the word ``Index'' is the
        !          1424: general concept.  But another reader may remember the specific concept of
        !          1425: two letter names and search for the entry listed as ``Two letter names for
        !          1426: indices''.  A good index will have both entries and will help both kinds of
        !          1427: user.
        !          1428: 
        !          1429: Like typesetting, the construction of an index is a highly skilled,
        !          1430: professional art, the subtleties of which are not appreciated until you
        !          1431: have to do it yourself.
        !          1432: 
        !          1433: Normally, six indices are provided for:
        !          1434: 
        !          1435: @itemize @bullet
        !          1436: @item
        !          1437: A @dfn{program index} listing names of programs and leading to the places
        !          1438: where those programs are documented.@refill
        !          1439: 
        !          1440: @item
        !          1441: A @dfn{function index} listing functions (such as, entry points of
        !          1442: libraries).@refill
        !          1443: 
        !          1444: @item
        !          1445: A @dfn{variables index} listing variables (such as, external variables of
        !          1446: libraries).@refill
        !          1447: 
        !          1448: @item
        !          1449: A @dfn{data type index} listing data types (such as, structures defined in
        !          1450: header files).@refill
        !          1451: 
        !          1452: @item
        !          1453: A @dfn{keystroke index} listing keyboard commands.@refill
        !          1454: 
        !          1455: @item
        !          1456: A @dfn{concept index} listing concepts that are discussed.@refill
        !          1457: @end itemize
        !          1458: 
        !          1459: @noindent
        !          1460: Not every manual needs all of these.  This manual has two indices: a
        !          1461: concept index and an @@-command index (that uses the function index but is
        !          1462: called a command index in the chapter heading).  Two or more indices can be
        !          1463: combined into one using the @code{@@synindex} command.  @xref{Combining
        !          1464: Indices}.
        !          1465: 
        !          1466: @menu
        !          1467: * Index Entries::      Defining the entries of an index
        !          1468: * Combining Indices::
        !          1469: * Printing Indices & Menus::
        !          1470: @end menu
        !          1471: 
        !          1472: @node     Index Entries, Combining Indices, , Indices
        !          1473: @comment  node-name,  next,  previous,  up
        !          1474: @subsection Defining the Entries of an Index
        !          1475: @cindex  Defining the entries of an index
        !          1476: @cindex Index entries
        !          1477: @cindex Entries for an index
        !          1478: 
        !          1479: The data to make an index comes from many individual commands scattered
        !          1480: throughout the Texinfo source file.  Each command says to add one entry to
        !          1481: a particular index; after processing, it will give the current page number
        !          1482: or node name as the reference.
        !          1483: 
        !          1484: @table @code
        !          1485: @item @@cindex @var{concept}
        !          1486: Make an entry in the concept index for @var{concept}, referring to the
        !          1487: current page or node.@refill
        !          1488: @item @@findex @var{function}
        !          1489: Make an entry in the function index for @var{function}, referring to the
        !          1490: current page or node.@refill
        !          1491: @item @@vindex @var{variable}
        !          1492: Make an entry in the variable index for @var{variable}, referring to the
        !          1493: current page or node.@refill
        !          1494: @item @@pindex @var{program}
        !          1495: Make an entry in the program index for @var{program}, referring to the
        !          1496: current page or node.@refill
        !          1497: @item @@kindex @var{key}
        !          1498: Make an entry in the key index for @var{key}, referring to the
        !          1499: current page or node.@refill
        !          1500: @item @@tindex @var{data type}
        !          1501: Make an entry in the data type index for @var{data type}, referring to the
        !          1502: current page or node.@refill
        !          1503: @end table
        !          1504: 
        !          1505: If the same name is indexed on several pages, all the pages are listed in
        !          1506: the printed manual's index.  However, @strong{only} the @strong{first} node
        !          1507: referenced will appear in the index of an Info file.  This means that it is
        !          1508: best to write indices in which each entry will refer to only one place in the
        !          1509: Texinfo file.  Fortunately, this constraint is a feature rather than loss
        !          1510: since it means that the index will be easy to use.  Otherwise, it can be
        !          1511: easy to create an index which has many pages listed for an entry and you
        !          1512: don't know which one you need.@refill
        !          1513: 
        !          1514: You are not actually required to use indices for their canonical
        !          1515: purposes.  For example, you might wish to index some C preprocessor macros.
        !          1516: You could put them in the function index along with actual functions, just
        !          1517: by writing @code{@@findex} commands for them; then, when you print the
        !          1518: ``function index'', you could give it the title `Function and Macro Index'
        !          1519: and all will be consistent for the reader.  Or you could put the macros in
        !          1520: with the data types by writing @code{@@tindex} commands for them, and give
        !          1521: that index a suitable title so the reader will understand.@refill
        !          1522: 
        !          1523: @node     Combining Indices, Printing Indices & Menus, Index Entries, Indices
        !          1524: @comment  node-name,  next,  previous,  up
        !          1525: @subsection Combining Indices
        !          1526: @cindex Combining Indices
        !          1527: @cindex Indices, combining them
        !          1528: 
        !          1529: Sometimes you will want to combine two disparate indices such as functions
        !          1530: and variables, perhaps because you have few enough of one of them that
        !          1531: a separate index for them would look silly.
        !          1532: 
        !          1533: You could put variables into the function index by writing @code{@@findex}
        !          1534: commands for them instead of @code{@@vindex} commands, and produce a
        !          1535: consistent manual by printing the function index with the title `Function
        !          1536: and Variable Index' and not printing the `Variable Index' at all; but this
        !          1537: is not a robust procedure.  It works only as long as your document is never
        !          1538: included in part of or together with another document that is designed to
        !          1539: have a separate variable index; if you did that, the variables from your
        !          1540: document and those from the other would not end up together.
        !          1541: 
        !          1542: What you should do instead when you want functions and variables in one
        !          1543: index is to index the variables with @code{@@vindex} as they should be, but
        !          1544: use the @code{@@synindex} command to redirect these @code{@@vindex}
        !          1545: commands to the function index.  @code{@@synindex} takes two arguments: the
        !          1546: name of an index to redirect, and the name of an index to redirect it to.
        !          1547: For this purpose, the indices are given two-letter names:
        !          1548: @cindex Two letter names for indices
        !          1549: @cindex Indices, two letter names
        !          1550: @cindex Names for indices
        !          1551: 
        !          1552: @table @samp
        !          1553: @item cp
        !          1554: the concept index
        !          1555: @item vr
        !          1556: the variable index
        !          1557: @item fn
        !          1558: the function index
        !          1559: @item ky
        !          1560: the key index
        !          1561: @item pg
        !          1562: the program index
        !          1563: @item tp
        !          1564: the data type index
        !          1565: @end table
        !          1566: 
        !          1567: Thus, @code{@@synindex vr fn} at the front of a Texinfo file
        !          1568: will cause all entries designated for the variable index to go to
        !          1569: the function index instead.
        !          1570: 
        !          1571: @node Printing Indices & Menus, , Combining Indices, Indices
        !          1572: @comment  node-name,  next,  previous,  up
        !          1573: @subsection Printing an Index and Generating Menus
        !          1574: @cindex Printing an index
        !          1575: @cindex Indices, printing
        !          1576: @cindex Generating menus with indices
        !          1577: @cindex Menus generated with indices
        !          1578: 
        !          1579: To print an index means to include it as part of a manual or Info file.
        !          1580: This does not happen automatically just because you use @code{@@cindex} or
        !          1581: other index-entry generating commands in the Texinfo file; those just cause
        !          1582: the raw data for the index to be accumulated.  To print an index, you must
        !          1583: include the @code{@@printindex} command at the place in the document where
        !          1584: you want the index to appear.  Also, for the case of the printed manual,
        !          1585: you must run a program called @code{texindex} to sort the raw data to
        !          1586: produce a sorted index file, which is what will actually be used to print
        !          1587: the index.@refill
        !          1588: 
        !          1589: The Texinfo command that is used to print indices is @code{@@printindex}.
        !          1590: It takes the two-letter index name (@pxref{Combining Indices}) as an
        !          1591: argument without braces, and reads the corresponding sorted index file and
        !          1592: formats it appropriately into an index.@refill
        !          1593: 
        !          1594: @ifinfo
        !          1595: The two-letter index names are:
        !          1596: 
        !          1597: @table @samp
        !          1598: @item cp
        !          1599: the concept index.
        !          1600: @item vr
        !          1601: the variable index.
        !          1602: @item fn
        !          1603: the function index.
        !          1604: @item ky
        !          1605: the key index.
        !          1606: @item pg
        !          1607: the program index.
        !          1608: @item tp
        !          1609: the data type index.
        !          1610: @end table
        !          1611: @end ifinfo
        !          1612: 
        !          1613: @code{@@printindex} does not generate a chapter heading for the index.
        !          1614: Consequently, you should precede the command with a suitable section or
        !          1615: chapter command (usually @code{@@unnumbered}) to supply the chapter heading
        !          1616: and put the index into the table of contents.  And before that, you will
        !          1617: probably put a @code{@@node} command.  For example,@refill
        !          1618: 
        !          1619: @example
        !          1620: @@node Variables Index, Concept Index, Function Index, Top
        !          1621: @@comment    node-name,          next,       previous,  up
        !          1622: @@unnumbered Variable Index
        !          1623: 
        !          1624: @@printindex vr
        !          1625: 
        !          1626: @@node     Concept Index,     , Variables Index, Top
        !          1627: @@comment      node-name, next,        previous,  up
        !          1628: @@unnumbered Concept Index
        !          1629: 
        !          1630: @@printindex cp
        !          1631: 
        !          1632: @@summarycontents
        !          1633: @@contents
        !          1634: @@bye
        !          1635: @end example
        !          1636: 
        !          1637: In @TeX{}, @code{@@printindex} needs a sorted index file to work from.
        !          1638: @TeX{} does not know how to do sorting; this is one of the main
        !          1639: deficiencies of @TeX{}.  You must invoke the program @code{texindex} to do
        !          1640: so, giving it the names of the raw index files to be sorted as arguments.
        !          1641: You do not have to run @code{texindex} on all of them; only the ones you
        !          1642: are going to print.  (@xref{Printing Hardcopy}, for more information.)
        !          1643: 
        !          1644: @node Structuring, Quotations and Examples, Ending a File, Top
        !          1645: @comment  node-name,  next,  previous,  up
        !          1646: @chapter Node and Chapter Structuring
        !          1647: @cindex Node and chapter structuring
        !          1648: @cindex Chapter structuring
        !          1649: @cindex Node structuring
        !          1650: @cindex Structuring of nodes and chapters
        !          1651: @findex node
        !          1652: 
        !          1653: The chapter structuring commands divide a document into a hierarchy of
        !          1654: chapters, sections, subsections and subsubsections.  These commands
        !          1655: generate large headings.
        !          1656: 
        !          1657: In a printed manual, the table of contents is based on the information
        !          1658: specified by the chapter structuring commands.
        !          1659: 
        !          1660: Although the chapter structuring commands used for creating a printed
        !          1661: document are entirely different from the node commands for structuring an
        !          1662: Info file, you are likely to use the two kinds of command together since
        !          1663: the single Texinfo file is usually designed to be read both as an Info file
        !          1664: and as a printed manual.  The only time you are likely to use the chapter
        !          1665: structuring commands without using the node structuring commands is if you
        !          1666: are writing a document that will never be put into Info format, for
        !          1667: example, a novel, a letter, an article or a memorandum.
        !          1668: 
        !          1669: It is unlikely that you will ever write a Texinfo file that is only
        !          1670: intended as an on-line Info file and not as a printable document.  However,
        !          1671: Texinfo is flexible enough so that you can do this if you wish.
        !          1672: 
        !          1673: Although a Texinfo file can be structured in a variety of ways, it is
        !          1674: usually structured like a book with chapters, sections, subsections and the
        !          1675: like.  This structure can also be visualized as a tree (or rather as an
        !          1676: upside down tree) with the root at the top and each level corresponding to
        !          1677: chapters or sections or whatnot.  In Info format, you reach the nodes on
        !          1678: each level by using the the `Next' and `Previous' pointers in the node
        !          1679: line.  For example, you go from one chapter to the next or previous chapter
        !          1680: by using the the pointers to the next and previous chapters.  In Info, you
        !          1681: go the level above by using an `Up' pointer and you go to the level below
        !          1682: through a `Menu'.  In the printed manual, cross references are indicated by
        !          1683: page and section numbers; in the on-line file, cross references are
        !          1684: specified by inline menu items.
        !          1685: 
        !          1686: @group
        !          1687: Here is a diagram that shows a Texinfo file with three chapters; 
        !          1688: each chapter has two sections.
        !          1689: 
        !          1690: @example
        !          1691:                                  top
        !          1692:                                   |
        !          1693:                                   |
        !          1694:             ---------------------------------------------
        !          1695:            |                      |                      |
        !          1696:            |                      |                      |
        !          1697:        Chapter 1              Chapter 2               Chapter 3
        !          1698:            |                      |                      |
        !          1699:            |                      |                      |
        !          1700:       ----------             ----------              ----------          
        !          1701:      |          |           |          |            |          |         
        !          1702:  Sect. 1.1   Sect. 1.2   Sect. 2.1  Sect. 2.2    Sect. 3.1  Sect. 3.2     
        !          1703:                                                           
        !          1704: @end example
        !          1705: @end group
        !          1706: 
        !          1707: In this structure, the node for Chapter 2 looks like this:
        !          1708: 
        !          1709: @example
        !          1710: @@node     Chapter 2,  Chapter 3, Chapter 1, top
        !          1711: @@comment  node-name,  next,      previous,  up
        !          1712: @end example
        !          1713: 
        !          1714: To get to Sections 2.1 and 2.2, you need a menu inside of Chapter 2 that
        !          1715: says:
        !          1716: 
        !          1717: @example
        !          1718:     @@menu
        !          1719:     * Sect. 2.1::    Description of this section.
        !          1720:     * Sect. 2.2::  
        !          1721:     @@end menu
        !          1722: @end example
        !          1723: 
        !          1724: @noindent
        !          1725: This menu is located inside Chapter 2, after the beginning of the chapter,
        !          1726: just before Section 2.1.
        !          1727: 
        !          1728: Note that a menu entry has three parts: the menu item name, the name of the
        !          1729: node and, optionally, a description of the item (in that order).  If the
        !          1730: menu item name and the name of the node are the same, you can put two
        !          1731: colons after the item name, as is shown in the example. (If the second part
        !          1732: is different from the first, the first part is terminated by a colon and
        !          1733: the second part terminated by a tab, newline, comma or period.)
        !          1734: (@xref{Menu}.)
        !          1735: 
        !          1736: The node for Sect. 2.1 will look like this:
        !          1737: 
        !          1738: @example
        !          1739:     @@node     Sect. 2.1, Sect. 2.2,         ,  Chapter 2
        !          1740:     @@comment  node-name, next,      previous,  up
        !          1741: @end example
        !          1742: 
        !          1743: This node does not have a `Previous' node.
        !          1744: 
        !          1745: 
        !          1746: Usually, an @code{@@node} command and a chapter structuring command are
        !          1747: used in sequence, along with indexing commands.  For example, the node for
        !          1748: the chapter on ending a file looks like this:
        !          1749: 
        !          1750: @group
        !          1751: @example
        !          1752: @@node    Ending a File, Structuring, Beginning a File, Top
        !          1753: @@comment node-name,     next,        previous,         up
        !          1754: @@chapter Ending a Texinfo File
        !          1755: @@cindex  Ending a Texinfo file
        !          1756: @@cindex  Texinfo file ending
        !          1757: @@cindex  File ending
        !          1758: @end example
        !          1759: @end group
        !          1760: 
        !          1761: The chapter structuring commands fall into four groups that have the
        !          1762: characteristics of chapters, sections, subsections and subsubsections.
        !          1763: The groups are:
        !          1764: 
        !          1765: @group
        !          1766: @table @code
        !          1767: @item @@chapter
        !          1768: @itemx @@unnumbered
        !          1769: @itemx @@appendix
        !          1770: For chapters and chapter-like parts of a document.
        !          1771: 
        !          1772: @item @@section
        !          1773: @itemx @@unnumberedsec
        !          1774: @itemx @@appendixsec
        !          1775: For sections and section-like parts of a document.
        !          1776: 
        !          1777: @item @@subsection
        !          1778: @itemx @@unnumberedsubsec
        !          1779: @itemx @@appendixsubsec
        !          1780: For subsections and subsection-like parts of a document.
        !          1781: 
        !          1782: @item @@subsubsection
        !          1783: @itemx @@unnumberedsubsubsec
        !          1784: @itemx @@appendixsubsubsec
        !          1785: For subsubsections and subsubsection-like parts of a document.
        !          1786: @end table
        !          1787: @end group
        !          1788: 
        !          1789: In the sections that follow, the chapter structuring commands are described
        !          1790: first and then the @code{@@node} and @code{@@menu} commands.
        !          1791: 
        !          1792: @menu
        !          1793: * Chapter::            
        !          1794: * Unnumbered and Appendix::
        !          1795: * Section::
        !          1796: * Subsection::
        !          1797: * Subsubsection::
        !          1798: * Node::
        !          1799: * Menu::
        !          1800: @end menu
        !          1801: 
        !          1802: @node  Chapter, Unnumbered and Appendix, , Structuring
        !          1803: @comment  node-name,  next,  previous,  up
        !          1804: @section @@chapter
        !          1805: @findex chapter
        !          1806: 
        !          1807: @code{@@chapter} identifies a chapter in the document.  It is followed by a
        !          1808: single argument which is the rest of the line, as in
        !          1809: 
        !          1810: @example
        !          1811: @@chapter Node and Chapter Structuring
        !          1812: @end example
        !          1813: 
        !          1814: In @TeX{}, it creates a chapter in the document, specifying the chapter
        !          1815: title.
        !          1816: 
        !          1817: In the Info file, @code{@@chapter} causes its argument to appear on a line
        !          1818: by itself, with a line of asterisks inserted underneath.  Thus, the above
        !          1819: example produces the following output:@refill
        !          1820: 
        !          1821: @example
        !          1822: Node and Chapter Structuring
        !          1823: ****************************
        !          1824: @end example
        !          1825: 
        !          1826: @node Unnumbered and Appendix, Section, Chapter, Structuring
        !          1827: @comment  node-name,  next,  previous,  up
        !          1828: @section @@unnumbered, @@appendix
        !          1829: @findex unnumbered
        !          1830: @findex appendix
        !          1831: 
        !          1832: These commands are equivalent to @code{@@chapter} for Info file output.
        !          1833: (@xref{Chapter}.)  In a printed manual, they generate chapters that are
        !          1834: numbered differently in the table of contents.  @code{@@unnumbered}
        !          1835: chapters appear without chapter numbers of any kind, and @code{@@appendix}
        !          1836: chapters are given a letter instead of a number.
        !          1837: 
        !          1838: @node Section, Subsection, Unnumbered and Appendix, Structuring
        !          1839: @comment  node-name,  next,  previous,  up
        !          1840: @section @@section
        !          1841: @findex section
        !          1842: 
        !          1843: @code{@@section} is like @code{@@chapter} except that in @TeX{} it makes a
        !          1844: section rather than a chapter.  (@xref{Chapter}.)  Sections go within
        !          1845: chapters.  In the Info file, @code{@@chapter} and @code{@@section} differ
        !          1846: only in that @code{@@section} underlines with @samp{=}.  For example,@refill
        !          1847: 
        !          1848: @example
        !          1849: This is a section
        !          1850: =================
        !          1851: @end example
        !          1852: 
        !          1853: @section @@unnumberedsec, @@appendixsec
        !          1854: @findex unnumberedsec
        !          1855: @findex appendixsec
        !          1856: 
        !          1857: Use these constructs for sections within chapters made by
        !          1858: @code{@@unnumbered} or @code{@@appendix}. (@xref{Section}.)@refill
        !          1859: 
        !          1860: @node Subsection, Subsubsection, Section, Structuring    
        !          1861: @comment  node-name,  next,  previous,  up
        !          1862: @section @@subsection
        !          1863: @findex subsection
        !          1864: 
        !          1865: Subsections are to sections as sections are to chapters. (@xref{Section}.)
        !          1866: They are underlined with @samp{-}.  For example,@refill
        !          1867: 
        !          1868: @example
        !          1869: This is a subsection
        !          1870: --------------------
        !          1871: @end example
        !          1872: 
        !          1873: @section @@unnumberedsubsec, @@appendixsubsec
        !          1874: @findex unnumberedsubsec
        !          1875: @findex appendixsubsec
        !          1876: 
        !          1877: Use these constructs for subsections within sections within chapters made
        !          1878: by @code{@@unnumberedsec} or @code{@@appendixsec}.  (@xref{Subsection}.)@refill
        !          1879: 
        !          1880: @node  Subsubsection, Node, Subsection, Structuring
        !          1881: @comment  node-name,  next,  previous,  up
        !          1882: @section @@subsubsection, @@unnumberedsubsubsec, @@appendixsubsubsec
        !          1883: @findex unnumberedsubsubsec
        !          1884: @findex appendixsubsubsec
        !          1885: @findex subsubsection
        !          1886: 
        !          1887: Subsubsections are to subsections as subsections are to sections.
        !          1888: (@xref{Subsection}.)  They are underlined with periods.  The equivalent
        !          1889: commands for @code{@@unnumberedsubsec} and @code{@@appendixsubsec} are
        !          1890: @code{@@unnumberedsubsubsec} and @code{@@appendixsubsubsec}.  For
        !          1891: example,@refill
        !          1892: 
        !          1893: @example
        !          1894: This is a subsubsection
        !          1895: .......................
        !          1896: @end example
        !          1897: 
        !          1898: 
        !          1899: @node   Node, Menu, Subsubsection, Structuring
        !          1900: @comment  node-name,  next,  previous,  up
        !          1901: @section @@node
        !          1902: 
        !          1903: @code{@@node} defines the beginning of a new node in the Info output file
        !          1904: (@inforef{Top, info, info}.).  It is followed by four arguments, separated
        !          1905: by commas, that make up the rest of the line.  Since it is often hard to
        !          1906: remember the order in which are arguments are listed, @code{texinfo-mode}
        !          1907: provides the @kbd{C-c C-c n} command (@code{texinfo-insert-@@node}) which
        !          1908: automatically inserts a comment line listing the arguments.  For
        !          1909: example,@refill
        !          1910: 
        !          1911: @example
        !          1912: @@node    Texinfo Mode, Beginning a File,  Overview, Top    
        !          1913: @@comment node-name,    next,              previous, up
        !          1914: @end example
        !          1915: 
        !          1916: @noindent
        !          1917: defines a node named @samp{Texinfo Mode}, whose `Next' pointer is to node
        !          1918: @samp{Beginning a File}, whose `Previous' pointer is to node
        !          1919: @samp{Overview}, and whose `Up' pointer is to node @samp{Top}.  What this
        !          1920: means is that Texinfo changes @w{@code{@@node @var{args}}} into the special
        !          1921: text string necessary to separate Info nodes and to identify the node that
        !          1922: is starting and say what nodes it points to.@refill
        !          1923: 
        !          1924: The pointer names should be the names of nodes defined elsewhere.  For this
        !          1925: example, nodes named @samp{Beginning a File}, @samp{Overview} and
        !          1926: @samp{Top} should be defined elsewhere in the file with other @code{@@node}
        !          1927: commands.  It does not matter whether they are before or after the node
        !          1928: that refers to them.@refill
        !          1929: 
        !          1930: Normally, a node's `Up' pointer should point at the node whose menu
        !          1931: mentions that node.  The node's `Next' pointer should point at the node
        !          1932: that follows that node and its `Previous' pointer should point at the node
        !          1933: that precedes it in that menu.@refill
        !          1934: 
        !          1935: In @TeX{}, @code{@@node} is nearly ignored.  It generates no text.  Its
        !          1936: only function is to identify the name to use for cross-references to the
        !          1937: chapter or section which follows the @code{@@node} command and which which
        !          1938: makes up the body of the node.  (Cross references are made with
        !          1939: @code{@@xref}.  @xref{Cross References}.)@refill
        !          1940: 
        !          1941: @code{@@node} should be followed immediately by a chapter-structuring
        !          1942: command such as @code{@@chapter}, @code{@@section}, @code{@@subsection} or
        !          1943: @code{@@subsubsection}.@refill
        !          1944: 
        !          1945: The easiest way to write a node is to use the Texinfo mode keyboard command
        !          1946: @kbd{C-c C-c n} to insert @samp{@@node} and a comment line listing the
        !          1947: names of each of the pointers in their proper order.  This way you won't
        !          1948: lose track of which arguments are for which pointers.  The template is
        !          1949: especially useful if you are not familiar with Texinfo.  It is important to
        !          1950: pick a suitable node name.  Generally, these begin with an uppercase letter
        !          1951: as if the node name were a heading for a chapter or section.  Do not use
        !          1952: any of the Texinfo @@-commands in the name; these commands confuse Info.
        !          1953: The node name should be informative.  Unfortunately, long names will not
        !          1954: fit onto the line, which can be awkward.  Sometimes it is better to use
        !          1955: long but informative names rather than short ones.
        !          1956: 
        !          1957: Some people insert the names of the `Next', `Previous' and `Up' pointers at
        !          1958: the same time they insert the node's own name.  This is because it is
        !          1959: easier to keep track of the node structure as you create a document than it
        !          1960: is to sort it out after you have dozens of nodes.  Others wait to insert
        !          1961: the `Next', `Previous' and `Up' pointers until they have a nearly final
        !          1962: version of the document.  This is because they expect to change the
        !          1963: organization of the document while they write it and insert or delete
        !          1964: sections and move them around.  The command @code{texinfo-show-structure}
        !          1965: can be used to find the `Next', `Previous' and `Up' pointers of a node.
        !          1966: (See @xref{Using texinfo-show-structure}.)
        !          1967: 
        !          1968: However you do it, it is best to name the node whenever you write the
        !          1969: section so you can easily make cross references to the section.  A large
        !          1970: number of cross references are an especially important feature of a good
        !          1971: Info file.
        !          1972: 
        !          1973: After you have inserted the node-line, you should immediately write an
        !          1974: @@-command for the chapter or section and insert its name.  Next, (and this
        !          1975: is important!), put in several index entries.  Usually, you will find at
        !          1976: least two and often as many as four or five ways of referring to the node
        !          1977: in the index.  Use them all.  This will make it much easier for people to
        !          1978: find the node.@refill
        !          1979: 
        !          1980: The top node of the file, named @samp{Top}, should have as its parent the
        !          1981: name of a node in another file, where there is a menu that leads to this
        !          1982: file.  Specify the file name in parentheses.  If the file is to be
        !          1983: installed directly in the Info directory file, use @samp{(dir)} as the
        !          1984: parent of the top node; this is short for @samp{(dir)top}, the node @samp{top}
        !          1985: in the file @file{dir}, which is the main menu of Info.  For example,@refill
        !          1986: 
        !          1987: @example
        !          1988: @@node    Top,       Overview, (dir),    (dir)
        !          1989: @@comment node-name, next,     previous, up
        !          1990: @end example
        !          1991: 
        !          1992: For more information about installing an Info file in the @file{info}
        !          1993: directory, @pxref{Installing an Info File}
        !          1994: 
        !          1995: @node          Menu,      ,      Node, Structuring   
        !          1996: @comment  node-name,  next,  previous,          up
        !          1997: @section @@menu
        !          1998: @cindex Menus
        !          1999: @findex menu
        !          2000: 
        !          2001: Info file nodes can contain @dfn{menus} which point to other nodes.  You
        !          2002: must type the menus in by hand, and surround them with lines containing
        !          2003: @code{@@menu} and @code{@@end menu}.  In Info, the @code{@@menu} line
        !          2004: changes into @samp{* Menu:}, which indicates the beginning of a menu to the
        !          2005: Info program.  Otherwise, the contents are unchanged by Texinfo, except for
        !          2006: the processing of any other @@-commands within.  The entire menu construct
        !          2007: has no effect in the printed manual and will not appear there.@refill
        !          2008: 
        !          2009: By convention, a menu is put at the end of a node.  This way, it is easy
        !          2010: for someone using Info to find the menu, using the @kbd{M->}
        !          2011: (@code{end-of-buffer}) command.
        !          2012: 
        !          2013: In a menu, every line that begins with a @samp{*} lists a single topic.  A
        !          2014: line that does not start with a @samp{*} will also appear in the menu and
        !          2015: can be used as a comment.
        !          2016: 
        !          2017: A menu item has three parts: 
        !          2018: 
        !          2019: @enumerate
        !          2020: @item
        !          2021: The menu item name.
        !          2022: 
        !          2023: @item
        !          2024: The name of the node.
        !          2025: 
        !          2026: @item
        !          2027: A description of the item.  
        !          2028: @end enumerate
        !          2029: 
        !          2030: @noindent
        !          2031: Only the first part is required.  This part is the name of the topic---the
        !          2032: name of the menu item that the user must give to the @kbd{m} command to
        !          2033: select this topic when using Info.  The first part comes right after the
        !          2034: asterisk and a space, and is followed by a colon, spaces and tabs, and then
        !          2035: the name of the node which discusses that topic.  The name of the node is
        !          2036: terminated by a tab, comma, newline or period.  If the node name and topic
        !          2037: name are the same, rather than give the name twice, put two colons after
        !          2038: the name instead.  For example, @samp{* Name::}.  (You should do this
        !          2039: whenever possible, since it reduces visual clutter in the menu).
        !          2040: 
        !          2041: If the second part is present, it may be terminated with a tab, comma, or
        !          2042: newline; or with a period.
        !          2043: 
        !          2044: For example,@refill
        !          2045: 
        !          2046: @group
        !          2047: @example
        !          2048: @@menu
        !          2049: A Section on Foo and Switches
        !          2050: * Foo::           The node named Foo tells you how to go fooing.
        !          2051: * Sw: Switches.   Type @@code@{m Sw@} to see node @@code@{Switches@}
        !          2052:                   which describes the switches available here.
        !          2053: @@end menu
        !          2054: @end example
        !          2055: @end group
        !          2056: 
        !          2057: @noindent
        !          2058: produces
        !          2059: 
        !          2060: @group
        !          2061: @example
        !          2062: * menu:
        !          2063: 
        !          2064: A Section on Foo and Switches
        !          2065: * Foo::         The node named foo tells you how to go fooing.
        !          2066: * Sw: Switches. Type `m Sw' to see node `Switches'
        !          2067:                 which describes the switches available here.
        !          2068: @end example
        !          2069: @end group
        !          2070: 
        !          2071: In this example, the menu has two items.  @samp{Foo} is both a menu item
        !          2072: name and the name of the node referred to by that item.  @samp{Sw} is the
        !          2073: other menu item name, and it refers to the node named @samp{Switches}.
        !          2074: Since no file name is specified with @samp{Foo} or @samp{Switches}, they
        !          2075: must be the names of other nodes in the same Info file.  
        !          2076: 
        !          2077: Nodes in other Info files can be referred to by putting the file name in
        !          2078: parentheses at the beginning of the node name. For example, 
        !          2079: 
        !          2080: @example
        !          2081: @@menu
        !          2082: * Outlining: (emacs) Outline Mode.  The major mode for editing outlines.
        !          2083: * Rebinding: (emacs) Rebinding.     How to redefine the meaning of a key.
        !          2084: @@end menu
        !          2085: @end example
        !          2086: 
        !          2087: @noindent
        !          2088: When this is done, the item has to have at least two parts: the first part
        !          2089: is the menu item name and the second part is the name of the node.
        !          2090: 
        !          2091: @node Quotations and Examples, Lists and Tables, Structuring, Top
        !          2092: @comment  node-name,  next,  previous,  up
        !          2093: @chapter Making Quotations and Examples
        !          2094: @cindex Quotations
        !          2095: @cindex Examples
        !          2096: 
        !          2097: Quotations and examples are blocks of text, consisting of one or more whole
        !          2098: paragraphs that are set off from the bulk of the text and treated
        !          2099: differently.  They are usually indented.
        !          2100: 
        !          2101: In Texinfo, an insertion is always begun by writing an @@-command on a line
        !          2102: by itself, and ended by writing an @code{@@end} command that is also on a
        !          2103: line by itself.  For instance, an @dfn{example} is a kind of insertion that
        !          2104: is begun with @code{@@example} and ended with @code{@@end example}.@refill
        !          2105: @findex end
        !          2106: 
        !          2107: There are three commands for quotations and examples:
        !          2108: 
        !          2109: @table @code
        !          2110: @item @@quotation
        !          2111: Used to indicated text that is quoted.@refill
        !          2112: 
        !          2113: @item @@example
        !          2114: Used to illustrate code, commands and the like in a fixed width font
        !          2115: without filling.@refill
        !          2116: 
        !          2117: @item @@display
        !          2118: Used for illustrative text.
        !          2119: @end table
        !          2120: 
        !          2121: @menu
        !          2122: * Quotation::
        !          2123: * Example::
        !          2124: * Display::
        !          2125: @end menu
        !          2126: 
        !          2127: @node     Quotation, Example, ,  Quotations and Examples
        !          2128: @comment  node-name,  next,  previous,  up
        !          2129: @section @@quotation
        !          2130: @cindex Quotations
        !          2131: @findex quotation
        !          2132: 
        !          2133: @code{@@quotation} is used to indicate text that is excerpted from another
        !          2134: (real or hypothetical) printed work.  The inside of a quotation is
        !          2135: processed normally except that
        !          2136: 
        !          2137: @enumerate
        !          2138: @item
        !          2139: The margins are narrower.
        !          2140: @item
        !          2141: Paragraphs are not indented.
        !          2142: @item
        !          2143: Interline spacing and interparagraph spacing are reduced.
        !          2144: @end enumerate
        !          2145: 
        !          2146: Thus, the input
        !          2147: 
        !          2148: @example
        !          2149: @@quotation
        !          2150: This is
        !          2151: a foo.
        !          2152: @@end quotation
        !          2153: @end example
        !          2154: 
        !          2155: @noindent
        !          2156: produces in the printed manual
        !          2157: 
        !          2158: @quotation
        !          2159: @quotation
        !          2160: This is a foo.
        !          2161: @end quotation
        !          2162: @end quotation
        !          2163: 
        !          2164: @noindent
        !          2165: and in the Info file
        !          2166: 
        !          2167: @quotation
        !          2168: @example
        !          2169: This is
        !          2170: a foo.
        !          2171: @end example
        !          2172: @end quotation
        !          2173: 
        !          2174: @node     Example, Display, Quotation,  Quotations and Examples
        !          2175: @comment  node-name,  next,  previous,  up
        !          2176: @section @@example
        !          2177: @cindex Examples
        !          2178: @findex example
        !          2179: 
        !          2180: @code{@@example} is used to indicate an example that is not part of the
        !          2181: running text.  In the printed manual, this is done by switching to
        !          2182: a fixed width font, turning off filling, and making extra spaces
        !          2183: and blank lines significant.  In the Info file, an analogous result
        !          2184: is obtained by indenting each line with five extra spaces.
        !          2185: 
        !          2186: @code{@@example} should appear on a line by itself; this line will
        !          2187: disappear from the output.  Mark the end of the example with a line
        !          2188: containing @code{@@end example}, which will likewise disappear.  For
        !          2189: example:@refill
        !          2190: 
        !          2191: @example
        !          2192: @@example
        !          2193: mv foo bar
        !          2194: @@end example
        !          2195: @end example
        !          2196: 
        !          2197: @noindent
        !          2198: produces
        !          2199: 
        !          2200: @example
        !          2201: mv foo bar
        !          2202: @end example
        !          2203: 
        !          2204: Since the lines containing @code{@@example} and @code{@@end example} will
        !          2205: disappear, you will want to put a blank line before the @code{@@example} and
        !          2206: another blank line after the @code{@@end example}.  (Remember that blank
        !          2207: lines between the beginning @code{@@example} and the ending @code{@@end
        !          2208: example} will appear in the output.)@refill
        !          2209: 
        !          2210: Don't use tabs in lines of an example!  @TeX{} has trouble with tabs:  it
        !          2211: treats them like single spaces, and that is not what they look like.
        !          2212: 
        !          2213: @node     Display, , Example,  Quotations and Examples
        !          2214: @comment  node-name,  next,  previous,  up
        !          2215: @section @@display
        !          2216: @cindex Display
        !          2217: @findex display
        !          2218: 
        !          2219: @code{@@display} is just like @code{@@example} except that, in the
        !          2220: printed manual, @code{@@display} does not select the fixed-width font.
        !          2221: In fact, it does not specify the font at all, so that the text appears
        !          2222: in the same font it would have appeared in without the @code{@@display}.@refill
        !          2223: 
        !          2224: 
        !          2225: @node Lists and Tables, Cross References, Quotations and Examples, Top
        !          2226: @comment  node-name,  next,  previous,  up
        !          2227: @chapter Making Lists and Tables
        !          2228: @cindex  Making lists and tables
        !          2229: @cindex Lists and tables, making them
        !          2230: @cindex Tables and lists, making them
        !          2231: 
        !          2232: Texinfo has several ways of making lists and two-column tables.  Lists can
        !          2233: be bulleted or numbered while two-column tables can highlight the items in
        !          2234: the first column. 
        !          2235: 
        !          2236: For example, this is an enumerated list:
        !          2237: 
        !          2238: @enumerate
        !          2239: @item 
        !          2240: This is a numbered item.
        !          2241: 
        !          2242: @item 
        !          2243: This is the second item in this list.
        !          2244: 
        !          2245: @item 
        !          2246: This is the third item on this list.
        !          2247: @end enumerate
        !          2248: 
        !          2249: Texinfo will automatically indent the text in lists or tables and number an
        !          2250: enumerated list.  This last feature is useful if you are reordering the
        !          2251: list, since you do not have to renumber it yourself.
        !          2252: 
        !          2253: Lists or tables are always begun by an @@-command on a line by itself and
        !          2254: ended with an @code{@@end} command on a line by itself.  For example, an
        !          2255: enumerated list begins with the command @code{@@enumerate} and ends with
        !          2256: the command @code{@@end enumerate}; and an itemized list begins with the
        !          2257: command @code{@@itemize} and ends with the command @code{@@end
        !          2258: itemize}.@refill
        !          2259: @findex end
        !          2260: 
        !          2261: The elements of a list are begun with the @code{@@item} command.
        !          2262: 
        !          2263: Here is an itemized list of the different kinds of table and lists:
        !          2264: 
        !          2265: @itemize @bullet
        !          2266: @item 
        !          2267: Itemized lists with or without bullets.
        !          2268: 
        !          2269: @item 
        !          2270: Numbered lists.
        !          2271: 
        !          2272: @item 
        !          2273: two-column tables with highlighting.
        !          2274: @end itemize
        !          2275: 
        !          2276: @menu
        !          2277: * Itemize::
        !          2278: * Enumerate::
        !          2279: * Table::
        !          2280: @end menu
        !          2281: 
        !          2282: @node     Itemize, Enumerate, , Lists and Tables
        !          2283: @comment  node-name,  next,  previous,  up
        !          2284: @section @@itemize
        !          2285: @cindex Itemize
        !          2286: @findex itemize
        !          2287: 
        !          2288: @code{@@itemize} is used to produce sequences of indented paragraphs, with
        !          2289: a mark inside the left margin at the beginning of each paragraph.  The rest
        !          2290: of the line that starts with @code{@@itemize} should contain the character
        !          2291: or Texinfo commands to generate such a mark.  Usually, it is the @@-command
        !          2292: @code{@@bullet}.  Whatever mark you choose, ultimately, it should result in
        !          2293: a single character in the Texinfo file, or the indentation will come out
        !          2294: wrong.  When you write the command, omit the @samp{@{@}} after the command
        !          2295: if you use just one command and nothing else.
        !          2296: 
        !          2297: The text of the indented paragraphs themselves come after the @code{@@itemize},
        !          2298: up to another line that says @code{@@end itemize}.
        !          2299: 
        !          2300: Before each paragraph for which a mark in the margin is desired, place a
        !          2301: line that says just @code{@@item}.  Don't put any other text on this line.
        !          2302: @findex item
        !          2303: 
        !          2304: Info indents the lines in an itemized list by five columns, but it does not
        !          2305: fill them.  This can produce lines in the Info file that are too wide.  You
        !          2306: can either write shorter lines in the Texinfo file by setting the fill
        !          2307: column to five columns less than it is normally, or else you can tell Info
        !          2308: to refill the paragraphs by adding the @@-command @code{@@refill} to the
        !          2309: end of the paragraph. (@xref{Refill}, for more information about the use of
        !          2310: the @code{@@refill} command.)
        !          2311: 
        !          2312: Usually, you should put a blank line before an @code{@@item}.  This puts a
        !          2313: blank like in the Info file.  Except when the entries are very brief, a
        !          2314: blank line looks better.
        !          2315: 
        !          2316: Here is an example of the use of @code{@@itemize}, followed by the output
        !          2317: it produces.  Note that @code{@@bullet} produces a @samp{*} in Texinfo and
        !          2318: a round dot in @TeX{}. 
        !          2319: 
        !          2320: @group
        !          2321: @example
        !          2322: @@itemize @@bullet
        !          2323: @@item
        !          2324: Some text for foo.
        !          2325: 
        !          2326: @@item
        !          2327: Some text
        !          2328: for bar.
        !          2329: @@end itemize
        !          2330: @end example
        !          2331: @end group
        !          2332: 
        !          2333: @noindent
        !          2334: produces
        !          2335: 
        !          2336: @group
        !          2337: @quotation
        !          2338: @itemize @bullet
        !          2339: @item
        !          2340: Some text for foo.
        !          2341: 
        !          2342: @item
        !          2343: Some text
        !          2344: for bar.
        !          2345: @end itemize
        !          2346: @end quotation
        !          2347: @end group
        !          2348: 
        !          2349: @node Enumerate, Table, Itemize, Lists and Tables    
        !          2350: @comment  node-name,  next,  previous,  up
        !          2351: @section @@enumerate
        !          2352: @cindex Enumerate
        !          2353: @findex enumerate
        !          2354: 
        !          2355: @code{@@enumerate} is like @code{@@itemize} except that the marks in the
        !          2356: left margin contain successive integers starting with 1.  (@xref{Itemize}.)
        !          2357: Do not put any argument on the same line as @code{@@enumerate}.@refill
        !          2358: 
        !          2359: @group
        !          2360: @example
        !          2361: @@enumerate
        !          2362: @@item
        !          2363: Some text for foo.
        !          2364: @@item
        !          2365: Some text
        !          2366: for bar.
        !          2367: @@end enumerate
        !          2368: @end example
        !          2369: @end group
        !          2370: 
        !          2371: @noindent
        !          2372: produces
        !          2373: 
        !          2374: @quotation
        !          2375: @enumerate
        !          2376: @item
        !          2377: Some text for foo.
        !          2378: @item
        !          2379: Some text
        !          2380: for bar.
        !          2381: @end enumerate
        !          2382: @end quotation
        !          2383: 
        !          2384: If you want, you can put a blank line between the entries in the list.
        !          2385: This often makes it easier to read the Info file.  For example,
        !          2386: 
        !          2387: 
        !          2388: @group
        !          2389: @example
        !          2390: @@enumerate
        !          2391: @@item
        !          2392: This is the first item.
        !          2393: 
        !          2394: @@item
        !          2395: This is the second item.
        !          2396: @@end enumerate
        !          2397: @end example
        !          2398: @end group
        !          2399: 
        !          2400: @ifinfo
        !          2401: Info indents the lines of the enumerated list by five columns, but it does
        !          2402: not fill them.  As a result, the lines in the Info file may be too wide.
        !          2403: To prevent this, you can either write shorter lines in the Texinfo file
        !          2404: file by setting the fill column to five columns less than it is normally,
        !          2405: or else you can tell Info to refill the paragraphs by adding the @@-command
        !          2406: @code{@@refill} to the end of the paragraph.  (@xref{Refill}, for more
        !          2407: information about the use of the @code{@@refill} command.)
        !          2408: @end ifinfo
        !          2409: 
        !          2410: @iftex
        !          2411: Info indents the lines of the enumerated list by five columns, but it does
        !          2412: not fill them, just as it does with an itemized list.  You may want to use
        !          2413: shorter lines for text within an enumerated list or use the @code{@@refill}
        !          2414: command at the end of the paragraph. (@xref{Refill}, for more information
        !          2415: about the use of the @code{@@refill} command.)
        !          2416: @end iftex
        !          2417: 
        !          2418: @node     Table, , Enumerate, Lists and Tables
        !          2419: @comment  node-name,  next,  previous,  up
        !          2420: @section @@table
        !          2421: @cindex Tables, making two-column
        !          2422: @findex table
        !          2423: 
        !          2424: @code{@@table} is similar to @code{@@itemize}, but allows you to specify a
        !          2425: name or heading line for each item.  (@xref{Itemize}.)  The command is used
        !          2426: to produce two-column tables, and is especially useful for glossaries and
        !          2427: explanatory exhibits.@refill
        !          2428: 
        !          2429: You must follow each use of @code{@@item} inside of @code{@@table} with
        !          2430: text to serve as the heading line for that item.  This text is put on the
        !          2431: same line as the @code{@@item} command.  Each heading line is put into the
        !          2432: first column of the table and the supporting text, which you put on the line
        !          2433: following the line beginning with @code{@@item}, goes into the second
        !          2434: column.@refill
        !          2435: @findex item
        !          2436: 
        !          2437: Also, @code{@@table} itself must be followed by an argument that is a
        !          2438: Texinfo command such as @code{@@code}, @code{@@var}, @code{@@kbd} or
        !          2439: @code{@@asis}.  Although these commands are usually followed by arguments
        !          2440: in braces, in this case you use the command name without an argument.
        !          2441: (@code{@@item} supplies the argument.)  This command will be applied to
        !          2442: the text that goes into the first column of each item and determines how it
        !          2443: will be highlighted.  For example, @code{@@samp} will cause the text in the
        !          2444: first column to be highlighted as if it were acted on by an @code{@@samp}
        !          2445: command.@refill
        !          2446: 
        !          2447: @code{@@asis} is a command that does nothing; in that case, each item will
        !          2448: come out without highlighting, unless that particular piece of text
        !          2449: contains @@-commands for highlighting.@refill
        !          2450: 
        !          2451: (Various other command names might work with @code{@@table}.  However, only
        !          2452: commands that normally take arguments in braces may be used.)@refill
        !          2453: 
        !          2454: @ifinfo
        !          2455: Usually, you should put a blank line before an @code{@@item}.  This puts a
        !          2456: blank like in the Info file.  Except when the entries are very brief, a
        !          2457: blank line looks better.
        !          2458: @end ifinfo
        !          2459: 
        !          2460: The following table, for example, highlights the text in the first column
        !          2461: as if each item were acted on by an @code{@@samp} command:@refill
        !          2462: 
        !          2463: @example
        !          2464: @@table @@samp
        !          2465: @@item foo
        !          2466: This is the text for
        !          2467: @@samp@{foo@}.
        !          2468: 
        !          2469: @@item bar
        !          2470: Text for @@samp@{bar@}.
        !          2471: @@end table
        !          2472: @end example
        !          2473: 
        !          2474: @noindent
        !          2475: produces
        !          2476: 
        !          2477: @quotation
        !          2478: @table @samp
        !          2479: @item foo
        !          2480: This is the text for
        !          2481: @samp{foo}.
        !          2482: @item bar
        !          2483: Text for @samp{bar}.
        !          2484: @end table
        !          2485: @end quotation
        !          2486: 
        !          2487: Info indents the lines of text in the second column, but does not fill
        !          2488: them.  As a result, the lines in the Info file may be too wide.  To prevent
        !          2489: this, cause Info to refill the paragraphs after processing by adding the
        !          2490: @@-command @code{@@refill} to the end of the paragraph. (@xref{Refill}, for
        !          2491: more information about the use of the @code{@@refill} command.)
        !          2492: 
        !          2493: If you want to list two or more named items with a single block of text,
        !          2494: use the @code{@@itemx} command.
        !          2495: 
        !          2496: @menu
        !          2497: * Itemx::
        !          2498: @end menu
        !          2499: 
        !          2500: @node     Itemx, , Table, Table
        !          2501: @comment  node-name,  next,  previous,  up
        !          2502: @subsection @@itemx
        !          2503: @cindex Itemx 
        !          2504: @findex itemx
        !          2505: 
        !          2506: @code{@@itemx} is used inside a @code{@@table} when you have two or more
        !          2507: named items for the same block of text.  Use @code{@@itemx} for all but the
        !          2508: first of the items.  It works exactly like @code{@@item} except that it
        !          2509: does not generate extra vertical space above the item text.
        !          2510: For example,@refill
        !          2511: 
        !          2512: @example
        !          2513: @@table @@code
        !          2514: @@item upcase
        !          2515: @@itemx downcase
        !          2516: These two functions accept a character or a string as argument,
        !          2517: and return the corresponding upper case (lower case) character
        !          2518: or string. @@refill
        !          2519: @@end table
        !          2520: @end example
        !          2521: 
        !          2522: @noindent
        !          2523: produces
        !          2524: 
        !          2525: @quotation
        !          2526: @table @code
        !          2527: @item upcase
        !          2528: @itemx downcase
        !          2529: These two functions accept a character or a string as argument,
        !          2530: and return the corresponding upper case (lower case) character
        !          2531: or string. @refill
        !          2532: @end table
        !          2533: @end quotation
        !          2534: 
        !          2535: A more complicated example of the use of @code{@@itemx} comes from the
        !          2536: chapter on structuring commands.  Here is how the list showing how 
        !          2537: the chapter structuring commands fall into four groups was constructed.
        !          2538: (@xref{Structuring, , Chapter Structuring Commands}.)
        !          2539: 
        !          2540: @group
        !          2541: @example
        !          2542: @@table @@code
        !          2543: @@item  @@@@chapter
        !          2544: @@itemx @@@@unnumbered
        !          2545: @@itemx @@@@appendix
        !          2546: For chapters and chapter-like parts of a document.
        !          2547: 
        !          2548: @@item  @@@@section
        !          2549: @@itemx @@@@unnumberedsec
        !          2550: @@itemx @@@@appendixsec
        !          2551: For sections and section-like parts of a document.
        !          2552: 
        !          2553: @@item  @@@@subsection
        !          2554: @@itemx @@@@unnumberedsubsec
        !          2555: @@itemx @@@@appendixsubsec
        !          2556: For subsections and subsection-like parts of a document.
        !          2557: 
        !          2558: @@item  @@@@subsubsection
        !          2559: @@itemx @@@@unnumberedsubsubsec
        !          2560: @@itemx @@@@appendixsubsubsec
        !          2561: For subsubsections and similar parts of a document.
        !          2562: @@end table
        !          2563: @end example
        !          2564: @end group
        !          2565: 
        !          2566: @noindent
        !          2567: and this is what the resulting table looks like:
        !          2568: 
        !          2569: 
        !          2570: @table @code
        !          2571: 
        !          2572: @item  @@chapter
        !          2573: @itemx @@unnumbered
        !          2574: @itemx @@appendix
        !          2575: For chapters and chapter-like parts of a document.
        !          2576: 
        !          2577: @item  @@section
        !          2578: @itemx @@unnumberedsec
        !          2579: @itemx @@appendixsec
        !          2580: For sections and section-like parts of a document.
        !          2581: 
        !          2582: @item  @@subsection
        !          2583: @itemx @@unnumberedsubsec
        !          2584: @itemx @@appendixsubsec
        !          2585: For subsections and subsection-like parts of a document.
        !          2586: 
        !          2587: @item  @@subsubsection
        !          2588: @itemx @@unnumberedsubsubsec
        !          2589: @itemx @@appendixsubsubsec
        !          2590: For subsubsections and similar parts of a document.
        !          2591: @end table
        !          2592: 
        !          2593: 
        !          2594: Also, either column of a table can be empty.  
        !          2595: 
        !          2596: @node Cross References, Formatting Paragraphs, Lists and Tables, Top
        !          2597: @comment  node-name,  next,  previous,  up
        !          2598: @chapter Making Cross References
        !          2599: @cindex  Making cross references
        !          2600: @cindex Cross references
        !          2601: @cindex References
        !          2602: 
        !          2603: Cross references are used to refer the reader to other parts of the same or
        !          2604: different Texinfo files.  In Texinfo, @dfn{nodes} are the points to which
        !          2605: cross-references can refer.  
        !          2606: 
        !          2607: In general, a document should be designed so that it can be read
        !          2608: sequentially.  People soon tire of flipping back and forth to find
        !          2609: information that should be presented to them as they need it.  However,
        !          2610: there will be information (often too detailed for whatever the current
        !          2611: context may be) that is related to whatever is presented and to which
        !          2612: reference should be made.  More important, in an on-line help system or in
        !          2613: a reference manual, readers do @emph{not} read everything in sequence from
        !          2614: beginning to end.  Instead, they look up what they need.  For this reason,
        !          2615: such creations should contain many cross references to help the reader find
        !          2616: other information that he or she may not have read.
        !          2617: 
        !          2618: Although nodes are not a fundamental concept in a printed manual, they
        !          2619: still serve to define a cross-reference point and the variants of
        !          2620: @code{@@xref} still serve to make references.  Thus, if you are writing a
        !          2621: manual that will only be printed, and will not be used on-line, you
        !          2622: continue to use the @code{@@node} command for when you make cross
        !          2623: references.
        !          2624: 
        !          2625: There are several kinds of cross reference command.
        !          2626: 
        !          2627: @table @code
        !          2628: @item @@xref
        !          2629: Used to start a sentence in the printed manual saying, `See @dots{}' @*
        !          2630: or an entry in the Info file saying @samp{*note @dots{}}.
        !          2631: 
        !          2632: @item @@pxref
        !          2633: Used to make a reference that starts with a lowercase @samp{see} @*
        !          2634: and is usually contained within parentheses.@refill
        !          2635: 
        !          2636: @item @@inforef
        !          2637: Used to make a reference to an Info file for which there is no printed
        !          2638: manual.@refill
        !          2639: @end table
        !          2640: 
        !          2641: @menu
        !          2642: * Xref::
        !          2643: * Pxref::
        !          2644: * Inforef::
        !          2645: @end menu
        !          2646: 
        !          2647: 
        !          2648: @node     Xref,  Pxref, Cross References, Cross References
        !          2649: @comment  node-name,  next,  previous,  up
        !          2650: @section @@xref
        !          2651: @cindex Xref for cross references
        !          2652: @findex xref
        !          2653: @cindex Cross references using xref
        !          2654: 
        !          2655: @code{@@xref} generates a cross-reference.  In Texinfo, it turns into
        !          2656: an Info cross-reference which the Info @samp{f} command can use
        !          2657: to go directly to another node.  In @TeX{}, it turns into a sentence
        !          2658: of the form
        !          2659: 
        !          2660: @example
        !          2661: See section @var{section} [@var{topic}], page @var{page}
        !          2662: @end example
        !          2663: 
        !          2664: @noindent
        !          2665: but does not generate a period to end it.
        !          2666: 
        !          2667: @code{@@xref} must refer to an Info node created by @code{@@node}, by the
        !          2668: node's name.  
        !          2669: 
        !          2670: @code{@@xref} is followed by an argument inside braces; but actually the
        !          2671: text inside the braces is treated as several arguments, separated by
        !          2672: commas.  Whitespace after these commas is ignored.  A period or comma
        !          2673: @strong{must} follow the closing brace of an @code{@@xref}.  It is required
        !          2674: to terminate the cross reference.  This period or comma will appear in the
        !          2675: output, both in the Info file and in the printed manual.
        !          2676: 
        !          2677: The simplest form of @code{@@xref} takes one argument, the name of another
        !          2678: node in the same Info file.  Here we show the input text, followed by a
        !          2679: blank line and then the output text for Info files and the output text for
        !          2680: printed manuals.
        !          2681: 
        !          2682: @example
        !          2683: @@xref@{node-name@}, for more info.
        !          2684: 
        !          2685: *note node-name::, for more info.
        !          2686: @end example
        !          2687: 
        !          2688: @quotation
        !          2689: See section @var{nnn} [node-name], page @var{ppp}, for more info.
        !          2690: @end quotation
        !          2691: 
        !          2692: With two arguments, the second one is used as the name of the Info
        !          2693: cross-reference, while the first argument is still the node that the
        !          2694: cross-reference points to:
        !          2695: 
        !          2696: @example
        !          2697: @@xref@{node-name, name-for-note@}, for more info.
        !          2698: 
        !          2699: *note name-for-note: node-name, for more info.
        !          2700: @end example
        !          2701: 
        !          2702: @quotation
        !          2703: See section @var{nnn} [node-name], page @var{ppp}, for more info.
        !          2704: @end quotation
        !          2705: 
        !          2706: A third argument replaces the node name when it actually appears in the
        !          2707: @TeX{} output.  It should state the topic discussed by the section being
        !          2708: referenced.  Often, you will want to use initial uppercase letters so it
        !          2709: will be easier to read when the reference is printed.  Use a third argument
        !          2710: when the node name is unsuitable because of syntax, grammar or diction.
        !          2711: 
        !          2712: @example
        !          2713: @@xref@{node-name, name-for-note, Topic Description@}, for more info.
        !          2714: 
        !          2715: *note name-for-note: node-name, for more info.
        !          2716: @end example
        !          2717: 
        !          2718: @quotation
        !          2719: See section @var{nnn} [Topic Description], page @var{ppp}, for more info.
        !          2720: @end quotation
        !          2721: 
        !          2722: If a third argument is given and the second one is empty,
        !          2723: then the third argument serves both purposes:
        !          2724: 
        !          2725: @example
        !          2726: @@xref@{node-name, , Topic Description@}, for more info.
        !          2727: 
        !          2728: *note Topic Description: node-name, for more info.
        !          2729: @end example
        !          2730: 
        !          2731: @quotation
        !          2732: See section @var{nnn} [Topic Description], page @var{ppp}, for more info.
        !          2733: @end quotation
        !          2734: 
        !          2735: A fourth argument specifies the name of the Info file in which the
        !          2736: referenced node is located, assuming it is not the one in which the
        !          2737: reference appears.  @code{@@xref} with only four arguments is used when the
        !          2738: reference is not within one Info file, but is within a single printed
        !          2739: manual---when multiple Texinfo files are incorporated into the same @TeX{}
        !          2740: run but make separate Info files.  (This is seldom the case and usually you
        !          2741: will use five arguments if you are making a reference that is outside the
        !          2742: current Info file.)
        !          2743: 
        !          2744: @example
        !          2745: @@xref@{node-name, name-for-note, Topic, info-file-name@}, 
        !          2746: for more info.
        !          2747: 
        !          2748: *note name-for-note: (info-file-name) node-name, for more info.
        !          2749: @end example
        !          2750: 
        !          2751: @quotation
        !          2752: See section @var{nnn} [Topic], page @var{ppp}, for more info.
        !          2753: @end quotation
        !          2754: 
        !          2755: A fifth argument is used when you are making a reference to another Info
        !          2756: file which is also part of another printed manual.  Write the title of the
        !          2757: manual in this slot.  Since a different manual is made during a different
        !          2758: @TeX{} run, the printed reference will not have a page number.
        !          2759: 
        !          2760: @noindent
        !          2761: Whenever you refer to another manual, use this version of @code{@@xref}
        !          2762: with five arguments.
        !          2763: 
        !          2764: @example
        !          2765: @@xref@{node-name, name-for-note, Topic, info-file-name, A Printed Manual@},
        !          2766: for more info.
        !          2767: 
        !          2768: *note name-for-note: (info-file-name) node-name, for more info.
        !          2769: @end example
        !          2770: 
        !          2771: @quotation
        !          2772: See section Topic of @i{A Printed Manual}, for more info.
        !          2773: @end quotation
        !          2774: 
        !          2775: @noindent
        !          2776: The name of the printed manual will be typeset in italics.
        !          2777: 
        !          2778: Often, you will leave out the second argument when you use the long version
        !          2779: of @code{@@xref}.  In this case, the third argument, the topic description,
        !          2780: will replace the node name:
        !          2781: 
        !          2782: 
        !          2783: @example
        !          2784: @@xref@{node-name, , Topic Description, info-file-name, A Printed Manual@},
        !          2785: for more info.
        !          2786: 
        !          2787: *note Topic Description: (info-file-name) node-name, for more info.
        !          2788: @end example
        !          2789: 
        !          2790: @quotation
        !          2791: See section Topic Description of @i{A Printed Manual}, for more info.
        !          2792: @end quotation
        !          2793: 
        !          2794: 
        !          2795: @node     Pxref, Inforef, Xref, Cross References
        !          2796: @comment  node-name,  next,  previous,  up
        !          2797: @section @@pxref
        !          2798: @cindex Cross references using pxref
        !          2799: @cindex Pxref for cross references
        !          2800: @findex pxref
        !          2801: 
        !          2802: @code{@@pxref} is nearly the same as @code{@@xref}; it differs in only
        !          2803: two ways:
        !          2804: 
        !          2805: @enumerate
        !          2806: @item
        !          2807: The output starts with lower case `see' rather than `See'.@refill
        !          2808: @item
        !          2809: A period is generated automatically in the Info file output to end the Info
        !          2810: cross-reference, but no period is generated for the printed manual.@refill
        !          2811: @end enumerate
        !          2812: 
        !          2813: The purpose of @code{@@pxref} is to be used inside parentheses as part of
        !          2814: another sentence.  In the printed manual, no period is needed after the
        !          2815: cross reference text itself (within the parentheses), but a period is
        !          2816: needed after the cross reference text in the Info file because only thus
        !          2817: can Info recognize the end of the cross-reference.  @code{@@pxref} spares
        !          2818: you the need to use complicated methods to put a period into one form of
        !          2819: the output and not the other.
        !          2820: 
        !          2821: @code{@@pxref} can be used with up to five arguments just like
        !          2822: @code{@@xref}.  (@xref{Xref}.)@refill
        !          2823: 
        !          2824: @node     Inforef, , Pxref, Cross References
        !          2825: @comment  node-name,  next,  previous,  up
        !          2826: @section @@inforef
        !          2827: @cindex Inforef for cross references
        !          2828: @cindex Cross references using inforef
        !          2829: @findex inforef
        !          2830: 
        !          2831: @code{@@inforef} is used for cross-references to Info files for which there
        !          2832: are no printed manuals.  Even in a printed manual, @code{@@inforef}
        !          2833: generates a reference directing the user to look in an Info file.
        !          2834: @code{@@inforef} takes exactly three arguments.  The syntax is
        !          2835: @code{@@inforef@{@var{node}, @var{name}, @var{file}@}}.
        !          2836: 
        !          2837: @example
        !          2838: @@inforef@{node-name, name-for-note, info-file-name@}, for more information.
        !          2839: 
        !          2840: *note name-for-note: (info-file-name) node-name, for more information.
        !          2841: @end example
        !          2842: 
        !          2843: @quotation
        !          2844: See Info file @file{info-file-name}, node `node-name', for more information.
        !          2845: @end quotation
        !          2846: 
        !          2847: @node Formatting Paragraphs, Marking Text, Cross References, Top
        !          2848: @comment  node-name,  next,  previous,  up
        !          2849: @chapter Formatting Paragraphs
        !          2850: @cindex Formatting paragraphs
        !          2851: @cindex Paragraphs, formatting
        !          2852: 
        !          2853: Usually, a Texinfo file will be processed both by @TeX{} and by the
        !          2854: @kbd{M-x texinfo-format-buffer} command.  Consequently, you must make sure
        !          2855: that text will come out looking right both in the printed manual and in the
        !          2856: on-line help.@refill
        !          2857: 
        !          2858: For example, unless told otherwise, @kbd{M-x texinfo-format-buffer} will
        !          2859: not refill a paragraph after processing it although @TeX{} will.  This
        !          2860: means that a paragraph with numerous or large @@-commands may not look
        !          2861: properly filled after processing by Info.  The @@-commands are removed from
        !          2862: the text but the lines are not refilled so some are much shorter than they
        !          2863: were.  To cause the @kbd{M-x texinfo-format-buffer} command to refill such
        !          2864: a paragraph, put @code{@@refill} at the end of the paragraph.@refill
        !          2865: 
        !          2866: @TeX{} may also format a document improperly.  For example, page breaks may
        !          2867: occur in the ``wrong place''; to control this, text can be held together by a
        !          2868: group command that keeps the text within the group from being split across
        !          2869: two pages.
        !          2870: 
        !          2871: @iftex
        !          2872: The first section that follows is about refilling and preventing
        !          2873: indentation; the second section is about line and paragraph breaks,
        !          2874: creating blank lines, and grouping text.
        !          2875: @end iftex
        !          2876: 
        !          2877: @menu
        !          2878: * Refilling & Noindent::      Refilling paragraphs & preventing indentation
        !          2879: * Breaks Blank-Lines Groups::  Line and paragraph breaks, blank lines, grouping
        !          2880: @end menu
        !          2881: 
        !          2882: @node Refilling & Noindent, Breaks Blank-Lines Groups, Formatting Paragraphs, Formatting Paragraphs
        !          2883: @comment  node-name,  next,  previous,  up
        !          2884: @section Refilling Paragraphs and Preventing Indentation
        !          2885: @cindex Refilling paragraphs automatically
        !          2886: @cindex Preventing indentation in the printed text
        !          2887: 
        !          2888: The @code{@@refill} and @code{@@noindent} commands are used just after or
        !          2889: just before paragraphs which, after processing by either Info or @TeX{},
        !          2890: might look bad.  The @code{@@refill} command refills a paragraph in the
        !          2891: Info file after all the other processing has been done.  In the printed
        !          2892: manual, the @code{@@noindent} command prevents a piece of text that is a
        !          2893: continuation of the preceding paragraph from being indented as if it were a
        !          2894: new paragraph.@refill
        !          2895: 
        !          2896: @menu
        !          2897: * Refill::     Refilling an info paragraph after other processing.
        !          2898: * Noindent::   Preventing paragraph indentation in continuation text.
        !          2899: @end menu
        !          2900: 
        !          2901: @node     Refill, Noindent, Refilling & Noindent, Refilling & Noindent
        !          2902: @comment  node-name,  next,  previous,  up
        !          2903: @subsection @@refill
        !          2904: @findex refill
        !          2905: 
        !          2906: If a paragraph contains sizable @@-constructs, it may look badly filled
        !          2907: after @code{texinfo-format-buffer} is through with it.
        !          2908: 
        !          2909: Put @code{@@refill} at the end of the paragraph to tell
        !          2910: @code{texinfo-format-buffer} to refill the paragraph after finishing all
        !          2911: other processing on it.  @code{@@refill} has no effect on @TeX{}, which
        !          2912: always fills everything that ought to be filled.  For example,@refill
        !          2913: 
        !          2914: @example
        !          2915: To use @@code@{foo@}, pass @@samp@{xx%$@} and @@var@{flag@} and type @@kbd@{x@}
        !          2916: after running @@code@{make-foo@}.@@refill
        !          2917: @end example
        !          2918: 
        !          2919: @noindent
        !          2920: produces (in the Info file)
        !          2921: 
        !          2922: @example
        !          2923: To use `foo', pass `xx%$' and FLAG and type `x' after running `make-foo'.
        !          2924: @end example
        !          2925: 
        !          2926: @noindent
        !          2927: whereas without the @code{@@refill} it would produce
        !          2928: 
        !          2929: @example
        !          2930: To use `foo', pass `xx%$' and FLAG and type `x'
        !          2931: after running `make-foo'.
        !          2932: @end example
        !          2933: 
        !          2934: @noindent
        !          2935: with the line broken at the same place as in the Texinfo input file.
        !          2936: 
        !          2937: Do not put a space before @code{@@refill}; otherwise the command might be
        !          2938: put at the beginning of the line when you refill the paragraph in the
        !          2939: Texinfo file with @kbd{M-q} (@code{fill-paragraph}).  If this were to
        !          2940: happen, the @code{@@refill} command might fail to work
        !          2941: 
        !          2942: @node     Noindent, , Refill, Refilling & Noindent
        !          2943: @comment  node-name,  next,  previous,  up
        !          2944: @subsection @@noindent
        !          2945: @findex noindent
        !          2946: 
        !          2947: If you have text following an @code{@@example} or other similar ``special
        !          2948: paragraph'' that reads as a continuation of the text before the
        !          2949: @code{@@example}, it is good to prevent this text from being indented as a
        !          2950: new paragraph.  To accomplish this, put @code{@@noindent} on a line by
        !          2951: itself before the start of the text that should not be indented. For
        !          2952: example,@refill
        !          2953: 
        !          2954: @example
        !          2955: @@example
        !          2956: This is an example
        !          2957: @@end example
        !          2958: 
        !          2959: @@noindent
        !          2960: This line will not be indented.
        !          2961: @end example
        !          2962: 
        !          2963: @noindent
        !          2964: produces
        !          2965: 
        !          2966: @example
        !          2967: This is an example
        !          2968: @end example
        !          2969: 
        !          2970: @noindent
        !          2971: This line will not be indented.
        !          2972: 
        !          2973: To adjust the number of blank lines properly in the Info file output,
        !          2974: remember that the line containing @code{@@noindent} does not generate a
        !          2975: blank line, and neither does the @code{@@end example} line.
        !          2976: 
        !          2977: In the Texinfo source file for this documentation, each of the lines that
        !          2978: says `produces' is preceded by a line containing @code{@@noindent}.
        !          2979: 
        !          2980: @node Breaks Blank-Lines Groups, , Refilling & Noindent, Formatting Paragraphs
        !          2981: @comment  node-name,  next,  previous,  up
        !          2982: @section Breaks, Blank Lines and Groups
        !          2983: 
        !          2984: Texinfo has several commands for making blank lines, for forcing paragraph
        !          2985: and page breaks in the printed manual and for preventing text from running
        !          2986: from one page to the next.
        !          2987: 
        !          2988: @table @code
        !          2989: @item @@*
        !          2990: Force a line break in the printed manual.  This
        !          2991: command has no effect on the Info file.@refill
        !          2992: 
        !          2993: @item @@sp
        !          2994: Generate blank lines in both the printed manual and in the Info file.@refill
        !          2995: 
        !          2996: @item @@br
        !          2997: Force a paragraph break in the printed manual.  This command has no effect
        !          2998: on the Info file.@refill
        !          2999: 
        !          3000: @item @@w
        !          3001: Prevent text from being split across two lines in the printed manual.  This
        !          3002: command has no effect on the Info file.@refill
        !          3003: 
        !          3004: @item @@page
        !          3005: Start a new page in the printed manual.  This
        !          3006: command has no effect on the Info file.@refill
        !          3007: 
        !          3008: @item @@group
        !          3009: Hold text together that must appear on one printed page.  This
        !          3010: command has no effect on the Info file.@refill
        !          3011: 
        !          3012: @item @@need
        !          3013: Start a new printed page if required space not on this one.  This
        !          3014: command has no effect on the Info file.@refill
        !          3015: @end table
        !          3016: 
        !          3017: @menu
        !          3018: * Line Breaks:: Force a line break in the printed manual.
        !          3019: * Sp::         Generate blank lines.
        !          3020: * Br::         Force a paragraph break in the printed manual.
        !          3021: * W::          Prevent a paragraph break in the printed manual.
        !          3022: * Page::       Start a new page in the printed manual.
        !          3023: * Group::      Hold text together that must appear on one printed page.
        !          3024: * Need::       Start a new printed page if required space not on this one.
        !          3025: @end menu
        !          3026: 
        !          3027: 
        !          3028: @node     Line Breaks, Sp, Breaks Blank-Lines Groups, Breaks Blank-Lines Groups
        !          3029: @comment  node-name,  next,  previous,  up
        !          3030: @subsection @@*
        !          3031: @findex asterisk
        !          3032: @findex *
        !          3033: @cindex Line breaks
        !          3034: @cindex Breaks in a line
        !          3035: 
        !          3036: 
        !          3037: @code{@@*} forces a line break in the printed manual.  It has no effect on
        !          3038: the Info file output, where line breaks follow those in the source file.
        !          3039: If you want a line break at a certain spot in both forms of output, break
        !          3040: the line there in the source file and put @code{@@*} at the end of the
        !          3041: line.
        !          3042: 
        !          3043: 
        !          3044: @node     Sp, Br, Line Breaks,  Breaks Blank-Lines Groups
        !          3045: @comment  node-name,  next,  previous,  up
        !          3046: @subsection @@sp
        !          3047: @findex sp (line spacing)
        !          3048: @cindex Spaces from line to line
        !          3049: @cindex Line spacing
        !          3050: 
        !          3051: A line containing @code{@@sp @var{n}} generates @var{n} blank lines of
        !          3052: space in either the printed manual or the Info file.  For example,
        !          3053: 
        !          3054: @example
        !          3055: @@sp 2
        !          3056: @end example
        !          3057: 
        !          3058: @noindent
        !          3059: generates two blank lines.  
        !          3060: 
        !          3061: @node     Br, W, Sp, Breaks Blank-Lines Groups
        !          3062: @comment  node-name,  next,  previous,  up
        !          3063: @subsection @@br
        !          3064: @findex br (paragraph breaks)
        !          3065: @cindex Paragraph breaks
        !          3066: @cindex Breaks in a paragraph
        !          3067: 
        !          3068: In a printed manual, a line containing @code{@@br} forces a paragraph
        !          3069: break; in the Info file output, it does nothing (not even a blank line
        !          3070: results from it).
        !          3071: 
        !          3072: @node     W, Page,  Br, Breaks Blank-Lines Groups
        !          3073: @comment  node-name,  next,  previous,  up
        !          3074: @subsection @@w
        !          3075: @findex w (preventing a line break)
        !          3076: @cindex Line breaks, preventing
        !          3077: 
        !          3078: In a printed manual, @code{@@w@{@var{text}@}} outputs @var{text} and prohibits
        !          3079: line breaks within @var{text}.  @code{@@w} has no effect on the Info file
        !          3080: output; it is the same as would result from just @var{text}.
        !          3081: 
        !          3082: 
        !          3083: @node     Page, Group, W,  Breaks Blank-Lines Groups
        !          3084: @comment  node-name,  next,  previous,  up
        !          3085: @subsection @@page
        !          3086: @cindex Page breaks
        !          3087: @findex page
        !          3088: 
        !          3089: A line containing @code{@@page} starts a new page in a printed manual.  The
        !          3090: line has no effect on Info files since they are not paginated.
        !          3091: 
        !          3092: @node     Group, Need, Page,  Breaks Blank-Lines Groups
        !          3093: @comment  node-name,  next,  previous,  up
        !          3094: @subsection @@group
        !          3095: @cindex Group
        !          3096: @cindex Holding text together vertically
        !          3097: @cindex Vertically holding text together
        !          3098: @findex group
        !          3099: 
        !          3100: A line containing @code{@@group} begins an unsplittable vertical group,
        !          3101: which must appear entirely on one page.  The group is terminated by a line
        !          3102: containing @code{@@end group}.  These two lines produce no output of their
        !          3103: own, and in the Info file output they have no effect at all.
        !          3104: 
        !          3105: If you forget to end a group, you may get strange and unfathomable error
        !          3106: messages when you run @TeX{}.  This is because @TeX{} keeps trying to put
        !          3107: the rest of the Texinfo file into the group and error messages do not start
        !          3108: to get generated until @TeX{} has gone a long way.  It's a good rule of
        !          3109: thumb to look for a missing @code{@@end group} if you get incomprehensible
        !          3110: error messages in @TeX{}.
        !          3111: 
        !          3112: @node     Need, , Group,  Breaks Blank-Lines Groups
        !          3113: @comment  node-name,  next,  previous,  up
        !          3114: @subsection @@need
        !          3115: @cindex Need
        !          3116: @findex need
        !          3117: 
        !          3118: A line containing @code{@@need @var{n}} starts a new page in a printed
        !          3119: manual if fewer than @var{n} mils (thousandths of an inch) remain on the
        !          3120: current page.  The line has no effect on Info files since they are not
        !          3121: paginated.@refill
        !          3122: 
        !          3123: @node Marking Text, Conditionals , Formatting Paragraphs, Top
        !          3124: @comment  node-name,  next,  previous,  up
        !          3125: @chapter Marking Text Within a Paragraph
        !          3126: @cindex Marking text within a paragraph
        !          3127: 
        !          3128: In Texinfo, text within a paragraph can be marked in a variety of ways.
        !          3129: The most important way is to specify whether a word or phrase is a
        !          3130: definition, a metasyntactic variable, a literal example of a program or
        !          3131: what not.
        !          3132: 
        !          3133: In addition, there are special commands for inserting single characters 
        !          3134: that have special meaning in Texinfo, such as braces, and for inserting
        !          3135: symbols with special handling, such as dots and bullets.  Finally, there
        !          3136: are ways to emphasize words.
        !          3137: 
        !          3138: @menu
        !          3139: * Specifying::                 Specifying commands, files and so on.
        !          3140: * Braces Atsigns Periods::     Inserting braces, @samp{@@} and periods.
        !          3141: * Dots Bullets Tex::           Inserting dots, bullets and the @TeX{} logo
        !          3142: * Emphasis::                   Emphasizing text.
        !          3143: @end menu
        !          3144: 
        !          3145: @node Specifying, Braces Atsigns Periods, , Marking Text
        !          3146: @comment  node-name,  next,  previous,  up
        !          3147: @section Specifying Definitions, Files, Commands etc.
        !          3148: @cindex Highlighting
        !          3149: @cindex Specifying commands, files and the like
        !          3150: @cindex Definitions, specifying them within text
        !          3151: @cindex Commands, specifying them within text
        !          3152: @cindex Files, specifying them within text
        !          3153: 
        !          3154: Texinfo has a variety of commands for specifying just what kind of object a
        !          3155: piece of text refers to.  Metasyntactic variables, for example, are marked
        !          3156: by one @@-command and code by another.  Texinfo uses this information to
        !          3157: determine how to highlight the text.  Since the pieces of text are labelled
        !          3158: by commands that tell what kind of object they are, it is easy to change
        !          3159: the way Texinfo formats and typesets such text.  For example, code is
        !          3160: usually illustrated in a typewriter font, but it would be easy to change
        !          3161: the way Texinfo highlights code to use another font.  This change would not
        !          3162: effect how metasyntatic variables are highlighted.  If straight typesetting
        !          3163: commands were used in the body of the file, you would have to check every
        !          3164: single occurrence to make sure that you were changing code and not
        !          3165: something else that should not be changed.
        !          3166: 
        !          3167: In addition, the commands can be used to generate useful information from
        !          3168: the file, such as lists of functions or file names.  It is possible, for
        !          3169: example, to write code in Emacs Lisp (or a keyboard macro) to insert an
        !          3170: index entry after every paragraph that contains the text labelled by a
        !          3171: specified command.  You could do this to construct an index of functions if
        !          3172: you had not already made the entries.
        !          3173: 
        !          3174: The commands serve a variety of purposes:
        !          3175: 
        !          3176: @table @code
        !          3177: @item @@code
        !          3178: Indicates text that is a literal example of a piece of a program.@refill
        !          3179: 
        !          3180: @item @@samp
        !          3181: Indicates text that is a literal example of a sequence of characters.@refill
        !          3182: 
        !          3183: @item @@file
        !          3184: Indicates the name of a file.@refill
        !          3185: 
        !          3186: @item @@kbd
        !          3187: Indicates the names of keys on the keyboard or characters you type.@refill
        !          3188: 
        !          3189: @item @@key
        !          3190: Used for the conventional name for a key on a keyboard.@refill
        !          3191: 
        !          3192: @item @@ctrl
        !          3193: Indicates an ASCII control character.
        !          3194: 
        !          3195: @item @@var
        !          3196: Indicates a metasyntactic variable.
        !          3197: 
        !          3198: @item @@dfn
        !          3199: Indicates the introductory or defining use of a term.
        !          3200: 
        !          3201: @item @@cite
        !          3202: Indicates the name of a book.
        !          3203: @end table
        !          3204: 
        !          3205: 
        !          3206: 
        !          3207: @menu
        !          3208: * Code::       A literal example of a piece of a program.
        !          3209: * Samp::       A literal example of a sequence of characters.
        !          3210: * File::       The name of a file.
        !          3211: * Kbd::                The names of keys or else characters you type.
        !          3212: * Key::                The conventional name for a key on a keyboard.
        !          3213: * Ctrl::       Indicates the ASCII control character.
        !          3214: * Var::                A variable.
        !          3215: * Dfn::                The introductory or defining use of a term.
        !          3216: * Cite::       The name of a book.
        !          3217: @end menu
        !          3218: 
        !          3219: @node     Code, Samp, , Specifying
        !          3220: @comment  node-name,  next,  previous,  up
        !          3221: @subsection @@code
        !          3222: @findex code
        !          3223: 
        !          3224: @code{@@code} is used to indicate text that is a piece of a program which
        !          3225: consists of entire syntactic tokens.  The text follows, enclosed in braces.
        !          3226: 
        !          3227: For example, @code{@@code} is used for an expression in a program, the name
        !          3228: of a variable or function used in a program, or a keyword.  @code{@@code}
        !          3229: is not used for a piece of a token, such as when speaking about the
        !          3230: characters used in a token; for example, when you are explaining what
        !          3231: letters or printable symbols can be used in the names of functions.  It is
        !          3232: also not used for input to programs unless the input is written in a
        !          3233: language that is like a programming language.  For example, it is not used
        !          3234: for the single character commands of GNU Emacs although it is used for the
        !          3235: names of Emacs Lisp functions that the keyboard commands invoke.
        !          3236: 
        !          3237: You should also @code{@@code} for command names in command languages that
        !          3238: resemble programming languages, such as Texinfo or the shell.  Note,
        !          3239: however, that @code{@@code} is not used for options such as @samp{-c} when
        !          3240: such options stand alone.  There is some argument as to whether an entire
        !          3241: shell command incorporating an option should be written using @code{@@code}
        !          3242: or @code{@@samp}.@refill
        !          3243: 
        !          3244: It is an error to alter the case of a word inside an @code{@@code}
        !          3245: command.  This is a particularly insidious error if the language being
        !          3246: documented is case sensitive.  If the command is @code{printf}, then
        !          3247: @code{Printf} is a misspelling.  If you do not like having such a command
        !          3248: with lower case at the beginning of a sentence, you may wish to rearrange
        !          3249: the sentence.
        !          3250: 
        !          3251: In the printed manual, @code{@@code} puts the argument in bold face.
        !          3252: In the Info file, it uses `@dots{}' quotation.  For example:
        !          3253: 
        !          3254: @example
        !          3255: To compare two files, showing text inserted or removed, use @@code@{diff@}.
        !          3256: @end example
        !          3257: 
        !          3258: @noindent
        !          3259: produces
        !          3260: 
        !          3261: @quotation
        !          3262: To compare two files, showing text inserted or removed, use @code{diff}.
        !          3263: @end quotation
        !          3264: 
        !          3265: @iftex
        !          3266: In the Info file, it looks like this:
        !          3267: 
        !          3268: @example
        !          3269: @dots{}, use `diff'
        !          3270: @end example
        !          3271: @end iftex
        !          3272: 
        !          3273: @node     Samp, File, Code, Specifying
        !          3274: @comment  node-name,  next,  previous,  up
        !          3275: @subsection @@samp
        !          3276: @findex samp
        !          3277: 
        !          3278: @code{@@samp} is used to indicate text that is a literal example of a
        !          3279: sequence of characters in a file, string, pattern, etc.  The text follows,
        !          3280: enclosed in braces.  The argument appears within `@dots{}' quotation in
        !          3281: both the Info file and the printed manual; in addition, it is printed in a
        !          3282: fixed-width font.
        !          3283: 
        !          3284: @example
        !          3285: To match @@samp@{foo@} at the end of the line, use the regexp @@samp@{foo$@}.
        !          3286: @end example
        !          3287: 
        !          3288: @noindent
        !          3289: produces
        !          3290: 
        !          3291: @quotation
        !          3292: To match @samp{foo} at the end of the line, use the regexp @samp{foo$}.
        !          3293: @end quotation
        !          3294: 
        !          3295: Any time you are referring to single characters, you should use @code{@@samp}
        !          3296: unless @code{@@kbd} is more appropriate.  Basically, @code{@@samp} is a
        !          3297: catchall for whatever is not covered by @code{@@code}, @code{@@file},
        !          3298: @code{@@kbd}.
        !          3299: 
        !          3300: Punctuation marks that are part of the English text that surrounds the
        !          3301: strings you are specifying are @emph{never} included within the braces.  In
        !          3302: the following sentence, for example, the commas and period are outside of
        !          3303: the braces:
        !          3304: 
        !          3305: @example
        !          3306: A symbol name ends in @@samp@{a@}, @@samp@{b@}, or @@samp@{c@}.
        !          3307: @end example
        !          3308: 
        !          3309: @node     File, Kbd, Samp, Specifying
        !          3310: @comment  node-name,  next,  previous,  up
        !          3311: @subsection @@file
        !          3312: @findex file
        !          3313: 
        !          3314: @code{@@file} is used to indicate text that is the name of a file or
        !          3315: directory.  Currently, it is equivalent to @code{@@samp} in its effects on
        !          3316: the output.  For example,@refill
        !          3317: 
        !          3318: @example
        !          3319: The @@file@{.el@} files are in 
        !          3320: the @@file@{/gnu/emacs/lisp@} directory.
        !          3321: @end example
        !          3322: 
        !          3323: @noindent
        !          3324: produces
        !          3325: 
        !          3326: @quotation
        !          3327: The @file{.el} files are in 
        !          3328: the @file{/gnu/emacs/lisp} directory.
        !          3329: @end quotation
        !          3330: 
        !          3331: @node     Kbd, Key, File, Specifying
        !          3332: @comment  node-name,  next,  previous,  up
        !          3333: @subsection @@kbd
        !          3334: @findex kbd
        !          3335: 
        !          3336: @code{@@kbd} is used much like @code{@@code}.  The difference is that
        !          3337: @code{@@kbd} is for names of keys on the keyboard, or of characters you can
        !          3338: type.  For example, to refer to the command @kbd{M-a}, you would use
        !          3339: 
        !          3340: @example
        !          3341: @@kbd@{M-a@}
        !          3342: @end example
        !          3343: 
        !          3344: @noindent
        !          3345: and to refer to @kbd{M-x shell}, you would use
        !          3346: 
        !          3347: @example
        !          3348: @@kbd@{M-x shell@}
        !          3349: @end example
        !          3350: 
        !          3351: The @code{@@kbd} command has the same effect as @code{@@code} in Info,
        !          3352: but may produce a different font in a printed manual.@refill
        !          3353: 
        !          3354: You can embed another @@-command inside the braces of a @code{@@kbd}
        !          3355: command.  This is the way to describe a command that would be described
        !          3356: more verbosely as ``press an @samp{r} and then press the @key{RET} key'':
        !          3357: 
        !          3358: @example
        !          3359: @@kbd@{r @@key@{RET@}@}  
        !          3360: @end example
        !          3361: 
        !          3362: @noindent
        !          3363: This produces: @kbd{r @key{RET}}
        !          3364: 
        !          3365: You also use the @code{@@kbd} command if you are spelling out the letters
        !          3366: you type; for example:
        !          3367: 
        !          3368: @example
        !          3369: To give the @@code@{logout@} command, 
        !          3370: type the characters @@kbd@{l o g o u t @@key@{RET@}@}.
        !          3371: @end example
        !          3372: 
        !          3373: @noindent
        !          3374: This produces
        !          3375: 
        !          3376: @quotation
        !          3377: To give the @code{logout} command, 
        !          3378: type the characters @kbd{l o g o u t @key{RET}}.
        !          3379: @end quotation
        !          3380: 
        !          3381: @node     Key, Ctrl, Kbd, Specifying
        !          3382: @comment  node-name,  next,  previous,  up
        !          3383: @subsection @@key
        !          3384: @findex key
        !          3385: 
        !          3386: @code{@@key} is used for the conventional name for a key on a keyboard, as
        !          3387: in
        !          3388: 
        !          3389: @example
        !          3390: @@key@{RET@}
        !          3391: @end example
        !          3392: 
        !          3393: Often, @code{@@key} is used within the argument of a @code{@@kbd}
        !          3394: command, whenever the sequence of characters to be typed includes one or
        !          3395: more keys that are described by name.@refill
        !          3396: 
        !          3397: For example, to produce @kbd{C-x @key{ESC}} you would use 
        !          3398: 
        !          3399: @example
        !          3400: @@kbd@{C-x @@key@{ESC@}@}
        !          3401: @end example
        !          3402: 
        !          3403: 
        !          3404: The recommended names to use for keys are in upper case and are
        !          3405: 
        !          3406: @table @t
        !          3407: @item SPC
        !          3408: Space.
        !          3409: @item RET
        !          3410: Return.
        !          3411: @item LFD
        !          3412: Linefeed.
        !          3413: @item TAB
        !          3414: Tab.
        !          3415: @item BS
        !          3416: Backspace.
        !          3417: @item ESC
        !          3418: Escape.
        !          3419: @item DEL
        !          3420: Delete.
        !          3421: @item SFT
        !          3422: Shift.
        !          3423: @item CTL
        !          3424: Control.
        !          3425: @item META
        !          3426: Meta.
        !          3427: @end table
        !          3428: 
        !          3429: There are subtleties to handling words like `meta' or `ctrl' which are
        !          3430: names of shift keys.  When mentioning a character in which the shift key is
        !          3431: used, such as @kbd{Meta-a}, use the @code{@@kbd} command alone without the
        !          3432: @code{@@key} command, but when you are referring to shift key in isolation,
        !          3433: use the @code{@@key} command.  For example, you would use
        !          3434: @samp{@@kbd@{Meta-a@}} to produce @kbd{Meta-a} and @samp{@@key@{META@}} to
        !          3435: produce @key{META}.
        !          3436: 
        !          3437: @node     Ctrl, Var, Key, Specifying
        !          3438: @comment  node-name,  next,  previous,  up
        !          3439: @subsection @@ctrl
        !          3440: @findex ctrl
        !          3441: 
        !          3442: @code{@@ctrl} is used to describe an ASCII control character.  The pattern
        !          3443: of usage is @code{@@ctrl@{@var{ch}@}}, where @var{ch} is an ASCII character
        !          3444: whose control-equivalent is wanted.  Thus, you put in an @samp{f} when
        !          3445: you want to indicate a @samp{control-f}
        !          3446: 
        !          3447: Thus, to specify @samp{control-f}, you would enter
        !          3448: 
        !          3449: @example
        !          3450: @@ctrl@{f@}
        !          3451: @end example
        !          3452: 
        !          3453: @noindent
        !          3454: which produces
        !          3455: 
        !          3456: @quotation
        !          3457: @ctrl{f}
        !          3458: @end quotation
        !          3459: 
        !          3460: In the Info file, this generates the specified control character, output
        !          3461: literally into the file.  This is done so a user can copy the specified
        !          3462: control character (along with whatever else he or she wants) into another
        !          3463: Emacs buffer and use it.  Since the `control-h',`control-i', and
        !          3464: `control-j' characters are formatting characters, they should not be
        !          3465: indicated this way.@refill
        !          3466: 
        !          3467: In a printed manual, this generates text to describe or identify that
        !          3468: control character: an uparrow followed by the character @var{ch}.
        !          3469: 
        !          3470: @node     Var, Dfn, Ctrl, Specifying
        !          3471: @comment  node-name,  next,  previous,  up
        !          3472: @subsection @@var
        !          3473: @findex var
        !          3474: 
        !          3475: @code{@@var} is used to indicate metasyntactic variables.  A metasyntactic
        !          3476: variable is something that stands for another piece of text.  You would use
        !          3477: a metasyntactic variable in the documentation of a function to describe the
        !          3478: arguments that are passed to that function.
        !          3479: 
        !          3480: @code{@@var} is not used for names of particular variables in programming
        !          3481: languages.  For example, the Texinfo variable @code{texinfo-tex-command} is
        !          3482: not a metasyntactic variable.
        !          3483: 
        !          3484: Its effect in the Info file is to upcase the argument; in the printed
        !          3485: manual, to italicize it.  Example:
        !          3486: 
        !          3487: @example
        !          3488: To delete file @@var@{filename@}, type @@code@{rm @@var@{filename@}@}.
        !          3489: @end example
        !          3490: 
        !          3491: @noindent
        !          3492: produces
        !          3493: 
        !          3494: @quotation
        !          3495: To delete file @var{filename}, type @code{rm @var{filename}}.
        !          3496: @end quotation
        !          3497: 
        !          3498: In some documentation styles, metasyntactic variables are shown with angle
        !          3499: brackets, for example: 
        !          3500: 
        !          3501: @example
        !          3502: @dots{}, type rm <filename>
        !          3503: @end example
        !          3504: 
        !          3505: @node     Dfn, Cite, Var, Specifying
        !          3506: @comment  node-name,  next,  previous,  up
        !          3507: @subsection @@dfn
        !          3508: @findex dfn
        !          3509: 
        !          3510: @code{@@dfn} is used to identify the introductory or defining use of a
        !          3511: technical term.  The command should be used only in a passage whose purpose
        !          3512: is to introduce a term which will be used again or which the reader ought
        !          3513: to know.  Mere passing mention of a term for the first time doesn't deserve
        !          3514: @code{@@dfn}.  It generates italics in the printed manual, and double
        !          3515: quotation marks in the Info file.  Example:
        !          3516: 
        !          3517: @example
        !          3518: Getting rid of a file is called @@dfn@{deleting@} it.
        !          3519: @end example
        !          3520: 
        !          3521: @noindent
        !          3522: produces
        !          3523: 
        !          3524: @quotation
        !          3525: Getting rid of a file is called @dfn{deleting} it.
        !          3526: @end quotation
        !          3527: 
        !          3528: @node     Cite, , Dfn, Specifying
        !          3529: @comment  node-name,  next,  previous,  up
        !          3530: @subsection @@cite
        !          3531: @findex cite
        !          3532: 
        !          3533: @code{@@cite} is used for the name of a book.  It produces italics
        !          3534: in the printed manual, and quotation marks in the Info file.
        !          3535: 
        !          3536: 
        !          3537: @node Braces Atsigns Periods, Dots Bullets Tex, Specifying , Marking Text
        !          3538: @comment  node-name,  next,  previous,  up
        !          3539: @section Inserting Braces, @samp{@@} and Periods
        !          3540: @cindex Inserting braces, @@ and periods
        !          3541: @cindex Braces, inserting
        !          3542: @cindex Periods, inserting
        !          3543: @cindex Single characters,  commands to insert
        !          3544: @cindex Commands to insert single characters
        !          3545: 
        !          3546: @samp{@@} and curly braces are special characters in Texinfo.  This means
        !          3547: that you have to put an @samp{@@} in front of these characters in order to
        !          3548: insert them into text.  
        !          3549: 
        !          3550: Periods are also special.  Depending on whether the period is inside of or
        !          3551: at the end of a sentence, less or more space is inserted after a period in
        !          3552: a typeset manual.  Since it is not always possible for Texinfo to determine
        !          3553: when a period ends a sentence and when it is used in an abbreviation,
        !          3554: special commands are needed.  (Usually, Texinfo figures out how to handle
        !          3555: periods, so you don't have to use the special commands; you just enter a
        !          3556: period as you would if you were using a typewriter, which means you put two
        !          3557: spaces after the period that ends a sentence and after a colon.)@refill
        !          3558: 
        !          3559: @menu
        !          3560: * Inserting an Atsign::                inserting an atsign.
        !          3561: * Insert Left Brace::          Inserting a left brace.
        !          3562: * Insert Colon::               Preventing unintended additional whitespace.
        !          3563: * Insert Period::              Inserting a period that does end a sentence.
        !          3564: @end menu
        !          3565: 
        !          3566: @node Inserting An Atsign, Insert Left Brace, , Braces Atsigns Periods
        !          3567: @comment  node-name,  next,  previous,  up
        !          3568: @subsection @@@@
        !          3569: @findex at-signs
        !          3570: @comment for version 19: this does not work findex @@
        !          3571: 
        !          3572: @code{@@@@} stands for a single @@ in either printed or Info output.
        !          3573: 
        !          3574: @node Insert Left Brace, Insert Colon, Inserting an Atsign, Braces Atsigns Periods
        !          3575: @comment  node-name,  next,  previous,  up
        !          3576: @subsection @@@{
        !          3577: @findex left-braces
        !          3578: @comment for version 19: this does not work findex @{
        !          3579: 
        !          3580: @code{@@@{} stands for a single @{ in either printed or Info output.
        !          3581: 
        !          3582: @subsection @@@}
        !          3583: @findex right-braces
        !          3584: @comment for version 19: this does not work findex @}
        !          3585: 
        !          3586: @code{@@@}} stands for a single @} in either printed or Info output.
        !          3587: 
        !          3588: @node Insert Colon, Insert Period, Insert Left Brace, Braces Atsigns Periods
        !          3589: @comment  node-name,  next,  previous,  up
        !          3590: @subsection @@:
        !          3591: @findex at-sign colons
        !          3592: @comment for version 19: this does not work findex @:
        !          3593: 
        !          3594: @code{@@:}@: is used after a character such as period or colon which
        !          3595: normally causes @TeX{} to increase the width of the following whitespace,
        !          3596: to suppress that effect.  For example, it can be used after periods that
        !          3597: end abbreviations and do not end sentences.  @code{@@:}@: has no effect
        !          3598: on the Info file output.
        !          3599: 
        !          3600: @example
        !          3601: It displays @@code@{Foo:@}@@: at that time.
        !          3602: @end example
        !          3603: 
        !          3604: @noindent
        !          3605: produces
        !          3606: 
        !          3607: @quotation
        !          3608: It displays @code{Foo:}@: at that time.
        !          3609: @end quotation
        !          3610: 
        !          3611: The meanings of @code{@@:}@: and @code{@@.}@: in Texinfo are designed to
        !          3612: work well with the Emacs sentence motion commands.  This means they are
        !          3613: different from their meanings in some other formatting systems that use
        !          3614: @@-commands.
        !          3615: 
        !          3616: @refill
        !          3617: 
        !          3618: @node Insert Period, , Insert Colon, Braces Atsigns Periods
        !          3619: @comment  node-name,  next,  previous,  up
        !          3620: @subsection @@.
        !          3621: @findex at-sign periods
        !          3622: @comment for version 19: this does not work at-sign period
        !          3623: 
        !          3624: @code{@@.}@: stands for a period that really does end a sentence, useful
        !          3625: when @TeX{} would otherwise assume by its heuristics that that is not so.
        !          3626: This happens when there is a single-capital-letter word at the end of a
        !          3627: sentence: @TeX{} normally guesses that it is an abbreviation.
        !          3628: 
        !          3629: In the Info file output, @code{@@.}@: is equivalent to a simple @samp{.}.
        !          3630: The Texinfo program preserves the amount of space that you use, so put
        !          3631: two spaces after a period if you intend it to be the end of a sentence
        !          3632: (as well as using @code{@@.}, if necessary, for the printed manual's sake).
        !          3633: 
        !          3634: @example
        !          3635: Give it to X. Give it to X@@.  Give it to X@@.
        !          3636: @end example
        !          3637: 
        !          3638: @noindent
        !          3639: produces
        !          3640: 
        !          3641: @quotation
        !          3642: Give it to X. Give it to X@.  Give it to X@.
        !          3643: @end quotation
        !          3644: 
        !          3645: @node Dots Bullets Tex, Emphasis, Braces Atsigns Periods, Marking Text
        !          3646: @comment  node-name,  next,  previous,  up
        !          3647: @section Inserting Dots, Bullets and @TeX{}
        !          3648: @cindex Dots, inserting
        !          3649: @cindex Bullets, inserting
        !          3650: @cindex TeX-logo, inserting
        !          3651: @cindex Special typesetting commands
        !          3652: @cindex Typesetting commands for dots and the like
        !          3653: 
        !          3654: An ellipsis, a line of dots, is typeset differently than a string of
        !          3655: periods; more whitespace is put between the dots in the ellipsis than is
        !          3656: put between the periods.  Because of this, a special command is used in
        !          3657: Texinfo for inserting dots.  Also, the trademark, @TeX{}, is typeset in a
        !          3658: special fashion and it needs an @@-command, as does the command for
        !          3659: inserting the copyright symbol.  The @code{@@bullet} command is special,
        !          3660: too.  Each of these commands is followed by a pair of braces, @samp{@{@}},
        !          3661: without any whitespace between the name of the command and the braces.
        !          3662: 
        !          3663: @menu
        !          3664: * Dots::               Inserting dots.
        !          3665: * Bullet::             Inserting bullets.
        !          3666: * Tex::                        Inserting the @TeX{} trademark.
        !          3667: @end menu
        !          3668: 
        !          3669: @node     Dots, Bullet, , Dots Bullets Tex
        !          3670: @comment  node-name,  next,  previous,  up
        !          3671: @subsection @@dots@{@}
        !          3672: @findex dots
        !          3673: @cindex Inserting dots
        !          3674: @cindex Dots, inserting
        !          3675: 
        !          3676: 
        !          3677: @code{@@dots@{@}} generates an ellipsis which is three dots in a row,
        !          3678: appropriately spaced, like this: `@dots{}'.  Do not simply write three
        !          3679: periods in the input file; that would work for the Info file output, but
        !          3680: would produce the wrong amount of space between the periods in the printed
        !          3681: manual.
        !          3682: 
        !          3683: @iftex
        !          3684: Here is an ellipsis: @dots{}
        !          3685: 
        !          3686: Here are three periods in a row: ...
        !          3687: 
        !          3688: The three periods in a row are closer together than the dots in the ellipsis.
        !          3689: 
        !          3690: @end iftex
        !          3691: 
        !          3692: @node     Bullet, Tex, Dots, Dots Bullets Tex
        !          3693: @comment  node-name,  next,  previous,  up
        !          3694: @subsection @@bullet@{@}
        !          3695: @findex bullet
        !          3696: 
        !          3697: @code{@@bullet@{@}} generates a large round dot, or the closest possible
        !          3698: thing to one.
        !          3699: 
        !          3700: Here is a bullet: @bullet{}
        !          3701: 
        !          3702: @node     Tex, , Bullet, Dots Bullets Tex
        !          3703: @comment  node-name,  next,  previous,  up
        !          3704: @subsection @@TeX@{@}
        !          3705: @findex TeX
        !          3706: 
        !          3707: @code{@@TeX@{@}} generates `@TeX{}'.  In a printed manual, this is a special
        !          3708: logo that is different from three ordinary letters.
        !          3709: 
        !          3710: 
        !          3711: 
        !          3712: @node     Emphasis, , Dots Bullets Tex, Marking Text
        !          3713: @comment  node-name,  next,  previous,  up
        !          3714: @section Emphasizing Text
        !          3715: @cindex  Emphasizing text
        !          3716: 
        !          3717: Usually, Texinfo changes the font automatically to mark words in the text
        !          3718: according to what category the words belong to.  The @code{@@code} command,
        !          3719: for example, does this.  Most often, this is the best way to mark specified
        !          3720: words.  However, sometimes you will want to emphasize text directly.
        !          3721: Texinfo has two ways to do this: commands that tell Texinfo to emphasize
        !          3722: the text but leave the method to the program, and commands that specify the
        !          3723: font to use.  The first method is generally the best and it makes it
        !          3724: possible to change the style of a document without have to re-edit it line
        !          3725: by line.
        !          3726: 
        !          3727: @menu
        !          3728: * Emph and Strong::    Emphasizing text.
        !          3729: * Fonts::              Selecting italic, bold or typewriter fonts.
        !          3730: @end menu
        !          3731: 
        !          3732: @node     Emph and Strong, Fonts, , Emphasis
        !          3733: @comment  node-name,  next,  previous,  up
        !          3734: @subsection @@emph and @@strong
        !          3735: @findex emph
        !          3736: @findex strong
        !          3737: 
        !          3738: @code{@@emph} and @code{@@strong} are two forms of emphasis.  @code{@@strong}
        !          3739: is stronger.
        !          3740: 
        !          3741: In printed output, @code{@@emph} produces @emph{italics} and @code{@@strong}
        !          3742: produces @strong{bold}.
        !          3743: 
        !          3744: In the Info file, both of these commands put asterisks around the
        !          3745: argument.
        !          3746: 
        !          3747: @node     Fonts, , Emph and Strong, Emphasis
        !          3748: @comment  node-name,  next,  previous,  up
        !          3749: @subsection @@i,  @@b and @@t
        !          3750: @findex i (italic font)
        !          3751: @findex b (bold font)
        !          3752: @findex t (typewriter font)
        !          3753: 
        !          3754: These three commands specify font changes in the printed manual and have no
        !          3755: effect in the Info file.  @code{@@i} requests @i{italic} font (in some
        !          3756: versions of @TeX{}, a slanted font is used), @code{@@b} requests @b{bold}
        !          3757: face, and @code{@@t} requests the @t{fixed-width} font used by
        !          3758: @code{@@kbd}.  All three commands apply to an argument that follows,
        !          3759: surrounded by braces.@refill
        !          3760: 
        !          3761: If possible, you should avoid using these three commands.  If you find a
        !          3762: need to use one, it probably indicates a lack in the Texinfo language.
        !          3763: 
        !          3764: @node Conditionals, Printing Hardcopy, Marking Text, Top
        !          3765: @comment  node-name,  next,  previous,  up
        !          3766: @chapter Conditionals
        !          3767: @cindex Conditionals
        !          3768: @cindex Ifinfo
        !          3769: @cindex Iftex
        !          3770: @findex ifinfo
        !          3771: @findex iftex
        !          3772: 
        !          3773: 
        !          3774: You may not always be able to use the same text for both the printed manual
        !          3775: and the on-line Info file.  In this case, you can use the conditional
        !          3776: commands to specify which text is for the printed manual and which is for
        !          3777: the Info file.
        !          3778: 
        !          3779: @code{@@ifinfo} begins text that should be ignored by @TeX{} when it
        !          3780: typesets the printed manual.  The text appears only in the Info file.  The
        !          3781: @code{@@ifinfo} command should appear on a line by itself.  End the
        !          3782: info-only text with a line containing @code{@@end ifinfo} by itself.  At
        !          3783: the beginning of a Texinfo file, the Info permissions are contained within a
        !          3784: region marked by @code{@@ifinfo} and @code{@@end ifinfo}.@refill
        !          3785: 
        !          3786: Likewise, @code{@@iftex} and @code{@@end iftex} lines delimit text that
        !          3787: will not appear in the Info file but will appear in the printed manual.@refill
        !          3788: 
        !          3789: For example, 
        !          3790: 
        !          3791: @example
        !          3792: @@iftex
        !          3793: This text will appear only in the printed manual.
        !          3794: @@end iftex
        !          3795: 
        !          3796: 
        !          3797: @@ifinfo
        !          3798: However, this text will appear only in the info manual.
        !          3799: @@end ifinfo
        !          3800: @end example
        !          3801: 
        !          3802: @noindent
        !          3803: The preceding example produces the following.  Note how you only see one of
        !          3804: the two lines, depending on whether you are reading the on-line Info version
        !          3805: or the printed version of this manual.
        !          3806: 
        !          3807: 
        !          3808: @iftex
        !          3809: This text will appear only in the printed manual.
        !          3810: @end iftex
        !          3811: 
        !          3812: @ifinfo
        !          3813: However, this text will appear only in the info manual.
        !          3814: @end ifinfo
        !          3815: 
        !          3816: The @code{@@titlepage} command is a special variant of @code{@@iftex} that
        !          3817: is used for making the title and copyright pages of the printed manual.
        !          3818: 
        !          3819: @menu
        !          3820: * Using Tex Commands::         Using commands from regular @TeX{}.
        !          3821: @end menu
        !          3822: 
        !          3823: @node Using Tex Commands, , Conditionals, Conditionals    
        !          3824: @comment  node-name,  next,  previous,  up
        !          3825: @section Using @TeX{} Commands
        !          3826: @cindex  Using TeX commands
        !          3827: @cindex TeX commands, using them
        !          3828: 
        !          3829: Inside a region delineated by @code{@@iftex} and @code{@@end iftex}, you
        !          3830: can embed ordinary @TeX{} commands.  Info will ignore these commands since
        !          3831: they are only in that part of the file that is seen by @TeX{}.  The @TeX{}
        !          3832: commands are the same as any @TeX{} commands except that an @samp{@@}
        !          3833: replaces the @samp{\} used by @TeX{}.  For example, in the
        !          3834: @code{@@titlepage} section of a Texinfo file, the @TeX{} command
        !          3835: @code{@@vskip} is used to format the copyright page.@refill
        !          3836: 
        !          3837: You can enter @TeX{} completely, and use @samp{\} in the @TeX{} commands by
        !          3838: delineating a region with the @code{@@tex} and @code{@@end tex} commands.
        !          3839: (These commands automatically put the region inside of @code{@@iftex} and
        !          3840: @code{@@end iftex} commands.)  For example,@refill
        !          3841: 
        !          3842: @example
        !          3843: @@tex
        !          3844: Here you would put text with @TeX{} commands;
        !          3845: such as $\bigl(x\in A(n)\bigm|x\in B(n)\bigr)$
        !          3846: that will appear only  in the printed manual.
        !          3847: @@end tex
        !          3848: @end example
        !          3849: 
        !          3850: @noindent
        !          3851: In the Info file, nothing between @code{@@tex} and @code{@@end tex} will
        !          3852: appear.@refill
        !          3853: 
        !          3854: @iftex
        !          3855: In the printed manual, the mathematics will look like this:
        !          3856: 
        !          3857: @tex
        !          3858: $\bigl(x\in A(n)\bigm|x\in B(n)\bigr)$
        !          3859: @end tex
        !          3860: @end iftex
        !          3861: 
        !          3862: @node Printing Hardcopy, Creating an Info File, Conditionals, Top
        !          3863: @comment  node-name,  next,  previous,  up
        !          3864: @chapter Printing Hardcopy
        !          3865: @cindex Printing hardcopy
        !          3866: @cindex Hardcopy, printing it
        !          3867: @cindex Making a printed manual
        !          3868: @cindex Sorting indices
        !          3869: @cindex Indices, sorting
        !          3870: @findex texindex (for sorting indices)
        !          3871: 
        !          3872: There are three shell commands for printing a hardcopy of a Texinfo file.
        !          3873: One is for formatting the file, the second is for sorting the index and the
        !          3874: third is for printing the formatted document.  When you use the shell
        !          3875: commands, you can either work directly in the operating system shell or
        !          3876: work within a shell inside of GNU Emacs.
        !          3877: 
        !          3878: The typesetting program @TeX{} is used for formatting a Texinfo file.
        !          3879: @TeX{} is a very powerful typesetting program and, if used right, does an
        !          3880: exceptionally good job.  The @@-commands in a Texinfo file are translated
        !          3881: by a file called @file{texinfo.tex} into commands that @TeX{} understands.
        !          3882: (That is why the beginning of every Texinfo file starts with the line that
        !          3883: says @samp{\input texinfo}; this command tells @TeX{} to use the
        !          3884: @file{texinfo.tex} file in processing the Texinfo file.  Customarily,
        !          3885: @file{texinfo.tex} is in a directory called @file{/usr/lib/tex/macros}.)
        !          3886: @code{texinfo-format-buffer} reads the very same @@-commands in the Texinfo
        !          3887: file and processes them differently from @TeX{} to make an Info
        !          3888: file.@refill
        !          3889: 
        !          3890: Usually, the @TeX{} formatting command is the shell command @code{tex}
        !          3891: followed by the name of the Texinfo file.  The @TeX{} command produces a
        !          3892: formatted DVI file as well as several auxiliary files containing indices,
        !          3893: cross references, etc.  The DVI file (for @dfn{DeVice Independent} file)
        !          3894: can be printed on a wide variety of printers.@refill
        !          3895: 
        !          3896: The @TeX{} formatting command itself does not sort the indices.  This is a
        !          3897: misfeature of @TeX{}.  Hence, to generate a printed index, you first need a
        !          3898: sorted index to work from.@refill
        !          3899: 
        !          3900: @TeX{} outputs raw, unsorted index files under names that obey a standard
        !          3901: convention.  These names are the name of your main input file to @TeX{},
        !          3902: with everything after the first period thrown away, and the two letter
        !          3903: names of indices added at the end.  For example, the raw index output files
        !          3904: for the input file @file{foo.texinfo} would be @file{foo.cp},
        !          3905: @file{foo.vr}, @file{foo.fn}, @file{foo.tp}, @file{foo.pg} and
        !          3906: @file{foo.ky}.  Those are exactly the arguments to give to @code{texindex}.
        !          3907: Or else, you can use @samp{??} as ``wild-cards'' and give the command in
        !          3908: this form:@refill
        !          3909: 
        !          3910: @example
        !          3911: texindex foo.??
        !          3912: @end example
        !          3913: 
        !          3914: For each file specified, @code{texindex} generates a sorted index file
        !          3915: whose name is made by appending @samp{s} to the input file name.  The
        !          3916: @code{@@printindex} command knows to look for a file of that name.
        !          3917: @code{texindex} does not alter the raw index output file. After you have
        !          3918: sorted the indices, you need to rerun the @TeX{} command on the Texinfo
        !          3919: file.  This regenerates a formatted DVI file with the index entries in the
        !          3920: correct order.@refill
        !          3921: 
        !          3922: To summarize, this is a three step process:
        !          3923:  
        !          3924: @enumerate
        !          3925: @item 
        !          3926: Run the @TeX{} command on the Texinfo file.  This generates the formatted
        !          3927: DVI file as well as the raw index files with two letter extensions.@refill
        !          3928: 
        !          3929: @item 
        !          3930: Run the shell command @code{texindex} on the raw index files to sort them.
        !          3931: The arguments to @code{texindex} are the names of the raw index files.
        !          3932: @code{texindex} creates sorted index files whose names are the names of the
        !          3933: raw index files with an @samp{s} appended.  To cause @code{texindex} to
        !          3934: sort all the raw index files, append @samp{??} to the Texinfo file name in
        !          3935: place of the @file{.texinfo} extension.@refill
        !          3936: 
        !          3937: @item 
        !          3938: Rerun the @TeX{} command on the Texinfo file.  This regenerates a formatted
        !          3939: DVI file with the index entries in the correct order.  This second run also
        !          3940: makes all the cross references correct as well.  (The tables of contents
        !          3941: are always correct.)@refill
        !          3942: @end enumerate
        !          3943: 
        !          3944: You need not run @code{texindex} after each @TeX{} run.  If you don't, the
        !          3945: next @TeX{} run will use whatever sorted index files happen to exist from
        !          3946: the previous use of @code{texindex}.  This is usually ok while you are
        !          3947: debugging.
        !          3948: 
        !          3949: Finally, the document can be printed out with the DVI print command
        !          3950: (a shell command).  Depending on the system used, the DVI print command
        !          3951: will be a command such as @code{lpr -d}.  The DVI print command may require
        !          3952: a file name without any extension or with a @samp{.dvi} extension.
        !          3953: 
        !          3954: The following commands, for example, sort the indices, format and print
        !          3955: the @cite{Bison Manual} (where @samp{%} is the shell prompt):
        !          3956: 
        !          3957: @example
        !          3958: % tex bison.texinfo
        !          3959: % texindex bison.??
        !          3960: % tex bison.texinfo
        !          3961: % lpr -d bison.dvi
        !          3962: @end example
        !          3963: 
        !          3964: @noindent
        !          3965: (Remember that the words for the shell commands may be different at your
        !          3966: site; but these are commonly used versions.)
        !          3967: 
        !          3968: It is often most convenient to give formatting and printing commands from a
        !          3969: shell within GNU Emacs.  This way, you can easily keep track of errors.  To
        !          3970: create a shell within Emacs, type @kbd{M-x shell}.  In this shell, you can
        !          3971: format and print the document.  You can switch to and from this shell while
        !          3972: it is running and do other things.  If you are formatting a very long
        !          3973: document on a slow machine, this can be very convenient; on a VAX 750, for
        !          3974: example, formatting often takes 8 seconds or more per page depending on how
        !          3975: loaded the computer is.  Faster machines take correspondingly less time.
        !          3976: 
        !          3977: @menu
        !          3978: * Requirements::       Formatting requirements.
        !          3979: * Compile-Command::    Formatting with the compile command.
        !          3980: @end menu
        !          3981: 
        !          3982: @node     Requirements, Compile-Command, , Printing Hardcopy
        !          3983: @comment  node-name,  next,  previous,  up
        !          3984: @section Formatting Requirements
        !          3985: @cindex Requirements for formatting 
        !          3986: @cindex Formatting requirements
        !          3987: 
        !          3988: Every Texinfo file that is to be input to @TeX{} must begin with a line
        !          3989: that looks like
        !          3990: 
        !          3991: @example
        !          3992: \input texinfo   @@c -*-texinfo-*-
        !          3993: @end example
        !          3994: 
        !          3995: @noindent
        !          3996: This serves two functions.
        !          3997: 
        !          3998: @enumerate
        !          3999: @item
        !          4000: When the file is processed by @TeX{}, it loads the macros needed for
        !          4001: processing a Texinfo file.@refill
        !          4002: @item
        !          4003: When the file is edited in Emacs, it causes Texinfo mode to be used.@refill
        !          4004: @end enumerate
        !          4005: 
        !          4006: Every Texinfo file must end with a line saying
        !          4007: 
        !          4008: @example
        !          4009: @@bye
        !          4010: @end example
        !          4011: 
        !          4012: which terminates @TeX{} processing and forces out unfinished pages.
        !          4013: 
        !          4014: You also have to include two lines that specify the Info file name and the
        !          4015: title of the printed manual:
        !          4016: 
        !          4017: @example
        !          4018: @@setfilename @var{name-of-texinfo-file}
        !          4019: @@settitle @var{Name of Manual}
        !          4020: @end example
        !          4021: 
        !          4022: You might also want to include a line saying
        !          4023: 
        !          4024: @example
        !          4025: @@setchapternewpage odd
        !          4026: @end example
        !          4027: 
        !          4028: @noindent
        !          4029: to cause each chapter to start on a fresh odd-numbered page.
        !          4030: 
        !          4031: By default, @TeX{} typesets pages for printing in an 8.5 by 11 inch
        !          4032: format.  However, you can direct @TeX{} to typeset a document in a 7 by
        !          4033: 9.25 inch format that is suitable for bound books by inserting the
        !          4034: following command on a line by itself at the beginning of the Texinfo
        !          4035: file, before the @code{@@setchapternewpage} command:
        !          4036: 
        !          4037: @example
        !          4038: @@smallbook
        !          4039: @end example
        !          4040: 
        !          4041: @noindent
        !          4042: The Free Software Foundation distributes printed copies of the @cite{GNU
        !          4043: Emacs Manual} in this size.
        !          4044: 
        !          4045: Finally, @TeX{} sometimes is unable to typeset a line without extending
        !          4046: it into the right margin.  This can occur when @TeX{} comes upon what it
        !          4047: interprets as a long word that it cannot hyphenate, like a net address,
        !          4048: or a very long title.  When this happens, @TeX{} prints an error message
        !          4049: like this:
        !          4050: 
        !          4051: @example
        !          4052: Overfull \hbox (20.76302pt too wide)
        !          4053: @end example
        !          4054: 
        !          4055: @noindent
        !          4056: and gives the line number along with the text of the offending line
        !          4057: marked at all the places that @TeX{} knows to hyphenate words.  (In
        !          4058: @TeX{} lines are in `horizontal boxes', hence the term, `hbox'.)
        !          4059: 
        !          4060: If the Texinfo file has an overfull hbox, you can rewrite the sentence
        !          4061: so the overfull hbox does not occur or you can decide to leave it.  A
        !          4062: small excursion into the right margin often does not matter and may not
        !          4063: even be noticable.  However, unless told otherwise, @TeX{} will print a
        !          4064: large, ugly, black rectangle beside every line that is overfull.  This is
        !          4065: so you will notice the location of the problem if you are correcting a
        !          4066: draft.  To prevent such monstrosities from marring your final printout,
        !          4067: put the following in the beginning of the Texinfo file on lines of their
        !          4068: own, before the @code{@@setchapternewpage} command:
        !          4069: 
        !          4070: @example
        !          4071: @@iftex
        !          4072: @@finalout
        !          4073: @@end iftex
        !          4074: @end example
        !          4075: 
        !          4076: @xref{Titlepage}, for information about creating a title page.
        !          4077: @xref{Contents}, for information about creating a table of contents.@refill
        !          4078: 
        !          4079: @node     Compile-Command, , Requirements, Printing Hardcopy
        !          4080: @comment  node-name,  next,  previous,  up
        !          4081: @section Using Local Variables and the Compile Command
        !          4082: @cindex Local variables
        !          4083: @cindex Compile command for formatting
        !          4084: @cindex Formatting with the compile command
        !          4085: 
        !          4086: Another way to give the @TeX{} formatting command to Texinfo is to put that
        !          4087: command in a @dfn{local variables list} at the end of the Texinfo file.
        !          4088: You can then specify the @TeX{} formatting command as a
        !          4089: @code{compile-command} and have Emacs run the @TeX{} formatting command by
        !          4090: giving the command @kbd{M-x compile}.  This creates a special shell called
        !          4091: the @samp{*compilation buffer*}.  For example, at the end of the
        !          4092: @file{gdb.texinfo} file, after the @code{@@bye}, you would put the
        !          4093: following:@refill
        !          4094: 
        !          4095: @example
        !          4096: @@c Local Variables:
        !          4097: @@c compile-command: "tex gdb.texinfo"
        !          4098: @@c End:
        !          4099: @end example
        !          4100: 
        !          4101: @noindent
        !          4102: This technique is most often used by programmers who compile programs
        !          4103: this way.
        !          4104:      
        !          4105: @node Creating an Info File, Catching Mistakes, Printing Hardcopy, Top
        !          4106: @comment  node-name,  next,  previous,  up
        !          4107: @chapter Creating an On-line Info file
        !          4108: @cindex Creating an on-line Info file
        !          4109: @cindex Running Info
        !          4110: @cindex Info, creating an on-line file
        !          4111: @cindex Formatting a file for Info
        !          4112: @cindex Indirect subfiles
        !          4113: @findex texinfo-format-buffer
        !          4114: 
        !          4115: In GNU Emacs, using Texinfo mode, you can see what part or all of a Texinfo
        !          4116: file will look like in Info by using the keyboard command @kbd{C-c C-f}
        !          4117: (@code{texinfo-format-region}).  This formats a region and displays in a
        !          4118: temporary buffer called @samp{*Info Region*}; however, this command does
        !          4119: not turn on Info reading program---it just displays what the region will
        !          4120: look like.  The @code{texinfo-format-region} command is described more
        !          4121: extensively in the chapter on using Texinfo mode.  @xref{Info on a Region}.
        !          4122: @refill
        !          4123: 
        !          4124: In GNU Emacs, the way to create a working Info file is to visit the file
        !          4125: and invoke
        !          4126: 
        !          4127: @example
        !          4128: @kbd{M-x texinfo-format-buffer}
        !          4129: @end example
        !          4130: 
        !          4131: @noindent
        !          4132: A new buffer is created and the Info file text is generated there.
        !          4133: @kbd{C-x C-s} will save it under the name specified in the
        !          4134: @code{@@setfilename} command.@refill
        !          4135: 
        !          4136: If the Texinfo file has more than 30,000 bytes,
        !          4137: @code{texinfo-format-buffer} will automatically create a @dfn{tag table}
        !          4138: for it.  With a tag table, Info can jump to new nodes more quickly than it
        !          4139: can otherwise.  In addition, if the file has more than 100,000 bytes in it,
        !          4140: @code{texinfo-format-buffer} will split the file into shorter Indirect
        !          4141: subfiles of about 50,000 bytes each.  Files are split so that Info does not
        !          4142: have to make a large buffer to hold the whole of a large Info file;
        !          4143: instead, Info allocates just enough memory for the small, split off file
        !          4144: that is needed at the time.  This way, Emacs avoids wasting memory when you
        !          4145: run Info.  (Before splitting was implemented, Info files were always short
        !          4146: and @dfn{include} files were designed as a way to create a single, large
        !          4147: printed manual out of the smaller Info files. @xref{Include Files}, for
        !          4148: more information.)@refill
        !          4149: 
        !          4150: When the file is split, Info itself works through a shortened version of
        !          4151: the original file that contains the tag table and references to the files
        !          4152: that were split off.  The split off files are called @dfn{indirect} files.
        !          4153: 
        !          4154: The split off files have names that are created by appending @samp{-1},
        !          4155: @samp{-2}, @samp{-3} and so on to the file names specified by the
        !          4156: @code{@@setfilename} command.  The shortened version of the original file
        !          4157: continues to have the name specified by @code{@@setfilename}.
        !          4158: 
        !          4159: At one stage in writing this document, for example, the Info file was saved
        !          4160: as @file{test-texinfo} and that file looked like this:
        !          4161: 
        !          4162: @group
        !          4163: @example
        !          4164: Info file: test-texinfo,    -*-Text-*-
        !          4165: produced by texinfo-format-buffer
        !          4166: from file: new-texinfo-manual.texinfo
        !          4167: 
        !          4168: ^_
        !          4169: Indirect:
        !          4170: test-texinfo-1: 102
        !          4171: test-texinfo-2: 50422
        !          4172: test-texinfo-3: 101300
        !          4173: ^_^L
        !          4174: Tag table:
        !          4175: (Indirect)
        !          4176: Node: overview^?104
        !          4177: Node: info file^?1271
        !          4178: Node: printed manual^?4853
        !          4179: Node: conventions^?6855
        !          4180: @dots{}
        !          4181: @end example
        !          4182: @end group
        !          4183: 
        !          4184: @noindent
        !          4185: (But @file{test-texinfo} had far more nodes than are shown here.)  Each of
        !          4186: the split off, indirect files, @file{test-texinfo-1},
        !          4187: @file{test-texinfo-2}, and @file{test-texinfo-3}, is listed in this file
        !          4188: after the line that says @samp{Indirect:}.  The tag table is listed after
        !          4189: the line that says @samp{Tag table:}. @refill
        !          4190: 
        !          4191: You cannot run the @kbd{M-x Info-validate} node checking command on indirect
        !          4192: files.  For information on how to prevent files from being split and how to
        !          4193: validate the structure of the nodes, @pxref{Info-Validating a Large 
        !          4194: File}@refill
        !          4195: 
        !          4196: @menu
        !          4197: * Installing an Info File::    Putting the Info file in the info directory.
        !          4198: @end menu
        !          4199: 
        !          4200: @node Installing an Info File, , Creating an Info File, Creating an Info File
        !          4201: @comment  node-name,  next,  previous,  up
        !          4202: @section Installing an Info file
        !          4203: @cindex  Installing an Info file
        !          4204: @cindex Info file installation
        !          4205: @cindex Dir directory for Info installation
        !          4206: 
        !          4207: An Info file is usually installed in the GNU Emacs directory called
        !          4208: @file{info}.  For Info to work, this directory must contain all the Info
        !          4209: files, including the split off files.  In addition, the @file{info}
        !          4210: directory must have a file that serves as a top level directory for the
        !          4211: Info system.  This file is called @file{dir}.
        !          4212: 
        !          4213: 
        !          4214: For example, in the @file{info} directory, the file called @file{dir} has
        !          4215: the top level menu for all the Info files in the system.  This file has a
        !          4216: master menu that looks like this:
        !          4217: 
        !          4218: @example
        !          4219: * Menu:
        !          4220: 
        !          4221: * Info:    (info).      Documentation browsing system.
        !          4222: * Emacs:   (emacs).     The extensible self-documenting text editor.
        !          4223: * Texinfo: (texinfo).   With one source file, make either a printed 
        !          4224:                         manual using TeX or an Info file using
        !          4225:                         Texinfo.
        !          4226: @end example
        !          4227: 
        !          4228: To add a new Info file, just add it to this menu.  For example, if you
        !          4229: were adding documentation for GDB, you would make the following entry:
        !          4230: 
        !          4231: @example
        !          4232: * GDB: (gdb).           The source-level C debugger.
        !          4233: @end example
        !          4234: 
        !          4235: @noindent
        !          4236: The first item is the menu item name; it is followed by a colon.  The
        !          4237: second item is the name of the Info file, in parentheses; it is followed by
        !          4238: a period.  The third part of the entry is the description of the item.
        !          4239: 
        !          4240: 
        !          4241: 
        !          4242: The top node of the file, named @samp{top}, should have as its parent the
        !          4243: name of a node in another file, where there is a menu that leads to this
        !          4244: file.  Specify the file name in parentheses.  If the file is to be
        !          4245: installed directly in the Info directory file, use @samp{(dir)} as the
        !          4246: parent of the top node; this is short for @samp{(dir)top}, the node @samp{top}
        !          4247: in the file @file{dir}, which is the main menu of Info.
        !          4248: 
        !          4249: 
        !          4250: 
        !          4251: 
        !          4252: @node     Catching Mistakes, Command Syntax, Creating an Info File, Top
        !          4253: @comment  node-name,  next,  previous,  up
        !          4254: @chapter Catching Mistakes
        !          4255: @cindex Structure of Texinfo, catching mistakes
        !          4256: @cindex Nodes, catching mistakes
        !          4257: @cindex Nodes, correcting mistakes
        !          4258: @cindex Catching mistakes
        !          4259: @cindex Correcting mistakes
        !          4260: @cindex Mistakes, catching
        !          4261: @cindex Problems, catching
        !          4262: @cindex Debugging the Texinfo structure
        !          4263: 
        !          4264: Besides mistakes with the content of what ever you are describing, there
        !          4265: are two kinds of mistake you can make with Texinfo:  you can make mistakes
        !          4266: with @@-commands, and you can make mistakes with the structure of the
        !          4267: nodes and chapters.
        !          4268: 
        !          4269: There are two tools for catching the first kind of mistake and two for
        !          4270: catching the second.
        !          4271: 
        !          4272: For finding problems with @@-commands, your best action is to run @kbd{M-x
        !          4273: texinfo-format-region} on regions of your file as you write it.  In Texinfo
        !          4274: mode, the @code{texinfo-format-region} command is bound to @kbd{C-c C-f}.
        !          4275: In addition, you can run @TeX{} on the whole file.@refill
        !          4276: 
        !          4277: For finding problems with the structure of nodes and chapters, you can use
        !          4278: @kbd{C-c C-s} (@code{texinfo-show-structure}) (and the related @code{occur}
        !          4279: command) and you can use the @kbd{M-x Info-validate} command.
        !          4280: 
        !          4281: 
        !          4282: @menu
        !          4283: * Debugging with Info::            Catching errors with info formatting.
        !          4284: * Debugging with Tex::             Catching errors with @TeX{} formatting.
        !          4285: * Using texinfo-show-structure::    Using @code{texinfo-show-structure}
        !          4286:                                    to catch mistakes.
        !          4287: * Running Info-Validate::          Checking for unreferenced nodes.
        !          4288: @end menu
        !          4289: 
        !          4290: 
        !          4291: @node Debugging with Info, Debugging with Tex, , Catching Mistakes
        !          4292: @comment  node-name,  next,  previous,  up
        !          4293: @section Catching Errors with Info Formatting
        !          4294: @cindex Catching errors with Info Formatting
        !          4295: @cindex Debugging with Info Formatting
        !          4296: 
        !          4297: After you have written part of a Texinfo file, you can use the @kbd{M-x
        !          4298: texinfo-format-region} command to see whether the region formats properly.
        !          4299: In Texinfo mode, this command is bound to the keyboard command @kbd{C-c
        !          4300: C-f}.
        !          4301: 
        !          4302: If you have made a mistake with an @@-command, @kbd{M-x
        !          4303: texinfo-format-region} will stop processing at or after the error and give
        !          4304: an error message.  To see where in the file the error occurred, switch to
        !          4305: the @samp{*Info Region*} buffer; the cursor will be in a position that is
        !          4306: after the location of the error.  Also, the text will not be formatted
        !          4307: after the place the error occurred.@refill
        !          4308: 
        !          4309: For example, if you accidently end a menu with the command @code{@@end
        !          4310: menus} with an `s' on the end, instead of with @code{@@end menu}, you will
        !          4311: get an error message that says:
        !          4312: 
        !          4313: @example
        !          4314: @@end menus is not handled by texinfo.
        !          4315: @end example
        !          4316: 
        !          4317: @noindent
        !          4318: The cursor will stop at the point in the file where the error occurs, or
        !          4319: not long after it.  It will look like this:
        !          4320: 
        !          4321: @group
        !          4322: @example
        !          4323: @@menu
        !          4324: * Using texinfo-show-structure::    Using @code{texinfo-show-structure}
        !          4325:                                     to catch mistakes.
        !          4326: * Running Info-Validate::           Checking for unreferenced nodes.
        !          4327: @@end menus
        !          4328: @end example
        !          4329: @end group
        !          4330: 
        !          4331: The @code{texinfo-format-region} command does not always recognize errors.
        !          4332: For example, no errors were reported when @code{texinfo-format-region} was
        !          4333: run on the whole itemized list of which the following is a part:
        !          4334: 
        !          4335: @example
        !          4336: name of the Texinfo file as an extension.  The @@samp@{??@} are `wildcards'
        !          4337: that cause the shell to substitute all the raw index files.  (@@xref@{sorting
        !          4338: indices), for more information about sorting indices.) @@refill
        !          4339: @@cindex Sorting indices
        !          4340: @@cindex Indices, sorting
        !          4341: 
        !          4342: @@item 
        !          4343: @@emph@{Third@}, rerun the @@TeX@{@} command on the Texinfo file.  This
        !          4344: regenerates a formatted DVI file with the index entries in the correct
        !          4345: order.  This second run also makes all the cross references and table of
        !          4346: contents correct as well.
        !          4347: @end example
        !          4348: 
        !          4349: @noindent
        !          4350: Instead, @code{texinfo-format-region} ran without reporting the error, but
        !          4351: it produced output that looked like this:
        !          4352: 
        !          4353: @example
        !          4354:      name of the texinfo file as an extension.  The `??' are `wildcards'
        !          4355:      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
        !          4356:      regenerates a formatted DVI file with the index entries in the correct
        !          4357:      order.  This second run also makes all the cross references and table of
        !          4358:      contents correct as well.
        !          4359: @end example
        !          4360: 
        !          4361: @noindent
        !          4362: However, when @code{texinfo-format-region} was run on part of the list that
        !          4363: is shown, it did give an error message, @samp{Search failed: "[@{,@}"}.  (This
        !          4364: error message is explained in the section on using the Emacs Lisp Debugger, @pxref{Using the Emacs Lisp Debugger})
        !          4365: 
        !          4366: Sometimes @code{texinfo-format-region} will stop long after the original
        !          4367: error;  this is because it does not discover the problem until then.  In this
        !          4368: case, you will have to backtrack.@refill
        !          4369: 
        !          4370: @node Using the Emacs Lisp Debugger, , ,Debugging with Info
        !          4371: @comment  node-name,  next,  previous,  up
        !          4372: @subsection Using the Emacs Lisp Debugger
        !          4373: @cindex Using the Emacs Lisp debugger
        !          4374: @cindex Emacs Lisp debugger
        !          4375: @cindex Debugger, using the Emacs Lisp 
        !          4376: 
        !          4377: If an error is especially elusive, you can turn on the Emacs Lisp debugger
        !          4378: and look at the backtrace; this tells you where in the
        !          4379: @code{texinfo-format-region} function the problem occurred.  You can turn
        !          4380: on the debugger with the command:@refill
        !          4381: 
        !          4382: @example
        !          4383: M-x set-variable @key{RET} debug-on-error @key{RET} t
        !          4384: @end example
        !          4385: 
        !          4386: @noindent
        !          4387: and turn it off with
        !          4388: 
        !          4389: @example
        !          4390: M-x set-variable @key{RET} debug-on-error @key{RET} nil
        !          4391: @end example
        !          4392: 
        !          4393: Often, when you are using the debugger, it is easier to follow what is
        !          4394: going on if you use the Emacs Lisp files that are not byte-compiled.  The
        !          4395: byte-compiled sources send octal numbers to the debugger that may look
        !          4396: mysterious.  To use the uncompiled source files, load @file{texinfmt.el}
        !          4397: and @file{texinfo.el} with the @kbd{M-x load-file} command.@refill
        !          4398: 
        !          4399: The debugger will not catch an error if @code{texinfo-format-region} does
        !          4400: not detect one.  In the example shown above, @code{texinfo-format-region}
        !          4401: did not find the error when the whole list was formatted, but only when
        !          4402: part of the list was formatted.  When @code{texinfo-format-region} did not
        !          4403: find an error, the debugger did not find one either. @refill
        !          4404: 
        !          4405: However, when @code{texinfo-format-region} did report an error, it invoked
        !          4406: the debugger.  This is the backtrace it produced:
        !          4407: 
        !          4408: @example
        !          4409: Signalling: (search-failed "[@},]")
        !          4410:   re-search-forward("[@},]")
        !          4411:   (while ...)
        !          4412:   (let ...)
        !          4413:   texinfo-format-parse-args()
        !          4414:   (let ...)
        !          4415:   texinfo-format-xref()
        !          4416:   funcall(texinfo-format-xref)
        !          4417:   (if ...)
        !          4418:   (let ...)
        !          4419:   (if ...)
        !          4420:   (while ...)
        !          4421:   texinfo-format-scan()
        !          4422:   (save-excursion ...)
        !          4423:   (let ...)
        !          4424:   texinfo-format-region(103370 103631)
        !          4425: * call-interactively(texinfo-format-region)
        !          4426: @end example
        !          4427: 
        !          4428: The backtrace is read from the bottom up.  @code{texinfo-format-region} was
        !          4429: called interactively; and it, in turn, called various functions, including
        !          4430: @code{texinfo-format-scan}, @code{texinfo-format-xref} and
        !          4431: @code{texinfo-format-parse-args}.  Inside the function
        !          4432: @code{texinfo-format-parse-args}, the function @code{re-search-forward} was
        !          4433: called; it was this function that could not find the missing right hand
        !          4434: brace.@refill
        !          4435: 
        !          4436: @xref{Lisp Debug, , Debugging Emacs Lisp, emacs, The GNU Emacs Manual}, for
        !          4437: more information.@refill
        !          4438: 
        !          4439: 
        !          4440: 
        !          4441: @node Debugging with Tex, Using texinfo-show-structure, Debugging with Info, Catching Mistakes
        !          4442: @comment  node-name,  next,  previous,  up
        !          4443: @section Catching Errors with @TeX{} Formatting
        !          4444: @cindex Catching errors with TeX Formatting
        !          4445: @cindex Debugging with TeX Formatting
        !          4446: 
        !          4447: You can also catch mistakes when you format a file with @TeX{}.
        !          4448: 
        !          4449: 
        !          4450: Usually, you will want to do this after you have run
        !          4451: @code{texinfo-format-buffer} on the same file.
        !          4452: @code{texinfo-format-buffer} is usually faster and sometimes gives error
        !          4453: messages that make more sense.  @xref{Debugging with Info}, for more
        !          4454: information.@refill
        !          4455: 
        !          4456: For example, @TeX{} was run on the same itemized list discussed
        !          4457: in the section on the use of  @code{texinfo-format-region}
        !          4458: (@pxref{Debugging with Info}); the fragment with the error looked like
        !          4459: this:
        !          4460: 
        !          4461: @example
        !          4462: name of the texinfo file as an extension.  The @@samp@{??@} are `wildcards'
        !          4463: that cause the shell to substitute all the raw index files.  (@@xref@{sorting
        !          4464: indices, for more information about sorting indices.) @@refill
        !          4465: @end example
        !          4466: 
        !          4467: @noindent
        !          4468: This produced the following output, after which @TeX{} stopped:
        !          4469: 
        !          4470: @example
        !          4471: Runaway argument?
        !          4472: @{sorting indices, for more information about sorting indices.) @@refill @@ETC.
        !          4473: ! Paragraph ended before \xref was complete.
        !          4474: <to be read again> 
        !          4475:                    \par 
        !          4476: l.27 
        !          4477:      
        !          4478: ? 
        !          4479: @end example
        !          4480: 
        !          4481: In this case, @TeX{} produced an accurate and understandable error message:
        !          4482: @samp{Paragraph ended before \xref was complete.} (Note, however, that
        !          4483: @TeX{} translated the @samp{@@} into a @samp{\}.)  Also, @samp{\par} is an
        !          4484: internal @TeX{} command of no relevance to Texinfo.)
        !          4485: 
        !          4486: Unfortunately, @TeX{} is not always so helpful, and sometimes you have to be
        !          4487: truly a Sherlock Holmes to discover what went wrong.
        !          4488: 
        !          4489: In any case, if you run into a problem like this, you can do one of two
        !          4490: things.
        !          4491: 
        !          4492: @enumerate
        !          4493: @item 
        !          4494: You can tell @TeX{} to continue running and to ignore errors 
        !          4495: as best it can by typing @kbd{r @key{RET}} at the 
        !          4496: @samp{?} prompt.@refill
        !          4497: 
        !          4498: This is often the best thing to do.  However, beware: the one error may
        !          4499: produce a cascade of additional error messages as it consequences are felt
        !          4500: through the rest of the file.@refill
        !          4501: 
        !          4502: @item 
        !          4503: You can tell @TeX{} to stop this run by typing @kbd{x @key{RET}} 
        !          4504: at the @samp{?} prompt. 
        !          4505: @end enumerate
        !          4506: 
        !          4507: Sometimes @TeX{} will format a file without producing error messages even
        !          4508: though there is a problem.  This usually occurs if a command is not ended
        !          4509: but @TeX{} is able to continue processing anyhow.  For example, if you fail
        !          4510: to end an itemized list with the @code{@@end itemize} command, @TeX{} will
        !          4511: write a DVI file that you can print out.  The only error message that
        !          4512: @TeX{} will give you is the somewhat mysterious comment that
        !          4513: 
        !          4514: @example
        !          4515: (\end occurred inside a group at level 1)
        !          4516: @end example
        !          4517: 
        !          4518: @noindent
        !          4519: However, if you print the DVI file, you will find that the text of the file
        !          4520: that follows the itemized list is entirely indented as if it were part of
        !          4521: the last item in the itemized list.  The error message is the way @TeX{}
        !          4522: says that it expected to find an @code{@@end} command somewhere in the
        !          4523: file; but that it could not locate where it was needed. @refill
        !          4524: 
        !          4525: Another source of notoriously hard to find errors is a missing @code{@@end
        !          4526: group} command.  If you ever are stumped by incomprehensible errors, look
        !          4527: for a missing @code{@@end group} command first.@refill
        !          4528: 
        !          4529: If you do not have the header lines in the file, @TeX{} may stop in the
        !          4530: beginning of its run and display output that looks like the following.
        !          4531: The @samp{*} indicates that @TeX{} is waiting for input.@refill
        !          4532: 
        !          4533: @example
        !          4534: This is TeX, Version 2.0 for Berkeley UNIX (preloaded format=plain-cm 
        !          4535: 87.10.25) (#tz-bar-a02987.tex [1])
        !          4536: *
        !          4537: @end example
        !          4538: 
        !          4539: @noindent
        !          4540: In this case, simply type @kbd{\end @key{RET}} after the asterisk.  Then
        !          4541: put the header lines into the Texinfo file and run the @TeX{} command
        !          4542: again.@refill
        !          4543: 
        !          4544: 
        !          4545: @node Using texinfo-show-structure, Running Info-Validate, Debugging with Tex, Catching Mistakes
        !          4546: @comment  node-name,  next,  previous,  up
        !          4547: @section Using @code{texinfo-show-structure}
        !          4548: @cindex  Showing the structure of a file
        !          4549: @cindex Using texinfo-show-structure to catch mistakes
        !          4550: @cindex texinfo-show-structure for catching mistakes
        !          4551: @findex texinfo-show-structure
        !          4552: 
        !          4553: It is not always easy to keep track of the nodes, chapters, sections and
        !          4554: subsections of a Texinfo file.  This is especially true if you are revising
        !          4555: or adding to a Texinfo file that someone else has written.
        !          4556: 
        !          4557: In GNU Emacs, in Texinfo mode, there is a command that will list all the
        !          4558: lines that begin with the @@-commands that specify the structure: @@node,
        !          4559: @@chapter, @@section, @@appendix and so on.  This is the
        !          4560: @code{texinfo-show-structure} command.  It is bound to the keyboard command
        !          4561: @kbd{C-c C-s}.  @code{texinfo-show-structure} displays the lines that begin
        !          4562: with the node and chapter structuring @@-commands in another window called
        !          4563: the @samp{*Occur*} buffer.  For example, when @code{texinfo-show-structure}
        !          4564: is run on the first part of this chapter, it produces the following:@refill
        !          4565: 
        !          4566: @example
        !          4567: Lines matching
        !          4568: "^@@\\(chapter\\|unnum\\|appendix\\|sect\\|sub\\|heading\\|major
        !          4569: \\|node\\)" in buffer new-texinfo-manual.texinfo.
        !          4570:   2:@@node     catching mistakes, @@-Command Syntax, running info, top
        !          4571:   4:@@chapter Catching Mistakes
        !          4572:  41:@@node debugging with info, debugging with tex, , catching mistakes
        !          4573:  43:@@section Catching errors with Info Formatting
        !          4574: @end example
        !          4575: 
        !          4576: This means that lines 2, 4, 41 and 43 began with @code{@@node},
        !          4577: @code{@@chapter}, @code{@@node}, and @code{@@section} respectively.  If you
        !          4578: move your cursor into the @samp{*Occur*} window, you can position the
        !          4579: cursor over one of the lines and use the @kbd{C-c C-c} command
        !          4580: (@code{occur-mode-goto-occurrence}), to jump to the corresponding spot in
        !          4581: the Texinfo file. 
        !          4582: @xref{Other Repeating Search, , Using Occur, emacs, The GNU Emacs Manual}, 
        !          4583: for more information about @code{occur-mode-goto-occurrence}.@refill
        !          4584: 
        !          4585: The first line in the @samp{*Occur*} window describes the @dfn{regular
        !          4586: expression} specified by @var{texinfo-heading-pattern}.  This regular
        !          4587: expression is the pattern that @code{texinfo-show-structure} looks for.
        !          4588: @xref{Regexps, , Using Regular Expressions, emacs, The GNU Emacs Manual},
        !          4589: for more information.@refill
        !          4590: 
        !          4591: When you give the @code{texinfo-show-structure} command, it will show the
        !          4592: structure of the whole buffer.  If you want to see the structure of just a
        !          4593: part of the buffer, of one chapter, for example, use the @kbd{C-x n}
        !          4594: (@code{narrow-to-region}) command to mark the region.  (@xref{Narrowing, ,
        !          4595: , emacs, The GNU Emacs Manual}.)  This is how the example used above was
        !          4596: generated.  (To see the whole buffer again, use @kbd{C-x w}
        !          4597: (@code{widen}).)@refill
        !          4598: 
        !          4599: You can remind yourself of the structure of a Texinfo file by looking at
        !          4600: the list in the @samp{*Occur*} window; and if you have mis-named a node
        !          4601: or left out a section, you can correct the mistake.
        !          4602: 
        !          4603: @menu
        !          4604: * Using Occur::
        !          4605: @end menu
        !          4606: 
        !          4607: @node Using Occur, , Using texinfo-show-structure, Using texinfo-show-structure
        !          4608: @comment  node-name,  next,  previous,  up
        !          4609: @subsection Using @code{occur}
        !          4610: @cindex Using occur
        !          4611: @cindex Occur, using the command
        !          4612: 
        !          4613: Sometimes the @code{texinfo-show-structure} command produces too much
        !          4614: information.  Perhaps you want to remind yourself of the overall structure
        !          4615: of a Texinfo file, and are overwhelmed by the detailed list produced by
        !          4616: @code{texinfo-show-structure}.  In this case, you can use the @code{occur}
        !          4617: command itself.  To do this, type
        !          4618: 
        !          4619: @example
        !          4620: @kbd{M-x occur}
        !          4621: @end example
        !          4622: 
        !          4623: @noindent 
        !          4624: and then, when prompted, type a @dfn{regexp}, a regular expression for the
        !          4625: pattern you want to match.  
        !          4626: (@xref{Regexps, , Regular Expressions, emacs, The GNU Emacs Manual}.)
        !          4627: @code{occur} works from the current location of
        !          4628: the cursor in the buffer to the end of the buffer.  If you want to run
        !          4629: @code{occur} on the whole buffer, place the cursor at the beginning of the
        !          4630: buffer.  For example, to see all the lines that contain the word
        !          4631: @samp{@@chapter} in them, just type @samp{@@chapter}.  This will produce a
        !          4632: list of the chapters.  It will also list all the sentences with
        !          4633: @samp{@@chapter} in the middle of the line.  If you want to see only those
        !          4634: lines that start with the word @samp{@@chapter}, type @samp{^@@chapter}
        !          4635: when prompted by @code{occur}.  If you want to see all the lines that end
        !          4636: with a word or phrase, end the last word with a @samp{$}; for example,
        !          4637: @samp{catching mistakes$}.  This can be helpful when you want to see all
        !          4638: the nodes that are part of the same chapter or section and therefore have
        !          4639: the same `Up' pointer.@refill
        !          4640: 
        !          4641: @xref{Other Repeating Search, , Using Occur, emacs , The GNU Emacs Manual},
        !          4642: for more information.@refill
        !          4643: 
        !          4644: @node Running Info-Validate, ,  Using texinfo-show-structure, Catching Mistakes
        !          4645: @comment  node-name,  next,  previous,  up
        !          4646: @section Finding Badly Referenced Nodes
        !          4647: @cindex  Running Info-validate
        !          4648: @cindex  Info-validate,  running the command
        !          4649: @cindex Nodes, checking for badly referenced nodes
        !          4650: @cindex Checking for badly referenced nodes
        !          4651: @cindex Looking for badly referenced nodes
        !          4652: @cindex Finding badly referenced nodes
        !          4653: @cindex Badly referenced nodes 
        !          4654: 
        !          4655: You can check whether any of the `Next', `Previous', `Up' or other node
        !          4656: pointers fail to point to a node with the @code{Info-validate} command.
        !          4657: This command checks that every node pointer points to an existing node.
        !          4658: 
        !          4659: To use this command, you first need to load the @code{info} library and then do
        !          4660: @kbd{M-x Info-validate}.
        !          4661: 
        !          4662: @example
        !          4663: @kbd{M-x load-library @key{RET} info @key{RET}} 
        !          4664: @kbd{M-x Info-validate}
        !          4665: @end example
        !          4666: 
        !          4667: @noindent
        !          4668: (Note that all the @code{Info} commands require an uppercase `I'.)
        !          4669: 
        !          4670: If your file is ok, you will receive a message that says ``File appears
        !          4671: valid''.  However, if you have a pointer that does not point to a node,
        !          4672: error messages will be displayed in a buffer called @samp{*problems in
        !          4673: info file*}.
        !          4674: 
        !          4675: For example, @code{Info-validate} was run on a test file that contained
        !          4676: only the first node of this manual.  One of the messages said:
        !          4677: 
        !          4678: @example
        !          4679: In node "Overview", invalid Next: Texinfo Mode
        !          4680: @end example
        !          4681: 
        !          4682: @noindent
        !          4683: This meant that the node called @samp{Overview} had a `Next' pointer that
        !          4684: did not point to anything (which was true in this case, since the test file
        !          4685: had only one node in it).
        !          4686: 
        !          4687: Now suppose we add a node named @samp{Texinfo Mode} to our test case
        !          4688: but we don't specify a `Previous' for this node.  Then we will get
        !          4689: the following error message:
        !          4690: 
        !          4691: @example
        !          4692: In node "Texinfo Mode", should have Previous: Overview
        !          4693: @end example
        !          4694: 
        !          4695: @noindent
        !          4696: This is because every `Next' pointer should be matched by a
        !          4697: `Previous' (in the node where the `Next' points) which points back.
        !          4698: 
        !          4699: @code{Info-validate} also checks that all menu items and cross-references
        !          4700: point to actual nodes.
        !          4701: 
        !          4702: Significantly, @code{Info-validate} does not work with large files that
        !          4703: have been split.  (Info thinks of a large file as being over 100,000 bytes,
        !          4704: approximately.)  In order to use @code{Info-validate} on a large file, you
        !          4705: must run @code{texinfo-format-buffer} with an argument so that it does not
        !          4706: split the Info file, and then create a tag table.
        !          4707: 
        !          4708: @menu
        !          4709: * Info-Validating a Large File:: Running @code{Info-validate} on a large file.
        !          4710: * Splitting::                    Splitting a file manually.
        !          4711: @end menu
        !          4712: 
        !          4713: @node     Info-Validating a Large File, Splitting, Running Info-Validate, Running Info-Validate
        !          4714: @comment  node-name,  next,  previous,  up
        !          4715: @subsection Running @code{Info-validate} on a Large File.
        !          4716: @cindex Running Info-validate on a large file
        !          4717: @cindex Info validating a large file
        !          4718: @cindex Validating a large file
        !          4719: 
        !          4720: 
        !          4721: You can run @code{Info-validate} only on a single Info file.  The command
        !          4722: will not work on indirect subfiles that are generated when the master file
        !          4723: is split.  If you have a large file (longer than 100,000 bytes), you need
        !          4724: to run the @code{texinfo-format-buffer} command in such a way that it does
        !          4725: not create indirect subfiles.  You will also need to create a tag table.
        !          4726: When you have done this, you can run @code{Info-validate} and look for
        !          4727: badly referenced nodes.@refill
        !          4728: 
        !          4729: After you have validated the node structure, you can rerun
        !          4730: @code{texinfo-format-buffer} in the normal way so it will construct the tag
        !          4731: table and split the file automatically or, you can make the tag table and
        !          4732: split the file manually.@refill
        !          4733: 
        !          4734: To prevent the @code{texinfo-format-buffer} command from splitting a
        !          4735: Texinfo file into smaller Info files, give a prefix to the @kbd{M-x
        !          4736: texinfo-format-buffer} command:
        !          4737: 
        !          4738: @example
        !          4739: C-u  M-x texinfo-format-buffer
        !          4740: @end example
        !          4741: 
        !          4742: @noindent
        !          4743: When you do this, Texinfo will not split the file and will not create a tag
        !          4744: table for it. @refill
        !          4745: @cindex Making a tag table manually
        !          4746: @cindex Tag table, making manually
        !          4747: 
        !          4748: Before you can run @kbd{M-x Info-validate} on the Info file, you need to
        !          4749: create a tag table for it.  In order to do this, you first need to load the
        !          4750: @code{info} library into Emacs with the following command:@refill
        !          4751: 
        !          4752: @example
        !          4753: M-x load-library @key{RET} info @key{RET}
        !          4754: @end example
        !          4755: 
        !          4756: @noindent
        !          4757: Then you can give the command:
        !          4758: 
        !          4759: @example
        !          4760: M-x Info-tagify
        !          4761: @end example
        !          4762: 
        !          4763: This creates a file which you can validate.@refill
        !          4764: 
        !          4765: @example
        !          4766: M-x Info-validate
        !          4767: @end example
        !          4768: 
        !          4769: After you have checked the validity of the nodes, you can either run
        !          4770: @kbd{M-x texinfo-format-buffer} as you would normally, or else tagify and
        !          4771: split the file manually with the two commands @code{Info-tagify} and
        !          4772: @code{Info-split}.@refill
        !          4773: 
        !          4774: @node     Splitting, ,Info-Validating a Large File , Running Info-Validate
        !          4775: @comment  node-name,  next,  previous,  up
        !          4776: @subsection Splitting a File Manually
        !          4777: @cindex Splitting an Info file manually
        !          4778: @cindex Info file, splitting manually
        !          4779: 
        !          4780: If the file has more than 100,000 or so bytes in it, you should split it or
        !          4781: else let the @code{texinfo-format-buffer} command do it for you
        !          4782: automatically.  (Generally you will let @code{texinfo-format-buffer} do
        !          4783: this job for you.  @xref{Creating an Info File}.)@refill
        !          4784: 
        !          4785: The split off files are called the indirect subfiles.
        !          4786: 
        !          4787: Info files are split to save memory.  With smaller files, Emacs does not
        !          4788: have make such a large buffer to hold the information.  This way, Emacs
        !          4789: can save memory.
        !          4790: 
        !          4791: If the Info file has more than 30 nodes, you should also make a tag table for
        !          4792: it. @xref{Info-Validating a Large File}, for information about creating a
        !          4793: tag table.
        !          4794: 
        !          4795: Before running @code{Info-split}, you need to load the @code{info} library
        !          4796: into Emacs by giving the command @kbd{M-x load-library @key{RET} info
        !          4797: @key{RET}}.  After you have done this, you can give the two commands:@refill
        !          4798: 
        !          4799: @example
        !          4800: M-x Info-tagify
        !          4801: M-x Info-split
        !          4802: @end example
        !          4803: 
        !          4804: @noindent
        !          4805: (Note that the @samp{I} in @samp{Info} is uppercase.)
        !          4806: 
        !          4807: When you use the @code{Info-split} command, the buffer is modified into a
        !          4808: (small) Info file which lists the indirect subfiles.  This file should be
        !          4809: saved in place of the original visited file.  The indirect subfiles are
        !          4810: written in the same directory the original file is in, with names generated
        !          4811: by appending @samp{-} and a number to the original file name.
        !          4812: 
        !          4813: The primary file still functions as an Info file, but it contains just
        !          4814: the tag table and a directory of subfiles.
        !          4815: 
        !          4816: @c ;;;;;;;;;;;;;;;; Appendix starts here ;;;;;;;;;;;;;;;;
        !          4817: 
        !          4818: @node    Command Syntax, Include Files  , Catching Mistakes  , Top
        !          4819: @comment  node-name,  next,  previous,  up
        !          4820: @appendix @@-Command Syntax
        !          4821: @cindex  @@-Command Syntax
        !          4822: 
        !          4823: The character @samp{@@} is used to start special Texinfo commands.  (It has the
        !          4824: same meaning that @samp{\} has in plain @TeX{}.)  Syntactically, there
        !          4825: are three classes of @@-commands:
        !          4826: 
        !          4827: @table @asis
        !          4828: @item 1. Non-alphabetic commands: @@ followed by a punctuation character.
        !          4829: These commands are always part of the text within a paragraph, and
        !          4830: never take any argument.  The two characters (@@ and the other one)
        !          4831: are complete in themselves.  For example, @code{@@.}, @code{@@:},
        !          4832: @code{@@@{} and @code{@@@}}.@refill
        !          4833: 
        !          4834: @item 2. Alphabetic commands used within a paragraph.
        !          4835: These commands have @@ followed by a letter or a word, followed by an
        !          4836: argument within braces.  For example, the command @code{@@dfn} indicates
        !          4837: the introductory or defining use of a term; it is used as follows: @samp{In
        !          4838: Texinfo, @@-commands are @@dfn@{mark-up@} commands.}@refill
        !          4839: 
        !          4840: @item 3. Alphabetic commands used outside of paragraphs.
        !          4841: Each such command occupies an entire line.  The line starts with @@,
        !          4842: followed by the name of the command (a word) such as @code{@@center} or
        !          4843: @code{@@cindex}.  If no argument is needed, the word is followed by the end
        !          4844: of the line.  If there is an argument, it is separated from the command
        !          4845: name by a space.@refill
        !          4846: @end table
        !          4847: 
        !          4848: Thus, the alphabetic commands fall into two classes that have different
        !          4849: argument syntax.  You cannot tell which class a command falls in by the
        !          4850: appearance of its name, but you can tell by the command's meaning: if it
        !          4851: makes sense to use the command together with other words as part of a
        !          4852: paragraph, the command is in class 2 and must be followed by an argument in
        !          4853: braces; otherwise, it is in class 3 and uses the rest of the line as its
        !          4854: argument.
        !          4855: 
        !          4856: The purpose of having different syntax for commands of classes 2 and 3 is
        !          4857: to make the Texinfo file easier to read, and also to help the GNU Emacs
        !          4858: paragraph and filling commands work properly.  There is only one exception
        !          4859: to this rule: the command @code{@@refill}, which is always used at the end
        !          4860: of a paragraph immediately following the final period or other punctuation
        !          4861: character.  @code{@@refill} takes no argument.  @code{@@refill} never
        !          4862: confuses the Emacs paragraph commands because it cannot start at the
        !          4863: beginning of a line.@refill
        !          4864: 
        !          4865: 
        !          4866: @node  Include Files, TeX Input, Command Syntax, Top
        !          4867: @comment  node-name,  next,  previous,  up
        !          4868: @appendix Include Files
        !          4869: @cindex Include files
        !          4870: 
        !          4871: When Info was first created, it was customary to create many small Info
        !          4872: files on one subject.  By doing this, Emacs did not have to make a large
        !          4873: buffer to hold the whole of a large Info file; instead, Emacs allocated
        !          4874: just enough memory for the small Info file that was needed at the time.
        !          4875: This way, Emacs could avoid wasting memory.  Include files were designed as
        !          4876: a way to create a single, large printed manual out of several smaller Info
        !          4877: files.
        !          4878: 
        !          4879: However, because large Info files can now be split, include files are no
        !          4880: longer strictly necessary and they are used infrequently.  Most often, they
        !          4881: are now used in projects where several different people are writing
        !          4882: different sections of a document simultaneously.
        !          4883: 
        !          4884: @appendixsec How Include Files Work
        !          4885: 
        !          4886: In a Texinfo file, a line of the form @code{@@include @file{filename}} is
        !          4887: ignored when the Info file is generated, but in a printed manual it causes
        !          4888: the contents of the file @file{filename} to be processed and included in the
        !          4889: manual.  The contents of the file @file{filename} can be ignored by Info
        !          4890: because the first file can refer to @file{filename} with menus as well as
        !          4891: cross references.  In the Info system, all the information is, as it were,
        !          4892: `in one place'.  However, when two printed manuals are made from two
        !          4893: separate Texinfo files, the two manuals are separate, and even if they give
        !          4894: each other as references, the references are to separate documents.
        !          4895: Consequently, you will sometimes want to create a comprehensive, printed
        !          4896: manual that contains all the necessary information together in one place.
        !          4897: 
        !          4898: @code{@@include} files are special Texinfo files that are used only for
        !          4899: making such a comprehensive manual.  They are listed inside an outer file
        !          4900: that contains nothing but the beginning and end matter of a Texinfo file
        !          4901: and a number of @code{@@include} commands listing the included files.
        !          4902: 
        !          4903: An @code{@@include} file--a file that will be listed inside an outer file
        !          4904: and processed with the @code{@@include} command--should not start with
        !          4905: @samp{\input texinfo}, as that has already been done by the outer file, and
        !          4906: the character @samp{\} has already been redefined to generate a backslash
        !          4907: in the output.  Instead, an @code{@@include} file usually begins with a
        !          4908: node; it lacks the beginning and ending of a Texinfo file that are
        !          4909: described in the chapters on beginning and ending a file.  @xref{Beginning
        !          4910: a File}, and @pxref{Ending a File} @refill
        !          4911: 
        !          4912: Likewise, an @code{@@include} file should not end with @code{@@bye}, since
        !          4913: that would terminate @TeX{} processing immediately.
        !          4914: 
        !          4915: Here is an example of a outer Texinfo file with @code{@@include} files
        !          4916: within it:@refill
        !          4917: 
        !          4918: @example
        !          4919: \input texinfo @@c -*-texinfo-*-
        !          4920: @@setfilename  include 
        !          4921: @@settitle Include Manual
        !          4922: 
        !          4923: @@setchapternewpage odd
        !          4924: @@titlepage
        !          4925: @@sp 12
        !          4926: @@center @@titlefont@{Include Manual@}
        !          4927: @@sp 2
        !          4928: @@center by Whom Ever
        !          4929: 
        !          4930: @@page
        !          4931: Copyright @@copyright@{@} 1988 Free Software Foundation, Inc.
        !          4932: @@end titlepage
        !          4933: 
        !          4934: @@include foo.texinfo
        !          4935: @@include bar.texinfo
        !          4936: 
        !          4937: @@unnumbered Concept Index
        !          4938: @@printindex cp
        !          4939: 
        !          4940: @@summarycontents
        !          4941: @@contents
        !          4942: 
        !          4943: @@bye
        !          4944: @end example
        !          4945: 
        !          4946: @node TeX Input, Sample Permissions, Include Files, Top
        !          4947: @comment  node-name,  next,  previous,  up
        !          4948: @appendix @TeX{} Input Initialization
        !          4949: @cindex TeX Input Initialization
        !          4950: @cindex TEXINPUTS environment variable
        !          4951: @cindex profile initialization file
        !          4952: @cindex cshrc initialization file
        !          4953: 
        !          4954: You must put an input command on the first line of every Texinfo file to
        !          4955: tell @TeX{} to use the @file{texinfo.tex} file when it is processing the
        !          4956: Texinfo source file.  Otherwise @TeX{} will not know what to do with the
        !          4957: @@-commands.  (The @TeX{} input command is written as @samp{\input
        !          4958: texinfo}.  @xref{First Line}.)@refill
        !          4959: 
        !          4960: @TeX{} needs to be told where to find the @file{texinfo.tex} file that you
        !          4961: have told it to input.  The preferred way to do this is to put
        !          4962: @file{texinfo.tex} in the default inputs directory, which is the
        !          4963: @file{/usr/lib/tex/macros} directory.  If this is done (as it usually is
        !          4964: when GNU Emacs is installed), @TeX{} will find the file and you don't have
        !          4965: to do anything.  Alternatively, you can put @file{texinfo.tex} in the
        !          4966: directory in which the Texinfo source file is located.@refill
        !          4967: 
        !          4968: However, you may want to specify the location of the @code{\input} file
        !          4969: yourself.  One way to do this is to write the complete path for the file
        !          4970: after the @code{\input} command.  Another way is to set the
        !          4971: @samp{TEXINPUTS} environment variable in your @file{.cshrc} or
        !          4972: @file{.profile} file.  The @samp{TEXINPUTS} environment variable will tell
        !          4973: @TeX{} where to find the @file{texinfo.tex} file and any other file that
        !          4974: you might want @TeX{} to use.@refill
        !          4975: 
        !          4976: Whether you use a @file{.cshrc} or @file{.profile} file depends on whether
        !          4977: you use @samp{csh} or @samp{sh} for your shell command interpreter.  When
        !          4978: you use @samp{csh}, it looks to the @file{.cshrc} file for initialization
        !          4979: information, and when you use @samp{sh}, it looks to the @file{.profile}
        !          4980: file.@refill
        !          4981: 
        !          4982: In a @file{.cshrc} file, you could use the following @code{csh} command
        !          4983: sequence:@refill
        !          4984: 
        !          4985: @example
        !          4986: setenv TEXINPUTS .:/usr/me/mylib:/usr/lib/tex/macros
        !          4987: @end example
        !          4988: 
        !          4989: @noindent
        !          4990: In a @file{.profile} file, you could use the following @code{sh} command
        !          4991: sequence:
        !          4992: 
        !          4993: @example
        !          4994: TEXINPUTS=.:/usr/me/mylib:/usr/lib/tex/macros
        !          4995: export TEXINPUTS
        !          4996: @end example
        !          4997: 
        !          4998: @noindent
        !          4999: This would cause @TeX{} to look for @file{\input} file first in the current
        !          5000: directory, indicated by the @samp{.}, then in a hypothetical user's
        !          5001: @file{me/mylib} directory, and finally in the system library.@refill
        !          5002: 
        !          5003: @node Sample Permissions,  Command Index, TeX Input, Top    
        !          5004: @comment  node-name,  next,  previous,  up
        !          5005: @appendix Standard text for Copying Permissions
        !          5006: @cindex Permissions
        !          5007: @cindex Copying permissions
        !          5008: 
        !          5009: Texinfo files should contain sections that tell the readers that they have
        !          5010: the right to copy and distribute the Info file, the printed manual and any
        !          5011: accompanying software.  This appendix contains the standard text of the
        !          5012: Free Software Foundation copying permission notice.  For an example of the
        !          5013: text that could be used for the Distribution, General Public License and NO
        !          5014: WARRANTY sections of a document, see the latest version of the @cite{GNU
        !          5015: Emacs Manual}.
        !          5016: 
        !          5017: The texts of the Free Software Foundation copying permission notice in the
        !          5018: @code{@@ifinfo} section and in the @code{@@titlepage} section are slightly
        !          5019: different.
        !          5020: 
        !          5021: The @code{@@ifinfo} section usually begins with a line that says what the
        !          5022: file documents.  This is what a person looking at the file will first read
        !          5023: if he or she reads the unprocessed Texinfo file or if he or she uses the
        !          5024: advanced Info command @kbd{g *}.  @inforef{Expert, info, info}, for more
        !          5025: information. (If the reader uses the regular Info commands, he or she will
        !          5026: usually start reading at the first node and skip this first section, which
        !          5027: is not in a node.)
        !          5028: 
        !          5029: In the @code{@@ifinfo} section, the summary sentence should be followed by
        !          5030: a copyright notice and then by the copying permission notice.  One of the
        !          5031: copying permission paragraphs is enclosed in @code{@@ignore} and
        !          5032: @code{@@end ignore} commands.  This paragraph states that the Texinfo file
        !          5033: can be processed through @TeX{} and printed, provided the printed manual
        !          5034: carries the proper copying permission notice.  This paragraph is not made
        !          5035: part of the Info file since it is not relevant to the Info file; but it is
        !          5036: a mandatory part of the Texinfo file since it permits people to process the
        !          5037: Texinfo file in @TeX{}.@refill
        !          5038: 
        !          5039: In the printed manual, the Free Software Foundation copying permission
        !          5040: notice follows the copyright notice and publishing information and is
        !          5041: located within the region delineated by the @code{@@titlepage} and
        !          5042: @code{@@end titlepage} commands.  The copying permission notice is exactly
        !          5043: the same as the notice in the @code{@@ifinfo} section except that the
        !          5044: paragraph enclosed in @code{@@ignore} and @code{@@end ignore} commands is
        !          5045: not part of the notice.@refill
        !          5046: 
        !          5047: To make it simpler to copy the permission notice into each section of the
        !          5048: Texinfo file, the complete permission notices for each section are
        !          5049: reproduced in full below even though most of the information is
        !          5050: redundant.@refill
        !          5051: 
        !          5052: Note that you my have to specify the correct name of a section mentioned in
        !          5053: the permission notice.  For example, in the @cite{GDB Manual}, the name of
        !          5054: the section referring to the General Public License is called the ``GDB
        !          5055: General Public License'', but in the sample shown below, that section is
        !          5056: referred to generically as the ``General Public License''.
        !          5057: 
        !          5058: @menu
        !          5059: * Ifinfo Permissions::
        !          5060: * Titlepage Permissions::
        !          5061: @end menu
        !          5062: 
        !          5063: 
        !          5064: @node Ifinfo Permissions, Titlepage Permissions, Sample Permissions, Sample Permissions    
        !          5065: @comment  node-name,  next,  previous,  up
        !          5066: @appendixsec Ifinfo Copying Permissions
        !          5067: @cindex  Ifinfo permissions
        !          5068: 
        !          5069: In the @code{@@ifinfo} section of the Texinfo file, the standard Free
        !          5070: Software Foundation permission notices reads as follows:
        !          5071: 
        !          5072: @example
        !          5073: This file documents @dots{}
        !          5074: 
        !          5075: Copyright 1988 Free Software Foundation, Inc.
        !          5076: 
        !          5077: Permission is granted to make and distribute verbatim copies of
        !          5078: this manual provided the copyright notice and this permission notice
        !          5079: are preserved on all copies.
        !          5080: 
        !          5081: @@ignore
        !          5082: Permission is granted to process this file through TeX and print the
        !          5083: results, provided the printed document carries a copying permission
        !          5084: notice identical to this one except for the removal of this paragraph
        !          5085: (this paragraph not being relevant to the printed manual).
        !          5086: 
        !          5087: @@end ignore
        !          5088: Permission is granted to copy and distribute modified versions of this
        !          5089: manual under the conditions for verbatim copying, provided also that the
        !          5090: sections entitled ``Distribution'' and ``General Public License'' are
        !          5091: included exactly as in the original, and provided that the entire
        !          5092: resulting derived work is distributed under the terms of a permission
        !          5093: notice identical to this one.
        !          5094: 
        !          5095: Permission is granted to copy and distribute translations of this manual
        !          5096: into another language, under the above conditions for modified versions,
        !          5097: except that the sections entitled ``Distribution'' and ``General Public
        !          5098: License'' may be included in a translation approved by the author instead
        !          5099: of in the original English.
        !          5100: @end example
        !          5101: 
        !          5102: @node Titlepage Permissions, , Ifinfo Permissions, Sample Permissions    
        !          5103: @comment  node-name,  next,  previous,  up
        !          5104: @appendixsec Titlepage Copying Permissions
        !          5105: @cindex  Titlepage permissions
        !          5106: 
        !          5107: In the @code{@@titlepage} section of the Texinfo file, the standard Free
        !          5108: Software Foundation copying permission notices follows the copyright notice
        !          5109: and publishing information.  The standard phrasing is:
        !          5110: 
        !          5111: @example
        !          5112: Permission is granted to make and distribute verbatim copies of
        !          5113: this manual provided the copyright notice and this permission notice
        !          5114: are preserved on all copies.
        !          5115: 
        !          5116: Permission is granted to copy and distribute modified versions of this
        !          5117: manual under the conditions for verbatim copying, provided also that the
        !          5118: sections entitled ``Distribution'' and ``General Public License'' are
        !          5119: included exactly as in the original, and provided that the entire
        !          5120: resulting derived work is distributed under the terms of a permission
        !          5121: notice identical to this one.
        !          5122: 
        !          5123: Permission is granted to copy and distribute translations of this manual
        !          5124: into another language, under the above conditions for modified versions,
        !          5125: except that the sections entitled ``Distribution'' and ``General Public
        !          5126: License'' may be included in a translation approved by the author instead
        !          5127: of in the original English.
        !          5128: @end example
        !          5129: 
        !          5130: @node     Command Index, Concept Index, Sample Permissions, Top
        !          5131: @comment  node-name,  next,  previous,  up
        !          5132: @unnumbered  Command Index
        !          5133: 
        !          5134: (When used in a Texinfo file, @@-commands are preceded by an
        !          5135: @samp{@@}.)@refill
        !          5136: 
        !          5137: @printindex fn
        !          5138: 
        !          5139: @node     Concept Index,     ,   Command Index, Top
        !          5140: @comment  node-name,     next,  previous,      up
        !          5141: @unnumbered Concept Index
        !          5142: 
        !          5143: @printindex cp
        !          5144: 
        !          5145: @summarycontents
        !          5146: @contents
        !          5147: @bye

unix.superglobalmegacorp.com

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