]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blob - doc/plugins/contrib/texinfo.mdwn
bc4939a92e0ff9972495c94ccc31427f10b7cf9d
[git.ikiwiki.info.git] / doc / plugins / contrib / texinfo.mdwn
1 [[I|tschwinge]] started writing a plugin to render [Texinfo](http://www.gnu.org/software/texinfo/)
2 inside the ikiwiki environment.
4 The plugin is available at <http://www.schwinge.homeip.net/~thomas/tmp/texinfo.pm>.
6 It's very basic at the moment, but will be improved over time.
9 # Issues
11 ## N-to-M Mapping of Input and Output Files
13 Conventional ikiwiki [[*htmlize*ing|plugins/write#index6h3]] plugins
14 have a one-to-one mapping of input file and output file:
15 `some/where/page.mdwn` is rendered to `some/where/page.html`.
16 This can also be achieved for Texinfo files, but is somewhat
17 unusual there, when rendering them to HTML.  In general, there
18 is a N-to-M mapping:
20 * N Texinfo input files (a main `.texi` file,
21   several helper files (`fdl.texi`, `version.texi`, ...), and
22   additional text files which are included from the main `.texi`
23   file, e.g. `history.texi`, `libfoo.texi`, `libbar.texi`.
24 * M Texinfo output files: the main `.texi` file (which `include`s
25   the other input files) is usually rendered into a (flat) hierarchy
26   of HTML files, one file per node, see the table on
27   <http://www.gnu.org/software/texinfo/manual/texinfo/html_node/#Top>
28   for an example.
30 How to teach this to ikiwiki?  --[[tschwinge]]
32 > As far as multiple input files, you'd need to use add_depends()
33 > to let ikiwiki know that a change to any of those files should cause a
34 > rebuild of the "main" file. --[[Joey]]
36 >> I'll see about a frob to get `makeinfo` provide me with a list of files
37 >> it used for rendering a given `.texi` file. --[[tschwinge]]
39 > I guess you'd also have to somehow deal with
40 > it wanting to render pages for each of the helper files. Not quite sure
41 > what the best way would be to avoid that. --[[Joey]]
43 >> Might it be an option to simply not render the pages that are already
44 >> being used as an `include` file for another `.texi` file?  --[[tschwinge]]
46 > Ikiwiki is perfectly happy with a page creating other files (see eg, the
47 > img and teximg plugins, as well as the inline plugin's rss generation).
48 > The will_render() function supports that.
49
50 > What hasn't been done though is a page creating more than one other _page_.
51 > Perhaps you could call IkiWiki::genpage by hand for each additional page.
52 > You might also want to manipulate each data structure that tracks info about
53 > pages, adding the additional pages to them, so that they're first class
54 > pages that work as pages everywhere in ikiwiki (ie, can be inlined,
55 > appear in a site map, be linked to, etc). Not sure how to do that,
56 > and perhaps you could get away without doing it actually. --[[Joey]]
59 ## Copyright and Licensing Snippets
61 ikiwiki (obviously) doesn't understand (parse) the copyright and licensing
62 statements which are included in `.texi` files.  --[[tschwinge]]
65 ## `makeinfo` Output
67 `makeinfo --html` is being used for rendering.  It creates stand-alone
68 HTML files, while ikiwiki only needs the files' `<body>`s.  --[[tschwinge]]