This manual is for GNU Texinfo (version 6.8, 8 June 2021), a
documentation system that can produce both online information and a
printed manual from a single source using semantic markup.

   Copyright (C) 1988, 1990-1993, 1995-1999, 2001-2021 Free Software
Foundation, Inc.

     Permission is granted to copy, distribute and/or modify this
     document under the terms of the GNU Free Documentation License,
     Version 1.3 or any later version published by the Free Software
     Foundation; with no Invariant Sections, with no Front-Cover Texts,
     and with no Back-Cover Texts. A copy of the license is included in
     the section entitled "GNU Free Documentation License".

A.3 @-Command Contexts
======================

Here we describe approximately which @-commands can be used in which
contexts.  It is not exhaustive or meant to be a complete reference.
Discrepancies between the information here and the 'makeinfo' or TeX
implementations are most likely to be resolved in favor of the
implementation.

   By "general text" below, we mean anything except sectioning and other
such outer-level document commands, such as '@section', '@node', and
'@setfilename'.

   '@c', '@comment' and '@if ... @end if' conditional commands may
appear anywhere (except the conditionals must still be on lines by
themselves).  '@caption' may only appear in '@float' but may contain
general text.  '@footnote' content likewise.

   @-commands with braces marking text (such as '@strong', '@sc',
'@asis') may contain raw formatter commands such as '@html' but no other
block commands (other commands terminated by '@end') and may not be
split across paragraphs, but may otherwise contain general text.

   In addition to the block command restriction, on '@center', '@exdent'
and '@item' in '@table' lines, @-commands that makes only sense in a
paragraph are not accepted, such as '@indent'.

   In addition to the above, sectioning commands cannot contain
'@anchor', '@footnote' or '@verb'.

   In addition to the above, remaining commands ('@node', '@anchor',
'@printindex', '@ref', '@math', '@cindex', '@url', '@image', and so on)
cannot contain cross-reference commands ('@ref', '@xref', '@pxref' and
'@inforef').  In one last addition, '@shortcaption' may only appear
inside '@float'.

   For precise and complete information, we suggest looking into the
test suite in the sources, which exhaustively tries combinations.

A.4 Obsolete @-Commands
=======================

Here are Texinfo @-commands which are obsolete or have been removed
completely.  This section is for historical purposes.

'@refill'
     This command used to refill and indent the paragraph after all the
     other processing has been done.  It is no longer needed, since all
     formatters now automatically refill as needed, but you may still
     see it in the source to some manuals, as it does no harm.

'@setcontentsaftertitlepage'
     In the past, the contents commands were sometimes placed at the end
     of the file, after any indices and just before the '@bye', but we
     no longer recommend this.  This command could be used by a user
     printing a manual, to force the contents to be printed after the
     title page (after the '@end titlepage' line) even if the
     '@contents' command was at the end of the manual.

'@setshortcontentsaftertitlepage'
     This placed the short table of contents after the '@end titlepage'
     command even if the '@shortcontents' command was at the end.

Appendix B Tips and Hints
*************************

Here are some tips for writing Texinfo documentation:

   * Write in the present tense, not in the past or the future.

   * Write actively!  For example, write "We recommend that ..." rather
     than "It is recommended that ...".

   * Use 70 or 72 as your fill column.  Longer lines are hard to read.

   * Include a copyright notice and copying permissions.

Index, Index, Index!
....................

Write many index entries, in different ways.  Readers like indices; they
are helpful and convenient.

   Although it is easiest to write index entries as you write the body
of the text, some people prefer to write entries afterwards.  In either
case, write an entry before the paragraph to which it applies.  This
way, an index entry points to the first page of a paragraph that is
split across pages.

   Here are more index-related hints we have found valuable:

   * Write each index entry differently, so each entry refers to a
     different place in the document.

   * Write index entries only where a topic is discussed significantly.
     For example, it is not useful to index "debugging information" in a
     chapter on reporting bugs.  Someone who wants to know about
     debugging information will certainly not find it in that chapter.

   * Consistently capitalize the first word of every concept index
     entry, or else consistently use lowercase.  Terse entries often
     call for lowercase; longer entries for capitalization.  Whichever
     case convention you use, please use one or the other consistently!
     Mixing the two styles looks bad.

   * Always capitalize or use uppercase for those words in an index for
     which this is proper, such as names of countries or acronyms.
     Always use the appropriate case for case-sensitive names, such as
     those in C or Lisp.

   * Write the indexing commands that refer to a whole section
     immediately after the section command, and write the indexing
     commands that refer to a paragraph before that paragraph.

     In the example that follows, a blank line comes after the index
     entry for "Leaping":

          @section The Dog and the Fox
          @cindex Jumping, in general
          @cindex Leaping

          @cindex Dog, lazy, jumped over
          @cindex Lazy dog jumped over
          @cindex Fox, jumps over dog
          @cindex Quick fox jumps over dog
          The quick brown fox jumps over the lazy dog.

     (Note that the example shows entries for the same concept that are
     written in different ways--'Lazy dog', and 'Dog, lazy'--so readers
     can look up the concept in different ways.)

Blank Lines
...........

   * Insert a blank line between a sectioning command and the first
     following sentence or paragraph, or between the indexing commands
     associated with the sectioning command and the first following
     sentence or paragraph, as shown in the tip on indexing.  It makes
     the source easier to read.

   * Always insert a blank line before a '@table' command and after an
     '@end table' command; but never insert a blank line after an
     '@table' command.

     For example,

          Types of fox:

          @table @samp
          @item Quick
          Jump over lazy dogs.

          @item Brown
          Also jump over lazy dogs.
          @end table

          @noindent
          On the other hand, ...

     Insert blank lines before and after '@itemize' ... '@end itemize'
     and '@enumerate' ... '@end enumerate' in the same way.

Complete Phrases
................

Complete phrases are easier to read than ...

   * Write entries in an itemized list as complete sentences; or at
     least, as complete phrases.  Incomplete expressions ... awkward ...
     like this.

   * Write the prefatory sentence or phrase for a multi-item list or
     table as a complete expression.  Do not write "You can set:";
     instead, write "You can set these variables:".  The former
     expression sounds cut off.

Editions, Dates and Versions
............................

Include edition numbers, version numbers, and dates in the '@copying'
text (for people reading the Texinfo file, and for the legal copyright
in the output files).  Then use '@insertcopying' in the '@titlepage'
section for people reading the printed output (see Short Sample).

   It is easiest to handle such version information using '@set' and
'@value'.  See @value Example, and GNU Sample Texts.

Definition Commands
...................

Definition commands are '@deffn', '@defun', '@defmac', and the like, and
enable you to write descriptions in a uniform format.

   * Write just one definition command for each entity you define with a
     definition command.  The automatic indexing feature creates an
     index entry that leads the reader to the definition.

   * Use '@table' ... '@end table' in an appendix that contains a
     summary of functions, not '@deffn' or other definition commands.

Capitalization
..............

   * Capitalize "Texinfo"; it is a name.  Do not write the 'x' or 'i' in
     uppercase.

   * Capitalize "Info"; it is a name.

   * Write TeX using the '@TeX{}' command.  Note the uppercase 'T' and
     'X'.  This command causes the formatters to typeset the name
     according to the wishes of Donald Knuth, who wrote TeX.  (Likewise
     '@LaTeX{}' for LaTeX.)

Spaces
......

Do not use spaces to format a Texinfo file, except inside of '@example'
... '@end example' and other literal environments and commands.

   For example, TeX fills the following:

        @kbd{C-x v}
        @kbd{M-x vc-next-action}
           Perform the next logical operation
           on the version-controlled file
           corresponding to the current buffer.

so it looks like this:

     'C-x v' 'M-x vc-next-action' Perform the next logical operation on
     the version-controlled file corresponding to the current buffer.

In this case, the text should be formatted with '@table', '@item', and
'@itemx', to create a table.

@code, @samp, @var, and '---'
.............................

   * Use '@code' around Lisp symbols, including command names.  For
     example,

          The main function is @code{vc-next-action}, ...

   * Avoid putting letters such as 's' immediately after an '@code'.
     Such letters look bad.

   * Use '@var' around meta-variables.  Do not write angle brackets
     around them.

   * Use three hyphens in a row, '---', to indicate a long dash.  TeX
     typesets these as a long dash and the Info formatters reduce three
     hyphens to two.

Periods Outside of Quotes
.........................

Place periods and other punctuation marks _outside_ of quotations,
unless the punctuation is part of the quotation.  This practice goes
against some publishing conventions in the United States, but enables
the reader to distinguish between the contents of the quotation and the
whole passage.

   For example, you should write the following sentence with the period
outside the end quotation marks:

     Evidently, 'au' is an abbreviation for ``author''.

since 'au' does _not_ serve as an abbreviation for 'author.' (with a
period following the word).

Introducing New Terms
.....................

   * Introduce new terms so that a reader who does not know them can
     understand them from context; or write a definition for the term.

     For example, in the following, the terms "check in", "register" and
     "delta" are all appearing for the first time; the example sentence
     should be rewritten so they are understandable.

          The major function assists you in checking in a file to your
          version control system and registering successive sets of
          changes to it as deltas.

   * Use the '@dfn' command around a word being introduced, to indicate
     that the reader should not expect to know the meaning already, and
     should expect to learn the meaning from this passage.

Program Invocation Nodes
........................

You can invoke programs such as Emacs, GCC, and 'gawk' from a shell.
The documentation for each program should contain a section that
describes this.  Unfortunately, if the node names and titles for these
sections are all different, they are difficult for users to find.

   So, there is a convention to name such sections with a phrase
beginning with the word 'Invoking', as in 'Invoking Emacs'; this way,
users can find the section easily.

ANSI C Syntax
.............

When you use '@example' to describe a C function's calling conventions,
use the ANSI C syntax, like this:

     void dld_init (char *@var{path});

And in the subsequent discussion, refer to the argument values by
writing the same argument names, again highlighted with '@var'.

   Avoid the obsolete style that looks like this:

     #include <dld.h>

     dld_init (path)
       char *path;

   Also, it is best to avoid writing '#include' above the declaration
just to indicate that the function is declared in a header file.  The
practice may give the misimpression that the '#include' belongs near the
declaration of the function.  Either state explicitly which header file
holds the declaration or, better yet, name the header file used for a
group of functions at the beginning of the section that describes the
functions.

Node Length
...........

Keep nodes (sections) to a reasonable length, whatever reasonable might
be in the given context.  Don't hesitate to break up long nodes into
subnodes and have an extensive tree structure; that's what it's there
for.  Many times, readers will probably try to find a single specific
point in the manual, using search, indexing, or just plain guessing,
rather than reading the whole thing from beginning to end.

   You can use the 'texi-elements-by-size' utility to see a list of all
nodes (or sections) in the document, sorted by size (either lines or
words), to find candidates for splitting.  It's in the 'util/'
subdirectory of the Texinfo sources.

Bad Examples
............

Here are several examples of bad writing to avoid:

   In this example, say, " ... you must '@dfn'{check in} the new
version."  That flows better.

     When you are done editing the file, you must perform a '@dfn'{check
     in}.

   In the following example, say, "... makes a unified interface such as
VC mode possible."

     SCCS, RCS and other version-control systems all perform similar
     functions in broadly similar ways (it is this resemblance which
     makes a unified control mode like this possible).

   And in this example, you should specify what 'it' refers to:

     If you are working with other people, it assists in coordinating
     everyone's changes so they do not step on each other.

And Finally ...
...............

   * Pronounce TeX as if the 'X' were a Greek 'chi', as the last sound
     in the name 'Bach'.  But pronounce Texinfo as in 'speck':
     "teckinfo".

   * Write notes for yourself at the very end of a Texinfo file after
     the '@bye'.  None of the formatters process text after the '@bye';
     it is as if the text were within '@ignore' ... '@end ignore'.

Appendix C Sample Texinfo Files
*******************************

This appendix includes texts to be used in GNU manuals.

C.1 GNU Sample Texts
====================

Following is a sample Texinfo document with the full texts that should
be used (adapted as necessary) in GNU manuals.

   As well as the legal texts, it also serves as a practical example of
