This is texi2any_internals.info, produced by texi2any version 7.2+dev
from texi2any_internals.texi.

INFO-DIR-SECTION Texinfo documentation system
START-INFO-DIR-ENTRY
* texi2any modules: (texi2any_internals).
                                Texinfo Perl modules used in texi2any
END-INFO-DIR-ENTRY


File: texi2any_internals.info,  Node: Top,  Next: Texinfo::Commands,  Up: (dir)

Texinfo modules documentation
*****************************

* Menu:

* Texinfo::Commands::
* Texinfo::Common::
* Texinfo::Parser::
* Texinfo::Document::
* Texinfo::ManipulateTree::
* Texinfo::Structuring::
* Texinfo::Report::
* Texinfo::Translations::
* Texinfo::Transformations::
* Texinfo::Indices::
* Texinfo::OutputUnits::
* Texinfo::Convert::Texinfo::
* Texinfo::Convert::Utils::
* Texinfo::Convert::Unicode::
* Texinfo::Convert::NodeNameNormalization::
* Texinfo::Convert::Text::
* Texinfo::Convert::Converter::
* Texinfo::Convert::Info::
* Texinfo::Convert::HTML::
* Texinfo::Convert::DocBook::
* Texinfo::Convert::TexinfoMarkup::
* Texinfo::Convert::TexinfoXML::
* Texinfo::Convert::Plaintext::

 -- The Detailed Node Listing --

Texinfo::Commands

* Texinfo::Commands NAME::
* Texinfo::Commands SYNOPSIS::
* Texinfo::Commands NOTES::
* Texinfo::Commands DESCRIPTION::
* Texinfo::Commands @-COMMAND INFORMATION::
* Texinfo::Commands @-COMMAND CLASSES::
* Texinfo::Commands SEE ALSO::
* Texinfo::Commands AUTHOR::
* Texinfo::Commands COPYRIGHT AND LICENSE::

Texinfo::Common

* Texinfo::Common NAME::
* Texinfo::Common SYNOPSIS::
* Texinfo::Common NOTES::
* Texinfo::Common DESCRIPTION::
* Texinfo::Common MISC INFORMATION::
* Texinfo::Common @-COMMAND INFORMATION::
* Texinfo::Common METHODS::
* Texinfo::Common SEE ALSO::
* Texinfo::Common AUTHOR::
* Texinfo::Common COPYRIGHT AND LICENSE::

Texinfo::Parser

* Texinfo::Parser NAME::
* Texinfo::Parser SYNOPSIS::
* Texinfo::Parser NOTES::
* Texinfo::Parser DESCRIPTION::
* Texinfo::Parser METHODS::
* Texinfo::Parser TEXINFO TREE::
* Texinfo::Parser SEE ALSO::
* Texinfo::Parser AUTHOR::
* Texinfo::Parser COPYRIGHT AND LICENSE::

Texinfo::Parser METHODS

* Texinfo::Parser Initialization::
* Texinfo::Parser Parsing Texinfo text::

TEXINFO TREE

* Texinfo::Parser Element keys::
* Texinfo::Parser Element types::
* Texinfo::Parser Information available in the info key::
* Texinfo::Parser Information available in the extra key::

Element types

* Texinfo::Parser Types for command elements::
* Texinfo::Parser Types for text elements::
* Texinfo::Parser Tree container elements::
* Texinfo::Parser Types of container elements::

Information available in the ‘extra’ key

* Texinfo::Parser Extra keys available for more than one @-command::
* Texinfo::Parser Extra keys specific of certain @-commands or containers::

Texinfo::Document

* Texinfo::Document NAME::
* Texinfo::Document SYNOPSIS::
* Texinfo::Document NOTES::
* Texinfo::Document DESCRIPTION::
* Texinfo::Document METHODS::
* Texinfo::Document SEE ALSO::
* Texinfo::Document AUTHOR::
* Texinfo::Document COPYRIGHT AND LICENSE::

Texinfo::Document METHODS

* Texinfo::Document Getting document information::
* Texinfo::Document Merging and sorting indices::
* Texinfo::Document Getting errors and error registering object::
* Texinfo::Document Getting customization options values registered in document::
* Texinfo::Document Registering document and information in document::
* Texinfo::Document Methods for Perl and C code interactions::

Texinfo::ManipulateTree

* Texinfo::ManipulateTree NAME::
* Texinfo::ManipulateTree SYNOPSIS::
* Texinfo::ManipulateTree NOTES::
* Texinfo::ManipulateTree DESCRIPTION::
* Texinfo::ManipulateTree METHODS::
* Texinfo::ManipulateTree SEE ALSO::
* Texinfo::ManipulateTree AUTHOR::
* Texinfo::ManipulateTree COPYRIGHT AND LICENSE::

Texinfo::Structuring

* Texinfo::Structuring NAME::
* Texinfo::Structuring SYNOPSIS::
* Texinfo::Structuring NOTES::
* Texinfo::Structuring DESCRIPTION::
* Texinfo::Structuring METHODS::
* Texinfo::Structuring SEE ALSO::
* Texinfo::Structuring AUTHOR::
* Texinfo::Structuring COPYRIGHT AND LICENSE::

Texinfo::Report

* Texinfo::Report NAME::
* Texinfo::Report SYNOPSIS::
* Texinfo::Report NOTES::
* Texinfo::Report DESCRIPTION::
* Texinfo::Report METHODS::
* Texinfo::Report AUTHOR::
* Texinfo::Report COPYRIGHT AND LICENSE::

Texinfo::Translations

* Texinfo::Translations NAME::
* Texinfo::Translations SYNOPSIS::
* Texinfo::Translations NOTES::
* Texinfo::Translations DESCRIPTION::
* Texinfo::Translations METHODS::
* Texinfo::Translations SEE ALSO::
* Texinfo::Translations AUTHOR::
* Texinfo::Translations COPYRIGHT AND LICENSE::

Texinfo::Transformations

* Texinfo::Transformations NAME::
* Texinfo::Transformations NOTES::
* Texinfo::Transformations DESCRIPTION::
* Texinfo::Transformations METHODS::
* Texinfo::Transformations SEE ALSO::
* Texinfo::Transformations AUTHOR::
* Texinfo::Transformations COPYRIGHT AND LICENSE::

Texinfo::Indices

* Texinfo::Indices NAME::
* Texinfo::Indices SYNOPSIS::
* Texinfo::Indices NOTES::
* Texinfo::Indices DESCRIPTION::
* Texinfo::Indices METHODS::
* Texinfo::Indices SEE ALSO::
* Texinfo::Indices AUTHOR::
* Texinfo::Indices COPYRIGHT AND LICENSE::

Texinfo::OutputUnits

* Texinfo::OutputUnits NAME::
* Texinfo::OutputUnits SYNOPSIS::
* Texinfo::OutputUnits NOTES::
* Texinfo::OutputUnits DESCRIPTION::
* Texinfo::OutputUnits METHODS::
* Texinfo::OutputUnits SEE ALSO::
* Texinfo::OutputUnits AUTHOR::
* Texinfo::OutputUnits COPYRIGHT AND LICENSE::

Texinfo::OutputUnits METHODS

* Texinfo::OutputUnits Output units creation::
* Texinfo::OutputUnits Grouping output units in pages::
* Texinfo::OutputUnits Setting output units directions::

Texinfo::Convert::Texinfo

* Texinfo::Convert::Texinfo NAME::
* Texinfo::Convert::Texinfo SYNOPSIS::
* Texinfo::Convert::Texinfo NOTES::
* Texinfo::Convert::Texinfo DESCRIPTION::
* Texinfo::Convert::Texinfo METHODS::
* Texinfo::Convert::Texinfo AUTHOR::
* Texinfo::Convert::Texinfo COPYRIGHT AND LICENSE::

Texinfo::Convert::Utils

* Texinfo::Convert::Utils NAME::
* Texinfo::Convert::Utils SYNOPSIS::
* Texinfo::Convert::Utils NOTES::
* Texinfo::Convert::Utils DESCRIPTION::
* Texinfo::Convert::Utils METHODS::
* Texinfo::Convert::Utils SEE ALSO::
* Texinfo::Convert::Utils AUTHOR::
* Texinfo::Convert::Utils COPYRIGHT AND LICENSE::

Texinfo::Convert::Unicode

* Texinfo::Convert::Unicode NAME::
* Texinfo::Convert::Unicode SYNOPSIS::
* Texinfo::Convert::Unicode NOTES::
* Texinfo::Convert::Unicode DESCRIPTION::
* Texinfo::Convert::Unicode METHODS::
* Texinfo::Convert::Unicode AUTHOR::
* Texinfo::Convert::Unicode COPYRIGHT AND LICENSE::

Texinfo::Convert::NodeNameNormalization

* Texinfo::Convert::NodeNameNormalization NAME::
* Texinfo::Convert::NodeNameNormalization SYNOPSIS::
* Texinfo::Convert::NodeNameNormalization NOTES::
* Texinfo::Convert::NodeNameNormalization DESCRIPTION::
* Texinfo::Convert::NodeNameNormalization METHODS::
* Texinfo::Convert::NodeNameNormalization AUTHOR::
* Texinfo::Convert::NodeNameNormalization COPYRIGHT AND LICENSE::

Texinfo::Convert::Text

* Texinfo::Convert::Text NAME::
* Texinfo::Convert::Text SYNOPSIS::
* Texinfo::Convert::Text NOTES::
* Texinfo::Convert::Text DESCRIPTION::
* Texinfo::Convert::Text METHODS::
* Texinfo::Convert::Text AUTHOR::
* Texinfo::Convert::Text COPYRIGHT AND LICENSE::

Texinfo::Convert::Converter

* Texinfo::Convert::Converter NAME::
* Texinfo::Convert::Converter SYNOPSIS::
* Texinfo::Convert::Converter NOTES::
* Texinfo::Convert::Converter DESCRIPTION::
* Texinfo::Convert::Converter METHODS::
* Texinfo::Convert::Converter SEE ALSO::
* Texinfo::Convert::Converter AUTHOR::
* Texinfo::Convert::Converter COPYRIGHT AND LICENSE::

Texinfo::Convert::Converter METHODS

* Texinfo::Convert::Converter Converter Initialization::
* Texinfo::Convert::Converter Conversion::
* Texinfo::Convert::Converter Getting and setting customization variables::
* Texinfo::Convert::Converter Registering error and warning messages::
* Texinfo::Convert::Converter Translations in output documents::
* Texinfo::Convert::Converter Index sorting::
* Texinfo::Convert::Converter Conversion to XML::
* Texinfo::Convert::Converter Helper methods::

Texinfo::Convert::Info

* Texinfo::Convert::Info NAME::
* Texinfo::Convert::Info SYNOPSIS::
* Texinfo::Convert::Info NOTES::
* Texinfo::Convert::Info DESCRIPTION::
* Texinfo::Convert::Info METHODS::
* Texinfo::Convert::Info AUTHOR::
* Texinfo::Convert::Info COPYRIGHT AND LICENSE::

Texinfo::Convert::HTML

* Texinfo::Convert::HTML NAME::
* Texinfo::Convert::HTML SYNOPSIS::
* Texinfo::Convert::HTML NOTES::
* Texinfo::Convert::HTML DESCRIPTION::
* Texinfo::Convert::HTML METHODS::
* Texinfo::Convert::HTML AUTHOR::
* Texinfo::Convert::HTML COPYRIGHT AND LICENSE::

Texinfo::Convert::DocBook

* Texinfo::Convert::DocBook NAME::
* Texinfo::Convert::DocBook SYNOPSIS::
* Texinfo::Convert::DocBook NOTES::
* Texinfo::Convert::DocBook DESCRIPTION::
* Texinfo::Convert::DocBook METHODS::
* Texinfo::Convert::DocBook AUTHOR::
* Texinfo::Convert::DocBook COPYRIGHT AND LICENSE::

Texinfo::Convert::TexinfoMarkup

* Texinfo::Convert::TexinfoMarkup NAME::
* Texinfo::Convert::TexinfoMarkup SYNOPSIS::
* Texinfo::Convert::TexinfoMarkup NOTES::
* Texinfo::Convert::TexinfoMarkup DESCRIPTION::
* Texinfo::Convert::TexinfoMarkup METHODS::
* Texinfo::Convert::TexinfoMarkup AUTHOR::
* Texinfo::Convert::TexinfoMarkup SEE ALSO::
* Texinfo::Convert::TexinfoMarkup COPYRIGHT AND LICENSE::

Texinfo::Convert::TexinfoMarkup METHODS

* Texinfo::Convert::TexinfoMarkup Markup formatting methods defined by subclasses::
* Texinfo::Convert::TexinfoMarkup Formatting state information::

Texinfo::Convert::TexinfoXML

* Texinfo::Convert::TexinfoXML NAME::
* Texinfo::Convert::TexinfoXML SYNOPSIS::
* Texinfo::Convert::TexinfoXML NOTES::
* Texinfo::Convert::TexinfoXML DESCRIPTION::
* Texinfo::Convert::TexinfoXML METHODS::
* Texinfo::Convert::TexinfoXML AUTHOR::
* Texinfo::Convert::TexinfoXML COPYRIGHT AND LICENSE::

Texinfo::Convert::Plaintext

* Texinfo::Convert::Plaintext NAME::
* Texinfo::Convert::Plaintext SYNOPSIS::
* Texinfo::Convert::Plaintext NOTES::
* Texinfo::Convert::Plaintext DESCRIPTION::
* Texinfo::Convert::Plaintext METHODS::
* Texinfo::Convert::Plaintext AUTHOR::
* Texinfo::Convert::Plaintext COPYRIGHT AND LICENSE::
* Index::


File: texi2any_internals.info,  Node: Texinfo::Commands,  Next: Texinfo::Common,  Prev: Top,  Up: Top

1 Texinfo::Commands
*******************

* Menu:

* Texinfo::Commands NAME::
* Texinfo::Commands SYNOPSIS::
* Texinfo::Commands NOTES::
* Texinfo::Commands DESCRIPTION::
* Texinfo::Commands @-COMMAND INFORMATION::
* Texinfo::Commands @-COMMAND CLASSES::
* Texinfo::Commands SEE ALSO::
* Texinfo::Commands AUTHOR::
* Texinfo::Commands COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Commands NAME,  Next: Texinfo::Commands SYNOPSIS,  Up: Texinfo::Commands

1.1 Texinfo::Commands NAME
==========================

Texinfo::Commands - Classification of commands


File: texi2any_internals.info,  Node: Texinfo::Commands SYNOPSIS,  Next: Texinfo::Commands NOTES,  Prev: Texinfo::Commands NAME,  Up: Texinfo::Commands

1.2 Texinfo::Commands SYNOPSIS
==============================

  use Texinfo::Commands;
  if ($Texinfo::Commands::accent_commands{$a_command}) {
    print STDERR "$a_command is an accent command\n";
  }


File: texi2any_internals.info,  Node: Texinfo::Commands NOTES,  Next: Texinfo::Commands DESCRIPTION,  Prev: Texinfo::Commands SYNOPSIS,  Up: Texinfo::Commands

1.3 Texinfo::Commands NOTES
===========================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Commands DESCRIPTION,  Next: Texinfo::Commands @-COMMAND INFORMATION,  Prev: Texinfo::Commands NOTES,  Up: Texinfo::Commands

1.4 Texinfo::Commands DESCRIPTION
=================================

Texinfo::Commands holds a few hashes with information on @-commands and
hashes classifying Texinfo @-commands.


File: texi2any_internals.info,  Node: Texinfo::Commands @-COMMAND INFORMATION,  Next: Texinfo::Commands @-COMMAND CLASSES,  Prev: Texinfo::Commands DESCRIPTION,  Up: Texinfo::Commands

1.5 @-COMMAND INFORMATION
=========================

Hashes are defined as ‘our’ variables, and are therefore available
outside of the module.

%index_names

     Hash describing the default Texinfo indices.  The format of this
     hash is described in *note
     ‘Texinfo::Document::indices_information’: Texinfo::Document
     $indices_information = $document->indices_information().


File: texi2any_internals.info,  Node: Texinfo::Commands @-COMMAND CLASSES,  Next: Texinfo::Commands SEE ALSO,  Prev: Texinfo::Commands @-COMMAND INFORMATION,  Up: Texinfo::Commands

1.6 @-COMMAND CLASSES
=====================

Hashes are defined as ‘our’ variables, and are therefore available
outside of the module.

   The key of the hashes are @-command names without the @.  The
following hashes are available:

%accent_commands

     Accent @-commands taking an argument, like ‘@'’ or ‘@ringaccent’,
     including ‘@dotless’ and ‘@tieaccent’.

%block_commands

     Commands delimiting a block with a closing ‘@end’.  The values are:

     _conditional_

          ‘@if*’ commands;

     _def_

          Definition commands like ‘@deffn’;

     _float_

          ‘@float’;

     _format_raw_

          raw output format commands such as ‘@html’ or ‘@info’;

     _item_container_

          commands with ‘@item’ containing any content, ‘@itemize’ and
          ‘@enumerate’;

     _item_line_

          commands like ‘@table’ in which the ‘@item’ argument is on its
          line;

     _menu_

          menu @-commands, ‘@menu’, ‘@detailmenu’ and ‘@direntry’;

     _math_

          Math block commands, like ‘@displaymath’.

     _multitable_

          ‘@multitable’;

     _other_

          The remaining block commands.

     _preformatted_

          Commands whose content should not be filled, like ‘@example’
          or ‘@display’.

     _quotation_

          Commands like ‘@quotation’.

     _raw_

          @-commands that have no expansion of @-commands in their
          bodies (‘@macro’, ‘@verbatim’ and ‘@ignore’);

     _region_

          Commands delimiting a region of the document out of the main
          processing: ‘@titlepage’, ‘@copying’, ‘@documentdescription’.

%blockitem_commands

     Block commands containing ‘@item’ with possible content before an
     ‘@item’, like ‘@itemize’, ‘@table’ or ‘@multitable’.

%brace_code_commands

     Brace commands that have their argument in code style, like
     ‘@code’.

%brace_commands

     The commands that take braces.  Value is _noarg_ for brace commands
     without argument such as ‘@AA’, ‘@TeX’, or ‘@equiv’.  Other values
     include _accent_, _arguments_, _context_ and other values.

%close_paragraph_commands

     Commands that stop a paragraph.  Root commands are not specified
     here, but they also close paragraphs.

%commands_args_number

     Set to the number of arguments separated by commas that may appear
     in braces or on the @-command line.  That means 0 or unset for most
     block commands, including ‘@example’ which has an unlimited
     (variadic) number of arguments, 1 for ‘@quotation’, 2 for ‘@float’,
     1 for most brace commands, 2 for ‘@email’ and ‘@abbr’, 5 for
     ‘@image’ and ‘@ref’.

     Values are not necessarily set for all the commands, as commands
     are also classified by type of command, some type of commands
     implying a number of arguments, and the number of arguments may not
     be set if it corresponds to the default (0 for block commands, 1
     for other commands that take arguments).

%contain_basic_inline_commands

     Commands containing simple text only, much like paragraph text, but
     without ‘@ref’, ‘@footnote’, ‘@titlefont’, ‘@anchor’ nor ‘@verb’.

%contain_plain_text_commands

     Commands accepting only plain text with accent, symbol and glyph
     commands.

%def_commands

     Definition commands.

%default_index_commands

     Index entry commands corresponding to default indices.  For example
     ‘@cindex’.

%explained_commands

     @-commands whose second argument explain first argument and further
     @-command call without first argument, as ‘@abbr’ and ‘@acronym’.

%formattable_line_commands

     Line commands which may be formatted as text, but that require
     constructing some replacement text, for example ‘@printindex’,
     ‘@need’ or ‘@verbatiminclude’.  ‘@contents’ and ‘@shortcontents’
     are not in this hash, since they are in a corresponding situation
     only when the tables of contents are formatted where the commands
     are.

%formatted_nobrace_commands

     Commands not taking brace formatted as text or with text in the
     main document body, corresponding to symbol commands such as ‘@@’
     or ‘@:’ and commands such as ‘@item’.  @-commands appearing only in
     headers are not in this hash, but in in
     ‘%in_heading_spec_commands’.

%formatted_line_commands

     Line commands which arguments may be formatted as text, such as
     ‘@center’, ‘@author’, ‘@item’, ‘@node’, ‘@chapter’ and other.
     Index commands may be formatted as text too, but they may be added
     with ‘@def*index’, therefore they are not in that hash.  Also, in
     general, they are not formatted as text where they appear, only
     when an index is printed.

%heading_spec_commands

     @-commands used to specify custom headings, like ‘@everyheading’.

%in_heading_spec_commands

     Special @-commands appearing in custom headings, such as
     ‘@thischapter’, ‘@thistitle’ or ‘@|’.

%in_index_commands

     @-commands only valid in index entries, such as ‘@sortas’ or
     ‘@subentry’.

%inline_conditional_commands

%inline_format_commands

     Inline conditional commands, like ‘@inlineifclear’, and inline
     format commands like ‘@inlineraw’ and ‘@inlinefmt’.

%letter_no_arg_commands

     @-commands with braces but no argument corresponding to letters,
     like ‘@AA{}’ or ‘@ss{}’ or ‘@o{}’.

%math_commands

     @-commands which contains math, like ‘@math’ or ‘@displaymath’.

%line_commands

     Commands that do not take braces, take arguments on the command
     line and are not block commands either, like ‘@node’, ‘@chapter’,
     ‘@cindex’, ‘@deffnx’, ‘@end’, ‘@footnotestyle’, ‘@set’,
     ‘@settitle’, ‘@itemx’, ‘@definfoenclose’, ‘@comment’ and many
     others.

     Note that ‘@item’ is in ‘%line_commands’ for its role in ‘@table’
     and similar @-commands.

%no_paragraph_commands

     Commands that do not start a paragraph.

%nobrace_commands

     Command that do not take braces, do not have argument on their line
     and are not block commands either.  The value is _symbol_ for
     single character non-alphabetical @-commands such as ‘@@’, ‘@ ’ or
     ‘@:’.  Other commands in that hash include ‘@indent’, ‘@tab’ or
     ‘@thissection’.

     Note that ‘@item’ is in ‘%nobrace_commands’ for its role in
     ‘@multitable’, ‘@itemize’ and ‘@enumerate’.

%non_formatted_block_commands

     Block commands not formatted as text, such as ‘@ignore’ or
     ‘@macro’.

%non_formatted_brace_commands

     Brace commands that are not immediately replaced with text, such as
     ‘anchor’, ‘caption’, ‘errormsg’ and others.

%preamble_commands

     @-commands that do not stop the preamble.

%preformatted_commands

%preformatted_code_commands

     _%preformatted_commands_ is for commands whose content should not
     be filled, like ‘@example’ or ‘@display’.  If the command is meant
     for code, it is also in _%preformatted_code_commands_, like
     ‘@example’.

%ref_commands

     Cross reference @-command referencing nodes, like ‘@xref’ or
     ‘@link’.

%root_commands

     Commands that are at the root of a Texinfo document, namely ‘@node’
     and sectioning commands, except heading commands like ‘@heading’.

%sectioning_heading_commands

     All the sectioning and heading commands.

%variadic_commands

     Commands with unlimited arguments, like ‘@example’.


File: texi2any_internals.info,  Node: Texinfo::Commands SEE ALSO,  Next: Texinfo::Commands AUTHOR,  Prev: Texinfo::Commands @-COMMAND CLASSES,  Up: Texinfo::Commands

1.7 Texinfo::Commands SEE ALSO
==============================

*note Texinfo::Parser: Texinfo::Parser NAME.


File: texi2any_internals.info,  Node: Texinfo::Commands AUTHOR,  Next: Texinfo::Commands COPYRIGHT AND LICENSE,  Prev: Texinfo::Commands SEE ALSO,  Up: Texinfo::Commands

1.8 Texinfo::Commands AUTHOR
============================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Commands COPYRIGHT AND LICENSE,  Prev: Texinfo::Commands AUTHOR,  Up: Texinfo::Commands

1.9 Texinfo::Commands COPYRIGHT AND LICENSE
===========================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Common,  Next: Texinfo::Parser,  Prev: Texinfo::Commands,  Up: Top

2 Texinfo::Common
*****************

* Menu:

* Texinfo::Common NAME::
* Texinfo::Common SYNOPSIS::
* Texinfo::Common NOTES::
* Texinfo::Common DESCRIPTION::
* Texinfo::Common MISC INFORMATION::
* Texinfo::Common @-COMMAND INFORMATION::
* Texinfo::Common METHODS::
* Texinfo::Common SEE ALSO::
* Texinfo::Common AUTHOR::
* Texinfo::Common COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Common NAME,  Next: Texinfo::Common SYNOPSIS,  Up: Texinfo::Common

2.1 Texinfo::Common NAME
========================

Texinfo::Common - Texinfo modules common data and miscellaneous methods


File: texi2any_internals.info,  Node: Texinfo::Common SYNOPSIS,  Next: Texinfo::Common NOTES,  Prev: Texinfo::Common NAME,  Up: Texinfo::Common

2.2 Texinfo::Common SYNOPSIS
============================

  use Texinfo::Common;


  my @commands_to_collect = ('math');
  my $collected_commands
    = Texinfo::Common::collect_commands_in_tree($document_root,
                                             \@commands_to_collect);

  my $package_version
    = Texinfo::Common::get_build_constant('PACKAGE_AND_VERSION');


File: texi2any_internals.info,  Node: Texinfo::Common NOTES,  Next: Texinfo::Common DESCRIPTION,  Prev: Texinfo::Common SYNOPSIS,  Up: Texinfo::Common

2.3 Texinfo::Common NOTES
=========================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Common DESCRIPTION,  Next: Texinfo::Common MISC INFORMATION,  Prev: Texinfo::Common NOTES,  Up: Texinfo::Common

2.4 Texinfo::Common DESCRIPTION
===============================

Texinfo::Common holds hashes with miscellaneous information and some
hashes with information on Texinfo @-commands, as well as miscellaneous
methods.


File: texi2any_internals.info,  Node: Texinfo::Common MISC INFORMATION,  Next: Texinfo::Common @-COMMAND INFORMATION,  Prev: Texinfo::Common DESCRIPTION,  Up: Texinfo::Common

2.5 MISC INFORMATION
====================

Hashes are defined as ‘our’ variables, and are therefore available
outside of the module.

   Values defined for a Texinfo build independently of any document or
output format are available by calling ‘get_build_constant’:

$value = get_build_constant($name)

     The following build constants are available:

     PACKAGE

     PACKAGE_CONFIG

     PACKAGE_AND_VERSION

     PACKAGE_AND_VERSION_CONFIG

     PACKAGE_NAME

     PACKAGE_NAME_CONFIG

     PACKAGE_VERSION

     PACKAGE_VERSION_CONFIG

     PACKAGE_URL

     PACKAGE_URL_CONFIG

          Texinfo package name and versions.  Values of build constants
          without ‘_CONFIG’ appended are set by configure.  For each
          variable set by configure there is another one with ‘_CONFIG’
          appended to the name set to the same value, to match the name
          of the macros set in C. So, for example
          ‘PACKAGE_VERSION_CONFIG’ value is the same as
          ‘PACKAGE_VERSION’, set to the ‘PACKAGE_VERSION’ value set by
          configure.

%texinfo_output_formats

     Cannonical output formats that have associated conditionals.  In
     practice corresponds to ‘format_raw’ ‘%block_commands’ plus ‘info’
     and ‘plaintext’.

   TODO: undocumented %null_device_file
%default_parser_customization_values %multiple_at_command_options
%unique_at_command_options %converter_cmdline_options
%default_main_program_customization_options
%converter_customization_options %document_settable_at_commands %def_map
%command_structuring_level %level_to_structuring_command
%encoding_name_conversion_map %text_brace_no_arg_commands


File: texi2any_internals.info,  Node: Texinfo::Common @-COMMAND INFORMATION,  Next: Texinfo::Common METHODS,  Prev: Texinfo::Common MISC INFORMATION,  Up: Texinfo::Common

2.6 @-COMMAND INFORMATION
=========================

Hashes are defined as ‘our’ variables, and are therefore available
outside of the module.

   The key of the hashes are @-command names without the @.  The
following hashes are available:

%all_commands

     All the @-commands.

%def_aliases

%def_no_var_arg_commands

     ‘%def_aliases’ associates an aliased command to the original
     command, for example ‘defun’ is associated to ‘deffn’.

     ‘%def_no_var_arg_commands’ associates a definition command name
     with a true value if the _argument_ on the definition command line
     can contain non-metasyntactic variables.  For instance, it is true
     for ‘deftypevr’ but false for ‘defun’, since ‘@defun’ _argument_ is
     supposed to contain metasyntactic variables only.

%nobrace_symbol_text

     Values are ASCII representation of single character
     non-alphabetical commands without brace such as ‘*’ or ‘:’.  The
     value may be an empty string.

%small_block_associated_command

     Associate small command like ‘smallexample’ to the regular command
     ‘example’.


File: texi2any_internals.info,  Node: Texinfo::Common METHODS,  Next: Texinfo::Common SEE ALSO,  Prev: Texinfo::Common @-COMMAND INFORMATION,  Up: Texinfo::Common

2.7 Texinfo::Common METHODS
===========================

Two methods are exported in the default case for Texinfo modules
messages translation in the Uniforum gettext framework, ‘__’ and ‘__p’.

   The Texinfo tree and Texinfo tree elements used in argument of some
functions are documented in *note Texinfo::Parser TEXINFO TREE::.  When
customization information is needed, an object that defines ‘set_conf’
and/or ‘get_conf’ is expected, for example a converter inheriting from
‘Texinfo::Convert::Converter’, see *note Texinfo::Convert::Converter
Getting and setting customization variables::.

$translated_string = __($msgid)

