2.4 Making your .tex compatible with BookML

BookML uses LaTeX ML. While there is no guaruntee that every LaTeX ML copmatible .tex file will produce a good output, we refer to documentation for LaTeX ML for any issues not covered in this document.

2.4.1 Necassary pre-amble and style guide

For BookML to output correctly, the following preamble needs to be present.

\usepackage[british]{babel}

This uses the package babel, which allows the HTML output to programatically determine the language of the page. This is necesary for screen readers to interpret HTML.

\title{MATHXXX Lecture Notes}
\author{Firstname Lastname}

It is important to declare title and author so that the meta-data of the HTML file is correct.

\usepackage{bookml/bookml} % if not already in your preamble
\bmlAltFormat{lecturenotes.LARGE.pdf}{PDF (large print)}
{\bf some bold text}    % DO
\bf some bold text      % DON’T
\textbf{some bold text} % BEST

BookML works best when you use LaTeX commands (i.e. /textbf{}, /textit{}, …), rather than TeX commands (i.e. /bf, /it, …).

2.4.2 LaTeX Packages and BookML

BookML runs on LaTeX ML. Currently, LaTeX ML does not have support for every package. For a full list of supported packages, see this webpage.

If you use a package that is not on this list, there are a few fixes.

Custom packages

If you use a custom package in place of a pre-amble, change the extension to .tex, and use \input instead of \usepackage.

Packages for generating images

To use an image generation package, it is advised to use the command \bmlImageEnvironment.

\bmlImageEnvironment{environment type here}
\iflatexml
\else
\usepackage{image generation package}
% ... ALL of the package-related preamble code here
\fi
% No package commands after this point!

Now these environments will compile using the packages outlined. For more details, see the documentation.

Packages specific to the .pdf output

If a package is specific to the pdf output, use code in your pre-amble to the following:

\if latexml
    % Write something that does similar to the package for html, or nothing at all.
\else
    \usepackage{...}  %Reference your package here
\fi
 

Unsupported classes

If a document class is not supported by LaTeXML, use the following code:

\iflatexml
    \documentclass{...}
\else
    \documentclass{...}
\fi
 

Other packages

If there is a similar package in the list supported by LaTeXML, it is recommended to use that package in its place. For simple packages, it may be possible to include pre-amble (or an imported .tex file) with similar functionality to the unsupported package.