how many elements in a GNU system can affect the manual.  If you're not
familiar with all these different elements, don't worry.  They're not
required and a perfectly good manual can be written without them.
They're included here nonetheless because many manuals do (or could)
benefit from them.

   See Short Sample, for a minimal example of a Texinfo file.

   Here are some notes on the example:

   * The 'version.texi' in the '@include' command is maintained
     automatically by Automake (see Texinfo (automake)).  It sets the
     'VERSION', 'UPDATED' and 'UPDATED-MONTH' values used elsewhere.  If
     your distribution doesn't use Automake, but you do use Emacs, you
     may find the time-stamp.el package helpful (see Time Stamps (emacs)).

   * The '@syncodeindex' command reflects the recommendation to use only
     one index where possible, to make it easier for readers to look up
     index entries.

   * The '@dircategory' is for constructing the Info directory.  See
     Installing Dir Entries, which includes a variety of recommended
     category names.

   * The 'Invoking' node is a GNU standard to help users find the basic
     information about command-line usage of a given program.  See
     Manual Structure Details (standards).

   * This sample shows how to includes the FDL in a manual using the
     '@include' command.  The 'fdl.texi' file is available in the
     Texinfo and other GNU source distributions.  It is also available
     on the GNU website (at <https://www.gnu.org/licenses/fdl-1.3.html>)
     along with guidance for using it.

   * If the FSF is not the copyright holder, then use the appropriate
     name.

   * For documents that express your personal views, feelings or
     experiences, it is more appropriate to use a license permitting
     only verbatim copying, rather than the FDL.  See Verbatim Copying License.

   Here is the sample document:

\input texinfo   @c -*-texinfo-*-
@comment %**start of header
@include version.texi
@settitle GNU Sample @value{VERSION}
@syncodeindex pg cp
@comment %**end of header
@copying
This manual is for GNU Sample (version @value{VERSION}, @value{UPDATED}),
which is an example in the Texinfo documentation.

Copyright @copyright{} 2016 Free Software Foundation, Inc.

@quotation
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts.  A copy of the license is included in the section entitled
``GNU Free Documentation License''.
@end quotation
@end copying

@dircategory Texinfo documentation system
@direntry
* sample: (sample)Invoking sample.
@end direntry

@titlepage
@title GNU Sample
@subtitle for version @value{VERSION}, @value{UPDATED}
@author A.U. Thor (@email{bug-sample@@gnu.org})
@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage

@contents

@node Top
@top GNU Sample

This manual is for GNU Sample (version @value{VERSION}, @value{UPDATED}).

@menu
* Invoking sample::
* GNU Free Documentation License::
* Index::
@end menu

@node Invoking sample
@chapter Invoking sample

@pindex sample
@cindex invoking @command{sample}

This is a sample manual.  There is no sample program to
invoke, but if there were, you could see its basic usage
and command line options here.

@node GNU Free Documentation License
@appendix GNU Free Documentation License

@include fdl.texi

@node Index
@unnumbered Index

@printindex cp

@bye

C.2 Verbatim Copying License
============================

For software manuals and other documentation, it is critical to use a
license permitting free redistribution and updating, so that when a free
program is changed, the documentation can be updated as well.

   On the other hand, for documents that express your personal views,
feelings or experiences, it is more appropriate to use a license
permitting only verbatim copying.

   Here is a sample text for such a license permitting verbatim copying
only.  This is just the license text itself.  For a complete sample
document, see the previous sections.

@copying
This document is a sample for allowing verbatim copying only.

Copyright @copyright{} 2016 Free Software Foundation, Inc.

@quotation
Permission is granted to make and distribute verbatim copies
of this entire document without royalty provided the
copyright notice and this permission notice are preserved.
@end quotation
@end copying

C.3 All-permissive Copying License
==================================

For software manuals and other documentation, it is important to use a
license permitting free redistribution and updating, so that when a free
program is changed, the documentation can be updated as well.

   On the other hand, for small supporting files, short manuals (under
300 lines long) and rough documentation (README files, INSTALL files,
etc.), the full FDL would be overkill.  They can use a simple
all-permissive license.

   Here is a sample text for such an all-permissive license.  This is
just the license text itself.  For a complete sample document, see the
previous sections.

     Copyright @copyright{} 2016 Free Software Foundation, Inc.

     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
     notice and this notice are preserved.

Appendix D Using Texinfo Mode
*****************************

You may edit a Texinfo file with any text editor you choose.  A Texinfo
file is no different from any other ASCII file.  However, GNU Emacs
comes with a special mode, called Texinfo mode, that provides Emacs
commands and tools to help ease your work.

D.1 Texinfo Mode Overview
=========================

Texinfo mode provides special features for working with Texinfo files.
You can:

   * Insert frequently used @-commands.

   * Automatically create '@node' lines.

   * Show the structure of a Texinfo source file.

   * Automatically create or update the 'Next', 'Previous', and 'Up'
     pointers of a node.

   * Automatically create or update menus.

   * Automatically create a master menu.

   * Format a part or all of a file for Info.

   * Typeset and print part or all of a file.

   Perhaps the two most helpful features are those for inserting
frequently used @-commands and for creating node pointers and menus.

D.2 The Usual GNU Emacs Editing Commands
========================================

In most cases, the usual Text mode commands work the same in Texinfo
mode as they do in Text mode.  Texinfo mode adds new editing commands
and tools to GNU Emacs' general purpose editing features.  The major
difference concerns filling.  In Texinfo mode, the paragraph separation
variable and syntax table are redefined so that Texinfo commands that
should be on lines of their own are not inadvertently included in
paragraphs.  Thus, the 'M-q' ('fill-paragraph') command will refill a
paragraph but not mix an indexing command on a line adjacent to it into
the paragraph.

   In addition, Texinfo mode sets the 'page-delimiter' variable to the
value of 'texinfo-chapter-level-regexp'; by default, this is a regular
expression matching the commands for chapters and their equivalents,
such as appendices.  With this value for the page delimiter, you can
jump from chapter title to chapter title with the 'C-x ]'
('forward-page') and 'C-x [' ('backward-page') commands and narrow to a
chapter with the 'C-x n p' ('narrow-to-page') command.  (see
Pages (emacs), for details about the page commands.)

   You may name a Texinfo file however you wish, but the convention is
to end a Texinfo file name with one of the extensions '.texinfo',
'.texi', '.txi', or '.tex'.  A longer extension is preferred, since it
is explicit, but a shorter extension may be necessary for operating
systems that limit the length of file names.  GNU Emacs automatically
enters Texinfo mode when you visit a file with a '.texinfo', '.texi' or
'.txi' extension.  Also, Emacs switches to Texinfo mode when you visit a
file that has '-*-texinfo-*-' in its first line.  If ever you are in
another mode and wish to switch to Texinfo mode, type 'M-x
texinfo-mode'.

   Like all other Emacs features, you can customize or enhance Texinfo
mode as you wish.  In particular, the keybindings are very easy to
change.  The keybindings described here are the default or standard
ones.

D.3 Inserting Frequently Used Commands
======================================

Texinfo mode provides commands to insert various frequently used
@-commands into the buffer.  You can use these commands to save
keystrokes.

   The insert commands are invoked by typing 'C-c' twice and then the
first letter of the @-command:

'C-c C-c c'
'M-x texinfo-insert-@code'
     Insert '@code{}' and put the cursor between the braces.

'C-c C-c d'
'M-x texinfo-insert-@dfn'
     Insert '@dfn{}' and put the cursor between the braces.

'C-c C-c e'
'M-x texinfo-insert-@end'
     Insert '@end' and attempt to insert the correct following word,
     such as 'example' or 'table'.  (This command does not handle nested
     lists correctly, but inserts the word appropriate to the
     immediately preceding list.)

'C-c C-c i'
'M-x texinfo-insert-@item'
     Insert '@item' and put the cursor at the beginning of the next
     line.

'C-c C-c k'
'M-x texinfo-insert-@kbd'
     Insert '@kbd{}' and put the cursor between the braces.

'C-c C-c n'
'M-x texinfo-insert-@node'
     Insert '@node' and a comment line listing the sequence for the
     'Next', 'Previous', and 'Up' nodes.  Leave point after the '@node'.

'C-c C-c o'
'M-x texinfo-insert-@noindent'
     Insert '@noindent' and put the cursor at the beginning of the next
     line.

'C-c C-c r'
'M-x texinfo-insert-dwim-@ref'
     This function and binding were added in Emacs 27.1.  Inserts one of
     '@pxref{}', '@xref{}', or '@ref{}' based on the text around point;
     calling it near an unclosed preceding open parenthesis results in
     '@pxref{}', at the beginning of a sentence or at '(point-min)'
     yields '@xref{}', any other location (including inside a word),
     will result in '@ref{}'.  A numeric argument says how many words
     the braces should surround.  Puts the cursor between the braces.

'C-c C-c s'
'M-x texinfo-insert-@samp'
     Insert '@samp{}' and put the cursor between the braces.

'C-c C-c t'
'M-x texinfo-insert-@table'
     Insert '@table' followed by a <SPC> and leave the cursor after the
     <SPC>.

'C-c C-c v'
'M-x texinfo-insert-@var'
     Insert '@var{}' and put the cursor between the braces.

'C-c C-c x'
'M-x texinfo-insert-@example'
     Insert '@example' and put the cursor at the beginning of the next
     line.

'C-c C-c {'
'M-x texinfo-insert-braces'
     Insert '{}' and put the cursor between the braces.

'C-c }'
'C-c ]'
'M-x up-list'
     Move from between a pair of braces forward past the closing brace.
     Typing 'C-c ]' is easier than typing 'C-c }', which is, however,
     more mnemonic; hence the two keybindings.  (Also, you can move out
     from between braces by typing 'C-f'.)

   To put a command such as '@code{...}' around an _existing_ word,
position the cursor in front of the word and type 'C-u 1 C-c C-c c'.
This makes it easy to edit existing plain text.  The value of the prefix
argument tells Emacs how many words following point to include between
braces--'1' for one word, '2' for two words, and so on.  Use a negative
argument to enclose the previous word or words.  If you do not specify a
prefix argument, Emacs inserts the @-command string and positions the
cursor between the braces.  This feature works only for those @-commands
that operate on a word or words within one line, such as '@kbd' and
'@var'.

   This set of insert commands was created after analyzing the frequency
with which different @-commands are used in the 'GNU Emacs Manual' and
the 'GDB Manual'.  If you wish to add your own insert commands, you can
bind a keyboard macro to a key, use abbreviations, or extend the code in
'texinfo.el'.

   'C-c C-c C-d' ('texinfo-start-menu-description') is an insert command
that works differently from the other insert commands.  It inserts a
node's section or chapter title in the space for the description in a
menu entry line.  (A menu entry has three parts, the entry name, the
node name, and the description.  Only the node name is required, but a
description helps explain what the node is about.  See The Parts of a Menu.)

   To use 'texinfo-start-menu-description', position point in a menu
entry line and type 'C-c C-c C-d'.  The command looks for and copies the
title that goes with the node name, and inserts the title as a
description; it positions point at the beginning of the inserted text so
you can edit it.  The function does not insert the title if the menu
entry line already contains a description.

   This command is only an aid to writing descriptions; it does not do
the whole job.  You must edit the inserted text since a title tends to
use the same words as a node name but a useful description uses
different words.

D.4 Showing the Sectioning Structure of a File
==============================================

You can show the sectioning structure of a Texinfo file by using the
'C-c C-s' command ('texinfo-show-structure').  This command lists the
lines that begin with the @-commands for '@chapter', '@section', and the
like.  It constructs what amounts to a table of contents.  These lines
are displayed in another buffer called the '*Occur*' buffer.  In that
buffer, you can position the cursor over one of the lines and use the
'C-c C-c' command ('occur-mode-goto-occurrence'), to jump to the
corresponding spot in the Texinfo file.

'C-c C-s'
'M-x texinfo-show-structure'
     Show the '@chapter', '@section', and such lines of a Texinfo file.

'C-c C-c'
'M-x occur-mode-goto-occurrence'
     Go to the line in the Texinfo file corresponding to the line under
     the cursor in the '*Occur*' buffer.

   If you call 'texinfo-show-structure' with a prefix argument by typing
'C-u C-c C-s', it will list not only those lines with the @-commands for
'@chapter', '@section', and the like, but also the '@node' lines.  You
can use 'texinfo-show-structure' with a prefix argument to check whether
the 'Next', 'Previous', and 'Up' pointers of an '@node' line are
correct.

   Often, when you are working on a manual, you will be interested only
in the structure of the current chapter.  In this case, you can mark off
the region of the buffer that you are interested in by using the 'C-x n
n' ('narrow-to-region') command and 'texinfo-show-structure' will work
on only that region.  To see the whole buffer again, use 'C-x n w'
('widen').  (see Narrowing (emacs), for more information about the
narrowing commands.)

   In addition to providing the 'texinfo-show-structure' command,
Texinfo mode sets the value of the page delimiter variable to match the
chapter-level @-commands.  This enables you to use the 'C-x ]'
('forward-page') and 'C-x [' ('backward-page') commands to move forward
and backward by chapter, and to use the 'C-x n p' ('narrow-to-page')
command to narrow to a chapter.  See Pages (emacs), for more
information about the page commands.

D.5 Updating Nodes and Menus
============================

Texinfo mode provides commands for automatically creating or updating
menus and node pointers.  The commands are called "update" commands
because their most frequent use is for updating a Texinfo file after you
have worked on it; but you can use them to insert the 'Next',
'Previous', and 'Up' pointers into an '@node' line that has none and to
create menus in a file that has none.

   If you do not use any updating commands, you need to write menus by
hand, which is a tedious task.

D.5.1 The Updating Commands
---------------------------

You can use the updating commands to:

   * insert or update the 'Next', 'Previous', and 'Up' pointers of a
     node,

   * insert or update the menu for a section, and

   * create a master menu for a Texinfo source file.

   You can also use the commands to update all the nodes and menus in a
region or in a whole Texinfo file.

   The updating commands work only with conventional Texinfo files,
which are structured hierarchically like books.  In such files, a
structuring command line must follow closely after each '@node' line,
except for the 'Top' '@node' line.  (A "structuring command line" is a
line beginning with '@chapter', '@section', or other similar command.)

   You can write the structuring command line on the line that follows
immediately after an '@node' line or else on the line that follows after
a single '@comment' line or a single '@ifinfo' line.  You cannot
interpose more than one line between the '@node' line and the
structuring command line; and you may interpose only a '@comment' line
or an '@ifinfo' line.

   Commands which work on a whole buffer require that the 'Top' node be
followed by a node with a '@chapter' or equivalent-level command.  The
menu updating commands will not create a main or master menu for a
Texinfo file that has only '@chapter'-level nodes!  The menu updating
commands only create menus _within_ nodes for lower level nodes.  To
create a menu of chapters, you must provide a 'Top' node.

   The menu updating commands remove menu entries that refer to other
Info files since they do not refer to nodes within the current buffer.
This is a deficiency.  Rather than use menu entries, you can use cross
references to refer to other Info files.  None of the updating commands
affect cross-references.

   Texinfo mode has five updating commands that are used most often: two
are for updating the node pointers or menu of a single node (or a
region); two are for updating every node pointer and menu in a file; and
one, the 'texinfo-master-menu' command, is for creating a master menu
for a complete file, and optionally, for updating every node and menu in
the whole Texinfo file.

   The 'texinfo-master-menu' command is the primary command:

'C-c C-u m'
'M-x texinfo-master-menu'
     Create or update a master menu that includes all the other menus
     (incorporating the descriptions from pre-existing menus, if any).

     With an argument (prefix argument, 'C-u,' if interactive), first
     create or update all the nodes and all the regular menus in the
     buffer before constructing the master menu.  (see The Top Node and Master Menu,
     for more about a master menu.)

     For 'texinfo-master-menu' to work, the Texinfo file must have a
     'Top' node and at least one subsequent node.

     After extensively editing a Texinfo file, you can type the
     following:

          C-u M-x texinfo-master-menu
     or
          C-u C-c C-u m

     This updates all the nodes and menus completely and all at once.

   The other major updating commands do smaller jobs and are designed
for the person who updates nodes and menus as he or she writes a Texinfo
file.

   The commands are:

'C-c C-u C-n'
'M-x texinfo-update-node'
     Insert the 'Next', 'Previous', and 'Up' pointers for the node that
     point is within (i.e., for the '@node' line preceding point).  If
     the '@node' line has pre-existing 'Next', 'Previous', or 'Up'
     pointers in it, the old pointers are removed and new ones inserted.
     With an argument (prefix argument, 'C-u', if interactive), this
     command updates all '@node' lines in the region (which is the text
     between point and mark).

'C-c C-u C-m'
'M-x texinfo-make-menu'
     Create or update the menu in the node that point is within.  With
     an argument ('C-u' as prefix argument, if interactive), the command
     makes or updates menus for the nodes which are either within or a
     part of the region.

     Whenever 'texinfo-make-menu' updates an existing menu, the
     descriptions from that menu are incorporated into the new menu.
     This is done by copying descriptions from the existing menu to the
     entries in the new menu that have the same node names.  If the node
     names are different, the descriptions are not copied to the new
     menu.

'C-c C-u C-e'
'M-x texinfo-every-node-update'
     Insert or update the 'Next', 'Previous', and 'Up' pointers for
     every node in the buffer.

'C-c C-u C-a'
'M-x texinfo-all-menus-update'
     Create or update all the menus in the buffer.  With an argument
     ('C-u' as prefix argument, if interactive), first insert or update
     all the node pointers before working on the menus.

     If a master menu exists, the 'texinfo-all-menus-update' command
     updates it; but the command does not create a new master menu if
     none already exists.  (Use the 'texinfo-master-menu' command for
     that.)

     When working on a document that does not merit a master menu, you
     can type the following:

          C-u C-c C-u C-a
     or
          C-u M-x texinfo-all-menus-update

     This updates all the nodes and menus.

   The 'texinfo-column-for-description' variable specifies the column to
which menu descriptions are indented.  By default, the value is 32
although it can be useful to reduce it to as low as 24.  You can set the
variable via customization (see Customization (emacs)) or with the
'M-x set-variable' command (see Examining and Setting Variables (emacs)).

   Also, the 'texinfo-indent-menu-description' command may be used to
indent existing menu descriptions to a specified column.  Finally, if
you wish, you can use the 'texinfo-insert-node-lines' command to insert
missing '@node' lines into a file.  (see Other Updating Commands,
for more information.)

D.5.2 Updating Requirements
---------------------------

To use the updating commands, you must organize the Texinfo file
hierarchically with chapters, sections, subsections, and the like.  When
you construct the hierarchy of the manual, do not 'jump down' more than
one level at a time: you can follow the 'Top' node with a chapter, but
not with a section; you can follow a chapter with a section, but not
with a subsection.  However, you may 'jump up' any number of levels at
one time--for example, from a subsection to a chapter.

   Each '@node' line, with the exception of the line for the 'Top' node,
must be followed by a line with a structuring command such as
'@chapter', '@section', or '@unnumberedsubsec'.

   Each '@node' line/structuring-command line combination must look
either like this:

     @node     Comments,  Minimum, Conventions, Overview
     @comment  node-name, next,    previous,    up
     @section Comments

   or like this (without the '@comment' line):

     @node Comments, Minimum, Conventions, Overview
     @section Comments

   or like this (without the explicit node pointers):

     @node Comments
     @section Comments

In this example, 'Comments' is the name of both the node and the
section.  The next node is called 'Minimum' and the previous node is
called 'Conventions'.  The 'Comments' section is within the 'Overview'
node, which is specified by the 'Up' pointer.  (Instead of an '@comment'
line, you may also write an '@ifinfo' line.)

   If a file has a 'Top' node, it must be called 'top' or 'Top' and be
the first node in the file.

   The menu updating commands create a menu of sections within a
chapter, a menu of subsections within a section, and so on.  This means
that you must have a 'Top' node if you want a menu of chapters.

   Incidentally, the 'makeinfo' command will create an Info file for a
hierarchically organized Texinfo file that lacks 'Next', 'Previous' and
'Up' pointers.  Thus, if you can be sure that your Texinfo file will be
formatted with 'makeinfo', you have no need for the update node
commands.  (see Creating an Info File, for more information about
'makeinfo'.)

D.5.3 Other Updating Commands
-----------------------------

In addition to the five major updating commands, Texinfo mode possesses
several less frequently used updating commands:

'M-x texinfo-insert-node-lines'
     Insert '@node' lines before the '@chapter', '@section', and other
     sectioning commands wherever they are missing throughout a region
     in a Texinfo file.

     With an argument ('C-u' as prefix argument, if interactive), the
     command 'texinfo-insert-node-lines' not only inserts '@node' lines
     but also inserts the chapter or section titles as the names of the
     corresponding nodes.  In addition, it inserts the titles as node
     names in pre-existing '@node' lines that lack names.  Since node
     names should be more concise than section or chapter titles, you
     must manually edit node names so inserted.

     For example, the following marks a whole buffer as a region and
     inserts '@node' lines and titles throughout:

          C-x h C-u M-x texinfo-insert-node-lines

     This command inserts titles as node names in '@node' lines; the
     'texinfo-start-menu-description' command (see Inserting Frequently Used Commands)
     inserts titles as
     descriptions in menu entries, a different action.  However, in both
     cases, you need to edit the inserted text.

'M-x texinfo-multiple-files-update'
     Update nodes and menus in a document built from several separate
     files.  With 'C-u' as a prefix argument, create and insert a master
     menu in the outer file.  With a numeric prefix argument, such as
     'C-u 2', first update all the menus and all the 'Next', 'Previous',
     and 'Up' pointers of all the included files before creating and
     inserting a master menu in the outer file.  The
     'texinfo-multiple-files-update' command is described in the
     appendix on '@include' files.  See
     texinfo-multiple-files-update.

'M-x texinfo-indent-menu-description'
     Indent every description in the menu following point to the
     specified column.  You can use this command to give yourself more
     space for descriptions.  With an argument ('C-u' as prefix
     argument, if interactive), the 'texinfo-indent-menu-description'
     command indents every description in every menu in the region.
     However, this command does not indent the second and subsequent
     lines of a multi-line description.

'M-x texinfo-sequential-node-update'
     Insert the names of the nodes immediately following and preceding
     the current node as the 'Next' or 'Previous' pointers regardless of
     those nodes' hierarchical level.  This means that the 'Next' node
     of a subsection may well be the next chapter.  Sequentially ordered
     nodes are useful for novels and other documents that you read
     through sequentially.  (However, in Info, the 'g *' command lets
     you look through the file sequentially, so sequentially ordered
     nodes are not strictly necessary.)  With an argument (prefix
     argument, if interactive), the 'texinfo-sequential-node-update'
     command sequentially updates all the nodes in the region.

D.6 Formatting for Info
=======================

Texinfo mode provides several commands for formatting part or all of a
Texinfo file for Info.  Often, when you are writing a document, you want
to format only part of a file--that is, a region.

   You can use either the 'texinfo-format-region' or the
'makeinfo-region' command to format a region:

'C-c C-e C-r'
'M-x texinfo-format-region'
'C-c C-m C-r'
'M-x makeinfo-region'
     Format the current region for Info.

   You can use either the 'texinfo-format-buffer' or the
'makeinfo-buffer' command to format a whole buffer:

'C-c C-e C-b'
'M-x texinfo-format-buffer'
'C-c C-m C-b'
'M-x makeinfo-buffer'
     Format the current buffer for Info.

   For example, after writing a Texinfo file, you can type the
following:

     C-u C-c C-u m
or
     C-u M-x texinfo-master-menu

This updates all the nodes and menus.  Then type the following to create
an Info file:

     C-c C-m C-b
or
     M-x makeinfo-buffer

   See Creating an Info File for details about Info formatting.

D.7 Printing
============

Typesetting and printing a Texinfo file is a multi-step process in which
you first create a file for printing (called a DVI file), and then print
the file.  Optionally, you may also create indices.  To do this, you
must run the 'texindex' command after first running the 'tex'
typesetting command; and then you must run the 'tex' command again.  Or
else run the 'texi2dvi' command which automatically creates indices as
needed (see Format with texi2dvi).

   Often, when you are writing a document, you want to typeset and print
only part of a file to see what it will look like.  You can use the
'texinfo-tex-region' and related commands for this purpose.  Use the
'texinfo-tex-buffer' command to format all of a buffer.

'C-c C-t C-b'
'M-x texinfo-tex-buffer'
     Run 'texi2dvi' on the buffer.  In addition to running TeX on the
     buffer, this command automatically creates or updates indices as
     needed.

'C-c C-t C-r'
'M-x texinfo-tex-region'
     Run TeX on the region.

'C-c C-t C-i'
'M-x texinfo-texindex'
     Run 'texindex' to sort the indices of a Texinfo file formatted with
     'texinfo-tex-region'.  The 'texinfo-tex-region' command does not
     run 'texindex' automatically; it only runs the 'tex' typesetting
     command.  You must run the 'texinfo-tex-region' command a second
     time after sorting the raw index files with the 'texindex' command.
     (Usually, you do not format an index when you format a region, only
     when you format a buffer.  Now that the 'texi2dvi' command exists,
     there is little or no need for this command.)

'C-c C-t C-p'
'M-x texinfo-tex-print'
     Print the file (or the part of the file) previously formatted with
     'texinfo-tex-buffer' or 'texinfo-tex-region'.

   For 'texinfo-tex-region' or 'texinfo-tex-buffer' to work, the file
_must_ start with a '\input texinfo' line and must include a '@settitle'
line.  The file must end with '@bye' on a line by itself.  (When you use
'texinfo-tex-region', you must surround the '@settitle' line with
start-of-header and end-of-header lines.)

   See Hardcopy, for a description of the other TeX related
commands, such as 'tex-show-print-queue'.

D.8 Texinfo Mode Summary
========================

In Texinfo mode, each set of commands has default keybindings that begin
with the same keys.  All the commands that are custom-created for
Texinfo mode begin with 'C-c'.  The keys are somewhat mnemonic.

Insert Commands
---------------

The insert commands are invoked by typing 'C-c' twice and then the first
letter of the @-command to be inserted.  (It might make more sense
mnemonically to use 'C-c C-i', for 'custom insert', but 'C-c C-c' is
quick to type.)

     C-c C-c c       Insert '@code'.
     C-c C-c d       Insert '@dfn'.
     C-c C-c e       Insert '@end'.
     C-c C-c i       Insert '@item'.
     C-c C-c n       Insert '@node'.
     C-c C-c s       Insert '@samp'.
     C-c C-c v       Insert '@var'.
     C-c {       Insert braces.
     C-c ]
     C-c }       Move out of enclosing braces.

     C-c C-c C-d     Insert a node's section title
                    in the space for the description
                    in a menu entry line.