$translated_string = __p($msgctxt, $msgid)

     Returns the _$msgid_ string translated in the Texinfo messages text
     domain.  ‘__p’ can be used instead of ‘__’ to pass a _$msgctxt_
     context string to provide translators with information on the
     string context when the string is short or if the translation could
     depend on the context.  ‘__’ corresponds to the ‘gettext’ function
     and ‘__p’ to the ‘pgettext’ function.

     It is not advised to use those functions in user-defined code.  It
     is not practical either, as the translatable strings marked by ‘__’
     or ‘__p’ need to be collected and added to the Texinfo messages
     domain.  This facility could only be used in user-defined code with
     translatable strings already present in the domain anyway.  In
     fact, these functions are documented mainly because they are
     automatically exported.

     See Locale::Messages (https://metacpan.org/pod/Locale::Messages),
     ‘gettext’ C interface
     (https://www.gnu.org/software/gettext/manual/html_node/gettext.html),
     Perl in GNU Gettext
     (https://www.gnu.org/software/gettext/manual/html_node/Perl.html).
     For translation of strings in output, see *note
     Texinfo::Translations: Texinfo::Translations NAME.

collect_commands_in_tree($tree, $commands_list)

     Returns a hash reference with keys @-commands names specified in
     the _$commands_list_ array reference and values arrays of tree
     elements corresponding to those @-command found in _$tree_ by
     traversing the tree.

collect_commands_list_in_tree($tree, $commands_list)

     Return a list reference containing the tree elements corresponding
     to the @-commands names specified in the _$commands_list_ found in
     _$tree_ by traversing the tree.  The order of the @-commands should
     be kept.

$encoding_name = element_associated_processing_encoding($element)

     Returns the encoding name that can be used for decoding derived
     from the encoding that was set where _$element_ appeared.

$result = element_is_inline($element, $check_current)

     Return true if the element passed in argument is in running text
     context.  If the optional _$check_current_ argument is set, check
     the element itself, in addition to the parent context.

($encoded_file_name, $encoding) = encode_file_name($file_name, $input_encoding)

     Encode the _$file_name_ text string to a binary string
     _$encoded_file_name_ based on _$input_encoding_.  Also returns the
     _$encoding_ name actually used which may have undergone some
     normalization.  This function is mostly a wrapper around Encode
     Encode::encode (https://metacpan.org/pod/Encode#encode) which
     avoids calling the module if not needed.  Do nothing if
     _$input_encoding_ is ‘undef’.

$text = enumerate_item_representation($specification, $number)

     This function returns the number or letter correponding to item
     number _$number_ for an ‘@enumerate’ specification
     _$specification_, appearing on an ‘@enumerate’ line.  For example

       enumerate_item_representation('c', 3)

     is ‘e’.

$command = find_parent_root_command($object, $tree_element)

     Find the parent root command (sectioning command or node) of a tree
     element.  The _$object_ argument is optional, its ‘global_commands’
     field is used to continue through ‘@insertcopying’ if in a
     ‘@copying’.

$entry_content_element = index_content_element($element, $prefer_reference_element)

     Return a Texinfo tree element corresponding to the content of the
     index entry associated to _$element_.  If
     _$prefer_reference_element_ is set, prefer an untranslated element.
     If the element is an index command like ‘@cindex’ or an ‘@ftable’
     ‘@item’, the content element is the argument of the command.  If
     the element is a definition line, the index entry element is based
     on the name and class.

$result = is_content_empty($tree, $do_not_ignore_index_entries)

     Return true if the _$tree_ has content that could be formatted.
     _$do_not_ignore_index_entries_ is optional.  If set, index entries
     are considered to be formatted.

$file = locate_include_file($customization_information, $file_path)

     Locate _$file_path_.  If _$file_path_ is an absolute path or has
     ‘.’ or ‘..’ in the path directories it is checked that the path
     exists and is a file.  Otherwise, the file name in _$file_path_ is
     located in include directories also used to find texinfo files
     included in Texinfo documents.  _$file_path_ should be a binary
     string.  ‘undef’ is returned if the file was not found, otherwise
     the file found is returned as a binary string.

($index_entry, $index_info) = lookup_index_entry($index_entry_info, $indices_information)

     Returns an _$index_entry_ hash based on the _$index_entry_info_ and
     _$indices_information_.  Also returns the _$index_info_ hash with
     information on the index associated to the index entry.
     _$index_entry_info_ should be an array reference with an index name
     as first element and the index entry number in that index (1-based)
     as second element.  In general, the _$index_entry_info_ is an *note
     ‘extra’ _index_entry_: Texinfo::Parser index_entry. associated to
     an element.

     The _$index_entry_ hash is described in *note Texinfo::Document
     index_entries::.  The _$index_info_ hash is described in *note
     ‘Texinfo::Document::indices_information’: Texinfo::Document
     $indices_information = $document->indices_information().

$normalized_name = normalize_top_node_name($node_string)

     Normalize the node name string given in argument, by normalizing
     Top node case.

$result = remove_from_array($array, $element)

     Remove first occurence of _$element_ in the array reference
     _$array_.  Return the removed element, or ‘undef’ if not found.

$level = section_level($section)

     Return numbered level of the tree sectioning element _$section_, as
     modified by raise/lowersections.

$element = set_global_document_command($customization_information, $global_commands_information, $cmdname, $command_location)

     Set the Texinfo customization variable corresponding to _$cmdname_
     in _$customization_information_.  The
     _$global_commands_information_ should contain information about
     global commands in a Texinfo document, typically obtained from a
     parsed document *note $document->global_commands_information():
     Texinfo::Document $commands =
     global_commands_information($document).  _$command_location_
     specifies where in the document the value should be taken from, for
     commands that may appear more than once.  The possibilities are:

     last

          Set to the last value for the command.

     preamble

          Set sequentially to the values in the Texinfo preamble.

     preamble_or_first

          Set to the first value of the command if the first command is
          not in the Texinfo preamble, else set as with _preamble_,
          sequentially to the values in the Texinfo preamble.

     The _$element_ returned is the last element that was used to set
     the customization value, or ‘undef’ if no customization value was
     found.

     Notice that the only effect of this function is to set a
     customization variable value, no @-command side effects are run, no
     associated customization variables are set.

$status = set_informative_command_value($customization_information, $element)

     Set the Texinfo customization option corresponding to the tree
     element _$element_.  The command associated to the tree element
     should be a command that sets some information, such as
     ‘@documentlanguage’, ‘@contents’ or ‘@footnotestyle’ for example.
     Return true if the command argument was found and the customization
     variable was set.

set_output_encoding($customization_information, $document)

     If not already set, set ‘OUTPUT_ENCODING_NAME’ based on input file
     encoding.

set_output_perl_encoding($customization_information)

     Set ‘OUTPUT_PERL_ENCODING’ based on ‘OUTPUT_ENCODING_NAME’.  In
     general, ‘OUTPUT_PERL_ENCODING’ should not be set directly by
     user-defined code such that it corresponds to
     ‘OUTPUT_ENCODING_NAME’.

$split_contents = split_custom_heading_command_contents($element)

     Split the _$element_ contents at ‘@|’ in at max three parts.
     Return an element containing the split parts in contents, or
     ‘undef’ if the _$element_ has no useful content.  The input
     _$element_ is supposed to be ‘$element->{'args'}->[0]’ of
     ‘%Texinfo::Commands::heading_spec_commands’ commands such as
     ‘@everyheading’.

$status = valid_customization_option($name)

     Return true if the _$name_ is a known customization option.

$status = valid_tree_transformation($name)

     Return true if the _$name_ is a known tree transformation name that
     may be passed with ‘TREE_TRANSFORMATIONS’ to modify a texinfo tree.


File: texi2any_internals.info,  Node: Texinfo::Common SEE ALSO,  Next: Texinfo::Common AUTHOR,  Prev: Texinfo::Common METHODS,  Up: Texinfo::Common

2.8 Texinfo::Common SEE ALSO
============================

*note Texinfo::Parser: Texinfo::Parser NAME, *note
Texinfo::Convert::Converter: Texinfo::Convert::Converter NAME. and *note
Texinfo::Report: Texinfo::Report NAME.


File: texi2any_internals.info,  Node: Texinfo::Common AUTHOR,  Next: Texinfo::Common COPYRIGHT AND LICENSE,  Prev: Texinfo::Common SEE ALSO,  Up: Texinfo::Common

2.9 Texinfo::Common AUTHOR
==========================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Common COPYRIGHT AND LICENSE,  Prev: Texinfo::Common AUTHOR,  Up: Texinfo::Common

2.10 Texinfo::Common COPYRIGHT AND LICENSE
==========================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Parser,  Next: Texinfo::Document,  Prev: Texinfo::Common,  Up: Top

3 Texinfo::Parser
*****************

* Menu:

* Texinfo::Parser NAME::
* Texinfo::Parser SYNOPSIS::
* Texinfo::Parser NOTES::
* Texinfo::Parser DESCRIPTION::
* Texinfo::Parser METHODS::
* Texinfo::Parser TEXINFO TREE::
* Texinfo::Parser SEE ALSO::
* Texinfo::Parser AUTHOR::
* Texinfo::Parser COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Parser NAME,  Next: Texinfo::Parser SYNOPSIS,  Up: Texinfo::Parser

3.1 Texinfo::Parser NAME
========================

Texinfo::Parser - Parse Texinfo code into a Perl tree


File: texi2any_internals.info,  Node: Texinfo::Parser SYNOPSIS,  Next: Texinfo::Parser NOTES,  Prev: Texinfo::Parser NAME,  Up: Texinfo::Parser

3.2 Texinfo::Parser SYNOPSIS
============================

  use Texinfo::Parser;

  my $parser = Texinfo::Parser::parser();
  my $document = $parser->parse_texi_file("somefile.texi");

  my ($errors, $errors_count) = $document->parser_errors();
  foreach my $error_message (@$errors) {
    warn $error_message->{'error_line'};
  }


File: texi2any_internals.info,  Node: Texinfo::Parser NOTES,  Next: Texinfo::Parser DESCRIPTION,  Prev: Texinfo::Parser SYNOPSIS,  Up: Texinfo::Parser

3.3 Texinfo::Parser NOTES
=========================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Parser DESCRIPTION,  Next: Texinfo::Parser METHODS,  Prev: Texinfo::Parser NOTES,  Up: Texinfo::Parser

3.4 Texinfo::Parser DESCRIPTION
===============================

‘Texinfo::Parser’ will parse Texinfo text into a Perl tree.  In one pass
it expands user-defined @-commands, conditionals (‘@ifset’,
‘@ifinfo’...)  and ‘@value’ and constructs the tree.  Some extra
information is gathered while doing the tree: for example, the
‘@quotation’ associated to an ‘@author’ command, the number of columns
in a multitable, or the node associated with a section.


File: texi2any_internals.info,  Node: Texinfo::Parser METHODS,  Next: Texinfo::Parser TEXINFO TREE,  Prev: Texinfo::Parser DESCRIPTION,  Up: Texinfo::Parser

3.5 Texinfo::Parser METHODS
===========================

No method is exported in the default case.  The module allows both an
object-oriented syntax, or traditional function, with the parser as an
opaque data structure given as an argument to every function.

* Menu:

* Texinfo::Parser Initialization::
* Texinfo::Parser Parsing Texinfo text::


File: texi2any_internals.info,  Node: Texinfo::Parser Initialization,  Next: Texinfo::Parser Parsing Texinfo text,  Up: Texinfo::Parser METHODS

3.5.1 Initialization
--------------------

The following method is used to construct a new ‘Texinfo::Parser’
object:

$parser = Texinfo::Parser::parser($options)

     This method creates a new parser.  The options may be provided as a
     hash reference.  Most of those options correspond to Texinfo
     customization options described in the Texinfo manual.

     CPP_LINE_DIRECTIVES

          Handle cpp like synchronization lines if set.  Set in the
          default case.

     EXPANDED_FORMATS

          An array reference of the output formats for which
          ‘@if_FORMAT_’ conditional blocks should be expanded.  Default
          is empty.

     FORMAT_MENU

          Possible values are ‘nomenu’, ‘menu’ and ‘sectiontoc’.  Only
          report menu-related errors for ‘menu’.

     INCLUDE_DIRECTORIES

          An array reference of directories in which ‘@include’ files
          should be searched for.  Default contains the working
          directory, ‘.’.

     IGNORE_SPACE_AFTER_BRACED_COMMAND_NAME

          If set, spaces after an @-command name that take braces are
          ignored.  Default on.

     MAX_MACRO_CALL_NESTING

          Maximal number of nested user-defined macro calls.  Default is
          100000.

     documentlanguage

          A string corresponding to a document language set by
          ‘@documentlanguage’.  It overrides the document
          ‘@documentlanguage’ information, if present.

     values

          A hash reference.  Keys are names, values are the
          corresponding values.  Same as values set by ‘@set’.


File: texi2any_internals.info,  Node: Texinfo::Parser Parsing Texinfo text,  Prev: Texinfo::Parser Initialization,  Up: Texinfo::Parser METHODS

3.5.2 Parsing Texinfo text
--------------------------

Different methods may be called to parse some Texinfo code:
‘parse_texi_line’ for a line, ‘parse_texi_piece’ for a fragment of
Texinfo, ‘parse_texi_text’ for a string corresponding to a full document
and ‘parse_texi_file’ for a file.  The first argument of these functions
is a parser.

   When ‘parse_texi_line’ is used, the resulting tree is rooted at a
‘root_line’ type container.  Otherwise, the resulting tree should be
rooted at a ‘document_root’ type container.

$tree = $parser->parse_texi_line($text, $first_line_number)

     This function is used to parse a short fragment of Texinfo code.

     _$text_ is the string containing the texinfo line.
     _$first_line_number_ is the line number of the line, if undef, it
     will be set to 1.

$document = $parser->parse_texi_piece($text, $first_line_number)

     This function is used to parse Texinfo fragments.

     _$text_ is the string containing the texinfo text.
     _$first_line_number_ is the line number of the first text line, if
     undef, it will be set to 1.

$document = $parser->parse_texi_text($text, $first_line_number)

     This function is used to parse a text as a whole document.

     _$text_ is the string containing the texinfo text.
     _$first_line_number_ is the line number of the first text line, if
     undef, it will be set to 1.

$document = $parser->parse_texi_file($file_name)

     The file with name _$file_name_ is considered to be a Texinfo file
     and is parsed into a tree.  _$file_name_ should be a binary string.

   The errors collected during the tree parsing are available with the
resulting document ‘parser_errors’.  These errors are internally
registered in a ‘Texinfo::Report’ object.

($error_warnings_list, $error_count) = $document->parser_errors()

     This function returns as _$error_count_ the count of parsing
     errors.  The _$error_warnings_list_ is an array of hash references
     one for each error, warning or error line continuation.  They are
     described in detail in *note Texinfo::Report::errors:
     Texinfo::Report ($error_warnings_list, $error_count) =
     errors($registrar).


File: texi2any_internals.info,  Node: Texinfo::Parser TEXINFO TREE,  Next: Texinfo::Parser SEE ALSO,  Prev: Texinfo::Parser METHODS,  Up: Texinfo::Parser

3.6 TEXINFO TREE
================

A Texinfo tree element (called element because node is overloaded in the
Texinfo world) is an hash reference.  There are three main categories of
tree element.  Tree elements associated with an @-command have a
‘cmdname’ key holding the @-command name.  Tree elements corresponding
to text fragments have a ‘text’ key holding the corresponding text.
Finally, the last category is other elements, which in most cases have a
‘type’ key holding their name.  Text fragments and @-command elements
may also have an associated type when such information is needed.

   The children of an @-command or of other container element are in the
array referred to with the ‘args’ key or with the ‘contents’ key.  The
‘args’ key is for arguments of @-commands, either in braces or on the
rest of the line after the command, depending on the type of command.
The ‘contents’ key array holds the contents of the texinfo code
appearing within a block @-command, within a container, or within a
‘@node’ or sectioning @-command.

   Another important key for the elements is the ‘extra’ key which is
associated to a hash reference and holds all kinds of information that
is gathered during the parsing and may help with the conversion.

   You can see examples of the tree structure by running makeinfo like
this:

  makeinfo -c DUMP_TREE=1 -c TEXINFO_OUTPUT_FORMAT=parse document.texi

   For a simpler, more regular representation of the tree structure, you
can do:

  makeinfo -c TEXINFO_OUTPUT_FORMAT=debugtree document.texi

* Menu:

* Texinfo::Parser Element keys::
* Texinfo::Parser Element types::
* Texinfo::Parser Information available in the info key::
* Texinfo::Parser Information available in the extra key::


File: texi2any_internals.info,  Node: Texinfo::Parser Element keys,  Next: Texinfo::Parser Element types,  Up: Texinfo::Parser TEXINFO TREE

3.6.1 Element keys
------------------

cmdname

     The command name of @-command elements.

text

     The text fragment of text elements.

type

     The type of element considered, in general a container.  Frequent
     types encountered are _paragraph_ for a paragraph container,
     _brace_container_ for the container holding a brace @-commands
     content, _line_arg_ and _block_line_arg_ contain the arguments
     appearing on the line of @-commands.  Text fragments may have a
     type to give an information of the kind of text fragment, for
     example _spaces_before_paragraph_ is associated to spaces appearing
     before a paragraph beginning.  Most @-commands elements do not have
     a type associated.

args

     Arguments in braces or on @-command line.  An array reference.

contents

     The Texinfo appearing in the element.  For block commands, other
     containers, ‘@node’ and sectioning commands.  An array reference.

parent

     The parent element.

source_info

     An hash reference corresponding to information on the location of
     the element in the Texinfo input manual.  It should mainly be
     available for @-command elements, and only for @-commands that are
     considered to be complex enough that the location in the document
     is needed, for example to prepare an error message.

     The keys of the line number hash references are

     line_nr

          The line number of the @-command.

     file_name

          The file name where @-command appeared.

     macro

          The user macro name the @-command is expanded from.

info

     A hash reference holding any other information that cannot be
     obtained otherwise from the tree.  See *note Information available
     in the ‘info’ key: Texinfo::Parser Information available in the
     info key.

extra

     A hash reference holding information that could also be obtained
     from the tree, but is directly associated to the element to
     simplify downstream code.  See *note Information available in the
     ‘extra’ key: Texinfo::Parser Information available in the extra
     key.


File: texi2any_internals.info,  Node: Texinfo::Parser Element types,  Next: Texinfo::Parser Information available in the info key,  Prev: Texinfo::Parser Element keys,  Up: Texinfo::Parser TEXINFO TREE

3.6.2 Element types
-------------------

* Menu:

* Texinfo::Parser Types for command elements::
* Texinfo::Parser Types for text elements::
* Texinfo::Parser Tree container elements::
* Texinfo::Parser Types of container elements::


File: texi2any_internals.info,  Node: Texinfo::Parser Types for command elements,  Next: Texinfo::Parser Types for text elements,  Up: Texinfo::Parser Element types

3.6.2.1 Types for command elements
..................................

Some types can be associated with @-commands (in addition to ‘cmdname’),
although usually there will be no type at all.  The following are the
possible values of ‘type’ for tree elements for @-commands.

definfoenclose_command

     This type is set for an @-command that is redefined by
     ‘@definfoenclose’.  The beginning is in ‘{'extra'}->{'begin'}’ and
     the end in ‘{'extra'}->{'end'}’.

     The command name is the info _command_name_ value.

index_entry_command

     This is the type of index entry command like ‘@cindex’, and, more
     importantly user-defined index entry commands.  So for example if
     there is:

      @defindex foo
       ...
     
      @fooindex index entry

     the ‘@fooindex’ @-command element will have the
     _index_entry_command_ type.

     The command name is the info _command_name_ value.


File: texi2any_internals.info,  Node: Texinfo::Parser Types for text elements,  Next: Texinfo::Parser Tree container elements,  Prev: Texinfo::Parser Types for command elements,  Up: Texinfo::Parser Element types

3.6.2.2 Types for text elements
...............................

The text elements may have the following types (or may have no type at
all):

after_menu_description_line

space_at_end_menu_node

     Space after a node in the menu entry, when there is no description,
     and space appearing after the description line.

delimiter

spaces

     Spaces on definition command line separating the definition command
     arguments.  Delimiters, such as comma, square brackets and
     parentheses appearing in definition command line arguments at the
     end of the line, separated from surrounding texts during the
     parsing phase.

empty_line

     An empty line (possibly containing whitespace characters only).

ignorable_spaces_after_command

     spaces appearing after an @-command without braces that does not
     take argument on the line, but which is followed by ignorable
     spaces, such as ‘@item’ in ‘@itemize’ or ‘@multitable’, or
     ‘@noindent’.

spaces_after_close_brace

     Spaces appearing after a closing brace, for some rare commands for
     which this space should be ignorable (like ‘@caption’ or
     ‘@sortas’).

spaces_before_paragraph

     Space appearing before a paragraph beginning.

raw

     Text in an environment where it should be kept as is (in
     ‘@verbatim’, ‘@verb’, ‘@macro’ body).

rawline_arg

     Used for the arguments to some special line commands whose
     arguments aren't subject to the usual macro expansion.  For example
     ‘@set’, ‘@clickstyle’, ‘@unmacro’, ‘@comment’.  The argument is
     associated to the _text_ key.

spaces_at_end

     Space within an index @-command before an @-command interrupting
     the index command.

text_after_end

     Text appearing after @bye.

text_before_beginning

     Text appearing before real content, including the ‘\input
     texinfo.tex’.

untranslated

     English text added by the parser that may need to be translated
     during conversion.  Happens for definition line @-commands aliases
     that leads to prepending text such as "Function".


File: texi2any_internals.info,  Node: Texinfo::Parser Tree container elements,  Next: Texinfo::Parser Types of container elements,  Prev: Texinfo::Parser Types for text elements,  Up: Texinfo::Parser Element types

3.6.2.3 Tree container elements
...............................

Some types of element are containers of portions of the tree, either for
the whole tree, or for contents appearing before ‘@node’ and sectioning
commands.

before_node_section

     Content before nodes and sectioning commands at the beginning of
     ‘document_root’.

document_root

root_line

     ‘root_line’ is the type of the root tree when parsing Texinfo line
     fragments using ‘parse_texi_line’.  ‘document_root’ is the document
     root otherwise.

     ‘document_root’ first content should be ‘before_node_section’, then
     nodes and sections @-commands elements, ‘@bye’ element and
     ‘postamble_after_end’.

postamble_after_end

     This container holds everything appearing after @bye.

preamble_before_beginning

     This container holds everything appearing before the first content,
     including the ‘\input texinfo.tex’ line and following blank lines.

preamble_before_setfilename

     This container holds everything that appears before ‘@setfilename’.

preamble_before_content

     This container holds everything appearing before the first
     formatted content, corresponding to the _preamble_ in the Texinfo
     documentation.


File: texi2any_internals.info,  Node: Texinfo::Parser Types of container elements,  Prev: Texinfo::Parser Tree container elements,  Up: Texinfo::Parser Element types

3.6.2.4 Types of container elements
...................................

The other types of element are containers with other elements appearing
in their ‘contents’.  The ‘paragraph’ container holds normal text from
the Texinfo manual outside of any @-commands, and within @-commands with
blocks of text (‘@footnote’, ‘@itemize’ ‘@item’, ‘@quotation’ for
example).  The ‘preformatted’ container holds the content appearing in
@-commands like ‘@example’ and the ‘rawpreformatted’ container holds the
content appearing in format commands such as ‘@html’.  The other
containers are more specific.

   The types of container element are the following:

balanced_braces

     Special type containing balanced braces content (braces included)
     in the context where they are valid, and where balanced braces need
     to be collected to know when a top-level brace command is closed.
     In ‘@math’, in raw output format brace commands and within brace
     @-commands in raw output format block commands.

before_defline

     A container for content before the first ‘@defline’ or
     ‘@deftypeline’ in ‘@defblock’.

before_item

     A container for content before the first ‘@item’ of block
     @-commands with items (‘@table’, ‘@multitable’, ‘@enumerate’...).

brace_container

brace_command_context

brace_arg

line_arg

block_line_arg

following_arg

     Those containers occur within the ‘args’ array of @-commands taking
     an argument.  _brace_container_ is used for the argument to
     commands taking arguments surrounded by braces when the whole text
     in the braces is in the argument.  _brace_arg_ is used for the
     arguments to commands taking arguments surrounded by braces when
     the leading and, in most cases, trailing spaces are not part of the
     argument, and for arguments in braces separated by commas.
     _brace_command_context_ is used for @-commands with braces that
     start a new context (‘@footnote’, ‘@caption’, ‘@math’).

     _line_arg_ is used for commands that take the texinfo code on the
     rest of the line as their argument, such as ‘@settitle’, ‘@node’,
     ‘@section’.  _block_line_arg_ is similar but is used for commands
     that start a new block (which is to be ended with ‘@end’).

     _following_arg_ is used for the accent @-commands argument that did
     not use braces but instead followed the @-command, possibly after a
     space, as

       @~n
       @ringaccent A

     For example

      @code{in code}

     leads to

      {'cmdname' => 'code',
       'args' => [{'type' => 'brace_container',
                   'contents' => [{'text' => 'in code'}]}]}

bracketed_arg

     Bracketed argument.  On definition command and on ‘@multitable’
     line.

bracketed_linemacro_arg

     Argument of a user defined linemacro call in bracket.  It holds
     directly the argument text (which does not contain the braces) and
     does not contain other elements.  It should not appear directly in
     the tree as the user defined linemacro call is replaced by the
     linemacro body.

def_category

def_class

def_type

def_name

def_typearg

def_arg

     Definition line arguments containers corresponding to the different
     parts of a definition line command.  Contains one ‘bracketed_arg’,
     ‘def_line_arg’ or ‘untranslated_def_line_arg’ container.

def_line

def_item

inter_def_item

     The _def_line_ type is associated with a container within a block
     definition command.  It holds the definition line arguments in
     _block_line_arg_.  A ‘@def*’ @-command line command such as
     ‘@deffnx’ or ‘@defline’ also holds the definition line arguments,
     in _line_arg_.  The type of each definition line arguments element
     describes the meaning of the element.  It is one of _def_category_,
     _def_name_, _def_class_, _def_type_, _def_arg_, _def_typearg_,
     _spaces_ or _delimiter_, depending on the definition.

     The container with type _def_item_ holds the definition text
     content.  Content appearing before a definition command with a x
     form is in an _inter_def_item_ container.

def_line_arg

untranslated_def_line_arg

     the _def_line_arg_ contains one or several elements that together
     are a single unit on a definition command line.  This container is
     very similar with a _bracketed_arg_ on a definition line, except
     that there is no bracket.  Appears in definition line arguments
     containers such as _def_category_, _def_arg_ or similar.

     The _untranslated_def_line_arg_ is similar, but only happens for
     automatically added categories and contains only a text element.
     For example, the ‘deffun’ line _def_category_ container may contain
     an _untranslated_def_line_arg_ type container containing itself a
     text element with "Function" as text, if the document language
     demands a translation.  Note that the _untranslated_def_line_arg_
     is special, as, in general, it should not be recursed into, as the
     text within is untranslated, but the untranslated text should be
     gathered when converting the _untranslated_def_line_arg_ type
     container.

macro_call

macro_call_line

rmacro_call

rmacro_call_line

linemacro_call

     Container holding the arguments of a user defined macro, linemacro
     or rmacro.  It should not appear directly in the tree as the user
     defined call is expanded.  The name of the macro, rmacro or
     linemacro is the the info _command_name_ value.  The
     _macro_call_line_ or _rmacro_call_line_ elements are used when
     there are no braces and the whole line is the argument.

macro_name

macro_arg

     Taken from ‘@macro’ definition and put in the ‘args’ key array of
     the macro, _macro_name_ is the type of the text fragment
     corresponding to the macro name, _macro_arg_ is the type of the
     text fragments corresponding to macro formal arguments.

menu_comment

     The _menu_comment_ container holds what is between menu entries in
     menus.  For example, in:

       @menu
       Menu title
     
       * entry::
     
       Between entries
       * other::
       @end menu

     Both

       Menu title

     and

       Between entries

     will be in a _menu_comment_.

menu_entry

menu_entry_leading_text

menu_entry_name

menu_entry_separator

menu_entry_node

menu_entry_description

     A _menu_entry_ holds a full menu entry, like

       * node::    description.

     The different elements of the menu entry are in the _menu_entry_
     ‘contents’ array reference.

     _menu_entry_leading_text_ holds the star and following spaces.
     _menu_entry_name_ is the menu entry name (if present),
     _menu_entry_node_ corresponds to the node in the menu entry,
     _menu_entry_separator_ holds the text after the node and before the
     description, in most cases ‘:: ’.  Lastly, _menu_entry_description_
     is for the description.

multitable_head

multitable_body

row

     In ‘@multitable’, a _multitable_head_ container contains all the
     rows with ‘@headitem’, while _multitable_body_ contains the rows
     associated with ‘@item’.  A _row_ container contains the ‘@item’
     and ‘@tab’ forming a row.

paragraph

     A paragraph.  The ‘contents’ of a paragraph (like other container
     elements for Texinfo content) are elements representing the
     contents of the paragraph in the order they occur, such as text
     elements without a ‘cmdname’ or ‘type’, or @-command elements for
     commands appearing in the paragraph.

preformatted

     Texinfo code within a format that is not filled.  Happens within
     some block commands like ‘@example’, but also in menu (in menu
     descriptions, menu comments...).

rawpreformatted

     Texinfo code within raw output format block commands such as ‘@tex’
     or ‘@html’.

table_entry

table_term

table_definition

inter_item

     Those containers appear in ‘@table’, ‘@ftable’ and ‘@vtable’.  A
     _table_entry_ container contains an entire row of the table.  It
     contains a _table_term_ container, which holds all the ‘@item’ and
     ‘@itemx’ lines.  This is followed by a _table_definition_
     container, which holds the content that is to go into the second
     column of the table.

     If there is any content before an ‘@itemx’ (normally only comments,
     empty lines or maybe index entries are allowed), it will be in a
     container with type _inter_item_ at the same level of ‘@item’ and
     ‘@itemx’, in a _table_term_.


File: texi2any_internals.info,  Node: Texinfo::Parser Information available in the info key,  Next: Texinfo::Parser Information available in the extra key,  Prev: Texinfo::Parser Element types,  Up: Texinfo::Parser TEXINFO TREE

3.6.3 Information available in the ‘info’ key
---------------------------------------------

arg_line

     The string correspond to the line after the @-command for
     @-commands that have special arguments on their line, and for
     ‘@macro’ line.

command_name

     Name of commands that can be defined dynamically.  The name of
     index command or definfoenclose defined command (also available in
     _cmdname_ for those commands).  The name of user defined macro,
     rmacro or linemacro called associated with the element holding the
     arguments of the user defined command call.

delimiter

     ‘@verb’ delimiter is in _delimiter_.

inserted

     Set if the element is not in the Texinfo input code, but is
     inserted as a default for @-command argument or as a definition
     command automatically inserted category (for example _Function_ for
     ‘@defun’).

spaces_after_argument

     A reference to an element containing the spaces after @-command
     arguments before a comma, a closing brace or at end of line, for
     some @-commands and bracketed content type with opening brace, and
     line commands and block command lines taking Texinfo as argument
     and comma delimited arguments.  Depending on the @-command, the
     _spaces_after_argument_ is associated with the @-command element,
     or with each argument element.

spaces_after_cmd_before_arg

     For accent commands with spaces following the @-command, like:

      @ringaccent A
      @^ u

     there is a _spaces_after_cmd_before_arg_ key linking to an element
     containing the spaces appearing after the command in _text_.

     Space between a brace @-command name and its opening brace also
     ends up in _spaces_after_cmd_before_arg_.  It is not recommended to
     leave space between an @-command name and its opening brace.

spaces_before_argument

     A reference to an element containing the spaces following the
     opening brace of some @-commands with braces and bracketed content
     type, spaces following @-commands for line commands and block
     command taking Texinfo as argument, and spaces following comma
     delimited arguments.  For context brace commands, line commands and
     block commands, _spaces_before_argument_ is associated with the
     @-command element, for other brace commands and for spaces after
     comma, it is associated with each argument element.


File: texi2any_internals.info,  Node: Texinfo::Parser Information available in the extra key,  Prev: Texinfo::Parser Information available in the info key,  Up: Texinfo::Parser TEXINFO TREE

3.6.4 Information available in the ‘extra’ key
----------------------------------------------

* Menu:

* Texinfo::Parser Extra keys available for more than one @-command::
* Texinfo::Parser Extra keys specific of certain @-commands or containers::


File: texi2any_internals.info,  Node: Texinfo::Parser Extra keys available for more than one @-command,  Next: Texinfo::Parser Extra keys specific of certain @-commands or containers,  Up: Texinfo::Parser Information available in the extra key

3.6.4.1 Extra keys available for more than one @-command
........................................................

element_node

     The node element in the parsed tree containing the element.  Set
     for @-commands elements that have an associated index entry and for
     ‘@nodedescription’.

element_region

     The region command (‘@copying’, ‘@titlepage’) containing the
     element, if it is in such an environement.  Set for @-commands
     elements that have an associated index entry and for @anchor.

index_entry

     The index entry information is associated to @-commands that have
     an associated index entry.  The associated information should not
     be directly accessed, instead *note
     ‘Texinfo::Common::lookup_index_entry’: Texinfo::Common
     ($index_entry, $index_info) = lookup_index_entry($index_entry_info,
     $indices_information). should be called on the ‘extra’
     _index_entry_ value:

        my ($index_entry, $index_info)
         = Texinfo::Common::lookup_index_entry(
                             $element->{'extra'}->{'index_entry'},
                             $indices_information);

     The _$indices_information_ is the information on a Texinfo manual
     indices obtained from *note
     ‘Texinfo::Document::indices_information’: Texinfo::Document
     $indices_information = $document->indices_information().  The index
     entry information hash returned by
     ‘Texinfo::Common::lookup_index_entry’ is described in *note
     Texinfo::Document index_entries::.

     Currently, the _index_entry_ value is an array reference with an
     index name as first element and the index entry number in that
     index (1-based) as second element.

index_ignore_chars

     A string containing the characters flagged as ignored in key
     sorting in the document by setting flags such as
     _txiindexbackslashignore_.  Set, if not empty, for @-commands
     elements that have an associated index entry.

misc_args

     An array holding strings, the arguments of @-commands taking simple
     textual arguments as arguments, like ‘@everyheadingmarks’,
     ‘@frenchspacing’, ‘@alias’, ‘@synindex’, ‘@columnfractions’.

text_arg

     The string correspond to the line after the @-command for
     @-commands that have an argument interpreted as simple text, like
     ‘@setfilename’, ‘@end’ or ‘@documentencoding’.


File: texi2any_internals.info,  Node: Texinfo::Parser Extra keys specific of certain @-commands or containers,  Prev: Texinfo::Parser Extra keys available for more than one @-command,  Up: Texinfo::Parser Information available in the extra key

3.6.4.2 Extra keys specific of certain @-commands or containers
...............................................................

‘@abbr’

‘@acronym’

     The first argument normalized is in _normalized_.

‘@anchor’

‘@float’

     @-commands that are targets for cross-references have a
     _normalized_ key for the normalized label, built as specified in
     the Texinfo documentation in the _HTML Xref_ node.  There is also a
     _node_content_ key for an element holding the corresponding
     content.

‘@author’

     If in a ‘@titlepage’, the titlepage is in _titlepage_, if in
     ‘@quotation’ or ‘@smallquotation’, the corresponding tree element
     is in _quotation_.

     The author tree element is in the _authors_ array of the
     ‘@titlepage’ or the ‘@quotation’ or ‘@smallquotation’ it is
     associated with.

‘@click’

     In _clickstyle_ there is the current clickstyle command.

‘def_line’

line definition command

     _def_command_ holds the line definition command name, without x if
     the line definition command is an x form of a block definition
     command.  For a ‘def_line’ container, _def_command_ holds the
     command name associated with the ‘def_line’.
     _original_def_cmdname_ is the original def command name.

     If the element is a definition line command and is an x form of a
     block definition command, it has _not_after_command_ set if not
     appearing after the block definition command without x.

     The _def_index_element_ is a Texinfo tree element corresponding to
     the index entry associated to the definition line, based on the
     name and class.  If needed this element is based on translated
     strings.  In that case, if ‘@documentlanguage’ is defined where the
     element is located, _documentlanguage_ holds the documentlanguage
     value.  _def_index_ref_element_ is similar, but not translated, and
     only set if there could have been a translation.

     The _omit_def_name_space_ key value is set and true if the Texinfo
     variable ‘txidefnamenospace’ was set, signaling that the space
     between function definition name and arguments should be omitted.

‘@definfoenclose’ defined commands

     _begin_ holds the string beginning the ‘@definfoenclose’, _end_
     holds the string ending the ‘@definfoenclose’.

‘@documentencoding’

     The argument, normalized is in _input_encoding_name_.

‘@enumerate’

     The _enumerate_specification_ ‘extra’ key contains the enumerate
     argument.

‘@float’

‘@listoffloats’

     If ‘@float’ has a first argument, and for ‘@listoffloats’ argument
     there is a _float_type_ key with the normalized float type.

     _caption_ and _shortcaption_ hold the corresponding tree elements
     associated to a ‘@float’.  The ‘@caption’ or ‘@shortcaption’ have
     the float tree element stored in _float_.

index entry @-command

‘@subentry’

     If an index entry @-command, such as ‘@cindex’, or a ‘@subentry’
     contains a ‘@sortas’ command, _sortas_ holds the ‘@sortas’ command
     content formatted as plain text.

     _subentry_ links to the next level ‘@subentry’ element.
     _subentry_parent_ links to the previous level element.

     Index entry @-command (but not ‘@subentry’) can also have _seentry_
     and _seealso_ keys that link to the corresponding @-commands
     elements.

‘@inlinefmt’

‘@inlineraw’

‘@inlinefmtifelse’

‘@inlineifclear’

‘@inlineifset’

     The first argument is in _format_.  If an argument has been
     determined as being expanded by the Parser, the index of this
     argument is in _expand_index_.  Index numbering begins at 0, but
     the first argument is always the format or flag name, so, if set,
     it should be 1 or 2 for ‘@inlinefmtifelse’, and 1 for other
     commands.

‘@item’ in ‘@enumerate’ or ‘@itemize’

     The _item_number_ ‘extra’ key holds the number of this item.

‘@item’ and ‘@tab’ in ‘@multitable’

     The _cell_number_ index key holds the index of the column of the
     cell.

‘@itemize’

‘@table’

‘@vtable’

‘@ftable’

     The _command_as_argument_ ‘extra’ key points to the @-command as
     argument on the @-command line.

     If the command in argument for ‘@table’, ‘@vtable’ or ‘@ftable’ is
     ‘@kbd’ and the context and ‘@kbdinputstyle’ is such that ‘@kbd’
     should be formatted as code, the _command_as_argument_kbd_code_
     ‘extra’ key is set to 1.

‘@kbd’

     _code_ is set depending on the context and ‘@kbdinputstyle’.

‘@macro’

     _invalid_syntax_ is set if there was an error on the ‘@macro’ line.
     ‘info’ key hash _arg_line_ holds the line after ‘@macro’.

‘menu_entry_node’

     Extra keys with information about the node entry label same as
     those appearing in the ‘@node’ _line_arg_ explicit directions
     arguments ‘extra’ hash labels information.

‘@multitable’

     The key _max_columns_ holds the maximal number of columns.  If
     there is a ‘@columnfractions’ as argument, then the
     _columnfractions_ key is associated with the element for the
     @columnfractions command.

‘@node’

     Explicit directions labels information are available in the
     _line_arg_ node directions arguments of ‘@node’.  Each _line_arg_
     argument element ‘extra’ hash _node_content_ key value is an
     element holding the contents corresponding to the node name.  There
     is also a _manual_content_ key if there is an associated external
     manual name, and a _normalized_ key for the normalized label, built
     as specified in the _HTML Xref_ Texinfo documentation node.

     If you called *note Texinfo::Structuring::nodes_tree:
     Texinfo::Structuring $nodes_list = nodes_tree($document), the
     _node_directions_ hash in the ‘@node’ element ‘extra’ associates
     _up_, _next_ and _prev_ keys to the elements corresponding to the
     node line directions.

     An _associated_section_ key holds the tree element of the
     sectioning command that follows the node.  An _node_preceding_part_
     key holds the tree element of the ‘@part’ that precedes the node,
     if there is no sectioning command between the ‘@part’ and the node.
     A _node_description_ key holds the first ‘@nodedescription’
     associated to the node.

     A node containing a menu have a _menus_ key which refers to an
     array of references to menu elements occuring in the node.

     The first node containing a ‘@printindex’ @-command has the
     _isindex_ key set.

‘paragraph’

     The _indent_ or _noindent_ key value is set if the corresponding
     @-commands are associated with that paragraph.

‘@part’

     The next sectioning command tree element is in
     _part_associated_section_.  The following node tree element is in
     _part_following_node_ if there is no sectioning command between the
     ‘@part’ and the node.

‘@ref’

‘@xref’

‘@pxref’

‘@inforef’

     The _brace_arg_ corresponding to the node argument holds
     information on the label, with the same information in the ‘extra’
     hash as for the ‘@node’ _line_arg_ explicit directions arguments.

‘row’

     The _row_number_ index key holds the index of the row in the
     ‘@multitable’.

sectioning command

     The node preceding the command is in _associated_node_.  The part
     preceding the command is in _associated_part_.  If the level of the
     document was modified by ‘@raisections’ or ‘@lowersections’, the
     differential level is in _level_modifier_.

     Other ‘extra’ keys are set when you call *note
     Texinfo::Structuring::sectioning_structure: Texinfo::Structuring
     $sections_list = sectioning_structure($document).

‘untranslated_def_line_arg’

     _documentlanguage_ holds the ‘@documentlanguage’ value.  If there
     is a translation context, it should be in _translation_context_.


File: texi2any_internals.info,  Node: Texinfo::Parser SEE ALSO,  Next: Texinfo::Parser AUTHOR,  Prev: Texinfo::Parser TEXINFO TREE,  Up: Texinfo::Parser

3.7 Texinfo::Parser SEE ALSO
============================

Texinfo manual (https://www.gnu.org/software/texinfo/manual/texinfo/).


File: texi2any_internals.info,  Node: Texinfo::Parser AUTHOR,  Next: Texinfo::Parser COPYRIGHT AND LICENSE,  Prev: Texinfo::Parser SEE ALSO,  Up: Texinfo::Parser

3.8 Texinfo::Parser AUTHOR
==========================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Parser COPYRIGHT AND LICENSE,  Prev: Texinfo::Parser AUTHOR,  Up: Texinfo::Parser

3.9 Texinfo::Parser COPYRIGHT AND LICENSE
=========================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Document,  Next: Texinfo::ManipulateTree,  Prev: Texinfo::Parser,  Up: Top

4 Texinfo::Document
*******************

* Menu:

* Texinfo::Document NAME::
* Texinfo::Document SYNOPSIS::
* Texinfo::Document NOTES::
* Texinfo::Document DESCRIPTION::
* Texinfo::Document METHODS::
* Texinfo::Document SEE ALSO::
* Texinfo::Document AUTHOR::
* Texinfo::Document COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Document NAME,  Next: Texinfo::Document SYNOPSIS,  Up: Texinfo::Document

4.1 Texinfo::Document NAME
==========================

Texinfo::Document - Texinfo document tree and information


File: texi2any_internals.info,  Node: Texinfo::Document SYNOPSIS,  Next: Texinfo::Document NOTES,  Prev: Texinfo::Document NAME,  Up: Texinfo::Document

4.2 Texinfo::Document SYNOPSIS
==============================

  use Texinfo::Parser;

  my $parser = Texinfo::Parser::parser();
  my $document = $parser->parse_texi_file("somefile.texi");

  my $indices_information = $document->indices_information();
  my $float_types_arrays = $document->floats_information();
  my $internal_references_array
    = $parser->internal_references_information();

  # $identifier_target is an hash reference on normalized
  # node/float/anchor names.
  my $identifier_target = $document->labels_information();

  # A hash reference, keys are @-command names, value is an
  # array reference holding all the corresponding @-commands.
  # Also contains dircategory and direntry list.
  my $global_commands_information
                 = $document->global_commands_information();

  # a hash reference on document information (encodings,
  # input file name, for example).
  my $global_information = $document->global_information();


File: texi2any_internals.info,  Node: Texinfo::Document NOTES,  Next: Texinfo::Document DESCRIPTION,  Prev: Texinfo::Document SYNOPSIS,  Up: Texinfo::Document

4.3 Texinfo::Document NOTES
===========================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Document DESCRIPTION,  Next: Texinfo::Document METHODS,  Prev: Texinfo::Document NOTES,  Up: Texinfo::Document

4.4 Texinfo::Document DESCRIPTION
=================================

This module is used to represent parsed Texinfo documents, with the
Texinfo tree and associated information.  In general a document is
obtained from a Texinfo parser call, there is no need to setup the
document.


File: texi2any_internals.info,  Node: Texinfo::Document METHODS,  Next: Texinfo::Document SEE ALSO,  Prev: Texinfo::Document DESCRIPTION,  Up: Texinfo::Document

4.5 Texinfo::Document METHODS
=============================

* Menu:

* Texinfo::Document Getting document information::
* Texinfo::Document Merging and sorting indices::
* Texinfo::Document Getting errors and error registering object::
* Texinfo::Document Getting customization options values registered in document::
* Texinfo::Document Registering document and information in document::
* Texinfo::Document Methods for Perl and C code interactions::


File: texi2any_internals.info,  Node: Texinfo::Document Getting document information,  Next: Texinfo::Document Merging and sorting indices,  Up: Texinfo::Document METHODS

4.5.1 Getting document information
----------------------------------

The main purpose of Texinfo::Document methods is to retrieve information
on a Texinfo document.

   The Texinfo tree obtained by parsing a Texinfo document is available
through ‘tree’:

$tree = tree($document, $handler_only)

     The _$tree_ is a hash reference.  It is described in *note
     Texinfo::Parser TEXINFO TREE::.

     If _$handler_only_ is set and XS extensions are used, the returned
     tree holds a reference to the C Texinfo tree data only, but no
     actual Perl Texinfo tree.  This avoids building the Perl tree if
     all the functions called with the tree as argument have XS
     interfaces and directly use the C data and do not use the Perl
     tree.

   Some global information is available through ‘global_information’:

$info = global_information($document)

     The _$info_ returned is a hash reference.  The possible keys are

     included_files

          An array of included file paths as they appear in the
          document.  Binary strings.  From both ‘@include’ and
          ‘@verbatiminclude’.

     input_encoding_name

          ‘input_encoding_name’ string is the encoding name used for the
          Texinfo code.

     input_file_name

     input_directory

          The name of the main Texinfo input file and the associated
          directory.  Binary strings.  In ‘texi2any’, they should come
          from the command line (and can be decoded with the encoding in
          the customization variable ‘COMMAND_LINE_ENCODING’).

   Some command lists are available, such that it is possible to go
through the corresponding tree elements without walking the tree.  They
are available through ‘global_commands_information’:

$commands = global_commands_information($document)

     _$commands_ is an hash reference.  The keys are @-command names.
     The associated values are array references containing all the
     corresponding tree elements.

     The following list of commands is also available as a key:

     dircategory_direntry

          An array of successive ‘@dircategory’ and ‘@direntry’ as they
          appear in the document.

   All the @-commands that have an associated label (so can be the
target of cross references) -- ‘@node’, ‘@anchor’ and ‘@float’ with
label -- have a normalized name associated, constructed as described in
the _HTML Xref_ node in the Texinfo documentation.  Those normalized
labels and the association with @-commands is available through
‘labels_information’:

$identifier_target = labels_information($document)

     _$identifier_target_ is a hash reference whose keys are normalized
     labels, and the associated value is the corresponding @-command.

$labels_list = labels_list ($document)

     _$labels_list_ is a list of Texinfo tree command elements that
     could be the target of cross references.

   Information on ‘@float’ grouped by type of floats, each type
corresponding to potential ‘@listoffloats’ is available through
‘floats_information’.

$float_types = floats_information($document)

     _$float_types_ is a hash reference whose keys are normalized float
     types (the first float argument, or the ‘@listoffloats’ argument).
     The normalization is the same as for the first step of node names
     normalization.  The value is the list of float tree elements
     appearing in the texinfo document.

   Internal references, nodes and section lists may also be available.

$internal_references_array = internal_references_information($document)

     The function returns an array reference of cross-reference commands
     referring to the same document with @-commands that refer to node,
     anchors or floats.

$nodes_list = nodes_list($document)

     Returns an array reference containing the document nodes.  In
     general set to the nodes list returned by *note
     Texinfo::Structuring nodes_tree: Texinfo::Structuring $nodes_list =
     nodes_tree($document), by a call to *note
     register_document_nodes_list: Texinfo::Document
     register_document_nodes_list ($document, $nodes_list).

$sections_list = sections_list($document)

     Returns an array reference containing the document sections.  In
     general set to the sections list returned by *note
     Texinfo::Structuring sectioning_structure: Texinfo::Structuring
     $sections_list = sectioning_structure($document), by a call to
     *note register_document_sections_list: Texinfo::Document
     register_document_sections_list ($document, $sections_list).

   Information about defined indices, indices merging and index entries
is available through ‘indices_information’.

$indices_information = $document->indices_information()

     _$indices_information_ is a hash reference.  The keys are

     in_code

          1 if the index entries should be formatted as code, 0 in the
          opposite case.

     name

          The index name.

     prefix

          An array reference of prefix associated to the index.

     merged_in

          In case the index is merged to another index, this key holds
          the name of the index the index is merged into.  It takes into
          account indirectly merged indices.

     index_entries

          An array reference containing index entry structures for index
          entries associated with the index.  The index entry could be
          associated to @-commands like ‘@cindex’, or ‘@item’ in
          ‘@vtable’, or definition commands entries like ‘@deffn’.

          The keys of the index entry structures are

          index_name

               The index name associated to the command.  Not modified
               if the corresponding index is merged in another index
               (with ‘@synindex’, for example).

          entry_element

               The element in the parsed tree associated with the
               @-command holding the index entry.

          entry_number

               The number of the index entry.

     The following shows the references corresponding to the default
     indexes _cp_ and _fn_, the _fn_ index having its entries formatted
     as code and the indices corresponding to the following texinfo

       @defindex some
       @defcodeindex code
     
       $index_names = {'cp' => {'name' => 'cp', 'in_code' => 0, },
                       'fn' => {'name' => 'fn', 'in_code' => 1, },
                       'some' => {'in_code' => 0},
                       'code' => {'in_code' => 1}};

     If ‘name’ is not set, it is set to the index name.


File: texi2any_internals.info,  Node: Texinfo::Document Merging and sorting indices,  Next: Texinfo::Document Getting errors and error registering object,  Prev: Texinfo::Document Getting document information,  Up: Texinfo::Document METHODS

4.5.2 Merging and sorting indices
---------------------------------

Merged and sorted document indices are also available.  Parsed indices
are not merged nor sorted, *note Texinfo::Indices: Texinfo::Indices
NAME. functions are called to merge or sort the indices the first time
the following methods are called.  The results are afterwards associated
to the document and simply returned.

   In general, those methods should not be called directly, instead
*note Texinfo::Convert::Converter Index sorting:: Converter methods
should be used, which already call the following functions.

$merged_indices = $document->merged_indices()

     Merge indices if needed and return merged indices.  The
     _$merged_indices_ returned is a hash reference whose keys are the
     index names and values arrays of index entry structures described
     in *note index_entries: Texinfo::Document index_entries.

     *note ‘Texinfo::Indices::merge_indices’: Texinfo::Indices
     $merged_indices = merge_indices($indices_information). is used to
     merge the indices.

     In general, it is not useful to call this function directly, as it
     is already called by index sorting functions.

$sorted_indices = $document->sorted_indices_by_index($customization_information, $use_unicode_collation, $locale_lang)

$sorted_indices = $document->sorted_indices_by_letter($customization_information, $use_unicode_collation, $locale_lang)

     ‘sorted_indices_by_letter’ returns the indices sorted by index and
     letter, while ‘sorted_indices_by_index’ returns the indices with
     all entries of an index together.

     By default, indices are sorted according to the _Unicode Collation
     Algorithm_ defined in the Unicode Technical Standard #10
     (http://www.unicode.org/reports/tr10/), without language-specific
     collation tailoring.  If _$use_unicode_collation_ is set to 0, the
     sorting will not use the _Unicode Collation Algorithm_ and simply
     sort according to the codepoints.  If _$locale_lang_ is set, the
     language is used for linguistic tailoring of the sorting, if
     possible.

     When sorting by letter, an array reference of letter hash
     references is associated with each index name.  Each letter hash
     reference has two keys, a _letter_ key with the letter, and an
     _entries_ key with an array reference of sorted index entries
     beginning with the letter.  The letter is a character string
     suitable for sorting letters, but is not necessarily the best to
     use for output.

     When simply sorting, the array of the sorted index entries is
     associated with the index name.

     The optional _$customization_information_ argument is used for
     error reporting, both to find the *note Texinfo::Report:
     Texinfo::Report NAME. object to use for error reporting and Texinfo
     customization variables information.  In general, it should be a
     converter (*note Texinfo::Convert::Converter Getting and setting
     customization variables::) or a document *note Texinfo::Document
     Getting customization options values registered in document::).

     *note ‘Texinfo::Indices::sort_indices_by_index’: Texinfo::Indices
     $index_entries_sorted = sort_indices_by_index($document,
     $registrar, $customization_information, $use_unicode_collation,
     $locale_lang). and *note
     ‘Texinfo::Indices::sort_indices_by_letter’: Texinfo::Indices
     $index_entries_sorted = sort_indices_by_letter($document,
     $registrar, $customization_information, $use_unicode_collation,
     $locale_lang). are used to sort the indices, if needed.

     In general, those methods should not be called directly, instead
     *note
     ‘Texinfo::Convert::Converter::get_converter_indices_sorted_by_index’:
     Texinfo::Convert::Converter $sorted_indices =
     $converter->get_converter_indices_sorted_by_index(). and *note
     ‘Texinfo::Convert::Converter::get_converter_indices_sorted_by_letter’:
     Texinfo::Convert::Converter $sorted_indices =
     $converter->get_converter_indices_sorted_by_letter(). should be
     used.  The ‘Texinfo::Convert::Converter’ methods call
     ‘sorted_indices_by_index’ and ‘sorted_indices_by_letter’.


File: texi2any_internals.info,  Node: Texinfo::Document Getting errors and error registering object,  Next: Texinfo::Document Getting customization options values registered in document,  Prev: Texinfo::Document Merging and sorting indices,  Up: Texinfo::Document METHODS

4.5.3 Getting errors and error registering object
-------------------------------------------------

A document has a *note Texinfo::Report: Texinfo::Report NAME. objet
associated, that is used to register errors and warning messages in.  To
get the errors registered in the document, the ‘errors’ method should be
called.  It is also possible to get the document associated
‘Texinfo::Report’ objet by calling the ‘registrar’ accessor method.

$registrar = registrar($document)

     Returns the ‘Texinfo::Report’ object associated with the
     _$document_.

     In general, this is not needed as most functions use the document
     associated ‘Texinfo::Report’ object automatically.  However, for
     some functions a ‘Texinfo::Report’ object is passed in argument,
     being able to get the document registrar object is interesting in
     those cases.

($error warnings list, $error count) = errors($document)

     This function returns as _$error_count_ the count of errors since
     setting up the _$document_ (or calling the function).  The returned
     _$error_warnings_list_ is an array of hash references one for each
     error, warning or error line continuation.  The format of these
     hash references is described in *note ‘Texinfo::Report::errors’:
     Texinfo::Report ($error_warnings_list, $error_count) =
     errors($registrar).


File: texi2any_internals.info,  Node: Texinfo::Document Getting customization options values registered in document,  Next: Texinfo::Document Registering document and information in document,  Prev: Texinfo::Document Getting errors and error registering object,  Up: Texinfo::Document METHODS

4.5.4 Getting customization options values registered in document
-----------------------------------------------------------------

By default, customization information is registered in a document object
just after parsing the Texinfo code.  Structuring and tree
transformation methods then get customization variables values from the
document object they have in argument.  The customization variables set
by default may be a subset selected to be useful for structuring and
tree transformation codes.

   To retrieve Texinfo customization variables you can call ‘get_conf’:

$value = $document->get_conf($variable_name)

     Returns the value of the Texinfo customization variable
     _$variable_name_ (possibly ‘undef’), if the variable value was
     registered in the document, or ‘undef’.


File: texi2any_internals.info,  Node: Texinfo::Document Registering document and information in document,  Next: Texinfo::Document Methods for Perl and C code interactions,  Prev: Texinfo::Document Getting customization options values registered in document,  Up: Texinfo::Document METHODS

4.5.5 Registering document and information in document
------------------------------------------------------

The setup of a document is described next, it should only be used in
parsers codes.

$document = Texinfo::Document::register($tree, $global_information, $indices_information, $floats_information, $internal_references_information, $global_commands_information, $identifier_target, $labels_list, $parser_registrar)

     Setup a document.  There is no reason to call this method out of
     parsers, as it is already done by the Texinfo parsers.  The
     arguments are gathered during parsing and correspond to information
     returned by the other methods.

   Further information can be registered in the document.

register_document_nodes_list ($document, $nodes_list)

     Register the _$nodes_list_ array reference as _$document_ nodes
     list.  This method should be called after the processing of
     document structure.

register_document_options ($document, $options)

     The _$options_ hash reference holds options for the document.
     These options should be Texinfo customization options.  Usually,
     the options registered in the document contain those useful for
     structuring and tree transformation getting place between Texinfo
     code parsing and conversion to output formats.  Indeed, document
     customization options are mainly accessed by structuring and tree
     transformation methods (by calling *note ‘get_conf’:
     Texinfo::Document $value = $document->get_conf($variable_name).).
     The options should in general be registered before the calls to
     ‘get_conf’.

register_document_sections_list ($document, $sections_list)

     Register the _$sections_list_ array reference as _$document_
     sections list.  This method should be called after the processing
     of document structure.

set_document_global_info($document, $key, $value)

     Add _$value_ _$key_ global information to _$document_.  This method
     should not be generally useful, as document global information is
     already set by the Texinfo parser.  The information set should be
     available through the next calls to *note global_information:
     Texinfo::Document $info = global_information($document).  The
     method should in general be called before the calls to
     ‘global_information’.


File: texi2any_internals.info,  Node: Texinfo::Document Methods for Perl and C code interactions,  Prev: Texinfo::Document Registering document and information in document,  Up: Texinfo::Document METHODS

4.5.6 Methods for Perl and C code interactions
----------------------------------------------

The parsing of Texinfo code, structuring and transformations of the tree
called through Texinfo Perl modules may be done by pure Perl modules or
by C code called through XS interfaces.  In general, it makes no
difference whether pure Perl or C code is used.  When the document and
tree are modified by C code, the Perl structures are automatically
rebuilt when calling the accessors described previously.  In some cases,
however, specific functions need to be called to pass information from C
to Perl or perform actions related to C data.

   The methods can always be called on pure Perl modules even if they do
nothing.  Therefore it is, in general, better to call them assuming that
modules setting up C data were called, even when it is not the case.

   First, ‘document_descriptor’ can be called to get the document
identifier document used by C code to retrieve the document data in C.
In general this identifier is directly and transparently taken from the
document, but may need to be set on other objects in rare cases.

$document_descriptor = $document->document_descriptor()

     Returns the document descriptor if the document is available as C
     data, 0 or ‘undef’ if not.

   When the tree is directly accessed in Perl (not through a document)
but is modified by C code, for instance called through *note
Texinfo::Common: Texinfo::Common NAME. or *note
Texinfo::Transformations: Texinfo::Transformations NAME. methods, the
Perl structures need to be rebuilt from the C data with ‘rebuild_tree’:

$rebuilt_tree = rebuild_tree($tree, $no_store)

     Return a _$rebuilt_tree_, rebuilt from C data if needed.  If there
     is no C data, the tree is returned as is.  The tree rebuilt is
     based on the Texinfo parsed document associated to the Texinfo tree
     _$tree_.

     If the optional _$no_store_ argument is set, remove the C data.

   Note that the Perl tree associated to a document is rebuilt from C
data when calling ‘$document->tree()’.  Similarly, the tree is rebuilt
when calling other accessors that depend on the document tree.
Therefore ‘rebuild_tree’ should only be called when there is no document
associated to a tree and ‘$document->tree()’ cannot be called to rebuild
the tree.

   Some methods allow to release the memory held by C data associated to
a Texinfo parsed document:

remove_document($document)

     Remove the C data corresponding to _$document_.


File: texi2any_internals.info,  Node: Texinfo::Document SEE ALSO,  Next: Texinfo::Document AUTHOR,  Prev: Texinfo::Document METHODS,  Up: Texinfo::Document

4.6 Texinfo::Document SEE ALSO
==============================

*note Texinfo::Parser: Texinfo::Parser NAME. *note Texinfo::Structuring:
Texinfo::Structuring NAME.


File: texi2any_internals.info,  Node: Texinfo::Document AUTHOR,  Next: Texinfo::Document COPYRIGHT AND LICENSE,  Prev: Texinfo::Document SEE ALSO,  Up: Texinfo::Document

4.7 Texinfo::Document AUTHOR
============================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Document COPYRIGHT AND LICENSE,  Prev: Texinfo::Document AUTHOR,  Up: Texinfo::Document

4.8 Texinfo::Document COPYRIGHT AND LICENSE
===========================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::ManipulateTree,  Next: Texinfo::Structuring,  Prev: Texinfo::Document,  Up: Top

5 Texinfo::ManipulateTree
*************************

* Menu:

* Texinfo::ManipulateTree NAME::
* Texinfo::ManipulateTree SYNOPSIS::
* Texinfo::ManipulateTree NOTES::
* Texinfo::ManipulateTree DESCRIPTION::
* Texinfo::ManipulateTree METHODS::
* Texinfo::ManipulateTree SEE ALSO::
* Texinfo::ManipulateTree AUTHOR::
* Texinfo::ManipulateTree COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::ManipulateTree NAME,  Next: Texinfo::ManipulateTree SYNOPSIS,  Up: Texinfo::ManipulateTree

5.1 Texinfo::ManipulateTree NAME
================================

Texinfo::ManipulateTree - Texinfo modules common tree manipulation
functions


File: texi2any_internals.info,  Node: Texinfo::ManipulateTree SYNOPSIS,  Next: Texinfo::ManipulateTree NOTES,  Prev: Texinfo::ManipulateTree NAME,  Up: Texinfo::ManipulateTree

5.2 Texinfo::ManipulateTree SYNOPSIS
====================================

  use Texinfo::ManipulateTree;


File: texi2any_internals.info,  Node: Texinfo::ManipulateTree NOTES,  Next: Texinfo::ManipulateTree DESCRIPTION,  Prev: Texinfo::ManipulateTree SYNOPSIS,  Up: Texinfo::ManipulateTree

5.3 Texinfo::ManipulateTree NOTES
=================================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::ManipulateTree DESCRIPTION,  Next: Texinfo::ManipulateTree METHODS,  Prev: Texinfo::ManipulateTree NOTES,  Up: Texinfo::ManipulateTree

5.4 Texinfo::ManipulateTree DESCRIPTION
=======================================

‘Texinfo::ManipulateTree’ contains methods for copying and modifying the
Texinfo tree used for default conversion to output formats.

   For optional tree transformation, see *note Texinfo::Transformations:
Texinfo::Transformations NAME.


File: texi2any_internals.info,  Node: Texinfo::ManipulateTree METHODS,  Next: Texinfo::ManipulateTree SEE ALSO,  Prev: Texinfo::ManipulateTree DESCRIPTION,  Up: Texinfo::ManipulateTree

5.5 Texinfo::ManipulateTree METHODS
===================================

The Texinfo tree and Texinfo tree elements used in argument of some
functions are documented in *note Texinfo::Parser TEXINFO TREE::.  When
customization information is needed, an object that defines ‘get_conf’
is expected, normally a *note Texinfo::Document Getting customization
options values registered in document:: object.

move_index_entries_after_items_in_tree($tree)

     In ‘@enumerate’ and ‘@itemize’ from the tree, move index entries
     appearing just before ‘@item’ after the ‘@item’.  Comment lines
     between index entries are moved too.

protect_colon_in_tree($tree)

protect_node_after_label_in_tree($tree)

     Protect colon with ‘protect_colon_in_tree’ and characters that are
     special in node names after a label in menu entries (tab dot and
     comma) with ‘protect_node_after_label_in_tree’.  The protection is
     achieved by putting protected characters in ‘@asis{}’.

protect_comma_in_tree($tree)

     Protect comma characters, replacing ‘,’ with @comma{} in tree.

protect_first_parenthesis($element)

     Modify _$element_ contents by protecting the first parenthesis.  If
     _$element_ is undef a fatal error with a backtrace will be emitted.

relate_index_entries_to_table_items_in_tree($document)

     In tables, relate index entries preceding and following an entry
     with said item.  Reference one of them in the entry's
     ‘entry_associated_element’.


File: texi2any_internals.info,  Node: Texinfo::ManipulateTree SEE ALSO,  Next: Texinfo::ManipulateTree AUTHOR,  Prev: Texinfo::ManipulateTree METHODS,  Up: Texinfo::ManipulateTree

5.6 Texinfo::ManipulateTree SEE ALSO
====================================

*note Texinfo::Document: Texinfo::Document NAME, *note
Texinfo::Structuring: Texinfo::Structuring NAME, *note
Texinfo::Transformations: Texinfo::Transformations NAME.


File: texi2any_internals.info,  Node: Texinfo::ManipulateTree AUTHOR,  Next: Texinfo::ManipulateTree COPYRIGHT AND LICENSE,  Prev: Texinfo::ManipulateTree SEE ALSO,  Up: Texinfo::ManipulateTree

5.7 Texinfo::ManipulateTree AUTHOR
==================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::ManipulateTree COPYRIGHT AND LICENSE,  Prev: Texinfo::ManipulateTree AUTHOR,  Up: Texinfo::ManipulateTree

5.8 Texinfo::ManipulateTree COPYRIGHT AND LICENSE
=================================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Structuring,  Next: Texinfo::Report,  Prev: Texinfo::ManipulateTree,  Up: Top

6 Texinfo::Structuring
**********************

* Menu:

* Texinfo::Structuring NAME::
* Texinfo::Structuring SYNOPSIS::
* Texinfo::Structuring NOTES::
* Texinfo::Structuring DESCRIPTION::
* Texinfo::Structuring METHODS::
* Texinfo::Structuring SEE ALSO::
* Texinfo::Structuring AUTHOR::
* Texinfo::Structuring COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Structuring NAME,  Next: Texinfo::Structuring SYNOPSIS,  Up: Texinfo::Structuring

6.1 Texinfo::Structuring NAME
=============================

Texinfo::Structuring - information on Texinfo::Document document
structure


File: texi2any_internals.info,  Node: Texinfo::Structuring SYNOPSIS,  Next: Texinfo::Structuring NOTES,  Prev: Texinfo::Structuring NAME,  Up: Texinfo::Structuring

6.2 Texinfo::Structuring SYNOPSIS
=================================

  use Texinfo::Structuring qw(sectioning_structure nodes_tree number_floats
    associate_internal_references);

  # $document is a parsed Texinfo::Document document.
  # When customization variables information is needed, it is obtained
  # from the $document by calling the get_conf() method.
  my $sections_list = sectioning_structure($document);
  my $nodes_list = nodes_tree($document);
  set_menus_node_directions($document);
  complete_node_tree_with_menus($document);
  check_nodes_are_referenced($document);
  associate_internal_references($document);
  number_floats($document->floats_information());


File: texi2any_internals.info,  Node: Texinfo::Structuring NOTES,  Next: Texinfo::Structuring DESCRIPTION,  Prev: Texinfo::Structuring SYNOPSIS,  Up: Texinfo::Structuring

6.3 Texinfo::Structuring NOTES
==============================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Structuring DESCRIPTION,  Next: Texinfo::Structuring METHODS,  Prev: Texinfo::Structuring NOTES,  Up: Texinfo::Structuring

6.4 Texinfo::Structuring DESCRIPTION
====================================

‘Texinfo::Structuring’ allows to collect information on a Texinfo
document structure.  Thanks to ‘sectioning_structure’ the hierarchy of
sectioning commands is determined.  The directions implied by menus are
determined with ‘set_menus_node_directions’.  The node tree is analysed
with ‘nodes_tree’.  Nodes directions are completed with menu directions
with ‘complete_node_tree_with_menus’.  Floats get their standard
numbering with ‘number_floats’ and internal references are matched up
with nodes, floats or anchors with ‘associate_internal_references’.


File: texi2any_internals.info,  Node: Texinfo::Structuring METHODS,  Next: Texinfo::Structuring SEE ALSO,  Prev: Texinfo::Structuring DESCRIPTION,  Up: Texinfo::Structuring

6.5 Texinfo::Structuring METHODS
================================

No method is exported in the default case.

   Most methods use the *note Texinfo::Report: Texinfo::Report NAME.
registrar from a parsed document for error reporting.  Most also require
Texinfo customization variables information, which means an object
implementing the ‘get_conf’ method, in general a parsed document with
registered customization, or, sometime, a converter (*note
Texinfo::Convert::Converter Getting and setting customization
variables::).  Other common data needed such as target elements
associated to identifiers or refs are obtained from a parsed document,
see *note Texinfo::Document: Texinfo::Document NAME.

associate_internal_references($document)

     Verify that internal references (‘@ref’ and similar without fourth
     of fifth argument and menu entries) have an associated node, anchor
     or float.  Set the _normalized_ key in the ‘extra’ hash of
     ‘menu_entry_node’ container for menu entries and in the first
     argument ‘extra’ hash for internal references ‘@ref’ and similar
     @-commands.

check_nodes_are_referenced($document)

     Check that all the nodes are referenced (in menu, @*ref or node
     direction).

     Should be called after ‘complete_node_tree_with_menus’ in order to
     have the autogenerated menus available.

complete_node_tree_with_menus($document)

     Complete nodes directions with menu directions.  Check consistency
     of menus, sectionning and nodes direction structures.

@children_nodes = get_node_node_childs_from_sectioning($node)

     _$node_ is a node tree element.  Find the node _$node_ children
     based on the sectioning structure.  For the node associated with
     ‘@top’ sectioning command, the sections associated with parts are
     considered.

new_block_command($element, $command_name)

     Complete _$element_ by adding the _$command_name_, the command line
     argument and ‘@end’ to turn the element to a proper block command.

$new_menu = new_complete_node_menu($node, $customization_information, $use_sections)

     Returns a ‘@menu’ Texinfo tree element for node _$node_, pointing
     to the children of the node obtained with the sectioning structure.
     If _$use_sections_ is set, use section names for the menu entry
     names.  _$customization_information_, if defined, should hold
     information needed for translations.  Translations are only needed
     when generating the top node menu.

$detailmenu = new_detailmenu($customization_information, $registrar, $identifier_target, $menus)

     Returns a detailmenu tree element formatted as a master node.
     _$menus_ is an array reference containing the regular menus of the
     Top node.  _$customization_information_ should hold information
     needed for translations and error reporting.

     The _$registrar_ argument can be set to a *note Texinfo::Report:
     Texinfo::Report NAME. object.  If the _$registrar_ argument is not
     set, _$customization_information_ is assumed to be a converter, and
     error reporting uses converters error messages reporting functions
     (*note Texinfo::Convert::Converter Registering error and warning
     messages::).

$entry = new_node_menu_entry($node, $use_sections)

     Returns the Texinfo tree corresponding to a single menu entry
     pointing to _$node_.  If _$use_sections_ is set, use the section
     name for the menu entry name.  Returns ‘undef’ if the node argument
     is missing.

$nodes_list = nodes_tree($document)

     Goes through nodes in _$document_ tree and set directions.  Returns
     the list of nodes.

     This functions sets, in the ‘extra’ node element hash:

     node_directions

          Hash reference with _up_, _next_ and _prev_ keys associated to
          elements corresponding to node line directions.

number_floats($float_information)

     Number the floats as described in the Texinfo manual.  Sets the
     _float_number_ key in the ‘extra’ hash of the float tree elements.

$command_name = section_level_adjusted_command_name($element)

     Return the sectioning command name corresponding to the sectioning
     element _$element_, adjusted in order to take into account raised
     and lowered sections, when needed.

$sections_list = sectioning_structure($document)

     This function goes through the parsed document tree and gather
     information on the document structure for sectioning commands.  It
     returns a reference on the sections elements list.

     It sets section elements ‘extra’ hash values:

     section_level

          The level in the sectioning tree hierarchy.  0 is for ‘@top’
          or ‘@part’, 1 for ‘@chapter’, ‘@appendix’...  This level is
          corrected by ‘@raisesections’ and ‘@lowersections’.

     section_number

          The sectioning element number.

     section_childs

          An array holding sectioning elements children of the element.

     section_directions

          Hash reference with _up_, _next_ and _prev_ keys associated to
          elements corresponding to sectioning structure directions.

     toplevel_directions

          Hash reference with _up_, _next_ and _prev_ keys associated to
          elements corresponding to toplevel sectioning structure
          directions, for elements like ‘@top’, ‘@chapter’, ‘@appendix’,
          not taking into account ‘@part’ elements.

     An element is created and used as the root of the sectioning
     commands tree.  This element is associated to the ‘extra’
     _sectioning_root_ key of the first section element of the sections
     list.  It is also at the top of the tree when following the _up_
     _section_directions_.

set_menus_node_directions($document);

     Goes through menu and set directions.

     This functions sets, in the ‘extra’ node element hash reference:

     menu_directions

          Hash reference with _up_, _next_ and _prev_ keys associated to
          elements corresponding to menu directions.

warn_non_empty_parts($document)

     Register a warning in for each ‘@part’ in global commands
     information of _$document_ that is not empty.


File: texi2any_internals.info,  Node: Texinfo::Structuring SEE ALSO,  Next: Texinfo::Structuring AUTHOR,  Prev: Texinfo::Structuring METHODS,  Up: Texinfo::Structuring

6.6 Texinfo::Structuring SEE ALSO
=================================

Texinfo manual (http://www.gnu.org/s/texinfo/manual/texinfo/), *note
Texinfo::Document: Texinfo::Document NAME.


File: texi2any_internals.info,  Node: Texinfo::Structuring AUTHOR,  Next: Texinfo::Structuring COPYRIGHT AND LICENSE,  Prev: Texinfo::Structuring SEE ALSO,  Up: Texinfo::Structuring

6.7 Texinfo::Structuring AUTHOR
===============================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Structuring COPYRIGHT AND LICENSE,  Prev: Texinfo::Structuring AUTHOR,  Up: Texinfo::Structuring

6.8 Texinfo::Structuring COPYRIGHT AND LICENSE
==============================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Report,  Next: Texinfo::Translations,  Prev: Texinfo::Structuring,  Up: Top

7 Texinfo::Report
*****************

* Menu:

* Texinfo::Report NAME::
* Texinfo::Report SYNOPSIS::
* Texinfo::Report NOTES::
* Texinfo::Report DESCRIPTION::
* Texinfo::Report METHODS::
* Texinfo::Report AUTHOR::
* Texinfo::Report COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Report NAME,  Next: Texinfo::Report SYNOPSIS,  Up: Texinfo::Report

7.1 Texinfo::Report NAME
========================

Texinfo::Report - Error storing for Texinfo modules


File: texi2any_internals.info,  Node: Texinfo::Report SYNOPSIS,  Next: Texinfo::Report NOTES,  Prev: Texinfo::Report NAME,  Up: Texinfo::Report

7.2 Texinfo::Report SYNOPSIS
============================

  use Texinfo::Report;

  my $registrar = Texinfo::Report::new();

  if ($warning_happened) {
    $registrar->line_warn($converter, sprintf(__("\@%s is wrongly used"),
                       $current->{'cmdname'}), $current->{'source_info'});
  }

  my ($errors, $errors_count) = $registrar->errors();
  foreach my $error_message (@$errors) {
    warn $error_message->{'error_line'};
  }

  $registrar->clear();


File: texi2any_internals.info,  Node: Texinfo::Report NOTES,  Next: Texinfo::Report DESCRIPTION,  Prev: Texinfo::Report SYNOPSIS,  Up: Texinfo::Report

7.3 Texinfo::Report NOTES
=========================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Report DESCRIPTION,  Next: Texinfo::Report METHODS,  Prev: Texinfo::Report NOTES,  Up: Texinfo::Report

7.4 Texinfo::Report DESCRIPTION
===============================

The ‘Texinfo::Report’ module helps with error handling.  Errors and
warnings can be setup, stored and retrieved later on.  This module is
used by the Texinfo modules *note Texinfo::Parser: Texinfo::Parser NAME.
and *note Texinfo::Convert::Converter: Texinfo::Convert::Converter NAME.


File: texi2any_internals.info,  Node: Texinfo::Report METHODS,  Next: Texinfo::Report AUTHOR,  Prev: Texinfo::Report DESCRIPTION,  Up: Texinfo::Report

7.5 Texinfo::Report METHODS
===========================

No method is exported in the default case.

   The ‘new’ method initializes a ‘Texinfo::Report’ object.  The errors
collected are available through the ‘errors’ method, the other methods
allow registering errors and warnings.

my $registrar = Texinfo::Report::new()

     Return an initialized ‘Texinfo::Report’ object.

($error_warnings_list, $error_count) = errors($registrar)

     This function returns as _$error_count_ the count of errors since
     calling ‘new’.  The _$error_warnings_list_ is an array of hash
     references one for each error, warning or error line continuation.
     Each of these has the following keys:

     continuation

          If set, the line is a continuation line of a message.

     error_line

          The text of the error formatted with the macro name, as
          needed.

     file_name

          The file name where the error or warning occurs.

     line_nr

          The line number of the error or warning.

     macro

          The user macro name that is expanded at the location of the
          error or warning.

     text

          The text of the error.

     type

          May be ‘warning’, or ‘error’.

$registrar->clear ()

     Clear the previously registered messages.

$registrar->add_formatted_message ($msg)

     Register the _$msg_ hash reference corresponding to an error,
     warning or error line continuation.  The _$msg_ hash reference
     should correspond to the structure returned by ‘errors’.

$registrar->line_warn($text, $error_location_info, $continuation, $debug, $silent)

$registrar->line_error($text, $error_location_info, $continuation, $debug, $silent)

     Register a warning or an error.  The _$text_ is the text of the
     error or warning.  The mandatory _$error_location_info_ holds the
     information on the error or warning location.  The
     _$error_location_info_ reference on hash may be obtained from
     Texinfo elements _source_info_ keys.  It may also be setup to point
     to a file name, using the ‘file_name’ key and to a line number,
     using the ‘line_nr’ key.  The ‘file_name’ key value should be a
     binary string.

     The _$continuation_ optional arguments, if true, conveys that the
     line is a continuation line of a message.

     The _$debug_ optional integer arguments sets the debug level.

     The _$silent_ optional arguments, if true, suppresses the output of
     a message that is output immediatly if debugging is set.

     The _source_info_ key of Texinfo tree elements is described in more
     details in *note Texinfo::Parser source_info::.

$registrar->document_warn($text, $program_name, $continuation)

$registrar->document_error($text, $program_name, $continuation)

     Register a document-wide error or warning.  _$text_ is the error or
     warning message.  The _$program_name_ is prepended to the message,
     if defined.  The _$continuation_ optional arguments, if true,
     conveys that the line is a continuation line of a message.


File: texi2any_internals.info,  Node: Texinfo::Report AUTHOR,  Next: Texinfo::Report COPYRIGHT AND LICENSE,  Prev: Texinfo::Report METHODS,  Up: Texinfo::Report

7.6 Texinfo::Report AUTHOR
==========================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Report COPYRIGHT AND LICENSE,  Prev: Texinfo::Report AUTHOR,  Up: Texinfo::Report

7.7 Texinfo::Report COPYRIGHT AND LICENSE
=========================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Translations,  Next: Texinfo::Transformations,  Prev: Texinfo::Report,  Up: Top

8 Texinfo::Translations
***********************

* Menu:

* Texinfo::Translations NAME::
* Texinfo::Translations SYNOPSIS::
* Texinfo::Translations NOTES::
* Texinfo::Translations DESCRIPTION::
* Texinfo::Translations METHODS::
* Texinfo::Translations SEE ALSO::
* Texinfo::Translations AUTHOR::
* Texinfo::Translations COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Translations NAME,  Next: Texinfo::Translations SYNOPSIS,  Up: Texinfo::Translations

8.1 Texinfo::Translations NAME
==============================

Texinfo::Translations - Translations of output documents strings for
Texinfo modules


File: texi2any_internals.info,  Node: Texinfo::Translations SYNOPSIS,  Next: Texinfo::Translations NOTES,  Prev: Texinfo::Translations NAME,  Up: Texinfo::Translations

8.2 Texinfo::Translations SYNOPSIS
==================================

  @ISA = qw(Texinfo::Translations);

  Texinfo::Translations::configure('LocaleData');

  my $tree_translated
    = Texinfo::Translations::gdt('See {reference} in @cite{{book}}',
                           $converter->get_conf('documentlanguage'),
                          {'reference' => $tree_reference,
                           'book'  => {'text' => $book_name}});


File: texi2any_internals.info,  Node: Texinfo::Translations NOTES,  Next: Texinfo::Translations DESCRIPTION,  Prev: Texinfo::Translations SYNOPSIS,  Up: Texinfo::Translations

8.3 Texinfo::Translations NOTES
===============================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Translations DESCRIPTION,  Next: Texinfo::Translations METHODS,  Prev: Texinfo::Translations NOTES,  Up: Texinfo::Translations

8.4 Texinfo::Translations DESCRIPTION
=====================================

The ‘Texinfo::Translations’ module helps with translations in output
documents.

   Translation of error messages is not described here, some elements
are in *note Texinfo::Common ‘__’ and ‘__p’: Texinfo::Common
$translated_string = __($msgid).


File: texi2any_internals.info,  Node: Texinfo::Translations METHODS,  Next: Texinfo::Translations SEE ALSO,  Prev: Texinfo::Translations DESCRIPTION,  Up: Texinfo::Translations

8.5 Texinfo::Translations METHODS
=================================

No method is exported.

   The ‘configure’ method sets the translation files base directory.  If
not called, system defaults are used.

configure($localesdir, $strings_textdomain)

     _$localesdir_ is the directory where translation files are found.
     The directory structure and files format should follow the
     conventions expected for gettext based internationalization
     (https://www.gnu.org/software/gettext/manual/html_node/Locating-Catalogs.html).
     The _$strings_textdomain_ is optional, if set, it determines the
     translation domain.

   The ‘gdt’ and ‘pgdt’ methods are used to translate strings to be
output in converted documents, and return a Texinfo tree.  The
‘gdt_string’ is similar but returns a simple string, for already
converted strings.

$tree = gdt($string, $lang, $replaced_substrings, $translation_context, $debug_level, $object, $translate_string_method)

$string = gdt_string($string, $lang, $replaced_substrings, $translation_context, $object, $translate_string_method)

     The _$string_ is a string to be translated.  With ‘gdt’ the
     function returns a Texinfo tree, as the string is interpreted as
     Texinfo code after translation.  With ‘gdt_string’ a string is
     returned.

     _$lang_ is the language used for the translation.

     _$replaced_substrings_ is an optional hash reference specifying
     some substitution to be done after the translation.  The key of the
     _$replaced_substrings_ hash reference identifies what is to be
     substituted.  In the string to be translated word in brace matching
     keys of _$replaced_substrings_ are replaced.  For ‘gdt’, the value
     is a Texinfo tree element that is substituted in the resulting
     Texinfo tree.  For ‘gdt_string’, the value is a string that is
     replaced in the resulting string.

     _$debug_level_ is an optional debugging level supplied to ‘gdt’,
     similar to the ‘DEBUG’ customization variable.  If set, the debug
     level minus one is passed to the Texinfo string parser called in
     ‘gdt’.

     The _$translation_context_ is optional.  If not ‘undef’ this is a
     translation context string for _$string_.  It is the first argument
     of ‘pgettext’ in the C API of Gettext.

     For example, in the following call, the string ‘See {reference} in
     @cite{{book}}’ is translated, then parsed as a Texinfo string, with
     _{reference}_ substituted by _$tree_reference_ in the resulting
     tree, and _{book}_ replaced by the associated Texinfo tree text
     element:

       $tree = gdt('See {reference} in @cite{{book}}', "ca",
                   {'reference' => $tree_reference,
                    'book'  => {'text' => $book_name}});

     By default, ‘gdt’ and ‘gdt_string’ call ‘translate_string’ to use a
     gettext-like infrastructure to retrieve the translated strings,
     using the _texinfo_document_ domain.  You can change the method
     used to retrieve the translated strings by providing a
     _$translate_string_method_ argument.  If not undef it should be a
     reference on a function that is called instead of
     ‘translate_string’.  The _$object_ is passed as first argument of
     the _$translate_string_method_, the other arguments are the same as
     *note ‘translate_string’: Texinfo::Translations $translated_string
     = translate_string($string, $lang, $translation_context).
     arguments.

$tree = pgdt($translation_context, $string, $lang, $replaced_substrings, $debug_level)

     Same to ‘gdt’ except that the _$translation_context_ is not
     optional.  Calls ‘gdt’.  This function is useful to mark strings
     with a translation context for translation.  This function is
     similar to pgettext in the Gettext C API.

   By default, in ‘gdt’, ‘gdt_string’ and ‘pgdt’ a string is translated
with ‘translate_string’.

$translated_string = translate_string($string, $lang, $translation_context)

     The _$string_ is a string to be translated.  _$lang_ is the
     language used for the translation.  The _$translation_context_ is
     optional.  If not ‘undef’ this is a translation context string for
     _$string_.  It is the first argument of ‘pgettext’ in the C API of
     Gettext.

     ‘translate_string’ uses a gettext-like infrastructure to retrieve
     the translated strings, using the _texinfo_document_ domain.


File: texi2any_internals.info,  Node: Texinfo::Translations SEE ALSO,  Next: Texinfo::Translations AUTHOR,  Prev: Texinfo::Translations METHODS,  Up: Texinfo::Translations

8.6 Texinfo::Translations SEE ALSO
==================================

GNU gettext utilities manual
(https://www.gnu.org/software/gettext/manual/).


File: texi2any_internals.info,  Node: Texinfo::Translations AUTHOR,  Next: Texinfo::Translations COPYRIGHT AND LICENSE,  Prev: Texinfo::Translations SEE ALSO,  Up: Texinfo::Translations

8.7 Texinfo::Translations AUTHOR
================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Translations COPYRIGHT AND LICENSE,  Prev: Texinfo::Translations AUTHOR,  Up: Texinfo::Translations

8.8 Texinfo::Translations COPYRIGHT AND LICENSE
===============================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Transformations,  Next: Texinfo::Indices,  Prev: Texinfo::Translations,  Up: Top

9 Texinfo::Transformations
**************************

* Menu:

* Texinfo::Transformations NAME::
* Texinfo::Transformations NOTES::
* Texinfo::Transformations DESCRIPTION::
* Texinfo::Transformations METHODS::
* Texinfo::Transformations SEE ALSO::
* Texinfo::Transformations AUTHOR::
* Texinfo::Transformations COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Transformations NAME,  Next: Texinfo::Transformations NOTES,  Up: Texinfo::Transformations

9.1 Texinfo::Transformations NAME
=================================

Texinfo::Transformations - transformations of Texinfo tree


File: texi2any_internals.info,  Node: Texinfo::Transformations NOTES,  Next: Texinfo::Transformations DESCRIPTION,  Prev: Texinfo::Transformations NAME,  Up: Texinfo::Transformations

9.2 Texinfo::Transformations NOTES
==================================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Transformations DESCRIPTION,  Next: Texinfo::Transformations METHODS,  Prev: Texinfo::Transformations NOTES,  Up: Texinfo::Transformations

9.3 Texinfo::Transformations DESCRIPTION
========================================

Includes miscellaneous methods such as as
‘insert_nodes_for_sectioning_commands’ that adds nodes for sectioning
commands without nodes and ‘complete_tree_nodes_menus’ and
‘complete_tree_nodes_missing_menu’ that completes the node menus based
on the sectioning tree.

   Methods for copying and modifying the Texinfo tree used for default
conversion to output formats are in *note Texinfo::ManipulateTree:
Texinfo::ManipulateTree NAME.


File: texi2any_internals.info,  Node: Texinfo::Transformations METHODS,  Next: Texinfo::Transformations SEE ALSO,  Prev: Texinfo::Transformations DESCRIPTION,  Up: Texinfo::Transformations

9.4 Texinfo::Transformations METHODS
====================================

No method is exported in the default case.

complete_tree_nodes_menus($tree, $add_section_names_in_entries)

     Add menu entries or whole menus for nodes associated with sections,
     based on the sectioning tree.  If the optional
     ‘$add_section_names_in_entries’ argument is set, a menu entry name
     is added using the section name.  This function should be called
     after *note sectioning_structure: Texinfo::Structuring
     $sections_list = sectioning_structure($document).

complete_tree_nodes_missing_menu($document, $use_section_names_in_entries)

     Add whole menus for nodes associated with sections and without
     menu, based on the _$document_ sectioning tree.  If the optional
     _$add_section_names_in_entries_ argument is set, a menu entry name
     is added using the section name.  This function should be called
     after *note sectioning_structure: Texinfo::Structuring
     $sections_list = sectioning_structure($document).

fill_gaps_in_sectioning($tree, $commands_heading_tree)

     This function adds empty ‘@unnumbered’ and similar commands in a
     tree to fill gaps in sectioning.  This may be used, for example,
     when converting from a format that can handle gaps in sectioning.
     _$tree_ is the tree root, which is modified by adding the new
     sectioning commands.

     In the default case, the added sectioning commands headings are
     empty.  It is possible to use instead the _$commands_heading_tree_
     Texinfo tree element.

     If the sectioning commands are lowered or raised (with
     ‘@raisesections’, ‘@lowersection’) the tree may be modified with
     ‘@raisesections’ or ‘@lowersection’ added to some tree elements.

insert_nodes_for_sectioning_commands($document)

     Insert nodes for sectioning commands without node in ‘$document’
     tree.

menu_to_simple_menu($menu)

set_menus_to_simple_menu($nodes_list)

     ‘menu_to_simple_menu’ transforms the tree of a menu tree element.
     ‘set_menus_to_simple_menu’ calls ‘menu_to_simple_menu’ for all the
     menus of the nodes in ‘$nodes_list’.

     A simple menu has no _menu_comment_, _menu_entry_ or
     _menu_entry_description_ container anymore, their content are
     merged directly in the menu in _preformatted_ container.

     Note that this kind of tree is not supported by other codes, so
     this transformation should be avoided unless one knows exactly what
     to expect.

protect_hashchar_at_line_beginning($tree, $registrar, $customization_information)

     Protect hash (#) character at the beginning of line such that they
     would not be considered as lines to be processed by the CPP
     processor.  The _$registrar_ and _$customization_information_
     arguments are optional.  If defined, the _$registrar_ argument
     should be a *note Texinfo::Report: Texinfo::Report NAME. object in
     which the errors and warnings encountered while parsing are
     registered.  If defined, _$customization_information_ should give
     access to customization through ‘get_conf’.  If both _$registrar_
     and _$customization_information_ are defined they are used for
     error reporting in case an hash character could not be protected
     because it appeared in a raw formatted environment (‘@tex’,
     ‘@html’...).

$modified_tree = reference_to_arg_in_tree($tree, $document)

     Modify _$tree_ by converting reference @-commands to simple text
     using one of the arguments.  This transformation can be used, for
     example, to remove reference @-command from constructed node names
     trees, as node names cannot contain reference @-command while there
     could be some in the tree used in input for the node name tree.
     The _$document_ argument is optional.  If given, the converted
     reference @-command is removed from the _$document_ internal
     references list.

     A _$modified_tree_ is not systematically returned, if the _$tree_
     in argument is not replaced, undef may also be returned.

regenerate_master_menu($document, $use_sections)

     Regenerate the _$document_ Top node master menu, replacing the
     first detailmenu in Top node menus or appending at the end of the
     Top node menu.

     _$use_sections_ is an optional argument.  If set, sections
     associated with nodes are used as labels in the generated master
     menu.


File: texi2any_internals.info,  Node: Texinfo::Transformations SEE ALSO,  Next: Texinfo::Transformations AUTHOR,  Prev: Texinfo::Transformations METHODS,  Up: Texinfo::Transformations

9.5 Texinfo::Transformations SEE ALSO
=====================================

Texinfo manual (http://www.gnu.org/s/texinfo/manual/texinfo/), *note
Texinfo::Parser: Texinfo::Parser NAME, *note Texinfo::ManipulateTree:
Texinfo::ManipulateTree NAME.


File: texi2any_internals.info,  Node: Texinfo::Transformations AUTHOR,  Next: Texinfo::Transformations COPYRIGHT AND LICENSE,  Prev: Texinfo::Transformations SEE ALSO,  Up: Texinfo::Transformations

9.6 Texinfo::Transformations AUTHOR
===================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Transformations COPYRIGHT AND LICENSE,  Prev: Texinfo::Transformations AUTHOR,  Up: Texinfo::Transformations

9.7 Texinfo::Transformations COPYRIGHT AND LICENSE
==================================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Indices,  Next: Texinfo::OutputUnits,  Prev: Texinfo::Transformations,  Up: Top

10 Texinfo::Indices
*******************

* Menu:

* Texinfo::Indices NAME::
* Texinfo::Indices SYNOPSIS::
* Texinfo::Indices NOTES::
* Texinfo::Indices DESCRIPTION::
* Texinfo::Indices METHODS::
* Texinfo::Indices SEE ALSO::
* Texinfo::Indices AUTHOR::
* Texinfo::Indices COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Indices NAME,  Next: Texinfo::Indices SYNOPSIS,  Up: Texinfo::Indices

10.1 Texinfo::Indices NAME
==========================

Texinfo::Indices - merging and sorting indices from Texinfo


File: texi2any_internals.info,  Node: Texinfo::Indices SYNOPSIS,  Next: Texinfo::Indices NOTES,  Prev: Texinfo::Indices NAME,  Up: Texinfo::Indices

10.2 Texinfo::Indices SYNOPSIS
==============================

  use Texinfo::Indices;

  # $document is a parsed Texinfo::Document document.
  my $indices_information = $document->indices_information();
  my $merged_index_entries
     = Texinfo::Indices::merge_indices($indices_information);

  # $registrar is a Texinfo::Report object.  $config is an object
  # implementing the get_conf() method.
  my $index_entries_sorted;
  if ($sort_by_letter) {
    $index_entries_sorted
      = Texinfo::Indices::sort_indices_by_letter($document, $registrar,
                                                   $config);
  } else {
    $index_entries_sorted
      = Texinfo::Indices::sort_indices_by_index($document, $registrar,
                                                  $config);
  }


File: texi2any_internals.info,  Node: Texinfo::Indices NOTES,  Next: Texinfo::Indices DESCRIPTION,  Prev: Texinfo::Indices SYNOPSIS,  Up: Texinfo::Indices

10.3 Texinfo::Indices NOTES
===========================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Indices DESCRIPTION,  Next: Texinfo::Indices METHODS,  Prev: Texinfo::Indices NOTES,  Up: Texinfo::Indices

10.4 Texinfo::Indices DESCRIPTION
=================================

‘merge_indices’ may be used to merge indices.  Document indices may be
sorted with ‘sort_indices_by_index’ or ‘sort_indices_by_letter’.  Other
functions deal with formatting of index entries as text or getting
information on index entry.

   Note that, in general, the functions used to merge or sort indices
should not be called directly, corresponding functions in *note
Texinfo::Document: Texinfo::Document NAME. already call the functions in
this module, and, in addition, cache the result with the document.
Furthermore, it should be even better to call converter functions, which
call document functions.


File: texi2any_internals.info,  Node: Texinfo::Indices METHODS,  Next: Texinfo::Indices SEE ALSO,  Prev: Texinfo::Indices DESCRIPTION,  Up: Texinfo::Indices

10.5 Texinfo::Indices METHODS
=============================

No method is exported.

$sort_string = index_entry_element_sort_string($document_info, $main_entry, $index_entry_element, $options, $prefer_reference_element)

     Return a string suitable as a sort string, for index entries.
     _$document_info_ is used by C code to retrieve the document data,
     using the ‘document_descriptor’ key.  _$document_info_ can be a
     converter based on *note Texinfo::Convert::Converter:
     Texinfo::Convert::Converter NAME, a *note Texinfo::Document:
     Texinfo::Document NAME. document, otherwise ‘document_descriptor’
     need, in general, to be set up explicitely.

     The tree element index entry processed is _$index_entry_element_,
     and can be a ‘@subentry’.  _$main_entry_ is the main index entry
     that can be used to gather information.

     The _$options_ are options used for Texinfo to text conversion for
     the generation of the sort string.  If the sort string is supposed
     to be output, the _$options_ are typically obtained from *note
     setup_index_entry_keys_formatting: Texinfo::Indices $option =
     setup_index_entry_keys_formatting($customization_information).

     If _$prefer_reference_element_ is set, prefer an untranslated
     element for the formatting as sort string.

($text, $command) = index_entry_first_letter_text_or_command($index_entry)

     Return the _$index_entry_ leading text _$text_ or textual command
     Texinfo tree hash reference _$command_.  Here textual commands
     means accent commands, brace commands without arguments used for
     character and glyph insertion and ‘@U’.

     This method can in particular be used to format the leading letter
     of an index entry using _$command_ instead of the sort string set
     by ‘sort_indices_by_letter’.

$merged_indices = merge_indices($indices_information)

     Returns a structure holding all the index entries by index name
     with all the entries of merged indices merged with those of the
     indice merged into.  The _$indices_information_ argument should be
     an hash reference with indices information, it is described in
     details in *note ‘Texinfo::Document::indices_information’:
     Texinfo::Document $indices_information =
     $document->indices_information().

     The _$merged_indices_ returned is a hash reference whose keys are
     the index names and values arrays of index entry structures
     described in details in *note Texinfo::Document index_entries::.

     In general, this method should not be called directly, instead
     *note ‘Texinfo::Document::merged_indices’: Texinfo::Document
     $merged_indices = $document->merged_indices(). should be called on
     a document, which calls ‘merge_indices’ if needed and associate the
     merged indices to the document.

$option = setup_index_entry_keys_formatting($customization_information)

     Return options relevant for index keys sorting for conversion of
     Texinfo to text to be output.

$index_entries_sorted = sort_indices_by_index($document, $registrar, $customization_information, $use_unicode_collation, $locale_lang)

$index_entries_sorted = sort_indices_by_letter($document, $registrar, $customization_information, $use_unicode_collation, $locale_lang)

     ‘sort_indices_by_letter’ sorts by index and letter, while
     ‘sort_indices_by_index’ sort all entries of an index together.
     Indices are obtained from _$document_, and should have been merged
     previously, in general by using *note
     ‘Texinfo::Document::merged_indices’: Texinfo::Document
     $merged_indices = $document->merged_indices().  In both cases, a
     hash reference with index names as keys _$index_entries_sorted_ is
     returned.

     By default, indices are sorted according to the _Unicode Collation
     Algorithm_ defined in the Unicode Technical Standard #10
     (http://www.unicode.org/reports/tr10/), without language-specific
     collation tailoring.  If _$use_unicode_collation_ is set to 0, the
     sorting will not use the _Unicode Collation Algorithm_ and simply
     sort according to the codepoints.  If _$locale_lang_ is set, the
     language is used for linguistic tailoring of the sorting, if
     possible.

     When sorting by letter, an array reference of letter hash
     references is associated with each index name.  Each letter hash
     reference has two keys, a _letter_ key with the letter, and an
     _entries_ key with an array reference of sorted index entries
     beginning with the letter.  The letter is a character string
     suitable for sorting letters, but is not necessarily the best to
     use for output.

     When simply sorting, the array of the sorted index entries is
     associated with the index name.

     The _$registrar_ argument can be set to a *note Texinfo::Report:
     Texinfo::Report NAME. object.  Error reporting also requires
     Texinfo customization variables information, which means an object
     implementing the ‘get_conf’ method, a converter (*note
     Texinfo::Convert::Converter Getting and setting customization
     variables::) or a document *note Texinfo::Document Getting
     customization options values registered in document::) as
     _$customization_information_ argument.  If the _$registrar_
     argument is not set, the object used to get customization
     information is assumed to be a converter, and the error reporting
     uses converters error messages reporting functions (*note
     Texinfo::Convert::Converter Registering error and warning
     messages::).

     In general, those methods should not be called directly, instead
     *note ‘Texinfo::Document::sorted_indices_by_index’:
     Texinfo::Document $sorted_indices =
     $document->sorted_indices_by_index($customization_information,
     $use_unicode_collation, $locale_lang). or *note
     ‘Texinfo::Document::sorted_indices_by_letter’: Texinfo::Document
     $sorted_indices =
     $document->sorted_indices_by_letter($customization_information,
     $use_unicode_collation, $locale_lang). should be called on a
     document.  The ‘Texinfo::Document’ functions call
     ‘sort_indices_by_index’ or ‘sort_indices_by_letter’ if needed and
     associate the sorted indices to the document.


File: texi2any_internals.info,  Node: Texinfo::Indices SEE ALSO,  Next: Texinfo::Indices AUTHOR,  Prev: Texinfo::Indices METHODS,  Up: Texinfo::Indices

10.6 Texinfo::Indices SEE ALSO
==============================

Texinfo manual (http://www.gnu.org/s/texinfo/manual/texinfo/), *note
Texinfo::Document: Texinfo::Document NAME.


File: texi2any_internals.info,  Node: Texinfo::Indices AUTHOR,  Next: Texinfo::Indices COPYRIGHT AND LICENSE,  Prev: Texinfo::Indices SEE ALSO,  Up: Texinfo::Indices

10.7 Texinfo::Indices AUTHOR
============================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Indices COPYRIGHT AND LICENSE,  Prev: Texinfo::Indices AUTHOR,  Up: Texinfo::Indices

10.8 Texinfo::Indices COPYRIGHT AND LICENSE
===========================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::OutputUnits,  Next: Texinfo::Convert::Texinfo,  Prev: Texinfo::Indices,  Up: Top

11 Texinfo::OutputUnits
***********************

* Menu:

* Texinfo::OutputUnits NAME::
* Texinfo::OutputUnits SYNOPSIS::
* Texinfo::OutputUnits NOTES::
* Texinfo::OutputUnits DESCRIPTION::
* Texinfo::OutputUnits METHODS::
* Texinfo::OutputUnits SEE ALSO::
* Texinfo::OutputUnits AUTHOR::
* Texinfo::OutputUnits COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::OutputUnits NAME,  Next: Texinfo::OutputUnits SYNOPSIS,  Up: Texinfo::OutputUnits

11.1 Texinfo::OutputUnits NAME
==============================

Texinfo::OutputUnits - setup and manage Texinfo document output units


File: texi2any_internals.info,  Node: Texinfo::OutputUnits SYNOPSIS,  Next: Texinfo::OutputUnits NOTES,  Prev: Texinfo::OutputUnits NAME,  Up: Texinfo::OutputUnits

11.2 Texinfo::OutputUnits SYNOPSIS
==================================

  use Texinfo::OutputUnits qw(split_by_node split_by_section split_pages
    units_directions units_file_directions);

  # $document is a parsed Texinfo::Document document.
  # When customization variables information is needed, it is obtained
  # from the $document by calling the get_conf() method.
  my $identifier_target = $document->labels_information();
  my $output_units;
  if ($split_at_nodes) {
    $output_units = split_by_node($document);
  } else {
    $output_units = split_by_section($document);
  }
  split_pages($output_units, $split);
  units_directions($identifier_target, $output_units,
                   $document->get_conf('DEBUG'));
  units_file_directions($output_units);


File: texi2any_internals.info,  Node: Texinfo::OutputUnits NOTES,  Next: Texinfo::OutputUnits DESCRIPTION,  Prev: Texinfo::OutputUnits SYNOPSIS,  Up: Texinfo::OutputUnits

11.3 Texinfo::OutputUnits NOTES
===============================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::OutputUnits DESCRIPTION,  Next: Texinfo::OutputUnits METHODS,  Prev: Texinfo::OutputUnits NOTES,  Up: Texinfo::OutputUnits

11.4 Texinfo::OutputUnits DESCRIPTION
=====================================

You can convert a Texinfo parsed document to an output format in a
Converter code by first splitting the nodes and sectioning commands in
units and then converting those units.  We will call the main unit of
output documents an _output unit_.  Usually a node is associated with a
following sectioning command, while a sectioning command is associated
with a previous node; they both together make up the output unit.
Either the node or the sectioning command is considered to be the main
element component.

   The module provides methods to setup output units associated with
node and sectioning commands of a Texinfo parsed document.  With
‘split_by_node’ nodes are used as the main component for the separation
of output units, while with ‘split_by_section’ the sectioning command
elements are used to separate output units.  The first mode is typical
of Info format, while the second corresponds better to a traditional
book.  Note that the result is different when there are unassociated
sectioning commands or nodes, in the usual case of each node being
associated with a sectioning command and each sectioning command being
associated with a node, splitting by node or by section does not make
much difference as each output unit will consist of the node and the
associated section in both cases.

   Output units are used for conversion to HTML and Info output formats.
See *note ‘Texinfo::Convert::Converter::convert_output_unit’:
Texinfo::Convert::Converter $result =
$converter->convert_output_unit($output_unit). for more information on
conversion of output units in Converters.  Output units are not relevant
for all the formats, the Texinfo tree can also be converted directly,
see *note ‘Texinfo::Convert::Converter::output_tree’:
Texinfo::Convert::Converter $result =
$converter->output_tree($document).

   The output units may be further grouped in _pages_, which are not
pages as in book pages, but more like web pages, and hold series of
output units.  The output units may have directions to other output
units prepared by ‘units_directions’.  ‘units_file_directions’ should
also set direction related to files, provided files are associated with
output units by the user.


File: texi2any_internals.info,  Node: Texinfo::OutputUnits METHODS,  Next: Texinfo::OutputUnits SEE ALSO,  Prev: Texinfo::OutputUnits DESCRIPTION,  Up: Texinfo::OutputUnits

11.5 Texinfo::OutputUnits METHODS
=================================

No method is exported in the default case.

* Menu:

* Texinfo::OutputUnits Output units creation::
* Texinfo::OutputUnits Grouping output units in pages::
* Texinfo::OutputUnits Setting output units directions::


File: texi2any_internals.info,  Node: Texinfo::OutputUnits Output units creation,  Next: Texinfo::OutputUnits Grouping output units in pages,  Up: Texinfo::OutputUnits METHODS

11.5.1 Output units creation
----------------------------

Output units are hash references created with the following keys:

‘type’

     The type of the output unit.  Set to ‘unit’ for output units
     associated with nodes and sectioning commands.

‘unit_command’

     Main node or sectioning command associated with the output unit.

‘unit_contents’

     This array reference holds all the nodes and sectioning commands
     Texinfo tree elements associated with the output unit (in order).
     The Texinfo tree nodes and sectioning commands elements have an
     ‘associated_unit’ key set that points to the output unit.

‘tree_unit_directions’

     Hash reference with _next_ and _prev_ pointing to the previous and
     the next output unit.

   Call one of the following methods to create output units and
associate them with nodes and sectioning command Texinfo tree elements:

$output_units = split_by_node($document)

     Returns a reference array of output units where a node is
     associated with the following sectioning commands.  Sectioning
     commands without nodes are also with the previous node, while nodes
     without sectioning commands are alone in their output units.

     Each output unit _unit_command_ key points to the node command
     associated with the output unit.

$output_units = split_by_section($document)

     Similarly with ‘split_by_node’, returns an array of output units.
     This time, lone nodes are associated with the previous sections and
     lone sections makes up an output unit.

     Output units _unit_command_ keys point to the sectioning command
     associated with the output unit.


File: texi2any_internals.info,  Node: Texinfo::OutputUnits Grouping output units in pages,  Next: Texinfo::OutputUnits Setting output units directions,  Prev: Texinfo::OutputUnits Output units creation,  Up: Texinfo::OutputUnits METHODS

11.5.2 Grouping output units in pages
-------------------------------------

You can call ‘split_pages’ to group together output units:

split_pages($output_units, $split)

     Add the _first_in_page_ key to each output unit in the array
     reference argument _$output_units_, set to the first output unit in
     the group.

     The first output unit in the group is based on the value of
     _$split_:

     ‘chapter’

          The output units are grouped at chapter or other toplevel
          sectioning commands.

     ‘node’

          Each output unit is on its own.

     ‘section’

          The output units are grouped at sectioning commands below
          chapter.

     empty string

          No splitting, all the output units are together.


File: texi2any_internals.info,  Node: Texinfo::OutputUnits Setting output units directions,  Prev: Texinfo::OutputUnits Grouping output units in pages,  Up: Texinfo::OutputUnits METHODS

11.5.3 Setting output units directions
--------------------------------------

You can call the following methods to set output units directions:

units_directions($identifier_target, $output_units, $print_debug)

     The _$identifier_target_ argument associates identifiers with
     target elements and is generally obtained from a parsed document,
     *note ‘Texinfo::Document::labels_information’: Texinfo::Document
     $identifier_target = labels_information($document).  Directions are
     set up for the output units in the array reference _$output_units_
     given in argument.  The corresponding hash is associated with the
     _directions_ key.  In this hash, keys correspond to directions
     while values are output units.

     _$print_debug_ is optional.  If set, some debugging information is
     printed.

     The following directions are set up:

     This

          The output unit itself.

     Forward

          Unit next.

     Back

          Previous output unit.

     NodeForward

          Following node output unit in reading order.  It is the next
          node unit, or the first in menu or the next of the up node.

     NodeBack

          Preceding node output unit.

     NodeUp

     NodeNext

     NodePrev

          The up, next and previous node output unit.

     Up

     Next

     Prev

          The up, next and previous section output unit.

     FastBack

          For top level output units, the previous top level output
          unit.  For other output units the up top level unit.  For
          example, for a chapter output unit it is the previous chapter
          output unit, for a subsection output unit it is the chapter
          output unit that contains the subsection.

     FastForward

          The next top level output unit.

units_file_directions($output_units)

     In the directions reference described above for ‘units_directions’,
     sets the _PrevFile_ and _NextFile_ directions to the output units
     in previous and following files.

     It also sets _FirstInFile*_ directions for all the output units by
     using the directions of the first output unit in file.  So, for
     example, _FirstInFileNodeNext_ is the output unit associated with
     the next node of the first output unit node in the file for each
     output unit in the file.

     The API for association of pages/output units to files is not
     defined yet.


File: texi2any_internals.info,  Node: Texinfo::OutputUnits SEE ALSO,  Next: Texinfo::OutputUnits AUTHOR,  Prev: Texinfo::OutputUnits METHODS,  Up: Texinfo::OutputUnits

11.6 Texinfo::OutputUnits SEE ALSO
==================================

Texinfo manual (http://www.gnu.org/s/texinfo/manual/texinfo/), *note
Texinfo::Document: Texinfo::Document NAME, *note
Texinfo::Convert::Converter: Texinfo::Convert::Converter NAME.


File: texi2any_internals.info,  Node: Texinfo::OutputUnits AUTHOR,  Next: Texinfo::OutputUnits COPYRIGHT AND LICENSE,  Prev: Texinfo::OutputUnits SEE ALSO,  Up: Texinfo::OutputUnits

11.7 Texinfo::OutputUnits AUTHOR
================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::OutputUnits COPYRIGHT AND LICENSE,  Prev: Texinfo::OutputUnits AUTHOR,  Up: Texinfo::OutputUnits

11.8 Texinfo::OutputUnits COPYRIGHT AND LICENSE
===============================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Convert::Texinfo,  Next: Texinfo::Convert::Utils,  Prev: Texinfo::OutputUnits,  Up: Top

12 Texinfo::Convert::Texinfo
****************************

* Menu:

* Texinfo::Convert::Texinfo NAME::
* Texinfo::Convert::Texinfo SYNOPSIS::
* Texinfo::Convert::Texinfo NOTES::
* Texinfo::Convert::Texinfo DESCRIPTION::
* Texinfo::Convert::Texinfo METHODS::
* Texinfo::Convert::Texinfo AUTHOR::
* Texinfo::Convert::Texinfo COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Convert::Texinfo NAME,  Next: Texinfo::Convert::Texinfo SYNOPSIS,  Up: Texinfo::Convert::Texinfo

12.1 Texinfo::Convert::Texinfo NAME
===================================

Texinfo::Convert::Texinfo - Convert a Texinfo tree to Texinfo code


File: texi2any_internals.info,  Node: Texinfo::Convert::Texinfo SYNOPSIS,  Next: Texinfo::Convert::Texinfo NOTES,  Prev: Texinfo::Convert::Texinfo NAME,  Up: Texinfo::Convert::Texinfo

12.2 Texinfo::Convert::Texinfo SYNOPSIS
=======================================

  use Texinfo::Convert::Texinfo qw(convert_to_texinfo);

  my $texinfo_text = convert_to_texinfo($tree);


File: texi2any_internals.info,  Node: Texinfo::Convert::Texinfo NOTES,  Next: Texinfo::Convert::Texinfo DESCRIPTION,  Prev: Texinfo::Convert::Texinfo SYNOPSIS,  Up: Texinfo::Convert::Texinfo

12.3 Texinfo::Convert::Texinfo NOTES
====================================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Convert::Texinfo DESCRIPTION,  Next: Texinfo::Convert::Texinfo METHODS,  Prev: Texinfo::Convert::Texinfo NOTES,  Up: Texinfo::Convert::Texinfo

12.4 Texinfo::Convert::Texinfo DESCRIPTION
==========================================

‘Texinfo::Convert::Texinfo’ converts a Texinfo tree (described in *note
Texinfo::Parser: Texinfo::Parser NAME.) to Texinfo code.  If the Texinfo
tree results from parsing some Texinfo document, The converted Texinfo
code should be exactly the same as the initial document, except that
user defined @-macros and ‘@value’ are expanded, and some invalid code
is discarded.


File: texi2any_internals.info,  Node: Texinfo::Convert::Texinfo METHODS,  Next: Texinfo::Convert::Texinfo AUTHOR,  Prev: Texinfo::Convert::Texinfo DESCRIPTION,  Up: Texinfo::Convert::Texinfo

12.5 Texinfo::Convert::Texinfo METHODS
======================================

$texinfo_text = convert_to_texinfo($tree)

     Converts the Texinfo tree _$tree_ to Texinfo code.


File: texi2any_internals.info,  Node: Texinfo::Convert::Texinfo AUTHOR,  Next: Texinfo::Convert::Texinfo COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::Texinfo METHODS,  Up: Texinfo::Convert::Texinfo

12.6 Texinfo::Convert::Texinfo AUTHOR
=====================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Convert::Texinfo COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::Texinfo AUTHOR,  Up: Texinfo::Convert::Texinfo

12.7 Texinfo::Convert::Texinfo COPYRIGHT AND LICENSE
====================================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Convert::Utils,  Next: Texinfo::Convert::Unicode,  Prev: Texinfo::Convert::Texinfo,  Up: Top

13 Texinfo::Convert::Utils
**************************

* Menu:

* Texinfo::Convert::Utils NAME::
* Texinfo::Convert::Utils SYNOPSIS::
* Texinfo::Convert::Utils NOTES::
* Texinfo::Convert::Utils DESCRIPTION::
* Texinfo::Convert::Utils METHODS::
* Texinfo::Convert::Utils SEE ALSO::
* Texinfo::Convert::Utils AUTHOR::
* Texinfo::Convert::Utils COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Convert::Utils NAME,  Next: Texinfo::Convert::Utils SYNOPSIS,  Up: Texinfo::Convert::Utils

13.1 Texinfo::Convert::Utils NAME
=================================

Texinfo::Convert::Utils - miscellaneous functions usable in all
converters


File: texi2any_internals.info,  Node: Texinfo::Convert::Utils SYNOPSIS,  Next: Texinfo::Convert::Utils NOTES,  Prev: Texinfo::Convert::Utils NAME,  Up: Texinfo::Convert::Utils

13.2 Texinfo::Convert::Utils SYNOPSIS
=====================================

  use Texinfo::Convert::Utils;

  my $today_tree = Texinfo::Convert::Utils::expand_today($converter);
  my $verbatiminclude_tree
     = Texinfo::Convert::Utils::expand_verbatiminclude($converter,
                                                       $verbatiminclude);


File: texi2any_internals.info,  Node: Texinfo::Convert::Utils NOTES,  Next: Texinfo::Convert::Utils DESCRIPTION,  Prev: Texinfo::Convert::Utils SYNOPSIS,  Up: Texinfo::Convert::Utils

13.3 Texinfo::Convert::Utils NOTES
==================================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Convert::Utils DESCRIPTION,  Next: Texinfo::Convert::Utils METHODS,  Prev: Texinfo::Convert::Utils NOTES,  Up: Texinfo::Convert::Utils

13.4 Texinfo::Convert::Utils DESCRIPTION
========================================

Miscellaneous methods that may be useful for backends converting Texinfo
trees.  This module contains the methods that can be used in converters
which do not inherit from *note Texinfo::Convert::Converter:
Texinfo::Convert::Converter NAME.


File: texi2any_internals.info,  Node: Texinfo::Convert::Utils METHODS,  Next: Texinfo::Convert::Utils SEE ALSO,  Prev: Texinfo::Convert::Utils DESCRIPTION,  Up: Texinfo::Convert::Utils

13.5 Texinfo::Convert::Utils METHODS
====================================

No method is exported in the default case.

   Most methods takes a _$converter_ as argument, in some cases
optionally, to get some information, see *note
Texinfo::Convert::Converter Getting and setting customization
variables:: and use methods for error reporting, see *note
Texinfo::Convert::Converter: Texinfo::Convert::Converter NAME. and *note
Texinfo::Report: Texinfo::Report NAME, and for strings translations, see
*note Texinfo::Translations: Texinfo::Translations NAME.

   Even when the caller does not inherit from *note
Texinfo::Convert::Converter: Texinfo::Convert::Converter NAME, it could
implement the required interfaces and could also have a converter
available in some cases, to call the functions which require a
converter.

$result = add_heading_number($converter, $heading_element, $heading_text, $do_number)

     The _$converter_ argument may be undef.  _$heading_element_ is a
     heading command tree element.  _$heading_text_ is the already
     formatted heading text.  if the _$do_number_ optional argument is
     defined and false, no number is used and the text is returned as
     is.  This function returns the heading with a number and the
     appendix part if needed.  If _$converter_ is not defined, the
     resulting string won't be translated.

($category, $class, $type, $name, $arguments) = definition_arguments_content($element)

     _$element_ should be a ‘@def*’ Texinfo tree element.  The
     _$category_, _$class_, _$type_, _$name_ are elements corresponding
     to the definition @-command line.  Texinfo elements on the
     @-command line corresponding to arguments in the function
     definition are returned in the _$arguments_ element.  Arguments
     correspond to text following the other elements on the @-command
     line.  If there is no argument, _$arguments_ will be ‘undef’.

$tree = definition_category_tree($converter, $def_line)

     The _$converter_ argument may be undef.  _$def_line_ is a
     ‘def_line’ Texinfo tree container.  This function returns a Texinfo
     tree corresponding to the category of the _$def_line_ taking the
     class into account, if there is one.  If _$converter_ is not
     defined, the resulting string won't be translated.

($encoded_name, $encoding) = $converter->encoded_input_file_name($character_string_name, $input_file_encoding)

($encoded_name, $encoding) = $converter->encoded_output_file_name($character_string_name)

     Encode _$character_string_name_ in the same way as other file names
     are encoded in converters, based on customization variables, and
     possibly on the input file encoding.  Return the encoded name and
     the encoding used to encode the name.  The
     ‘encoded_input_file_name’ and ‘encoded_output_file_name’ functions
     use different customization variables to determine the encoding.
     The _$converter_ argument is not optional and is used both to
     access to customization variables and to access to parser
     information.

     The _$input_file_encoding_ argument is optional.  If set, it is
     used for the input file encoding.  It is useful if there is more
     precise information on the input file encoding where the file name
     appeared.

$tree = expand_today($converter)

     Expand today's date, as a Texinfo tree with translations.  The
     _$converter_ argument is not optional and is used both to retrieve
     customization information and to translate strings.

$tree = expand_verbatiminclude($converter, $verbatiminclude)

     The _$converter_ argument is required and is used to output error
     messages and retrieve customization information *note
     Texinfo::Convert::Converter Getting and setting customization
     variables::.  _$verbatiminclude_ is a ‘@verbatiminclude’ tree
     element.  This function returns a ‘@verbatim’ tree elements after
     finding the included file and reading it.

($contents_element, \@accent_commands) = find_innermost_accent_contents($element)

     _$element_ should be an accent command Texinfo tree element.
     Returns an element containing the innermost accent @-command
     contents, normally a text element with one or two letter, and an
     array reference containing the accent commands nested in _$element_
     (including _$element_).  If there is no argument at all for the
     accent command, _$contents_element_ is ‘undef’.

$heading_element = find_root_command_next_heading_command($element, $expanded_format_raw, $do_not_ignore_contents, $do_not_ignore_index_entries)

     Return an heading element found in the _$element_ contents if it
     appears before contents that could be formatted.
     _$expanded_format_raw_ is a hash reference with raw output formats
     (html, docbook, xml...)  as keys, associated value should be set
     for expanded raw output formats.  _$do_not_ignore_contents_ is
     optional.  If set, ‘@contents’ and ‘@shortcontents’ are considered
     to be formatted.  _$do_not_ignore_index_entries_ is optional.  If
     set, index entries are considered to be formatted.

     Only heading elements corresponding to ‘@heading’, ‘@subheading’
     and similar @-commands that are not associated to nodes in general
     are found, not sectioning commands.


File: texi2any_internals.info,  Node: Texinfo::Convert::Utils SEE ALSO,  Next: Texinfo::Convert::Utils AUTHOR,  Prev: Texinfo::Convert::Utils METHODS,  Up: Texinfo::Convert::Utils

13.6 Texinfo::Convert::Utils SEE ALSO
=====================================

*note Texinfo::Convert::Converter: Texinfo::Convert::Converter NAME. and
*note Texinfo::Translations: Texinfo::Translations NAME.


File: texi2any_internals.info,  Node: Texinfo::Convert::Utils AUTHOR,  Next: Texinfo::Convert::Utils COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::Utils SEE ALSO,  Up: Texinfo::Convert::Utils

13.7 Texinfo::Convert::Utils AUTHOR
===================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Convert::Utils COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::Utils AUTHOR,  Up: Texinfo::Convert::Utils

13.8 Texinfo::Convert::Utils COPYRIGHT AND LICENSE
==================================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Convert::Unicode,  Next: Texinfo::Convert::NodeNameNormalization,  Prev: Texinfo::Convert::Utils,  Up: Top

14 Texinfo::Convert::Unicode
****************************

* Menu:

* Texinfo::Convert::Unicode NAME::
* Texinfo::Convert::Unicode SYNOPSIS::
* Texinfo::Convert::Unicode NOTES::
* Texinfo::Convert::Unicode DESCRIPTION::
* Texinfo::Convert::Unicode METHODS::
* Texinfo::Convert::Unicode AUTHOR::
* Texinfo::Convert::Unicode COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Convert::Unicode NAME,  Next: Texinfo::Convert::Unicode SYNOPSIS,  Up: Texinfo::Convert::Unicode

14.1 Texinfo::Convert::Unicode NAME
===================================

Texinfo::Convert::Unicode - Representation as Unicode characters


File: texi2any_internals.info,  Node: Texinfo::Convert::Unicode SYNOPSIS,  Next: Texinfo::Convert::Unicode NOTES,  Prev: Texinfo::Convert::Unicode NAME,  Up: Texinfo::Convert::Unicode

14.2 Texinfo::Convert::Unicode SYNOPSIS
=======================================

  use Texinfo::Convert::Unicode qw(unicode_accent encoded_accents
                                   unicode_text);
  use Texinfo::Convert::Text qw(convert_to_text);

  my ($contents_element, $stack)
      = Texinfo::Convert::Utils::find_innermost_accent_contents($accent);

  my $formatted_accents = encoded_accents ($converter,
                 convert_to_text($contents_element), $stack, $encoding,
                        \&Texinfo::Text::ascii_accent_fallback);

  my $accent_text = unicode_accent('e', $accent_command);


File: texi2any_internals.info,  Node: Texinfo::Convert::Unicode NOTES,  Next: Texinfo::Convert::Unicode DESCRIPTION,  Prev: Texinfo::Convert::Unicode SYNOPSIS,  Up: Texinfo::Convert::Unicode

14.3 Texinfo::Convert::Unicode NOTES
====================================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Convert::Unicode DESCRIPTION,  Next: Texinfo::Convert::Unicode METHODS,  Prev: Texinfo::Convert::Unicode NOTES,  Up: Texinfo::Convert::Unicode

14.4 Texinfo::Convert::Unicode DESCRIPTION
==========================================

‘Texinfo::Convert::Unicode’ provides methods dealing with Unicode
representation and conversion of Unicode code points, to be used in
Texinfo converters.

   When an encoding supported in Texinfo is given as argument of a
method of the module, the accented letters or characters returned by the
method should only be represented by Unicode code points if it is known
that Perl should manage to convert the Unicode code points to encoded
characters in the encoding character set.  Note that the actual
conversion is done by Perl, not by the module.


File: texi2any_internals.info,  Node: Texinfo::Convert::Unicode METHODS,  Next: Texinfo::Convert::Unicode AUTHOR,  Prev: Texinfo::Convert::Unicode DESCRIPTION,  Up: Texinfo::Convert::Unicode

14.5 Texinfo::Convert::Unicode METHODS
======================================

$result = brace_no_arg_command($command_name, $encoding)

     Return the Unicode representation of a command with brace and no
     argument _$command_name_ (like ‘@bullet{}’, ‘@aa{}’ or
     ‘@guilsinglleft{}’), or ‘undef’ if the Unicode representation
     cannot be converted to encoding _$encoding_.

$possible_conversion = check_unicode_point_conversion($arg, $output_debug)

     Check that it is possible to output actual UTF-8 binary bytes
     corresponding to the Unicode code point string _$arg_ (such as
     ‘201D’).  Perl gives a warning and will not output UTF-8 for
     Unicode non-characters such as U+10FFFF. If the optional
     _$output_debug_ argument is set, a debugging output warning is
     emitted if the test of the conversion failed.  Returns 1 if the
     conversion is possible and can be attempted, 0 otherwise.

$result = encoded_accents($converter, $text, $stack, $encoding, $format_accent, $set_case)

     _$encoding_ is the encoding the accented characters should be
     encoded to.  If _$encoding_ not set, _$result_ is set to ‘undef’.
     Nested accents and their content are passed with _$text_ and
     _$stack_.  _$text_ is the text appearing within nested accent
     commands.  _$stack_ is an array reference holding the nested
     accents texinfo tree elements.  In general, _$text_ is the
     formatted contents and _$stack_ the stack returned by *note
     Texinfo::Convert::Utils::find_innermost_accent_contents:
     Texinfo::Convert::Utils ($contents_element, \@accent_commands) =
     find_innermost_accent_contents($element).  The function tries to
     convert as much as possible the accents to _$encoding_ starting
     from the innermost accent.

     _$format_accent_ is a function reference that is used to format the
     accent commands if there is no encoded character available at some
     point of the conversion of the _$stack_.  _$converter_ is a
     converter object optionaly used by _$format_accent_.  It may be
     ‘undef’ if there is no need of converter object in
     _$format_accent_.

     The _$set_case_ argument is optional.  If _$set_case_ is positive,
     the result is upper-cased, while if it is negative, the result is
     lower-cased.

$width = string_width($string)

     Return the string width, taking into account the fact that some
     characters have a zero width (like composing accents) while some
     have a width of 2 (most chinese characters, for example).

$result = unicode_accent($text, $accent_command)

     _$text_ is the text appearing within an accent command.
     _$accent_command_ should be a Texinfo tree element corresponding to
     an accent command taking an argument.  The function returns the
     Unicode representation of the accented character.

$is_decoded = unicode_point_decoded_in_encoding($encoding, $unicode_point)

     Return true if the _$unicode_point_ will be encoded in the encoding
     _$encoding_.  The _$unicode_point_ should be specified as a four
     letter string describing an hexadecimal number with letters in
     upper case (such as ‘201D’).  Tables are used to determine if the
     _$unicode_point_ will be encoded, when the encoding does not cover
     the whole Unicode range.

     If the encoding is not supported in Texinfo, the result will always
     be false.

$result = unicode_text($text, $in_code)

     Return _$text_ with dashes and quotes corresponding, for example to
     ‘---’ or ‘'’, represented as Unicode code points.  If _$in_code_ is
     set, the text is considered to be in code style.


File: texi2any_internals.info,  Node: Texinfo::Convert::Unicode AUTHOR,  Next: Texinfo::Convert::Unicode COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::Unicode METHODS,  Up: Texinfo::Convert::Unicode

14.6 Texinfo::Convert::Unicode AUTHOR
=====================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Convert::Unicode COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::Unicode AUTHOR,  Up: Texinfo::Convert::Unicode

14.7 Texinfo::Convert::Unicode COPYRIGHT AND LICENSE
====================================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Convert::NodeNameNormalization,  Next: Texinfo::Convert::Text,  Prev: Texinfo::Convert::Unicode,  Up: Top

15 Texinfo::Convert::NodeNameNormalization
******************************************

* Menu:

* Texinfo::Convert::NodeNameNormalization NAME::
* Texinfo::Convert::NodeNameNormalization SYNOPSIS::
* Texinfo::Convert::NodeNameNormalization NOTES::
* Texinfo::Convert::NodeNameNormalization DESCRIPTION::
* Texinfo::Convert::NodeNameNormalization METHODS::
* Texinfo::Convert::NodeNameNormalization AUTHOR::
* Texinfo::Convert::NodeNameNormalization COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Convert::NodeNameNormalization NAME,  Next: Texinfo::Convert::NodeNameNormalization SYNOPSIS,  Up: Texinfo::Convert::NodeNameNormalization

15.1 Texinfo::Convert::NodeNameNormalization NAME
=================================================

Texinfo::Convert::NodeNameNormalization - Normalize and transliterate
Texinfo trees


File: texi2any_internals.info,  Node: Texinfo::Convert::NodeNameNormalization SYNOPSIS,  Next: Texinfo::Convert::NodeNameNormalization NOTES,  Prev: Texinfo::Convert::NodeNameNormalization NAME,  Up: Texinfo::Convert::NodeNameNormalization

15.2 Texinfo::Convert::NodeNameNormalization SYNOPSIS
=====================================================

  use Texinfo::Convert::NodeNameNormalization qw(convert_to_identifier
                                        normalize_transliterate_texinfo);

  my $normalized = convert_to_identifier($node_element->{'args'}->[0]);

  my $file_name
    = normalize_transliterate_texinfo($section_element->{'args'}->[0]);


File: texi2any_internals.info,  Node: Texinfo::Convert::NodeNameNormalization NOTES,  Next: Texinfo::Convert::NodeNameNormalization DESCRIPTION,  Prev: Texinfo::Convert::NodeNameNormalization SYNOPSIS,  Up: Texinfo::Convert::NodeNameNormalization

15.3 Texinfo::Convert::NodeNameNormalization NOTES
==================================================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Convert::NodeNameNormalization DESCRIPTION,  Next: Texinfo::Convert::NodeNameNormalization METHODS,  Prev: Texinfo::Convert::NodeNameNormalization NOTES,  Up: Texinfo::Convert::NodeNameNormalization

15.4 Texinfo::Convert::NodeNameNormalization DESCRIPTION
========================================================

‘Texinfo::Convert::NodeNameNormalization’ allows to normalize node names
with ‘convert_to_normalized’ and ‘convert_to_identifier’.
‘convert_to_identifier’ follows the specification described in the
Texinfo manual _HTML Xref_ node.  This is useful whenever one want a
unique identifier for Texinfo content, which is only composed of letter,
digits, ‘-’ and ‘_’, for example for ‘@node’, ‘@float’ and ‘@anchor’
names normalization.  ‘convert_to_normalized’ leaves out the step of
protecting characters.

   It is also possible to transliterate non-ASCII letters, instead of
mangling them, with ‘normalize_transliterate_texinfo’, losing the
uniqueness feature of normalized node names.

   Another method, ‘transliterate_protect_file_name’ transliterates
non-ASCII letters and protect characters that should not appear on file
names.


File: texi2any_internals.info,  Node: Texinfo::Convert::NodeNameNormalization METHODS,  Next: Texinfo::Convert::NodeNameNormalization AUTHOR,  Prev: Texinfo::Convert::NodeNameNormalization DESCRIPTION,  Up: Texinfo::Convert::NodeNameNormalization

15.5 Texinfo::Convert::NodeNameNormalization METHODS
====================================================

$partially_normalized = convert_to_normalized($tree)

     The Texinfo _$tree_ is returned as a string, with @-commands and
     spaces normalized as described in the Texinfo manual _HTML Xref_
     node.  ASCII 7-bit characters other than spaces and non-ASCII
     characters are left as is in the resulting string.

$normalized = convert_to_identifier($tree)

     The Texinfo _$tree_ is returned as a string, normalized as
     described in the Texinfo manual _HTML Xref_ node.

     The result will be poor for Texinfo trees which are not @-command
     arguments (on an @-command line or in braces), for instance if the
     tree contains ‘@node’ or block commands.

$transliterated = normalize_transliterate_texinfo($tree, $no_unidecode)

     The Texinfo _$tree_ is returned as a string, with non-ASCII letters
     transliterated as ASCII, but otherwise similar with
     ‘convert_to_identifier’ output.  If the optional _$no_unidecode_
     argument is set, ‘Text::Unidecode’ is not used for characters whose
     transliteration is not built-in.

$transliterated = transliterate_texinfo($tree, $no_unidecode)

     The Texinfo _$tree_ is returned as a string, with non-ASCII letters
     transliterated as ASCII. If the optional _$no_unidecode_ argument
     is set, ‘Text::Unidecode’ is not used for characters whose
     transliteration is not built-in.

$file_name = transliterate_protect_file_name($string, $no_unidecode)

     The string _$string_ is returned with non-ASCII letters
     transliterated as ASCII, and ASCII characters not safe in file
     names protected as in node normalization.  If the optional
     _$no_unidecode_ argument is set, ‘Text::Unidecode’ is not used for
     characters whose transliteration is not built-in.


File: texi2any_internals.info,  Node: Texinfo::Convert::NodeNameNormalization AUTHOR,  Next: Texinfo::Convert::NodeNameNormalization COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::NodeNameNormalization METHODS,  Up: Texinfo::Convert::NodeNameNormalization

15.6 Texinfo::Convert::NodeNameNormalization AUTHOR
===================================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Convert::NodeNameNormalization COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::NodeNameNormalization AUTHOR,  Up: Texinfo::Convert::NodeNameNormalization

15.7 Texinfo::Convert::NodeNameNormalization COPYRIGHT AND LICENSE
==================================================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Convert::Text,  Next: Texinfo::Convert::Converter,  Prev: Texinfo::Convert::NodeNameNormalization,  Up: Top

16 Texinfo::Convert::Text
*************************

* Menu:

* Texinfo::Convert::Text NAME::
* Texinfo::Convert::Text SYNOPSIS::
* Texinfo::Convert::Text NOTES::
* Texinfo::Convert::Text DESCRIPTION::
* Texinfo::Convert::Text METHODS::
* Texinfo::Convert::Text AUTHOR::
* Texinfo::Convert::Text COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Convert::Text NAME,  Next: Texinfo::Convert::Text SYNOPSIS,  Up: Texinfo::Convert::Text

16.1 Texinfo::Convert::Text NAME
================================

Texinfo::Convert::Text - Convert Texinfo tree to simple text


File: texi2any_internals.info,  Node: Texinfo::Convert::Text SYNOPSIS,  Next: Texinfo::Convert::Text NOTES,  Prev: Texinfo::Convert::Text NAME,  Up: Texinfo::Convert::Text

16.2 Texinfo::Convert::Text SYNOPSIS
====================================

  use Texinfo::Convert::Text qw(convert_to_text text_accents);

  my $result = convert_to_text($tree);

  my $accents_text = text_accents($accents, 'utf-8');

  # using text conversion options set in $converter derived from
  # Texinfo::Convert::Converter
  my $text_options = $converter->{'convert_text_options'};

  set_options_code($text_options);
  my $result_with_converter = convert_to_text($tree, $text_options);
  reset_options_code($text_options);


File: texi2any_internals.info,  Node: Texinfo::Convert::Text NOTES,  Next: Texinfo::Convert::Text DESCRIPTION,  Prev: Texinfo::Convert::Text SYNOPSIS,  Up: Texinfo::Convert::Text

16.3 Texinfo::Convert::Text NOTES
=================================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Convert::Text DESCRIPTION,  Next: Texinfo::Convert::Text METHODS,  Prev: Texinfo::Convert::Text NOTES,  Up: Texinfo::Convert::Text

16.4 Texinfo::Convert::Text DESCRIPTION
=======================================

‘Texinfo::Convert::Text’ is a simple backend that converts a Texinfo
tree to simple text.  It is used in converters, especially for file
names.  The conversion is very simple, and, in the default case, cannot
handle error handling nor some output strings translation.

   Converters derived from *note Texinfo::Convert::Converter:
Texinfo::Convert::Converter NAME. should have conversion text options
preset associated to the ‘convert_text_options’ key.

   The main function is ‘convert_to_text’.  The text conversion options
can be modified with the ‘set_*’ functions before calling
‘convert_to_text’, and reset afterwards with the corresponding ‘reset_*’
functions.


File: texi2any_internals.info,  Node: Texinfo::Convert::Text METHODS,  Next: Texinfo::Convert::Text AUTHOR,  Prev: Texinfo::Convert::Text DESCRIPTION,  Up: Texinfo::Convert::Text

16.5 Texinfo::Convert::Text METHODS
===================================

$result = convert_to_text($tree, $text_options)

     Convert a Texinfo tree to simple text.  _$text_options_ is a hash
     reference of options.  The converter is very simple, and has almost
     no internal state besides the options.  It cannot handle as is
     output strings translation or error storing.

     If the _converter_ option is set in _$text_options_, some
     additional features may be available for the conversion of some
     @-commands, like output strings translation or error reporting.

     The ‘NUMBER_SECTIONS’, ‘ASCII_GLYPH’ and ‘TEST’ options
     corresponding to customization variables may be set in
     _$text_options_.  The following options may also be set:

     enabled_encoding

          If set, the value is considered to be the encoding name
          texinfo accented letters should be converted to.  This option
          being set corresponds to the ‘--enable-encoding’ option, or
          the ‘ENABLE_ENCODING’ customization variable for Info and
          Plaintext and for some conversion to text in other formats.
          For file names in HTML and LaTeX, and for DocBook or Texinfo
          XML, this variable should in general be set unless the output
          encoding is US-ASCII.

     set_case

          If positive, the text is upper-cased, if negative, the text is
          lower-cased.

     sort_string

          A somehow internal option to convert to text more suitable for
          alphabetical sorting rather than presentation.

     converter

          If this converter object is passed to the function, some
          features of this object may be used during conversion.  Mostly
          error reporting and strings translation.  See also *note
          Texinfo::Convert::Converter: Texinfo::Convert::Converter NAME.

     expanded_formats

          A reference on a hash.  The keys should be format names (like
          ‘html’, ‘tex’), and if the corresponding value is set, the
          format is expanded.

$result_accent_text = ascii_accent_fallback($converter, $text, $accent_command)

     _$text_ is the text appearing within an accent command.
     _$accent_command_ should be a Texinfo tree element corresponding to
     an accent command taking an argument.  The function returns a
     transliteration of the accented character.  The _$converter_
     argument is ignored, but needed for this function to be in argument
     of functions that need a fallback for accents conversion.

set_options_code($text_options)

reset_options_code($text_options)

     ‘set_options_code’ sets _$text_options_ to be in code style.
     (mostly ‘--’, ‘---’, ‘''’ and ‘``’ are kept as is).
     ‘reset_options_code’ undo the effect of ‘set_options_code’.

     ‘reset_options_code’ should always be called after
     ‘set_options_code’.

set_options_encoding($text_options, $encoding)

set_options_encoding_if_not_ascii($customization_information, $text_options)

reset_options_encoding($text_options)

     ‘set_options_encoding’ sets ‘enabled_encoding’ in _$text_options_
     to _$encoding_.  ‘set_options_encoding_if_not_ascii’ sets
     ‘enabled_encoding’ in _$text_options_ based on customization
     options associated to _$customization_information_.  In that case,
     ‘enabled_encoding’ is set unless the output encoding is US-ASCII
     even if ‘ENABLE_ENCODING’ is not set.

     ‘reset_options_encoding’ undo the effect of ‘set_options_encoding’
     and ‘set_options_encoding_if_not_ascii’ and should always be called
     after these functions.

$accents_text = text_accents($accents, $encoding, $set_case)

     _$accents_ is an accent command that may contain other nested
     accent commands.  The function will format the whole stack of
     nested accent commands and the innermost text.  If _$encoding_ is
     set, the formatted text is converted to this encoding as much as
     possible instead of being converted as simple ASCII. If _$set_case_
     is positive, the result is meant to be upper-cased, if it is
     negative, the result is to be lower-cased.


File: texi2any_internals.info,  Node: Texinfo::Convert::Text AUTHOR,  Next: Texinfo::Convert::Text COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::Text METHODS,  Up: Texinfo::Convert::Text

16.6 Texinfo::Convert::Text AUTHOR
==================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Convert::Text COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::Text AUTHOR,  Up: Texinfo::Convert::Text

16.7 Texinfo::Convert::Text COPYRIGHT AND LICENSE
=================================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter,  Next: Texinfo::Convert::Info,  Prev: Texinfo::Convert::Text,  Up: Top

17 Texinfo::Convert::Converter
******************************

* Menu:

* Texinfo::Convert::Converter NAME::
* Texinfo::Convert::Converter SYNOPSIS::
* Texinfo::Convert::Converter NOTES::
* Texinfo::Convert::Converter DESCRIPTION::
* Texinfo::Convert::Converter METHODS::
* Texinfo::Convert::Converter SEE ALSO::
* Texinfo::Convert::Converter AUTHOR::
* Texinfo::Convert::Converter COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter NAME,  Next: Texinfo::Convert::Converter SYNOPSIS,  Up: Texinfo::Convert::Converter

17.1 Texinfo::Convert::Converter NAME
=====================================

Texinfo::Convert::Converter - Parent class for Texinfo tree converters


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter SYNOPSIS,  Next: Texinfo::Convert::Converter NOTES,  Prev: Texinfo::Convert::Converter NAME,  Up: Texinfo::Convert::Converter

17.2 Texinfo::Convert::Converter SYNOPSIS
=========================================

  package Texinfo::Convert::MyConverter;

  use Texinfo::Convert::Converter;
  @ISA = qw(Texinfo::Convert::Converter);

  sub converter_defaults ($$) {
    return \%myconverter_defaults;
  }
  sub converter_initialize($) {
    my $self = shift;
    ...
  }

  sub conversion_initialization($;$) {
    my $self = shift;
    my $document = shift;

    if ($document) {
      $self->set_document($document);
    }

    $self->{'document_context'} = [{}];
    ...
  }

  sub conversion_finalization($) {
    my $self = shift;
  }

  sub convert_tree($$) {
    ...
  }

  sub convert($$) {
    my $self = shift;
    my $document = shift;

    $self->conversion_initialization($document);

    ...
    $self->conversion_finalization();
  }

  sub output($$) {
    my $self = shift;
    my $document = shift;

    $self->conversion_initialization($document);

    ...
    $self->conversion_finalization();
    ...
  }

  # end of Texinfo::Convert::MyConverter

  my $converter = Texinfo::Convert::MyConverter->converter();
  $converter->output($texinfo_parsed_document);


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter NOTES,  Next: Texinfo::Convert::Converter DESCRIPTION,  Prev: Texinfo::Convert::Converter SYNOPSIS,  Up: Texinfo::Convert::Converter

17.3 Texinfo::Convert::Converter NOTES
======================================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter DESCRIPTION,  Next: Texinfo::Convert::Converter METHODS,  Prev: Texinfo::Convert::Converter NOTES,  Up: Texinfo::Convert::Converter

17.4 Texinfo::Convert::Converter DESCRIPTION
============================================

‘Texinfo::Convert::Converter’ is a super class that can be used to
simplify converters initialization.  The class also provide some useful
methods.  In turn, the converter should define some methods for
conversion.  In general ‘convert_tree’, ‘output’ and ‘convert’ should be
defined.

$result = $converter->convert_tree($tree)

     The ‘convert_tree’ method is mandatory and should convert portions
     of Texinfo tree.  Takes a _$converter_ and Texinfo tree _$tree_ in
     arguments.  Returns the converted output.

$result = $converter->output($document)

$result = $converter->output_tree($document)

     The ‘output’ method is used by converters as entry point for
     conversion to a file with headers and so on.  This method should be
     implemented by converters.  ‘output’ is called from ‘texi2any’.
     ‘output’ takes a _$converter_ and a Texinfo parsed document
     ‘Texinfo::Document’ _$document_ as arguments.

     ‘Texinfo::Convert::Converter’ implements a generic ‘output_tree’
     function suitable for conversion of the Texinfo tree, with the
     conversion result output into a file or returned from the function.
     ‘output_tree’ takes a _$converter_ and a Texinfo parsed document
     ‘Texinfo::Document’ _$document_ as arguments.  In a converter that
     uses ‘output_tree’, ‘output’ is in general defined as:

       sub output($$) {
         my $self = shift;
         my $document = shift;
     
         return $self->output_tree($document);
       }

     In general, ‘output’ and ‘output_tree’ output to files and return
     ‘undef’.  When the output file name is an empty string, however, it
     is customary for ‘output’ and ‘output_tree’ to return the output as
     a character string instead.  The output file name is obtained in
     ‘output_tree’ through a call to *note
     ‘determine_files_and_directory’: Texinfo::Convert::Converter
     ($output_file, $destination_directory, $output_filename,
     $document_name, $input_basefile) =
     $converter->determine_files_and_directory($output_format).  In
     general ‘determine_files_and_directory’ is also used when
     ‘output_tree’ is not used.

$result = $converter->convert($document)

     Entry point for the conversion of a Texinfo parsed document to an
     output format, without the headers usually done when outputting to
     a file.  ‘convert’ takes a _$converter_ and a Texinfo parsed
     document ‘Texinfo::Document’ _$document_ as arguments.  Returns the
     output as a character string.  Not mandatory, not called from
     ‘texi2any’, but used in the ‘texi2any’ test suite.

$result = $converter->convert_output_unit($output_unit)

     Can be used for the conversion of output units by converters.
     ‘convert_output_unit’ takes a _$converter_ and an output unit
     _$output_unit_ as argument.  The implementation of
     ‘convert_output_unit’ of ‘Texinfo::Convert::Converter’ could be
     suitable in many cases.  Output units are typically returned by
     *note ‘Texinfo::OutputUnits’ ‘split_by_section’:
     Texinfo::OutputUnits $output_units = split_by_section($document).
     or *note ‘Texinfo::OutputUnits’ ‘split_by_node’:
     Texinfo::OutputUnits $output_units = split_by_node($document).

   Two methods, ‘converter_defaults’ and ‘converter_initialize’ are used
for initialization, to give information to ‘Texinfo::Convert::Converter’
and can be redefined in converters.

   To help with the conversion, the ‘set_document’ function associates a
‘Texinfo::Document’ to a converter.  Other methods are called in default
implementations to be redefined to call code at specific moments of the
conversion.  ‘conversion_initialization’, for instance, is generally
called at the beginning of ‘output’, ‘output_tree’ and ‘convert’.
‘conversion_finalization’ is generally called at the end of
‘output_tree’, ‘output’ and ‘convert’.  ‘output_tree’ also calls the
‘conversion_output_begin’ method before the Texinfo tree conversion to
obtain the beginning of the output.  ‘output_tree’ calls the
‘conversion_output_end’ method after the Texinfo tree conversion to
obtain the end of the output.

   For output formats based on output units conversion, the
‘Texinfo::Convert::Plaintext’ ‘output’ method could be a good starting
point.  HTML and Info output are also based on output units conversion.
Output units are not relevant for all the formats, the Texinfo tree can
also be converted directly, in general by using ‘output_tree’.  This is
how the other Converters are implemented.

   Existing backends based on ‘output_tree’ may be used as examples.
‘Texinfo::Convert::Texinfo’ together with
‘Texinfo::Convert::PlainTexinfo’, as well as
‘Texinfo::Convert::TextContent’ are trivial examples.
‘Texinfo::Convert::Text’ is less trivial, although still simple, while
‘Texinfo::Convert::DocBook’ is a real converter that is also not too
complex.

   The documentation of *note Texinfo::Common: Texinfo::Common NAME,
*note Texinfo::OutputUnits: Texinfo::OutputUnits NAME, *note
Texinfo::Convert::Unicode: Texinfo::Convert::Unicode NAME. and *note
Texinfo::Convert::Text: Texinfo::Convert::Text NAME. describes modules
or additional function that may be useful for backends, while the parsed
Texinfo tree is described in *note Texinfo::Parser: Texinfo::Parser
NAME.


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter METHODS,  Next: Texinfo::Convert::Converter SEE ALSO,  Prev: Texinfo::Convert::Converter DESCRIPTION,  Up: Texinfo::Convert::Converter

17.5 Texinfo::Convert::Converter METHODS
========================================

* Menu:

* Texinfo::Convert::Converter Converter Initialization::
* Texinfo::Convert::Converter Conversion::
* Texinfo::Convert::Converter Getting and setting customization variables::
* Texinfo::Convert::Converter Registering error and warning messages::
* Texinfo::Convert::Converter Translations in output documents::
* Texinfo::Convert::Converter Index sorting::
* Texinfo::Convert::Converter Conversion to XML::
* Texinfo::Convert::Converter Helper methods::


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter Converter Initialization,  Next: Texinfo::Convert::Converter Conversion,  Up: Texinfo::Convert::Converter METHODS

17.5.1 Converter Initialization
-------------------------------

A module subclassing ‘Texinfo::Convert::Converter’ is created by calling
the ‘converter’ method that should be inherited from
‘Texinfo::Convert::Converter’.

$converter = MyConverter->converter($options)

     The _$options_ hash reference holds options for the converter.
     These options should be Texinfo customization options.  The
     customization options are described in the Texinfo manual or in the
     customization API manual.

     The ‘converter’ function returns a converter object (a blessed hash
     reference) after checking the options and performing some
     initializations.

   To help with the initializations, the modules subclassing
‘Texinfo::Convert::Converter’ can define two methods:

\%defaults = $converter_or_class->converter_defaults($options)

     Returns a reference on a hash with defaults for the converter
     module customization options or ‘undef’.  The _$options_ hash
     reference holds options for the converter.  This method is called
     through a converter by *note ‘converter’:
     Texinfo::Convert::Converter $converter =
     MyConverter->converter($options), but it may also be called through
     a converter module class.

converter_initialize

     This method is called at the end of the
     ‘Texinfo::Convert::Converter’ converter initialization.


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter Conversion,  Next: Texinfo::Convert::Converter Getting and setting customization variables,  Prev: Texinfo::Convert::Converter Converter Initialization,  Up: Texinfo::Convert::Converter METHODS

17.5.2 Conversion
-----------------

For conversion with ‘output’ and ‘convert’ a document to convert should
be associated to the converter, in general the document passed in
argument of ‘output’ or ‘convert’.  The ‘set_document’ function
associates a ‘Texinfo::Document’ to a converter.  This function is used
in the default implementations.

$converter->set_document($document)

     Associate _$document_ to _$converter_.  Also set the encoding
     related customization options based on _$converter_ customization
     information and information on document encoding, and setup
     converter hash ‘convert_text_options’ value that can be used to
     call *note ‘Texinfo::Convert::Text::convert_to_text’:
     Texinfo::Convert::Text $result = convert_to_text($tree,
     $text_options).

   The ‘conversion_initialization’, ‘conversion_finalization’,
‘conversion_output_begin’ and ‘conversion_output_end’ can be redefined
to call code at diverse moments:

$converter->conversion_initialization($document)

$converter->conversion_finalization()

     ‘conversion_initialization’ is called at the beginning of
     ‘output_tree’ and of the default implementations of the ‘output’
     and ‘convert’ functions.  ‘conversion_finalization’ is called at
     the end of ‘output_tree’ and of the default ‘output’ and ‘convert’
     methods implementations.  These functions should be redefined to
     have code run before a document conversion and after the document
     conversion.

     In the default case, ‘conversion_initialization’ calls *note
     set_document: Texinfo::Convert::Converter
     $converter->set_document($document). to associate the
     ‘Texinfo::Document’ document passed in argument to the converter.
     A subclass converter redefining ‘conversion_initialization’ should
     in general call ‘set_document’ in the redefined function too to
     associate the converted document to the converter.

$beginning = $converter->conversion_output_begin($output_file, $output_filename)

$end = $converter->conversion_output_end()

     ‘conversion_output_begin’ returned string _$beginning_ is output by
     the ‘output_tree’ calling method before the Texinfo tree
     conversion.  The _$output_file_ argument is the output file path.
     If _$output_file_ is an empty string, it means that text will be
     returned by the converter instead of being written to an output
     file.  _$output_filename_ is, in general, the file name portion of
     _$output_file_ (without directory) but can also be set based on
     ‘@setfilename’.

     ‘conversion_output_end’ returned string _$end_ is output by the
     ‘output_tree’ calling method after the Texinfo tree conversion.

     The default methods implementations return an empty string.

   Calling ‘conversion_initialization’ and, if needed,
‘conversion_finalization’ in redefined ‘output’ and ‘convert’ methods is
not mandated, but it is recommended to have similar converter codes.  In
subclassed converters that do not need to define
‘conversion_initialization’, calling the default
‘Texinfo::Convert::Converter’ ‘conversion_initialization’ implementation
is also recommended to avoid having to explictely call ‘set_document’.
If ‘conversion_initialization’ is defined in a converter subclass it is
recommended to call ‘set_document’ at the very beginning of the function
to have the document associated to the converter.


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter Getting and setting customization variables,  Next: Texinfo::Convert::Converter Registering error and warning messages,  Prev: Texinfo::Convert::Converter Conversion,  Up: Texinfo::Convert::Converter METHODS

17.5.3 Getting and setting customization variables
--------------------------------------------------

‘Texinfo::Convert::Converter’ implements a simple interface to set and
retrieve Texinfo customization variables.  Helper functions from diverse
Texinfo modules needing customization information expect an object
implementing ‘get_conf’ and/or ‘set_conf’.  The converter itself can
therefore be used in such cases.

   Customization variables are typically setup when initializing a
converter with *note ‘converter’: Texinfo::Convert::Converter $converter
= MyConverter->converter($options). and completed by Texinfo informative
@-commands tree element values, for commands such as ‘@frenchspacing’ or
‘@footnotestyle’.

$converter->force_conf($variable_name, $variable_value)

     Set the Texinfo customization option _$variable_name_ to
     _$variable_value_.  This should rarely be used, but the purpose of
     this method is to be able to revert a customization that is always
     wrong for a given output format, like the splitting for example.

$converter->get_conf($variable_name)

     Returns the value of the Texinfo customization variable
     _$variable_name_.

$status = $converter->set_conf($variable_name, $variable_value)

     Set the Texinfo customization option _$variable_name_ to
     _$variable_value_ if not set as a converter option.  Returns false
     if the customization options was not set.


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter Registering error and warning messages,  Next: Texinfo::Convert::Converter Translations in output documents,  Prev: Texinfo::Convert::Converter Getting and setting customization variables,  Up: Texinfo::Convert::Converter METHODS

17.5.4 Registering error and warning messages
---------------------------------------------

‘Texinfo::Convert::Converter’ implements an interface to register error
and warning messages in the converter, that can be retrieved later on,
in general to be given to ‘Texinfo::Report::add_formatted_message’.
Underneath, ‘Texinfo::Report’ is used to setup the messages data
structure.

$converter->converter_document_error($text, $continuation)

$converter->converter_document_warn($text, $continuation)

     Register a warning or an error.  The _$text_ is the text of the
     error or warning.

     The _$continuation_ optional arguments, if true, conveys that the
     line is a continuation line of a message.

$converter->converter_line_error($text, $error_location_info, $continuation)

$converter->converter_line_warn($text, $error_location_info, $continuation)

     Register a warning or an error with a line information.  The
     _$text_ is the text of the error or warning.  The
     _$error_location_info_ argument holds the information on the error
     or warning location.  The _$error_location_info_ reference on hash
     may be obtained from Texinfo elements _source_info_ keys.  It may
     also be setup to point to a file name, using the ‘file_name’ key
     and to a line number, using the ‘line_nr’ key.  The ‘file_name’ key
     value should be a binary string.

     The _$continuation_ optional arguments, if true, conveys that the
     line is a continuation line of a message.

\@error_warning_messages = $converter->get_converter_errors()

     Return a reference on an array containing the error or warning
     messages registered in the converter.  Error and warning messages
     are hash references as described in *note Texinfo::Report::errors:
     Texinfo::Report ($error_warnings_list, $error_count) =
     errors($registrar). and can be used in input of *note
     Texinfo::Report::add_formatted_message: Texinfo::Report
     $registrar->add_formatted_message ($msg).


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter Translations in output documents,  Next: Texinfo::Convert::Converter Index sorting,  Prev: Texinfo::Convert::Converter Registering error and warning messages,  Up: Texinfo::Convert::Converter METHODS

17.5.5 Translations in output documents
---------------------------------------

‘Texinfo::Convert::Converter’ provides wrappers around *note
Texinfo::Translations: Texinfo::Translations NAME. methods that sets the
language to the current ‘documentlanguage’.

   The ‘cdt’ and ‘pcdt’ methods are used to translate strings to be
output in converted documents, and return a Texinfo tree.  The
‘cdt_string’ is similar but returns a simple string, for already
converted strings.

$tree = $converter->cdt($string, $replaced_substrings, $translation_context)

$string = $converter->cdt_string($string, $replaced_substrings, $translation_context)

     The _$string_ is a string to be translated.  With ‘cdt’ the
     function returns a Texinfo tree, as the string is interpreted as
     Texinfo code after translation.  With ‘cdt_string’ a string is
     returned.

     _$replaced_substrings_ is an optional hash reference specifying
     some substitution to be done after the translation.  The key of the
     _$replaced_substrings_ hash reference identifies what is to be
     substituted.  In the string to be translated word in brace matching
     keys of _$replaced_substrings_ are replaced.  For ‘cdt’, the value
     is a Texinfo tree that is substituted in the resulting Texinfo
     tree.  For ‘cdt_string’, the value is a string that is replaced in
     the resulting string.

     The _$translation_context_ is optional.  If not ‘undef’ this is a
     translation context string for _$string_.  It is the first argument
     of ‘pgettext’ in the C API of Gettext.

$tree = $object->pcdt($translation_context, $string, $replaced_substrings)

     Same to ‘cdt’ except that the _$translation_context_ is not
     optional.  This function is useful to mark strings with a
     translation context for translation.  This function is similar to
     pgettext in the Gettext C API.


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter Index sorting,  Next: Texinfo::Convert::Converter Conversion to XML,  Prev: Texinfo::Convert::Converter Translations in output documents,  Up: Texinfo::Convert::Converter METHODS

17.5.6 Index sorting
--------------------

You should call the following methods to sort indices in conversion:

$sorted_indices = $converter->get_converter_indices_sorted_by_index()

$sorted_indices = $converter->get_converter_indices_sorted_by_letter()

     ‘get_converter_indices_sorted_by_letter’ returns the indices sorted
     by index and letter, while ‘get_converter_indices_sorted_by_index’
     returns the indices with all entries of an index together.

     When sorting by letter, an array reference of letter hash
     references is associated with each index name.  Each letter hash
     reference has two keys, a _letter_ key with the letter, and an
     _entries_ key with an array reference of sorted index entries
     beginning with the letter.  The letter is a character string
     suitable for sorting letters, but is not necessarily the best to
     use for output.

     When simply sorting, the array of the sorted index entries is
     associated with the index name.

     The functions call *note
     ‘Texinfo::Document::sorted_indices_by_letter’: Texinfo::Document
     $sorted_indices =
     $document->sorted_indices_by_letter($customization_information,
     $use_unicode_collation, $locale_lang). or *note
     ‘Texinfo::Document::sorted_indices_by_index’: Texinfo::Document
     $sorted_indices =
     $document->sorted_indices_by_index($customization_information,
     $use_unicode_collation, $locale_lang). with arguments based on
     ‘USE_UNICODE_COLLATION’, ‘COLLATION_LANGUAGE’ and
     ‘DOCUMENTLANGUAGE_COLLATION’ customization options, and, if
     relevant, current ‘@documentlanguage’.


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter Conversion to XML,  Next: Texinfo::Convert::Converter Helper methods,  Prev: Texinfo::Convert::Converter Index sorting,  Up: Texinfo::Convert::Converter METHODS

17.5.7 Conversion to XML
------------------------

Some ‘Texinfo::Convert::Converter’ methods target conversion to XML.
Most methods take a _$converter_ as argument to get some information and
use methods for error reporting.

$formatted_text = $converter->xml_format_text_with_numeric_entities($text)

     Replace quotation marks and hyphens used to represent dash in
     Texinfo text with numeric XML entities.

$protected_text = $converter->xml_protect_text($text)

     Protect special XML characters (&, <, >, ") of _$text_.

$comment = $converter->xml_comment($text)

     Returns an XML comment for _$text_.

$result = xml_accent($text, $accent_command, $in_upper_case, $use_numeric_entities)

     _$text_ is the text appearing within an accent command.
     _$accent_command_ should be a Texinfo tree element corresponding to
     an accent command taking an argument.  _$in_upper_case_ is
     optional, and, if set, the text is put in upper case.  The function
     returns the accented letter as XML named entity if possible,
     falling back to numeric entities if there is no named entity and
     returns the argument as last resort.  _$use_numeric_entities_ is
     optional.  If set, numerical entities are used instead of named
     entities if possible.

$result = $converter->xml_accents($accent_command, $in_upper_case)

     _$accent_command_ is an accent command, which may have other accent
     commands nested.  If _$in_upper_case_ is set, the result should be
     upper cased.  The function returns the accents formatted as XML.

$result = xml_numeric_entity_accent($accent_command_name, $text)

     _$accent_command_name_ is the name of an accent command.  _$text_
     is the text appearing within the accent command.  Returns the
     accented letter as XML numeric entity, or ‘undef’ is there is no
     such entity.


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter Helper methods,  Prev: Texinfo::Convert::Converter Conversion to XML,  Up: Texinfo::Convert::Converter METHODS

17.5.8 Helper methods
---------------------

The module provides methods that may be useful for converter.  Most
methods take a _$converter_ as argument to get some information and use
methods for error reporting, see *note Registering error and warning
messages: Texinfo::Convert::Converter Registering error and warning
messages.  Also to translate strings, see *note Translations in output
documents: Texinfo::Convert::Converter Translations in output documents.
For useful methods that need a converter optionally and can be used in
converters that do not inherit from ‘Texinfo::Convert::Converter’, see
*note Texinfo::Convert::Utils: Texinfo::Convert::Utils NAME.

$contents_element = $converter->comma_index_subentries_tree($entry, $separator)

     _$entry_ is a Texinfo tree index entry element.  The function sets
     up an array with the ‘@subentry’ contents.  The result is returned
     as ‘contents’ in the _$contents_element_ element, or ‘undef’ if
     there is no such content.  _$separator_ is an optional separator
     argument used, if given, instead of the default: a comma followed
     by a space.

$result = $converter->convert_accents($accent_command, \&format_accents, $output_encoded_characters, $in_upper_case)

     _$accent_command_ is an accent command, which may have other accent
     commands nested.  The function returns the accents formatted either
     as encoded letters if _$output_encoded_characters_ is set, or
     formatted using _\&format_accents_.  If _$in_upper_case_ is set,
     the result should be uppercased.

$succeeded = $converter->create_destination_directory($destination_directory_path, $destination_directory_name)

     Create destination directory _$destination_directory_path_.
     _$destination_directory_path_ should be a binary string, while
     _$destination_directory_name_ should be a character string, that
     can be used in error messages.  _$succeeded_ is true if the
     creation was successful or uneeded, false otherwise.

($output_file, $destination_directory, $output_filename, $document_name, $input_basefile) = $converter->determine_files_and_directory($output_format)

     Determine output file and directory, as well as names related to
     files.  The result depends on the presence of ‘@setfilename’, on
     the Texinfo input file name, and on customization options such as
     ‘OUTPUT’, ‘SUBDIR’ or ‘SPLIT’, as described in the Texinfo manual.
     If _$output_format_ is defined and not an empty string,
     ‘_$output_format’ is prepended to the default directory name.

     _$output_file_ is mainly relevant when not split and should be used
     as the output file name.  In general, if not split and
     _$output_file_ is an empty string, it means that text should be
     returned by the converter instead of being written to an output
     file.  This is used in the test suite.  _$destination_directory_ is
     either the directory _$output_file_ is in, or if split, the
     directory where the files should be created.  _$output_filename_
     is, in general, the file name portion of _$output_file_ (without
     directory) but can also be set based on ‘@setfilename’, in
     particular when _$output_file_ is an empty string.
     _$document_name_ is _$output_filename_ without extension.
     _$input_basefile_ is based on the input Texinfo file name, with the
     file name portion only (without directory).

     The strings returned are text strings.

($encoded_name, $encoding) = $converter->encoded_input_file_name($character_string_name, $input_file_encoding)

($encoded_name, $encoding) = $converter->encoded_output_file_name($character_string_name)

     Encode _$character_string_name_ in the same way as other file names
     are encoded in the converter, based on customization variables, and
     possibly on the input file encoding.  Return the encoded name and
     the encoding used to encode the name.  The
     ‘encoded_input_file_name’ and ‘encoded_output_file_name’ functions
     use different customization variables to determine the encoding.

     The _$input_file_encoding_ argument is optional.  If set, it is
     used for the input file encoding.  It is useful if there is more
     precise information on the input file encoding where the file name
     appeared.

     Note that ‘encoded_output_file_name’ is a wrapper around the
     function with the same name in *note
     ‘Texinfo::Convert::Utils::encoded_output_file_name’:
     Texinfo::Convert::Utils ($encoded_name, $encoding) =
     $converter->encoded_output_file_name($character_string_name), and
     ‘encoded_input_file_name’ is a wrapper around the function with the
     same name in *note
     ‘Texinfo::Convert::Utils::encoded_input_file_name’:
     Texinfo::Convert::Utils ($encoded_name, $encoding) =
     $converter->encoded_input_file_name($character_string_name,
     $input_file_encoding).

($caption, $prepended) = $converter->float_name_caption($float)

     _$float_ is a Texinfo tree ‘@float’ element.  This function returns
     the caption element that should be used for the float formatting
     and the _$prepended_ Texinfo tree combining the type and label of
     the float.

$tree = $converter->float_type_number($float)

     _$float_ is a Texinfo tree ‘@float’ element.  This function returns
     the type and number of the float as a Texinfo tree with
     translations.

$end_line = $converter->format_comment_or_return_end_line($element)

     Format comment at end of line or return the end of line associated
     with the element.  In many cases, converters ignore comments and
     output is better formatted with new lines added independently of
     the presence of newline or comment in the initial Texinfo line, so
     most converters are better off not using this method.

$filename = sub $converter->node_information_filename($normalized, $label_element)

     Returns the normalized file name corresponding to the _$normalized_
     node name and to the _$label_element_ node name element contents.

($normalized_name, $filename) = $converter->normalized_sectioning_command_filename($element)

     Returns a normalized name _$normalized_name_ corresponding to a
     sectioning command tree element _$element_, expanding the command
     argument using transliteration and characters protection.  Also
     returns _$filename_ the corresponding filename based on
     _$normalized_name_ taking into account additional constraint on
     file names and adding a file extension.

$converter->present_bug_message($message, $element)

     Show a bug message using _$message_ text.  Use information on
     _$element_ tree element if given in argument.

$converter->set_global_document_commands($commands_location, $selected_commands)

     Set the Texinfo customization options for @-commands.
     _$selected_commands_ is an array reference containing the
     @-commands set.  _$commands_location_ specifies where in the
     document the value should be taken from.  The possibilities are:

     before

          Set to the values before document conversion, from defaults
          and command-line.

     last

          Set to the last value for the command.

     preamble

          Set sequentially to the values in the Texinfo preamble.

     preamble_or_first

          Set to the first value of the command if the first command is
          not in the Texinfo preamble, else set as with _preamble_,
          sequentially to the values in the Texinfo preamble.

     Notice that the only effect of this function is to set a
     customization variable value, no @-command side effects are run, no
     associated customization variables are set.

     For more information on the function used to set the value for each
     of the command, see *note ‘Texinfo::Common’
     ‘set_global_document_command’: Texinfo::Common $element =
     set_global_document_command($customization_information,
     $global_commands_information, $cmdname, $command_location).

$table_item_tree = $converter->table_item_content_tree($element)

     _$element_ should be an ‘@item’ or ‘@itemx’ tree element.  Returns
     a tree in which the @-command in argument of ‘@*table’ of the
     _$element_ has been applied to the _$element_ line argument, or
     ‘undef’.

$result = $converter->top_node_filename($document_name)

     Returns a file name for the Top node file using either ‘TOP_FILE’
     customization value, or ‘EXTENSION’ customization value and
     _$document_name_.

   Finally, there is:

$result = $converter->output_internal_links()

     At this level, the method just returns undef.  It is used in the
     HTML output, following the ‘--internal-links’ option of ‘texi2any’
     specification.


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter SEE ALSO,  Next: Texinfo::Convert::Converter AUTHOR,  Prev: Texinfo::Convert::Converter METHODS,  Up: Texinfo::Convert::Converter

17.6 Texinfo::Convert::Converter SEE ALSO
=========================================

*note Texinfo::Common: Texinfo::Common NAME, *note
Texinfo::Convert::Unicode: Texinfo::Convert::Unicode NAME, *note
Texinfo::Report: Texinfo::Report NAME, *note Texinfo::Translations:
Texinfo::Translations NAME, *note Texinfo::Convert::Utils:
Texinfo::Convert::Utils NAME. and *note Texinfo::Parser: Texinfo::Parser
NAME.


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter AUTHOR,  Next: Texinfo::Convert::Converter COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::Converter SEE ALSO,  Up: Texinfo::Convert::Converter

17.7 Texinfo::Convert::Converter AUTHOR
=======================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Convert::Converter COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::Converter AUTHOR,  Up: Texinfo::Convert::Converter

17.8 Texinfo::Convert::Converter COPYRIGHT AND LICENSE
======================================================

Copyright 2011- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Convert::Info,  Next: Texinfo::Convert::HTML,  Prev: Texinfo::Convert::Converter,  Up: Top

18 Texinfo::Convert::Info
*************************

* Menu:

* Texinfo::Convert::Info NAME::
* Texinfo::Convert::Info SYNOPSIS::
* Texinfo::Convert::Info NOTES::
* Texinfo::Convert::Info DESCRIPTION::
* Texinfo::Convert::Info METHODS::
* Texinfo::Convert::Info AUTHOR::
* Texinfo::Convert::Info COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Convert::Info NAME,  Next: Texinfo::Convert::Info SYNOPSIS,  Up: Texinfo::Convert::Info

18.1 Texinfo::Convert::Info NAME
================================

Texinfo::Convert::Info - Convert Texinfo tree to Info


File: texi2any_internals.info,  Node: Texinfo::Convert::Info SYNOPSIS,  Next: Texinfo::Convert::Info NOTES,  Prev: Texinfo::Convert::Info NAME,  Up: Texinfo::Convert::Info

18.2 Texinfo::Convert::Info SYNOPSIS
====================================

  my $converter
    = Texinfo::Convert::Info->converter({'NUMBER_SECTIONS' => 0});

  $converter->output($document);
  $converter->convert($document);
  $converter->convert_tree($tree);


File: texi2any_internals.info,  Node: Texinfo::Convert::Info NOTES,  Next: Texinfo::Convert::Info DESCRIPTION,  Prev: Texinfo::Convert::Info SYNOPSIS,  Up: Texinfo::Convert::Info

18.3 Texinfo::Convert::Info NOTES
=================================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Convert::Info DESCRIPTION,  Next: Texinfo::Convert::Info METHODS,  Prev: Texinfo::Convert::Info NOTES,  Up: Texinfo::Convert::Info

18.4 Texinfo::Convert::Info DESCRIPTION
=======================================

Texinfo::Convert::Info converts a Texinfo tree to Info.


File: texi2any_internals.info,  Node: Texinfo::Convert::Info METHODS,  Next: Texinfo::Convert::Info AUTHOR,  Prev: Texinfo::Convert::Info DESCRIPTION,  Up: Texinfo::Convert::Info

18.5 Texinfo::Convert::Info METHODS
===================================

$converter = Texinfo::Convert::Info->converter($options)

     Initialize converter from Texinfo to Info.

     The _$options_ hash reference holds Texinfo customization options
     for the converter.  These options should be Texinfo customization
     options that can be passed to the converter.  Most of the
     customization options are described in the Texinfo manual or in the
     customization API manual.  Those customization options, when
     appropriate, override the document content.

     See *note Texinfo::Convert::Converter: Texinfo::Convert::Converter
     NAME. for more information.

$converter->output($document)

     Convert a Texinfo parsed document _$document_ and output the result
     in files as described in the Texinfo manual.

$result = $converter->convert($document)

     Convert a Texinfo parsed document _$document_ and return the
     resulting output.

$result = $converter->convert_tree($tree)

     Convert a Texinfo tree portion _$tree_ and return the resulting
     output.  This function does not try to output a full document but
     only portions.  For a full document use ‘convert’.

     In general, this function should be called after the converter has
     been associated to a document by a call to ‘output’ or ‘convert’.


File: texi2any_internals.info,  Node: Texinfo::Convert::Info AUTHOR,  Next: Texinfo::Convert::Info COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::Info METHODS,  Up: Texinfo::Convert::Info

18.6 Texinfo::Convert::Info AUTHOR
==================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Convert::Info COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::Info AUTHOR,  Up: Texinfo::Convert::Info

18.7 Texinfo::Convert::Info COPYRIGHT AND LICENSE
=================================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Convert::HTML,  Next: Texinfo::Convert::DocBook,  Prev: Texinfo::Convert::Info,  Up: Top

19 Texinfo::Convert::HTML
*************************

* Menu:

* Texinfo::Convert::HTML NAME::
* Texinfo::Convert::HTML SYNOPSIS::
* Texinfo::Convert::HTML NOTES::
* Texinfo::Convert::HTML DESCRIPTION::
* Texinfo::Convert::HTML METHODS::
* Texinfo::Convert::HTML AUTHOR::
* Texinfo::Convert::HTML COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Convert::HTML NAME,  Next: Texinfo::Convert::HTML SYNOPSIS,  Up: Texinfo::Convert::HTML

19.1 Texinfo::Convert::HTML NAME
================================

Texinfo::Convert::HTML - Convert Texinfo tree to HTML


File: texi2any_internals.info,  Node: Texinfo::Convert::HTML SYNOPSIS,  Next: Texinfo::Convert::HTML NOTES,  Prev: Texinfo::Convert::HTML NAME,  Up: Texinfo::Convert::HTML

19.2 Texinfo::Convert::HTML SYNOPSIS
====================================

  my $converter
    = Texinfo::Convert::HTML->converter({'NUMBER_SECTIONS' => 0});

  $converter->output($document);
  $converter->convert($document);
  $converter->convert_tree($tree);
  $converter->output_internal_links(); # HTML only


File: texi2any_internals.info,  Node: Texinfo::Convert::HTML NOTES,  Next: Texinfo::Convert::HTML DESCRIPTION,  Prev: Texinfo::Convert::HTML SYNOPSIS,  Up: Texinfo::Convert::HTML

19.3 Texinfo::Convert::HTML NOTES
=================================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Convert::HTML DESCRIPTION,  Next: Texinfo::Convert::HTML METHODS,  Prev: Texinfo::Convert::HTML NOTES,  Up: Texinfo::Convert::HTML

19.4 Texinfo::Convert::HTML DESCRIPTION
=======================================

Texinfo::Convert::HTML converts a Texinfo tree to HTML.


File: texi2any_internals.info,  Node: Texinfo::Convert::HTML METHODS,  Next: Texinfo::Convert::HTML AUTHOR,  Prev: Texinfo::Convert::HTML DESCRIPTION,  Up: Texinfo::Convert::HTML

19.5 Texinfo::Convert::HTML METHODS
===================================

$converter = Texinfo::Convert::HTML->converter($options)

     Initialize converter from Texinfo to HTML.

     The _$options_ hash reference holds Texinfo customization options
     for the converter.  These options should be Texinfo customization
     options that can be passed to the converter.  Most of the
     customization options are described in the Texinfo manual or in the
     customization API manual.  Those customization options, when
     appropriate, override the document content.

     See *note Texinfo::Convert::Converter: Texinfo::Convert::Converter
     NAME. for more information.

$converter->output($document)

     Convert a Texinfo parsed document _$document_ and output the result
     in files as described in the Texinfo manual.

$result = $converter->convert($document)

     Convert a Texinfo parsed document _$document_ and return the
     resulting output.

$result = $converter->convert_tree($tree)

     Convert a Texinfo tree portion _$tree_ and return the resulting
     output.  This function does not try to output a full document but
     only portions.  For a full document use ‘convert’.

     In general, this function should be called after the converter has
     been associated to a document by a call to ‘output’ or ‘convert’.

$result = $converter->output_internal_links()

     Returns text representing the links in the document.  The format
     should follow the ‘--internal-links’ option of the ‘texi2any’
     specification.  This is only supported in (and relevant for) HTML.


File: texi2any_internals.info,  Node: Texinfo::Convert::HTML AUTHOR,  Next: Texinfo::Convert::HTML COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::HTML METHODS,  Up: Texinfo::Convert::HTML

19.6 Texinfo::Convert::HTML AUTHOR
==================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Convert::HTML COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::HTML AUTHOR,  Up: Texinfo::Convert::HTML

19.7 Texinfo::Convert::HTML COPYRIGHT AND LICENSE
=================================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Convert::DocBook,  Next: Texinfo::Convert::TexinfoMarkup,  Prev: Texinfo::Convert::HTML,  Up: Top

20 Texinfo::Convert::DocBook
****************************

* Menu:

* Texinfo::Convert::DocBook NAME::
* Texinfo::Convert::DocBook SYNOPSIS::
* Texinfo::Convert::DocBook NOTES::
* Texinfo::Convert::DocBook DESCRIPTION::
* Texinfo::Convert::DocBook METHODS::
* Texinfo::Convert::DocBook AUTHOR::
* Texinfo::Convert::DocBook COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Convert::DocBook NAME,  Next: Texinfo::Convert::DocBook SYNOPSIS,  Up: Texinfo::Convert::DocBook

20.1 Texinfo::Convert::DocBook NAME
===================================

Texinfo::Convert::DocBook - Convert Texinfo tree to DocBook


File: texi2any_internals.info,  Node: Texinfo::Convert::DocBook SYNOPSIS,  Next: Texinfo::Convert::DocBook NOTES,  Prev: Texinfo::Convert::DocBook NAME,  Up: Texinfo::Convert::DocBook

20.2 Texinfo::Convert::DocBook SYNOPSIS
=======================================

  my $converter
    = Texinfo::Convert::DocBook->converter({'NUMBER_SECTIONS' => 0});

  $converter->output($document);
  $converter->convert($document);
  $converter->convert_tree($tree);


File: texi2any_internals.info,  Node: Texinfo::Convert::DocBook NOTES,  Next: Texinfo::Convert::DocBook DESCRIPTION,  Prev: Texinfo::Convert::DocBook SYNOPSIS,  Up: Texinfo::Convert::DocBook

20.3 Texinfo::Convert::DocBook NOTES
====================================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Convert::DocBook DESCRIPTION,  Next: Texinfo::Convert::DocBook METHODS,  Prev: Texinfo::Convert::DocBook NOTES,  Up: Texinfo::Convert::DocBook

20.4 Texinfo::Convert::DocBook DESCRIPTION
==========================================

Texinfo::Convert::DocBook converts a Texinfo tree to DocBook.


File: texi2any_internals.info,  Node: Texinfo::Convert::DocBook METHODS,  Next: Texinfo::Convert::DocBook AUTHOR,  Prev: Texinfo::Convert::DocBook DESCRIPTION,  Up: Texinfo::Convert::DocBook

20.5 Texinfo::Convert::DocBook METHODS
======================================

$converter = Texinfo::Convert::DocBook->converter($options)

     Initialize converter from Texinfo to DocBook.

     The _$options_ hash reference holds Texinfo customization options
     for the converter.  These options should be Texinfo customization
     options that can be passed to the converter.  Most of the
     customization options are described in the Texinfo manual or in the
     customization API manual.  Those customization options, when
     appropriate, override the document content.

     See *note Texinfo::Convert::Converter: Texinfo::Convert::Converter
     NAME. for more information.

$converter->output($document)

     Convert a Texinfo parsed document _$document_ and output the result
     in files as described in the Texinfo manual.

$result = $converter->convert($document)

     Convert a Texinfo parsed document _$document_ and return the
     resulting output.

$result = $converter->convert_tree($tree)

     Convert a Texinfo tree portion _$tree_ and return the resulting
     output.  This function does not try to output a full document but
     only portions.  For a full document use ‘convert’.

     In general, this function should be called after the converter has
     been associated to a document by a call to ‘output’ or ‘convert’.


File: texi2any_internals.info,  Node: Texinfo::Convert::DocBook AUTHOR,  Next: Texinfo::Convert::DocBook COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::DocBook METHODS,  Up: Texinfo::Convert::DocBook

20.6 Texinfo::Convert::DocBook AUTHOR
=====================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Convert::DocBook COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::DocBook AUTHOR,  Up: Texinfo::Convert::DocBook

20.7 Texinfo::Convert::DocBook COPYRIGHT AND LICENSE
====================================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoMarkup,  Next: Texinfo::Convert::TexinfoXML,  Prev: Texinfo::Convert::DocBook,  Up: Top

21 Texinfo::Convert::TexinfoMarkup
**********************************

* Menu:

* Texinfo::Convert::TexinfoMarkup NAME::
* Texinfo::Convert::TexinfoMarkup SYNOPSIS::
* Texinfo::Convert::TexinfoMarkup NOTES::
* Texinfo::Convert::TexinfoMarkup DESCRIPTION::
* Texinfo::Convert::TexinfoMarkup METHODS::
* Texinfo::Convert::TexinfoMarkup AUTHOR::
* Texinfo::Convert::TexinfoMarkup SEE ALSO::
* Texinfo::Convert::TexinfoMarkup COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoMarkup NAME,  Next: Texinfo::Convert::TexinfoMarkup SYNOPSIS,  Up: Texinfo::Convert::TexinfoMarkup

21.1 Texinfo::Convert::TexinfoMarkup NAME
=========================================

Texinfo::Convert::TexinfoMarkup - Convert Texinfo tree to element and
attribute markup


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoMarkup SYNOPSIS,  Next: Texinfo::Convert::TexinfoMarkup NOTES,  Prev: Texinfo::Convert::TexinfoMarkup NAME,  Up: Texinfo::Convert::TexinfoMarkup

21.2 Texinfo::Convert::TexinfoMarkup SYNOPSIS
=============================================

  package Texinfo::Convert::TexinfoMyMarkup;

  use Texinfo::Convert::TexinfoMarkup;

  @ISA = qw(Texinfo::Convert::TexinfoMarkup);

  sub converter_defaults ($$) {
    return %myconverter_defaults;
  }

  sub txi_markup_protect_text($$)
  {
    my $self = shift;
    ....
  }


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoMarkup NOTES,  Next: Texinfo::Convert::TexinfoMarkup DESCRIPTION,  Prev: Texinfo::Convert::TexinfoMarkup SYNOPSIS,  Up: Texinfo::Convert::TexinfoMarkup

21.3 Texinfo::Convert::TexinfoMarkup NOTES
==========================================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoMarkup DESCRIPTION,  Next: Texinfo::Convert::TexinfoMarkup METHODS,  Prev: Texinfo::Convert::TexinfoMarkup NOTES,  Up: Texinfo::Convert::TexinfoMarkup

21.4 Texinfo::Convert::TexinfoMarkup DESCRIPTION
================================================

‘Texinfo::Convert::TexinfoMarkup’ converts a Texinfo tree to the Texinfo
Markup Language which is based on nested elements with attributes,
similar to XML. All the information present in the Texinfo tree, after
expansion of ‘@macro’, ‘@value’ and inclusion of include files is kept.
‘Texinfo::Convert::TexinfoMarkup’ is an abstract class, to be used as a
super class for modules implementing specific markup formatting
functions called by ‘Texinfo::Convert::TexinfoMarkup’.

   The Texinfo Markup Language elements and attributes are not
documented, but the Texinfo XML output by the
‘Texinfo::Convert::TexinfoXML’ subclass (*note
Texinfo::Convert::TexinfoXML: Texinfo::Convert::TexinfoXML NAME.) is a
straightforward formatting as XML, and is described by the Texinfo DTD.
Therefore the Texinfo DTD can be used as a description of the structure
of both Texinfo XML and of the more abstract Texinfo Markup Language.


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoMarkup METHODS,  Next: Texinfo::Convert::TexinfoMarkup AUTHOR,  Prev: Texinfo::Convert::TexinfoMarkup DESCRIPTION,  Up: Texinfo::Convert::TexinfoMarkup

21.5 Texinfo::Convert::TexinfoMarkup METHODS
============================================

* Menu:

* Texinfo::Convert::TexinfoMarkup Markup formatting methods defined by subclasses::
* Texinfo::Convert::TexinfoMarkup Formatting state information::


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoMarkup Markup formatting methods defined by subclasses,  Next: Texinfo::Convert::TexinfoMarkup Formatting state information,  Up: Texinfo::Convert::TexinfoMarkup METHODS

21.5.1 Markup formatting methods defined by subclasses
------------------------------------------------------

The following methods should be implemented by the modules inheriting
from ‘Texinfo::Convert::TexinfoMarkup’:

$result = $converter->txi_markup_atom($atom)

     Format the _$atom_ symbol string in a simpler way than with an
     element.  For example in XML the formatting of the symbol is
     achieved with an entity.

$result = $converter->txi_markup_comment($comment_string)

     Format _$comment_string_ as a comment.

$result = $converter->txi_markup_convert_text($element)

     Called to format the Texinfo tree _$element_ text, which is a
     reference on a hash.  The _$element_ text is in the ‘text’ key.
     The ‘type’ key value may also be set to distinguish the type of
     text (*note Texinfo::Parser Types for text elements::).  Texinfo
     tree elements are described in details in *note Texinfo::Parser
     TEXINFO TREE::.

$result = $converter->txi_markup_element($format_element, $attributes)

$result = $converter->txi_markup_open_element($format_element, $attributes)

$result = $converter->txi_markup_close_element($format_element, $attributes)

     ‘txi_markup_element’ is called for the formatting of empty
     elements.  Otherwise, ‘txi_markup_open_element’ is called when an
     element is opened, and ‘txi_markup_close_element’ is called when an
     element is closed.  _$format_element_ is the element name,
     _$attributes_ is a reference on an array containing references on
     arrays of pairs, one pair for each attribute, with the attribute
     name as the first item of the pair and the attribute text as the
     second item of the pair.

$result = $converter->txi_markup_header()

     Called to format a header at the beginning of output files.

$result = $converter->txi_markup_protect_text($string)

     Protect special character in text for text fragments out of text
     Texinfo tree elements.  For example, for spaces at end of line that
     are ignorable in most output formats, for ‘@set’ or ‘@macro’
     arguments.


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoMarkup Formatting state information,  Prev: Texinfo::Convert::TexinfoMarkup Markup formatting methods defined by subclasses,  Up: Texinfo::Convert::TexinfoMarkup METHODS

21.5.2 Formatting state information
-----------------------------------

A method is available for subclasses to gather information on the
formatting state:

$converter->in_monospace()

     Return 1 if in a context where spacing should be kept and ‘---’ or
     ‘''’ left as is, for example in ‘@code’, ‘@example’.


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoMarkup AUTHOR,  Next: Texinfo::Convert::TexinfoMarkup SEE ALSO,  Prev: Texinfo::Convert::TexinfoMarkup METHODS,  Up: Texinfo::Convert::TexinfoMarkup

21.6 Texinfo::Convert::TexinfoMarkup AUTHOR
===========================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoMarkup SEE ALSO,  Next: Texinfo::Convert::TexinfoMarkup COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::TexinfoMarkup AUTHOR,  Up: Texinfo::Convert::TexinfoMarkup

21.7 Texinfo::Convert::TexinfoMarkup SEE ALSO
=============================================

*note Texinfo::Convert::Converter: Texinfo::Convert::Converter NAME.
*note Texinfo::Convert::TexinfoXML: Texinfo::Convert::TexinfoXML NAME.
The ‘Texinfo::Convert::TexinfoSXML’ is another subclass, which outputs
SXML. It is not much documented.


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoMarkup COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::TexinfoMarkup SEE ALSO,  Up: Texinfo::Convert::TexinfoMarkup

21.8 Texinfo::Convert::TexinfoMarkup COPYRIGHT AND LICENSE
==========================================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoXML,  Next: Texinfo::Convert::Plaintext,  Prev: Texinfo::Convert::TexinfoMarkup,  Up: Top

22 Texinfo::Convert::TexinfoXML
*******************************

* Menu:

* Texinfo::Convert::TexinfoXML NAME::
* Texinfo::Convert::TexinfoXML SYNOPSIS::
* Texinfo::Convert::TexinfoXML NOTES::
* Texinfo::Convert::TexinfoXML DESCRIPTION::
* Texinfo::Convert::TexinfoXML METHODS::
* Texinfo::Convert::TexinfoXML AUTHOR::
* Texinfo::Convert::TexinfoXML COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoXML NAME,  Next: Texinfo::Convert::TexinfoXML SYNOPSIS,  Up: Texinfo::Convert::TexinfoXML

22.1 Texinfo::Convert::TexinfoXML NAME
======================================

Texinfo::Convert::TexinfoXML - Convert Texinfo tree to TexinfoXML


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoXML SYNOPSIS,  Next: Texinfo::Convert::TexinfoXML NOTES,  Prev: Texinfo::Convert::TexinfoXML NAME,  Up: Texinfo::Convert::TexinfoXML

22.2 Texinfo::Convert::TexinfoXML SYNOPSIS
==========================================

  my $converter
    = Texinfo::Convert::TexinfoXML->converter({'NUMBER_SECTIONS' => 0});

  $converter->output($document);
  $converter->convert($document);
  $converter->convert_tree($tree);


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoXML NOTES,  Next: Texinfo::Convert::TexinfoXML DESCRIPTION,  Prev: Texinfo::Convert::TexinfoXML SYNOPSIS,  Up: Texinfo::Convert::TexinfoXML

22.3 Texinfo::Convert::TexinfoXML NOTES
=======================================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoXML DESCRIPTION,  Next: Texinfo::Convert::TexinfoXML METHODS,  Prev: Texinfo::Convert::TexinfoXML NOTES,  Up: Texinfo::Convert::TexinfoXML

22.4 Texinfo::Convert::TexinfoXML DESCRIPTION
=============================================

Texinfo::Convert::TexinfoXML converts a Texinfo tree to TexinfoXML.


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoXML METHODS,  Next: Texinfo::Convert::TexinfoXML AUTHOR,  Prev: Texinfo::Convert::TexinfoXML DESCRIPTION,  Up: Texinfo::Convert::TexinfoXML

22.5 Texinfo::Convert::TexinfoXML METHODS
=========================================

$converter = Texinfo::Convert::TexinfoXML->converter($options)

     Initialize converter from Texinfo to TexinfoXML.

     The _$options_ hash reference holds Texinfo customization options
     for the converter.  These options should be Texinfo customization
     options that can be passed to the converter.  Most of the
     customization options are described in the Texinfo manual or in the
     customization API manual.  Those customization options, when
     appropriate, override the document content.

     See *note Texinfo::Convert::Converter: Texinfo::Convert::Converter
     NAME. for more information.

$converter->output($document)

     Convert a Texinfo parsed document _$document_ and output the result
     in files as described in the Texinfo manual.

$result = $converter->convert($document)

     Convert a Texinfo parsed document _$document_ and return the
     resulting output.

$result = $converter->convert_tree($tree)

     Convert a Texinfo tree portion _$tree_ and return the resulting
     output.  This function does not try to output a full document but
     only portions.  For a full document use ‘convert’.

     In general, this function should be called after the converter has
     been associated to a document by a call to ‘output’ or ‘convert’.


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoXML AUTHOR,  Next: Texinfo::Convert::TexinfoXML COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::TexinfoXML METHODS,  Up: Texinfo::Convert::TexinfoXML

22.6 Texinfo::Convert::TexinfoXML AUTHOR
========================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Convert::TexinfoXML COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::TexinfoXML AUTHOR,  Up: Texinfo::Convert::TexinfoXML

22.7 Texinfo::Convert::TexinfoXML COPYRIGHT AND LICENSE
=======================================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Texinfo::Convert::Plaintext,  Next: Index,  Prev: Texinfo::Convert::TexinfoXML,  Up: Top

23 Texinfo::Convert::Plaintext
******************************

* Menu:

* Texinfo::Convert::Plaintext NAME::
* Texinfo::Convert::Plaintext SYNOPSIS::
* Texinfo::Convert::Plaintext NOTES::
* Texinfo::Convert::Plaintext DESCRIPTION::
* Texinfo::Convert::Plaintext METHODS::
* Texinfo::Convert::Plaintext AUTHOR::
* Texinfo::Convert::Plaintext COPYRIGHT AND LICENSE::


File: texi2any_internals.info,  Node: Texinfo::Convert::Plaintext NAME,  Next: Texinfo::Convert::Plaintext SYNOPSIS,  Up: Texinfo::Convert::Plaintext

23.1 Texinfo::Convert::Plaintext NAME
=====================================

Texinfo::Convert::Plaintext - Convert Texinfo tree to Plaintext


File: texi2any_internals.info,  Node: Texinfo::Convert::Plaintext SYNOPSIS,  Next: Texinfo::Convert::Plaintext NOTES,  Prev: Texinfo::Convert::Plaintext NAME,  Up: Texinfo::Convert::Plaintext

23.2 Texinfo::Convert::Plaintext SYNOPSIS
=========================================

  my $converter
    = Texinfo::Convert::Plaintext->converter({'NUMBER_SECTIONS' => 0});

  $converter->output($document);
  $converter->convert($document);
  $converter->convert_tree($tree);


File: texi2any_internals.info,  Node: Texinfo::Convert::Plaintext NOTES,  Next: Texinfo::Convert::Plaintext DESCRIPTION,  Prev: Texinfo::Convert::Plaintext SYNOPSIS,  Up: Texinfo::Convert::Plaintext

23.3 Texinfo::Convert::Plaintext NOTES
======================================

The Texinfo Perl module main purpose is to be used in ‘texi2any’ to
convert Texinfo to other formats.  There is no promise of API stability.


File: texi2any_internals.info,  Node: Texinfo::Convert::Plaintext DESCRIPTION,  Next: Texinfo::Convert::Plaintext METHODS,  Prev: Texinfo::Convert::Plaintext NOTES,  Up: Texinfo::Convert::Plaintext

23.4 Texinfo::Convert::Plaintext DESCRIPTION
============================================

Texinfo::Convert::Plaintext converts a Texinfo tree to Plaintext.


File: texi2any_internals.info,  Node: Texinfo::Convert::Plaintext METHODS,  Next: Texinfo::Convert::Plaintext AUTHOR,  Prev: Texinfo::Convert::Plaintext DESCRIPTION,  Up: Texinfo::Convert::Plaintext

23.5 Texinfo::Convert::Plaintext METHODS
========================================

$converter = Texinfo::Convert::Plaintext->converter($options)

     Initialize converter from Texinfo to Plaintext.

     The _$options_ hash reference holds Texinfo customization options
     for the converter.  These options should be Texinfo customization
     options that can be passed to the converter.  Most of the
     customization options are described in the Texinfo manual or in the
     customization API manual.  Those customization options, when
     appropriate, override the document content.

     See *note Texinfo::Convert::Converter: Texinfo::Convert::Converter
     NAME. for more information.

$converter->output($document)

     Convert a Texinfo parsed document _$document_ and output the result
     in files as described in the Texinfo manual.

$result = $converter->convert($document)

     Convert a Texinfo parsed document _$document_ and return the
     resulting output.

$result = $converter->convert_tree($tree)

     Convert a Texinfo tree portion _$tree_ and return the resulting
     output.  This function does not try to output a full document but
     only portions.  For a full document use ‘convert’.

     In general, this function should be called after the converter has
     been associated to a document by a call to ‘output’ or ‘convert’.


File: texi2any_internals.info,  Node: Texinfo::Convert::Plaintext AUTHOR,  Next: Texinfo::Convert::Plaintext COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::Plaintext METHODS,  Up: Texinfo::Convert::Plaintext

23.6 Texinfo::Convert::Plaintext AUTHOR
=======================================

Patrice Dumas, <pertusus@free.fr>


File: texi2any_internals.info,  Node: Texinfo::Convert::Plaintext COPYRIGHT AND LICENSE,  Prev: Texinfo::Convert::Plaintext AUTHOR,  Up: Texinfo::Convert::Plaintext

23.7 Texinfo::Convert::Plaintext COPYRIGHT AND LICENSE
======================================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for
all copyright years.

   This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.


File: texi2any_internals.info,  Node: Index,  Prev: Texinfo::Convert::Plaintext,  Up: Top

Appendix A Index
****************

[index]
* Menu:

* %accent_commands:                      Texinfo::Commands @-COMMAND CLASSES.
                                                              (line  13)
* %all_commands:                         Texinfo::Common @-COMMAND INFORMATION.
                                                              (line  13)
* %block_commands:                       Texinfo::Commands @-COMMAND CLASSES.
                                                              (line  18)
* %blockitem_commands:                   Texinfo::Commands @-COMMAND CLASSES.
                                                              (line  83)
* %brace_code_commands:                  Texinfo::Commands @-COMMAND CLASSES.
                                                              (line  88)
* %brace_commands:                       Texinfo::Commands @-COMMAND CLASSES.
                                                              (line  93)
* %close_paragraph_commands:             Texinfo::Commands @-COMMAND CLASSES.
                                                              (line  99)
* %commands_args_number:                 Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 104)
* %contain_basic_inline_commands:        Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 119)
* %contain_plain_text:                   Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 124)
* %def_aliases:                          Texinfo::Common @-COMMAND INFORMATION.
                                                              (line  19)
* %def_commands:                         Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 129)
* %def_no_var_arg_commands:              Texinfo::Common @-COMMAND INFORMATION.
                                                              (line  19)
* %default_index_commands:               Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 133)
* %explained_commands:                   Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 138)
* %formattable_line_commands:            Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 143)
* %formatted_line_commands:              Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 160)
* %formatted_nobrace_commands:           Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 152)
* %heading_spec_commands:                Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 169)
* %in_heading_spec_commands:             Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 173)
* %index_names:                          Texinfo::Commands @-COMMAND INFORMATION.
                                                              (line  10)
* %inline_conditional_commands:          Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 185)
* %inline_format_commands:               Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 185)
* %letter_no_arg_commands:               Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 190)
* %line_commands:                        Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 199)
* %math_commands:                        Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 195)
* %no_paragraph_commands:                Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 210)
* %nobrace_commands:                     Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 214)
* %nobrace_symbol_text:                  Texinfo::Common @-COMMAND INFORMATION.
                                                              (line  30)
