3 How little texi2html texinfo differs from GNU texinfo
For features documented in the texinfo manual, the texinfo
interpretation by `texi2html' shouldn't differ from the interpretation
of `makeinfo' or `texi2dvi'. However for constructs with unspecified
behaviour `texi2html' often doesn't lead to the same result than
`makeinfo' or `texi2dvi'. `makeinfo' and `texi2dvi' are also
inconsistent in most of these cases (or broken). You are urged not to
use these features unless absolutely necessary. This information is
only here to help understand why `texi2html' differ from other texinfo
interpreters, it may be inacurate and the `texi2html' behaviour may
change in the future and was different in the past.
@-commands with text on the line
In the texinfo manual it is specified that block @-commands should
appear on a line without text and the closing `@end' should also
be on a line by himself. With `texi2html' it is possible to add
text before and after the command, so the following is right:
something @example the example @end example after the example
`makeinfo' and `texi2dvi' may also accept text before the command
and text after the `@end' command, sometimes ignoring it after the
This is a feature you should especially not rely on.
special @-commands handling
The special @-commands are commands like `@pagesizes', `@sp',
`@evenheading', `@raisesections', `@defindex' and a lot more. In
many cases `makeinfo' and `texi2dvi' don't parse those commands
the same way too. `texi2html' may also show some differences in
parsing of the arguments of these commands, in case there are
wrong arguments, and also ignore differently things following
those commands. How user defined macros, set and values are
expanded in those commands may also be different. Part of the
specification of how these commands are handled is configureable
(Note: Other and unknown commands), but not what happens during
the beginning of the parsing for some of those commands.
features different between `makeinfo' and `texi2dvi'
When `makeinfo' or `texi2dvi' use a feature which is reserved for
one or the other translator, `texi2html' uses that feature. So for
example `@definfoenclose' which is ignored by `texi2dvi' is taken
into account and `@kbdinputstyle' which is ignored by `makeinfo'
is taken into account.
user defined macros and values
In this area `makeinfo' and `texi2dvi' also differ a lot. The
reference implementation is the `makeinfo' implementation as
`texi2dvi' is easily broken when macros are not used simply.
* `@rmacro' and `@macro' behave exactly the same. In fact this
goes against a documented behaviour, however if a user don't
want a recursive macro he can simply avoid reusing the macro
in the definition. If somebody report that the feature is
usefull we could try to implement it.
* It is possible to escape the end of a macro definition with
with the `\' being removed after the first expansion.
Otherwise it is not possible to produce a `\@end macro' in a
* `@unmacro' is interpreted during the macro argument expansion.
Don't know what `makeinfo' exactly do.
* Some `@value' may be expanded later than the others, those
that are in special commands, like `@node'.
`@,' in `@node'
Like `texi2dvi' but unlike `makeinfo' `@,' don't break `@node'
arguments like a regular `,'.
Things before first node or preamble
Things before the first node or before the preamble may not be
exactly interpreted or discarded as `makeinfo' or `texi2dvi' do.
`texi2html' knows more encodings, in fact all encodings `perl'
commands in `@ifset' and `@ifclear'
`texi2html' doesn't need a proper nesting of internal `@ifset' or
`@ifclear' if they are in ignored or raw regions (like `@html' or
`@verbatim'). For example the following is accepted by `texi2html'
and not by `makeinfo':
In `@ifset' and `@ifclear' texi2html also accepts a lot more of
invalid constructs. For example the following is accepted by
`texi2html' but not by `makeinfo':
@item my item
automatically generated by info2www version 18.104.22.168