Show Structure
--------------

The 'texinfo-show-structure' command is often used within a narrowed
region.

     C-c C-s         List all the headings.

The Master Update Command
-------------------------

The 'texinfo-master-menu' command creates a master menu; and can be used
to update every node and menu in a file as well.

     C-c C-u m
     M-x texinfo-master-menu
                    Create or update a master menu.

     C-u C-c C-u m   With 'C-u' as a prefix argument, first
                    create or update all nodes and regular
                    menus, and then create a master menu.

Update Pointers
---------------

The update pointer commands are invoked by typing 'C-c C-u' and then
either 'C-n' for 'texinfo-update-node' or 'C-e' for
'texinfo-every-node-update'.

     C-c C-u C-n     Update a node.
     C-c C-u C-e     Update every node in the buffer.

Update Menus
------------

Invoke the update menu commands by typing 'C-c C-u' and then either
'C-m' for 'texinfo-make-menu' or 'C-a' for 'texinfo-all-menus-update'.
To update both nodes and menus at the same time, precede 'C-c C-u C-a'
with 'C-u'.

     C-c C-u C-m     Make or update a menu.

     C-c C-u C-a     Make or update all
                    menus in a buffer.

     C-u C-c C-u C-a With 'C-u' as a prefix argument,
                    first create or update all nodes and
                    then create or update all menus.

Format for Info
---------------

The Info formatting commands that are written in Emacs Lisp are invoked
by typing 'C-c C-e' and then either 'C-r' for a region or 'C-b' for the
whole buffer.

   The Info formatting commands that are written in C and based on the
'makeinfo' program are invoked by typing 'C-c C-m' and then either 'C-r'
for a region or 'C-b' for the whole buffer.

Use the 'texinfo-format...' commands:

     C-c C-e C-r     Format the region.
     C-c C-e C-b     Format the buffer.

Use 'makeinfo':

     C-c C-m C-r     Format the region.
     C-c C-m C-b     Format the buffer.
     C-c C-m C-l     Recenter the 'makeinfo' output buffer.
     C-c C-m C-k     Kill the 'makeinfo' formatting job.

Typeset and Print
-----------------

The TeX typesetting and printing commands are invoked by typing 'C-c
C-t' and then another control command: 'C-r' for 'texinfo-tex-region',
'C-b' for 'texinfo-tex-buffer', and so on.

     C-c C-t C-r     Run TeX on the region.
     C-c C-t C-b     Run texi2dvi on the buffer.
     C-c C-t C-i     Run texindex.
     C-c C-t C-p     Print the DVI file.
     C-c C-t C-q     Show the print queue.
     C-c C-t C-d     Delete a job from the print queue.
     C-c C-t C-k     Kill the current TeX formatting job.
     C-c C-t C-x     Quit a currently stopped TeX formatting job.
     C-c C-t C-l     Recenter the output buffer.

Other Updating Commands
-----------------------

The remaining updating commands do not have standard keybindings because
they are rarely used.

     M-x texinfo-insert-node-lines
                    Insert missing '@node' lines in region.
                    With 'C-u' as a prefix argument,
                    use section titles as node names.

     M-x texinfo-multiple-files-update
                    Update a multi-file document.
                    With 'C-u 2' as a prefix argument,
                    create or update all nodes and menus
                    in all included files first.

     M-x texinfo-indent-menu-description
                    Indent descriptions.

     M-x texinfo-sequential-node-update
                    Insert node pointers in strict sequence.

D.9 Catching Mistakes
=====================

Besides mistakes in the content of your documentation, there are two
kinds of mistake you can make with Texinfo: you can make mistakes with
@-commands, and you can make mistakes with the structure of the nodes
and chapters.

   Emacs has two tools for catching the @-command mistakes and two for
catching structuring mistakes.

   For finding problems with @-commands, you can run TeX or a region
formatting command on the region that has a problem; indeed, you can run
these commands on each region as you write it.

   For finding problems with the structure of nodes and chapters, you
can use 'C-c C-s' ('texinfo-show-structure') and the related 'occur'
command and you can use the 'M-x Info-validate' command.

D.9.1 'makeinfo' Preferred
--------------------------

The 'makeinfo' program does an excellent job of catching errors and
reporting them--far better than 'texinfo-format-region' or
'texinfo-format-buffer'.  In addition, the various functions for
automatically creating and updating node pointers and menus remove many
opportunities for human error.

   If you can, use the updating commands to create and insert pointers
and menus.  These prevent many errors.  Then use 'makeinfo' (or its
Texinfo mode manifestations, 'makeinfo-region' and 'makeinfo-buffer') to
format your file and check for other errors.  This is the best way to
work with Texinfo.  But if you cannot use 'makeinfo', or your problem is
very puzzling, then you may want to use the tools described in this
section.

D.9.2 Catching Errors with Info Formatting
------------------------------------------

After you have written part of a Texinfo file, you can use the
'texinfo-format-region' or the 'makeinfo-region' command to see whether
the region formats properly.

   Most likely, however, you are reading this section because for some
reason you cannot use the 'makeinfo-region' command; therefore, the rest
of this section presumes that you are using 'texinfo-format-region'.

   If you have made a mistake with an @-command, 'texinfo-format-region'
will stop processing at or after the error and display an error message.
To see where in the buffer the error occurred, switch to the '*Info
Region*' buffer; the cursor will be in a position that is after the
location of the error.  Also, the text will not be formatted after the
place where the error occurred (or more precisely, where it was
detected).

   For example, if you accidentally end a menu with the command '@end
menus' with an 's' on the end, instead of with '@end menu', you will see
an error message that says:

     @end menus is not handled by texinfo

The cursor will stop at the point in the buffer where the error occurs,
or not long after it.  The buffer will look like this:

     ---------- Buffer: *Info Region* ----------
     * Menu:

     * Using texinfo-show-structure::  How to use
                                      `texinfo-show-structure'
                                      to catch mistakes.
     * Running Info-validate::         How to check for
                                      unreferenced nodes.
     @end menus
     -!-
     ---------- Buffer: *Info Region* ----------

   The 'texinfo-format-region' command sometimes provides slightly odd
error messages.  For example, the following cross-reference fails to
format:

     (@xref{Catching Mistakes, for more info.)

In this case, 'texinfo-format-region' detects the missing closing brace
but displays a message that says 'Unbalanced parentheses' rather than
'Unbalanced braces'.  This is because the formatting command looks for
mismatches between braces as if they were parentheses.

   Sometimes 'texinfo-format-region' fails to detect mistakes.  For
example, in the following, the closing brace is swapped with the closing
parenthesis:

     (@xref{Catching Mistakes), for more info.}

Formatting produces:
     (see for more info.,
     for more info.)

   Incidentally, if you are reading this node in Info and type 'f <RET>'
('Info-follow-reference'), you will generate an error message that says:

     No such node: "Catching Mistakes) The only way ...

This is because Info perceives the example of the error as the first
cross-reference in this node and if you type a <RET> immediately after
typing the Info 'f' command, Info will attempt to go to the referenced
node.  If you type 'f catch <TAB> <RET>', Info will complete the node
name of the correctly written example and take you to the 'Catching
Mistakes' node.  (If you try this, you can return from the 'Catching
Mistakes' node by typing 'l' ('Info-last').)

D.9.3 Debugging with TeX
------------------------

You can also catch mistakes when you format a file with TeX.

   Usually, you will want to do this after you have run
'texinfo-format-buffer' (or, better, 'makeinfo-buffer') on the same
file, because 'texinfo-format-buffer' sometimes displays error messages
that make more sense than TeX.  (see Debugging with Info, for more
information.)

   For example, TeX was run on a Texinfo file, part of which is shown
here:

     ---------- Buffer: texinfo.texi ----------
     name of the Texinfo file as an extension.  The
     @samp{??} are `wildcards' that cause the shell to
     substitute all the raw index files.  (@xref{sorting
     indices, for more information about sorting
     indices.)@refill
     ---------- Buffer: texinfo.texi ----------

(The cross-reference lacks a closing brace.)  TeX produced the following
output, after which it stopped:

     ---------- Buffer: *tex-shell* ----------
     Runaway argument?
     {sorting indices, for more information about sorting
     indices.) @refill @ETC.
     ! Paragraph ended before @xref was complete.
     <to be read again>
                       @par
     l.27

     ?
     ---------- Buffer: *tex-shell* ----------

   In this case, TeX produced an accurate and understandable error
message:

     Paragraph ended before @xref was complete.

'@par' is an internal TeX command of no relevance to Texinfo.  'l.27'
means that TeX detected the problem on line 27 of the Texinfo file.  The
'?' is the prompt TeX uses in this circumstance.

   Unfortunately, TeX is not always so helpful, and sometimes you must
truly be a Sherlock Holmes to discover what went wrong.

   In any case, if you run into a problem like this, you can do one of
three things.

  1. You can tell TeX to continue running and ignore just this error by
     typing <RET> at the '?' prompt.

  2. You can tell TeX to continue running and to ignore all errors as
     best it can by typing 'r <RET>' at the '?' prompt.

     This is often the best thing to do.  However, beware: the one error
     may produce a cascade of additional error messages as its
     consequences are felt through the rest of the file.  To stop TeX
     when it is producing such an avalanche of error messages, type
     'C-c' (or 'C-c C-c', if you are running a shell inside Emacs).

  3. You can tell TeX to stop this run by typing 'x <RET>' at the '?'
     prompt.

   If you are running TeX inside Emacs, you need to switch to the shell
buffer and line at which TeX offers the '?' prompt.

   Sometimes TeX will format a file without producing error messages
even though there is a problem.  This usually occurs if a command is not
ended but TeX is able to continue processing anyhow.  For example, if
you fail to end an itemized list with the '@end itemize' command, TeX
will write a DVI file that you can print out.  The only error message
that TeX will give you is the somewhat mysterious comment:

     (@end occurred inside a group at level 1)

However, if you print the DVI file, you will find that the text of the
file that follows the itemized list is entirely indented as if it were
part of the last item in the itemized list.  The error message is the
way TeX says that it expected to find an '@end' command somewhere in the
file; but that it could not determine where it was needed.

   Another source of notoriously hard-to-find errors is a missing '@end
group' command.  If you ever are stumped by incomprehensible errors,
look for a missing '@end group' command first.

   If the Texinfo file lacks header lines, TeX may stop in the beginning
of its run and display output that looks like the following.  The '*'
indicates that TeX is waiting for input.

     This is TeX, Version 3.14159 (Web2c 7.0)
     (test.texinfo [1])
     *

In this case, simply type '\end <RET>' after the asterisk.  Then write
the header lines in the Texinfo file and run the TeX command again.
(Note the use of the backslash, '\'.  TeX uses '\' instead of '@'; and
in this circumstance, you are working directly with TeX, not with
Texinfo.)

D.9.4 Using 'texinfo-show-structure'
------------------------------------

It is not always easy to keep track of the nodes, chapters, sections,
and subsections of a Texinfo file.  This is especially true if you are
revising or adding to a Texinfo file that someone else has written.

   In GNU Emacs, in Texinfo mode, the 'texinfo-show-structure' command
lists all the lines that begin with the @-commands that specify the
structure: '@chapter', '@section', '@appendix', and so on.  With an
argument ('C-u' as prefix argument, if interactive), the command also
shows the '@node' lines.  The 'texinfo-show-structure' command is bound
to 'C-c C-s' in Texinfo mode, by default.

   The lines are displayed in a buffer called the '*Occur*' buffer,
indented by hierarchical level.  For example, here is a part of what was
produced by running 'texinfo-show-structure' on this manual:

     Lines matching "^@\\(chapter \\|sect\\|subs\\|subh\\|
     unnum\\|major\\|chapheading \\|heading \\|appendix\\)"
     in buffer texinfo.texi.
     ...
     4177:@chapter Nodes
     4198:    @heading Two Paths
     4231:    @section Node and Menu Illustration
     4337:    @section The @code{@@node} Command
     4393:        @subheading Choosing Node and Pointer Names
     4417:        @subsection How to Write a @code{@@node} Line
     4469:        @subsection @code{@@node} Line Tips
     ...

   This says that lines 4337, 4393, and 4417 of 'texinfo.texi' begin
with the '@section', '@subheading', and '@subsection' commands
respectively.  If you move your cursor into the '*Occur*' window, you
can position the cursor over one of the lines and use the 'C-c C-c'
command ('occur-mode-goto-occurrence'), to jump to the corresponding
spot in the Texinfo file.  See Using Occur (emacs),
for more information about 'occur-mode-goto-occurrence'.

   The first line in the '*Occur*' window describes the "regular
expression" specified by TEXINFO-HEADING-PATTERN.  This regular
expression is the pattern that 'texinfo-show-structure' looks for.
See Using Regular Expressions (emacs), for more information.

   When you invoke the 'texinfo-show-structure' command, Emacs will
display the structure of the whole buffer.  If you want to see the
structure of just a part of the buffer, of one chapter, for example, use
the 'C-x n n' ('narrow-to-region') command to mark the region.  (see
Narrowing (emacs).)  This is how the example used above was generated.
(To see the whole buffer again, use 'C-x n w' ('widen').)

   If you call 'texinfo-show-structure' with a prefix argument by typing
'C-u C-c C-s', it will list lines beginning with '@node' as well as the
lines beginning with the @-sign commands for '@chapter', '@section', and
the like.

   You can remind yourself of the structure of a Texinfo file by looking
at the list in the '*Occur*' window; and if you have mis-named a node or
left out a section, you can correct the mistake.

D.9.5 Using 'occur'
-------------------

Sometimes the 'texinfo-show-structure' command produces too much
information.  Perhaps you want to remind yourself of the overall
structure of a Texinfo file, and are overwhelmed by the detailed list
produced by 'texinfo-show-structure'.  In this case, you can use the
'occur' command directly.  To do this, type:

     M-x occur