* %non_formatted_block_commands:         Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 225)
* %preamble_commands:                    Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 235)
* %preformatted_code_commands:           Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 241)
* %preformatted_commands:                Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 241)
* %ref_commands:                         Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 248)
* %root_commands:                        Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 253)
* %sectioning_heading_commands:          Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 258)
* %small_block_associated_command:       Texinfo::Common @-COMMAND INFORMATION.
                                                              (line  36)
* %texinfo_output_formats:               Texinfo::Common MISC INFORMATION.
                                                              (line  46)
* %variadic_commands:                    Texinfo::Commands @-COMMAND CLASSES.
                                                              (line 262)
* add_formatted_message:                 Texinfo::Report METHODS.
                                                              (line  58)
* add_heading_number:                    Texinfo::Convert::Utils METHODS.
                                                              (line  23)
* ascii_accent_fallback:                 Texinfo::Convert::Text METHODS.
                                                              (line  56)
* associate_internal_references:         Texinfo::Structuring METHODS.
                                                              (line  19)
* brace_no_arg_command:                  Texinfo::Convert::Unicode METHODS.
                                                              (line   7)
* cdt:                                   Texinfo::Convert::Converter Translations in output documents.
                                                              (line  18)
* cdt_string:                            Texinfo::Convert::Converter Translations in output documents.
                                                              (line  18)
