home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / texipf22.zip / texi2ipf / texi2ipf.INF (.txt) < prev    next >
OS/2 Help File  |  1997-07-17  |  15KB  |  319 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Title page ΓòÉΓòÉΓòÉ
  3.  
  4.                    Texi2ipf 2.2 -- a Texinfo to IPF converter
  5.  
  6.                 Based on work by M. Groeber and B. A. Erlenbacher
  7.  
  8.                              Martin "Herbert" Dietze
  9.  
  10. Copyright (C) 1996, 1997 by Herbert. 
  11.  
  12. Permission is granted to make and distribute verbatim or modified copies of 
  13. this manual in terms of the Copyright notice below. 
  14.  
  15. Permission is granted to copy and distribute translations of this manual into 
  16. another language, under the above conditions. 
  17.  
  18.  
  19. ΓòÉΓòÉΓòÉ 2. Top ΓòÉΓòÉΓòÉ
  20.  
  21. This manual provides some information about using texi2ipf, a Texinfo to IPF 
  22. converter. It can also be used as test file for texi2ipf's output. 
  23.  
  24.  Introduction                            Historical notes etc. 
  25.  Using it                                Usage and basic features. 
  26.  Change log                              What I did to it and when. 
  27.  
  28.  
  29. ΓòÉΓòÉΓòÉ 3. Introduction ΓòÉΓòÉΓòÉ
  30.  
  31.  Historical notice                       Its roots. 
  32.  Further notices                         What you might like to know. 
  33.  
  34.  
  35. ΓòÉΓòÉΓòÉ 3.1. Historical notice ΓòÉΓòÉΓòÉ
  36.  
  37. The texi2ipf program is mainly Beverly A. Eschenbacher's work from 1988, 1989 
  38. and 1990 as his texi2roff was the base for Marcus Groebner making a Texinfo to 
  39. IPF converter out of it in 1992/93. 
  40.  
  41. As I needed a tool to convert my master's thesis written in Texinfo to IPF I 
  42. tried it but found it not suitable for my needs -- it did not treat @def* 
  43. templates correctly and produced blank pages where I had menus in my sources. 
  44. So I decided to take a closer look at the sources and add the features I found 
  45. missing and fix a few bugs I found. 
  46.  
  47. I don't claim to have done much on the program, it is still mainly Beverly's 
  48. and Marcus' work but as nobody else seems to have maintained it any more I have 
  49. decided to make my modifications public, they have made the program a bit more 
  50. usable for me after all. 
  51.  
  52. The result works -- let's say -- not too bad, the sources look like what they 
  53. are: the result of at least three people doing this or that :-) 
  54.  
  55.  
  56. ΓòÉΓòÉΓòÉ 3.2. Further notices ΓòÉΓòÉΓòÉ
  57.  
  58. The program comes shipping as an OS/2 executable (compiled and linked using 
  59. IBM's VisualAge C++ tools) with Texinfo documentation (you are just reading 
  60. it!) and the C sources. 
  61.  
  62. Asking me for license stuff I can only say "no idea!" as it is not only my 
  63. work. As far as I'm concerned my stuff can be considered as GPL'ed, nobody pays 
  64. nobody nothing. You may also want to take a look at the original license 
  65. shipped with texi2roff in the file copyright for all that was written by 
  66. Beverly. 
  67.  
  68. If anybody of you out there adds some useful feature or fixes a bug (there 
  69. should be some more) please feel free to send me a mail, I am always interested 
  70. in further enhancements. My email address is: 
  71.  
  72.   herbert@wiloyee.shnet.org
  73.  
  74. I will try to release all future versions to at least those two ftp sites / 
  75. directories: 
  76.  
  77.    1. ftp.cdrom.com/pub/os2/ 
  78.  
  79.    2. ftp.leo.org/pub/comp/os/os2/leo/ 
  80.  
  81.  By the way: You may find this manual a bit too verbose for such a small 
  82.  utility, it is indeed, but this also makes it a good demo file for the 
  83.  program's capabilities... 
  84.  
  85.  
  86. ΓòÉΓòÉΓòÉ 4. Using it ΓòÉΓòÉΓòÉ
  87.  
  88.  Usage                                   How to invoke it. 
  89.  Features                                What it can do. 
  90.  Limitations                             What it cannot do. 
  91.  Compiling it                            Compatibility etc. 
  92.  
  93.  
  94. ΓòÉΓòÉΓòÉ 4.1. Usage ΓòÉΓòÉΓòÉ
  95.  
  96. The program reads the Texinfo source, translates it and writes the result to 
  97. stdout. It has no further options. A sample invocation looks like: 
  98.  
  99. texi2ipf texi2ipf.texi >texi2ipf.ipf
  100.  
  101. Redirecting the standard output to a file via ">" creates us an ipf source that 
  102. can be compiled via: 
  103.  
  104. ipfc -inf texi2ipf.ipf
  105.  
  106. If encountering a Texinfo command it does not recognize (there are still some) 
  107. it will ignore it and emit a warning message. If the Texinfo commands ignored 
  108. is not important for the ipf output the warnings can be ignored. Only if the 
  109. program runs into a situation it cannot recover from it will abort with an 
  110. error message. This is only very rarely the case (e.g. not correctly nested @.. 
  111. @end .. environments). 
  112.  
  113. The program can, of course, only handle standard Texinfo commands. It will 
  114. parse all @ifinfo .. @end ifinfo environments and ignore all @tex .. @end tex 
  115. environments. How it treats some special Texinfo features will be described in 
  116. the next section (see Features). 
  117.  
  118.  
  119. ΓòÉΓòÉΓòÉ 4.2. Features ΓòÉΓòÉΓòÉ
  120.  
  121. Overall features 
  122.  
  123. Like mentioned in the previous section (see Usage) the program parses only 
  124. @iftex .. @end iftex environments. As info is a hypertext format like inf is 
  125. there is only a small subset of features not covered by both formats. One of 
  126. them is the missing handling of bitmaps in info, for this I use the pseudo-ipf 
  127. tag @ipfline{} described more below. Here's a list of further features: 
  128.  
  129.      @def* templates produce an entry in the main index. Using the @cindex 
  130.       command will do this, too. Texinfo-like indices (@printindex) are not 
  131.       (yet) supported. See Limitations for more information. 
  132.  
  133.      Texinfo menus are simulated. This is not really necessary but looks 
  134.       better than blank pages. Please, note that menu descriptions continueing 
  135.       in the line(s) after the menu entry will only be handled correctly if 
  136.       indented more than 25 columns. 
  137.  
  138.      The program will create a node for every document structuring command 
  139.       except the @*heading commands (You see two of them in this section!). 
  140.  
  141.      For being able to enter plain ipf code into the Texinfo document I 
  142.       provide a pseudo-tag @ipfline{}. Its handling will be described more 
  143.       verbosely below. 
  144.  
  145.  Entering plain ipf 
  146.  
  147.  As info knows no images inside info documents we may want to enter plain ipf 
  148.  code into our Texinfo documents still being able to process them via makeinfo, 
  149.  texi2dvi etc. For this task texi2ipf recognizes a pseudo-tag @ipfline{} 
  150.  containing plain ipf code as argument. To avoid conflicts with other 
  151.  formatting tools you should use it the following way: 
  152.  
  153.  
  154.   @c Define this macro somewhere near the beginning of your document.
  155.   @c It expands to nothing for "makeinfo" and is necessary to avoid
  156.   @c errors when creating an Info file.
  157.   @c The "@ifinfo" block is necessary because the "@macro" command is
  158.   @c only known to "makeinfo". Please, note that older versions of
  159.   @c "makeinfo" do not recognize the "@macro" command either.
  160.  
  161.   @ifinfo
  162.   @macro ipfline{line}
  163.   @end macro
  164.   @end ifinfo
  165.  
  166.   @c [...]
  167.  
  168.   @c Now somewhere inside the document enter the ipf commands as
  169.   @c arguments to "@ipfline{}". In this example we use plain
  170.   @c ipf to include a bitmap and some explaining text only into
  171.   @c the ipf output. Like the macro above we put in into a "@ifinfo"
  172.   @c block because the (empty) macro "@ipfline{}" would cause
  173.   @c errors to any formatter but "makeinfo" or "texi2ipf".
  174.  
  175.   @ifinfo
  176.   @ipfline{The following example shows a simple LAN consisting of}
  177.   @ipfline{three machines connected by a ring&colon.}
  178.   @ipfline{:p.:artwork name='lan.bmp' align=center.}
  179.   @end ifinfo
  180.  
  181.  This will enter the text and the bitmap into the ipf output just the way it is 
  182.  inside of the @ipfline{} arguments. 
  183.  
  184.  
  185. ΓòÉΓòÉΓòÉ 4.3. Limitations ΓòÉΓòÉΓòÉ
  186.  
  187. Disregarding the fact that the program is still pretty buggy <g> there are a 
  188. few features I would like it to have but yet it has not: 
  189.  
  190.      The program does not yet recognize all Texinfo commands. This is not so 
  191.       bad as most of them are not of interest for producing ipf output. But 
  192.       this still leads to unnecessary warning messages. 
  193.  
  194.      There is no support for the @defindex and @printindex commands. This 
  195.       results in almost empty pages only containing "Sorry, no .. index!". I 
  196.       plan to add this but I have no idea when. 
  197.  
  198.  
  199. ΓòÉΓòÉΓòÉ 4.4. Compiling it ΓòÉΓòÉΓòÉ
  200.  
  201. First thing I did when starting working on it was changing the code from K&R C 
  202. to ANSI C. So it will not compile on a pre-ANSI C compiler any more. It should 
  203. not make any problems with non-Unix compilers any more (emx/gcc offers all the 
  204. Unix functions not available with other PC compilers). 
  205.  
  206. I have compiled the program using the following compilers / operating systems: 
  207.  
  208.      GNU CC under AIX and OS/2. 
  209.  
  210.      IBM's xlC compiler under AIX. 
  211.  
  212.      IBM's CSet++ 2.1 and VisualAge C++ 3.0 under OS/2. 
  213.  
  214.  The makefile contains predefined sections for those compilers that only need 
  215.  to be uncommented. 
  216.  
  217.  By the way: Yes I know the code is ugly. This is partially my fault as I did 
  218.  not get into the way it works too much when I first started modifying it. It 
  219.  also was quite unreadable when I took my first look at it... 
  220.  
  221.  
  222. ΓòÉΓòÉΓòÉ 5. Change log ΓòÉΓòÉΓòÉ
  223.  
  224.  Release 2.2                             The third public release. 
  225.  Release 2.1                             The second public release. 
  226.  Release 2.0                             The first public release. 
  227.  
  228.  
  229. ΓòÉΓòÉΓòÉ 5.1. Release 2.2, July 1997 ΓòÉΓòÉΓòÉ
  230.  
  231.      Fixed a minor bug with templates. As the template tags are parsed 
  232.       separately things like '&' inside e.g. a @defun tag slipped through our 
  233.       fingers. 
  234.  
  235.      Fixed a not so minor bug with menus. Sometimes the end of menu 
  236.       environments were not recognized correctly. This lead to plenty of 
  237.       handywork (try the Texinfo documentation with the old version and you 
  238.       will know what I mean). 
  239.  
  240.      Added a Rexx file written by Hans-Michael Stahl for those who do not like 
  241.       typing more than necessary :-) 
  242.  
  243.  
  244. ΓòÉΓòÉΓòÉ 5.2. Release 2.1, February 1997 ΓòÉΓòÉΓòÉ
  245.  
  246.      Added this documentation. 
  247.  
  248.      Added enhanced support for footnotes. Produces real IPF footnotes now 
  249.       instead of Text in brackets. 
  250.  
  251.      Changed the handling of all @*heading commands and added the missing 
  252.       @chapheading command. They will no longer produce nodes but rather 
  253.       produce real headings like in the Info file. 
  254.  
  255.       This makes it more consistent to the commands' definition saying they do 
  256.       not generate Table-Of-Contents entries. Note, that all the other 
  257.       @chapter, @*section, @unnumbered* commands do not generate headings 
  258.       inside the text window as these lines appear in the title of the frame 
  259.       anyway. 
  260.  
  261.      Upped stack size under OS/2 to 0x30000 Bytes. 
  262.  
  263.      Changed the setclear() and findtag() routine. The program now no longer 
  264.       crashes with large @set names. 
  265.  
  266.      @ignore will now be handled like real comments. 
  267.  
  268.      Fixed a bug in eat_first_word() that made the program crash sometimes. 
  269.  
  270.      Fixed the handling of a few @def* commands (index entry). 
  271.  
  272.      Added routine remove_texicmds() for better formatting of automatically 
  273.       created index entries from @def* commands. 
  274.  
  275.      Menu entry descriptions can now be continued in the next line(s) if 
  276.       indented more than 25 columns. Also use remove_texicmds() when processing 
  277.       menu entries. 
  278.  
  279.      Added support for the @bye tag for leaving the document before the 
  280.       physical end of file. 
  281.  
  282.  
  283. ΓòÉΓòÉΓòÉ 5.3. Release 2.0, December 1996 ΓòÉΓòÉΓòÉ
  284.  
  285.      Converted any K&R stuff to ANSI C (prototypes etc.). Still the code looks 
  286.       rather shrouded :-) 
  287.  
  288.      Changed the table.h for a better handling of all the @def* stuff. Now any 
  289.       definition will start with a new paragraph. The leading "--" will not 
  290.       appear anymore. I also added the @deftp command and the pseudo- Texinfo 
  291.       command @ifhtml (ignored, no error message) that may be used by users of 
  292.       texi2html and the @macro command (ignored, no error mes- sage). 
  293.  
  294.      Added my name to the banner :-) 
  295.  
  296.      Removed the #include <string.h> from texi2ipf.h and added it to those .c 
  297.       files that needed it. 
  298.  
  299.      Texinfo menus will now be simulated in the output .ipf file. This is not 
  300.       really necessary but it looks better than blank pages. 
  301.  
  302.      @include statements inside of menus will no longer crash the program. 
  303.  
  304.      All Texinfo @def* commands will now produce an index entry in the main 
  305.       index. Support for seperate indices like "Concept index", "Types index" 
  306.       etc. may be possible in future but has not yet been added. The 
  307.       @printindex command still produces the "Sorry, no ... index" entry in the 
  308.       resulting .IPF file. Commands dealing with custom indices will now 
  309.       produce a more verbose error (ignore) message. 
  310.  
  311.      Changed the makefile. Compiles well under Unix systems (AIX and LINUX) 
  312.       and with IBM's VisualAge C++ for OS/2. 
  313.  
  314.      Added support for pseudo-Texinfo command @ipfline{} (my invention) for 
  315.       entering IPF commands into the Texinfo source file. The syntax is: 
  316.       "@ipfline{<Sequence of IPF code not longer than one line>}" and it should 
  317.       be put into @ifinfo / @end ifinfo blocks to avoid trouble with e.g. 
  318.       texi2dvi or texi2html. 
  319.