Texi2HTML – Texinfo to HTML v1.82: C. How little texi2html texinfo differs from GNU texinfo
[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

C. 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 @end.

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 (see section Customizing other commands, 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
     
    \@end macro
    

    with the ‘\’ being removed after the first expansion. Otherwise it is not possible to produce a \@end macro in a macro.

  • @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.

encodings

texi2html knows more encodings, in fact all encodings perl knows about.

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:

 
@ifset notset
@ignore
@ifset
@end ignore
@end ifset

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:

 
@set flag
@ifset flag
@itemize
@item my item
@end ifset
text
@ifset flag
@end itemize
@end ifset

[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Derek Price on January 5, 2009 using texi2html 1.82.

Derek Price, CVS developer and technical editor of Essential CVS (Essentials line from O'Reilly Press) , and others offer consulting services and training through Ximbiot.