* check_nodes_are_referenced:            Texinfo::Structuring METHODS.
                                                              (line  28)
* check_unicode_point_conversion:        Texinfo::Convert::Unicode METHODS.
                                                              (line  14)
* clear:                                 Texinfo::Report METHODS.
                                                              (line  54)
* collect_commands_in_tree:              Texinfo::Common METHODS.
                                                              (line  44)
* collect_commands_list_in_tree:         Texinfo::Common METHODS.
                                                              (line  51)
* comma_index_subentries_tree:           Texinfo::Convert::Converter Helper methods.
                                                              (line  17)
* complete_node_tree_with_menus:         Texinfo::Structuring METHODS.
                                                              (line  36)
* complete_tree_nodes_menus:             Texinfo::Transformations METHODS.
                                                              (line   9)
* complete_tree_nodes_missing_menu:      Texinfo::Transformations METHODS.
                                                              (line  18)
* conversion_finalization:               Texinfo::Convert::Converter Conversion.
                                                              (line  29)
* conversion_initialization:             Texinfo::Convert::Converter Conversion.
                                                              (line  29)
* conversion_output_begin:               Texinfo::Convert::Converter Conversion.
                                                              (line  49)
* conversion_output_end:                 Texinfo::Convert::Converter Conversion.
                                                              (line  49)
