diff --git a/Doc/libcmath.tex b/Doc/libcmath.tex
index 0a4a667..314db20 100644
--- a/Doc/libcmath.tex
+++ b/Doc/libcmath.tex
@@ -6,48 +6,80 @@
 This module is always available.
 It provides access to mathematical functions for complex numbers.
 The functions are:
-\iftexi
+
 \begin{funcdesc}{acos}{x}
-\funcline{asin}{x}
-\funcline{atan}{x}
-\funcline{cos}{x}
-\funcline{cosh}{x}
-\funcline{exp}{x}
-\funcline{log}{x}
-\funcline{log10}{x}
-\funcline{sin}{x}
-\funcline{sinh}{x}
-\funcline{sqrt}{x}
-\funcline{tan}{x}
-\funcline{tanh}{x}
+Return the arc cosine of \var{x}.
 \end{funcdesc}
-\else
-\code{acos(\varvars{x})},
-\code{acosh(\varvars{x})},
-\code{asin(\varvars{x})},
-\code{asinh(\varvars{x})},
-\code{atan(\varvars{x})},
-\code{atanh(\varvars{x})},
-\code{cos(\varvars{x})},
-\code{cosh(\varvars{x})},
-\code{exp(\varvars{x})},
-\code{log(\varvars{x})},
-\code{log10(\varvars{x})},
-\code{sin(\varvars{x})},
-\code{sinh(\varvars{x})},
-\code{sqrt(\varvars{x})},
-\code{tan(\varvars{x})},
-\code{tanh(\varvars{x})}.
-\fi
+
+\begin{funcdesc}{acosh}{x}
+Return the hyperbolic arc cosine of \var{x}.
+\end{funcdesc}
+
+\begin{funcdesc}{asin}{x}
+Return the arc sine of \var{x}.
+\end{funcdesc}
+
+\begin{funcdesc}{asinh}{x}
+Return the hyperbolic arc sine of \var{x}.
+\end{funcdesc}
+
+\begin{funcdesc}{atan}{x}
+Return the arc tangent of \var{x}.
+\end{funcdesc}
+
+\begin{funcdesc}{atanh}{x}
+Return the hyperbolic arc tangent of \var{x}.
+\end{funcdesc}
+
+\begin{funcdesc}{cos}{x}
+Return the cosine of \var{x}.
+\end{funcdesc}
+
+\begin{funcdesc}{cosh}{x}
+Return the hyperbolic cosine of \var{x}.
+\end{funcdesc}
+
+\begin{funcdesc}{exp}{x}
+Return the exponential value $\mbox{e}^x$.
+\end{funcdesc}
+
+\begin{funcdesc}{log}{x}
+Return the natural logarithm of \var{x}.
+\end{funcdesc}
+
+\begin{funcdesc}{log10}{x}
+Return the base-10 logarithm of \var{x}.
+\end{funcdesc}
+
+\begin{funcdesc}{sin}{x}
+Return the sine of \var{x}.
+\end{funcdesc}
+
+\begin{funcdesc}{sinh}{x}
+Return the hyperbolic sine of \var{x}.
+\end{funcdesc}
+
+\begin{funcdesc}{sqrt}{x}
+Return the square root of \var{x}.
+\end{funcdesc}
+
+\begin{funcdesc}{tan}{x}
+Return the tangent of \var{x}.
+\end{funcdesc}
+
+\begin{funcdesc}{tanh}{x}
+Return the hyperbolic tangent of \var{x}.
+\end{funcdesc}
 
 The module also defines two mathematical constants:
-\iftexi
+
 \begin{datadesc}{pi}
-\dataline{e}
+The mathematical constant \emph{pi}, as a real.
 \end{datadesc}
-\else
-\code{pi} and \code{e}.
-\fi
+
+\begin{datadesc}{e}
+The mathematical constant \emph{e}, as a real.
+\end{datadesc}
 
 Note that the selection of functions is similar, but not identical, to
 that in module \code{math}.  The reason for having two modules is,
