[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
texinfo ChangeLog doc/texinfo.txi doc/version.texi
From: |
Patrice Dumas |
Subject: |
texinfo ChangeLog doc/texinfo.txi doc/version.texi |
Date: |
Fri, 23 Jul 2010 06:36:59 +0000 |
CVSROOT: /sources/texinfo
Module name: texinfo
Changes by: Patrice Dumas <pertusus> 10/07/23 06:36:59
Modified files:
. : ChangeLog
doc : texinfo.txi version.texi
Log message:
* doc/texinfo.txi (texi2any output customization): add the
general informations about initialization files and the document
layout.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/ChangeLog?cvsroot=texinfo&r1=1.1066&r2=1.1067
http://cvs.savannah.gnu.org/viewcvs/texinfo/doc/texinfo.txi?cvsroot=texinfo&r1=1.261&r2=1.262
http://cvs.savannah.gnu.org/viewcvs/texinfo/doc/version.texi?cvsroot=texinfo&r1=1.83&r2=1.84
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/texinfo/texinfo/ChangeLog,v
retrieving revision 1.1066
retrieving revision 1.1067
diff -u -b -r1.1066 -r1.1067
--- ChangeLog 22 Jul 2010 00:39:49 -0000 1.1066
+++ ChangeLog 23 Jul 2010 06:36:58 -0000 1.1067
@@ -1,3 +1,9 @@
+2010-07-23 Patrice Dumas <address@hidden>
+
+ * doc/texinfo.txi (texi2any output customization): add the
+ general informations about initialization files and the document
+ layout.
+
2010-07-21 Karl Berry <address@hidden>
* doc/texinfo.txi (Invoking texi2any) <--conf-dir>: reformat.
Index: doc/texinfo.txi
===================================================================
RCS file: /sources/texinfo/texinfo/doc/texinfo.txi,v
retrieving revision 1.261
retrieving revision 1.262
diff -u -b -r1.261 -r1.262
--- doc/texinfo.txi 22 Jul 2010 00:39:49 -0000 1.261
+++ doc/texinfo.txi 23 Jul 2010 06:36:58 -0000 1.262
@@ -1,5 +1,5 @@
\input texinfo.tex @c -*-texinfo-*-
address@hidden $Id: texinfo.txi,v 1.261 2010/07/22 00:39:49 karl Exp $
address@hidden $Id: texinfo.txi,v 1.262 2010/07/23 06:36:58 pertusus 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.
@@ -163,6 +163,7 @@
* Generic converter texi2any/makeinfo:: The all purpose converter.
* Creating and Installing Info Files:: Details on Info output.
* Generating HTML:: Details on HTML output.
+* texi2any output customization:: Fine tuning with initialization files.
* Command List:: All the Texinfo @@-commands.
* Tips:: Hints on how to write a Texinfo document.
@@ -650,6 +651,21 @@
* Configuration: HTML Xref Configuration. htmlxref.cnf.
* Preserving links: HTML Xref Link Preservation. MANUAL-noderename.cnf.
+texi2any output customization
+
+* Loading initialization files:: Initialization files search paths.
+* Initialization files basics:: General informations on initialization
+ files.
+* Elements:: The main division of output document.
+* Function prototypes:: Conventions used in that manual for
+ function reference prototypes display.
+* Initializing and finalizing:: Preparing and finalizing the output.
+* Special elements:: Customizing special elements text and
+ layout.
+* File and target names::
+* External index files::
+* Customizing CSS::
+
@@-Command List
* Command Syntax:: General syntax for varieties of @@-commands.
@@ -15910,11 +15926,11 @@
Beside those default formats, with @command{texi2any} some important
aspects of the result may be specified via command line options,
-and configuration files provide an even finer degree of control
+and initialization files provide an even finer degree of control
over the final output, allowing most every aspect of the final output not
-specified in the Texinfo input file to be specified. Configuration files are
+specified in the Texinfo input file to be specified. Initialization files are
written in @command{perl}, like the main program, and anything which may be
-specified on the command line may also be specified within a configuration
+specified on the command line may also be specified within a initialization
file.
@menu
@@ -16009,32 +16025,8 @@
@opindex address@hidden
Append @var{path} to the directory search list for finding
customization files that may be loaded with @option{--init-file} (see
-below). By default the following directories are searched, in this
-order (where @var{prog} is the name of the program invoked on the
-command line):
-
address@hidden
address@hidden The current directory @file{.};
-
address@hidden @file{$HOME/address@hidden, where @env{$HOME} is the user home
directory;
-
address@hidden @address@hidden/@var{prog}}, where @var{sysconfdir} is
-the system directory for host-specific configuration, determined at
-build time (@code{/usr/local/etc} by default);
-
address@hidden @address@hidden/@var{prog}} where @var{datadir} is the
-system directory for data files, determined at build time
-(@code{/usr/local/share} by default);
-
address@hidden the directory @file{.texinfo/init} in the current directory;
-
address@hidden @file{$HOME/.texinfo/init} where @env{$HOME} is the user home
directory;
-
address@hidden @address@hidden/texinfo/init} with @var{sysconfdir} as above;
-
address@hidden @address@hidden/texinfo/init} with @var{datadir} as above.
-
address@hidden enumerate
+below).
address@hidden initialization files}.
@var{path} can be a single directory, or a list of several directories
separated by the usual path separator character (@samp{:} on GNU and
@@ -16172,9 +16164,10 @@
@opindex address@hidden
Load @var{file} code to modify the behaviour and output of the generated
manual. @option{--conf-dir} may be used to add a directory to the list
-of directories where customization files are searched for. It is customary
-to use the @code{.init} extension with customization files, but it is
+of directories where initialization files are searched for. It is customary
+to use the @code{.init} extension with initialization files, but it is
not enforced by anything, and the @var{file} file name is taken literally.
address@hidden initialization files}.
@item address@hidden
@opindex address@hidden
@@ -16342,6 +16335,7 @@
Many aspects of the behaviour and output may be modified by modifying
configuration variables. This allows to go beyond what can be set in
the document by @@-commands and with command line switches.
address@hidden Configuration Variables}.
@item address@hidden
@itemx --no-split
@@ -16349,6 +16343,7 @@
@opindex --no-split
@cindex Splitting of output files
@cindex Output file splitting
address@hidden output}
When generating Info, @option{--no-split} suppress the splitting stage
of @code{makeinfo}. By default, large
@@ -16470,9 +16465,8 @@
@itemize @bullet
@item associated with @@-commands in the document,
for example @code{@@documentlanguage},
address@hidden associated with
-configuration variables that
-may also be set on the command-line, for example @code{SPLIT} which is
address@hidden associated with command-line options, for example the
configuration
+variable @code{SPLIT} is
associated with the @option{--split} command-line switch,
@item other
configuration variables, for example @code{NO_CSS} which may be set to 0
@@ -16533,7 +16527,7 @@
@code{INLINE_CONTENTS} is not set. Default is @file{<document name>_toc.html}.
@item SHOW_MENU
If set, the Texinfo menus are shown. It is set in all the formats, for
-exmaple it is true for HTML (except if @option{--no-headers} is used),
+example it is set for HTML (except if @option{--no-headers} is used),
Info and XML, but not for Docbook.
@item USE_NODES
Use nodes preferentially to decide where elements are separated.
@@ -16692,7 +16686,7 @@
For HTML.
generate @code{<link>} elements in HTML @code{<head>}.
@item OVERVIEW_LINK_TO_TOC
-If set the cross-refeerences in Overview link to the corresponding
+If set the cross-references in Overview link to the corresponding
Table of Contents entry.
@item AVOID_MENU_REDUNDANCY
if set and menu entry equals menu description, then do not print
@@ -16703,11 +16697,11 @@
If set, use node names in index entries, otherwise prefer section names.
@item USE_SETFILENAME
If set, use @code{@@setfilename} to set document name, otherwise base the
-document name only on th einput file name. @xref{setfilename}.
+document name only on the input file name. @xref{setfilename}.
@item USE_SETFILENAME_EXTENSION
Default for Info, not for other output.
If set use what @code{@@setfilename} gives for the output file name,
-including th eextension. You should not need to set this variable.
+including the extension. You should not need to set this variable.
@item COMPLEX_FORMAT_IN_TABLE
For HTML.
If set, use table for indentation of complex formats.
@@ -16728,7 +16722,7 @@
If set, use the node associated with a section for section target in
cross-references.
@item NEW_CROSSREF_STYLE
-If unset use an old cross-reference schenm. This is a backward compatibility
+If unset use an old cross-reference schema. This is a backward compatibility
setting, you should certainly never unset this variable.
@item PROGRAM_NAME_IN_FOOTER
For HTML.
@@ -18309,9 +18303,6 @@
software generating the cross-reference in the present manual can
control.
-Ultimately, we hope to allow for an external configuration file to
-control which manuals are available from where, and how.
-
@node HTML Xref Configuration
@subsection HTML Cross-reference Configuration: @file{htmlxref.cnf}
@@ -18469,6 +18460,1457 @@
indicated with a @samp{@@c} at the beginning of a line, optionally
preceded by whitespace.
address@hidden texi2any output customization
address@hidden Controlling the @command{texi2any} output
+
+
+
address@hidden
+* Loading initialization files:: Initialization files search paths.
+* Initialization files basics:: General informations on initialization
+ files.
+* Elements:: The main division of output document.
+* Function prototypes:: Conventions used in that manual for
+ function reference prototypes display.
+* Initializing and finalizing:: Preparing and finalizing the output.
+* Navigation panel customization::
+* Page layout customization::
+* Special elements:: Customizing special elements text and
+ layout.
+* File and target names::
+* External index files::
+* Customizing CSS::
address@hidden menu
+
address@hidden Loading initialization files
address@hidden Loading initialization files and search paths
+
+It is possible to load initialization files to modify almost every
+aspect of output formatting. The program loads initialization files
+named @file{Config} each time it is run. Those files are looked for
+in the following directories (where @var{prog} is the name of the
+program invoked on the command line, normally @code{makeinfo}
+or @code{texi2any}):
+
address@hidden @file
address@hidden ./
+(the current directory)
+
address@hidden ~/address@hidden/
+(where @code{~} is the current user's home directory)
+
address@hidden @var{sysconfdir}/@var{prog}/
+(where @var{sysconfdir} is the system configuration directory
+specified at compile-time, e.g., @file{/usr/local/etc})
+
address@hidden @var{datadir}/@var{prog}/
+(likewise specified at compile time, e.g., @file{/usr/local/share})
address@hidden table
+
+All the files found are used, in that order.
+
+The most common way to load initialization files is to use the
address@hidden option to specify the file to be loaded. The
+initialization files are looked for
+in for in the same directories than @file{Config} files, and also
+in additional directories (the same that are used
+for @ref{HTML Xref Configuration} in the @file{init/} subdirectory).
+By default the following directories are searched, in this
+order (where @var{prog} is the name of the program invoked on the
+command line) the first file found is used:
+
address@hidden
address@hidden The current directory @file{.};
+
address@hidden @file{$HOME/address@hidden, where @env{$HOME} is the user home
directory;
+
address@hidden @address@hidden/@var{prog}}, where @var{sysconfdir} is
+the system directory for host-specific configuration, determined at
+build time (@code{/usr/local/etc} by default);
+
address@hidden @address@hidden/@var{prog}} where @var{datadir} is the
+system directory for data files, determined at build time
+(@code{/usr/local/share} by default);
+
address@hidden the directory @file{.texinfo/init} in the current directory;
+
address@hidden @file{$HOME/.texinfo/init} where @env{$HOME} is the user home
directory;
+
address@hidden @address@hidden/texinfo/init} with @var{sysconfdir} as above;
+
address@hidden @address@hidden/texinfo/init} with @var{datadir} as above.
+
address@hidden enumerate
+
+Additional directories may be appended with @option{--conf-dir}.
+
+
address@hidden Initialization files basics
address@hidden General informations on initialization files
+
+Initialization files are @command{perl} files, read as explained
+in @ref{Loading initialization files}.
+A good source of inspiration could be the initialization files provided
+in the Texinfo distribution. They all have @samp{.init} extension.
+The @file{texi2html.init} file is used to set all the defaults, and,
+although quite large is an interesting source of examples.
+Simpler initialization files are installed in the default case, they may
+also be interesting starting points.
+
+In initialization file three kind of variables appear.
address@hidden @asis
address@hidden configuration variables
+Those variables, described in @ref{makeinfo Configuration Variables}
+are set and accessed through specific functions in initialization files.
address@hidden scalar, arrays and hashes
+Normal perl variable. The order of loading of initialization
+files and of command-line options processing may be important when
+they are modified,
+later changes modifying former changes.
address@hidden references on functions
+This allows a dynamical redefinition of functions used to produce
+the output.
address@hidden table
+
+Initialization file are loaded from the main program by
+the mean of a @code{require}, while in the @code{Texi2HTML::Config}
+namespace. This means that the namespace of the main program and
+the namespace of initialization files are distinct, which ensures
+that no name clash should happen. The scalars,
+arrays and hashes are declared with
address@hidden vars}, such that it should be possible to use the
address@hidden strict} pragma in the initialization file code.
+
+To avoid messing with the variables in the @code{main} namespace
+all the global variables which could be of use in the init files
+are in the @code{Texi2HTML} namespace. Notice that the functions
+of the main program are still in the @code{main} namespace.
+
+Since the program can proceed more than one file on the
+command line, you should make sure that you initialize the variables
+that are used during a manual formatting. It is possible to call
+functions at different stages for that
+use (@pxref{Calling functions at different stages}).
+
address@hidden
+* Setting and getting configuration variable value::
+* Global informations:: Accessing global informations, like date,
+ address@hidden
+* Getting flag values::
+* Encodings:: Setting the encodings.
+* Redefining functions:: Function redefinition is achieved with
+ redefinition of references on functions.
+* Calling functions at different stages::
address@hidden menu
+
+
address@hidden Setting and getting configuration variable value
address@hidden Setting and getting configuration variable value
+
+To set the value of a configuration variable from an initialization file,
+you should use the function:
address@hidden set_from_init_file ($variable_name, $variable_value)
address@hidden is a string containing the name of the variable
+you want to set, and @var{$variable_value} is the value you want to set.
address@hidden may be @samp{undef}. For example
address@hidden
+set_from_init_file('documentlanguage', 'fr');
address@hidden example
+should override the @code{@@documentlanguage} from the document.
+It will be overriden by @option{--document-language} on the
+command-line.
+
+Another example,
address@hidden
+set_from_init_file('SPLIT', 'chapter');
address@hidden example
+should override the default splitting of the document. It will be
+overriden by the @option{--split} option on the command-line.
+
+And, as a last example,
address@hidden
+set_from_init_file('NO_CSS', 1);
address@hidden example
+wil override the default value for @code{NO_CSS}. It will be overriden by
address@hidden NO_CSS=1} on the command-line.
address@hidden defun
+
+To get the value of a variable, the function is @code{get_conf},
+in the @code{Texi2HTML::Config} namespace:
address@hidden get_conf ($variable_name)
address@hidden is the name of the variable you want to know the
+value.
address@hidden defun
+
+For example:
+
address@hidden
+if (get_conf('footnotestyle') eq 'separate') @{ .... @}
address@hidden example
+
+The list of configuration variables associated with @@-commands is
+in @ref{Configuration variables for @@-commands}, the list and mapping
+of configuration variables associated with command line options is at
address@hidden variables and options}.
+
address@hidden Global informations
address@hidden Accessing global informations
+
+The @code{%Texi2HTML::THISDOC} hash holds some global informations:
+
address@hidden
+FIXME
+'split_level' 'variable_levels' 'variables' 'toc_file' stoc_file
+%index_letters_array
+%index_entries_array
+%index_entries_region_array
+%index_entries
+%indices_numbers
+%indices
+input_file_name
+input_file_number
+input_directory
+css_import_lines
+css_rule_lines
+do_about
+titlefont_texi
+'file_base_name' 'FH' 'state' 'format_from_command_line' 'input_directory'
'destination_directory' 'file_base_name' %filename 'dircategory_texi'
'dircategory' 'settitle_texi' 'shorttitlepage_texi' 'title_texi'
settitle_line_nr shorttitlepage_line_nr title_line_nr @authors_texi
@authors_line_nr @subtitles_texi @subtitles_line_nr %merged_index @defindex
@defcodeindex
+command_stack top_texi fulltitle_texi simpletitle_texi
+program
+program_and_version
+program_homepage
+copying_comment
+inline_contents
+line_nr
+input_file_name
+%htmlxref
+%hyphenation
+
+author subtitle -> _texi
+
+'shorttitlepage', 'settitle', 'author',
+ 'titlefont', 'subtitle', 'title', 'fulltitle', 'simpletitle'
+-> $thing, $thing _no_texi, $thing _simple_format
address@hidden ignore
+
address@hidden @code
address@hidden fulltitle
+title set by @code{@@settitle}. If there is no @code{@@settitle} other
+possibilities are tried (@code{@@title}, @code{@@address@hidden).
address@hidden fulltitle_no_texi
+fulltitle without texi formatting
address@hidden fulltitle_texi
+fulltitle with texi commands
address@hidden title
+title set by @code{@@title}.
address@hidden title_no_texi
+title without texi formatting
address@hidden title_texi
+title with texi commands
address@hidden author
+Authors list set by @code{@@author}.
address@hidden authors
+A reference on an array containing each author set by @code{@@author}.
address@hidden copying_comment
+Text appearing in @code{@@copying} with all the texinfo commands removed,
+put in comments.
address@hidden program
+The name of the command generating the output.
address@hidden program_and_version
+The name and version of the command generating the output.
address@hidden program_homepage
+Homepage of the command generating the output..
address@hidden file_base_name
+base name of the texinfo manual file.
address@hidden filename
+This is a reference on a hash that holds the filenames for special elements.
+These files may not be used in certain cases, for example the @code{toc}
+element file name may not be relevant if table of contents is not output
+separately.
+The keys are
address@hidden @code
address@hidden doc
+the document file if not split, if split should be the top element file.
address@hidden top
+Top element file name.
address@hidden toc
+Table of contents element file name.
address@hidden stoc
+Overview (also called short table of contents) element file name.
address@hidden about
+About element file name.
address@hidden foot
+Footnotes element file name.
address@hidden frame
+Main frame file.
address@hidden toc_frame
+Table of contents frame file name.
address@hidden table
address@hidden input_file_name
+Name of the texinfo manual file given on the command line.
address@hidden destination_directory
+Destination directory for the resulting files.
address@hidden extension
+Extension for the output files.
address@hidden toc_file
+The file name of the table of contents, should always be valid, even
+when table of contents are output directly in the document.
address@hidden inline_contents
+A reference on a hash containing two key, one for each type of table
+of contents:
address@hidden @code
address@hidden contents
+The associated value is a
+reference on an array containg the line resulting from formatting
+the table of contents, including a heading and a reference.
address@hidden shortcontents
+The associated value is a
+reference on an array containg the line resulting from formatting
+the short table of contents, including a heading and a reference.
address@hidden table
address@hidden css_import_lines
+reference on an array containing the @code{@@import} lines of
address@hidden files. @xref{HTML CSS}.
address@hidden css_lines
+reference on an array containing the normal lines of
address@hidden files. @xref{HTML CSS}.
address@hidden table
+
+
address@hidden Getting flag values
address@hidden Getting the values of flags set by @code{@@set}
+
+Flags defined by @code{@@set} may be accessed through the
address@hidden::value} hash. The key is the flag name, the value is the
+flag value.
+
+
address@hidden Encodings
address@hidden Setting the encodings
+
+There are four relevant encodings variables, they are autodetected
+if not set:
address@hidden @code
address@hidden documentencoding
+This configuration variable may be set, if not defined, the encoding
+appearing in @code{@@documentencoding} will be used.
address@hidden IN_ENCODING
+The texinfo files encoding, may also be set.
+Otherwise, when @code{documentencoding}
+is set, @code{IN_ENCODING} is also set
+if the encoding is supported by perl.
address@hidden OUT_ENCODING
+The out files encoding. If not set, the value of
address@hidden
+or
address@hidden
+is used if one of these variables is set.
address@hidden ENCODING_NAME
+The encoding advertized in out files.
+If unset the value of this variable is based on the
+other ENCODING values, and if they are all undefined, the variable
address@hidden is used.
address@hidden table
+
+The values for the encoding related variables are set in the default
address@hidden function reference (@pxref{Output initialization}).
+
+In general the @code{documentencoding} and @code{IN_ENCODING} are
+set to the right values. @code{OUT_ENCODING} is also rightly set
+according to @code{ENCODING_NAME}.
+To force a given encoding for the output, the
address@hidden value may be set. The current default output encoding
+is UTF-8.
+
+
address@hidden Redefining functions
address@hidden Redefining functions in initialization files
+
+To redefine a function you must replace the corresponding funtion
+reference with a reference on your function.
+Thus you should write your function, give it a name you
+are certain it is unique in the @code{Texi2HTML::Config} namespace,
+and override the value of the function reference with your own
+function reference. When another function from the main program
+(or from another functions of a initialization file) calls the reference,
+your function will be used.
+
+For example the function
+reference corresponding with the function called when doing an
+anchor is called @code{$anchor}. Thus if you want to override the
+corresponding function
+you could write:
+
address@hidden
+# override the function reference
+$anchor = \&my_own_function;
+
+# the function reference now refers to
+sub my_own_function @{
+# process arguments and return an html anchor
address@hidden
address@hidden example
+
+
address@hidden Calling functions at different stages
address@hidden Calling functions at different stages
+
+Arbitrary user defined functions may be called between the
+different Texinfo parsing and outputting passes. This could be used, for
+example, to initialize variables before collecting the @@-commands and their
+text, expanding them between the collecting and expansion phase and doing
+some cleaning after the expansion pass.
+
+There are five places for user defined functions, associated with arrays.
+The function references in these arrays are called one after another.
+The arrays correspond with the different stages:
address@hidden @code
address@hidden @@command_handler_setup
+The function references in that array are called before anything is done,
+including collecting the output file names. The input file names directory
+are available.
address@hidden @@command_handler_init
+The function references in that array are called as soon as the file names are
+known. It may be at different moments, before processing anything, right after
+@@sefilename, or at the end of the first pass (after @@macro and @@include
+expansions).
+At that time the information available is essentially the file names.
address@hidden @@command_handler_names
+The function references in that array are called right after the collecting
+pass. At that time all the special @@-commands
+have been collected as explained above but no output has been produced,
+the element (node and section) names hasn't been processed and expanded.
address@hidden @@command_handler_process
+The function references in that array are called after the element names
+have been processed, but before the main output initialization.
address@hidden @@command_handler_output
+The function references in that array are called rigth before the
+main output processing, so that more informations are available,
+like the title.
address@hidden @@command_handler_finish
+he function references in that array are called after the end of the
+output generation.
address@hidden vtable
+
+Here is an example of these arrays use:
+
address@hidden
+push @@command_handler_init, \&Texi2HTML::LaTeX2HTML::init;
+push @@command_handler_process, \&Texi2HTML::LaTeX2HTML::latex2html;
+push @@command_handler_finish, \&Texi2HTML::LaTeX2HTML::finish;
address@hidden example
+
+
address@hidden Elements
address@hidden Elements and associated informations
+
address@hidden
+* The different elements::
+* Elements informations::
+* Elements lines::
address@hidden menu
+
address@hidden The different elements
address@hidden The different elements
+
+The main division of output document is the @dfn{element}. Their
+association with output files is determined by the split options.
address@hidden output}.
+The elements are:
+
address@hidden The association of nodes with pages is
address@hidden determined by the splitting of the document. @xref{Splitting
output}.
address@hidden @emph
address@hidden Normal elements
+These are normal sections and nodes. In general nodes are associated
+with the following sectioning command and a sectioning command is associated
+with the previous node and they both together make up
+the element. Either the node or the sectioning command is considered to
+be the main element component, depending on the value of
address@hidden and @code{USE_SECTIONS}. For example, if output
+is Info, the nodes are the elements, if output is Docbook, sectioning commands
+are the main element component, and if output is HTML both cases may happen.
address@hidden Paths}.
address@hidden Top element
+The top element is the higher element in the document structure.
+If there is a @code{@@top} section it is the element associated with
+that section. Otherwise it is the element associated with the
address@hidden@@node Top}. If there is no @code{@@node Top} the first element
+is the top element.
+
+The top element may be formatted differently from normal elements if there
+is a @code{@@top} section or the @code{@@node Top} is not associated
+with a sectioning command.
address@hidden Misc elements
+These elements are associated with different files if the document is split.
+And also if @code{MONOLITHIC} is not set.
+There are four misc elements:
address@hidden
address@hidden Table of contents
address@hidden Short table of contents, also called Overview
address@hidden Footnotes page
address@hidden About page
address@hidden enumerate
+
+The @emph{About page} shouldn't be present for documents consisting
+in only one sectioning element, or for documents unsplit and without
+navigation information. When generating HTML,
+the @emph{Footnote page} should only
+be present if the footnotes appear on a separated page,
+(@pxref{Footnote Styles}) however a footnote element is present if
+the document isn't split. The @emph{Table of contents} should only
+be formatted if @code{@@contents} is present in the document.
+Similarly the @emph{Overview} should only appear if @code{@@shortcontents}
+or @code{@@summarycontents} is present. Corresponding configuration variables,
address@hidden and @code{shortcontents} may be set to trigger the
+output of a @emph{Table of contents} or @emph{Overview}.
+The Table of contents and
+the Overview may also be directly included within the document, not
+as separate pages, in case @code{INLINECONTENTS} is set
+(@pxref{Contents and Overview text}).
+
+
+It is common not to have anything by normal elements, especially in
+case of non split output. In case of HTML output, special element may
+be present.
address@hidden table
+
+The main component of elements are sections if @code{USE_SECTIONS} is set,
+or @code{USE_NODES} is set to 0, and, conversely, are nodes if
address@hidden is set or @code{USE_SECTIONS} is 0. If those configuration
+variables are undefined, heuristics are used, influenced by the presence of
+nodes or sectionning elements in the document, if there are no nodes,
+sectioning elements are preferred and the reverse is true if there are no
+sectioning commands.
+
+When sectioning commands are the main components of elements,
+nodes not directly associated with a sectioning command are
+associated with the following sectioning command,
+and sectioning commands without nodes constitute an element.
+Conversely, when nodes are the main component of elements,
+sectioning commands not associated with nodes are associated with the
+previous node, and lone nodes are elements.
+
+
address@hidden Elements informations
address@hidden Elements informations
+
+
+The following items are associated with elements. Each of these
+is associated with a name and a reference to the
+element they represent, when such an element exists.
+The element is either a global element (for example the first element)
+or an element relative to the current
+element (for example the next element). The relative elements are
+found with respect with the document
+structure defined by the section structuring commands (@code{@@chapter},
address@hidden@@address@hidden) or by the nodes (in that case the node
+directions are specified on node line or in menu organization), as explained
+above (@pxref{Two Paths}).
+These items are called @dfn{element labels}. They may be associated with
+a button (@pxref{Button specifications}), and used in the formatting functions
+(@pxref{Elements informations}).
+
+Here is the list:
+
address@hidden @emph
address@hidden @samp{@ }
+An empty button
address@hidden Top
+Top element. The associated name is @code{TOP_HEADING} if that variable is
+defined. This variable is not set by default.
address@hidden Contents
+Table of contents
address@hidden About
+About (help) page
address@hidden Overview
+Overview, short table of contents
address@hidden First
+First element in reading order
address@hidden Last
+Last element in reading order
address@hidden Index
+The first chapter with @code{@@printindex}. The associated name
+is @code{$INDEX_CHAPTER}, if the variable is set. This variable is not set
+by default.
address@hidden This
+The current element
address@hidden Back
+Preceding element in reading order
address@hidden FastBack
+Beginning of this chapter or previous chapter if the element is a chapter
address@hidden Prev
+Previous section on the same level
address@hidden NodePrev
+Previous node
address@hidden Forward
+Next element in reading order
address@hidden FastForward
+Next chapter
address@hidden Next
+Next section on the same level
address@hidden NodeNext
+Next node
address@hidden Following
+Next node in node reading order
address@hidden Up
+Up section
address@hidden NodeUp
+Up node
address@hidden FileNext
+Forward element first in the next page (or file)
address@hidden FilePrev
+Backward element first in the previous page (or file)
address@hidden table
+
+
+The element labels may also be accessed when formatting elements.
+Four hashes are available, with key the elements items, and values:
+
address@hidden @code
address@hidden %Texi2HTML::NAME
+The formatted element name
address@hidden %Texi2HTML::HREF
+The element hypertext reference
address@hidden %Texi2HTML::NODE
+The element node name
address@hidden %Texi2HTML::NO_TEXI
+The element name after removal of texi commands
address@hidden vtable
+
+For example @code{$Texi2HTML::address@hidden'Back'@}} is the name of the
+previous element in reading order.
+
+
address@hidden Elements lines
address@hidden Elements lines
+
+The following array references or arrays holds formatted lines:
+
address@hidden @code
address@hidden $Texi2HTML::THIS_SECTION
+Lines of the current element.
address@hidden $Texi2HTML::OVERVIEW
+Lines of short table of contents. @xref{Contents and Overview text}.
address@hidden $Texi2HTML::TOC_LINES
+Lines of table of contents. @xref{Contents and Overview text}.
address@hidden $Texi2HTML::TITLEPAGE
+The title page formatted. @xref{Title page}.
address@hidden vtable
+
+
address@hidden Function prototypes
address@hidden Conventions used for function prototypes
+
+As the functions are defined by a reference name, we will always
+use the reference name in function prototypes. For the function arguments
+we will use @code{\@@array} for a reference on an array and similarly
address@hidden for a reference on a hash.
+
+Thus, the prototype for the function associated with the function
+reference @samp{$formatting_function} will be:
+
address@hidden {Function Reference} $text formatting_function $arg1 \@@arg2
address@hidden takes as first argument @var{$arg2},
+as second argument a reference on an array @var{\@@arg2}
+and returns the formatted text @var{$text}.
address@hidden deftypefn
+
+To redefined the corresponding function, you should write:
+
address@hidden
+$formatting_function = \&my_formatting_function;
+
+sub my_formatting_function($ $)
address@hidden
+ my $arg1 = shift;
+ my $arg2 = shift;
+ # prepare $formatted_text
+ .....
+ return $formatted_text;
address@hidden
address@hidden example
+
address@hidden Initializing and finalizing
address@hidden Preparing and finalizing the output
+
address@hidden initialization}
address@hidden Preparing the output
+
+After the texinfo file has been parsed, some information is available
+which can be used to modify some variables and prepare the outputting.
+For example the document language, the document encoding,
+values set with @code{@@set} or @code{@@setfilename} and other similar
+@@-commands are not known before the texinfo parsing.
+
+The following function reference may be redefined to be called after
+texinfo processing and before document generation:
+
address@hidden {Function Reference} init_out
+This function perform the initialization of variables and any other
+task before document outputting.
address@hidden deffn
+
+In the default case, the hashes
address@hidden (@pxref{Button specifications}),
address@hidden (@pxref{About text}) are initialized.
+Indeed the initialization of these variables is dependent upon
+the document language selection. Similarly the encoding variables are set
+based on the information now available (@pxref{Encodings}).
+When generating HTML, aditionally, the @code{%NAVIGATION_TEXT}
+hash is initialized.
+
+To perform the default initializations and also add more code, you could
+do as in the following example (save the default function reference and call
+it in your own function):
+
address@hidden
+my $default_init_out = $init_out;
+$init_out = \&makeinfo_like_init_out;
+sub makeinfo_like_init_out()
address@hidden
+ &$default_init_out();
+ address@hidden'Following'@} = ' > ';
address@hidden
address@hidden example
+
address@hidden finalization}
address@hidden Finalizing the output
+
+If you want to do some cleaning after the document was generated (close
+files, write at the end of files and so on), the following function
+reference may be redefined:
+
address@hidden {Function Reference} finish_out
+This function is called after the document generation.
address@hidden deffn
+
+The default is to do nothing.
+
+These function references are mostly redundant with the handlers described
+in @ref{Calling functions at different stages}.
+
address@hidden Navigation panel customization
address@hidden Customization of the navigation panels buttons
+
+A lot of customization of the navigation panel may be achieved
+with variables redefinition, especially special arrays.
+The configuration variables @code{VERTICAL_HEAD_NAVIGATION}, @code{ICONS},
address@hidden, @code{HEADER_IN_TABLE}, @code{USE_ACCESSKEY} and
address@hidden
+may be used to change the the navigation panel formatting.
address@hidden Configuration Variables}.
+In case it isn't enough, it is also possible to redefine the function
+doing the navigation panel formatting.
+
address@hidden
+* Button specifications::
+* Panel formatting function::
address@hidden menu
+
+
address@hidden Button specifications
address@hidden Specifying the buttons formatting
+
+Several arrays and hashes enable a precise control on the buttons and
+their display.
+The following arrays determine the buttons present in navigation panels:
+
address@hidden @code
address@hidden @@SECTION_BUTTONS
+This array is used for the navigation panel buttons present at the begining
+of sectioning elements. If split at node or section they are also used
+at the page footer, and in the case of section navigation at the page header.
address@hidden @@SECTION_FOOTER_BUTTONS
address@hidden @@NODE_FOOTER_BUTTONS
+This array is used for the navigation panel buttons present at the footer
+of pages when split at node or at section.
+
+If @code{WORDS_IN_PAGE} is set and the output is split at nodes, these
+buttons are only present if there are more than @code{WORDS_IN_PAGE}
+words in the sectioning element text. This counting is very rough and include
+punctuation marks, html elements, numbers. The default is to include the
+buttons after 300 words.
address@hidden @@CHAPTER_BUTTONS
+This array is used for the buttons appearing at the page footer if split at
+chapter, and at the page header if split at chapter and there is no section
+navigation.
address@hidden @@MISC_BUTTONS
+These buttons appear at the beginning of special and sections
+and at the end of these section pages if the output is split.
address@hidden @@LINKS_BUTTONS
+These are used for @code{<link>} elements if they are output in the
+headers.
address@hidden vtable
+
+The array specify the buttons displayed in navigation panels,
+and how the button is displayed.
+Each element is associated with
+a button of the navigation panel from left to right.
+The signification of the array element value is the following:
+
address@hidden @emph
address@hidden reference on a function
+The function is called with argument a boolean true if the navigation
+panel should be vertical. Should return the formatted button text.
address@hidden reference on a scalar
+The scalar value is printed. For some possibly
+usefull scalars, @ref{Elements informations}.
address@hidden reference on an array
+In this case the first array element should be a reference on text and the
+second element an element label. In that case a link to the
+element associated with the element label with the scalar value
+text is generated.
+
+For example if the buttons array element is
address@hidden
+[ 'Next', \$Texi2HTML::address@hidden@} ]
address@hidden example
+
address@hidden %NAVIGATION_TEXT
+The button will be a link to the next section with text
address@hidden::address@hidden@}}.
address@hidden element label
+If icons are not used, the button is a link to the corresponding
+element which text is defined by the value associated with the
+element label in the @code{%NAVIGATION_TEXT} hash, surrounded
+by @samp{[} and @samp{]}. If the element label is @samp{ }, there is
+no @samp{[} and @samp{]}.
+The element of the @code{%NAVIGATION_TEXT} hash are defined
+dynamically, in the @code{init_out} function reference
+(@pxref{Output initialization}).
+
address@hidden %ACTIVE_ICONS
address@hidden %BUTTONS_NAME
address@hidden %PASSIVE_ICONS
address@hidden %NAVIGATION_TEXT
+If icons are used, the button is an image with file determined by
+the value associated with the element label in the @code{%ACTIVE_ICONS}
+hash if the the link really leads to an element, or in the
@code{%PASSIVE_ICONS}
+hash if there is no element to link to. Of course if there is a link to the
+element the icon links to that element. The button name and
+the button description are used in HTML attributes to have a textual
+description of the icon. The corresponding strings are in
address@hidden for the button name and @code{%NAVIGATION_TEXT}
+for the description.
address@hidden table
+
address@hidden %BUTTONS_ACCESSKEY
+If the configuration variable @code{USE_ACCESSKEY} is set,
+the @code{accesskey} attribute is used in navigation. In that case
+the @code{%BUTTONS_ACCESSKEY} hash is used for the access key.
+
address@hidden %BUTTONS_REL
+Similarly, if the @code{USE_REL_REV} configuration variable is set,
+the @code{rel} attribute is used in navigation. In that case
+the @code{%BUTTONS_REL} hash is used for the @code{rel} attribute.
+
+
address@hidden Panel formatting function
address@hidden Changing the navigation panel formatting
+
+If you are not satisfied with this scheme, it is possible to
+control exactly the formatting of navigation panels by redefining a function
+reference. The function controlling the display of navigation panel is
+associated with the following function reference:
+
address@hidden {Function Reference} $navigation_text print_navigation
\@@buttons $vertical
address@hidden@@buttons} is an array reference which should hold the
specification of
+the buttons for that navigation panel. @var{$vertical} is true if the
+navigation panel should be vertical.
+Returns the formatted navigation panel in @var{$navigation_text}.
address@hidden deftypefn
+
+
address@hidden Page layout customization
address@hidden Page and file layout customization
+
address@hidden
+* Customizing file header::
+* Customizing the section layout::
+* Customizing file footers::
address@hidden menu
+
address@hidden Customizing file header
address@hidden Customizing file header
+
+The default functions call the function associated with
address@hidden to format the navigation panel for the
+page header. Thus you can control parts of the formatting by
+redefining the function reference.
+
address@hidden {Function Reference} print_head_navigation $filehandle \@@buttons
address@hidden is the opened filehandle the function should write to.
address@hidden@@buttons} is an array reference which should hold the
specification of
+the buttons for the navigation panel.
address@hidden deffn
+
+If you want even more control, you can have full control over the page header
+formatting by redefining three function references. The function associated
+with @code{$print_page_head} is called for all the pages, and after that,
+the function associated with @code{$print_chapter_header} is called
+if the document is split at chapters, or the function associated with
address@hidden is called if the document is split at sections.
+
address@hidden {Function Reference} print_page_head $filehandle
address@hidden is the opened filehandle the function should write to.
+This function should print the page head, including the @code{<body>}
+element.
address@hidden deffn
+
address@hidden {Function Reference} print_chapter_header $filehandle
address@hidden is the opened filehandle the function should write to.
+This function is called if the document is split at chapters, after
address@hidden
address@hidden deffn
+
address@hidden {Function Reference} print_section_header $filehandle
address@hidden is the opened filehandle the function should write to.
+This function is called if the document is split at sections, after
address@hidden
address@hidden deffn
+
address@hidden $EXTRA_HEAD
address@hidden $AFTER_BODY_OPEN
+In HTML,
+it is possible to add lines to the text within the @code{<head>}
address@hidden elements, by defining the variable @code{$EXTRA_HEAD}.
+Similarly it is possible to add text just after the @code{<body>}
+element with the variable @code{$AFTER_BODY_OPEN}.
+These variables are empty by default.
+A date is output in header
+if @code{DATE_IN_HEADER} is set.
+Also, the description from @code{@@documentdescription} (or set as
+a configuration variable) is used in the
+header (@pxref{documentdescription}).
+
+The @code{<body>} element attributes may be set by defining the
+configuration variable @code{BODYTEXT}.
+In the default case, the encoding name @code{ENCODING_NAME} is used.
+If the variable is not defined,
+it is automatically determined
address@hidden
+
address@hidden @@LINKS_BUTTONS
address@hidden %BUTTONS_REL
address@hidden<link>} element are used in the header if @code{USE_LINKS}
+is set. @code{@@LINKS_BUTTONS} determines which links are used.
address@hidden determines the link type associated with the
address@hidden attribute.
+
address@hidden Customizing the section layout
address@hidden Customizing the section layout
+
+The functions associated with the following function references are used for
+the formatting of sections:
+
address@hidden {Function Reference} print_section $filehandle $first_in_page
$previous_is_top
address@hidden is the opened filehandle the function should write to.
address@hidden is true if this section is the first section in the page.
address@hidden is true if this section is the section following the
+Top section.
+This function should print the current section contents.
address@hidden deffn
+
address@hidden {Function Reference} end_section $filehandle
$last_element_or_before_top
address@hidden is the opened filehandle the function should write to.
address@hidden is true if this section precedes the top
+element or is the last one in page, or before the special elements.
address@hidden deffn
+
address@hidden Customizing file footers
address@hidden Customizing the file footers
+
+
+The default functions call the function associated with
address@hidden to format the navigation panel for the
+page footer. Thus you can control parts of the formatting by
+redefining the function reference.
+
address@hidden {Function Reference} print_foot_navigation $filehandle \@@buttons
address@hidden is the opened filehandle the function should write to.
address@hidden@@buttons} is an array reference which should hold the
specification of
+the buttons for the navigation panel.
address@hidden deffn
+
+If you want even more control, you can have more control over the page footer
+formatting by redefining three function references.
+The function associated with @code{$print_chapter_footer} is called
+if the document is split at chapters, or the function associated with
address@hidden is called if the document is split at sections.
+After that the function associated with @code{$print_page_foot} is called.
+
address@hidden {Function Reference} print_page_foot $filehandle
address@hidden is the opened filehandle the function should write to.
+This function should print the page foot, including the @code{</body>}
+element.
address@hidden deffn
+
address@hidden {Function Reference} print_chapter_footer $filehandle
address@hidden is the opened filehandle the function should write to.
+This function is called if the document is split at chapters, before
address@hidden
address@hidden deffn
+
address@hidden {Function Reference} print_section_footer $filehandle
address@hidden is the opened filehandle the function should write to.
+This function is called if the document is split at sections, before
address@hidden
address@hidden deffn
+
address@hidden $PRE_BODY_CLOSE
+In HTML, it is possible to add text just before the @code{</body>}
+element with the variable @code{$PRE_BODY_CLOSE}. Nothing is added
+by default. If @code{PROGRAM_NAME_IN_FOOTER} is set, the date and the
+program name that generated the output manual is output in the footer.
+
address@hidden Special elements
address@hidden Customizing the special elements pages and files
+
address@hidden
+* Special elements content::
+* Special elements layout::
address@hidden menu
+
address@hidden Special elements content
address@hidden Customizing the content of the special elements pages
+
+The label for the special elements, except for the Top element
+is formatted according to the function reference @code{$misc_element_label}:
+
address@hidden {Function Reference} $misc_element_label misc_element_label
$identifier $page_name
address@hidden is the identifier associated with the special element.
address@hidden is the special element name. It should return a label that
+can be used for references to the special element.
address@hidden deftypefn
+
address@hidden
+* Top element text::
+* Contents and Overview text::
+* Footnotes text::
+* About text::
+* Title page::
address@hidden menu
+
address@hidden Top element text
address@hidden Top element text formatting
+
+The top element formatting is controlled by three function which also
+controls the layout of the top element page or section. The associated
+function references are:
+
address@hidden {Function Reference} print_Top_header $filehandle $begin_page
address@hidden is the opened filehandle the function should write to.
address@hidden is true if the element is the first in a page.
+This function should begin the Top element. At the time this function
+is called, the top element text has not been parsed.
address@hidden deffn
+
address@hidden {Function Reference} print_Top $filehandle $has_top_heading
address@hidden is the opened filehandle the function should write to.
address@hidden is true if there is a @code{@@heading} command or
address@hidden@@titlefont} command appearing in the Top element text.
+This function should be used to format the Top element text and navigation
+panel.
address@hidden deffn
+
address@hidden {Function Reference} print_Top_footer $filehandle $end_page
address@hidden is the opened filehandle the function should write to.
address@hidden is true if the element is the last in a page.
+This function should end the Top element.
address@hidden deffn
+
address@hidden Contents and Overview text
address@hidden Table of contents and Short table of contents
+
+Two possibilities exist for the formatting of table of contents (and
+short table of contents). In the default case, the table of contents
+are in separate elements, at the end of the document if the document
+is unsplit or in separate files. This makes sense when
+menus are used for navigation. Another mode may be selected by
+setting @code{INLINE_CONTENTS}. In that case the table of contents
+are not output as separate elements but are instead output where the
+corresponding @@-command, for example @code{@@contents},
+is set. This behaviour is more consistent with @command{texi2dvi}.
+If @code{@@setcontentsaftertitlepage} appears in the document,
+and even if @code{INLINE_CONTENTS} is set, the table of contents are
+merged in the title (which isn't output in the default case, see
address@hidden page}).
+
+Several variables may be used to control the formatting of table of contents
+and short table of contents:
+
address@hidden @code
address@hidden $BEFORE_OVERVIEW
+The variable value is inserted before the short table of contents text.
address@hidden $AFTER_OVERVIEW
+The variable value is inserted after the short table of contents text.
address@hidden $BEFORE_TOC_LINES
+The variable value is inserted before the table of contents text.
address@hidden $AFTER_TOC_LINES
+The variable value is inserted after the table of contents text.
address@hidden $NO_BULLET_LIST_STYLE
+For HTML.
+This should contain a CSS style used for the list style when there
+is no bullet.
address@hidden $NO_BULLET_LIST_CLASS
+This should contain the class assocciated with the $NO_BULLET_LIST_STYLE
+css style.
address@hidden $NO_BULLET_LIST_ATTRIBUTE
+This should contain an attribute text used for the list element when there
+is no bullet. For example it is used in the tables of if they are
+formatted with a list.
address@hidden vtable
+
+More control on the table of contents and short table of contents formatting
+may be achieved by redefining a function with the following associated
+function reference:
+
address@hidden {Function Reference} toc_body \@@elements
address@hidden@@elements} is an array reference contining informations about
+all the elements of the document. Each of the entry of this array is an hash
+reference which entries correspond with different informations
+about the element. Interesting keys have the following meaning:
+
address@hidden @code
address@hidden top
+true if the element is the top element,
address@hidden index_page
+true if the element is an index page added because of index splitting,
address@hidden toc_level
+level of the element in the table of content. Highest level
+is 1 for the top element and for chapters, appendix and so on,
+2 for section, unnumberedsec and so on...
address@hidden tocid
+label used for reference linking to the element in table of
+contents,
address@hidden file
+the file containing the element, usefull to do href to that file
+in case the document is split,
address@hidden text
+text of the element, with section number,
address@hidden name
+text of the element, without section number.
address@hidden table
+
+This function doesn't return anything but should fill the array corresponding
+with the @code{$Texi2HTML::TOC_LINES} and @code{$Texi2HTML::OVERVIEW}
+references with the table of contents and short table of contents.
address@hidden lines}.
+
address@hidden deffn
+
+Another function reference is used to add a heading and a reference, to
+be used with @code{INLINE_CONTENTS} or merged in the title. Its output
+is not used when the table of contents are separate elements.
+
address@hidden {Function Reference} \@@inline_contents_lines inline_contents
$filehandle $command $element
+This function reference returns a reference on an array holding
+the lines containing the contents, heading and reference.
address@hidden is a reference on the currently opened file if
+the function is called because a @code{@@contents} or
address@hidden@@shortcontents} command was encountered, it is undef otherwise.
address@hidden is either @samp{contents} or @samp{shortcontents}.
address@hidden is a hash reference containing informations about the
+table of contents context. Relevant keys are:
address@hidden @code
address@hidden target
+The identifier associated with the table of contents, used for example
+to do references to the table of contents using href in @acronym{HTML}.
address@hidden id
+The identifier associated with the element, used to do labels. In
+general the same than the @code{target}, but not necessarily.
address@hidden file
+The file name containing the table of contents.
address@hidden table
+
address@hidden deftypefn
+
address@hidden Footnotes text
address@hidden Formatting of footnotes text
+
+The footnotes text is already formatting when @code{@@footnote} commands
+are expanded.
address@hidden FIXME readd when it is added
address@hidden @xref{Footnotes customization}.
+
address@hidden About text
address@hidden Formatting of about text
+
+The default about element contains an explaination of the buttons used
+in the document (@code{@@SECTION_BUTTONS}, @ref{Button specifications}) and
+an example locating the buttons targets in an example.
+The formatting of this text may be influenced by the following
+hashes and variables:
+
address@hidden @code
address@hidden $PRE_ABOUT
address@hidden $AFTER_ABOUT
+This variable may be a scalar or a function reference.
+If it is a scalar, the value is used.
+If this is a function reference it is expanded and the returned text is
+used. The text is added before or after the main about text.
address@hidden %BUTTONS_GOTO
+
+The keys of this hash are element labels (@pxref{Elements informations}).
+The value is the text associated with the element label in the about text.
+In the default case, the element of the hash are defined dynamically in
+that the @code{init_out} function reference (@pxref{Output initialization}).
+
+
address@hidden %BUTTONS_EXAMPLE
+
+The keys of this hash are element labels (@pxref{Elements informations}).
+The value is the text associated with the element label in the about
+example, typically a section number.
+
address@hidden table
+
+If this is not enough and you want to control exactly the formatting of
+the about text, you can redefine the function associated with the following
+function reference:
+
address@hidden {Function Reference} $about_text print_about
+This function should return the about text.
address@hidden deftypefn
+
address@hidden Title page
address@hidden Formatting of title page
+
address@hidden $Texi2HTML::TITLEPAGE
+The title page is first formatted using the text appearing in
+the @code{@@titlepage} section, and put in @code{$Texi2HTML::TITLEPAGE}
+(@pxref{Elements lines}). More formatting can be done using the following
+function reference:
+
address@hidden {Function Reference} titlepage
+This function should complete @code{$Texi2HTML::TITLEPAGE}.
address@hidden deffn
+
+In the default case, in this function the title is output if
+there is no titlepage, the table of contents and short
+table of contents are also added if they are to be output and
address@hidden@@setcontentsaftertitlepage}
+or @code{@@setshortcontentsaftertitlepage} appear in the document
+(@pxref{Contents and Overview text}).
+
+The resulting title page output is used in the document if
address@hidden and @code{SHOW_TITLE} are set.
+
address@hidden Special elements layout
address@hidden Customizing the layout of the special element pages
+
+The formatting of each of the special pages, or section in case
+the document is not split, is controlled by a function.
+The associated function reference is called accordingly:
+
address@hidden @code
address@hidden print_Top
address@hidden print_Top_header
address@hidden print_Top_footer
+Formatting of top element page or section. It is also used for the formatting
+of the top element text (@pxref{Top element text}).
address@hidden print_Toc
+Formatting of table of contents page or section.
address@hidden print_Overview
+Formatting of short table of contents page or section.
address@hidden print_About
+Formatting of about (help) page or section.
address@hidden print_Footnotes
+Formatting of footnotes section or page in case footnotes are on a
+separated page or the document is not split.
address@hidden ftable
+
+In the default case, @code{$print_Top} calls @code{$print_Top_header} for
+the header and @code{$print_Top_footer} for the footer of top element.
+All the other function call @code{$print_misc} which in turn calls
address@hidden for the headers and @code{$print_misc_footer}
+for the footers.
+
address@hidden File and target names
address@hidden Customizing the file and target names
+
address@hidden File names
+
+It is possible to specify the file names with more control than with the
+command line options (@option{--output}). The configuration variables
address@hidden, @code{TOP_FILE} and @code{TOC_FILE} may be used.
+The extension may also be overriden by the configuration variable
address@hidden
+value. The variable should be @code{undef} if no extension is
+to be added.
+
+Two function references enable
+further customization. One is especially usefull in case
address@hidden is true
+and it is used to customize the node file name.
+
address@hidden {Function Reference} $node_file node_file_name \%node
address@hidden is a hash reference with the following interesting keys (there
+are much more keys):
address@hidden @code
address@hidden texi
+The texinfo node name.
address@hidden with_section
+True if associated with a section.
address@hidden table
+The result is the node file name @var{$node_file}.
address@hidden deftypefn
+
+The other is used to
+customize the file names associated with each element, and the
+name of the file associated with the special elements.
address@hidden different elements}.
+
address@hidden {Function Reference} $file element_file_name \%element $type
$docu_name
address@hidden is undefined for the special elements (about, overview,
+table of contents, footnotes).
+Otherwise it is a hash reference with the following interesting keys (there
+are much more keys):
address@hidden @code
address@hidden texi
+The texinfo element name.
address@hidden number
+The number associated with a section.
address@hidden doc_nr
+A number incremented whenever a new file should begin, based on how the
+document is split (@pxref{Splitting output}).
address@hidden text
+The element text.
address@hidden name
+The element text without section number.
address@hidden table
address@hidden is empty for normal elements.
+For the top element it is @samp{top}, for the table of contents it
+is @samp{toc}, for the overview it is @samp{stoc}, for the
+footnotes it is @samp{foot} and for about is @samp{about}. If
+frames are used with @code{FRAMES}, the function reference
+is also called for @samp{frame}, the frame file name, and
address@hidden the table of content frame file name.
address@hidden is the basename of the texinfo manual.
+The result is the element or special element file name.
address@hidden deftypefn
+
address@hidden target names
+
+Similarly target and id may be set. The @dfn{id} is placed where the
+item is located, the @dfn{target} is used to construct references to
+that item. In general they should be equal, but not always, for example
+in the default case, the target for a section is the node id.
+The following function reference, is
+for target items (nodes, anchors, floats):
+
address@hidden {Function Reference} {($target,$id)} node_target_name \%node,
$default_target, $default_id
address@hidden is the same as in the @code{node_file_name} function reference
+above.
address@hidden is the target already set (it is also
+in @code{$node->@{'target'@}}), and @var{$default_id} is similarly
+the id already set.
address@hidden deftypefn
+
+For element (@pxref{The different elements}), the function
+reference is:
+
address@hidden {Function Reference} {($target,$id)} element_target_name
\%element, $default_target, $default_id
+the @var{\%element} is the same than in @code{element_file_name}, and
address@hidden and @var{$default_id} are the target and id already set.
address@hidden deftypefn
+
+Placed items
+(floats, footnotes, index entries, anchors, contents,
+shortcontents and headings)
+file and target may also be set. In the default case, they should
+be rightly set, so be careful when changing them. The following
+function reference can be used:
+
address@hidden {Function Reference} {($target, $id, $file)}
placed_target_file_name \%placed_item, \%element, $default_target, $default_id,
$default_file, $context
address@hidden is a hash reference describing the placed item,
+in the same vein than above.
+the @var{\%element} is the same than in @code{element_file_name},
+corresponding with the element containing the placed item.
address@hidden, @var{default_id} and
address@hidden are the file, id and target already set.
address@hidden describes the context, it is empty in the normal cases,
+and can also be set to @samp{footnotes} if in footnotes, or to
address@hidden if the placed item is out of any element
+(typically in @code{@@titlepage}, @code{@@copying}).
address@hidden deftypefn
+
address@hidden %misc_pages_targets
+For special elements, the @code{%misc_pages_targets} hash is
+used to set the target and id. The possibilities for the keys
+are @samp{Overview}, @samp{Contents}, @samp{Footnotes} and @samp{About}.
+
+
address@hidden External index files
address@hidden Generation of external files for index entries
+
address@hidden FIXME Here? of after Index list?
address@hidden Within the document, @code{@@printindex} commands are expanded
as explained
address@hidden in @ref{Index list}.
+In case you want to do something special with index
+entries, outside of the document, you should first set the configuration
+variable @code{IDX_SUMMARY} true. After that some function reference
+will be called for each non empty index. For each index there are 3
+function references, one called for initialization, one called for each
+index entry and the last one called for finalization.
+
address@hidden {Function Reference} index_summary_file_begin $index_name
$is_printed $manual_name
address@hidden is the two letters name for the index. This function
+is called for each index appearing in the document, before
address@hidden
address@hidden is true if there is a @code{@@printindex} for that index.
address@hidden is the manual basename.
address@hidden deffn
+
address@hidden {Function Reference} index_summary_file_entry $index_name
$entry_text $entry_reference $formatted_entry $texi_entry
$entry_element_reference $entry_element_header $is_printed $manual_name
+This function is called for each entry of an index. @var{index_name} is the
+name of the index. @var{$entry_text} is the entry in plain text,
address@hidden is the index entry formatted, @var{$texi_entry} is the
+entry with texinfo commands. @var{$entry_reference} is the reference placed
+at the index entry place, in the form @samp{file#id}.
address@hidden is the formatted header of the element containing
+the index entry. @var{entry_element_header} is the reference to the
+beginning of the element containing the index entry, in the form
address@hidden
address@hidden is true if there is a @code{@@printindex} for that index.
address@hidden is the manual basename.
address@hidden deffn
+
address@hidden {Function Reference} index_summary_file_end $index_name
$is_printed $manual_name
address@hidden is the two letters name for the index. This function
+is called for each index appearing in the document, after
address@hidden
address@hidden is true if there is a @code{@@printindex} for that index.
address@hidden is the manual basename.
address@hidden deffn
+
address@hidden Customizing CSS
address@hidden Customizing the CSS lines
+
address@hidden @acronym{CSS}
+
+The @code{NO_CSS} configuration option turns CSS support off.
+Instead of CSS lines output at the document beginning, they may be added
+to each of the HTML attributes, if @code{INLINE_CSS} is set.
+The configuration variable variable holds the CSS
+specification lines in case CSS is not inline.
address@hidden %css_map
+It is possible to modify the CSS lines by modifying
+the entries or adding to the @code{%css_map} hash. Each key is a CSS
+selector, the corresponding value is a style string.
+
+It is also possible to change completely the way @code{CSS_LINES}
+are generated by redefining the following function reference:
+
address@hidden {Function Reference} css_lines \@@import_lines \@@rule_lines
+This function should be used to set the variable
address@hidden
address@hidden@@import_lines} are the @code{@@import} lines of the
+files specified with @option{--include-css},
+and @var{\@@rule_lines} are the css commands lines of these files.
address@hidden deffn
+
@node Command List
@appendix @@-Command List
@@ -20341,7 +21783,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.261 2010/07/22 00:39:49 karl Exp $
+$Id: texinfo.txi,v 1.262 2010/07/23 06:36:58 pertusus 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}
@@ -20420,7 +21862,7 @@
@verbatim
\input texinfo @c -*-texinfo-*-
address@hidden $Id: texinfo.txi,v 1.261 2010/07/22 00:39:49 karl Exp $
address@hidden $Id: texinfo.txi,v 1.262 2010/07/23 06:36:58 pertusus Exp $
@comment %**start of header
@setfilename sample.info
@include version.texi
Index: doc/version.texi
===================================================================
RCS file: /sources/texinfo/texinfo/doc/version.texi,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -b -r1.83 -r1.84
--- doc/version.texi 19 Jul 2010 23:48:18 -0000 1.83
+++ doc/version.texi 23 Jul 2010 06:36:58 -0000 1.84
@@ -1,4 +1,4 @@
address@hidden UPDATED 20 July 2010
address@hidden UPDATED 23 July 2010
@set UPDATED-MONTH July 2010
@set EDITION 4.13
@set VERSION 4.13