* convert:                               Texinfo::Convert::Converter DESCRIPTION.
                                                              (line  55)
* convert_accents:                       Texinfo::Convert::Converter Helper methods.
                                                              (line  26)
* convert_output_unit:                   Texinfo::Convert::Converter DESCRIPTION.
                                                              (line  64)
* convert_to_identifier:                 Texinfo::Convert::NodeNameNormalization METHODS.
                                                              (line  14)
* convert_to_normalized:                 Texinfo::Convert::NodeNameNormalization METHODS.
                                                              (line   7)
* convert_to_texinfo:                    Texinfo::Convert::Texinfo METHODS.
                                                              (line   7)
* convert_to_text:                       Texinfo::Convert::Text METHODS.
                                                              (line   7)
* convert_tree:                          Texinfo::Convert::Converter DESCRIPTION.
                                                              (line  13)
* converter:                             Texinfo::Convert::Converter Converter Initialization.
                                                              (line   6)
* converter_defaults:                    Texinfo::Convert::Converter Converter Initialization.
                                                              (line  25)
* converter_document_error:              Texinfo::Convert::Converter Registering error and warning messages.
                                                              (line  15)
* converter_document_warn:               Texinfo::Convert::Converter Registering error and warning messages.
                                                              (line  15)
* converter_initialize:                  Texinfo::Convert::Converter Converter Initialization.
                                                              (line  35)
