summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/actuarialangle/actuarialangle.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-06-14 21:06:16 +0000
committerKarl Berry <karl@freefriends.org>2019-06-14 21:06:16 +0000
commit01cea0aee758dc19f031539f613535606062a9a8 (patch)
tree175810fa1eb0f033005703477ac720ba8f060b38 /Master/texmf-dist/source/latex/actuarialangle/actuarialangle.dtx
parent81328bc000d00e09ab2708010708c5c9e31361eb (diff)
actuarialangle (14jun19)
git-svn-id: svn://tug.org/texlive/trunk@51376 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/actuarialangle/actuarialangle.dtx')
-rw-r--r--Master/texmf-dist/source/latex/actuarialangle/actuarialangle.dtx379
1 files changed, 306 insertions, 73 deletions
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