From 01cea0aee758dc19f031539f613535606062a9a8 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Fri, 14 Jun 2019 21:06:16 +0000
Subject: actuarialangle (14jun19)

git-svn-id: svn://tug.org/texlive/trunk@51376 c570f23f-e606-0410-a88d-b1316a301751
---
 .../source/latex/actuarialangle/actuarialangle.dtx | 379 +++++++++++++++++----
 1 file changed, 306 insertions(+), 73 deletions(-)

(limited to 'Master/texmf-dist/source/latex/actuarialangle/actuarialangle.dtx')

diff --git a/Master/texmf-dist/source/latex/actuarialangle/actuarialangle.dtx b/Master/texmf-dist/source/latex/actuarialangle/actuarialangle.dtx
index 703a4383c73..229d13d81db 100644
--- a/Master/texmf-dist/source/latex/actuarialangle/actuarialangle.dtx
+++ b/Master/texmf-dist/source/latex/actuarialangle/actuarialangle.dtx
@@ -1,6 +1,6 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 2017 Vincent Goulet
+% Copyright (C) 2019 Vincent Goulet
 %
 % This file may be distributed and/or modified under the conditions
 % of the LaTeX Project Public License, either version 1.3c of this
@@ -28,7 +28,7 @@
           \ProvidesFile{actuarialangle.dtx}
 %</dtx>
 %<package>\NeedsTeXFormat{LaTeX2e}[2009/09/24]
-%<package>\ProvidesPackage{actuarialangle}[2017/04/10 v2.0 Actuarial angle]
+%<package>\ProvidesPackage{actuarialangle}[2019/06/13 v2.1 Actuarial angle]
 %<*batchfile>
 \begingroup
 \input docstrip.tex
@@ -39,7 +39,7 @@
 
 This is a generated file.
 
-Copyright (C) 2017 Vincent Goulet
+Copyright (C) 2019 Vincent Goulet
 
 This file may be distributed and/or modified under the conditions
 of the LaTeX Project Public License, either version 1.3c of this
@@ -91,18 +91,34 @@ actuarialangle.ins and the derived files listed in the README.md file.
   \usepackage{enumitem}
   \setlist[description]{leftmargin=*,align=left}
 