* converter_line_error:                  Texinfo::Convert::Converter Registering error and warning messages.
                                                              (line  25)
* converter_line_warn:                   Texinfo::Convert::Converter Registering error and warning messages.
                                                              (line  25)
* create_destination_directory:          Texinfo::Convert::Converter Helper methods.
                                                              (line  34)
* definition_arguments_content:          Texinfo::Convert::Utils METHODS.
                                                              (line  33)
* definition_category_tree:              Texinfo::Convert::Utils METHODS.
                                                              (line  43)
* determine_files_and_directory:         Texinfo::Convert::Converter Helper methods.
                                                              (line  42)
* document_descriptor:                   Texinfo::Document Methods for Perl and C code interactions.
                                                              (line  25)
* document_error:                        Texinfo::Report METHODS.
                                                              (line  90)
* document_warn:                         Texinfo::Report METHODS.
                                                              (line  90)
* element_associated_processing_encoding: Texinfo::Common METHODS.
                                                              (line  58)
* element_is_inline:                     Texinfo::Common METHODS.
                                                              (line  63)
* encoded_accents:                       Texinfo::Convert::Unicode METHODS.
                                                              (line  24)
* encoded_input_file_name:               Texinfo::Convert::Utils METHODS.
                                                              (line  53)
* encoded_input_file_name <1>:           Texinfo::Convert::Converter Helper methods.
                                                              (line  69)
