[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
texinfo ChangeLog NEWS TODO doc/texinfo.txi
From: |
Karl Berry |
Subject: |
texinfo ChangeLog NEWS TODO doc/texinfo.txi |
Date: |
Wed, 17 Mar 2010 18:35:57 +0000 |
CVSROOT: /sources/texinfo
Module name: texinfo
Changes by: Karl Berry <karl> 10/03/17 18:35:57
Modified files:
. : ChangeLog NEWS TODO
doc : texinfo.txi
Log message:
Info Format Specification: new appendix
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/ChangeLog?cvsroot=texinfo&r1=1.1032&r2=1.1033
http://cvs.savannah.gnu.org/viewcvs/texinfo/NEWS?cvsroot=texinfo&r1=1.192&r2=1.193
http://cvs.savannah.gnu.org/viewcvs/texinfo/TODO?cvsroot=texinfo&r1=1.49&r2=1.50
http://cvs.savannah.gnu.org/viewcvs/texinfo/doc/texinfo.txi?cvsroot=texinfo&r1=1.249&r2=1.250
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/texinfo/texinfo/ChangeLog,v
retrieving revision 1.1032
retrieving revision 1.1033
diff -u -b -r1.1032 -r1.1033
--- ChangeLog 17 Mar 2010 15:40:23 -0000 1.1032
+++ ChangeLog 17 Mar 2010 18:35:54 -0000 1.1033
@@ -1,5 +1,8 @@
2010-03-17 Karl Berry <address@hidden>
+ * doc/texinfo.txi (Info Format Specification): new appendix,
+ written by Patrice Dumas and me.
+
* doc/texinfo.txi (Include Files): move to near the end of the
main manual, instead of being an appendix. These days, include
files are an important feature. Remove @refill's.
Index: NEWS
===================================================================
RCS file: /sources/texinfo/texinfo/NEWS,v
retrieving revision 1.192
retrieving revision 1.193
diff -u -b -r1.192 -r1.193
--- NEWS 26 Oct 2009 21:52:23 -0000 1.192
+++ NEWS 17 Mar 2010 18:35:56 -0000 1.193
@@ -1,10 +1,10 @@
-$Id: NEWS,v 1.192 2009/10/26 21:52:23 karl Exp $
+$Id: NEWS,v 1.193 2010/03/17 18:35:56 karl Exp $
This NEWS file records noteworthy changes, very tersely.
See the manual for detailed information.
Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
- Foundation, Inc.
+ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
@@ -47,6 +47,9 @@
* install-info:
. xz compression supported.
+* Documentation:
+ . new appendix on the Info file format.
+
* Distribution:
. language support for no removed/renamed to nb, per Norwegian translators.
. new translation: id.
Index: TODO
===================================================================
RCS file: /sources/texinfo/texinfo/TODO,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -b -r1.49 -r1.50
--- TODO 13 Dec 2008 14:36:51 -0000 1.49
+++ TODO 17 Mar 2010 18:35:56 -0000 1.50
@@ -1,9 +1,10 @@
-$Id: TODO,v 1.49 2008/12/13 14:36:51 karl Exp $
+$Id: TODO,v 1.50 2010/03/17 18:35:56 karl Exp $
This is the todo list for GNU Texinfo.
If you are interested in working on any of these, email address@hidden
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2003,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation.
+ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010
+ Free Software Foundation.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
@@ -159,7 +160,6 @@
or tkinfo (http://www.math.ucsb.edu/~boldt/tkinfo/).
- Make "info foo bar" search for bar in foo's index(es) if no menu match.
- Handle M-n, C-u m, and C-u g like Emacs Info (opening new windows).
- - Write technical definition of Info format.
* install-info:
- be able to copy the info file to compile-time $infodir, to
Index: doc/texinfo.txi
===================================================================
RCS file: /sources/texinfo/texinfo/doc/texinfo.txi,v
retrieving revision 1.249
retrieving revision 1.250
diff -u -b -r1.249 -r1.250
--- doc/texinfo.txi 17 Mar 2010 15:40:23 -0000 1.249
+++ doc/texinfo.txi 17 Mar 2010 18:35:56 -0000 1.250
@@ -1,5 +1,5 @@
\input texinfo.tex @c -*-texinfo-*-
address@hidden $Id: texinfo.txi,v 1.249 2010/03/17 15:40:23 karl Exp $
address@hidden $Id: texinfo.txi,v 1.250 2010/03/17 18:35:56 karl Exp $
@c Ordinarily, Texinfo files have the extension .texi. But texinfo.texi
@c clashes with texinfo.tex on 8.3 filesystems, so we use texinfo.txi.
@@ -168,6 +168,7 @@
* Sample Texinfo Files:: Complete examples, including full texts.
* Headings:: How to write page headings and footings.
* Catching Mistakes:: How to find mistakes in formatting.
+* Info Format Specification:: Technical details of the Info file format.
* GNU Free Documentation License::Copying this manual.
* Command and Variable Index:: A menu containing commands and variables.
* General Index:: A menu covering many topics.
@@ -675,6 +676,27 @@
* Tagifying:: How to tagify a file.
* Splitting:: How to split a file manually.
+Info Format Specification
+
+* General: Info Format General Layout.
+* Text: Info Format Text Constructs.
+
+Info Format General Layout
+
+* Whole: Info Format Whole Manual. Split vs.@: nonsplit manuals.
+* Preamble: Info Format Preamble.
+* Indirect: Info Format Indirect Tag Table.
+* Tag table: Info Format Tag Table.
+* Local variables: Info Format Local Variables.
+* Regular nodes: Info Format Regular Nodes.
+
+Info Format Text Constructs
+
+* Menu: Info Format Menu.
+* Image: Info Format Image.
+* Printindex: Info Format Printindex.
+* Cross-reference: Info Format Cross-reference.
+
@end detailmenu
@end menu
@@ -19603,7 +19625,7 @@
(@url{http://www.gnu.org/software/rcs}) version control systems, which
expand it into a string such as:
@example
-$Id: texinfo.txi,v 1.249 2010/03/17 15:40:23 karl Exp $
+$Id: texinfo.txi,v 1.250 2010/03/17 18:35:56 karl Exp $
@end example
(This is useful in all sources that use version control, not just manuals.)
You may wish to include the @samp{$Id:} comment in the @code{@@copying}
@@ -19682,7 +19704,7 @@
@verbatim
\input texinfo @c -*-texinfo-*-
address@hidden $Id: texinfo.txi,v 1.249 2010/03/17 15:40:23 karl Exp $
address@hidden $Id: texinfo.txi,v 1.250 2010/03/17 18:35:56 karl Exp $
@comment %**start of header
@setfilename sample.info
@include version.texi
@@ -20874,6 +20896,447 @@
the tag table and a directory of address@hidden
address@hidden Info Format Specification
address@hidden Info Format Specification
+
address@hidden Info format specification
address@hidden Specification of Info format
address@hidden Definition of Info format
+
+Here we describe the technical details of the Info format.
+
+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.
+
+In this formal description, the characters @code{<>*()|=#} are used
+for the language of the description itself. Other characters are
+literal. The formal constructs used are typical: @code{<...>}
+indicates a metavariable name, @samp{=} means definition, @samp{*}
+repetition, @samp{?} optional, @samp{()} grouping, @samp{|}
+alternation, @samp{#} comment. Exception: @samp{*} at the beginning
+of a line is literal.
+
+We specify literal parentheses (those that are part of the Info
+format) with @t{<lparen>} and @t{<rparen>}, meaning the single
+characters @samp{(} and @samp{)} respectively.
+
+Finally, the two-character sequence @address@hidden means the single
+character @address@hidden, for any @var{x}.
+
address@hidden
+* General: Info Format General Layout.
+* Text: Info Format Text Constructs.
address@hidden menu
+
+
address@hidden Info Format General Layout
address@hidden Info Format General Layout
+
+This section describes the overall layout of Info manuals.
+
address@hidden
+* Whole: Info Format Whole Manual. Split vs.@: nonsplit manuals.
+* Preamble: Info Format Preamble.
+* Indirect: Info Format Indirect Tag Table.
+* Tag table: Info Format Tag Table.
+* Local variables: Info Format Local Variables.
+* Regular nodes: Info Format Regular Nodes.
address@hidden menu
+
address@hidden Info Format Whole Manual
address@hidden Info Format: A Whole Manual
+
address@hidden Nonsplit manuals, Info format of
address@hidden Split manuals, Info format of
address@hidden Whole manual, in Info format
+
+To begin, an Info manual is either @dfn{nonsplit} (contained wholly
+within a single file) or @dfn{split} (across several files).
+
+The syntax for a nonsplit manual is:
+
address@hidden
+ <nonsplit info file> =
+<preamble>
+<node>*
+<tag table>
+(<local variables>)?
address@hidden example
+
+When split, there is a @dfn{main file}, which contains only pointers
+to the nodes given in other @dfn{subfiles}. The main file looks
+like this:
+
address@hidden
+ <split info main file> =
+<preamble>
+<indirect table>
+<tag table>
+(<local variables>)?
address@hidden example
+
+The subfiles in a split manual have the following syntax:
+
address@hidden
+ <split info subfile> =
+<preamble>
+<node>*
address@hidden example
+
+
address@hidden Info Format Preamble
address@hidden Info Format: Preamble
+
address@hidden Preamble, in Info format
+
+The @t{<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.
+
address@hidden
+ <preamble> =
+<identification> # "This is FILENAME, produced by ..."
+<copying text> # Expansion of @@copying text.
+<dir entries> # Derived from @@dircategory and @@direntry.
address@hidden example
+
+These pieces are:
+
address@hidden @t
address@hidden <identification line>
+An arbitrary string beginning the output file, followed by a blank
+line.
+
address@hidden <copying text>
+The expansion of a @code{@@copying} environment, if
+the manual has one (@pxref{copying}).
+
address@hidden <dir entries>
+The result of any @code{@@dircategory} and @code{@@direntry}
+commands present in the manual (@pxref{Installing Dir Entries}).
+
address@hidden table
+
+
address@hidden Info Format Indirect Tag Table
address@hidden Info Format: Indirect Tag Table
+
address@hidden Indirect tag table, in Info format
+
+The indirect table is written to the main file in the case of split
+output only. It specifies the starting byte position of each split
+output file (as a decimal integer):
+
address@hidden
+ <indirect table> =
+^_
+Indirect:
+(<filename>: <bytepos>)*
address@hidden example
+
+The number of preamble bytes written to each output file are included
+in the positions. Neither the preamble nor the size of the top-level
+output file is included.
+
+The first actual node of content will be pointed to by the first
+entry.
+
+Unfortunately, Info-creating programs such as @code{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 just
+giving up if the position is not perfectly at a node beginning.
+
+As an example, suppose split output is generated for the GDB manual.
+The top-level file @file{gdb.info} will contain something like this:
+
address@hidden
+^_
+Indirect:
+gdb.info-1: 1878
+gdb.info-2: 295733
+...
address@hidden example
+
+This tells Info viewers that the first node of the manual occurs at
+byte 1878 (i.e., after the preamble) of the file @file{gdb.info-1}.
+The first node written to @file{gdb.info-2} would start at byte 295733
+if the subsequent @file{gdb.info-*} files (not including
address@hidden files were appended to @file{gdb.info-1}, including
+their preambles.
+
+
address@hidden Info Format Tag Table
address@hidden Info Format: Tag Table
+
address@hidden Tag table, in Info format
+
+The tag table specifies the starting byte position of each node and anchor
+in the file. It is written in the main output file only, not (in the
+case of split output) any subfiles.
+
address@hidden
+ <tag table> =
+^_
+Tag Table:
+<lparen>Indirect<rparen> # this line appears in split output only
+(Node|Ref): <nodeid>^?<bytepos>
+^_
+End Tag Table
address@hidden example
+
+The @samp{(Indirect)} line is the next line after @samp{Tag Table:}
+in the case of split output only. In this
+
+Each following line defines an identifier as either an anchor or a
+node. It is an error to define the same identifier both ways. For
+example, @samp{Node: Top^?1647} says that the node named @samp{Top}
+starts at byte 1647 while @samp{Ref: Overview-Footnote-1^?30045} says
+that the anchor named @samp{Overview-Footnote-1} starts at byte 30045.
+
+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:
+
address@hidden
+^_
+Tag Table:
+Node: Top^_89
+Node: Ch1^_292
+^_
+End Tag Table
address@hidden example
+
+This specifies a manual with two nodes, `Top' and `Ch1', at byte
+positions 89 and 292 respectively. Because the @samp{(Indirect)} line
+is not present, the manual is not split.
+
+
address@hidden Info Format Local Variables
address@hidden Info Format: Local Variables
+
address@hidden Local variable section, in Info format
+
+The local variables section is optional and is currently used to give the
+encoding information. It may be augmented in the future.
+
address@hidden
+ <local variables> =
+^_
+Local Variables:
+coding: <encoding>
+End:
address@hidden example
+
address@hidden,, @code{@@documentencoding}}.
+
+
address@hidden Info Format Regular Nodes
address@hidden Info Format: Regular Nodes
+
address@hidden Info nodes, in Info format
+
+Regular nodes look like this:
+
address@hidden
+ <node> =
+^_
+File: <fn>, Node: <id1>, (Next: <id2>, )? (Prev: <id3>, )? Up: <id4>
+
+<general text, until the next ^_ or end-of-file>
address@hidden example
+
+The @code{Next} and @code{Prev} pointers are optional. The @code{Up}
+pointer may technically also be absent, although this is most likely the
+case of a wrongly-structured Info manual. At least one space must be
+present after each colon and comma, but any number of spaces are
+ignored.
+
+This @t{<node>} defines @t{<id1>} in @t{<fn>}, which is typically just
address@hidden or perhaps @samp{manual.info}. Each of the other
+references @t{<id2>}, @t{<id3>}, and @t{<id4>} must be defined with
+either @samp{Node} or @samp{Ref} in the @t{<tag table>}.
+
+Conventionally the nodes are arranged to form a tree, but this is not
+a requirement of the format. Each pointer can refer to any defined
+identifier.
+
+The @t{<general text>} of the node can include the special constructs
+described next.
+
+
address@hidden Info Format Text Constructs
address@hidden Info Format Text Constructs
+
address@hidden Info format text constructs
address@hidden text constructs, Info format
+
+These special Info constructs can appear within the text of a node.
+
address@hidden
+* Menu: Info Format Menu.
+* Image: Info Format Image.
+* Printindex: Info Format Printindex.
+* Cross-reference: Info Format Cross-reference.
address@hidden menu
+
+
address@hidden Info Format Menu
address@hidden Info Format: Menu
+
address@hidden Menus, in Info format
+
+Conventionally menus appear at the end of nodes, but the Info format
+places no restrictions on their location.
+
address@hidden
+ <menu> =
+* Menu:
+(<menu entry> | <menu comment>)*
address@hidden example
+
+The parts of a @t{<menu entry>} are described in @ref{Menu Parts}.
+
+A @t{<menu comment>} is any line not beginning with @samp{*} 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 (@pxref{Writing a Menu}).
+
+
address@hidden Info Format Image
address@hidden Info Format: Image
+
address@hidden Images, in Info format
+
+The @code{@@image} command results in the following special directive
+within the Info file (@pxref{Images}):
+
address@hidden
+ <image> =
+^@@^H[image src="<image file>"
+ (text="<txt file contents>")?
+ (alt="<alt text>")?
+^@@^H]
address@hidden example
+
+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 string @t{<image file>}, @t{<txt file contents>} and @t{<alt
+text>}, @samp{"} is quoted as @samp{\"} and @samp{\} is quoted as
address@hidden The text and alt specifications are optional.
+
+The @t{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 @t{alt} value may be used instead of displaying the
+(typically graphical) @t{<image file>}.
+
+The @t{<txt file contents>}, if present, should be taken as an ASCII
+representation of the image, and also may be used on a text-only
+display.
+
+The format does not prescribe the choice between displaying the
address@hidden<image file>}, the @t{<alt text>} or @t{<txt file contents>}.
+
+
address@hidden Info Format Printindex
address@hidden Info Format: Printindex
+
address@hidden Indexes, in Info format
+
+Indexes in Info format are generally written as a menu
+(@pxref{Indices}), but with an additional directive at the beginning
+marking this as an index node:
+
address@hidden
+ <printindex> =
+^@@^H[index^@@^H]
+* Menu:
+
+<index entry>*
address@hidden example
+
+The @t{<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:
+
address@hidden
+ <index entry> =
+* <entry text>: <entry node>. <lparen>line <lineno><rparen>
address@hidden example
+
address@hidden
+The @t{<entry text>} is the index term. The @t{<lineno>} is an
+unsigned integer, given relative to the start of the @t{<entry node>}.
+There may be arbitrary whitespace after the colon and period, as usual
+in menus. Here is an example:
+
address@hidden
+^@@^H[index^@@^H]
+* Menu:
+
+* thunder: Weather Phenomena. (line 5)
address@hidden example
+
+This means that an index entry for `thunder' appears at line 5 of the
+node `Weather Phenomena'.
+
+
address@hidden Info Format Cross-reference
address@hidden Info Format: Cross-reference
+
address@hidden Cross-references, in Info format
+
+A general cross reference in Info format is written as follows:
+
address@hidden
+ <cross-reference> =
+* (N|n)ote (<id>:: | <label>:(<lparen><infofile><rparen>)?<id>(.|,))
address@hidden example
+
+Whether @samp{note} or @samp{Note} is used is not significant.
+
+The @samp{<id>::} form indicates a node or anchor reference within the
+current manual.
+
+The longer form indicates a general reference, typically used to refer
+to a node or anchor in a different manual, but possibly to the current
+manual. The @t{<label>} is descriptive text; the optional
address@hidden(<infofile>)} is the filename of the manual being referenced,
+and the @t{<id>} is the node or anchor within that manual, terminated
+by a comma or period. That final punctuation is part of the
+surrounding sentence, and should be displayed.
+
+Here are some examples:
+
address@hidden
+*note GNU Free Documentation License::
+*note Tag table: Info Format Tag Table, for details.
+*Note Overview: (make)Top.
address@hidden example
+
+The first shows the short form, a reference to a node in the current
+manual.
+
+The second also refers to a node in the current manual, namely `Info
+Format Tag Table'; the `Tag table' before the @samp{:} is only a label
+on this particular reference.
+
+The third example refers to the node `Top' in another manual, namely
address@hidden, with `Overview' being the label for this cross-reference.
+
address@hidden References}.
+
+
@ignore
The simple description in the command summary seems sufficient to me
these days, so ignore this appendix. --karl, 13mar04.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- texinfo ChangeLog NEWS TODO doc/texinfo.txi,
Karl Berry <=