+  %% environment for displayed sample code; hybrid between
+  %% environments snugshade* and leftbar of framed.sty
+  \makeatletter
+  \newenvironment{snugshadebar}{%
+    \setlength{\topsep}{1pt}
+    \def\FrameCommand##1{\hskip\@totalleftmargin
+       \vrule width 2pt\colorbox{shadecolor}{\hspace{3pt}##1}%
+      % There is no \@totalrightmargin, so:
+      \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}%
+    \MakeFramed {\advance\hsize-\width
+      \@totalleftmargin\z@ \linewidth\hsize
+      \advance\labelsep\fboxsep
+      \@setminipage}%
+  }{\par\unskip\@minipagefalse\endMakeFramed}
+  \makeatother
+
   %% environments for demo code; 'texample' mostly lifted from
   %% documentation of amsmath
   \newenvironment{demo}{\begin{trivlist}\item}{\end{trivlist}}
   \newenvironment{texample}[1][0.5]{%
-    \noindent\begin{minipage}{#1\linewidth}\begin{snugshade*}%
-      \def\producing{\end{snugshade*}\end{minipage}\hfill\begin{minipage}{\dimexpr0.97\linewidth-#1\linewidth}%
+    \noindent\begin{minipage}{#1\linewidth}\begin{snugshadebar}%
+      \def\producing{\end{snugshadebar}\end{minipage}\hfill\begin{minipage}{\dimexpr0.97\linewidth-#1\linewidth}%
         \hbox\bgroup\kern-.2pt%
         \vbox\bgroup\parindent0pt\relax
         % The 3pt is to cancel the -\lineskip from \displ@y
         \abovedisplayskip3pt \abovedisplayshortskip\abovedisplayskip
         \belowdisplayskip0pt \belowdisplayshortskip\belowdisplayskip
-        \noindent}
+        \noindent}%
     }{%
       \par
       % Ensure that a lonely \[\] structure doesn't take up width less than
@@ -133,26 +149,28 @@ actuarialangle.ins and the derived files listed in the README.md file.
 \end{document}
 %</driver>
 % \fi
-% \CheckSum{126}
+% \CheckSum{281}
 % \changes{v1.0}{2012-10-16}{Initial release.}
-% \changes{v1.1}{2017-02-01}{Various improvements to the README
+% \changes{v1.0a}{2017-02-01}{Various improvements to the README
 %   file, including conversion to markdown format after the project was
 %   moved to GitHub.}
 % \changes{v2.0}{2017-04-09}{Complete new documentation.}
+% \changes{v2.1}{2019-06-13}{Variable extra space, rule thickness and
+%   vertical gap; contributed by Ruixi Zhang.}
 %
 % \GetFileInfo{actuarialangle.sty}
 %
 % \title{Actuarial angle symbol for life contingencies \\
-%   and financial mathematics%
+%   and financial mathematics^^A
 %   \thanks{This document corresponds to
 %   \pkg{actuarialangle}~\fileversion, dated~\filedate.}}
-% \author{Vincent Goulet\thanks{%
+% \author{Vincent Goulet\thanks{^^A
 %   École d'actuariat, Université Laval.} \\
 %   \url{vincent.goulet@act.ulaval.ca}}
 % \maketitle
 %
 % \begin{abstract}
-%   Package \pkg{actuarialangle} provides commands to typeset the
+%   The package \pkg{actuarialangle} provides commands to typeset the
 %   ``angle'' symbol denoting a duration $n$ in actuarial notation, as
 %   in $\angln$, and an overhead angle bracket, as in $\group{xy}$.
 % \end{abstract}
@@ -166,7 +184,7 @@ actuarialangle.ins and the derived files listed in the README.md file.
 % angle bracket (or ``roof'') used to emphasize joint status when
 % ambiguity is possible: $\group{xy}$. The bracket is normally used
 % with a precedence number above. Facilities to position such numbers
-% are provided by package \pkg{actuarialsymbol}
+% are provided by the package \pkg{actuarialsymbol}
 % \citep{actuarialsymbol}.
 %
 % For additional details on actuarial notation for life contingencies,
@@ -184,10 +202,10 @@ actuarialangle.ins and the derived files listed in the README.md file.
 %   between the material under the angle and the right descender; this
 %   was the value used in versions of the package prior to 2.0;
 % \item[\mdseries\ttfamily nobracket] do not define command
-%   \cmd{\overanglebracket}; this option also prevents loading of
-%   package \pkg{pict2e}.
+%   \cmd{\overanglebracket} and its alias \cmd{\group}; this option
+%   also prevents loading of package \pkg{pict2e}.
 % \end{description}
-% We provide option |nobracket| in case the bracket symbol is not
+% We provide the option |nobracket| in case the bracket symbol is not
 % needed and \pkg{pict2e} \citep{pict2e} interferes with other
 % packages. Loading the package with
 % \begin{quote}
@@ -207,7 +225,7 @@ actuarialangle.ins and the derived files listed in the README.md file.
 %   composes an angle symbol around \meta{duration}. This is the
 %   ``raw'' command that does not insert any space between
 %   \meta{duration} and the right descender of the angle. The symbol
-%   scales gracefully if the command is ever used outside of a
+%   scales gracefully if the command is used outside of a
 %   first-level subscript.
 %   \begin{demo}
 %     \begin{texample}
@@ -229,7 +247,7 @@ actuarialangle.ins and the derived files listed in the README.md file.
 %   \end{quote}
 %   In contrast to \cmd{\actuarialangle}, this command inserts some
 %   thin space (by default or with package option |thinspace|) or
-%   thick space (with package option |thinkspace|) between
+%   thick space (with package option |thickspace|) between
 %   \marg{duration} and the right descender.
 %   \begin{demo}
 %     \begin{texample}
@@ -239,7 +257,7 @@ actuarialangle.ins and the derived files listed in the README.md file.
 %       $\angl{n} \quad a_{\angl{n}}$
 %     \end{texample}
 %     \begin{texample}
-%       |% with option thickspace| \\
+%       |% with option thickspace:| \\
 %       |\angl{n} \quad a_{\angl{n}}|
 %       \producing
 %       $\angl{n\mkern1mu} \quad a_{\angl{n\mkern1mu}}$
@@ -261,7 +279,7 @@ actuarialangle.ins and the derived files listed in the README.md file.
 %   \end{quote}
 %   composes an angle bracket (``roof'') above \meta{statuses}. The
 %   rule thickness and spacing relative to the statuses match those of
-%   the angle symbol. Command \cmd{\group} is a convenient alias for
+%   the angle symbol. The command \cmd{\group} is a convenient alias for
 %   \cmd{\overanglebracket}.
 %   \begin{demo}
 %     \begin{texample}
@@ -296,7 +314,7 @@ actuarialangle.ins and the derived files listed in the README.md file.
 %   D.~Beauchemin and V.~Goulet.
 %   \newblock \emph{Actuarial symbols of life contingencies and financial
 %     mathematics}, 2017.
-%   \newblock URL \url{http://www.ctan.org/pkg/actuarialsymbol/}.
+%   \newblock URL \url{https://www.ctan.org/pkg/actuarialsymbol/}.
 %
 %   \bibitem[Bowers et~al.(1997)Bowers, Gerber, Hickman, Jones, and
 %     Nesbitt]{Bowers:2e:1997}
@@ -308,7 +326,7 @@ actuarialangle.ins and the derived files listed in the README.md file.
 %   \bibitem[Gä{\ss}lein et~al.(2016)Gä{\ss}lein, Niepraschk, and Tkadlec]{pict2e}
 %   H.~Gä{\ss}lein, R.~Niepraschk, and J.~Tkadlec.
 %   \newblock \emph{The pict2e package}, 2016.
-%   \newblock URL \url{http://www.ctan.org/pkg/pict2e/}.
+%   \newblock URL \url{https://www.ctan.org/pkg/pict2e/}.
 %   \end{thebibliography}
 %   \PrintChanges
 % }
@@ -356,12 +374,124 @@ actuarialangle.ins and the derived files listed in the README.md file.
 %    \end{macrocode}
 % \end{macro}
 %
+% \subsection{Variable extra space, rule thickness and vertical gap}
+%
+% \begin{macro}{\acta@overbarkern@fontdimen}
+% \begin{macro}{\acta@overbarkern@family}
+% \begin{macro}{\acta@overbarrule@fontdimen}
+% \begin{macro}{\acta@overbarrule@family}
+% \begin{macro}{\acta@overbarvgap@fontdimen}
+% \begin{macro}{\acta@overbarvgap@family}
+%   \changes{v2.1}{2019-01-11}{Define fontdimen and family parameters.}
+%   We first deal with Type~1 math fonts. We define the |\fontdimen|'s
+%   and families used for the thickness of the |\overline| rule and the
+%   amount of vertical gap between the rule and the content, as well as
+%   the extra white space above the rule.
+%    \begin{macrocode}
+\def\acta@overbarkern@fontdimen{8}
+\def\acta@overbarkern@family{\thr@@}
+\def\acta@overbarrule@fontdimen{8}
+\def\acta@overbarrule@family{\thr@@}
+\def\acta@overbarvgap@fontdimen{8}
+\def\acta@overbarvgap@family{\thr@@}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\acta@overbarkern}
+%   \changes{v2.1}{2019-01-11}{Define usable extra space.}
+%   We want a macro to take a math style, e.g., |\displaystyle|, and then
+%   to expand into |\fontdimen8\textfont3| (for Type~1 fonts). This will
+%   serve as the extra space. The name ``overbarkern'' comes from the
+%   corresponding LuaTeX primitive and OpenType Math table entry.
+%    \begin{macrocode}
+\def\acta@overbarkern#1{%
+  \fontdimen\acta@overbarkern@fontdimen
+  \ifx#1\displaystyle
+    \textfont
+  \else
+    \ifx#1\textstyle
+      \textfont
+    \else
+      \ifx#1\scriptstyle
+        \scriptfont
+      \else
+        \scriptscriptfont
+      \fi
+    \fi
+  \fi
+  \acta@overbarkern@family
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\acta@overbarrule}
+%   \changes{v2.1}{2019-01-06}{Define usable rule thickness.}
+%   The |\acta@overbarrule| macro is similar. This will
+%   serve as the rule thickness. The name ``overbarrule'' comes from the
+%   corresponding LuaTeX primitive and OpenType Math table entry.
+%    \begin{macrocode}
+\def\acta@overbarrule#1{%
+  \fontdimen\acta@overbarrule@fontdimen
+  \ifx#1\displaystyle
+    \textfont
+  \else
+    \ifx#1\textstyle
+      \textfont
+    \else
+      \ifx#1\scriptstyle
+        \scriptfont
+      \else
+        \scriptscriptfont
+      \fi
+    \fi
+  \fi
+  \acta@overbarrule@family
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\acta@overbarvgap}
+%   \changes{v2.1}{2019-01-06}{Define usable vertical gap.}
+%   The |\acta@overbarvgap| macro is similar. When |\acta@overbarrule@fontdimen|
+%   and |\acta@overbarvgap@fontdimen| coincide, we use three times the
+%   rule thickness as the vertical gap; otherwise we use the different
+%   |\fontdimen| specified by the latter.
+%    \begin{macrocode}
+\def\acta@overbarvgap#1{%
+  \ifx\acta@overbarrule@fontdimen\acta@overbarvgap@fontdimen
+    \thr@@
+  \fi
+  \fontdimen\acta@overbarvgap@fontdimen
+  \ifx#1\displaystyle
+    \textfont
+  \else
+    \ifx#1\textstyle
+      \textfont
+    \else
+      \ifx#1\scriptstyle
+        \scriptfont
+      \else
+        \scriptscriptfont
+      \fi
+    \fi
+  \fi
+  \acta@overbarvgap@family
+}
+%    \end{macrocode}
+% \end{macro}
+%
 % \subsection{Actuarial angle}
 % \label{sec:implementation:actuarialangle}
 %
-% The original author of macros \cmd{\actuarialangle} and
-% |\acta@angle| is unknown. Some of the comments below are his or
-% hers.
+% The code for \cmd{\actuarialangle}, |\acta@angle|,
+% \cs{angl} and the underlying macros were given to the present
+% author by a colleague many years ago. The original author is
+% unknown. Some of the comments below are his or hers.
 %
 % \begin{macro}{\actuarialangle}
 %   We first define the ``raw'' user level command.
@@ -378,32 +508,48 @@ actuarialangle.ins and the derived files listed in the README.md file.
 \def\acta@angle#1#2{%
   \mathord{%
 %    \end{macrocode}
-% Add a bit of preceding space.
+%   Add a bit of preceding space.
+%   \changes{v2.1}{2019-01-02}{Added missing \texttt\%.}
 %    \begin{macrocode}
-    \mkern1mu
+    \mkern1mu%
 %    \end{macrocode}
 %   We need many nested boxes here: first a vbox to stack the horizontal
-%   rule of the angle and the symbol; second an hbox position the symbol
+%   rule (with some extra space on top) of the angle and the symbol;
+%   second an hbox to position the symbol
 %   and the right descender of the angle side-to-side; third a vbox to
 %   insert spacing between the horizontal rule and the symbol.
+%   \changes{v2.1}{2019-01-11}{Variable extra space.}
+%   \changes{v2.1}{2019-01-06}{Variable thickness.}
 %    \begin{macrocode}
-    \vbox{\hrule \hbox{%
+    \vbox{%
+      \kern\acta@overbarkern#1%
+      \hrule \@height\acta@overbarrule#1%
+      \hbox{%
         \vbox{%
 %    \end{macrocode}
-%   The amount of vertical space below is the normal space for
-%   \cmd{\overline} in a subscript.
+%   The amount of vertical gap is the normal space for |\overline|.
+%   \changes{v2.1}{2019-01-06}{Variable gap.}
+%   \changes{v2.1}{2019-01-02}{Moved \cmd{\m@th} in front.}
 %    \begin{macrocode}
-          \kern3\fontdimen8\scriptfont\thr@@
-          \hbox{$#1#2\m@th$}}%
+          \kern\acta@overbarvgap#1%
+          \hbox{$\m@th#1#2$}%
+        }%
 %    \end{macrocode}
-%   Make the right-hand rule extend down to the depth of a parenthesis
+%   Make the right-hand rule extending down to the depth of a parenthesis
 %   even if the symbol under the angle does not have a descender.
+%   \changes{v2.1}{2019-01-06}{Use \cmd{\mathstrut}.}
+%   \changes{v2.1}{2019-01-06}{Variable thickness.}
 %    \begin{macrocode}
-        \setbox\z@\hbox{$#1()$}\vrule depth\dp\z@}}%
+        \setbox\z@\hbox{$#1\mathstrut$}%
+        \vrule \@width\acta@overbarrule#1\@depth\dp\z@
+      }%
+    }%
 %    \end{macrocode}
 %   Finishing touch is a bit of following space.
 %    \begin{macrocode}
-    \mkern1mu}}
+    \mkern1mu%
+  }%
+}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -414,22 +560,24 @@ actuarialangle.ins and the derived files listed in the README.md file.
 %   \changes{v2.0}{2017-04-07}{Added an \cmd{\anglk} shortcut.} %
 %   Finally, we define the main user level function \cmd{\angl} and
 %   shortcuts for common cases.
+%   \changes{v2.1}{2019-01-02}{Use \cmd{\newcommand*} instead of \cmd{\def}.}
+%   \changes{v2.1}{2019-01-02}{No need for extra braces around \texttt{\#1}.}
 %    \begin{macrocode}
 \ifacta@thinspace
-  \def\angl#1{{\actuarialangle{{#1}\mkern1mu}}}
+  \newcommand*\angl[1]{{\actuarialangle{#1\mkern1mu}}}
 \else
-  \def\angl#1{{\actuarialangle{{#1}\mkern2mu}}}
+  \newcommand*\angl[1]{{\actuarialangle{#1\mkern2mu}}}
 \fi
-\def\angln{{\angl n}}
-\def\anglr{{\angl r}}
-\def\anglk{{\angl k}}
+\newcommand*\angln{{\angl n}}
+\newcommand*\anglr{{\angl r}}
+\newcommand*\anglk{{\angl k}}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % \end{macro}
 % \end{macro}
 %
-% \section{Over angle bracket}
+% \subsection{Over angle bracket}
 % \label{sec:implementation:overanglebracket}
 %
 % The code of this section is executed only if |\acta@bracket| is
@@ -461,50 +609,80 @@ actuarialangle.ins and the derived files listed in the README.md file.
 %    \begin{macrocode}
   \def\acta@anglebracket#1#2{%
 %    \end{macrocode}
+%   \changes{v2.1}{2019-01-06}{Improved construction.}
+%   We construct the whole symbol in the same style as |\acta@angle|,
+%   i.e., a bit of preceding and following space, to prevent clashing
+%   into the trailing colon.
+%    \begin{macrocode}
+    \mathord{%
+      \mkern1mu%
+%    \end{macrocode}
+%   \changes{v2.1}{2019-01-06}{Variable thickness.}
+%   We setup the rule thickness here.
+%    \begin{macrocode}
+      \linethickness{\acta@overbarrule#1}%
+%    \end{macrocode}
 %   Box zero contains the material under the bracket. The width of this
 %   box will determine the width of the flat part of the bracket and the
-%   height, the length of the descenders. Hence we store these values.
+%   height, the length of the descenders of the bracket.
+%   Hence we store these values.
+%   \changes{v2.1}{2019-01-02}{Added missing \texttt\%.}
+%   \changes{v2.1}{2019-01-02}{Use local dimen registers.}
 %    \begin{macrocode}
-    \setbox\z@\hbox{$\m@th#1#2$}
-    \dimen0\wd\z@ \dimen1\ht\z@
+      \setbox\z@\hbox{$\m@th#1#2$}%
+      \dimen\z@\wd\z@ \dimen\tw@\ht\z@
 %    \end{macrocode}
 %   Box two contains the bracket itself. It is drawn in three parts
 %   stitched together; the first and third parts are expressed in a
-%   dimension relative |\dimen1|, above, whereas the central part is
-%   expressed relative |\dimen0|.
+%   dimension relative to |\dimen2| whereas the central part is
+%   expressed relative to |\dimen0|.
+%   \changes{v2.1}{2019-01-02}{Added missing \texttt\%.}
 %    \begin{macrocode}
-    \setbox\tw@\hbox{%
-      \setlength{\unitlength}{\dimen1}%
-      \begin{picture}(0.4,0)
-        \polyline(0.4001,0)(0.4,0)(0,-0.8)
-      \end{picture}%
-      \setlength{\unitlength}{\dimen0}%
-      \begin{picture}(1,0)
-        \put(0,0){\line(1,0){1}}
-      \end{picture}%
-      \setlength{\unitlength}{\dimen1}%
-      \begin{picture}(0.4,0)
-        \polyline(-0.0001,0)(0,0)(0.4,-0.8)
-      \end{picture}}
+      \setbox\tw@\hbox{%
+        \unitlength\dimen\tw@
+        \begin{picture}(0.4,0)
+          \polyline(0.4001,0)(0.4,0)(0,-0.8)
+        \end{picture}%
+        \unitlength\dimen\z@
+        \begin{picture}(1,0)
+          \put(0,0){\line(1,0){1}}
+        \end{picture}%
+        \unitlength\dimen\tw@
+        \begin{picture}(0.4,0)
+          \polyline(-0.0001,0)(0,0)(0.4,-0.8)
+        \end{picture}%
+      }%
 %    \end{macrocode}
-%   We store the width of the total width of the backet to center the
-%   material under it, below.
+%   We store the total width of the whole bracket to center the
+%   material under it, as follows.
 %    \begin{macrocode}
-    \dimen@\wd\tw@
+      \dimen@\wd\tw@
 %    \end{macrocode}
-%   Box containing the whole symbol. The lineskip between the bracket
+%   The box containing the whole symbol. The lineskip between the bracket
 %   and the statuses is the same as in |\acta@angle|, plus half the
-%   default rule thickness.
+%   rule thickness |\@halfwidth|.
+%   \changes{v2.1}{2019-01-06}{Variable gap.}
 %    \begin{macrocode}
-    \vbox to\dimen1{%
-      \baselineskip\z@
-      \lineskip3\fontdimen8\scriptfont\thr@@
-      \advance\lineskip by 0.2pt
-      \lineskiplimit\lineskip
-      \vss
-      \box\tw@%
-      \hbox to\dimen@{\hss\unhbox\z@\hss}
-    }
+      \vbox{%
+        \baselineskip\z@
+        \lineskip\acta@overbarvgap#1%
+        \advance\lineskip\@halfwidth
+        \lineskiplimit\lineskip
+%    \end{macrocode}
+%   \changes{v2.1}{2019-01-11}{Variable extra space.}
+%   The extra space is the same as in |\acta@angle|, plus half the
+%   rule thickness |\@halfwidth|.
+%    \begin{macrocode}
+        \kern\acta@overbarkern#1%
+        \kern\@halfwidth
+        \box\tw@
+        \hbox to\dimen@{\hss\unhbox\z@\hss}%
+      }%
+%    \end{macrocode}
+%   Finish with a bit of following space.
+%    \begin{macrocode}
+      \mkern1mu%
+    }%
   }
 %    \end{macrocode}
 % \end{macro}
@@ -517,6 +695,61 @@ actuarialangle.ins and the derived files listed in the README.md file.
 %    \end{macrocode}
 % \end{macro}
 %
+% \subsection{Compatibility with \pkg{unicode-math} and OpenType math fonts}
+%
+% \begin{macro}{\AtBeginDocument}
+%   \changes{v2.1}{2019-01-06}{Compatibility with \pkg{unicode-math}.}
+%   The \pkg{unicode-math} package is to be loaded \emph{after} other math
+%   setup packages, e.g., \pkg{amsmath} and \pkg{mathtools}. This usually
+%   implies that \pkg{unicode-math} is loaded after \pkg{actuarialangle}.
+%   So we delay the adjustments for \pkg{unicode-math}.
+%    \begin{macrocode}
+\AtBeginDocument{%
+  \@ifpackageloaded{unicode-math}{%
+%    \end{macrocode}
+%   When the \pkg{unicode-math} package is loaded, OpenType math font will
+%   be used and the compile engine must be either LuaTeX or XeTeX. We test
+%   against the XeTeX primitive |\XeTeXcharclass| to find out which engine
+%   is used.
+%    \begin{macrocode}
+    \ifx\XeTeXcharclass\@undefined
+%    \end{macrocode}
+%   In this case the engine is LuaTeX. We redefine |\acta@overbarkern|,
+%   |\acta@overbarrule| and |\acta@overbarvgap| to be the LuaTeX primitives
+%   |\Umathoverbarkern|, |\Umathoverbarrule| and |\Umathoverbarvgap|,
+%   respectively. We also undefine the fontdimen and family parameters.
+%    \begin{macrocode}
+      \global\let\acta@overbarkern\Umathoverbarkern
+      \global\let\acta@overbarrule\Umathoverbarrule
+      \global\let\acta@overbarvgap\Umathoverbarvgap
+      \global\let\acta@overbarkern@fontdimen\@undefined
+      \global\let\acta@overbarkern@family\@undefined
+      \global\let\acta@overbarrule@fontdimen\@undefined
+      \global\let\acta@overbarrule@family\@undefined
+      \global\let\acta@overbarvgap@fontdimen\@undefined
+      \global\let\acta@overbarvgap@family\@undefined
+    \else
+%    \end{macrocode}
+%   Otherwise the engine is XeTeX. We use |\fontdimen54\<X>font2| for the
+%   rule thickness. We should use |\fontdimen53| and |\fontdimen55|
+%   for the vertical gap and the extra space, respectively,
+%   but XeTeX seems to have made a mistake here (see \href{^^A
+%   https://tex.stackexchange.com/q/468496}{the discussion} on StackExchange).
+%   So, for the vertical gap, we fallback to three times the rule thickness.
+%   For the extra space, we fallback to the rule thickness.
+%    \begin{macrocode}
+      \gdef\acta@overbarkern@fontdimen{54}% XeTeX mistake? Use 55?
+      \gdef\acta@overbarkern@family{\tw@}%
+      \gdef\acta@overbarrule@fontdimen{54}%
+      \gdef\acta@overbarrule@family{\tw@}%
+      \gdef\acta@overbarvgap@fontdimen{54}% XeTeX mistake? Use 53?
+      \gdef\acta@overbarvgap@family{\tw@}%
+    \fi
+  }{}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
 %\iffalse
 %</package>
 %\fi
-- 
cgit v1.2.3