* encoded_output_file_name:              Texinfo::Convert::Utils METHODS.
                                                              (line  53)
* encoded_output_file_name <1>:          Texinfo::Convert::Converter Helper methods.
                                                              (line  69)
* enumerate_item_representation:         Texinfo::Common METHODS.
                                                              (line  79)
* errors:                                Texinfo::Report METHODS.
                                                              (line  17)
* expand_today:                          Texinfo::Convert::Utils METHODS.
                                                              (line  70)
* expand_verbatiminclude:                Texinfo::Convert::Utils METHODS.
                                                              (line  76)
* fill_gaps_in_sectioning:               Texinfo::Transformations METHODS.
                                                              (line  27)
* find_innermost_accent_contents:        Texinfo::Convert::Utils METHODS.
                                                              (line  85)
* find_parent_root_command:              Texinfo::Common METHODS.
                                                              (line  89)
* float_name_caption:                    Texinfo::Convert::Converter Helper methods.
                                                              (line  95)
* float_type_number:                     Texinfo::Convert::Converter Helper methods.
                                                              (line 102)
* floats_information:                    Texinfo::Document Getting document information.
                                                              (line  89)
* force_conf:                            Texinfo::Convert::Converter Getting and setting customization variables.
                                                              (line  19)
* format_comment_or_return_end_line:     Texinfo::Convert::Converter Helper methods.
                                                              (line 108)
* gdt:                                   Texinfo::Translations METHODS.
                                                              (line  29)
* gdt_string:                            Texinfo::Translations METHODS.
                                                              (line  29)
* get_conf:                              Texinfo::Convert::Converter Getting and setting customization variables.
                                                              (line  26)
* get_converter_errors:                  Texinfo::Convert::Converter Registering error and warning messages.
                                                              (line  39)
* get_converter_indices_sorted_by_index: Texinfo::Convert::Converter Index sorting.
                                                              (line  11)
* get_converter_indices_sorted_by_letter: Texinfo::Convert::Converter Index sorting.
                                                              (line  11)
* get_node_node_childs_from_sectioning:  Texinfo::Structuring METHODS.
                                                              (line  41)
* global_commands_information:           Texinfo::Document Getting document information.
                                                              (line  55)
* global_information:                    Texinfo::Document Getting document information.
                                                              (line  27)
* index_entry_element_sort_string:       Texinfo::Indices METHODS.
                                                              (line   9)
* indices_information:                   Texinfo::Document Getting document information.
                                                              (line 126)
* insert_nodes_for_sectioning_commands:  Texinfo::Transformations METHODS.
                                                              (line  43)
* internal_references_information:       Texinfo::Document Getting document information.
                                                              (line  99)
* is_content_empty:                      Texinfo::Common METHODS.
                                                              (line 106)
* labels_information:                    Texinfo::Document Getting document information.
                                                              (line  75)
* labels_list:                           Texinfo::Document Getting document information.
                                                              (line  80)
* line_error:                            Texinfo::Report METHODS.
                                                              (line  66)
* line_warn:                             Texinfo::Report METHODS.
                                                              (line  66)
* locate_include_file:                   Texinfo::Common METHODS.
                                                              (line 112)
* menu_to_simple_menu:                   Texinfo::Transformations METHODS.
                                                              (line  50)
* merge_indices:                         Texinfo::Indices METHODS.
                                                              (line  43)
* merged_indices:                        Texinfo::Document Merging and sorting indices.
                                                              (line  17)
* move_index_entries_after_items_in_tree: Texinfo::ManipulateTree METHODS.
                                                              (line  13)
* new_block_command:                     Texinfo::Structuring METHODS.
                                                              (line  48)
* new_complete_node_menu:                Texinfo::Structuring METHODS.
                                                              (line  53)
* new_detailmenu:                        Texinfo::Structuring METHODS.
                                                              (line  62)
* new_node_menu_entry:                   Texinfo::Structuring METHODS.
                                                              (line  76)
* node_information_filename:             Texinfo::Convert::Converter Helper methods.
                                                              (line 116)
* nodes_tree:                            Texinfo::Structuring METHODS.
                                                              (line  83)
* normalize_top_node_name:               Texinfo::Common METHODS.
                                                              (line 138)
* normalize_transliterate_texinfo:       Texinfo::Convert::NodeNameNormalization METHODS.
                                                              (line  23)
* normalized_sectioning_command_filename: Texinfo::Convert::Converter Helper methods.
                                                              (line 121)
* number_floats:                         Texinfo::Structuring METHODS.
                                                              (line  95)
* output:                                Texinfo::Convert::Converter DESCRIPTION.
                                                              (line  21)
* output_internal_links:                 Texinfo::Convert::Converter Helper methods.
                                                              (line 186)
* output_internal_links <1>:             Texinfo::Convert::HTML METHODS.
                                                              (line  40)
* output_tree:                           Texinfo::Convert::Converter DESCRIPTION.
                                                              (line  21)
* parse_texi_file:                       Texinfo::Parser Parsing Texinfo text.
                                                              (line  41)
* parse_texi_line:                       Texinfo::Parser Parsing Texinfo text.
                                                              (line  17)
* parse_texi_piece:                      Texinfo::Parser Parsing Texinfo text.
                                                              (line  25)
* parse_texi_text:                       Texinfo::Parser Parsing Texinfo text.
                                                              (line  33)
* Parser initialization:                 Texinfo::Parser Initialization.
                                                              (line  10)
* parser_errors:                         Texinfo::Parser Parsing Texinfo text.
                                                              (line  50)
* pcdt:                                  Texinfo::Convert::Converter Translations in output documents.
                                                              (line  38)
* pgdt:                                  Texinfo::Translations METHODS.
                                                              (line  77)
* present_bug_message:                   Texinfo::Convert::Converter Helper methods.
                                                              (line 130)
* protect_colon_in_tree:                 Texinfo::ManipulateTree METHODS.
                                                              (line  21)
* protect_comma_in_tree:                 Texinfo::ManipulateTree METHODS.
                                                              (line  28)
* protect_first_parenthesis:             Texinfo::ManipulateTree METHODS.
                                                              (line  32)
* protect_hashchar_at_line_beginning:    Texinfo::Transformations METHODS.
                                                              (line  64)
* protect_node_after_label_in_tree:      Texinfo::ManipulateTree METHODS.
                                                              (line  21)
* rebuild_tree:                          Texinfo::Document Methods for Perl and C code interactions.
                                                              (line  36)
* reference_to_arg_in_tree:              Texinfo::Transformations METHODS.
                                                              (line  79)
* regenerate_master_menu:                Texinfo::Transformations METHODS.
                                                              (line  93)
* register_document_nodes_list:          Texinfo::Document Registering document and information in document.
                                                              (line  19)
* register_document_options:             Texinfo::Document Registering document and information in document.
                                                              (line  25)
* register_document_sections_list:       Texinfo::Document Registering document and information in document.
                                                              (line  38)
* relate_index_entries_to_table_items_in_tree: Texinfo::ManipulateTree METHODS.
                                                              (line  37)
* remove_document:                       Texinfo::Document Methods for Perl and C code interactions.
                                                              (line  55)
* reset_options_code:                    Texinfo::Convert::Text METHODS.
                                                              (line  67)
* reset_options_encoding:                Texinfo::Convert::Text METHODS.
                                                              (line  80)
* section_level:                         Texinfo::Common METHODS.
                                                              (line 148)
* section_level_adjusted_command_name:   Texinfo::Structuring METHODS.
                                                              (line 100)
* sectioning_structure:                  Texinfo::Structuring METHODS.
                                                              (line 106)
* set_conf:                              Texinfo::Convert::Converter Getting and setting customization variables.
                                                              (line  31)
* set_document:                          Texinfo::Convert::Converter Conversion.
                                                              (line  13)
* set_document_global_info:              Texinfo::Document Registering document and information in document.
                                                              (line  44)
* set_global_document_command:           Texinfo::Common METHODS.
                                                              (line 153)
* set_global_document_commands:          Texinfo::Convert::Converter Helper methods.
                                                              (line 135)
* set_informative_command_value:         Texinfo::Common METHODS.
                                                              (line 187)
* set_menus_node_directions:             Texinfo::Structuring METHODS.
                                                              (line 146)
* set_menus_to_simple_menu:              Texinfo::Transformations METHODS.
                                                              (line  50)
* set_options_code:                      Texinfo::Convert::Text METHODS.
                                                              (line  67)
* set_options_encoding:                  Texinfo::Convert::Text METHODS.
                                                              (line  80)
* set_options_encoding_if_not_ascii:     Texinfo::Convert::Text METHODS.
                                                              (line  80)
* set_output_encoding:                   Texinfo::Common METHODS.
                                                              (line 196)
* set_output_perl_encoding:              Texinfo::Common METHODS.
                                                              (line 201)
* setup_index_entry_keys_formatting:     Texinfo::Indices METHODS.
                                                              (line  63)
* sort_indices_by_index:                 Texinfo::Indices METHODS.
                                                              (line  70)
* sort_indices_by_letter:                Texinfo::Indices METHODS.
                                                              (line  70)
* sorted_indices_by_index:               Texinfo::Document Merging and sorting indices.
                                                              (line  33)
* sorted_indices_by_letter:              Texinfo::Document Merging and sorting indices.
                                                              (line  33)
* split_by_node:                         Texinfo::OutputUnits Output units creation.
                                                              (line  33)
* split_by_section:                      Texinfo::OutputUnits Output units creation.
                                                              (line  43)
* split_custom_heading_command_contents: Texinfo::Common METHODS.
                                                              (line 208)
* split_pages:                           Texinfo::OutputUnits Grouping output units in pages.
                                                              (line   9)
* string_width:                          Texinfo::Convert::Unicode METHODS.
                                                              (line  50)
* table_item_content_tree:               Texinfo::Convert::Converter Helper methods.
                                                              (line 171)
* Texinfo tree element extra key:        Texinfo::Parser Information available in the extra key.
                                                              (line   6)
* Texinfo tree element structure:        Texinfo::Parser Element keys.
                                                              (line   6)
* Texinfo tree elements:                 Texinfo::Parser TEXINFO TREE.
                                                              (line   6)
* Texinfo::Convert::Converter initialization: Texinfo::Convert::Converter Converter Initialization.
                                                              (line   6)
* Texinfo::Parser::parser:               Texinfo::Parser Initialization.
                                                              (line  10)
* Texinfo::Report::new:                  Texinfo::Report METHODS.
                                                              (line  13)
* text_accents:                          Texinfo::Convert::Text METHODS.
                                                              (line  93)
* top_node_filename:                     Texinfo::Convert::Converter Helper methods.
                                                              (line 178)
* translate_string:                      Texinfo::Translations METHODS.
                                                              (line  87)
* transliterate_protect_file_name:       Texinfo::Convert::NodeNameNormalization METHODS.
                                                              (line  38)
* transliterate_texinfo:                 Texinfo::Convert::NodeNameNormalization METHODS.
                                                              (line  31)
* tree:                                  Texinfo::Document Getting document information.
                                                              (line  13)
* unicode_accent:                        Texinfo::Convert::Unicode METHODS.
                                                              (line  56)
* unicode_point_decoded_in_encoding:     Texinfo::Convert::Unicode METHODS.
                                                              (line  63)
* unicode_text:                          Texinfo::Convert::Unicode METHODS.
                                                              (line  75)
* units_directions:                      Texinfo::OutputUnits Setting output units directions.
                                                              (line   9)
* units_file_directions:                 Texinfo::OutputUnits Setting output units directions.
                                                              (line  74)
* valid_option:                          Texinfo::Common METHODS.
                                                              (line 217)
* valid_tree_transformation:             Texinfo::Common METHODS.
                                                              (line 221)
* warn_non_empty_parts:                  Texinfo::Structuring METHODS.
                                                              (line 157)
* xml_accent:                            Texinfo::Convert::Converter Conversion to XML.
                                                              (line  24)
* xml_accents:                           Texinfo::Convert::Converter Conversion to XML.
                                                              (line  36)
* xml_comment:                           Texinfo::Convert::Converter Conversion to XML.
                                                              (line  20)
* xml_format_text_with_numeric_entities: Texinfo::Convert::Converter Conversion to XML.
                                                              (line  11)
* xml_numeric_entity_accent:             Texinfo::Convert::Converter Conversion to XML.
                                                              (line  42)
* xml_protect_text:                      Texinfo::Convert::Converter Conversion to XML.
                                                              (line  16)


