diff --git a/Doc/lib/libcmath.tex b/Doc/lib/libcmath.tex
index 0a4a667..314db20 100644
--- a/Doc/lib/libcmath.tex
+++ b/Doc/lib/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,
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,