and then, when prompted, type a "regexp", a regular expression for the
pattern you want to match.  (see Regular Expressions (emacs).)
The 'occur' command works from the current location of the cursor in the
buffer to the end of the buffer.  If you want to run 'occur' on the
whole buffer, place the cursor at the beginning of the buffer.

   For example, to see all the lines that contain the word '@chapter' in
them, just type '@chapter'.  This will produce a list of the chapters.
It will also list all the sentences with '@chapter' in the middle of the
line.

   If you want to see only those lines that start with the word
'@chapter', type '^@chapter' when prompted by 'occur'.  If you want to
see all the lines that end with a word or phrase, end the last word with
a '$'; for example, 'catching mistakes$'.  This can be helpful when you
want to see all the nodes that are part of the same chapter or section
and therefore have the same 'Up' pointer.

   See Using Occur (emacs), for more
information.

D.9.6 Finding Badly Referenced Nodes
------------------------------------

You can use the 'Info-validate' command to check whether any of the
'Next', 'Previous', 'Up' or other node pointers fail to point to a node.
This command checks that every node pointer points to an existing node.
The 'Info-validate' command works only on Info files, not on Texinfo
files.

   The 'makeinfo' program validates pointers automatically, so you do
not need to use the 'Info-validate' command if you are using 'makeinfo'.
You only may need to use 'Info-validate' if you are unable to run
'makeinfo' and instead must create an Info file using
'texinfo-format-region' or 'texinfo-format-buffer', or if you write an
Info file from scratch.

D.9.6.1 Using 'Info-validate'
.............................

To use 'Info-validate', visit the Info file you wish to check and type:

     M-x Info-validate

Note that the 'Info-validate' command requires an uppercase 'I'.  You
may also need to create a tag table before running 'Info-validate'.
See Tagifying.

   If your file is valid, you will receive a message that says "File
appears valid".  However, if you have a pointer that does not point to a
node, error messages will be displayed in a buffer called '*problems in
info file*'.

   For example, 'Info-validate' was run on a test file that contained
only the first node of this manual.  One of the messages said:

     In node "Overview", invalid Next: Texinfo Mode

This meant that the node called 'Overview' had a 'Next' pointer that did
not point to anything (which was true in this case, since the test file
had only one node in it).

   Now suppose we add a node named 'Texinfo Mode' to our test case but
we do not specify a 'Previous' for this node.  Then we will get the
following error message:

     In node "Texinfo Mode", should have Previous: Overview

This is because every 'Next' pointer should be matched by a 'Previous'
(in the node where the 'Next' points) which points back.

   'Info-validate' also checks that all menu entries and
cross-references point to actual nodes.

   'Info-validate' requires a tag table and does not work with files
that have been split.  (The 'texinfo-format-buffer' command
automatically splits large files.)  In order to use 'Info-validate' on a
large file, you must run 'texinfo-format-buffer' with an argument so
that it does not split the Info file; and you must create a tag table
for the unsplit file.

D.9.6.2 Creating an Unsplit File
................................

You can run 'Info-validate' only on a single Info file that has a tag
table.  The command will not work on the indirect subfiles that are
generated when a master file is split.  If you have a large file (longer
than 300,000 bytes or so), you need to run the 'texinfo-format-buffer'
or 'makeinfo-buffer' command in such a way that it does not create
indirect subfiles.  You will also need to create a tag table for the
Info file.  After you have done this, you can run 'Info-validate' and
look for badly referenced nodes.

   The first step is to create an unsplit Info file.  To prevent
'texinfo-format-buffer' from splitting a Texinfo file into smaller Info
files, give a prefix to the 'M-x texinfo-format-buffer' command:

     C-u M-x texinfo-format-buffer

or else

     C-u C-c C-e C-b

When you do this, Texinfo will not split the file and will not create a
tag table for it.

D.9.6.3 Tagifying a File
........................

After creating an unsplit Info file, you must create a tag table for it.
Visit the Info file you wish to tagify and type:

     M-x Info-tagify

(Note the uppercase 'I' in 'Info-tagify'.)  This creates an Info file
with a tag table that you can validate.

   The third step is to validate the Info file:

     M-x Info-validate

(Note the uppercase 'I' in 'Info-validate'.)  In brief, the steps are:

     C-u M-x texinfo-format-buffer
     M-x Info-tagify
     M-x Info-validate

   After you have validated the node structure, you can rerun
'texinfo-format-buffer' in the normal way so it will construct a tag
table and split the file automatically, or you can make the tag table
and split the file manually.

D.9.6.4 Splitting a File Manually
.................................

You should split a large file or else let the 'texinfo-format-buffer' or
'makeinfo-buffer' command do it for you automatically.  (Generally you
will let one of the formatting commands do this job for you.  See
Creating an Info File.)

   The split-off files are called the indirect subfiles.

   Info files are split to save memory.  With smaller files, Emacs does
not have to make such a large buffer to hold the information.

   If an Info file has more than 30 nodes, you should also make a tag
table for it.  See Using Info-validate, for information about
creating a tag table.  (Again, tag tables are usually created
automatically by the formatting command; you only need to create a tag
table yourself if you are doing the job manually.  Most likely, you will
do this for a large, unsplit file on which you have run
'Info-validate'.)

   Visit the Info file you wish to tagify and split and type the two
commands:

     M-x Info-tagify
     M-x Info-split

(Note that the 'I' in 'Info' is uppercase.)

   When you use the 'Info-split' command, the buffer is modified into a
(small) Info file which lists the indirect subfiles.  This file should
be saved in place of the original visited file.  The indirect subfiles
are written in the same directory the original file is in, with names
generated by appending '-' and a number to the original file name.

   The primary file still functions as an Info file, but it contains
just the tag table and a directory of subfiles.

Appendix E Global Document Commands
***********************************

Here are additional commands which affect the document as a whole.
Nearly all of these commands are for customizing the appearance of the
printed output when processing with TeX.  They are generally all given
before the Top node, if they are given at all.

E.1 '@setchapternewpage': Blank Pages Before Chapters
=====================================================

In an officially bound book, text is usually printed on both sides of
the paper, chapters start on right-hand pages, and right-hand pages have
odd numbers.  But in short reports, text often is printed only on one
side of the paper.  Also in short reports, chapters sometimes do not
start on new pages, but are printed on the same page as the end of the
preceding chapter, after a small amount of vertical whitespace.

   You can use the '@setchapternewpage' command with various arguments
to specify how TeX should start chapters and whether it should format
headers for printing on one or both sides of the paper (single-sided or
double-sided printing).

   Write the '@setchapternewpage' command at the beginning of a line
followed by its argument.  For example, you would write the following to
cause each chapter to start on a fresh odd-numbered page:

     @setchapternewpage odd

   You can specify one of three alternatives with the
'@setchapternewpage' command:

'@setchapternewpage off'
     Cause TeX to typeset a new chapter on the same page as the last
     chapter, after skipping some vertical whitespace.  Also, cause TeX
     to format page headers for single-sided printing.

'@setchapternewpage on'
     Cause TeX to start new chapters on new pages and to format page
     headers for single-sided printing.  This is the form most often
     used for short reports or personal printing.  This is the default.

'@setchapternewpage odd'
     Cause TeX to start new chapters on new, odd-numbered pages
     (right-handed pages) and to typeset for double-sided printing.
     This is the form most often used for books and manuals.

   Texinfo does not have a '@setchapternewpage even' command, because
there is no printing tradition of starting chapters or books on an
even-numbered page.

   If you don't like the default headers that '@setchapternewpage' sets,
you can explicit control them with the '@headings' command.  See
@headings.

   At the beginning of a manual or book, pages are not numbered--for
example, the title and copyright pages of a book are not numbered.  By
convention, table of contents and frontmatter pages are numbered with
roman numerals and not in sequence with the rest of the document.

   The '@setchapternewpage' has no effect in output formats that do not
have pages, such as Info and HTML.

   We recommend not including any '@setchapternewpage' command in your
document source at all, since such desired pagination is not intrinsic
to the document.  For a particular hard copy run, if you don't want the
default output (no blank pages, same headers on all pages) use the
'--texinfo' option to 'texi2dvi' to specify the output you want.

E.2 Page Headings
=================

Most printed manuals contain headings along the top of every page except
the title and copyright pages.  Some manuals also contain footings.
Headings and footings have no meaning in Info or the other output
formats.

   Texinfo provides two standard heading formats, one for manuals
printed on one side of each sheet of paper, and the other for manuals
printed on both sides of the paper.  By default, nothing is specified
for the footing of a Texinfo file, so the footing remains blank.

   Texinfo also has several heading and footing commands that you can
use to generate your own heading and footing formats.

   In Texinfo, headings and footings are single lines at the tops and
bottoms of pages; you cannot create multiline headings or footings.
Each header or footer line is divided into three parts: a left part, a
middle part, and a right part.  Any part, or a whole line, may be left
blank.  Text for the left part of a header or footer line is set
flushleft; text for the middle part is centered; and, text for the right
part is set flushright.

E.2.1 The '@headings' Command
-----------------------------

The '@headings' command is rarely used.  It specifies what kinds of page
headings and footings to print on each page.  Usually, this is
controlled by the '@setchapternewpage' command.  You need the
'@headings' command only if the '@setchapternewpage' command does not do
what you want, or if you want to turn off predefined page headings prior
to defining your own.  Write a '@headings' command immediately after the
'@end titlepage' command.

   You can use '@headings' as follows:

'@headings off'
     Turn off printing of page headings.

'@headings single'
     Turn on page headings appropriate for single-sided printing.

'@headings double'
     Turn on page headings appropriate for double-sided printing.

'@headings singleafter'
'@headings doubleafter'
     Turn on 'single' or 'double' headings, respectively, after the
     current page is output.

'@headings on'
     Turn on page headings: 'single' if '@setchapternewpage on',
     'double' otherwise.

   For example, suppose you write '@setchapternewpage off' before the
'@titlepage' command to tell TeX to start a new chapter on the same page
as the end of the last chapter.  This command also causes TeX to typeset
page headers for single-sided printing.  To cause TeX to typeset for
double-sided printing, write '@headings double' after the '@end
titlepage' command.

   You can stop TeX from generating any page headings at all by writing
'@headings off' on a line of its own immediately after the line
containing the '@end titlepage' command, like this:

     @end titlepage
     @headings off

The '@headings off' command overrides the '@end titlepage' command,
which would otherwise cause TeX to print page headings.

E.2.2 Standard Heading Formats
------------------------------

Texinfo provides two standard heading formats, one for manuals printed
on one side of each sheet of paper, and the other for manuals printed on
both sides of the paper.

   By default, nothing is specified for the footing of a Texinfo file,
so the footing remains blank.

   The standard format for single-sided printing consists of a header
line in which the left-hand part contains the name of the chapter, the
central part is blank, and the right-hand part contains the page number.

   A single-sided page looks like this:

       _______________________
      |                       |
      | chapter   page number |
      |                       |
      | Start of text ...     |
      | ...                   |
      |                       |

   The standard format for two-sided printing depends on whether the
page number is even or odd.  By convention, even-numbered pages are on
the left- and odd-numbered pages are on the right.  (TeX will adjust the
widths of the left- and right-hand margins.  Usually, widths are
correct, but during double-sided printing, it is wise to check that
pages will bind properly--sometimes a printer will produce output in
which the even-numbered pages have a larger right-hand margin than the
odd-numbered pages.)

   In the standard double-sided format, the left part of the left-hand
(even-numbered) page contains the page number, the central part is
blank, and the right part contains the title (specified by the
'@settitle' command).  The left part of the right-hand (odd-numbered)
page contains the name of the chapter, the central part is blank, and
the right part contains the page number.

   Two pages, side by side as in an open book, look like this:

       _______________________     _______________________
      |                       |   |                       |
      | page number     title |   | chapter   page number |
      |                       |   |                       |
      | Start of text ...     |   | More  text ...        |
      | ...                   |   | ...                   |
      |                       |   |                       |

The chapter name is preceded by the word "Chapter", the chapter number
and a colon.  This makes it easier to keep track of where you are in the
manual.

E.2.3 How to Make Your Own Headings
-----------------------------------

You can use the standard headings provided with Texinfo or specify your
own.  By default, Texinfo has no footers, so if you specify them, the
available page size for the main text will be slightly reduced.

   Texinfo provides six commands for specifying headings and footings:
   * '@everyheading' and '@everyfooting' generate page headers and
     footers that are the same for both even- and odd-numbered pages.
   * '@evenheading' and '@evenfooting' commands generate headers and
     footers for even-numbered (left-hand) pages.
   * '@oddheading' and '@oddfooting' generate headers and footers for
     odd-numbered (right-hand) pages.

   Write custom heading specifications in the Texinfo file immediately
after the '@end titlepage' command.  You must cancel the predefined
heading commands with the '@headings off' command before defining your
own specifications.

   Here is how to tell TeX to place the chapter name at the left, the
page number in the center, and the date at the right of every header for
both even- and odd-numbered pages:

     @headings off
     @everyheading @thischapter @| @thispage @| @today{}