Tag Table:
Node: Top300
Node: Texinfo::Commands10764
Node: Texinfo::Commands NAME11246
Node: Texinfo::Commands SYNOPSIS11472
Node: Texinfo::Commands NOTES11831
Node: Texinfo::Commands DESCRIPTION12196
Node: Texinfo::Commands @-COMMAND INFORMATION12552
Ref: Texinfo::Commands %index_names12900
Node: Texinfo::Commands @-COMMAND CLASSES13137
Ref: Texinfo::Commands %accent_commands13576
Ref: Texinfo::Commands %block_commands13725
Ref: Texinfo::Commands _conditional_13823
Ref: Texinfo::Commands _def_13867
Ref: Texinfo::Commands _float_13931
Ref: Texinfo::Commands _format_raw_13975
Ref: Texinfo::Commands _item_container_14072
Ref: Texinfo::Commands _item_line_14198
Ref: Texinfo::Commands _menu_14309
Ref: Texinfo::Commands _math_14402
Ref: Texinfo::Commands _multitable_14478
Ref: Texinfo::Commands _other_14522
Ref: Texinfo::Commands _preformatted_14584
Ref: Texinfo::Commands _quotation_14707
Ref: Texinfo::Commands _raw_14762
Ref: Texinfo::Commands _region_14913
Ref: Texinfo::Commands %blockitem_commands15090
Ref: Texinfo::Commands %brace_code_commands15262
Ref: Texinfo::Commands %brace_commands15363
Ref: Texinfo::Commands %close_paragraph_commands15612
Ref: Texinfo::Commands %commands_args_number15749
Ref: Texinfo::Commands %contain_basic_inline_commands16512
Ref: Texinfo::Commands %contain_plain_text_commands16707
Ref: Texinfo::Commands %def_commands16808
Ref: Texinfo::Commands %default_index_commands16860
Ref: Texinfo::Commands %explained_commands16975
Ref: Texinfo::Commands %formattable_line_commands17156
Ref: Texinfo::Commands %formatted_nobrace_commands17564
Ref: Texinfo::Commands %formatted_line_commands17899
Ref: Texinfo::Commands %heading_spec_commands18327
Ref: Texinfo::Commands %in_heading_spec_commands18430
Ref: Texinfo::Commands %in_index_commands18568
Ref: Texinfo::Commands %inline_conditional_commands18691
Ref: Texinfo::Commands %inline_format_commands18716
Ref: Texinfo::Commands %letter_no_arg_commands18879
Ref: Texinfo::Commands %math_commands19018
Ref: Texinfo::Commands %line_commands19112
Ref: Texinfo::Commands %no_paragraph_commands19575
Ref: Texinfo::Commands %nobrace_commands19640
Ref: Texinfo::Commands %non_formatted_block_commands20133
Ref: Texinfo::Commands %non_formatted_brace_commands20252
Ref: Texinfo::Commands %preamble_commands20407
Ref: Texinfo::Commands %preformatted_commands20479
Ref: Texinfo::Commands %preformatted_code_commands20508
Ref: Texinfo::Commands %ref_commands20761
Ref: Texinfo::Commands %root_commands20866
Ref: Texinfo::Commands %sectioning_heading_commands21049
Ref: Texinfo::Commands %variadic_commands21116
Node: Texinfo::Commands SEE ALSO21179
Node: Texinfo::Commands AUTHOR21459
Node: Texinfo::Commands COPYRIGHT AND LICENSE21726
Node: Texinfo::Common22291
Node: Texinfo::Common NAME22792
Node: Texinfo::Common SYNOPSIS23033
Node: Texinfo::Common NOTES23550
Node: Texinfo::Common DESCRIPTION23903
Node: Texinfo::Common MISC INFORMATION24281
Ref: Texinfo::Common $value = get_build_constant($name)24769
Ref: Texinfo::Common PACKAGE24834
Ref: Texinfo::Common PACKAGE_CONFIG24855
Ref: Texinfo::Common PACKAGE_AND_VERSION24881
Ref: Texinfo::Common PACKAGE_AND_VERSION_CONFIG24914
Ref: Texinfo::Common PACKAGE_NAME24933
Ref: Texinfo::Common PACKAGE_NAME_CONFIG24959
Ref: Texinfo::Common PACKAGE_VERSION24981
Ref: Texinfo::Common PACKAGE_VERSION_CONFIG25010
Ref: Texinfo::Common PACKAGE_URL25028
Ref: Texinfo::Common PACKAGE_URL_CONFIG25053
Ref: Texinfo::Common %texinfo_output_formats25582
Node: Texinfo::Common @-COMMAND INFORMATION26157
Ref: Texinfo::Common %all_commands26591
Ref: Texinfo::Common %def_aliases26631
Ref: Texinfo::Common %def_no_var_arg_commands26657
Ref: Texinfo::Common %nobrace_symbol_text27176
Ref: Texinfo::Common %small_block_associated_command27380
Node: Texinfo::Common METHODS27478
Ref: Texinfo::Common $translated_string = __($msgid)28297
Ref: Texinfo::Common $translated_string = __p($msgctxt, $msgid)28341
Ref: Texinfo::Common collect_commands_in_tree($tree, $commands_list)29657
Ref: Texinfo::Common collect_commands_list_in_tree($tree, $commands_list)29943
Ref: Texinfo::Common $encoding_name = element_associated_processing_encoding($element)30242
Ref: Texinfo::Common $result = element_is_inline($element, $check_current)30430
Ref: Texinfo::Common ($encoded_file_name, $encoding) = encode_file_name($file_name, $input_encoding)30713
Ref: Texinfo::Common $text = enumerate_item_representation($specification, $number)31212
Ref: Texinfo::Common $command = find_parent_root_command($object, $tree_element)31542
Ref: Texinfo::Common $entry_content_element = index_content_element($element, $prefer_reference_element)31867
Ref: Texinfo::Common $result = is_content_empty($tree, $do_not_ignore_index_entries)32377
Ref: Texinfo::Common $file = locate_include_file($customization_information, $file_path)32625
Ref: Texinfo::Common ($index_entry, $index_info) = lookup_index_entry($index_entry_info, $indices_information)33200
Ref: Texinfo::Common $normalized_name = normalize_top_node_name($node_string)34048
Ref: Texinfo::Common $result = remove_from_array($array, $element)34186
Ref: Texinfo::Common $level = section_level($section)34359
Ref: Texinfo::Common $element = set_global_document_command($customization_information, $global_commands_information, $cmdname, $command_location)34598
Ref: Texinfo::Common last35177
Ref: Texinfo::Common preamble35242
Ref: Texinfo::Common preamble_or_first35333
Ref: Texinfo::Common $status = set_informative_command_value($customization_information, $element)35958
Ref: Texinfo::Common set_output_encoding($customization_information, $document)36396
Ref: Texinfo::Common set_output_perl_encoding($customization_information)36542
Ref: Texinfo::Common $split_contents = split_custom_heading_command_contents($element)36842
Ref: Texinfo::Common $status = valid_customization_option($name)37256
Ref: Texinfo::Common $status = valid_tree_transformation($name)37366
Node: Texinfo::Common SEE ALSO37518
Node: Texinfo::Common AUTHOR37898
Node: Texinfo::Common COPYRIGHT AND LICENSE38153
Node: Texinfo::Parser38710
Node: Texinfo::Parser NAME39163
Node: Texinfo::Parser SYNOPSIS39386
Node: Texinfo::Parser NOTES39866
Node: Texinfo::Parser DESCRIPTION40219
Node: Texinfo::Parser METHODS40850
Node: Texinfo::Parser Initialization41361
Ref: Texinfo::Parser $parser = Texinfo::Parser::parser($options)41674
Ref: Texinfo::Parser CPP_LINE_DIRECTIVES41900
Ref: Texinfo::Parser EXPANDED_FORMATS42016
Ref: Texinfo::Parser FORMAT_MENU42192
Ref: Texinfo::Parser INCLUDE_DIRECTORIES42355
Ref: Texinfo::Parser IGNORE_SPACE_AFTER_BRACED_COMMAND_NAME42569
Ref: Texinfo::Parser MAX_MACRO_CALL_NESTING42701
Ref: Texinfo::Parser documentlanguage42816
Ref: Texinfo::Parser values43014
Node: Texinfo::Parser Parsing Texinfo text43143
Ref: Texinfo::Parser $tree = $parser->parse_texi_line($text, $first_line_number)43903
Ref: Texinfo::Parser $document = $parser->parse_texi_piece($text, $first_line_number)44191
Ref: Texinfo::Parser $document = $parser->parse_texi_text($text, $first_line_number)44474
Ref: Texinfo::Parser $document = $parser->parse_texi_file($file_name)44751
Ref: Texinfo::Parser ($error_warnings_list, $error_count) = $document->parser_errors()45151
Node: Texinfo::Parser TEXINFO TREE45510
Node: Texinfo::Parser Element keys47450
Ref: Texinfo::Parser cmdname47640
Ref: Texinfo::Parser text47692
Ref: Texinfo::Parser type47740
Ref: Texinfo::Parser args48326
Ref: Texinfo::Parser contents48405
Ref: Texinfo::Parser parent48559
Ref: Texinfo::Parser source_info48598
Ref: Texinfo::Parser line_nr49005
Ref: Texinfo::Parser file_name49066
Ref: Texinfo::Parser macro49129
Ref: Texinfo::Parser info49198
Ref: Texinfo::Parser extra49433
Node: Texinfo::Parser Element types49724
Node: Texinfo::Parser Types for command elements50171
Ref: Texinfo::Parser definfoenclose_command50645
Ref: Texinfo::Parser index_entry_command50906
Node: Texinfo::Parser Types for text elements51283
Ref: Texinfo::Parser after_menu_description_line51670
Ref: Texinfo::Parser space_at_end_menu_node51694
Ref: Texinfo::Parser delimiter51832
Ref: Texinfo::Parser spaces51840
Ref: Texinfo::Parser empty_line52147
Ref: Texinfo::Parser ignorable_spaces_after_command52249
Ref: Texinfo::Parser spaces_after_close_brace52511
Ref: Texinfo::Parser spaces_before_paragraph52696
Ref: Texinfo::Parser raw52753
Ref: Texinfo::Parser rawline_arg52884
Ref: Texinfo::Parser spaces_at_end53157
Ref: Texinfo::Parser text_after_end53268
Ref: Texinfo::Parser text_before_beginning53324
Ref: Texinfo::Parser untranslated53425
Node: Texinfo::Parser Tree container elements53623
Ref: Texinfo::Parser before_node_section54085
Ref: Texinfo::Parser document_root54197
Ref: Texinfo::Parser root_line54208
Ref: Texinfo::Parser postamble_after_end54590
Ref: Texinfo::Parser preamble_before_beginning54677
Ref: Texinfo::Parser preamble_before_setfilename54856
Ref: Texinfo::Parser preamble_before_content54959
Node: Texinfo::Parser Types of container elements55116
Ref: Texinfo::Parser balanced_braces55990
Ref: Texinfo::Parser before_defline56349
Ref: Texinfo::Parser before_item56471
Ref: Texinfo::Parser brace_container56639
Ref: Texinfo::Parser brace_command_context56662
Ref: Texinfo::Parser brace_arg56673
Ref: Texinfo::Parser line_arg56683
Ref: Texinfo::Parser block_line_arg56699
Ref: Texinfo::Parser following_arg56714
Ref: Texinfo::Parser bracketed_arg58042
Ref: Texinfo::Parser bracketed_linemacro_arg58152
Ref: Texinfo::Parser def_category58469
Ref: Texinfo::Parser def_class58480
Ref: Texinfo::Parser def_type58490
Ref: Texinfo::Parser def_name58500
Ref: Texinfo::Parser def_typearg58513
Ref: Texinfo::Parser def_arg58522
Ref: Texinfo::Parser def_line58752
Ref: Texinfo::Parser def_item58762
Ref: Texinfo::Parser inter_def_item58778
Ref: Texinfo::Parser def_line_arg59536
Ref: Texinfo::Parser untranslated_def_line_arg59563
Ref: Texinfo::Parser macro_call60573
Ref: Texinfo::Parser macro_call_line60590
Ref: Texinfo::Parser rmacro_call60603
Ref: Texinfo::Parser rmacro_call_line60621
Ref: Texinfo::Parser linemacro_call60637
Ref: Texinfo::Parser macro_name61045
Ref: Texinfo::Parser macro_arg61056
Ref: Texinfo::Parser menu_comment61342
Ref: Texinfo::Parser menu_entry61674
Ref: Texinfo::Parser menu_entry_leading_text61699
Ref: Texinfo::Parser menu_entry_name61716
Ref: Texinfo::Parser menu_entry_separator61738
Ref: Texinfo::Parser menu_entry_node61755
Ref: Texinfo::Parser menu_entry_description61779
Ref: Texinfo::Parser multitable_head62362
Ref: Texinfo::Parser multitable_body62379
Ref: Texinfo::Parser row62384
Ref: Texinfo::Parser paragraph62657
Ref: Texinfo::Parser preformatted63002
Ref: Texinfo::Parser rawpreformatted63200
Ref: Texinfo::Parser table_entry63312
Ref: Texinfo::Parser table_term63324
Ref: Texinfo::Parser table_definition63342
Ref: Texinfo::Parser inter_item63354
Node: Texinfo::Parser Information available in the info key64008
Ref: Texinfo::Parser arg_line64345
Ref: Texinfo::Parser command_name64514
Ref: Texinfo::Parser delimiter 164856
Ref: Texinfo::Parser inserted64913
Ref: Texinfo::Parser spaces_after_argument65164
Ref: Texinfo::Parser spaces_after_cmd_before_arg65651
Ref: Texinfo::Parser spaces_before_argument66124
Node: Texinfo::Parser Information available in the extra key66669
Node: Texinfo::Parser Extra keys available for more than one @-command67120
Ref: Texinfo::Parser element_node67495
Ref: Texinfo::Parser element_region67684
Ref: Texinfo::Parser index_entry67907
Ref: Texinfo::Parser index_ignore_chars69128
Ref: Texinfo::Parser misc_args69378
Ref: Texinfo::Parser text_arg69612
Node: Texinfo::Parser Extra keys specific of certain @-commands or containers69812
Ref: Texinfo::Parser @abbr70200
Ref: Texinfo::Parser @acronym70216
Ref: Texinfo::Parser @anchor70287
Ref: Texinfo::Parser @float70301
Ref: Texinfo::Parser @author70600
Ref: Texinfo::Parser @click70950
Ref: Texinfo::Parser def_line 171029
Ref: Texinfo::Parser line definition command71054
Ref: Texinfo::Parser @definfoenclose defined commands72325
Ref: Texinfo::Parser @documentencoding72480
Ref: Texinfo::Parser @enumerate72558
Ref: Texinfo::Parser @float 172662
Ref: Texinfo::Parser @listoffloats72683
Ref: Texinfo::Parser index entry @-command73054
Ref: Texinfo::Parser @subentry73071
Ref: Texinfo::Parser @inlinefmt73571
Ref: Texinfo::Parser @inlineraw73589
Ref: Texinfo::Parser @inlinefmtifelse73613
Ref: Texinfo::Parser @inlineifclear73635
Ref: Texinfo::Parser @inlineifset73655
Ref: Texinfo::Parser @item in @enumerate or @itemize74064
Ref: Texinfo::Parser @item and @tab in @multitable74184
Ref: Texinfo::Parser @itemize74282
Ref: Texinfo::Parser @table74296
Ref: Texinfo::Parser @vtable74311
Ref: Texinfo::Parser @ftable74326
Ref: Texinfo::Parser @kbd74719
Ref: Texinfo::Parser @macro74804
Ref: Texinfo::Parser menu_entry_node 174976
Ref: Texinfo::Parser @multitable75187
Ref: Texinfo::Parser @node75427
Ref: Texinfo::Parser paragraph 176856
Ref: Texinfo::Parser @part76992
Ref: Texinfo::Parser @ref77232
Ref: Texinfo::Parser @xref77245
Ref: Texinfo::Parser @pxref77259
Ref: Texinfo::Parser @inforef77275
Ref: Texinfo::Parser row 177500
Ref: Texinfo::Parser sectioning command77611
Ref: Texinfo::Parser untranslated_def_line_arg 178099
Node: Texinfo::Parser SEE ALSO78246
Node: Texinfo::Parser AUTHOR78533
Node: Texinfo::Parser COPYRIGHT AND LICENSE78788
Node: Texinfo::Document79343
Node: Texinfo::Document NAME79789
Node: Texinfo::Document SYNOPSIS80026
Node: Texinfo::Document NOTES81143
Node: Texinfo::Document DESCRIPTION81508
Node: Texinfo::Document METHODS81951
Node: Texinfo::Document Getting document information82581
Ref: Texinfo::Document $tree = tree($document, $handler_only)83055
Ref: Texinfo::Document $info = global_information($document)83627
Ref: Texinfo::Document included_files83719
Ref: Texinfo::Document input_encoding_name83911
Ref: Texinfo::Document input_file_name84035
Ref: Texinfo::Document input_directory84057
Ref: Texinfo::Document $commands = global_commands_information($document)84592
Ref: Texinfo::Document dircategory_direntry84856
Ref: Texinfo::Document $identifier_target = labels_information($document)85402
Ref: Texinfo::Document $labels_list = labels_list ($document)85585
Ref: Texinfo::Document $float_types = floats_information($document)85909
Ref: Texinfo::Document $internal_references_array = internal_references_information($document)86380
Ref: Texinfo::Document $nodes_list = nodes_list($document)86587
Ref: Texinfo::Document $sections_list = sections_list($document)86988
Ref: Texinfo::Document $indices_information = $document->indices_information()87562
Ref: Texinfo::Document in_code87640
Ref: Texinfo::Document name87748
Ref: Texinfo::Document prefix87788
Ref: Texinfo::Document merged_in87869
Ref: Texinfo::Document index_entries88079
Ref: Texinfo::Document index_name88448
Ref: Texinfo::Document entry_element88666
Ref: Texinfo::Document entry_number88807
Node: Texinfo::Document Merging and sorting indices89418
Ref: Texinfo::Document $merged_indices = $document->merged_indices()90299
Ref: Texinfo::Document $sorted_indices = $document->sorted_indices_by_index($customization_information, $use_unicode_collation, $locale_lang)90974
Ref: Texinfo::Document $sorted_indices = $document->sorted_indices_by_letter($customization_information, $use_unicode_collation, $locale_lang)91095
Node: Texinfo::Document Getting errors and error registering object93932
Ref: Texinfo::Document $registrar = registrar($document)94699
Ref: Texinfo::Document ($error warnings list, $error count) = errors($document)95151
Node: Texinfo::Document Getting customization options values registered in document95601
Ref: Texinfo::Document $value = $document->get_conf($variable_name)96525
Node: Texinfo::Document Registering document and information in document96709
Ref: Texinfo::Document $document = Texinfo::Document::register($tree, $global_information, $indices_information, $floats_information, $internal_references_information, $global_commands_information, $identifier_target, $labels_list, $parser_registrar)97426
Ref: Texinfo::Document register_document_nodes_list ($document, $nodes_list)97785
Ref: Texinfo::Document register_document_options ($document, $options)97994
Ref: Texinfo::Document register_document_sections_list ($document, $sections_list)98697
Ref: Texinfo::Document set_document_global_info($document, $key, $value)98914
Node: Texinfo::Document Methods for Perl and C code interactions99356
Ref: Texinfo::Document $document_descriptor = $document->document_descriptor()100750
Ref: Texinfo::Document $rebuilt_tree = rebuild_tree($tree, $no_store)101237
Ref: Texinfo::Document remove_document($document)102037
Node: Texinfo::Document SEE ALSO102092
Node: Texinfo::Document AUTHOR102419
Node: Texinfo::Document COPYRIGHT AND LICENSE102686
Node: Texinfo::ManipulateTree103251
Node: Texinfo::ManipulateTree NAME103762
Node: Texinfo::ManipulateTree SYNOPSIS104048
Node: Texinfo::ManipulateTree NOTES104334
Node: Texinfo::ManipulateTree DESCRIPTION104735
Node: Texinfo::ManipulateTree METHODS105246
Ref: Texinfo::ManipulateTree move_index_entries_after_items_in_tree($tree)105891
Ref: Texinfo::ManipulateTree protect_colon_in_tree($tree)106119
Ref: Texinfo::ManipulateTree protect_node_after_label_in_tree($tree)106160
Ref: Texinfo::ManipulateTree protect_comma_in_tree($tree)106477
Ref: Texinfo::ManipulateTree protect_first_parenthesis($element)106587
Ref: Texinfo::ManipulateTree relate_index_entries_to_table_items_in_tree($document)106790
Node: Texinfo::ManipulateTree SEE ALSO106958
Node: Texinfo::ManipulateTree AUTHOR107390
Node: Texinfo::ManipulateTree COPYRIGHT AND LICENSE107693
Node: Texinfo::Structuring108288
Node: Texinfo::Structuring NAME108767
Node: Texinfo::Structuring SYNOPSIS109036
Node: Texinfo::Structuring NOTES109884
Node: Texinfo::Structuring DESCRIPTION110267
Node: Texinfo::Structuring METHODS111100
Ref: Texinfo::Structuring associate_internal_references($document)112027
Ref: Texinfo::Structuring check_nodes_are_referenced($document)112450
Ref: Texinfo::Structuring complete_node_tree_with_menus($document)112701
Ref: Texinfo::Structuring @children_nodes = get_node_node_childs_from_sectioning($node)112896
Ref: Texinfo::Structuring new_block_command($element, $command_name)113172
Ref: Texinfo::Structuring $new_menu = new_complete_node_menu($node, $customization_information, $use_sections)113408
Ref: Texinfo::Structuring $detailmenu = new_detailmenu($customization_information, $registrar, $identifier_target, $menus)113903
Ref: Texinfo::Structuring $entry = new_node_menu_entry($node, $use_sections)114594
Ref: Texinfo::Structuring $nodes_list = nodes_tree($document)114863
Ref: Texinfo::Structuring node_directions115048
Ref: Texinfo::Structuring number_floats($float_information)115215
Ref: Texinfo::Structuring $command_name = section_level_adjusted_command_name($element)115424
Ref: Texinfo::Structuring $sections_list = sectioning_structure($document)115658
Ref: Texinfo::Structuring section_level115931
Ref: Texinfo::Structuring section_number116180
Ref: Texinfo::Structuring section_childs116243
Ref: Texinfo::Structuring section_directions116341
Ref: Texinfo::Structuring toplevel_directions116510
Ref: Texinfo::Structuring set_menus_node_directions($document);117133
Ref: Texinfo::Structuring menu_directions117274
Ref: Texinfo::Structuring warn_non_empty_parts($document)117434
Node: Texinfo::Structuring SEE ALSO117554
Node: Texinfo::Structuring AUTHOR117909
Node: Texinfo::Structuring COPYRIGHT AND LICENSE118194
Node: Texinfo::Report118774
Node: Texinfo::Report NAME119170
Node: Texinfo::Report SYNOPSIS119391
Node: Texinfo::Report NOTES120010
Node: Texinfo::Report DESCRIPTION120363
Node: Texinfo::Report METHODS120874
Ref: Texinfo::Report my $registrar = Texinfo::Report::new()121363
Ref: Texinfo::Report ($error_warnings_list, $error_count) = errors($registrar)121480
Ref: Texinfo::Report continuation121758
Ref: Texinfo::Report error_line121840
Ref: Texinfo::Report file_name121941
Ref: Texinfo::Report line_nr122015
Ref: Texinfo::Report macro122079
Ref: Texinfo::Report text122189
Ref: Texinfo::Report type122234
Ref: Texinfo::Report $registrar->clear ()122305
Ref: Texinfo::Report $registrar->add_formatted_message ($msg)122395
Ref: Texinfo::Report $registrar->line_warn($text, $error_location_info, $continuation, $debug, $silent)122681
Ref: Texinfo::Report $registrar->line_error($text, $error_location_info, $continuation, $debug, $silent)122766
Ref: Texinfo::Report $registrar->document_warn($text, $program_name, $continuation)123789
Ref: Texinfo::Report $registrar->document_error($text, $program_name, $continuation)123854
Node: Texinfo::Report AUTHOR124132
Node: Texinfo::Report COPYRIGHT AND LICENSE124386
Node: Texinfo::Translations124941
Node: Texinfo::Translations NAME125432
Node: Texinfo::Translations SYNOPSIS125716
Node: Texinfo::Translations NOTES126330
Node: Texinfo::Translations DESCRIPTION126719
Node: Texinfo::Translations METHODS127233
Ref: Texinfo::Translations configure($localesdir, $strings_textdomain)127666
Ref: Texinfo::Translations $tree = gdt($string, $lang, $replaced_substrings, $translation_context, $debug_level, $object, $translate_string_method)128397
Ref: Texinfo::Translations $string = gdt_string($string, $lang, $replaced_substrings, $translation_context, $object, $translate_string_method)128514
Ref: Texinfo::Translations $tree = pgdt($translation_context, $string, $lang, $replaced_substrings, $debug_level)131045
Ref: Texinfo::Translations $translated_string = translate_string($string, $lang, $translation_context)131494
Node: Texinfo::Translations SEE ALSO131940
Node: Texinfo::Translations AUTHOR132264
Node: Texinfo::Translations COPYRIGHT AND LICENSE132555
Node: Texinfo::Transformations133140
Node: Texinfo::Transformations NAME133622
Node: Texinfo::Transformations NOTES133892
Node: Texinfo::Transformations DESCRIPTION134295
Node: Texinfo::Transformations METHODS135017
Ref: Texinfo::Transformations complete_tree_nodes_menus($tree, $add_section_names_in_entries)135392
Ref: Texinfo::Transformations complete_tree_nodes_missing_menu($document, $use_section_names_in_entries)135855
Ref: Texinfo::Transformations fill_gaps_in_sectioning($tree, $commands_heading_tree)136307
Ref: Texinfo::Transformations insert_nodes_for_sectioning_commands($document)137051
Ref: Texinfo::Transformations menu_to_simple_menu($menu)137165
Ref: Texinfo::Transformations set_menus_to_simple_menu($nodes_list)137204
Ref: Texinfo::Transformations protect_hashchar_at_line_beginning($tree, $registrar, $customization_information)137836
Ref: Texinfo::Transformations $modified_tree = reference_to_arg_in_tree($tree, $document)138684
Ref: Texinfo::Transformations regenerate_master_menu($document, $use_sections)139380
Node: Texinfo::Transformations SEE ALSO139687
Node: Texinfo::Transformations AUTHOR140125
Node: Texinfo::Transformations COPYRIGHT AND LICENSE140434
Node: Texinfo::Indices141034
Node: Texinfo::Indices NAME141477
Node: Texinfo::Indices SYNOPSIS141713
Node: Texinfo::Indices NOTES142649
Node: Texinfo::Indices DESCRIPTION143010
Node: Texinfo::Indices METHODS143862
Ref: Texinfo::Indices $sort_string = index_entry_element_sort_string($document_info, $main_entry, $index_entry_element, $options, $prefer_reference_element)144242
Ref: Texinfo::Indices ($text, $command) = index_entry_first_letter_text_or_command($index_entry)145438
Ref: Texinfo::Indices $merged_indices = merge_indices($indices_information)145934
Ref: Texinfo::Indices $option = setup_index_entry_keys_formatting($customization_information)146977
Ref: Texinfo::Indices $index_entries_sorted = sort_indices_by_index($document, $registrar, $customization_information, $use_unicode_collation, $locale_lang)147219
Ref: Texinfo::Indices $index_entries_sorted = sort_indices_by_letter($document, $registrar, $customization_information, $use_unicode_collation, $locale_lang)147356
Node: Texinfo::Indices SEE ALSO150407
Node: Texinfo::Indices AUTHOR150740
Node: Texinfo::Indices COPYRIGHT AND LICENSE151003
Node: Texinfo::OutputUnits151565
Node: Texinfo::OutputUnits NAME152049
Node: Texinfo::OutputUnits SYNOPSIS152315
Node: Texinfo::OutputUnits NOTES153251
Node: Texinfo::OutputUnits DESCRIPTION153636
Node: Texinfo::OutputUnits METHODS156109
Node: Texinfo::OutputUnits Output units creation156574
Ref: Texinfo::OutputUnits type156890
Ref: Texinfo::OutputUnits unit_command157033
Ref: Texinfo::OutputUnits unit_contents157125
Ref: Texinfo::OutputUnits tree_unit_directions157431
Ref: Texinfo::OutputUnits $output_units = split_by_node($document)157710
Ref: Texinfo::OutputUnits $output_units = split_by_section($document)158133
Node: Texinfo::OutputUnits Grouping output units in pages158436
Ref: Texinfo::OutputUnits split_pages($output_units, $split)158852
Ref: Texinfo::OutputUnits chapter159109
Ref: Texinfo::OutputUnits node159226
Ref: Texinfo::OutputUnits section159289
Ref: Texinfo::OutputUnits empty string159396
Node: Texinfo::OutputUnits Setting output units directions159457
Ref: Texinfo::OutputUnits units_directions($identifier_target, $output_units, $print_debug)159859
Ref: Texinfo::OutputUnits This160535
Ref: Texinfo::OutputUnits Forward160584
Ref: Texinfo::OutputUnits Back160617
Ref: Texinfo::OutputUnits NodeForward160668
Ref: Texinfo::OutputUnits NodeBack160825
Ref: Texinfo::OutputUnits NodeUp160877
Ref: Texinfo::OutputUnits NodeNext160892
Ref: Texinfo::OutputUnits NodePrev160907
Ref: Texinfo::OutputUnits Up160971
Ref: Texinfo::OutputUnits Next160982
Ref: Texinfo::OutputUnits Prev160993
Ref: Texinfo::OutputUnits FastBack161066
Ref: Texinfo::OutputUnits FastForward161415
Ref: Texinfo::OutputUnits units_file_directions($output_units)161496
Node: Texinfo::OutputUnits SEE ALSO162083
Node: Texinfo::OutputUnits AUTHOR162511
Node: Texinfo::OutputUnits COPYRIGHT AND LICENSE162798
Node: Texinfo::Convert::Texinfo163380
Node: Texinfo::Convert::Texinfo NAME163880
Node: Texinfo::Convert::Texinfo SYNOPSIS164168
Node: Texinfo::Convert::Texinfo NOTES164542
Node: Texinfo::Convert::Texinfo DESCRIPTION164957
Node: Texinfo::Convert::Texinfo METHODS165618
Ref: Texinfo::Convert::Texinfo $texinfo_text = convert_to_texinfo($tree)165933
Node: Texinfo::Convert::Texinfo AUTHOR165991
Node: Texinfo::Convert::Texinfo COPYRIGHT AND LICENSE166307
Node: Texinfo::Convert::Utils166914
Node: Texinfo::Convert::Utils NAME167440
Node: Texinfo::Convert::Utils SYNOPSIS167726
Node: Texinfo::Convert::Utils NOTES168253
Node: Texinfo::Convert::Utils DESCRIPTION168656
Node: Texinfo::Convert::Utils METHODS169167
Ref: Texinfo::Convert::Utils $result = add_heading_number($converter, $heading_element, $heading_text, $do_number)170271
Ref: Texinfo::Convert::Utils ($category, $class, $type, $name, $arguments) = definition_arguments_content($element)170814
Ref: Texinfo::Convert::Utils $tree = definition_category_tree($converter, $def_line)171348
Ref: Texinfo::Convert::Utils ($encoded_name, $encoding) = $converter->encoded_input_file_name($character_string_name, $input_file_encoding)171793
Ref: Texinfo::Convert::Utils ($encoded_name, $encoding) = $converter->encoded_output_file_name($character_string_name)171884
Ref: Texinfo::Convert::Utils $tree = expand_today($converter)172706
Ref: Texinfo::Convert::Utils $tree = expand_verbatiminclude($converter, $verbatiminclude)172966
Ref: Texinfo::Convert::Utils ($contents_element, \@accent_commands) = find_innermost_accent_contents($element)173442
Ref: Texinfo::Convert::Utils $heading_element = find_root_command_next_heading_command($element, $expanded_format_raw, $do_not_ignore_contents, $do_not_ignore_index_entries)173990
Node: Texinfo::Convert::Utils SEE ALSO174725
Node: Texinfo::Convert::Utils AUTHOR175120
Node: Texinfo::Convert::Utils COPYRIGHT AND LICENSE175425
Node: Texinfo::Convert::Unicode176022
Node: Texinfo::Convert::Unicode NAME176541
Node: Texinfo::Convert::Unicode SYNOPSIS176827
Node: Texinfo::Convert::Unicode NOTES177622
Node: Texinfo::Convert::Unicode DESCRIPTION178037
Node: Texinfo::Convert::Unicode METHODS178870
Ref: Texinfo::Convert::Unicode $result = brace_no_arg_command($command_name, $encoding)179200
Ref: Texinfo::Convert::Unicode $possible_conversion = check_unicode_point_conversion($arg, $output_debug)179540
Ref: Texinfo::Convert::Unicode $result = encoded_accents($converter, $text, $stack, $encoding, $format_accent, $set_case)180100
Ref: Texinfo::Convert::Unicode $width = string_width($string)181435
Ref: Texinfo::Convert::Unicode $result = unicode_accent($text, $accent_command)181688
Ref: Texinfo::Convert::Unicode $is_decoded = unicode_point_decoded_in_encoding($encoding, $unicode_point)182023
Ref: Texinfo::Convert::Unicode $result = unicode_text($text, $in_code)182542
Node: Texinfo::Convert::Unicode AUTHOR182752
Node: Texinfo::Convert::Unicode COPYRIGHT AND LICENSE183068
Node: Texinfo::Convert::NodeNameNormalization183675
Node: Texinfo::Convert::NodeNameNormalization NAME184319
Node: Texinfo::Convert::NodeNameNormalization SYNOPSIS184694
Node: Texinfo::Convert::NodeNameNormalization NOTES185354
Node: Texinfo::Convert::NodeNameNormalization DESCRIPTION185853
Node: Texinfo::Convert::NodeNameNormalization METHODS187097
Ref: Texinfo::Convert::NodeNameNormalization $partially_normalized = convert_to_normalized($tree)187507
Ref: Texinfo::Convert::NodeNameNormalization $normalized = convert_to_identifier($tree)187815
Ref: Texinfo::Convert::NodeNameNormalization $transliterated = normalize_transliterate_texinfo($tree, $no_unidecode)188202
Ref: Texinfo::Convert::NodeNameNormalization $transliterated = transliterate_texinfo($tree, $no_unidecode)188585
Ref: Texinfo::Convert::NodeNameNormalization $file_name = transliterate_protect_file_name($string, $no_unidecode)188906
Node: Texinfo::Convert::NodeNameNormalization AUTHOR189232
Node: Texinfo::Convert::NodeNameNormalization COPYRIGHT AND LICENSE189632
Node: Texinfo::Convert::Text190309
Node: Texinfo::Convert::Text NAME190802
Node: Texinfo::Convert::Text SYNOPSIS191069
Node: Texinfo::Convert::Text NOTES191777
Node: Texinfo::Convert::Text DESCRIPTION192174
Node: Texinfo::Convert::Text METHODS193132
Ref: Texinfo::Convert::Text $result = convert_to_text($tree, $text_options)193435
Ref: Texinfo::Convert::Text enabled_encoding194119
Ref: Texinfo::Convert::Text set_case194664
Ref: Texinfo::Convert::Text sort_string194779
Ref: Texinfo::Convert::Text converter194926
Ref: Texinfo::Convert::Text expanded_formats195232
Ref: Texinfo::Convert::Text $result_accent_text = ascii_accent_fallback($converter, $text, $accent_command)195493
Ref: Texinfo::Convert::Text set_options_code($text_options)195930
Ref: Texinfo::Convert::Text reset_options_code($text_options)195965
Ref: Texinfo::Convert::Text set_options_encoding($text_options, $encoding)196320
Ref: Texinfo::Convert::Text set_options_encoding_if_not_ascii($customization_information, $text_options)196398
Ref: Texinfo::Convert::Text reset_options_encoding($text_options)196437
Ref: Texinfo::Convert::Text $accents_text = text_accents($accents, $encoding, $set_case)197095
Node: Texinfo::Convert::Text AUTHOR197559
Node: Texinfo::Convert::Text COPYRIGHT AND LICENSE197857
Node: Texinfo::Convert::Converter198449
Node: Texinfo::Convert::Converter NAME199013
Node: Texinfo::Convert::Converter SYNOPSIS199315
Node: Texinfo::Convert::Converter NOTES200660
Node: Texinfo::Convert::Converter DESCRIPTION201087
Ref: Texinfo::Convert::Converter $result = $converter->convert_tree($tree)201723
Ref: Texinfo::Convert::Converter $result = $converter->output($document)201960
Ref: Texinfo::Convert::Converter $result = $converter->output_tree($document)202006
Ref: Texinfo::Convert::Converter $result = $converter->convert($document)203676
Ref: Texinfo::Convert::Converter $result = $converter->convert_output_unit($output_unit)204155
Node: Texinfo::Convert::Converter METHODS206942
Node: Texinfo::Convert::Converter Converter Initialization207710
Ref: Texinfo::Convert::Converter $converter = MyConverter->converter($options)208174
Ref: Texinfo::Convert::Converter \%defaults = $converter_or_class->converter_defaults($options)208759
Ref: Texinfo::Convert::Converter converter_initialize209192
Node: Texinfo::Convert::Converter Conversion209304
Ref: Texinfo::Convert::Converter $converter->set_document($document)209971
Ref: Texinfo::Convert::Converter $converter->conversion_initialization($document)210631
Ref: Texinfo::Convert::Converter $converter->conversion_finalization()210670
Ref: Texinfo::Convert::Converter $beginning = $converter->conversion_output_begin($output_file, $output_filename)211675
Ref: Texinfo::Convert::Converter $end = $converter->conversion_output_end()211719
Node: Texinfo::Convert::Converter Getting and setting customization variables213132
Ref: Texinfo::Convert::Converter $converter->force_conf($variable_name, $variable_value)214211
Ref: Texinfo::Convert::Converter $converter->get_conf($variable_name)214526
Ref: Texinfo::Convert::Converter $status = $converter->set_conf($variable_name, $variable_value)214676
Node: Texinfo::Convert::Converter Registering error and warning messages214859
Ref: Texinfo::Convert::Converter $converter->converter_document_error($text, $continuation)215610
Ref: Texinfo::Convert::Converter $converter->converter_document_warn($text, $continuation)215669
Ref: Texinfo::Convert::Converter $converter->converter_line_error($text, $error_location_info, $continuation)215959
Ref: Texinfo::Convert::Converter $converter->converter_line_warn($text, $error_location_info, $continuation)216036
Ref: Texinfo::Convert::Converter \@error_warning_messages = $converter->get_converter_errors()216748
Node: Texinfo::Convert::Converter Translations in output documents217194
Ref: Texinfo::Convert::Converter $tree = $converter->cdt($string, $replaced_substrings, $translation_context)218038
Ref: Texinfo::Convert::Converter $string = $converter->cdt_string($string, $replaced_substrings, $translation_context)218125
Ref: Texinfo::Convert::Converter $tree = $object->pcdt($translation_context, $string, $replaced_substrings)219156
Node: Texinfo::Convert::Converter Index sorting219397
Ref: Texinfo::Convert::Converter $sorted_indices = $converter->get_converter_indices_sorted_by_index()219828
Ref: Texinfo::Convert::Converter $sorted_indices = $converter->get_converter_indices_sorted_by_letter()219900
Node: Texinfo::Convert::Converter Conversion to XML221320
Ref: Texinfo::Convert::Converter $formatted_text = $converter->xml_format_text_with_numeric_entities($text)221856
Ref: Texinfo::Convert::Converter $protected_text = $converter->xml_protect_text($text)222024
Ref: Texinfo::Convert::Converter $comment = $converter->xml_comment($text)222129
Ref: Texinfo::Convert::Converter $result = xml_accent($text, $accent_command, $in_upper_case, $use_numeric_entities)222256
Ref: Texinfo::Convert::Converter $result = $converter->xml_accents($accent_command, $in_upper_case)222898
Ref: Texinfo::Convert::Converter $result = xml_numeric_entity_accent($accent_command_name, $text)223180
Node: Texinfo::Convert::Converter Helper methods223412
Ref: Texinfo::Convert::Converter $contents_element = $converter->comma_index_subentries_tree($entry, $separator)224348
Ref: Texinfo::Convert::Converter $result = $converter->convert_accents($accent_command, \&format_accents, $output_encoded_characters, $in_upper_case)224850
Ref: Texinfo::Convert::Converter $succeeded = $converter->create_destination_directory($destination_directory_path, $destination_directory_name)225285
Ref: Texinfo::Convert::Converter ($output_file, $destination_directory, $output_filename, $document_name, $input_basefile) = $converter->determine_files_and_directory($output_format)225763
Ref: Texinfo::Convert::Converter ($encoded_name, $encoding) = $converter->encoded_input_file_name($character_string_name, $input_file_encoding)227211
Ref: Texinfo::Convert::Converter ($encoded_name, $encoding) = $converter->encoded_output_file_name($character_string_name)227302
Ref: Texinfo::Convert::Converter ($caption, $prepended) = $converter->float_name_caption($float)228635
Ref: Texinfo::Convert::Converter $tree = $converter->float_type_number($float)228917
Ref: Texinfo::Convert::Converter $end_line = $converter->format_comment_or_return_end_line($element)229144
Ref: Texinfo::Convert::Converter $filename = sub $converter->node_information_filename($normalized, $label_element)229572
Ref: Texinfo::Convert::Converter ($normalized_name, $filename) = $converter->normalized_sectioning_command_filename($element)229811
Ref: Texinfo::Convert::Converter $converter->present_bug_message($message, $element)230249
Ref: Texinfo::Convert::Converter $converter->set_global_document_commands($commands_location, $selected_commands)230450
Ref: Texinfo::Convert::Converter before230722
Ref: Texinfo::Convert::Converter last230832
Ref: Texinfo::Convert::Converter preamble230897
Ref: Texinfo::Convert::Converter preamble_or_first230988
Ref: Texinfo::Convert::Converter $table_item_tree = $converter->table_item_content_tree($element)231766
Ref: Texinfo::Convert::Converter $result = $converter->top_node_filename($document_name)232062
Ref: Texinfo::Convert::Converter $result = $converter->output_internal_links()232300
Node: Texinfo::Convert::Converter SEE ALSO232472
Node: Texinfo::Convert::Converter AUTHOR233091
Node: Texinfo::Convert::Converter COPYRIGHT AND LICENSE233420
Node: Texinfo::Convert::Info234037
Node: Texinfo::Convert::Info NAME234513
Node: Texinfo::Convert::Info SYNOPSIS234773
Node: Texinfo::Convert::Info NOTES235210
Node: Texinfo::Convert::Info DESCRIPTION235607
Node: Texinfo::Convert::Info METHODS235926
Ref: Texinfo::Convert::Info $converter = Texinfo::Convert::Info->converter($options)236238
Ref: Texinfo::Convert::Info $converter->output($document)236820
Ref: Texinfo::Convert::Info $result = $converter->convert($document)236986
Ref: Texinfo::Convert::Info $result = $converter->convert_tree($tree)237119
Node: Texinfo::Convert::Info AUTHOR237473
Node: Texinfo::Convert::Info COPYRIGHT AND LICENSE237771
Node: Texinfo::Convert::HTML238363
Node: Texinfo::Convert::HTML NAME238837
Node: Texinfo::Convert::HTML SYNOPSIS239097
Node: Texinfo::Convert::HTML NOTES239585
Node: Texinfo::Convert::HTML DESCRIPTION239982
Node: Texinfo::Convert::HTML METHODS240301
Ref: Texinfo::Convert::HTML $converter = Texinfo::Convert::HTML->converter($options)240613
Ref: Texinfo::Convert::HTML $converter->output($document)241195
Ref: Texinfo::Convert::HTML $result = $converter->convert($document)241361
Ref: Texinfo::Convert::HTML $result = $converter->convert_tree($tree)241494
Ref: Texinfo::Convert::HTML $result = $converter->output_internal_links()241894
Node: Texinfo::Convert::HTML AUTHOR242113
Node: Texinfo::Convert::HTML COPYRIGHT AND LICENSE242411
Node: Texinfo::Convert::DocBook243003
Node: Texinfo::Convert::DocBook NAME243513
Node: Texinfo::Convert::DocBook SYNOPSIS243794
Node: Texinfo::Convert::DocBook NOTES244252
Node: Texinfo::Convert::DocBook DESCRIPTION244667
Node: Texinfo::Convert::DocBook METHODS245010
Ref: Texinfo::Convert::DocBook $converter = Texinfo::Convert::DocBook->converter($options)245343
Ref: Texinfo::Convert::DocBook $converter->output($document)245928
Ref: Texinfo::Convert::DocBook $result = $converter->convert($document)246094
Ref: Texinfo::Convert::DocBook $result = $converter->convert_tree($tree)246227
Node: Texinfo::Convert::DocBook AUTHOR246581
Node: Texinfo::Convert::DocBook COPYRIGHT AND LICENSE246897
Node: Texinfo::Convert::TexinfoMarkup247504
Node: Texinfo::Convert::TexinfoMarkup NAME248121
Node: Texinfo::Convert::TexinfoMarkup SYNOPSIS248459
Node: Texinfo::Convert::TexinfoMarkup NOTES249041
Node: Texinfo::Convert::TexinfoMarkup DESCRIPTION249492
Node: Texinfo::Convert::TexinfoMarkup METHODS250751
Node: Texinfo::Convert::TexinfoMarkup Markup formatting methods defined by subclasses251223
Ref: Texinfo::Convert::TexinfoMarkup $result = $converter->txi_markup_atom($atom)251730
Ref: Texinfo::Convert::TexinfoMarkup $result = $converter->txi_markup_comment($comment_string)251954
Ref: Texinfo::Convert::TexinfoMarkup $result = $converter->txi_markup_convert_text($element)252056
Ref: Texinfo::Convert::TexinfoMarkup $result = $converter->txi_markup_element($format_element, $attributes)252506
Ref: Texinfo::Convert::TexinfoMarkup $result = $converter->txi_markup_open_element($format_element, $attributes)252583
Ref: Texinfo::Convert::TexinfoMarkup $result = $converter->txi_markup_close_element($format_element, $attributes)252661
Ref: Texinfo::Convert::TexinfoMarkup $result = $converter->txi_markup_header()253230
Ref: Texinfo::Convert::TexinfoMarkup $result = $converter->txi_markup_protect_text($string)253352
Node: Texinfo::Convert::TexinfoMarkup Formatting state information253587
Ref: Texinfo::Convert::TexinfoMarkup $converter->in_monospace()254008
Node: Texinfo::Convert::TexinfoMarkup AUTHOR254156
Node: Texinfo::Convert::TexinfoMarkup SEE ALSO254495
Node: Texinfo::Convert::TexinfoMarkup COPYRIGHT AND LICENSE255070
Node: Texinfo::Convert::TexinfoXML255709
Node: Texinfo::Convert::TexinfoXML NAME256254
Node: Texinfo::Convert::TexinfoXML SYNOPSIS256556
Node: Texinfo::Convert::TexinfoXML NOTES257035
Node: Texinfo::Convert::TexinfoXML DESCRIPTION257468
Node: Texinfo::Convert::TexinfoXML METHODS257835
Ref: Texinfo::Convert::TexinfoXML $converter = Texinfo::Convert::TexinfoXML->converter($options)258189
Ref: Texinfo::Convert::TexinfoXML $converter->output($document)258777
Ref: Texinfo::Convert::TexinfoXML $result = $converter->convert($document)258943
Ref: Texinfo::Convert::TexinfoXML $result = $converter->convert_tree($tree)259076
Node: Texinfo::Convert::TexinfoXML AUTHOR259430
Node: Texinfo::Convert::TexinfoXML COPYRIGHT AND LICENSE259764
Node: Texinfo::Convert::Plaintext260386
Node: Texinfo::Convert::Plaintext NAME260896
Node: Texinfo::Convert::Plaintext SYNOPSIS261191
Node: Texinfo::Convert::Plaintext NOTES261663
Node: Texinfo::Convert::Plaintext DESCRIPTION262090
Node: Texinfo::Convert::Plaintext METHODS262449
Ref: Texinfo::Convert::Plaintext $converter = Texinfo::Convert::Plaintext->converter($options)262796
Ref: Texinfo::Convert::Plaintext $converter->output($document)263383
Ref: Texinfo::Convert::Plaintext $result = $converter->convert($document)263549
Ref: Texinfo::Convert::Plaintext $result = $converter->convert_tree($tree)263682
Node: Texinfo::Convert::Plaintext AUTHOR264036
Node: Texinfo::Convert::Plaintext COPYRIGHT AND LICENSE264364
Node: Index264981

End Tag Table


Local Variables:
coding: utf-8
End:
