:p.The program reads the Texinfo source, translates it and writes the
result to stdout&per. It has no further options&per. A sample invocation looks
like&colon.
:xmp.
texi2ipf texi2ipf&per.texi >texi2ipf&per.ipf
:exmp.
:font facename=default size=0x0.
:p.Redirecting the standard output to a file via ">" creates us an ipf
source that can be compiled via&colon.
:xmp.
ipfc -inf texi2ipf&per.ipf
:exmp.
:font facename=default size=0x0.
:p.If encountering a Texinfo command it does not recognize (there are still
some) it will ignore it and emit a warning message&per. If the Texinfo
commands ignored is not important for the ipf output the warnings can be
ignored&per. Only if the program runs into a situation it cannot recover
from it will abort with an error message&per. This is only very rarely the
case (e&per.g&per. not correctly nested :font facename=Courier size=16x8.@:font facename=default size=0x0.&per.&per. :font facename=Courier size=16x8.@end &per.&per.:font facename=default size=0x0.
environments)&per.
:p.The program can, of course, only handle standard Texinfo commands&per. It
will parse all :font facename=Courier size=16x8.@ifinfo:font facename=default size=0x0. &per.&per. :font facename=Courier size=16x8.@end:font facename=default size=0x0. ifinfo environments and
ignore all :font facename=Courier size=16x8.@tex:font facename=default size=0x0. &per.&per. :font facename=Courier size=16x8.@end tex:font facename=default size=0x0. environments&per. How it treats
some special Texinfo features will be described in the next section
(see :link reftype=hd refid='Features'.Features:elink.)&per.
:p.
:h2 id='Features'.Features
:p.:hp5.Overall features:ehp5.
:p.Like mentioned in the previous section (see :link reftype=hd refid='Usage'.Usage:elink.) the program parses
only :font facename=Courier size=16x8.@iftex:font facename=default size=0x0. &per.&per. :font facename=Courier size=16x8.@end iftex:font facename=default size=0x0. environments&per. As :hp1.info:ehp1. is
a hypertext format like :hp1.inf:ehp1. is there is only a small subset of
features not covered by both formats&per. One of them is the missing
handling of bitmaps in info, for this I use the pseudo-ipf tag
:font facename=Courier size=16x8.@ipfline{}:font facename=default size=0x0. described more below&per. Here's a list of further
features&colon.
:ul.
:li.:font facename=Courier size=16x8.@def*:font facename=default size=0x0. templates produce an entry in the main index&per. Using the
:font facename=Courier size=16x8.@cindex:font facename=default size=0x0. command will do this, too&per. Texinfo-like indices
(:font facename=Courier size=16x8.@printindex:font facename=default size=0x0.) are not (yet) supported&per. See :link reftype=hd refid='Limitations'.Limitations:elink.
for more information&per.
:li.Texinfo menus are simulated&per. This is not really necessary but looks
better than blank pages&per. Please, note that menu descriptions continueing
in the line(s) after the menu entry will only be handled correctly if
indented more than 25 columns&per.
:li.The program will create a node for every document structuring command
except the :font facename=Courier size=16x8.@*heading:font facename=default size=0x0. commands (You see two of them in this
section!)&per.
:li.For being able to enter plain ipf code into the Texinfo document I
provide a pseudo-tag :font facename=Courier size=16x8.@ipfline{}:font facename=default size=0x0.&per. Its handling will be
described more verbosely below&per.
:eul.
:p.:hp5.Entering plain ipf:ehp5.
:p.As info knows no images inside info documents we may want to enter plain
ipf code into our Texinfo documents still being able to process them via
:hp1.makeinfo:ehp1., :hp1.texi2dvi:ehp1. etc&per. For this task :hp1.texi2ipf:ehp1.
:p.This will enter the text and the bitmap into the ipf output just the
way it is inside of the :font facename=Courier size=16x8.@ipfline{}:font facename=default size=0x0. arguments&per.
:p.
:h2 id='Limitations'.Limitations
:p.Disregarding the fact that the program is still pretty buggy <g> there
are a few features I would like it to have but yet it has not&colon.
:ul.
:li.The program does not yet recognize all Texinfo commands&per. This is not so
bad as most of them are not of interest for producing ipf output&per. But
this still leads to unnecessary warning messages&per.
:li.There is no support for the :font facename=Courier size=16x8.@defindex:font facename=default size=0x0. and :font facename=Courier size=16x8.@printindex:font facename=default size=0x0.
commands&per. This results in almost empty pages only containing "Sorry, no
&per.&per. index!"&per. I plan to add this but I have no idea when&per.
:li.Footnotes produce text in "(" and ")" rather than real footnotes:link refid=1 reftype=fn.(1):elink.:fn id=1.Bla
blub:efn.&per.
:eul.
:p.
:h2 id='Compiling it'.Compiling it
:p.First thing I did when starting working on it was changing the code from
K&.R C to ANSI C&per. So it will not compile on a pre-ANSI C compiler any
more&per. It should not make any problems with non-Unix compilers any more
(emx/gcc offers all the Unix functions not available with other PC
compilers)&per.
:p.I have compiled the program using the following compilers / operating
systems&colon.
:ul.
:li.GNU CC under AIX and OS/2&per.
:li.IBM's xlC compiler under AIX&per.
:li.IBM's CSet++ 2&per.1 and VisualAge C++ 3&per.0 under OS/2&per.
:eul.
:p.The makefile contains predefined sections for those compilers that only
need to be uncommented&per.
:p.By the way&colon. Yes I know the code :hp1.is:ehp1. ugly&per. This is partially my
fault as I did not get into the way it works too much when I first
started modifying it&per. It also was quite unreadable when I took my first
look at it&per.&per.&per.
:p.
:h1 id='Change log'.Change log
:p.:parml tsize=40 break=none compact.
:pt.:link reftype=hd refid='Release 2&per.1'.Release 2&per.1:elink.:pd.The second public release&per.
:pt.:link reftype=hd refid='Release 2&per.0'.Release 2&per.0:elink.:pd.The first public release&per.
:eparml.
:p.
:h2 id='Release 2&per.1'.Release 2&per.1, February 1997
:ul.
:li.Added this documentation&per.
:li.Changed the handling of all :font facename=Courier size=16x8.@*heading:font facename=default size=0x0. commands and added the missing
:font facename=Courier size=16x8.@chapheading:font facename=default size=0x0. command&per. They will no longer produce nodes but rather
produce real headings like in the Info file&per.
:p.This makes it more consistent to the commands' definition saying they
do not generate Table-Of-Contents entries&per. Note, that all the other
:hp1.not:ehp1. generate headings inside the text window as these lines
appear in the title of the frame anyway&per.
:li.Upped stack size under OS/2 to 0x30000 Bytes&per.
:li.Changed the :font facename=Courier size=16x8.setclear():font facename=default size=0x0. and :font facename=Courier size=16x8.findtag():font facename=default size=0x0. routine&per. The program
now no longer crashes with large :font facename=Courier size=16x8.@set:font facename=default size=0x0. names&per.
:li.:font facename=Courier size=16x8.@ignore:font facename=default size=0x0. will now be handled like real comments&per.
:li.Fixed a bug in :font facename=Courier size=16x8.eat_first_word():font facename=default size=0x0. that made the program crash
sometimes&per.
:li.Fixed the handling of a few :font facename=Courier size=16x8.@def*:font facename=default size=0x0. commands (index entry)&per.
:li.Added routine :font facename=Courier size=16x8.remove_texicmds():font facename=default size=0x0. for better formatting of
automatically created index entries from :font facename=Courier size=16x8.@def*:font facename=default size=0x0. commands&per.
:li.Menu entry descriptions can now be continued in the next line(s) if
indented more than 25 columns&per. Also use :font facename=Courier size=16x8.remove_texicmds():font facename=default size=0x0. when
processing menu entries&per.
:li.Added support for the :font facename=Courier size=16x8.@bye:font facename=default size=0x0. tag for leaving the document before
the physical end of file&per.
:eul.
:p.
:h2 id='Release 2&per.0'.Release 2&per.0, December 1996
:ul.
:li.Converted any K&.R stuff to ANSI C (prototypes etc&per.)&per. Still the code
looks rather shrouded &colon.-)
:li.Changed the table&per.h for a better handling of all the :font facename=Courier size=16x8.@def*:font facename=default size=0x0. stuff&per. Now
any definition will start with a new paragraph&per. The leading "--" will
not appear anymore&per. I also added the :font facename=Courier size=16x8.@deftp:font facename=default size=0x0. command and the pseudo-
Texinfo command :font facename=Courier size=16x8.@ifhtml:font facename=default size=0x0. (ignored, no error message) that may be used
by users of texi2html and the :font facename=Courier size=16x8.@macro:font facename=default size=0x0. command (ignored, no error mes-
sage)&per.
:li.Added my name to the banner &colon.-)
:li.Removed the :font facename=Courier size=16x8.#include <string&per.h>:font facename=default size=0x0. from texi2ipf&per.h and added it to those
&per.c files that needed it&per.
:li.Texinfo menus will now be simulated in the output &per.ipf file&per. This
is not really necessary but it looks better than blank pages&per.
:li.:font facename=Courier size=16x8.@include:font facename=default size=0x0. statements inside of menus will no longer crash the program&per.
:li.All Texinfo :font facename=Courier size=16x8.@def*:font facename=default size=0x0. commands will now produce an index entry in
the main index&per. Support for seperate indices like "Concept index",
"Types index" etc&per. may be possible in future but has not yet been
added&per. The :font facename=Courier size=16x8.@printindex:font facename=default size=0x0. command still produces the "Sorry, no
&per.&per.&per. index" entry in the resulting &per.IPF file&per. Commands dealing with
custom indices will now produce a more verbose error (ignore) message&per.
:li.Changed the makefile&per. Compiles well under Unix systems (AIX and
LINUX) and with IBM's VisualAge C++ for OS/2&per.
:li.Added support for pseudo-Texinfo command @ipfline{} (my invention)
for entering IPF commands into the Texinfo source file&per. The syntax
is&colon. "@ipfline{<Sequence of IPF code not longer than one line>}" and
it should be put into :font facename=Courier size=16x8.@ifinfo:font facename=default size=0x0. / :font facename=Courier size=16x8.@end ifinfo:font facename=default size=0x0. blocks to
avoid trouble with e&per.g&per. texi2dvi or texi2html&per.