Mentions légales du service

Skip to content

Html rendering of the manual

SCHERER Gabriel requested to merge gscherer/menhir:html-doc into master

Currently the only way to consult the Menhir manual is the PDF. It is a nice manual, whenever I want to look at it in depth I find the format appropriate, but most of the time it is actually fairly inconvenient:

  • Opening another browser/viewer (or running the horrible in-browser PDF viewers) disrupts my flow.
  • I find looking for things in the manual or quickly glancing through it less convenient than for HTML.
  • I cannot refer other people to specific parts of the manual with a URL, I have to give a section number, and it is inconvenient for them to navigate there.

As part of the May OCaml DocJam, I decided to work on producing a HTML version of the Menhir manual.

The Menhir manual is written in LaTeX. I evaluated several LaTeX-to-HTML producers (pandoc, which just crashes on some unicode character it doesn't like for some reason, latex2html, which produces terrible output, and tex4ht which doesn't even produce valid HTML), and Hevea was by far the best option. With only moderate tweaking, I could get the manual to build, and with some more tweaking I got a result that actually looks quite decent (maybe not quite as good as the PDF version, but something I'm not ashamed of) -- I reused bits of the trunk ocaml-manual style files which are a good start.

I uploaded a live preview: menhir-manual/main.html. It is one HTML file, plus one PNG picture for each tikzpicture in the document (that is, three, all representing derivation trees). See the Why shifting is legal subsection for an example of embedded picture.

The only change to the LaTeX that might affect the rendering of the PDF version is the move from \hskip to \hspace. I'm no TeX expert, but my understanding is that \hskip is a low-level TeX command with some magic behavior in some corner cases (when it is already surrounded by space) that Hevea doesn't support, while \hspace is the recommend LaTeX-alternative. I couldn't observe any difference in the rendering, but someone might want to compare the places that changed (see 6a51ce74).

The other changes are .hva versions of .sty files to make the build work, importing Hevea's hevea.sty file that defines, on the pdflatex side, some hevea-specific macros as no-ops, and using those hevea-specific macros to build the Tikz pictures as separate PNG files when used from Hevea -- hevea's trick for this which works surprisingly well.

I added a main.html target in doc/Makefile, but no other integration in the overall build system and installation pipeline. I thought that @fpottier, if interested in the patch, would know better than me how to proceed with this. I think it would be very nice if a HTML version of the manual was hosted on the website, with the link given alongside the PDF link for the documentation.

Thanks!

Edited by SCHERER Gabriel

Merge request reports