You need to divide the left part from the central part and the central
part from the right part by inserting '@|' between parts.  Otherwise,
the specification command will not be able to tell where the text for
one part ends and the next part begins.

   Each part can contain text or @-commands.  The text is printed as if
the part were within an ordinary paragraph in the body of the page.  The
@-commands replace themselves with the page number, date, chapter name,
or whatever.

   Here are the six heading and footing commands:

'@everyheading LEFT @| CENTER @| RIGHT'
'@everyfooting LEFT @| CENTER @| RIGHT'
     The 'every' commands specify the format for both even- and
     odd-numbered pages.  These commands are for documents that are
     printed on one side of each sheet of paper, or for documents in
     which you want symmetrical headers or footers.

'@evenheading LEFT @| CENTER @| RIGHT'
'@oddheading LEFT @| CENTER @| RIGHT'
'@evenfooting LEFT @| CENTER @| RIGHT'
'@oddfooting LEFT @| CENTER @| RIGHT'
     The 'even' and 'odd' commands specify the format for even-numbered
     pages and odd-numbered pages.  These commands are for books and
     manuals that are printed on both sides of each sheet of paper.

   Use the '@this...' series of @-commands to provide the names of
chapters and sections and the page number.  You can use the '@this...'
commands in the left, center, or right portions of headers and footers,
or anywhere else in a Texinfo file so long as they are between '@iftex'
and '@end iftex' commands.

   Here are the '@this...' commands:

'@thispage'
     Expands to the current page number.

'@thissectionname'
     Expands to the name of the current section.

'@thissectionnum'
     Expands to the number of the current section.

'@thissection'
     Expands to the number and name of the current section, in the
     format 'Section 1: Title'.

'@thischaptername'
     Expands to the name of the current chapter.

'@thischapternum'
     Expands to the number of the current chapter, or letter of the
     current appendix.

'@thischapter'
     Expands to the number and name of the current chapter, in the
     format 'Chapter 1: Title'.

'@thistitle'
     Expands to the name of the document, as specified by the
     '@settitle' command.

'@thisfile'
     For '@include' files only: expands to the name of the current
     '@include' file.  If the current Texinfo source file is not an
     '@include' file, this command has no effect.  This command does
     _not_ provide the name of the current Texinfo source file unless it
     is an '@include' file.  (see Include Files, for more
     information about '@include' files.)

You can also use the '@today{}' command, which expands to the current
date, in '1 Jan 1900' format.

   Other @-commands and text are printed in a header or footer just as
if they were in the body of a page.  It is useful to incorporate text,
particularly when you are writing drafts:

     @headings off
     @everyheading @emph{Draft!} @| @thispage @| @thischapter
     @everyfooting @| @| Version: 0.27: @today{}

   Beware of overlong titles: they may overlap another part of the
header or footer and blot it out.

   If you have very short chapters and/or sections, several of them can
appear on a single page.  You can specify which chapters and sections
you want '@thischapter', '@thissection' and other such macros to refer
to on such pages as follows:

'@everyheadingmarks REF'
'@everyfootingmarks REF'
     The REF argument can be either 'top' (the '@this...' commands will
     refer to the chapter/section at the top of a page) or 'bottom' (the
     commands will reflect the situation at the bottom of a page).
     These '@every...' commands specify what to do on both even- and
     odd-numbered pages.

'@evenheadingmarks REF'
'@oddheadingmarks REF'
'@evenfootingmarks REF'
'@oddfootingmarks REF'
     These '@even...' and '@odd...' commands specify what to do on only
     even- or odd-numbered pages, respectively.  The REF argument is the
     same as with the '@every...' commands.

   Write these commands immediately after the '@...contents' commands,
or after the '@end titlepage' command if you don't have a table of
contents or if it is printed at the end of your manual.

   By default the '@this...' commands reflect the situation at the
bottom of a page both in headings and in footings.

E.3 '@paragraphindent': Controlling Paragraph Indentation
=========================================================

The Texinfo processors may insert whitespace at the beginning of the
first line of each paragraph, thereby indenting that paragraph.  You can
use the '@paragraphindent' command to specify this indentation.  Write a
'@paragraphindent' command at the beginning of a line followed by either
'asis' or a number:

     @paragraphindent INDENT

   The indentation is according to the value of INDENT:

'asis'
     Do not change the existing indentation (not implemented in TeX).

'none'
0
     Omit all indentation.

N
     Indent by N space characters in Info output, by N ems in TeX.

   The default value of INDENT is 3.  '@paragraphindent' is ignored for
HTML output.

   It is best to write the '@paragraphindent' command before the
end-of-header line at the beginning of a Texinfo file, so the region
formatting commands indent paragraphs as specified.  See Start of Header.

E.4 '@firstparagraphindent': Indenting After Headings
=====================================================

As you can see in the present manual, the first paragraph in any section
is not indented by default.  Typographically, indentation is a paragraph
separator, which means that it is unnecessary when a new section begins.
This indentation is controlled with the '@firstparagraphindent' command:

     @firstparagraphindent WORD

   The first paragraph after a heading is indented according to the
value of WORD:

'none'
     Prevents the first paragraph from being indented (default).  This
     option is ignored by 'makeinfo' if '@paragraphindent asis' is in
     effect.

'insert'
     Include normal paragraph indentation.  This respects the paragraph
     indentation set by a '@paragraphindent' command (see
     @paragraphindent).

   '@firstparagraphindent' is ignored for HTML and DocBook output.

   It is best to write the '@firstparagraphindent' command before the
end-of-header line at the beginning of a Texinfo file, so the region
formatting commands indent paragraphs as specified.  See Start of Header.

E.5 '@exampleindent': Environment Indenting
===========================================

The Texinfo processors indent each line of '@example' and similar
environments.  You can use the '@exampleindent' command to specify this
indentation.  Write an '@exampleindent' command at the beginning of a
line followed by either 'asis' or a number:

     @exampleindent INDENT

   The indentation is according to the value of INDENT:

'asis'
     Do not change the existing indentation (not implemented in TeX).

0
     Omit all indentation.

N
     Indent environments by N space characters in Info output, by N ems
     in TeX.

   The default value of INDENT is 5 spaces in Info, and 0.4in in TeX,
which is somewhat less.  (The reduction is to help TeX fit more
characters onto physical lines.)

   It is best to write the '@exampleindent' command before the
end-of-header line at the beginning of a Texinfo file, so the region
formatting commands indent paragraphs as specified.  See Start of Header.

E.6 '@smallbook': Printing "Small" Books
========================================

By default, TeX typesets pages for printing in an 8.5 by 11 inch format.
However, you can direct TeX to typeset a document in a 7 by 9.25 inch
format that is suitable for bound books by inserting the following
command on a line by itself at the beginning of the Texinfo file, before
the title page:

     @smallbook

(Since many books are about 7 by 9.25 inches, this command might better
have been called the '@regularbooksize' command, but it came to be
called the '@smallbook' command by comparison to the 8.5 by 11 inch
format.)

   If you write the '@smallbook' command between the start-of-header and
end-of-header lines, the Texinfo mode TeX region formatting command,
'texinfo-tex-region', will format the region in "small" book size (see
Start of Header).

   See Format with texi2dvi, and Preparing for TeX, for
other ways to format with '@smallbook' that do not require changing the
source file.

E.7 Printing on A4 Paper
========================

You can tell TeX to format a document for printing on ISO 216 A4 paper
size with the '@afourpaper' command.  Write the command on a line by
itself near the beginning of the Texinfo file, before the title page.

   You may or may not prefer the formatting that results from the
command '@afourlatex'.  There's also '@afourwide' for A4 paper in wide
format, '@afivepaper' for A5 paper, and '@bsixpaper' for B6 paper.

   See Format with texi2dvi and Preparing for TeX, for other
ways to format for different paper sizes that do not require changing
the source file.

E.8 '@pagesizes' [WIDTH][, HEIGHT]: Custom Page Sizes
=====================================================

You can explicitly specify the height and (optionally) width of the main
text area on the page with the '@pagesizes' command.  Write this on a
line by itself near the beginning of the Texinfo file, before the title
page.  The height comes first, then the width if desired, separated by a
comma.  Examples:

     @pagesizes 200mm,150mm
and
     @pagesizes 11.5in

   This would be reasonable for printing on B5-size paper.  To
emphasize, this command specifies the size of the _text area_, not the
size of the paper (which is 250mm by 177mm for B5, 14in by 8.5in for
legal).

   To make more elaborate changes, such as changing any of the page
margins, you must define a new command in 'texinfo.tex' or
'texinfo.cnf'.

   See Format with texi2dvi, and Preparing for TeX, for
other ways to specify '@pagesizes' that do not require changing the
source file.

E.9 Magnification
=================

You can attempt to direct TeX to typeset pages larger or smaller than
usual with the '\mag' TeX command.  Everything that is typeset is scaled
proportionally larger or smaller.  ('\mag' stands for "magnification".)
This is _not_ a Texinfo @-command, but is a raw TeX command that is
prefixed with a backslash.  You have to write this command between
'@tex' and '@end tex' (see Raw Formatter Commands).

   Follow the '\mag' command with an '=' and then a number that is 1000
times the magnification you desire.  For example, to print pages at 1.2
normal size, write the following near the beginning of the Texinfo file,
before the title page:

     @tex
     \global\mag=1200
     @end tex

   With some printing technologies, you can print normal-sized copies
that look better than usual by giving a larger-than-normal master to
your print shop.  They do the reduction, thus effectively increasing the
resolution.

   Depending on your system, DVI files prepared with a
nonstandard-'\mag' may not print or may print only with certain
magnifications.  Be prepared to experiment.

Appendix F Info Format Specification
************************************

Here we describe the technical details of the Info format.

   In this formal description, the characters '<>*()|=#' are used for
the language of the description itself.  Other characters are literal.
The formal constructs used are typical: '<...>' indicates a metavariable
name, '=' means definition, '*' repetition, '?' optional, '()' grouping,
'|' alternation, '#' comment.  Exception: '*' at the beginning of a line
is literal.

   In general, programs that read Info files should try to be
