20.2 Tag Files and Split Files

Info files always contain a tag table, to be able to jump to nodes quickly. Info files can be nonsplit (also called unsplit) or split.

If the Info file contains less than about 300,000 characters the file should be nonsplit. In that case, the tag table should appear at the end of the Info file. If the Texinfo file contains more than about 300,000 characters, Texinfo processors split the large Info file into shorter indirect subfiles of about 300,000 characters each. With texi2any, splitting may be prevented by --no-split, and the default size of 300,000 characters may be modified with --split-size (see Invoking texi2any from a Shell).

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 output file name, specified by the @setfilename command or the input file name. The shortened version of the original file continues to have the name specified by @setfilename or the input file name.

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

test-texinfo-1: 102
test-texinfo-2: 50422
test-texinfo-3: 101300
Tag table:
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 any permissions text in the first 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 texi2any 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 with texinfo-format-buffer and how to validate the structure of the nodes, see Using Info-validate.