GNU Info

Info Node: (texinfo)Tag and Split Files

(texinfo)Tag and Split Files


Next: makeinfo html Prev: Batch Formatting Up: Creating an Info File
Enter node , (file) or (file)node

Tag Files and Split Files
-------------------------

  If a Texinfo file has more than 30,000 bytes, `texinfo-format-buffer'
automatically creates a tag table for its Info file;  `makeinfo' always
creates a tag table.  With a "tag table", Info can jump to new nodes
more quickly than it can otherwise.

  In addition, if the Texinfo file contains more than about 70,000
bytes, `texinfo-format-buffer' and `makeinfo' split the large Info file
into shorter "indirect" subfiles of about 50,000 bytes each.  Big files
are split into smaller files so that Emacs does not need to make a
large buffer to hold the whole of a large Info file; instead, Emacs
allocates just enough memory for the small, split-off file that is
needed at the time.  This way, Emacs avoids wasting memory when you run
Info.  (Before splitting was implemented, Info files were always kept
short and "include files" were designed as a way to create a single,
large printed manual out of the smaller Info files.  Note: Include
Files, for more information.  Include files are still used for very
large documents, such as `The Emacs Lisp Reference Manual', in which
each chapter is a separate file.)

  When a file is split, Info itself makes use of a shortened version of
the original file that contains just the tag table and references to
the files that were split off.  The split-off files are called
"indirect" files.

  The split-off files have names that are created by appending `-1',
`-2', `-3' and so on to the file name specified by the `@setfilename'
command.  The shortened version of the original file continues to have
the name specified by `@setfilename'.

  At one stage in writing this document, for example, the Info file was
saved as the file `test-texinfo' and that file looked like this:

     Info file: test-texinfo,    -*-Text-*-
     produced by texinfo-format-buffer
     from file: new-texinfo-manual.texinfo
     
     ^_
     Indirect:
     test-texinfo-1: 102
     test-texinfo-2: 50422
     test-texinfo-3: 101300
     ^_^L
     Tag table:
     (Indirect)
     Node: overview^?104
     Node: info file^?1271
     Node: printed manual^?4853
     Node: conventions^?6855
     ...

(But `test-texinfo' had far more nodes than are shown here.)  Each of
the split-off, indirect files, `test-texinfo-1', `test-texinfo-2', and
`test-texinfo-3', is listed in this file after the line that says
`Indirect:'.  The tag table is listed after the line that says `Tag
table:'.

  In the list of indirect files, the number following the file name
records the cumulative number of bytes in the preceding indirect files,
not counting the file list itself, the tag table, or the permissions
text in each file.  In the tag table, the number following the node name
records the location of the beginning of the node, in bytes from the
beginning of the (unsplit) output.

  If you are using `texinfo-format-buffer' to create Info files, you
may want to run the `Info-validate' command.  (The `makeinfo' command
does such a good job on its own, you do not need `Info-validate'.)
However, you cannot run the `M-x Info-validate' node-checking command
on indirect files.  For information on how to prevent files from being
split and how to validate the structure of the nodes, see Note: Using
Info-validate.


automatically generated by info2www version 1.2.2.9