case-insensitive to keywords that occur in the file (for example, 'Tag
Table' and 'Tag table' should be equivalent) in order to support
Info-generating programs that use different capitalization.

   The sections in an Info file (such as nodes or tag tables) are
separated with a sequence:

     (^L)?^_(^L)?^J

That is, a 'CTRL-_' character followed by a newline, with optional
formfeed characters.  We refer to such sequences as <separator>.

   We specify literal parentheses (those that are part of the Info
format) with <lparen> and <rparen>, meaning the single characters '('
and ')' respectively.  We specify the 'CTRL-?' character (character
number 127) <del>.  Finally, the two-character sequence '^X' means the
single character 'CTRL-X', for any X.

   This format definition was written some 25 years after the Info
format was first devised.  So in the event of conflicts between this
definition and actual practice, practice wins.  It also assumes some
general knowledge of Texinfo; it is meant to be a guide for implementors
rather than a rigid technical standard.  We often refer back to other
parts of this manual for examples and definitions, rather than
redundantly spelling out every detail.

F.1 Info Format General Layout
==============================

This section describes the overall layout of Info manuals.

F.1.1 Info Format: A Whole Manual
---------------------------------

To begin, an Info manual is either "nonsplit" (contained wholly within a
single file) or "split" (across several files).

   The syntax for a nonsplit manual is:

         <nonsplit info file> =
     <preamble>
     <node>*
     <tag table>?
     <local variables>?

   When split, there is a "main file", which contains only pointers to
the nodes given in other "subfiles".  The main file looks like this:

         <split info main file> =
     <preamble>
     <indirect table>
     <tag table>
     <local variables>?

   The subfiles in a split manual have the following syntax:

         <split info subfile> =
     <preamble>
     <node>*

   Note that the tag table is not optional for split files, as it is
used with the indirect table to deduce which subfile a particular node
is in.

F.1.2 Info Format: Preamble
---------------------------

The <preamble> is text at the beginning of all output files.  It is not
intended to be visible by default in an Info viewer, but may be
displayed upon user request.

         <preamble> =
     <identification>       # "This is FILENAME, produced by ..."
     <copying text>         # Expansion of @copying text.
     <dir entries>          # Derived from @dircategory and @direntry.

These pieces are:

<identification line>
     An arbitrary string beginning the output file, followed by a blank
     line.

<copying text>
     The expansion of a '@copying' environment, if the manual has one
     (see @copying).

<dir entries>
     The result of any '@dircategory' and '@direntry' commands present
     in the manual (see Installing Dir Entries).

F.1.3 Info Format: Indirect Table
---------------------------------

         <indirect table> =
     <separator>
     Indirect:
     (<filename>: <bytepos>)*

   The indirect table is written to the main file in the case of split
output only.  It specifies, as a decimal integer, the starting byte
position (zero-based) that the first node of each subfile would have if
the subfiles were concatenated together in order, not including the
top-level file.  The first node of actual content is pointed to by the
first entry.

   As an example, suppose split output is generated for the GDB manual.
The top-level file 'gdb.info' will contain something like this:

     <separator>
     Indirect:
     gdb.info-1: 1878
     gdb.info-2: 295733
     ...

   This tells Info viewers that the first node of the manual occurs at
byte 1878 of the file 'gdb.info-1' (which would be after that file's
preamble.)  The first node in the 'gdb.info-2' subfile would start at
byte 295733 if 'gdb.info-2' were appended to 'gdb.info-1', including any
preamble sections in both files.

   Unfortunately, Info-creating programs such as 'makeinfo' have not
always implemented these rules perfectly, due to various bugs and
oversights.  Therefore, robust Info viewers should fall back to
searching "nearby" the given position for a node, instead of giving up
immediately if the position is not exactly at a node beginning.

F.1.4 Info Format: Tag Table
----------------------------

         <tag table> =
     <separator>
     Tag Table:
     (<lparen>Indirect<rparen>)?
     (Node|Ref): <nodeid>^?<bytepos>
     <separator>
     End Tag Table

   The '(Indirect)' line appears in the case of split output only.

   The tag table specifies the starting byte position of each node and
anchor in the file.  In the case of split output, it is only written in
the main output file.

   Each line defines an identifier as either an anchor or a node, as
specified.  For example, 'Node: Top^?1647' says that the node named
'Top' starts at byte 1647 while 'Ref: Overview-Footnote-1^?30045' says
that the anchor named 'Overview-Footnote-1' starts at byte 30045.  It is
an error to define the same identifier both ways.

   In the case of nonsplit output, the byte positions simply refer to
the location in the output file.  In the case of split output, the byte
positions refer to an imaginary file created by concatenating all the
split files (but not the top-level file).  See the previous section.

   Here is an example:

     ^_
     Tag Table:
     Node: Top^?89
     Node: Ch1^?292
     ^_
     End Tag Table

This specifies a manual with two nodes, 'Top' and 'Ch1', at byte
positions 89 and 292 respectively.  Because the '(Indirect)' line is not
present, the manual is not split.

   Preamble sections or other non-node sections of files do not have a
tag table entry.

F.1.5 Info Format: Local Variables
----------------------------------

The local variables section is optional and is currently used to give
the encoding information.  It may be augmented in the future.

         <local variables> =
     <separator>
     Local Variables:
     coding: <encoding>
     End:

   @documentencoding.

F.1.6 Info Format: Regular Nodes
--------------------------------

Regular nodes look like this:

         <node> =
     <separator>
     File: <fn>, Node: <id1>, (Next: <id2>, )? (Prev: <id3>, )? Up: <id4>

     <general text, until the next ^_ or end-of-file>

At least one space or tab must be present after each colon and comma,
but any number of spaces are ignored.  The <id> node identifiers have
following format:

        <id> = (<lparen><infofile><rparen>)?(<del>?<nodename><del>?)?
     |  <id> = (<lparen><infofile><rparen>)?(<nodename>)?

   This <node> defines <id1> in file <fn>, which is typically either
'manualname' or 'manualname.info'.  No parenthesized <infofile>
component may appear within <id1>.

   Each of the identifiers after 'Next', 'Prev' and 'Up' refer to nodes
or anchors within a file.  These pointers normally refer within the same
file, but '(dir)' is often used to point to the top-level dir file.  If
an <infofile> component is used then the node name may be omitted, in
which case the node identifier refers to the 'Top' node within the
referenced file.

   The 'Next' and 'Prev' pointers are optional.  The 'Up' pointer is
technically also optional, although most likely this indicates a mistake
in the node structuring.  Conventionally, the nodes are arranged to form
a tree, but this is not a requirement of the format.

   Node names containing periods, commas, colons or parentheses
(including @-commands which produce any of these) can confuse Info
readers.  If it is necessary to refer to a node whose name contains any
of these, the <nodename> should be surrounded by a pair of <del>
characters.  There is support in 'makeinfo' for adding these characters
(see INFO_SPECIAL_CHARS_QUOTE); however, we don't recommend you make
use of this support until such time as Info-reading programs that
recognize this syntax are common.  See Node Line Requirements.

   The use of non-ASCII characters in the names of nodes is permitted,
but can cause problems in cross-references between nodes in Info files
with different character encodings, and also when node names from many
different files are listed (for example, with the '--apropos' option to
the standalone Info browser), so we recommend avoiding them whenever
feasible.  For example, prefer the use of the ASCII apostrophe character
(') to Unicode directional quotes.

   The <general text> of the node can include the special constructs
described next.

F.2 Info Format Text Constructs
===============================

These special Info constructs can appear within the text of a node.

F.2.1 Info Format: Menu
-----------------------

Conventionally menus appear at the end of nodes, but the Info format
places no restrictions on their location.

         <menu> =
     * Menu:
     (<menu entry> | <menu comment>)*

   The parts of a <menu entry> are also described in Menu Parts.
They have the same syntax as cross-references (see Info Format Cross Reference).
Indices extend the menu format to specify the destination
line; see Info Format Printindex.

   A <menu comment> is any line not beginning with '*' that appears
either at the beginning of the menu or is separated from a menu entry by
one or more blank lines.  These comments are intended to be displayed as
part of the menu, as-is (see Writing a Menu).

F.2.2 Info Format: Image
------------------------

The '@image' command results in the following special directive within
the Info file (see Images):

         <image> =
     ^@^H[image src="<image file>"
                 (text="<txt file contents>")?
                 (alt="<alt text>")?
     ^@^H]

   The line breaks and indentation in this description are editorial;
the whitespace between the different parts of the directive in Info
files is arbitrary.

   In the strings <image file>, <txt file contents> and <alt text>, '"'
is quoted as '\"' and '\' is quoted as '\\'.  The txt and alt
specifications are optional.

   The alt value serves the same purpose as in HTML: A prose description
of the image.  In text-only displays or speech systems, for example, the
alt value may be used instead of displaying the (typically graphical)
<image file>.

   The <txt file contents>, if present, should be taken as an ASCII
representation of the image, for possible use on a text-only display.

   The format does not prescribe the choice between displaying the
<image file>, the <alt text> or the <txt file contents>.

F.2.3 Info Format: Printindex
-----------------------------

Indices in Info format are generally written as a menu (see
Indices), but with an additional directive at the beginning marking
this as an index node:

         <printindex> =
     ^@^H[index^@^H]
     * Menu:

     <index entry>*

   The <index entry> items are similar to normal menu entries, but the
free-format description is replaced by the line number of where the
entries occurs in the text:

         <index entry> =
     * <entry text>: <entry node>. <lparen>line <lineno><rparen>

The <entry text> is the index term.  The <lineno> is an unsigned
integer, given relative to the start of the <entry node>.  There may be
arbitrary whitespace after the colon and period, as usual in menus, and
may be broken across lines.  Here is an example:

     ^@^H[index^@^H]
     * Menu:

     * thunder:           Weather Phenomena.             (line 5)

   This means that an index entry for 'thunder' appears at line 5 of the
node 'Weather Phenomena'.

F.2.4 Info Format: Cross-reference
----------------------------------

A general cross-reference in Info format has one of the following two
forms:

         <cross-reference> =
       * (N|n)ote <id>::
     | * (N|n)ote <label>:<id>(.|,)

          <id> = (<lparen><infofile><rparen>)?(<del>?<nodename><del>?)?
     |    <id> = (<lparen><infofile><rparen>)?(<nodename>)?
         <label> = <del>?<label text><del>?

   No space should occur between the '*' character and the following 'N'
or 'n'.  '*Note' should be used at the start of a sentence, otherwise
'*note' should be used.  (Some Info readers, such as the one in Emacs,
can display '*Note' and '*note' as 'See' and 'see' respectively.)  In
both cases, <label text> is descriptive text.

   In both forms the <id> refers to a node or anchor, in the same way as
a reference in the node information line does (see Info Format Regular Nodes).
The optional parenthesized '<infofile>' is the name of the
manual being referenced, and the <nodename> is the node or anchor within
that manual,

   The second form has a descriptive label.  A cross-reference in this
form should usually be terminated with a comma or period, to make it
feasible to find the end of the <id>.

   If <label> contains a colon character (:), it should be surrounded
with a pair of <del> characters.  Likewise, if <nodename> contains
problematic characters (such as commas or periods), it should be
surrounded by a pair of <del> characters; then a terminating comma or
period is not needed.

   As with node names, this quoting mechanism has as of the time of
writing limited support in Info-reading programs; hence we do not
recommend using it until this changes.

   The format does not prescribe how to find other manuals to resolve
such references.

   Here are some examples:

     GNU Free Documentation License
     See Tag table, for details.
     See Overview (make).
     See ^?.
     See alloca.h (gnulib).h^?.

   The first shows a reference to a node in the current manual using the
short form.

   The second also refers to a node in the current manual, namely 'Info
Format Tag Table'; the 'Tag table' before the ':' is only a label on
this particular reference, and the 'for details.' is text belonging to
the sentence, not part of the reference.

   The third example refers to the node 'Top' in another manual, namely
'make', with 'Overview' being the label for this cross-reference.

   The fourth example shows a colon character being quoted in a label,
and the fifth example shows a period being quoted in a node name.

   See Cross References.

Appendix G GNU Free Documentation License
*****************************************

                     Version 1.3, 3 November 2008

     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
     <https://fsf.org/>

     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.

  0. PREAMBLE

     The purpose of this License is to make a manual, textbook, or other
     functional and useful document "free" in the sense of freedom: to
     assure everyone the effective freedom to copy and redistribute it,
     with or without modifying it, either commercially or
     noncommercially.  Secondarily, this License preserves for the
     author and publisher a way to get credit for their work, while not
     being considered responsible for modifications made by others.

     This License is a kind of "copyleft", which means that derivative
     works of the document must themselves be free in the same sense.
     It complements the GNU General Public License, which is a copyleft
     license designed for free software.

     We have designed this License in order to use it for manuals for
     free software, because free software needs free documentation: a
     free program should come with manuals providing the same freedoms
     that the software does.  But this License is not limited to
     software manuals; it can be used for any textual work, regardless
     of subject matter or whether it is published as a printed book.  We
     recommend this License principally for works whose purpose is
     instruction or reference.

  1. APPLICABILITY AND DEFINITIONS

     This License applies to any manual or other work, in any medium,
     that contains a notice placed by the copyright holder saying it can
     be distributed under the terms of this License.  Such a notice
     grants a world-wide, royalty-free license, unlimited in duration,
     to use that work under the conditions stated herein.  The
     "Document", below, refers to any such manual or work.  Any member
     of the public is a licensee, and is addressed as "you".  You accept
     the license if you copy, modify or distribute the work in a way
     requiring permission under copyright law.

     A "Modified Version" of the Document means any work containing the
     Document or a portion of it, either copied verbatim, or with
     modifications and/or translated into another language.

     A "Secondary Section" is a named appendix or a front-matter section
     of the Document that deals exclusively with the relationship of the
     publishers or authors of the Document to the Document's overall
     subject (or to related matters) and contains nothing that could
     fall directly within that overall subject.  (Thus, if the Document
     is in part a textbook of mathematics, a Secondary Section may not
     explain any mathematics.)  The relationship could be a matter of
     historical connection with the subject or with related matters, or
     of legal, commercial, philosophical, ethical or political position
     regarding them.

     The "Invariant Sections" are certain Secondary Sections whose
     titles are designated, as being those of Invariant Sections, in the
     notice that says that the Document is released under this License.
     If a section does not fit the above definition of Secondary then it
     is not allowed to be designated as Invariant.  The Document may
     contain zero Invariant Sections.  If the Document does not identify
     any Invariant Sections then there are none.

     The "Cover Texts" are certain short passages of text that are
     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
     that says that the Document is released under this License.  A
     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
     be at most 25 words.

     A "Transparent" copy of the Document means a machine-readable copy,
     represented in a format whose specification is available to the
     general public, that is suitable for revising the document
     straightforwardly with generic text editors or (for images composed
     of pixels) generic paint programs or (for drawings) some widely
     available drawing editor, and that is suitable for input to text
     formatters or for automatic translation to a variety of formats
     suitable for input to text formatters.  A copy made in an otherwise
     Transparent file format whose markup, or absence of markup, has
     been arranged to thwart or discourage subsequent modification by
     readers is not Transparent.  An image format is not Transparent if
     used for any substantial amount of text.  A copy that is not
     "Transparent" is called "Opaque".

     Examples of suitable formats for Transparent copies include plain
     ASCII without markup, Texinfo input format, LaTeX input format,
     SGML or XML using a publicly available DTD, and standard-conforming
     simple HTML, PostScript or PDF designed for human modification.
     Examples of transparent image formats include PNG, XCF and JPG.
     Opaque formats include proprietary formats that can be read and
     edited only by proprietary word processors, SGML or XML for which
     the DTD and/or processing tools are not generally available, and
     the machine-generated HTML, PostScript or PDF produced by some word
     processors for output purposes only.

     The "Title Page" means, for a printed book, the title page itself,
     plus such following pages as are needed to hold, legibly, the
     material this License requires to appear in the title page.  For
     works in formats which do not have any title page as such, "Title
     Page" means the text near the most prominent appearance of the
     work's title, preceding the beginning of the body of the text.

     The "publisher" means any person or entity that distributes copies
     of the Document to the public.

     A section "Entitled XYZ" means a named subunit of the Document
     whose title either is precisely XYZ or contains XYZ in parentheses
     following text that translates XYZ in another language.  (Here XYZ
     stands for a specific section name mentioned below, such as
     "Acknowledgements", "Dedications", "Endorsements", or "History".)
     To "Preserve the Title" of such a section when you modify the
     Document means that it remains a section "Entitled XYZ" according
     to this definition.

     The Document may include Warranty Disclaimers next to the notice
     which states that this License applies to the Document.  These
     Warranty Disclaimers are considered to be included by reference in
     this License, but only as regards disclaiming warranties: any other
     implication that these Warranty Disclaimers may have is void and
     has no effect on the meaning of this License.

  2. VERBATIM COPYING

     You may copy and distribute the Document in any medium, either
     commercially or noncommercially, provided that this License, the
     copyright notices, and the license notice saying this License
     applies to the Document are reproduced in all copies, and that you
     add no other conditions whatsoever to those of this License.  You
     may not use technical measures to obstruct or control the reading
     or further copying of the copies you make or distribute.  However,
     you may accept compensation in exchange for copies.  If you
     distribute a large enough number of copies you must also follow the
     conditions in section 3.

     You may also lend copies, under the same conditions stated above,
     and you may publicly display copies.

  3. COPYING IN QUANTITY

     If you publish printed copies (or copies in media that commonly
     have printed covers) of the Document, numbering more than 100, and
     the Document's license notice requires Cover Texts, you must
     enclose the copies in covers that carry, clearly and legibly, all
     these Cover Texts: Front-Cover Texts on the front cover, and
     Back-Cover Texts on the back cover.  Both covers must also clearly
     and legibly identify you as the publisher of these copies.  The
     front cover must present the full title with all words of the title
     equally prominent and visible.  You may add other material on the
     covers in addition.  Copying with changes limited to the covers, as
     long as they preserve the title of the Document and satisfy these
     conditions, can be treated as verbatim copying in other respects.

     If the required texts for either cover are too voluminous to fit
     legibly, you should put the first ones listed (as many as fit
     reasonably) on the actual cover, and continue the rest onto
     adjacent pages.

     If you publish or distribute Opaque copies of the Document
     numbering more than 100, you must either include a machine-readable
     Transparent copy along with each Opaque copy, or state in or with
     each Opaque copy a computer-network location from which the general
     network-using public has access to download using public-standard
     network protocols a complete Transparent copy of the Document, free
     of added material.  If you use the latter option, you must take
     reasonably prudent steps, when you begin distribution of Opaque
     copies in quantity, to ensure that this Transparent copy will
     remain thus accessible at the stated location until at least one
     year after the last time you distribute an Opaque copy (directly or
     through your agents or retailers) of that edition to the public.

     It is requested, but not required, that you contact the authors of
     the Document well before redistributing any large number of copies,
     to give them a chance to provide you with an updated version of the
     Document.

  4. MODIFICATIONS

     You may copy and distribute a Modified Version of the Document
     under the conditions of sections 2 and 3 above, provided that you
     release the Modified Version under precisely this License, with the
     Modified Version filling the role of the Document, thus licensing
     distribution and modification of the Modified Version to whoever
     possesses a copy of it.  In addition, you must do these things in
     the Modified Version:

       A. Use in the Title Page (and on the covers, if any) a title
          distinct from that of the Document, and from those of previous
          versions (which should, if there were any, be listed in the
          History section of the Document).  You may use the same title
          as a previous version if the original publisher of that
          version gives permission.

       B. List on the Title Page, as authors, one or more persons or
          entities responsible for authorship of the modifications in
          the Modified Version, together with at least five of the
          principal authors of the Document (all of its principal
          authors, if it has fewer than five), unless they release you
          from this requirement.

       C. State on the Title page the name of the publisher of the
          Modified Version, as the publisher.

       D. Preserve all the copyright notices of the Document.

       E. Add an appropriate copyright notice for your modifications
          adjacent to the other copyright notices.

       F. Include, immediately after the copyright notices, a license
          notice giving the public permission to use the Modified
          Version under the terms of this License, in the form shown in
          the Addendum below.

       G. Preserve in that license notice the full lists of Invariant
          Sections and required Cover Texts given in the Document's
          license notice.

       H. Include an unaltered copy of this License.

       I. Preserve the section Entitled "History", Preserve its Title,
          and add to it an item stating at least the title, year, new
          authors, and publisher of the Modified Version as given on the
          Title Page.  If there is no section Entitled "History" in the
          Document, create one stating the title, year, authors, and
          publisher of the Document as given on its Title Page, then add
          an item describing the Modified Version as stated in the
          previous sentence.

       J. Preserve the network location, if any, given in the Document
          for public access to a Transparent copy of the Document, and
          likewise the network locations given in the Document for
          previous versions it was based on.  These may be placed in the
          "History" section.  You may omit a network location for a work
          that was published at least four years before the Document
          itself, or if the original publisher of the version it refers
          to gives permission.

       K. For any section Entitled "Acknowledgements" or "Dedications",
          Preserve the Title of the section, and preserve in the section
          all the substance and tone of each of the contributor
          acknowledgements and/or dedications given therein.

       L. Preserve all the Invariant Sections of the Document, unaltered
          in their text and in their titles.  Section numbers or the
          equivalent are not considered part of the section titles.

       M. Delete any section Entitled "Endorsements".  Such a section
          may not be included in the Modified Version.

       N. Do not retitle any existing section to be Entitled
          "Endorsements" or to conflict in title with any Invariant
          Section.

       O. Preserve any Warranty Disclaimers.

     If the Modified Version includes new front-matter sections or
     appendices that qualify as Secondary Sections and contain no
     material copied from the Document, you may at your option designate
     some or all of these sections as invariant.  To do this, add their
     titles to the list of Invariant Sections in the Modified Version's
     license notice.  These titles must be distinct from any other
     section titles.

     You may add a section Entitled "Endorsements", provided it contains
     nothing but endorsements of your Modified Version by various
     parties--for example, statements of peer review or that the text
     has been approved by an organization as the authoritative
     definition of a standard.

     You may add a passage of up to five words as a Front-Cover Text,
     and a passage of up to 25 words as a Back-Cover Text, to the end of
     the list of Cover Texts in the Modified Version.  Only one passage
     of Front-Cover Text and one of Back-Cover Text may be added by (or
     through arrangements made by) any one entity.  If the Document
     already includes a cover text for the same cover, previously added
     by you or by arrangement made by the same entity you are acting on
     behalf of, you may not add another; but you may replace the old
     one, on explicit permission from the previous publisher that added
     the old one.

     The author(s) and publisher(s) of the Document do not by this
     License give permission to use their names for publicity for or to
     assert or imply endorsement of any Modified Version.

  5. COMBINING DOCUMENTS

     You may combine the Document with other documents released under
     this License, under the terms defined in section 4 above for
     modified versions, provided that you include in the combination all
     of the Invariant Sections of all of the original documents,
     unmodified, and list them all as Invariant Sections of your
     combined work in its license notice, and that you preserve all
     their Warranty Disclaimers.

     The combined work need only contain one copy of this License, and
     multiple identical Invariant Sections may be replaced with a single
     copy.  If there are multiple Invariant Sections with the same name
     but different contents, make the title of each such section unique
     by adding at the end of it, in parentheses, the name of the
     original author or publisher of that section if known, or else a
     unique number.  Make the same adjustment to the section titles in
     the list of Invariant Sections in the license notice of the
     combined work.

     In the combination, you must combine any sections Entitled
     "History" in the various original documents, forming one section
     Entitled "History"; likewise combine any sections Entitled
     "Acknowledgements", and any sections Entitled "Dedications".  You
     must delete all sections Entitled "Endorsements."

  6. COLLECTIONS OF DOCUMENTS

     You may make a collection consisting of the Document and other
     documents released under this License, and replace the individual
     copies of this License in the various documents with a single copy
     that is included in the collection, provided that you follow the
     rules of this License for verbatim copying of each of the documents
     in all other respects.

     You may extract a single document from such a collection, and
     distribute it individually under this License, provided you insert
     a copy of this License into the extracted document, and follow this
     License in all other respects regarding verbatim copying of that
     document.

  7. AGGREGATION WITH INDEPENDENT WORKS

     A compilation of the Document or its derivatives with other
     separate and independent documents or works, in or on a volume of a
     storage or distribution medium, is called an "aggregate" if the
     copyright resulting from the compilation is not used to limit the
     legal rights of the compilation's users beyond what the individual
     works permit.  When the Document is included in an aggregate, this
     License does not apply to the other works in the aggregate which
     are not themselves derivative works of the Document.

     If the Cover Text requirement of section 3 is applicable to these
     copies of the Document, then if the Document is less than one half
     of the entire aggregate, the Document's Cover Texts may be placed
     on covers that bracket the Document within the aggregate, or the
     electronic equivalent of covers if the Document is in electronic
     form.  Otherwise they must appear on printed covers that bracket
     the whole aggregate.

  8. TRANSLATION

     Translation is considered a kind of modification, so you may
     distribute translations of the Document under the terms of section
     4.  Replacing Invariant Sections with translations requires special
     permission from their copyright holders, but you may include
     translations of some or all Invariant Sections in addition to the
     original versions of these Invariant Sections.  You may include a
     translation of this License, and all the license notices in the
     Document, and any Warranty Disclaimers, provided that you also
     include the original English version of this License and the
     original versions of those notices and disclaimers.  In case of a
     disagreement between the translation and the original version of
     this License or a notice or disclaimer, the original version will
     prevail.

     If a section in the Document is Entitled "Acknowledgements",
     "Dedications", or "History", the requirement (section 4) to
     Preserve its Title (section 1) will typically require changing the
     actual title.

  9. TERMINATION

     You may not copy, modify, sublicense, or distribute the Document
     except as expressly provided under this License.  Any attempt
     otherwise to copy, modify, sublicense, or distribute it is void,
     and will automatically terminate your rights under this License.

     However, if you cease all violation of this License, then your
     license from a particular copyright holder is reinstated (a)
     provisionally, unless and until the copyright holder explicitly and
     finally terminates your license, and (b) permanently, if the
     copyright holder fails to notify you of the violation by some
     reasonable means prior to 60 days after the cessation.

     Moreover, your license from a particular copyright holder is
     reinstated permanently if the copyright holder notifies you of the
     violation by some reasonable means, this is the first time you have
     received notice of violation of this License (for any work) from
     that copyright holder, and you cure the violation prior to 30 days
     after your receipt of the notice.

     Termination of your rights under this section does not terminate
     the licenses of parties who have received copies or rights from you
     under this License.  If your rights have been terminated and not
     permanently reinstated, receipt of a copy of some or all of the
     same material does not give you any rights to use it.

  10. FUTURE REVISIONS OF THIS LICENSE

     The Free Software Foundation may publish new, revised versions of
     the GNU Free Documentation License from time to time.  Such new
     versions will be similar in spirit to the present version, but may
     differ in detail to address new problems or concerns.  See
     <https://www.gnu.org/licenses/>.

     Each version of the License is given a distinguishing version
     number.  If the Document specifies that a particular numbered
     version of this License "or any later version" applies to it, you
     have the option of following the terms and conditions either of
     that specified version or of any later version that has been
     published (not as a draft) by the Free Software Foundation.  If the
     Document does not specify a version number of this License, you may
     choose any version ever published (not as a draft) by the Free
     Software Foundation.  If the Document specifies that a proxy can
     decide which future versions of this License can be used, that
     proxy's public statement of acceptance of a version permanently
     authorizes you to choose that version for the Document.

  11. RELICENSING

     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
     World Wide Web server that publishes copyrightable works and also
     provides prominent facilities for anybody to edit those works.  A
     public wiki that anybody can edit is an example of such a server.
     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
     site means any set of copyrightable works thus published on the MMC
     site.

     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
     license published by Creative Commons Corporation, a not-for-profit
     corporation with a principal place of business in San Francisco,
     California, as well as future copyleft versions of that license
     published by that same organization.

     "Incorporate" means to publish or republish a Document, in whole or
     in part, as part of another Document.

     An MMC is "eligible for relicensing" if it is licensed under this
     License, and if all works that were first published under this
     License somewhere other than this MMC, and subsequently
     incorporated in whole or in part into the MMC, (1) had no cover
     texts or invariant sections, and (2) were thus incorporated prior
     to November 1, 2008.

     The operator of an MMC Site may republish an MMC contained in the
     site under CC-BY-SA on the same site at any time before August 1,
     2009, provided the MMC is eligible for relicensing.

ADDENDUM: How to use this License for your documents
====================================================

To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:

       Copyright (C)  YEAR  YOUR NAME.
       Permission is granted to copy, distribute and/or modify this document
       under the terms of the GNU Free Documentation License, Version 1.3
       or any later version published by the Free Software Foundation;
       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
       Texts.  A copy of the license is included in the section entitled ``GNU
       Free Documentation License''.

   If you have Invariant Sections, Front-Cover Texts and Back-Cover
Texts, replace the "with...Texts." line with this:

         with the Invariant Sections being LIST THEIR TITLES, with
         the Front-Cover Texts being LIST, and with the Back-Cover Texts
         being LIST.

   If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.

   If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of free
software license, such as the GNU General Public License, to permit
their use in free software.

Command and Variable Index
**************************

This is an alphabetical list of all the @-commands, assorted Emacs Lisp
functions, and several variables.  To make the list easier to use, the
commands are listed without their preceding '@'.