texlive[65599] Master: overarrows (21jan23)

commits+karl at tug.org commits+karl at tug.org
Sat Jan 21 00:02:47 CET 2023


Revision: 65599
          http://tug.org/svn/texlive?view=revision&revision=65599
Author:   karl
Date:     2023-01-21 00:02:46 +0100 (Sat, 21 Jan 2023)
Log Message:
-----------
overarrows (21jan23)

Modified Paths:
--------------
    trunk/Master/tlpkg/libexec/ctan2tds

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/overarrows/
    trunk/Master/texmf-dist/doc/latex/overarrows/LICENSE
    trunk/Master/texmf-dist/doc/latex/overarrows/README.md
    trunk/Master/texmf-dist/doc/latex/overarrows/overarrows-doc.sty
    trunk/Master/texmf-dist/doc/latex/overarrows/overarrows.pdf
    trunk/Master/texmf-dist/source/latex/overarrows/
    trunk/Master/texmf-dist/source/latex/overarrows/overarrows.dtx
    trunk/Master/texmf-dist/source/latex/overarrows/overarrows.ins

Removed Paths:
-------------
    trunk/Master/texmf-dist/tex/latex/overarrows/LICENSE
    trunk/Master/texmf-dist/tex/latex/overarrows/README.md
    trunk/Master/texmf-dist/tex/latex/overarrows/overarrows-doc.sty
    trunk/Master/texmf-dist/tex/latex/overarrows/overarrows.dtx
    trunk/Master/texmf-dist/tex/latex/overarrows/overarrows.ins
    trunk/Master/texmf-dist/tex/latex/overarrows/overarrows.pdf

Added: trunk/Master/texmf-dist/doc/latex/overarrows/LICENSE
===================================================================
--- trunk/Master/texmf-dist/doc/latex/overarrows/LICENSE	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/overarrows/LICENSE	2023-01-20 23:02:46 UTC (rev 65599)
@@ -0,0 +1,416 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c  2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+    Everyone is allowed to distribute verbatim copies of this
+    license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute.  This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but 
+it is written in such a way that you can use it even if your work is 
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work.  If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+   `Work'
+    Any work being distributed under this License.
+    
+   `Derived Work'
+    Any work that under any applicable law is derived from the Work.
+
+   `Modification' 
+    Any procedure that produces a Derived Work under any applicable
+    law -- for example, the production of a file containing an
+    original file associated with the Work or a significant portion of
+    such a file, either verbatim or with modifications and/or
+    translated into another language.
+
+   `Modify'
+    To apply any procedure that produces a Derived Work under any
+    applicable law.
+    
+   `Distribution'
+    Making copies of the Work available from one person to another, in
+    whole or in part.  Distribution includes (but is not limited to)
+    making any electronic components of the Work accessible by
+    file transfer protocols such as FTP or HTTP or by shared file
+    systems such as Sun's Network File System (NFS).
+
+   `Compiled Work'
+    A version of the Work that has been processed into a form where it
+    is directly usable on a computer system.  This processing may
+    include using installation facilities provided by the Work,
+    transformations of the Work, copying of components of the Work, or
+    other activities.  Note that modification of any installation
+    facilities provided by the Work constitutes modification of the Work.
+
+   `Current Maintainer'
+    A person or persons nominated as such within the Work.  If there is
+    no such explicit nomination then it is the `Copyright Holder' under
+    any applicable law.
+
+   `Base Interpreter' 
+    A program or process that is normally needed for running or
+    interpreting a part or the whole of the Work.    
+
+    A Base Interpreter may depend on external components but these
+    are not considered part of the Base Interpreter provided that each
+    external component clearly identifies itself whenever it is used
+    interactively.  Unless explicitly specified when applying the
+    license to the Work, the only applicable Base Interpreter is a
+    `LaTeX-Format' or in the case of files belonging to the 
+    `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1.  Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope.  In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2.  You may distribute a complete, unmodified copy of the Work as you
+received it.  Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3.  You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4.  If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work.  You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work.  Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5.  If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6.  If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition.  Only
+the Current Maintainer is allowed to add such statements of exemption 
+to a component of the Work. 
+
+  a. If a component of this Derived Work can be a direct replacement
+     for a component of the Work when that component is used with the
+     Base Interpreter, then, wherever this component of the Work
+     identifies itself to the user when used interactively with that
+     Base Interpreter, the replacement component of this Derived Work
+     clearly and unambiguously identifies itself as a modified version
+     of this component to the user when used interactively with that
+     Base Interpreter.
+     
+  b. Every component of the Derived Work contains prominent notices
+     detailing the nature of the changes to that component, or a
+     prominent reference to another file that is distributed as part
+     of the Derived Work and that contains a complete and accurate log
+     of the changes.
+  
+  c. No information in the Derived Work implies that any persons,
+     including (but not limited to) the authors of the original version
+     of the Work, provide any support, including (but not limited to)
+     the reporting and handling of errors, to recipients of the
+     Derived Work unless those persons have stated explicitly that
+     they do provide such support for the Derived Work.
+
+  d. You distribute at least one of the following with the Derived Work:
+
+       1. A complete, unmodified copy of the Work; 
+          if your distribution of a modified component is made by
+          offering access to copy the modified component from a
+          designated place, then offering equivalent access to copy
+          the Work from the same or some similar place meets this
+          condition, even though third parties are not compelled to
+          copy the Work along with the modified component;
+
+       2. Information that is sufficient to obtain a complete,
+          unmodified copy of the Work.
+
+7.  If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8.  The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9.  Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+     
+10. a. A Derived Work may be distributed under a different license
+       provided that license itself honors the conditions listed in
+       Clause 6 above, in regard to the Work, though it does not have
+       to honor the rest of the conditions in this license.
+      
+    b. If a Derived Work is distributed under a different license, that
+       Derived Work must provide sufficient documentation as part of
+       itself to allow each recipient of that Derived Work to honor the 
+       restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12.  Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work.  Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose.  The entire risk as to the quality and performance
+of the Work is with you.  Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1.  Make a reasonable attempt to trace the Current Maintainer (and
+     the Copyright Holder, if the two differ) through the means of
+     an Internet or similar search.
+
+ 2.  If this search is successful, then enquire whether the Work
+     is still maintained.
+
+  a. If it is being maintained, then ask the Current Maintainer
+     to update their communication data within one month.
+     
+  b. If the search is unsuccessful or no action to resume active
+     maintenance is taken by the Current Maintainer, then announce
+     within the pertinent community your intention to take over
+     maintenance.  (If the Work is a LaTeX work, this could be
+     done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+     maintenance of the Work to you, then this takes effect
+     immediately upon announcement.
+     
+  b. If the Current Maintainer is not reachable and the Copyright
+     Holder agrees that maintenance of the Work be passed to you,
+     then this takes effect immediately upon announcement.  
+    
+ 4.  If you make an `intention announcement' as described in 2b. above
+     and after three months your intention is challenged neither by
+     the Current Maintainer nor by the Copyright Holder nor by other
+     people, then you may arrange for the Work to be changed so as
+     to name you as the (new) Current Maintainer.
+     
+ 5.  If the previously unreachable Current Maintainer becomes
+     reachable once more within three months of a change completed
+     under the terms of 3b) or 4), then that Current Maintainer must
+     become or remain the Current Maintainer upon request provided
+     they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer.  You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license.  These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license.  You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license.  It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate.  Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component.  While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community.  It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one.  Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified.  Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+  %% pig.dtx
+  %% Copyright 2005 M. Y. Name
+  %
+  % This work may be distributed and/or modified under the
+  % conditions of the LaTeX Project Public License, either version 1.3
+  % of this license or (at your option) any later version.
+  % The latest version of this license is in
+  %   http://www.latex-project.org/lppl.txt
+  % and version 1.3 or later is part of all distributions of LaTeX
+  % version 2005/12/01 or later.
+  %
+  % This work has the LPPL maintenance status `maintained'.
+  % 
+  % The Current Maintainer of this work is M. Y. Name.
+  %
+  % This work consists of the files pig.dtx and pig.ins
+  % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.  
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+   The LPPL requires that distributions of the Work contain all the
+   files of the Work.  It is therefore important that you provide a
+   way for the licensee to determine which files constitute the Work.
+   This could, for example, be achieved by explicitly listing all the
+   files of the Work near the copyright notice of each file or by
+   using a line such as:
+
+    % This work consists of all files listed in manifest.txt.
+   
+   in that place.  In the absence of an unequivocal list it might be
+   impossible for the licensee to determine what is considered by you
+   to comprise the Work and, in such a case, the licensee would be
+   entitled to make reasonable conjectures as to which files comprise
+   the Work.
+

Added: trunk/Master/texmf-dist/doc/latex/overarrows/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/overarrows/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/overarrows/README.md	2023-01-20 23:02:46 UTC (rev 65599)
@@ -0,0 +1,27 @@
+# overarrows - Custom extensible arrows over math expressions
+
+## Presentation
+
+A LaTeX package to create custom arrows over math expressions, mainly for
+vectors (but arrows can as well be drawn below). Arrows stretch with content,
+scale with math styles, and have a correct kerning when a subscript follows.
+Some predefined commands are also provided.
+
+## Author
+
+Julien Labbé <Julien.Labbe at univ-grenoble-alpes.fr> Université Grenoble-Alpes
+
+## Repository
+
+https://gricad-gitlab.univ-grenoble-alpes.fr/labbeju/latex-packages/-/tree/main/overarrows
+
+## Licence
+
+Copyright (C) 2023 by Julien Labbé
+
+This file may be distributed and/or modified under the conditions of the LaTeX
+Project Public License (LPPL), either version 1.3c of this license or (at your
+option) any later version. The latest version of this license is in the file
+https://www.latex-project.org/lppl.txt
+
+


Property changes on: trunk/Master/texmf-dist/doc/latex/overarrows/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/overarrows/overarrows-doc.sty
===================================================================
--- trunk/Master/texmf-dist/doc/latex/overarrows/overarrows-doc.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/overarrows/overarrows-doc.sty	2023-01-20 23:02:46 UTC (rev 65599)
@@ -0,0 +1,237 @@
+%%
+%% This is file `overarrows-doc.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% overarrows.dtx  (with options: `docstyle')
+%% 
+%% This is a generated file.
+%% 
+%% Copyright (C) 2023 by Julien Labbé <Julien.Labbe at univ-grenoble-alpes.fr>
+%% 
+%% This file may be distributed and/or modified under the conditions of the LaTeX
+%% Project Public License (LPPL), either version 1.3c of this license or (at your
+%% option) any later version. The latest version of this license is in the file
+%% https://www.latex-project.org/lppl.txt
+%% 
+\RequirePackage{xcolor}
+\PassOptionsToPackage{hyperref}{xcolor}
+\RequirePackage[many]{tcolorbox}
+\tcbuselibrary{listings}
+\tcbuselibrary{documentation}
+\hypersetup{hidelinks}
+\definecolor{ovar_lavender}{rgb}{0.92,0.92,1}
+\definecolor{ovar_darkblue}{rgb}{0.1,0.2,0.5}
+\definecolor{ovar_darkgreen}{rgb}{0,0.39,0}
+\definecolor{ovar_beige}{rgb}{.96,.96,.86}
+\colorlet{ovar_commands}{ovar_darkblue}
+\colorlet{ovar_keys}{ovar_darkgreen}
+\colorlet{ovar_lengths}{violet}
+\colorlet{ovar_options}{Definition} % from tcolorbox documentation
+\lstdefinestyle{lstovardoc}{%
+  language = [LaTeX]TeX,
+  columns         = flexible,
+  keywordstyle    = {\bfseries\color{ovar_darkblue}},
+  texcsstyle      = *{\bfseries\color{ovar_darkblue}},
+  commentstyle    = {\color{gray}},
+  identifierstyle = {\color{ovar_darkgreen}},
+  morekeywords    = {},% keywordsprefix needs a morekeywords before
+  keywordsprefix  = {\\},
+  literate        = *{\$}{{\textcolor{red}{\$}}}{1}
+                    {\&}{{\textcolor{red}{\&}}}{1}
+                    {\}}{{\textcolor{darkgray}{\}}}}{1}
+                    {\{}{{\textcolor{darkgray}{\{}}}{1}
+                    {\\\\}{{\textcolor{red}{\textbackslash\textbackslash}}}{2}
+                    {\%\ \ \ \ }{}0,
+  basicstyle      = \ttfamily\footnotesize,
+  frame           = none,
+  framesep        = 0pt,
+  aboveskip       = 0pt,
+  belowskip       = 0pt,
+}
+\lstdefinestyle{lstovarcode}{%
+  style           = lstovardoc,
+  backgroundcolor = \color{ovar_beige},
+  breakindent     = 1cm,
+  numbers         = left,
+  numberstyle     = \scriptsize\ttfamily\color{gray},
+  aboveskip       = \smallskipamount,
+  belowskip       = \smallskipamount,
+}
+\tcbset{% copied and adapted from tcolorbox.doc.s_main.sty
+  documentation listing style=lstovardoc,%
+  doc keypath=overarrows,
+  size=small,%
+  % verbatim ignore percent,
+  %% styles
+  docexample/.style={%
+    bicolor jigsaw,
+    before skip balanced=\medskipamount,
+    after skip balanced=\medskipamount,
+    fonttitle=\bfseries,
+    fontlower=\normalfont,
+    halign lower=center,
+    colframe=ovar_darkblue,
+    colback=ovar_lavender,
+    colbacklower=white,
+    drop fuzzy shadow,
+  },
+  color key=ovar_keys,
+  color command=ovar_commands,
+  color length=ovar_lengths,
+  doc head key={fontlower=\footnotesize, collower=darkgray},
+  before doc body={\parskip=\smallskipamount},
+}
+\begin{filecontents*}{\jobname.mst}
+actual '='
+\end{filecontents*}
+\tcbset{%
+  index actual={=},
+  index colorize=true,
+  index gather all,
+  index format=pgfsection,
+}
+\def\tcb at doc@index at pgfsection{%
+  \def\index at prologue{%
+    \section*{\kvtcb at text@index}\addcontentsline{toc}{section}{\kvtcb at text@index}
+    {\small%
+      Entries listed in the categories ``commands", ``lengths", and
+      ``internal macros" also include references to package implementation. }
+    \bigskip\par\noindent%
+  }%
+  \tcb at doc@index at pgf@%
+}
+\newcommand{\indexmacro}[1]{%
+  \begingroup
+  \let\lst at UM\@empty%
+  \index{{Commands!#1=\tcbIndexPrintComC {#1}}}%
+  \endgroup
+}
+\newcommand{\indexmacrointernal}[1]{%
+  \begingroup
+  \let\lst at UM\@empty%
+  \index{{Internal macros!#1=\tcbIndexPrintComC {#1}}}%
+  \endgroup
+}
+\newcommand{\indexlength}[1]{%
+  \begingroup
+  \let\lst at UM\@empty%
+  \index{{Lengths!#1=\tcbIndexPrintLenC {#1}}}%
+  \endgroup
+}
+\let\macrocode\relax
+\lstnewenvironment{macrocode}{%
+  \lstset{%
+    name=macrocode,
+    firstnumber=auto,
+    style       = lstovarcode,
+    showlines=false,
+    texcs       = [2]{% commands
+      DeclareOverArrowCommand, ProvideOverArrowCommand,%
+      NewOverArrowCommand, RenewOverArrowCommand,%
+      TestOverArrow, xjoinrel, smallermathstyle,%
+      esvectvv, vv,%
+      overrightarrow, overleftarrow, overleftrightarrow, overrightharpoonup,%
+      overrightharpoondown, overleftharpoonup, overleftharpoondown, overbar,%
+      underrightarrow, underleftarrow, underleftrightarrow, underrightharpoonup,%
+      underrightharpoondown, underleftharpoonup, underleftharpoondown, underbar,%
+      SetOverArrowsMethod,%
+    },
+    index       = [2][texcs2],%
+    indexstyle  = [2]\indexmacro,%
+    texcs       = [3]{% lengths
+      overarrowlength, overarrowthickness, overarrowsmallerthickness,%
+    },
+    index       = [3][texcs3],%
+    indexstyle  = [3]\indexlength,%
+    texcs       = [4]{% internal macros
+      ovar at rightarrow, ovar at leftarrow, ifovar at option@oldarrows@,
+      ifovar at option@esvect@, ifovar at option@tikz@, ifovar at option@pstarrows@,
+      ifovar at detectsubscripts@, ifovar at option@debug@,
+      ifovar at option@overrightarrow@, ifovar at option@underrightarrow@,
+      ifovar at option@overleftarrow@, ifovar at option@underleftarrow@,
+      ifovar at option@overleftrightarrow@, ifovar at option@underleftrightarrow@,
+      ifovar at option@overrightharpoonup@, ifovar at option@underrightharpoonup@,
+      ifovar at option@overrightharpoondown@, ifovar at option@underrightharpoondown@,
+      ifovar at option@overleftharpoonup@, ifovar at option@underleftharpoonup@,
+      ifovar at option@overleftharpoondown@, ifovar at option@underleftharpoondown@,
+      ifovar at option@overbar@, ifovar at option@underbar@, ovar at set, ovar at length@min,
+      ovar at before@arrow, ovar at after@arrow, ovar at macro@stack, ovar at macro@arrow,
+      ovar at set@, ovar at shift@left, ovar at shift@right, ovar at stack@fill,
+      ovar at stackunder@fill, ovar at stack@lens, ovar at stackunder@lens,
+      ovar at macro@arrowfill, ovar at arrow@fill, ovar at arrow@start, ovar at trim@start,
+      ovar at trim@middle, ovar at arrow@middle, ovar at trim@end, ovar at arrow@end,
+      ovar at tikz@command, ovar at tikz@pathoptions, ovar at tikz@path,
+      ovar at tikz@options, ovar at picture@geometry, ovar at picture@linethickness,
+      ovar at picture@command, ovar at extralength, ovar at tempdim, ovar at set@arrowlength,
+      ovar at set@arrowthickness, ovar at stackover@@, ovar at stackunder@@,
+      ovar at stackover@, ovar at stackunder@, ovar at stackover@fill,
+      ovar at stackover@lens, ovar at set@common, ovar at starversion,
+      ovar at testmathstyles, ovar at row@teststyle,%
+    },
+    index       = [4][texcs4],%
+    indexstyle  = [4]\indexmacrointernal,%
+    moretexcs   = [5]{% other macros
+      Relbar, relbareda, relbaredd, rightarrow, Rightarrow, varleftarrow,
+      varrightarrow, twoheadrightarrow,%
+    },
+  }
+  \csname\@lst @SetFirstNumber\endcsname
+}{%
+  \csname \@lst @SaveFirstNumber\endcsname
+}
+\DeclareDocumentEnvironment{macro}{m}{%
+ \count@\escapechar \escapechar=-1
+ \edef\macroname{\string#1}
+ \escapechar\count@
+ \marginpar{%
+   \parbox{0.88\linewidth}{%
+     \scriptsize\flushright\ifcsdef{r at com:\macroname}{\refCom*{\macroname}}{\cs{\macroname}}%
+   }%
+ }
+}{% end of macro environment
+}
+\def\refDoc#1{\tcb at ref@doc{#1}}
+\newcommand{\pkg}[1]{\textsf{#1}}
+\newrobustcmd{\tcbIndexPrintOptionCA}[1]{% adapted from \tcbIndexPrintKeyCA
+  \tcb at Index@Print at CA{#1}{ovar_options}{package option}%
+}
+\newrobustcmd{\tcbIndexPrintOptionC}[1]{% adapted from \tcbIndexPrintKeyCA
+  \tcb at Index@Print at C{#1}{ovar_options}%
+}
+\DeclareDocumentEnvironment{docOption}{ O{} m }{%
+  \begin{docKey*}[]
+    [doc name={#2}, doc label={opt:#2}, color key=ovar_options, #1]
+    {#2}{}{}%
+    \kvtcb at index@command{%
+      \kvtcb at doc@sortindex\idx at actual\tcbIndexPrintOptionCA{#2}%
+    }%
+    \kvtcb at index@command{%
+      {Package options}\idx at level\kvtcb at doc@sortindex\idx at actual%
+      \tcbIndexPrintOptionC{#2}%
+    }%
+}{%
+  \end{docKey*}%
+}
+\def\refOpt{\refDoc{key:opt}}
+\let\tcbdocLength\docLength% save original definition
+\DeclareDocumentEnvironment{docLength}{ O{} m }{%
+  \begin{docCommand*}[doc name=#2, color command=ovar_lengths,#1]{#2}{}
+    \protected at edef\@currentlabel{\cs{#2}}%
+    \label{len:#2}%
+    %% add length index entry (from \docLength original definition)
+    \kvtcb at index@command{%
+      \kvtcb at doc@sortindex\idx at actual\tcbIndexPrintLenCA{\kvtcb at doc@index}%
+    }%
+    \kvtcb at index@command{%
+      \kvtcb at text@lengths\idx at level\kvtcb at doc@sortindex\idx at actual%
+      \tcbIndexPrintLenC{\kvtcb at doc@index}%
+    }%
+}{%
+  \end{docCommand*}%
+}
+\def\refLen{\refDoc{len}}
+\endinput
+%%
+%% End of file `overarrows-doc.sty'.


Property changes on: trunk/Master/texmf-dist/doc/latex/overarrows/overarrows-doc.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/overarrows/overarrows.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/overarrows/overarrows.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/overarrows/overarrows.pdf	2023-01-20 22:31:29 UTC (rev 65598)
+++ trunk/Master/texmf-dist/doc/latex/overarrows/overarrows.pdf	2023-01-20 23:02:46 UTC (rev 65599)

Property changes on: trunk/Master/texmf-dist/doc/latex/overarrows/overarrows.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/overarrows/overarrows.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/overarrows/overarrows.dtx	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/overarrows/overarrows.dtx	2023-01-20 23:02:46 UTC (rev 65599)
@@ -0,0 +1,3703 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2023 by Julien Labbé <Julien.Labbe at univ-grenoble-alpes.fr>
+%
+% This file may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this license or
+% (at your option) any later version. The latest version of this license is in
+% the file https://www.latex-project.org/lppl.txt
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{overarrows.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{overarrows}
+%<*package>
+[2023/01/19 v1.0.1 Custom extensible arrows over math expressions]
+%</package>
+%
+%<*driver>
+\documentclass[nohyperref]{ltxdoc}
+
+\usepackage{overarrows-doc} %^^A defined at end of this file, with guard <docstyle>
+\usepackage[old-arrows, esvect, tikz, pstarrows, allcommands]{overarrows}
+
+\EnableCrossrefs
+\PageIndex
+% \CodelineIndex
+\RecordChanges
+% \OnlyDescription
+
+%% symbols
+\newcommand*{\symb}[1]{\colorbox{yellow!50}{\rule{0pt}{1ex}$#1$}}
+
+%% Arrows used in doc
+\usepackage{amssymb}% for \twoheadrightarrow
+\NewOverArrowCommand{amsoverrightarrow}{amsmath=strict, end={\rightarrow}}
+\NewOverArrowCommand{overrightnewarrow}{%
+    amsmath, middle config=relbar,  end=\rightarrow,
+    right arrow,
+  }
+\DeclareMathSymbol{\fldra}{\mathrel}{esvector}{'021}
+\DeclareMathSymbol{\fldrb}{\mathrel}{esvector}{'022}
+\DeclareMathSymbol{\fldrc}{\mathrel}{esvector}{'023}
+\DeclareMathSymbol{\fldrd}{\mathrel}{esvector}{'024}
+\DeclareMathSymbol{\fldre}{\mathrel}{esvector}{'025}
+\DeclareMathSymbol{\fldrf}{\mathrel}{esvector}{'026}
+\DeclareMathSymbol{\fldrg}{\mathrel}{esvector}{'027}
+\DeclareMathSymbol{\fldrh}{\mathrel}{esvector}{'030}
+\NewOverArrowCommand{esveca}{esvect=strict, end={\fldra}}
+\NewOverArrowCommand{esvecb}{esvect=strict, end={\fldrb}}
+\NewOverArrowCommand{esvecc}{esvect=strict, end={\fldrc}}
+\NewOverArrowCommand{esvecd}{esvect=strict, end={\fldrd}}
+\NewOverArrowCommand{esvece}{esvect=strict, end={\fldre}}
+\NewOverArrowCommand{esvecg}{esvect=strict, end={\fldrg}}
+\NewOverArrowCommand{esvech}{esvect=strict, end={\fldrh}}
+\NewOverArrowCommand{vva}{esvect, middle config=auto, end=\fldra}
+\NewOverArrowCommand{esvecf}{esvect=strict, end={\fldrf}}
+\NewOverArrowCommand{vvb}{esvect, middle config=auto, end=\fldrb}
+\NewOverArrowCommand{vvc}{esvect, middle config=auto, end=\fldrc}
+\NewOverArrowCommand{vvd}{esvect, middle config=auto, end=\fldrd}
+\NewOverArrowCommand{vve}{esvect, middle config=auto, end=\fldre}
+\NewOverArrowCommand{vvf}{esvect, middle config=auto, end=\fldrf}
+\NewOverArrowCommand{vvg}{esvect, middle config=auto, end=\fldrg}
+\NewOverArrowCommand{vvh}{esvect, middle config=auto, end=\fldrh}
+
+\makeatletter
+\newcommand{\unsetoldarrows}{
+  \let\ovar at rightarrow\rightarrow
+  \let\ovar at leftarrow\leftarrow
+}
+\newcommand{\setoldarrows}{
+  \let\ovar at rightarrow\varrightarrow
+  \let\ovar at leftarrow\varleftarrow
+}
+\makeatother
+
+\begin{document}
+
+\DocInput{overarrows.dtx}
+
+\PrintIndex
+\PrintChanges
+
+\end{document}
+%</driver>
+% \fi
+%
+% \changes{v1.0}{2023/01/18}{Initial version}
+%
+% \GetFileInfo{\jobname.dtx}
+%
+% \title{The \pkg{overarrows} package\thanks{This document
+% corresponds to \pkg{overarrows}~\fileversion, dated \filedate.}}
+% \author{Julien Labb\'e \\ \texttt{Julien.Labbe at univ-grenoble-alpes.fr}}
+%
+% \maketitle
+%
+% \begin{abstract}
+%   A \LaTeX{} package to create custom arrows over math expressions, mainly for
+%   vectors (but arrows can as well be drawn below). Arrows stretch with
+%   content, scale with math styles, and have a correct kerning when a subscript
+%   follows.
+%
+% \bigskip
+%
+% Short example:
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand{overrightharpoon}{%
+  end=\rightharpoonup
+}
+
+\begin{align*}
+  &\overrightharpoon{v} && \overrightharpoon{v}_{subscript} \\
+  &\overrightharpoon{ABCD} && \overrightharpoon*{v}_{subscript}
+\end{align*}
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+%\bigskip
+%
+% Predefined commands are also provided:
+% \begin{itemize}
+%  \item to typeset vectors:
+%   $$ \vv{v} \qquad \vv{AB}, $$
+%
+% \item to draw arrows of various shapes above math expressions:
+% \begin{align*}
+%   \overrightarrow{AB}
+%   && \overleftarrow{AB}
+%   && \overleftrightarrow{AB}
+%   && \overrightharpoonup{AB}
+%   && \overleftharpoonup{AB}
+%   && \overrightharpoondown{AB}
+%   && \overleftharpoondown{AB}
+%   && \overbar{AB},
+% \end{align*}
+%
+% \item to draw arrows of various shapes under math expressions:
+% \begin{align*}
+%   \underrightarrow{AB}
+%   && \underleftarrow{AB}
+%   && \underleftrightarrow{AB}
+%   && \underrightharpoonup{AB}
+%   && \underleftharpoonup{AB}
+%   && \underrightharpoondown{AB}
+%   && \underleftharpoondown{AB}
+%   && \underbar{AB}.
+% \end{align*}
+% \end{itemize}
+%
+% \end{abstract}
+%
+% \clearpage
+%
+% \tableofcontents{}
+%\clearpage
+%
+% \section{Presentation of the package}
+% \label{sec:package-description}
+%
+% The \pkg{overarrows} package allows to create commands for drawing arrows over
+% math expressions. These arrows:
+% \begin{itemize}
+%  \item are fully customisable, at command definition, through a key-value
+%   interface;
+%  \item stretch with the content and can cover many characters, like in $\vv{AB}$;
+%  \item scale with math styles\footnotemark{}, like in
+%  $\vv*{v}_{\vv*{u}_{\vv*{w}}}$.
+% \footnotetext{\cs{displaystyle}, \cs{textstyle},  \cs{scriptstyle} and
+% \cs{scriptscriptstyle}.}
+% \end{itemize}
+%
+% Commands created with the \pkg{overarrows} package are provided with a starred
+% variant, that removes the extra end space generated by the arrow. This is
+% particularly useful when the command is followed by a subscript. For example,
+% the velocity of the center of mass can be written with exactly the same
+% kerning when scalar $v_{\text{cm}}$ or vector $\vv*{v}_{\text{cm}}$ (no extra
+% space before the subscript, unlike the output of the unstarred variant:
+% $\vv{v}_{\text{cm}}$).
+%
+% The \pkg{overarrows} package was primitively written for vectors, but in
+% a highly customisable way. It can be used to define a large variety of arrows,
+% using math symbols, or PGF/TikZ commands. It's also possible to create
+% commands that draw the arrows under. Some predefined commands are provided,
+% giving\footnotemark{}, for arrow over:
+% \footnotetext{Displayed here with the \refOpt{old-arrows} option.}
+% \begin{align*}
+%   \overrightarrow{\alpha+\beta}
+%   && \overleftarrow{\alpha+\beta}
+%   && \overleftrightarrow{\alpha+\beta}
+%   && \overrightharpoonup{\alpha+\beta}
+%   && \overleftharpoonup{\alpha+\beta}
+%   && \overrightharpoondown{\alpha+\beta}
+%   && \overleftharpoondown{\alpha+\beta}
+%   && \overbar{\alpha+\beta}
+% \end{align*}
+% and for arrow under :
+% \begin{align*}
+%   \underrightarrow{\alpha+\beta}
+%   && \underleftarrow{\alpha+\beta}
+%   && \underleftrightarrow{\alpha+\beta}
+%   && \underrightharpoonup{\alpha+\beta}
+%   && \underleftharpoonup{\alpha+\beta}
+%   && \underrightharpoondown{\alpha+\beta}
+%   && \underleftharpoondown{\alpha+\beta}
+%   && \underbar{\alpha+\beta}.
+% \end{align*}
+%
+% \section{Introduction}
+%
+% \subsection{Vector arrows}
+%
+% Vectors are commonly typeset in bold face, or with an arrow
+% above\footnotemark{}. For this second convention, \TeX/\LaTeX provides the
+% command \cs{vec}, which accents its content (using the \cs{mathaccent}
+% command) with the character~\symb{\mathchar "017E\relax}
+% (\cs{mathchar}|"017E| in Computer Modern font).
+% But \symb{\mathchar "017E\relax} isn't extensible, and gives: $\vec{v}$,
+% $\vec{AB}$ or $\vec{\text{grad}}$ (there's no command \cs{widevec} analogous
+% to \cs{widehat}).
+%
+% \footnotetext{See, for example: International Organization for
+% Standardization. (2019). \emph{Quantities and units -- Part 2: Mathematics}
+% (ISO Standard No. 80000-2:2019).
+% \url{https://www.iso.org/standard/64973.html}.}
+%
+% An extensible alternative is given by the command \cs{overrightarrow},
+% available in \TeX/\LaTeX, and which is redefined by the commonly used
+% \pkg{amsmath} package. But its arrow, built with the \cs{rightarrow} symbol
+% \symb{\rightarrow}, is too large with the default \emph{Computer Modern} font:
+% $\amsoverrightarrow{AB}$. Another alternative is the \pkg{esvect} package,
+% which provides the \cs{vv} command and a set of custom arrows: $\esveca{AB}$,
+% $\esvecb{AB}$, $\esvecc{AB}$, $\esvecd{AB}$, $\esvece{AB}$, $\esvecf{AB}$,
+% $\esvecg{AB}$, $\esvech{AB}$.
+%
+% \subsection{Stack and arrow macros}
+%
+% It worth looking at the definition of \pkg{amsmath} \cs{overrightarrow}
+% command:
+% \iffalse
+%<*example>
+% \fi
+\begin{dispListing}
+  \long macro:->\mathpalette {\overarrow@ \rightarrowfill@ }
+\end{dispListing}
+% \iffalse
+%</example>
+% \fi
+% \noindent Three macros are used here:
+% \begin{description}
+%    \item[\cs{mathpalette}] adapts the output to the current math style;
+%    \item[\cs{overarrow@}] is the \emph{stack macro}, that puts the arrow above
+%    the content;
+%    \item[\cs{rightarrowfill@}] is the \emph{arrow macro}, that holds the
+%    content of the arrow.
+% \end{description}
+% The command \cs{vv} from \pkg{esvec} is defined with a very similar way, using
+% its own stack macro (\cs{overvect@}) and arrow macro (\cs{vectfill@}).
+%
+% \medskip
+%
+% The \pkg{overarrows} package uses the same mechanism. Arrow and stack macros
+% are set, at command creation, through a key-value interface provided by the
+% \pkg{pgfkeys} package (after creation, however, the command definition is
+% static and the key-value interface is not used).
+%
+% \subsection{Extensible arrows}
+% \label{sec:extensible-arrows}
+%
+% Arrows drawn by the commands \cs{overrightarrow} or \cs{vv} are built by
+% joining math symbols, and made extensible by repetition of the central
+% symbol\footnotemark{}. Thus, the line of the macro \cs{overrightarrow} is made
+% by repetition of command \cs{relbar} \symb{\relbar} (which simply corresponds
+% to the minus sign), while \cs{vv} use its own command \cs{relbareda}
+% \symb{\relbareda}.
+%
+%\footnotetext{Using the \TeX{} \cs{cleaders} command.}
+%
+% This method may generate some undesirable spacing issues, when symbols
+% badly overlap. See, for example, the output of \pkg{amsmath}
+% \cs{overrightarrow} (left) and \pkg{esvect} \cs{vv} (right) in
+% \cs{scriptscriptstyle} math style (scaled by a factor~ 4):
+% \begin{center}
+%   \scalebox{4}{$\scriptscriptstyle \amsoverrightarrow{long~vector}$}
+%   \qquad
+%   \scalebox{4}{$\scriptscriptstyle \esvectvv{long~vector}$}.
+% \end{center}
+% While the arrow on the left lets guess where the symbols \symb{\relbar}
+% overlap, the arrow on the right present unwanted spaces and show clearly its
+% composition as association of the symbols \symb{\relbaredd}, \symb{\relbareda}
+% and \symb{\fldr}.
+%
+% \medskip
+%
+% By default, the \pkg{overarrows} package uses the same mechanism to extend
+% arrows according to their contents. Settings and tools are provided to perform
+% fine tuning and avoid spacing issues. As example, see below the
+% \cs{overrightarrow} and \cs{vv} commands, as redefined by \pkg{overarrows} (in
+% \cs{scriptscriptstyle} and scaled by a factor~4):
+% \begin{center}
+%   \scalebox{4}{$\scriptscriptstyle \overrightnewarrow{long~vector}$}
+%   \qquad
+%   \scalebox{4}{$\scriptscriptstyle \vv{long~vector}$}
+% \end{center}
+%
+% The \pkg{overarrows} package also provides an alternative mechanism.
+% When used, the length \cs{overarrowlength} is set, according to the arrow
+% command content, and can be employed, for example, to draw arrows using
+% PGF/TikZ or the \LaTeX{} picture environment.
+%
+% \section{Quick start}
+%
+% \subsection{Loading the package \pkg{overarrows}}
+%
+% To load the \pkg{overarrows}, simply add in preamble, before the
+% ``\cs{begin}|{document}|":
+% \iffalse
+%<*example>
+% \fi
+\begin{dispListing}
+\usepackage{overarrows}
+\end{dispListing}
+% \iffalse
+%</example>
+% \fi
+%
+% Options can be given, in a comma-separated list. For example, to use the
+% predefined commands shown in the section~\ref{sec:package-description},
+% page~\pageref{sec:package-description}, write:
+% \iffalse
+%<*example>
+% \fi
+\begin{dispListing}
+\usepackage[allcommands, old-arrows]{overarrows}
+\end{dispListing}
+% \iffalse
+%</example>
+% \fi
+% \noindent This define the commands (described in
+% section~\ref{sec:predefined-commands},
+% page~\pageref{sec:predefined-commands}):
+% \begin{center}
+% \begin{minipage}{0.5\linewidth}
+%   \begin{itemize}
+%   \item \refCom{overrightarrow}
+%   \item \refCom{overleftarrow}
+%   \item \refCom{overleftrightarrow}
+%   \item \refCom{overrightharpoonup}
+%   \item \refCom{overrightharpoondown}
+%   \item \refCom{overleftharpoonup}
+%   \item \refCom{overleftharpoondown}
+%   \item \refCom{overbar}
+%   \end{itemize}
+% \end{minipage}\hfill
+% \begin{minipage}{0.5\linewidth}
+%   \begin{itemize}
+%   \item \refCom{underrightarrow}
+%   \item \refCom{underleftarrow}
+%   \item \refCom{underleftrightarrow}
+%   \item \refCom{underrightharpoonup}
+%   \item \refCom{underrightharpoondown}
+%   \item \refCom{underleftharpoonup}
+%   \item \refCom{underleftharpoondown}
+%   \item \refCom{underbar}
+%   \end{itemize}
+% \end{minipage}
+% \end{center}
+% Note that the \refOpt{old-arrows} option may give bad results, if math fonts
+% have been changed. Simply remove the option in this case.
+%
+% Many other options are available. See the complete list,
+% page~\pageref{sec:package-options}.
+%
+% \subsection{Commands creation}
+%
+% Commands are created with \refCom{NewOverArrowCommand}. This macro take two
+% mandatory arguments : the name of the command (without backslash), and the
+% arrow configuration as comma-separated list of key-values. By default, a right
+% arrow is set:
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand{myovercmd}{}
+$\myovercmd{test}$
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+% \noindent Commands are defined with a starred variant, designed to handle
+% subscripts:
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+$ v_{sub} \qquad \myovercmd{v}_{sub} \qquad \myovercmd*{v}_{sub} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Start and end of the arrow}
+%
+% Extremities of the arrow are set by the keys \refKey{start} and \refKey{end}.
+% For example, an arrow starting with a hook (symbols \cs{lhook} \symb{\lhook})
+% and ending with two heads (symbol \cs{twoheadrightarrow}
+% \symb{\twoheadrightarrow}) is defined by:
+% \iffalse
+%<*example>
+% \fi
+\begin{dispListing}
+\NewOverArrowCommand{overhooktwoheadrightarrow}{%
+  start=\lhook, end=\twoheadrightarrow,
+}
+\end{dispListing}
+% \iffalse
+%</example>
+% \fi
+% \noindent Note that \cs{twoheadrightarrow} must be defined, as it is not in
+% \LaTeX{}. This can be done with the package \pkg{amssymb}, by adding in
+% preamble:
+% \iffalse
+%<*example>
+% \fi
+\begin{dispListing}
+\usepackage{amssymb}
+\end{dispListing}
+% \iffalse
+%</example>
+% \fi
+% With the previous definition, the result of the command
+% \cs{overhooktwoheadrightarrow} is faulty:
+% \iffalse
+%<*example>
+% \fi
+\NewOverArrowCommand{overhooktwoheadrightarrow}{%
+  start=\lhook, end=\twoheadrightarrow,
+}
+\begin{dispExample}
+$ \overhooktwoheadrightarrow{v} \qquad \overhooktwoheadrightarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+% \noindent The problem comes from symbols junction and the trimming used to
+% obtain their overlap. It can be solved with the keys \refKey{trim start} and
+% \refKey{trim end}, which are numbers and set the corresponding trimming in
+% math units (typically |1/18 em|). Appropriate values gives better results:
+% \iffalse
+%<*example>
+% \fi
+\csundef{overhooktwoheadrightarrow}
+\begin{dispExample}
+\NewOverArrowCommand{overhooktwoheadrightarrow}{%
+  start=\lhook, end=\twoheadrightarrow,
+  trim start=1.5, trim end=2,
+}
+$ \overhooktwoheadrightarrow{v} \qquad \overhooktwoheadrightarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% \medskip
+%
+% If the math font differs from the default \emph{Computer Modern}, the central
+% part of the arrow may have inappropriate position or line width. This is
+% because the default symbol used for the arrow line is \cs{relbareda}
+% \symb{\relbareda} from the \pkg{esvect} package. If needed, try to set the
+% \refKey{middle} key with the symbol \cs{relbar} \symb{\relbar}. The trimming
+% should also be adapted:
+% \iffalse
+%<*example>
+% \fi
+\csundef{overhooktwoheadrightarrow}
+\begin{dispExample}
+\NewOverArrowCommand{overhooktwoheadrightarrow}{%
+  start=\lhook, end=\twoheadrightarrow, middle=\relbar, %
+  trim start=0, trim end=3, trim middle=5,
+}
+$ \overhooktwoheadrightarrow{v} \qquad \overhooktwoheadrightarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% Finding the correct values for \refKey{trim start}, \refKey{trim end} and
+% \refKey{trim middle} may need many trials. For this purpose, the macro
+% \refCom{TestOverArrow} displays the result of a command for different lengths
+% and math styles:
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\TestOverArrow{overhooktwoheadrightarrow}
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Size and position of the arrow}
+%
+% A command \cs{OverRightarrow}, built with the symbols \cs{Relbar}
+% \symb{\Relbar} and \cs{Rightarrow} \symb{\Rightarrow}, gives:
+%\iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand{OverRightarrow}{%
+  start=\Relbar,
+  middle=\Relbar,
+  end=\Rightarrow,
+  trim=4,
+}
+$ \OverRightarrow{v} \qquad \OverRightarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%\noindent The key \refKey{trim} sets \refKey{trim start}, \refKey{trim middle} and
+%\refKey{trim end} with the same value.
+%
+% The previous arrow is visually too big. The macro \refCom{smallermathstyle}
+% allows to obtain a better result:
+% \iffalse
+%<*example>
+% \fi
+\csundef{OverRightarrow}
+\begin{dispExample}
+\NewOverArrowCommand{OverRightarrow}{%
+  start={\smallermathstyle\Relbar},
+  middle={\smallermathstyle\Relbar},
+  end=\Rightarrow,
+  trim=4,
+}
+$ \OverRightarrow{v} \qquad \OverRightarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+% \noindent Note that \refCom{smallermathstyle} should not be used for
+% \refKey{end}, because this last is formatted with the same math style as
+% \refKey{start}.
+%
+% It would be better to add an extra space between the arrow and the content of
+% the command. This can be done with the key \refKey{space after arrow}:
+% \iffalse
+%<*example>
+% \fi
+\csundef{OverRightarrow}
+\begin{dispExample}
+\NewOverArrowCommand{OverRightarrow}{%
+  start={\smallermathstyle\Relbar},
+  middle={\smallermathstyle\Relbar},
+  end=\Rightarrow,
+  trim=4,
+  space after arrow=0.25ex,
+}
+$ \OverRightarrow{v} \qquad \OverRightarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% \medskip
+%
+% Default arrows are slightly shifted to the right. For a left arrow, this
+% should be reversed, using the keys \refKey{shift left} and \refKey{shift
+% right}. These keys set the corresponding shifts, in math units. Example:
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand{OverLeftarrow}{%
+  start={\smallermathstyle\Leftarrow},
+  middle={\smallermathstyle\Relbar},
+  end=\Relbar,
+  trim=4,
+  space after arrow=0.25ex,
+  shift left=0, shift right=2,
+}
+$ \OverLeftarrow{v} \qquad \OverLeftarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% \medskip
+%
+% Finally, the key \refKey{arrow under} places the arrow below the content,
+% instead of above (and \refKey{space before arrow} sets the space upon it):
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand{OverLeftRightarrow}{%
+  start={\smallermathstyle\Leftarrow},
+  middle={\smallermathstyle\Relbar},
+  end=\Rightarrow,
+  trim=4,
+  arrow under,
+  space before arrow=0.5ex,
+  shift left=0, shift right=0,
+}
+$ \OverLeftRightarrow{v} \qquad \OverLeftRightarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Symbols assemblage}
+%
+% Many \LaTeX{} math symbols are built by assemblage, using the macro
+% \cs{joinrel}\footnotemark{} which remove 3 math units of horizontal space.
+% The \pkg{overarrows} package provides a flexible version of \cs{joinrel},
+% called \refCom{xjoinrel}, which remove an arbitrary number of math units,
+% given as optional argument.
+%
+%\footnotetext{For example, the symbol \cs{models}
+% \smash{\symb{\models}} is defined as
+% \cs{mathrel}\texttt{\{\textbar\}}\cs{joinrel}\cs{Relbar} and corresponds to
+% the assemblage of a  vertical line \symb{\vert} and the symbol \cs{Relbar}
+% \symb{\Relbar}. The command \cs{mathrel} modifies the spacing according to the
+% math relation class ; \cs{Relbar} corresponds to the equal sign (it's
+% definition is \cs{mathrel}\texttt{\{=\}}).}
+%
+% Symbols association is then simple. As example, one can define a triple tail
+% macro \cs{tttail} from the symbol \cs{succ} \symb{\succ}:
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\newcommand*{\tttail}{\succ\xjoinrel[10]\succ\xjoinrel[10]\succ}
+$ \tttail $
+\end{dispExample}
+\newcommand*{\tttail}{\succ\xjoinrel[10]\succ\xjoinrel[10]\succ}
+% \iffalse
+%</example>
+% \fi
+% \noindent Thus defined, the macro \cs{tttail} can be used in arrow definition:
+%\iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand{overtttailrightarrow}{%
+  start={\tttail},
+  end={\rightarrow},
+  trim start=12,
+  shift left=0, shift right=0,
+  space after arrow=.2ex,
+  min length=24,
+}
+$ \overtttailrightarrow{v} \qquad \overtttailrightarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+% \noindent Here the \refKey{min length} key was added to ensure a minimum length
+% (in math units) when the content of the command is small (as for a single
+% character).
+%
+% \medskip
+%
+% The previous arrow would be better with a smaller tail, and this can be done
+% with the macro \refCom{smallermathstyle}. But a small tail and a normal sized
+% head are not aligned; as |{\smallermathstyle\tttail}\xjoinrel[8]\rightarrow}|
+% gives:
+% \begin{center}
+%      \scalebox{2}{${\smallermathstyle\tttail}\xjoinrel[8]\rightarrow$}
+% \end{center}
+% \noindent The solution comes from the command \cs{vcenter} which centers
+% materials on math axis. The tail must then be wrapped in a \cs{hbox}:
+% \iffalse
+%<*example>
+% \fi
+\csundef{overtttailrightarrow}
+\begin{dispExample}
+\NewOverArrowCommand{overtttailrightarrow}{%
+  start={\vcenter{\hbox{$\smallermathstyle\tttail$}}},
+  end={\rightarrow},
+  trim start=12,
+  shift left=0, shift right=0,
+  space after arrow=.2ex,
+  min length=24,
+}
+$ \overtttailrightarrow{v} \qquad \overtttailrightarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% \medskip
+%
+% Text symbols, namely symbols that are not defined in math mode, can also be
+% used. They should yet be enclosed in the \cs{text} macro, from the
+% \pkg{amsmath} package, to be correctly displayed and correctly scaled
+% according to math style. With, for example, the arrow heads given by the
+% symbols 40 and 41 of the \emph{lasy} font:
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\newcommand*{\leftarrowhead}{\usefont{U}{lasy}{m}{n}\symbol{40}}
+\newcommand*{\righttarrowhead}{\usefont{U}{lasy}{m}{n}\symbol{41}}
+\NewOverArrowCommand{overrightleftarrow}{%
+  start=\text{\righttarrowhead},
+  end=\text{\leftarrowhead},
+  trim start=0.7,  trim end=0.7,
+  min length=20,
+  shift leftright=-2,
+}
+$ \overrightleftarrow{AB} \qquad \scriptstyle\overrightleftarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Drawing the arrow with TikZ}
+%
+% In addition to the default method presented previously (assemblage of symbols,
+% as described in section~\ref{sec:extensible-arrows},
+% page~\pageref{sec:extensible-arrows}), the \pkg{overarrows} package has an
+% alternative method to draw the arrow. This one allows the use of graphic
+% languages such as PGF/TikZ.
+%
+% Drawing arrows with TikZ requires to load the \pkg{tikz} package and its
+% library |arrows.meta|. This can be simply done by passing the \refOpt{tikz}
+% option to the \pkg{overarrows} package\footnotemark{}:
+%
+% \footnotetext{Note that the \refOpt{tikz} option isn't mandatory to use TikZ
+% commands in \pkg{overarrows}. The \pkg{tikz} package and its library
+% |arrows.meta| can be loaded independently.}
+% \iffalse
+%<*example>
+% \fi
+\begin{dispListing}
+\usepackage[tikz]{overarrows}
+\end{dispListing}
+% \iffalse
+%</example>
+% \fi
+%
+% \medskip
+%
+% To use PGF/TikZ language, the optional argument |tikz| must be passed to
+% \refCom{NewOverArrowCommand} . TikZ picture are not extensible. That's why the
+% \pkg{overarrows} package provides three lengths that can be used in TikZ
+% commands:
+% \begin{itemize}
+%  \item \refCom{overarrowlength} for the arrow length,
+%  \item \refCom{overarrowthickness} and \refCom{overarrowsmallerthickness} for
+%   the arrow thickness.
+% \end{itemize}
+% These lengths are computed at each utilisation of a command created with the
+% |tikz| optional argument.
+%
+% Without any other configuration, a right arrow is drawn:
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand[tikz]{overtikzarrow}{}
+$ \overtikzarrow{v} \qquad \overtikzarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% \medskip
+%
+% Keys to use Tikz are described in section~\ref{sec:tikz-keys},
+% page~\pageref{sec:tikz-keys}. Main keys are: \refKey{tikz options},
+% \refKey{path options} and \refKey{path}. It's also possible to append settings
+% with \refKey{add tikz options} and \refKey{add path options}. The full TikZ
+% command used to draw the arrow can as well be entirely redefined
+% with the key \refKey{tikz command}
+%
+% Here is a example of an arrow drawn with TikZ\footnotemark{}:
+%
+% \footnotetext{TikZ arrows are very powerfull, but much slower to draw than the
+% default method using assemblage of math symbols.}
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand[tikz]{overarchedleftrightarrow}{%
+  add tikz options={y=\overarrowlength},
+  add tikz options={line width={\overarrowsmallerthickness}},
+  path options={arrows={<[scale=0.5]->[scale=0.5]}},
+  path={(0,0) arc (-250:70:0.5 and 0.1)},
+  center arrow,
+  min length=25,
+  space after arrow=0.4ex,
+}
+$ \overarchedleftrightarrow{v} \qquad \overarchedleftrightarrow{ABCD} $
+
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Drawing the arrow with \LaTeX{} picture environment}
+%
+% As well as TikZ, the \LaTeX{} |picture| environment can be used to draw the
+% arrow. For this, the optional argument |picture| must be passed to
+% \refCom{NewOverArrowCommand}. Like for TikZ, the three lengths
+% \refCom{overarrowlength}, \refCom{overarrowthickness} and
+% \refCom{overarrowsmallerthickness} can be used in |picture| commands.
+% By default, a right vector is drawn:
+% \iffalse
+%<*example>
+% \fi
+\ltxarrows%^^A classic arrows
+\begin{dispExample}
+\NewOverArrowCommand[picture]{overpictarrow}{}
+$ \overpictarrow{v} \qquad \overpictarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+% \noindent If \pkg{overarrows} is loaded with the option \refOpt{pstarrows},
+% the package \pkg{pict2e} is used and a PSTricks style vector arrows is set.
+% This gives:
+% \iffalse
+%<*example>
+% \fi
+\pstarrows%^^A pst arrows
+\csundef{overpictarrow}
+\begin{dispExample}
+\NewOverArrowCommand[picture]{overpictarrow}{}
+$ \overpictarrow{v} \qquad \overpictarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% Keys to use \LaTeX{} |picture| environment are described in
+% section~\ref{sec:picture-keys}, page~\pageref{sec:picture-keys}. The main keys
+% are \refKey{picture command}, \refKey{geometry} an \refDoc{key:picture}{line
+% thickness}. Here is an example:
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand[picture]{overbandedarrow}{
+  picture command={%
+    \qbezier
+    (0.0\overarrowlength,0)
+    (0.5\overarrowlength,0)
+    (0.9\overarrowlength,0.2\overarrowlength)
+    \put(0.9\overarrowlength,0.2\overarrowlength)
+    {\vector(2,1){0.2\overarrowlength}}
+  },
+  geometry={(\overarrowlength,0.4\overarrowlength)(0,0)},
+  line thickness={\overarrowsmallerthickness},
+  center arrow,
+  space after arrow=0.4ex,
+}
+$ \overbandedarrow{v} \qquad \overbandedarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% \section{User interface}
+%
+% \subsection{Package options}
+% \label{sec:package-options}
+%
+%
+% The \pkg{overarrows} package accepts many options, given as a comma-separated
+% list \meta{options} at package loading:
+% \cs{usepackage}|[|\meta{options}|]{overarrows}|.
+%
+% The option \refOpt*{esvect} is set by default. This can be overridden with
+% \refOpt*{noesvect}.
+%
+% \subsubsection{\pkg{esvect} configuration}
+% \label{sec:esvect-conf}
+%
+% \begin{docOption}{esvect}
+%   Loads the \pkg{esvect} package and redefines its vector commands \refCom{vv}
+%   through the \pkg{overarrows} mechanism. Original \pkg{esvect} \cs{vv} macro
+%   is still available with \refCom{esvectvv}.
+%
+%   The \pkg{esvect} package provides the symbol \cs{relbareda} \symb{\relbareda}
+%   which is smaller and often more flexible than the classic one \cs{relbar}
+%   \symb{\relbar}. \cs{relbareda} fits with the standard \emph{Computer Modern}
+%   math font, but can be unsuitable with other fonts.
+%
+%   The \pkg{esvect} package also provides the right arrow command \cs{fldr}.
+%   The shape of the arrow depends on the option passed to the \pkg{esvect}
+%   package: \symb{\fldra} (option~|a|), \symb{\fldrb} (option~|b|), \symb{\fldrc}
+%   (option~|c|), \symb{\fldrd} (option~|d|), \symb{\fldre} (option~|e|),
+%   \symb{\fldrf} (option~|f|), \symb{\fldrg} (option~|g|) or \symb{\fldrh}
+%   (option~|h|). Note that by default \pkg{overarrows} loads the \pkg{esvect}
+%   package with the option~|f| (while \pkg{esvect} default is~|d|). This can be
+%   changed with one of the eight options described bellow: \refOpt*{esvecta},
+%   \refOpt*{esvectb}, \refOpt*{esvectc}, \refOpt*{esvectd}, \refOpt*{esvecte},
+%   \refOpt*{esvectf}, \refOpt*{esvectg} and \refOpt*{esvecth}.
+%
+%   This option is set by default and can be unset with \refOpt*{noesvect}.
+% \end{docOption}
+%
+% \begin{docOption}{noesvect}
+%   Prevents the loading of the \pkg{esvect} package and the definition of the
+%   command \refCom{vv}.
+% \end{docOption}
+%
+% \begin{docOption}{esvecta}
+%   Loads the \pkg{esvect} package with the |a| option.
+%
+%   \cs{fldr} corresponds the to the symbol \symb{\fldra}. \cs{vv} command
+%   gives : $\vva{v} \quad \vva{AB} \quad \vva{\mathrm{grad}}$.
+% \end{docOption}
+%
+% \begin{docOption}{esvectb}
+%   Loads the \pkg{esvect} package with the |b| option.
+%
+%   \cs{fldr} corresponds the to the symbol \symb{\fldrb}. \cs{vv} command
+%   gives : $\vvb{v} \quad \vvb{AB} \quad \vvb{\mathrm{grad}}$.
+% \end{docOption}
+%
+% \begin{docOption}{esvectc}
+%   Loads the \pkg{esvect} package with the |c| option.
+%
+%   \cs{fldr} corresponds the to the symbol \symb{\fldrc}. \cs{vv} command
+%   gives : $\vvc{v} \quad \vvc{AB} \quad \vvc{\mathrm{grad}}$.
+% \end{docOption}
+%
+% \begin{docOption}{esvectd}
+%   Loads the \pkg{esvect} package with the |d| option.
+%
+%   \cs{fldr} corresponds the to the symbol \symb{\fldrd}. \cs{vv} command
+%   gives : $\vvd{v} \quad \vvd{AB} \quad \vvd{\mathrm{grad}}$.
+% \end{docOption}
+%
+% \begin{docOption}{esvecte}
+%   Loads the \pkg{esvect} package with the |e| option.
+%
+%   \cs{fldr} corresponds the to the symbol \symb{\fldre}. \cs{vv} command
+%   gives : $\vve{v} \quad \vve{AB} \quad \vve{\mathrm{grad}}$.
+% \end{docOption}
+%
+% \begin{docOption}{esvectf}
+%   Loads the \pkg{esvect} package with the |f| option.
+%
+%   \cs{fldr} corresponds the to the symbol \symb{\fldrf}. \cs{vv} command
+%   gives : $\vvf{v} \quad \vvf{AB} \quad \vvf{\mathrm{grad}}$.
+% \end{docOption}
+%
+% \begin{docOption}{esvectg}
+%   Loads the \pkg{esvect} package with the |g| option.
+%
+%   \cs{fldr} corresponds the to the symbol \symb{\fldrg}. \cs{vv} command
+%   gives : $\vvg{v} \quad \vvg{AB} \quad \vvg{\mathrm{grad}}$.
+% \end{docOption}
+%
+% \begin{docOption}{esvecth}
+%   Loads the \pkg{esvect} package with the |h| option.
+%
+%   \cs{fldr} corresponds the to the symbol \symb{\fldrh}. \cs{vv} command
+%   gives : $\vvh{v} \quad \vvh{AB} \quad \vvh{\mathrm{grad}}$.
+% \end{docOption}
+%
+% \subsubsection{Predefined commands}
+%\label{sec:predefined-commands-opt}
+%
+% The \pkg{overarrows} package provides sixteen predefined commands, eight with
+% the arrow over, and eight with the arrow under. By default, theses commands
+% are not defined, and must be activated by the corresponding option.
+% Beware that commands are created without checking if already defined by
+% another package (\cs{overleftarrow}, \cs{overrightarrow},
+% \cs{overleftrightarrow}, \cs{underleftarrow}, \cs{underrightarrow} and
+% \cs{underleftrightarrow} are, for example, part of the \pkg{amsmath} package).
+%
+% Three options are also available to define set of commands.
+%
+% \medskip
+% \unsetoldarrows
+%
+% \noindent\textbf{Set of commands}
+%
+% \begin{docOption}{allcommands}
+%   Defines all sixteen predefined commands.
+%\end{docOption}
+% \begin{docOption}{overcommands}
+%   Defines all eight predefined commands with arrow over.
+%\end{docOption}
+% \begin{docOption}{undercommands}
+%   Defines all eight predefined commands with arrow under.
+% \end{docOption}
+%
+% \medskip
+%
+% \noindent\textbf{Over arrows}
+%
+% \begin{docOption}{overrightarrow}
+%   Defines the \refCom{overrightarrow} command: $\overrightarrow{v}$,
+%   $\overrightarrow{AB}$, $\overrightarrow{\textrm{grad}}$.
+% \end{docOption}
+% \begin{docOption}{overleftarrow}
+%   Defines the \refCom{overleftarrow} command: $\overleftarrow{v}$, $\overleftarrow{AB}$, $\overleftarrow{\textrm{grad}}$.
+% \end{docOption}
+% \begin{docOption}{overleftrightarrow}
+%   Defines the \refCom{overleftrightarrow} command: $\overleftrightarrow{v}$,
+%   $\overleftrightarrow{AB}$, $\overleftrightarrow{\textrm{grad}}$.
+% \end{docOption}
+% \begin{docOption}{overrightharpoonup}
+%   Defines the \refCom{overrightharpoonup} command: $\overrightharpoonup{v}$,
+%   $\overrightharpoonup{AB}$, $\overrightharpoonup{\textrm{grad}}$.
+% \end{docOption}
+% \begin{docOption}{overrightharpoondown}
+%   Defines the \refCom{overrightharpoondown} command:
+%   $\overrightharpoondown{v}$, $\overrightharpoondown{AB}$,
+%   $\overrightharpoondown{\textrm{grad}}$.
+% \end{docOption}
+% \begin{docOption}{overleftharpoonup}
+%   Defines the \refCom{overleftharpoonup} command: $\overleftharpoonup{v}$,
+%   $\overleftharpoonup{AB}$, $\overleftharpoonup{\textrm{grad}}$.
+% \end{docOption}
+% \begin{docOption}{overleftharpoondown}
+%   Defines the \refCom{overleftharpoondown} command: $\overleftharpoondown{v}$,
+%   $\overleftharpoondown{AB}$, $\overleftharpoondown{\textrm{grad}}$.
+% \end{docOption}
+% \begin{docOption}{overbar}
+%   Defines the \refCom{overbar} command: $\overbar{v}$, $\overbar{AB}$,
+%   $\overbar{\textrm{grad}}$.
+% \end{docOption}
+%
+% \medskip
+%
+% \noindent\textbf{Under arrows}
+%
+% \begin{docOption}{underrightarrow}
+%   Defines the \refCom{underrightarrow} command: $\underrightarrow{v}$,
+%   $\underrightarrow{AB}$, $\underrightarrow{\textrm{grad}}$.
+% \end{docOption}
+% \begin{docOption}{underleftarrow}
+%   Defines the \refCom{underleftarrow} command: $\underleftarrow{v}$,
+%   $\underleftarrow{AB}$, $\underleftarrow{\textrm{grad}}$.
+% \end{docOption}
+% \begin{docOption}{underleftrightarrow}
+%   Defines the \refCom{underleftrightarrow} command: $\underleftrightarrow{v}$,
+%   $\underleftrightarrow{AB}$, $\underleftrightarrow{\textrm{grad}}$.
+% \end{docOption}
+% \begin{docOption}{underrightharpoonup}
+%   Defines the \refCom{underrightharpoonup} command: $\underrightharpoonup{v}$,
+%   $\underrightharpoonup{AB}$, $\underrightharpoonup{\textrm{grad}}$.
+% \end{docOption}
+% \begin{docOption}{underrightharpoondown}
+%   Defines the \refCom{underrightharpoondown} command:
+%   $\underrightharpoondown{v}$, $\underrightharpoondown{AB}$,
+%   $\underrightharpoondown{\textrm{grad}}$.
+% \end{docOption}
+% \begin{docOption}{underleftharpoonup}
+%   Defines the \refCom{underleftharpoonup} command: $\underleftharpoonup{v}$,
+%   $\underleftharpoonup{AB}$, $\underleftharpoonup{\textrm{grad}}$.
+% \end{docOption}
+% \begin{docOption}{underleftharpoondown}
+%   Defines the \refCom{underleftharpoondown} command:
+%   $\underleftharpoondown{v}$, $\underleftharpoondown{AB}$,
+%   $\underleftharpoondown{\textrm{grad}}$.
+% \end{docOption}
+% \begin{docOption}{underbar}
+%   Defines the \refCom{underbar} command: $\underbar{v}$, $\underbar{AB}$,
+%   $\underbar{\textrm{grad}}$.
+% \end{docOption}
+%
+% \subsubsection{Other options}
+%
+% \begin{docOption}{old-arrows}\setoldarrows
+%   Loads the \pkg{old-arrows} package with its option |old|. This provides the
+%   symbols \cs{varleftarrow} \symb{\varleftarrow} and \cs{varrightarrow}
+%   \symb{\varrightarrow}, used then by default for predefined command.
+%
+%   When the \refOpt*{old-arrows} option is set, the commands
+%   \refCom{overrightarrow}, \refCom{overleftarrow},
+%   \refCom{overleftrightarrow}, \refCom{underrightarrow},
+%   \refCom{underleftarrow} and \refCom{underleftrightarrow} give respectively :
+%   $\overrightarrow{AB}$, $\overleftarrow{AB}$, $\overleftrightarrow{AB}$,
+%   $\underrightarrow{AB}$, $\underleftarrow{AB}$ and $\underleftrightarrow{AB}$
+% \end{docOption}
+%
+% \begin{docOption}{tikz}
+%   Loads the package \pkg{tikz} with its library |arrows.meta|.
+%
+%   Note that TikZ arrows, drawn with the |tikz| method, are always available,
+%   even if this option is not set, provided the \pkg{tikz} package and its
+%   library are loaded independently.
+% \end{docOption}
+%
+% \begin{docOption}{pstarrows}
+%   Loads the \pkg{pict2e} package, with its option |pstarrows|. Vectors using
+%   \LaTeX{} |picture| environment gives then \pstarrows$\overpictarrow{AB}$
+%   instead of \ltxarrows$\overpictarrow{AB}$.
+%
+%   Note that this affect all vectors drawn in \LaTeX{} |picture| environments,
+%   and that this setting can be changed on the fly with the commands \cs{pstarrows}
+%   and \cs{ltxarrows} from the \pkg{pict2e} package.
+% \end{docOption}
+%
+% \begin{docOption}{subscripts}
+%   Sets the default value of the key \refKey{detect subscripts} to |true|.
+%
+%   This option also impacts the command \refCom{vv} and all predefined
+%   commands, so that they automatically use their starred variant when
+%   a subscript follows.
+% \end{docOption}
+%
+% \begin{docOption}{debug}
+%   Writes the meaning of defined commands in \LaTeX{} log.
+% \end{docOption}
+%
+% \subsection{Commands}
+%
+% \subsubsection{Macro for commands creation}
+% \label{sec:macro-for-commands-creation}
+%
+% \begin{docCommands}{%
+%   {
+%     doc name=NewOverArrowCommand,
+%     doc parameter=\oarg{method}\marg{name}\marg{keys},
+%   },
+%   {
+%     doc name=RenewOverArrowCommand,
+%     doc parameter=\oarg{method}\marg{name}\marg{keys},
+%   },
+%   {
+%     doc name=ProvideOverArrowCommand,
+%     doc parameter=\oarg{method}\marg{name}\marg{keys},
+%   },
+%   {
+%     doc name=DeclareOverArrowCommand,
+%     doc parameter=\oarg{method}\marg{name}\marg{keys},
+%   },
+% }
+%   Creates the command \cs{\meta{name}} and its starred variant
+%   \cs{\meta{name}*}. The starred variant \cs{\meta{name}*} removes the extra
+%   end space generated by the arrow, which is suitable, as example, when
+%   a subscript follows.
+%
+% \begin{description}
+%   \item[\cs{NewOverArrowCommand}] raises an error if \cs{\meta{name}} is
+%   already defined.
+%
+%   \item[\cs{RenewOverArrowCommand}] raises an error if \cs{\meta{name}} is undefined.
+%
+%   \item[\cs{ProvideOverArrowCommand}] sets \cs{\meta{name}} if the command is
+%   undefined and does nothing if it is already defined, without raising
+%   any error.
+%
+%   \item[\cs{DeclareOverArrowCommand}] sets \cs{\meta{name}}, whether the
+%   command is already defined
+%   or not, without raising any error.
+%   \end{description}
+%
+%   The \meta{method} used to draw the arrow must be:
+%   \begin{description}
+%    \item[|symb|] to draw the arrow by symbols assemblage (default);
+%    \item[|tikz|] to draw the arrow with PGF/TikZ;
+%    \item[|picture|] to draw the arrow with the \LaTeX{}
+%     |picture| environment.
+%   \end{description}
+%   With no \meta{method} argument, the |symb| method is chosen.
+%
+%   \smallskip
+%
+%   \meta{keys} is a comma-separated list of keys-values. Available keys depends
+%   of the \meta{method} chosen and are described in section~\ref{sec:keys},
+%   page~\pageref{sec:keys}.
+%
+%\iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand[tikz]{myoverarrow}{arrows={Bar-Bar}, center arrow}
+$ \myoverarrow{v} \qquad \myoverarrow{ABCD} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+% \end{docCommands}
+%
+% \begin{docCommands}{%
+%   {
+%     doc name=TestOverArrow,
+%     doc parameter=\oarg{pattern}\marg{name},
+%   },
+%   {
+%     doc name=TestOverArrow*,
+%     doc parameter=\oarg{pattern}\marg{name},
+%   },
+% }
+%   Displays the result of the command \meta{name} for patterns of various
+%   lengths and for the four math styles. A custom \meta{pattern} can be added
+%   to the predefined ones.
+%
+%   The starred variant \cs{TestOverArrow*} displays a full report, including
+%   kerning tests of the commands \cs{\meta{name}} and \cs{\meta{name}*} .
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\TestOverArrow*[my~pattern]{vv}
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% \end{docCommands}
+%
+% \subsubsection{Useful macros for symbols assemblage}
+%
+% Math symbols assemblage is the default method used to draw arrows. The macros
+% \refCom*{xjoinrel} and \refCom*{smallermathstyle} are designed to help combine
+% and format math symbols.
+%
+% \begin{docCommand}{xjoinrel}{\oarg{number}}
+%   Removes an horizontal space of \meta{number} math units (|3.5 mu| by
+%   default). Must be used in math mode. Useful to assemble math symbols and
+%   create new ones.
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\newcommand*{\triplebar}{\Relbar\xjoinrel[14]\relbar}
+\newcommand*{\triplebararrow}{\Relbar\xjoinrel[15]\rightarrow}
+\scalebox{2}{$ \triplebar \quad \triplebararrow $} \par
+\scalebox{2}{$ \triplebar\xjoinrel\triplebararrow $}
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+% \end{docCommand}
+%
+% \begin{docCommand}{smallermathstyle}{}
+%   Applies the next math style, smaller than the current. That is:
+% \begin{itemize}
+%     \item sets \cs{scriptstyle} if the current math style is \cs{displaystyle}
+%           or \cs{textstyle};
+%     \item sets \cs{scriptscriptstyle} if the current math style is
+%           \cs{scriptstyle};
+%     \item does nothing if the current math style is \cs{scriptscriptstyle}.
+% \end{itemize}
+%
+%\iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+$ \displaystyle AB \quad \textstyle AB
+ \quad \scriptstyle AB \quad \scriptscriptstyle AB $\par
+$ \displaystyle AB \quad \smallermathstyle AB
+ \quad \smallermathstyle AB \quad \smallermathstyle AB $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% \end{docCommand}
+%
+% \subsubsection{Useful lengths for TikZ or \texttt{picture} environment}
+%
+% Arrows drawn with graphic languages, like PGF/TikZ or the \LaTeX{} |picture|
+% environment, are not extensible. The three lengths \refLen*{overarrowlength},
+% \refLen*{overarrowthickness} and \refLen*{overarrowsmallerthickness} are
+% computed at each utilisation of a command set with the |tikz| or |picture|
+% method, so they can be used in drawing commands.
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample*}{grow to left by=-2em}
+\NewOverArrowCommand[tikz]{overparabola}{%
+  path options={x=\overarrowlength, line width=\overarrowsmallerthickness},
+  path={(0,0) parabola[parabola height=0.2\overarrowlength] (1,0)},
+  arrows={-}, center arrow, min length=30,
+}
+$\displaystyle \overparabola{v} \qquad \overparabola{ABCD} $ \par
+$\scriptstyle \overparabola{v} \qquad \overparabola{ABCD} $ \par
+\end{dispExample*}
+% \iffalse
+%</example>
+% \fi
+%
+% \begin{docLength}{overarrowlength}
+%   Is set to the width of the arrow command content, or, if larger, to the
+%   minimal arrow length set through the key \refKey{min length}.
+% \end{docLength}
+%
+% \begin{docLength}{overarrowthickness}
+%   Is set to the default rule thickness of the current math style. That is:
+%   \begin{itemize}
+%    \item |\fontdimen 8 \textfont 3| in \cs{displaystyle} or \cs{textstyle};
+%    \item |\fontdimen 8 \scriptfont 3| in \cs{scriptstyle};
+%    \item |\fontdimen 8 \scriptscriptfont 3| in
+%     \cs{scriptscriptstyle}.
+%   \end{itemize}
+% \end{docLength}
+%   
+%  \begin{docLength}{overarrowsmallerthickness}
+%    Is set to the default rule thickness of the next smaller math style.
+%    That is:
+%    \begin{itemize}
+%     \item |\fontdimen 8 \scriptfont 3| in \cs{displaystyle} or \cs{textstyle};
+%     \item |\fontdimen 8 \scriptscriptfont 3| in \cs{scriptstyle} or
+%      \cs{scriptscriptstyle}.
+%    \end{itemize}
+%  \end{docLength}
+%
+% \subsubsection{Vectors macros}
+%
+% The macro \cs{vv}, dedicated to vectors, is automatically defined when the
+% option \refOpt{esvect} is set (which is the default). It is a clone of the
+% \cs{vv} command provided by the \pkg{esvect} package, but its starred variant
+% has a correct kerning when followed by a subscript.
+%
+% \begin{docCommands}{%
+%   {
+%     doc name=vv,
+%     doc parameter=\marg{content},
+%   },
+%   {
+%     doc name=vv*,
+%     doc parameter=\marg{content},
+%   },
+% }
+%   Draws a vector arrow upon math \meta{content}. The shape of the arrow
+%   depends on the corresponding options described in
+%   section~\ref{sec:esvect-conf}, page~\pageref{sec:esvect-conf} :
+%   \refOpt{esvecta}, \refOpt{esvectb}, \refOpt{esvectc}, \refOpt{esvectd},
+%   \refOpt{esvecte}, \refOpt{esvectf}, \refOpt{esvectg}, \refOpt{esvecth}.
+%
+%   The starred variant \cs{vv*} suppresses the end space created by the arrow.
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+$ \vv{\imath}_{0}  \quad \vv{e}_r \quad \vv{L}_\Delta $\par
+$ \vv*{\imath}_{0}  \quad \vv*{e}_r \quad \vv*{L}_\Delta $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+%\end{docCommands}
+%
+% \begin{docCommand}{esvectvv}{}
+%   Is simply the backup of the original \pkg{esvect} \cs{vv} command.
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+$ \esvectvv{\imath}_{0}  \quad \esvectvv{e}_{r} \quad \esvectvv{L}_\Delta $\par
+$ \esvectvv*{\imath}{0}  \quad \esvectvv*{e}{r} \quad \esvectvv*{L}{\Delta} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% \end{docCommand}
+%
+% \subsubsection{Predefined commands}
+% \label{sec:predefined-commands}
+%
+% Predefined commands are defined if the corresponding option is set (see
+% section~\ref{sec:predefined-commands-opt},
+% page~\pageref{sec:predefined-commands-opt}). The commands
+% \refCom*{overrightarrow}, \refCom*{overleftarrow},
+% \refCom*{overleftrightarrow}, \refCom*{underrightarrow},
+% \refCom*{underleftarrow} and \refCom*{underleftrightarrow} are affected by the
+% option \refOpt{old-arrows}.
+%
+% \medskip
+%
+% \noindent\textbf{Over arrows}
+%
+%  \begin{docCommand}{overrightarrow}{}
+%    $$\overrightarrow{v} \qquad \overrightarrow{AB} \qquad \overrightarrow{\mathrm{grad}}$$
+%
+%   The shape of the arrow is smaller if the option \refOpt{old-arrows} is set.
+%  \end{docCommand}
+%
+%  \begin{docCommand}{overleftarrow}{}
+%    $$\overleftarrow{v} \qquad \overleftarrow{AB} \qquad \overleftarrow{\mathrm{grad}}$$
+%
+%   The shape of the arrow is smaller if the option \refOpt{old-arrows} is set.
+%  \end{docCommand}
+%
+%  \begin{docCommand}{overleftrightarrow}{}
+%  $$\overleftrightarrow{v} \qquad \overleftrightarrow{AB} \qquad\overleftrightarrow{\mathrm{grad}}$$
+%
+%   The shape of the arrows is smaller if the option \refOpt{old-arrows} is set.%
+%  \end{docCommand}
+%
+%\begin{docCommand}{overrightharpoonup}{}
+%  $$\overrightharpoonup{v} \qquad \overrightharpoonup{AB} \qquad \overrightharpoonup{\mathrm{grad}}$$
+%  \end{docCommand}
+%
+%  \begin{docCommand}{overrightharpoondown}{}
+%  $$\overrightharpoondown{v} \qquad \overrightharpoondown{AB} \qquad \overrightharpoondown{\mathrm{grad}}$$
+%  \end{docCommand}
+%
+%  \begin{docCommand}{overleftharpoonup}{}
+%    $$\overleftharpoonup{v} \qquad \overleftharpoonup{AB} \qquad \overleftharpoonup{\mathrm{grad}}$$
+%  \end{docCommand}
+%
+%  \begin{docCommand}{overleftharpoondown}{}
+%  $$\overleftharpoondown{v} \qquad \overleftharpoondown{AB} \qquad \overleftharpoondown{\mathrm{grad}}$$
+%  \end{docCommand}
+%
+%  \begin{docCommand}{overbar}{}
+%  $$\overbar{v} \qquad \overbar{AB} \qquad \overbar{\mathrm{grad}}$$
+%  \end{docCommand}
+%
+%
+% \medskip
+%
+% \noindent\textbf{Under arrows}
+%
+%  \begin{docCommand}{underrightarrow}{}
+%    $$\underrightarrow{v} \qquad \underrightarrow{AB} \qquad \underrightarrow{\mathrm{grad}}$$
+%
+%   The shape of the arrow is smaller if the option \refOpt{old-arrows} is set.
+%  \end{docCommand}
+%
+%  \begin{docCommand}{underleftarrow}{}
+%    $$\underleftarrow{v} \qquad \underleftarrow{AB} \qquad \underleftarrow{\mathrm{grad}}$$
+%
+%   The shape of the arrow is smaller if the option \refOpt{old-arrows} is set.
+%  \end{docCommand}
+%
+%  \begin{docCommand}{underleftrightarrow}{}
+%  $$\underleftrightarrow{v} \qquad \underleftrightarrow{AB} \qquad \underleftrightarrow{\mathrm{grad}}$$
+%
+%   The shape of the arrows is smaller if the option \refOpt{old-arrows} is set.
+%  \end{docCommand}
+%
+%  \begin{docCommand}{underrightharpoonup}{}
+%  $$\underrightharpoonup{v} \qquad \underrightharpoonup{AB} \qquad \underrightharpoonup{\mathrm{grad}}$$
+%  \end{docCommand}
+%
+%  \begin{docCommand}{underrightharpoondown}{}
+%  $$\underrightharpoondown{v} \qquad \underrightharpoondown{AB} \qquad \underrightharpoondown{\mathrm{grad}}$$
+%  \end{docCommand}
+%
+%  \begin{docCommand}{underleftharpoonup}{}
+%  $$\underleftharpoonup{v} \qquad \underleftharpoonup{AB} \qquad \underleftharpoonup{\mathrm{grad}}$$
+%  \end{docCommand}
+%
+%  \begin{docCommand}{underleftharpoondown}{}
+%  $$\underleftharpoondown{v} \qquad \underleftharpoondown{AB} \qquad \underleftharpoondown{\mathrm{grad}}$$
+%  \end{docCommand}
+%
+%  \begin{docCommand}{underbar}{}
+%  $$\underbar{v} \qquad \underbar{AB} \qquad \underbar{\mathrm{grad}}$$
+%  \end{docCommand}
+%
+% \subsection{Keys}
+%\label{sec:keys}
+%
+% The customisation of arrows is done at command creation through a key-value
+% interface provided by the \pkg{pgfkeys} package (with |/overarrows/| as key
+% path).
+%
+% \subsubsection{Arrow position and length settings}
+%
+% These keys are available whatever the method chosen at command creation (see
+% section~\ref{sec:macro-for-commands-creation},
+% page~\pageref{sec:macro-for-commands-creation} for the documentation of
+% commands creation).
+%
+% \medskip\par\noindent\textbf{Length}
+%
+% \begin{docKey}{min length}{=\marg{number}}
+% {no default, see below for the initial value}
+% Sets the minimal arrow length to \meta{number} math units. The arrow length is
+% set from content width, or, if larger, to this value.
+%
+% The initial value of \refKey*{min length} depends on the \meta{method} chosen
+% at command creation (see section~\ref{sec:macro-for-commands-creation},
+% page~\pageref{sec:macro-for-commands-creation} for the documentation of
+% commands creation):
+% \begin{itemize}
+%  \item \meta{number}| = 0 | for the |symb| method (default);
+%  \item \meta{number}| = 12| for the |tikz| method;
+%  \item \meta{number}| = 18| for the |picture| method.
+% \end{itemize}
+%
+%\iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand{overlongarrow}{min length=50}
+$ \overlongarrow{v} \qquad \overlongarrow{ABCDEF} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%\end{docKey}
+%
+% \medskip\par\noindent\textbf{Placement}
+%
+% \begin{docKeys}{
+%   {
+%       doc name={arrow under},
+%       doc description={default |autoconfig|, initially unset},
+%   },
+%   {
+%       doc name={arrow under},
+%       doc parameter={=autoconfig\textbar noconfig},
+%       doc no index,
+%   }
+% }
+% Places the arrow under, instead of over.
+% \begin{description}
+%  \item[\refKey*{arrow under} or \refKey*{arrow under}|=autoconfig|] also
+%   configures suitably the key \refKey{detect subscripts} to |false| and the
+%   key \refKey{before arrow} to get an additional space over the arrow.
+%  \item[\refKey*{arrow under}|=noconfig|] does not do any
+%   additional configuration.
+% \end{description}
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand{underhooks}{%
+  start={\lhook}, end={\rhook},  trim=1,
+  arrow under, shift leftright=-4,
+}
+$ \underhooks{v} \qquad \underhooks{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+% \end{docKeys}
+%
+% \medskip\par\noindent\textbf{Horizontal shifts}
+%
+% \begin{docKey}{shift left}{=\marg{number}}
+% {no default, initially |2|}
+% Shifts the left side of the arrow by \meta{number} math units (positive number
+% means a shift to the right).
+%\end{docKey}
+%
+% \begin{docKey}{shift right}{=\marg{number}}
+% {no default, see below for the initial value}
+% Shifts the right side of the arrow by \meta{number} math units (positive
+% number means a shift to the left).
+%
+% The initial value of \refKey*{shift right} depends on the \meta{method} chosen
+% at command creation (see section~\ref{sec:macro-for-commands-creation},
+% page~\pageref{sec:macro-for-commands-creation} for the documentation of
+% commands creation):
+% \begin{itemize}
+%  \item \meta{number}| = 0 | for the |symb| method  (default);
+%  \item \meta{number}| = -2| for the |tikz| and |picture| methods.
+% \end{itemize}
+%
+%\end{docKey}
+%
+%\iffalse
+%<*example>
+% \fi
+\begin{dispExample*}{grow to left by=-2em}
+\NewOverArrowCommand{lookback}{%
+  start={\leftarrow}, end={\rightharpoondown},
+  shift left=-50, shift right=-10,
+}
+$ \lookback{\text{look back}} $
+\end{dispExample*}
+% \iffalse
+%</example>
+% \fi
+%
+%
+% \begin{docKey}{shift leftright}{=\oarg{number}}{no default}
+%   Sets \refKey{shift left} and \refKey{shift right} to the same
+%   \meta{number} value.
+%\end{docKey}
+%
+%
+% \begin{docKey}{center arrow}{}{}
+%   Sets \refKey{shift left} and \refKey{shift right} to zero.
+%\end{docKey}
+%
+% \begin{docKey}{left arrow}{}{default |2|}
+%   Sets \refKey{shift left} to zero and \refKey{shift right} to \meta{number}.
+% \end{docKey}
+%
+% \begin{docKey}{right arrow}{}{default |2|}
+%   Sets \refKey{shift right} to zero and \refKey{shift left} to \meta{number}.
+% \end{docKey}
+%
+% \medskip\par\noindent\textbf{Vertical adjunct}
+%
+% \begin{docKeys}{
+%   {
+%       doc name={before arrow},
+%       doc parameter={=\marg{vertical material}},
+%       doc description={initially empty},
+%   },
+%   {
+%       doc name={after arrow},
+%       doc parameter={=\marg{vertical material}},
+%       doc description={initially empty},
+%   },
+% }
+%   Adds the \meta{vertical material} before or after the arrow.
+%
+%   Over and under arrow commands are typeset through the \TeX{} \cs{ialign}
+%   command, which aligns contents, like a tabular. The \meta{vertical material}
+%   is inserted \emph{between} the rows, with \TeX{} \cs{noalign} command.
+%
+%   These keys are essentially used to add some extra space between the arrow
+%   and the content of the command. They can be set in a handier way with the
+%   keys \refKey{space before arrow} and \refKey{space after arrow}.
+% \end{docKeys}
+%
+% \begin{docKey}{space before arrow}{=\marg{length}}{no default}
+%   Adds a space of \meta{length} before the arrow. This sets the keys
+%   \refKey{before arrow}.
+% \end{docKey}
+%
+% \begin{docKey}{space after arrow}{=\marg{length}}{no default}
+%   Adds a space of \meta{length} after the arrow. This sets the keys
+%   \refKey{after arrow}.
+% \end{docKey}
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample*}{grow to left by=-2em}
+\NewOverArrowCommand{overharpoonsdown}{%
+  start=\leftharpoondown, end=\rightharpoondown, center arrow,
+  space before arrow=-0.2ex, space after arrow=0.3ex,
+}
+$ \dot{\overharpoonsdown{v}} \qquad \ddot{\overharpoonsdown{AB}}$
+\end{dispExample*}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection{Subscripts detection setting}
+%
+% This key is available whatever the method chosen at command creation (see
+% section~\ref{sec:macro-for-commands-creation},
+% page~\pageref{sec:macro-for-commands-creation} for the documentation of
+% commands creation).
+%
+% \begin{docKey}{detect subscripts}{=true\textbar{}false}
+% {default |true|, see below for the initial value}
+%
+% Removes automatically the extra end space created by the arrow, if a subscript
+% immediately follows the command.
+%
+% By default, the initial value of \refKey*{detect subscripts} is |false|.
+% When the option \refOpt{subscripts} is set, the initial value of
+% \refKey*{detect subscripts} is |true|.
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand{autosub}{detect subscripts}
+$ \imath_0 \qquad \autosub{\imath}_0 \qquad
+ {\autosub{\imath}}_0 \qquad {\autosub*{\imath}}_0 $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
+%\end{docKey}
+%
+% \subsubsection{Symbols assemblage settings}
+%
+% The following keys are available for arrows drawn with the default |symb|
+% method (see section~\ref{sec:macro-for-commands-creation},
+% page~\pageref{sec:macro-for-commands-creation} for the documentation of
+% commands creation).
+%
+% \begin{docKeys}{
+%   {
+%       doc name={start},
+%       doc parameter={=\marg{command}},
+%       doc description={no default, initially \cs{relbar}},
+%   },
+%   {
+%       doc name={middle},
+%       doc parameter={=\marg{command}},
+%       doc description={no default, initially set by \refKey*{middle config}|=auto|},
+%   },
+%   {
+%       doc name={end},
+%       doc parameter={=\marg{command}},
+%       doc description={no default, see below for the initial value},
+%   },
+% }
+%   Sets the \meta{command} used to draw the start (left), middle (center) or
+%   end (right) part of the arrow. The \refKey*{middle} one is repeated, if
+%   necessary, to extend the arrow. It is set, initially by \refKey*{middle
+%   config}|=auto|.
+%   By default, the \refKey*{end} symbols is initially \cs{rightarrow}
+%   \symb{\rightarrow}. When the option \refOpt{old-arrows} is set, the initial
+%   value of \refKey*{end} is \cs{varrightarrow} \symb{\varrightarrow}.
+%
+%   \refKey*{start} and \refKey*{end} symbols are typeset in the same group.
+%   \refKey*{middle} is typeset alone. This means that, if a command, like
+%   \refCom{smallermathstyle}, is used to alter the symbols, it should be
+%   applied both to \refKey*{start} and \refKey*{middle} (but not to
+%   \refKey*{end}).
+%
+%\iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand{smalleroverrightarrow}{%
+  start={\smallermathstyle\relbar},
+  middle={\smallermathstyle\relbareda},
+  end={\rightarrow},
+  space after arrow={0.2ex},
+}
+$ \smalleroverrightarrow{v} \qquad \smalleroverrightarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%\end{docKeys}
+%
+%
+%\begin{docKey}{trim start}{=\marg{number}}{no default, initially |7|}
+%  Trims \meta{number} math units from the right side of the
+%  \refKey{start} symbol.
+% \end{docKey}
+%
+% \begin{docKey}{trim middle}{=\marg{number}}
+% {no default, initially set by \refKey*{middle config}|=auto|}
+%   Trims \meta{number} math units from both left and right sides of the
+%   \refKey{middle} symbol.
+% \end{docKey}
+%
+% \begin{docKey}{trim end}{=\marg{number}}{no default, initially |7|}
+%   Trims \meta{number} math units from the left side of the
+%   \refKey{end} symbol.
+% \end{docKey}
+%
+% \begin{docKey}{trim}{=\marg{number}}{no default}
+%   Sets \refKey{trim start}, \refKey{trim middle} and \refKey{trim end} to the
+%   same \meta{number} value.
+% \end{docKey}
+%
+% \begin{docKey}{no trimming}{}{}
+%   Clears \refKey{trim start}, \refKey{trim middle} and \refKey{trim end}.
+% \end{docKey}
+%
+%\begin{docKey}{middle config}{=auto\textbar relbar\textbar relbareda}{no default}
+%  Sets a suitable configuration for the keys \refKey{middle} and \refKey{trim middle}:
+%  \begin{description}
+%   \item[For \refKey*{middle config}| = relbar|,] \refKey{middle} is set to
+%    \cs{relbar} \symb{\relbar} and \refKey{trim middle} to |2.5|.
+%   \item[For \refKey*{middle config}| = relbareda|,] \refKey{middle} is set to
+%    \cs{relbareda} \symb{\relbareda} and \refKey{trim middle} to |1|.
+%   \item[For \refKey*{middle config}| = auto|,] \refKey{middle} is set with
+%   \refKey*{middle config}| = relabareda| if the option \refOpt{esvect} is set
+%   (which is the default) and \refKey*{middle config}| = relabar| if not.
+%   \end{description}
+%\end{docKey}
+%
+% \begin{docKeys}{
+%   {
+%       doc name={amsmath},
+%       doc description={default |mimic|},
+%   },
+%   {
+%       doc name={amsmath},
+%       doc parameter={=mimic\textbar strict},
+%       doc no index,
+%   }
+% }
+%   Loads a configuration coherent with \pkg{amsmath}
+%   \cs{overrightarrow} command.
+% \begin{description}
+%  \item[\refKey*{amsmath} or \refKey*{amsmath}|=mimic|] sets the corresponding
+%   keys suitably:
+%   \begin{center}
+%     \begin{tabular*}{\linewidth}{ @{\extracolsep{\fill}}lll }
+%     \refKey*{start}|={\relbar}|
+%     & \refKey*{middle}=|{\relbar}|
+%     & \refKey*{end}|={\rightarrow}| \\
+%     \refKey*{trim start}|=7|
+%     & \refKey*{trim middle}|=2|
+%     & \refKey*{trim end}|=7| \\
+%     \refKey*{shift leftright}|=0|
+%     & \refKey*{after arrow}|={}|
+%     & \refKey*{before arrow}|={}|
+%       \end{tabular*}
+%   \end{center}
+%  \item[\refKey*{amsmath}|=strict|] makes, in addition, the command uses the
+%  internal macros of  \pkg{amsmath}
+%  \cs{overrightarrow} (\refKey*{no trimming}, \refKey*{fill
+%  macro}|={\arrowfill@}|, \refKey*{stack macro}|={\overarrow@}|). Note that
+%  many configuration keys becomes ineffective.
+% \end{description}
+% \end{docKeys}
+%
+% \begin{docKeys}{
+%   {
+%       doc name={esvect},
+%       doc description={default |mimic|},
+%   },
+%   {
+%       doc name={esvect},
+%       doc parameter={=mimic\textbar strict},
+%       doc no index,
+%   }
+% }
+%   Loads a configuration coherent with \pkg{amsmath}
+%   \cs{vv} command.
+% \begin{description}
+%  \item[\refKey*{esvect} or \refKey*{esvect}|=mimic|] sets the corresponding
+%   keys suitably:
+%   \begin{center}
+%     \begin{tabular*}{\linewidth}{ @{\extracolsep{\fill}}lll }
+%     \refKey*{start}|={\relbaredd}|
+%     & \refKey*{middle}=|{\relbareda}|
+%     & \refKey*{end}|={\fldr}| \\
+%     \refKey*{trim start}|=1.5|
+%     & \refKey*{trim middle}|=0|
+%     & \refKey*{trim end}|=1.5| \\
+%     \refKey*{space before arrow}|=-.7pt|
+%     & \refKey*{space after arrow}|=-.3pt|
+%     &\refKey*{right arrow}|=2|
+%       \end{tabular*}
+%   \end{center}
+%  \item[\refKey*{esvect}|=strict|] makes, in addition, the command uses the
+%  internal macros of  \pkg{esvect}
+%  \cs{vv} (\refKey*{no trimming}, \refKey*{fill
+%  macro}|={\traitfill@}|, \refKey*{stack macro}|={\overvect@}|). Note that
+%  many configuration keys becomes ineffective.
+% \end{description}
+%
+%\end{docKeys}
+%
+% \subsubsection{TikZ settings}
+% \label{sec:tikz-keys}
+%
+% If, at command creation (see section~\ref{sec:macro-for-commands-creation},
+% page~\pageref{sec:macro-for-commands-creation} for the documentation of
+% commands creation), the |tikz| method is chosen, then the arrow is drawn by
+% the command:
+% \begin{center}
+%   \cs{tikz}|[|\refKey*{tikz options}|]{|\refKey*{tikz command}|}|
+% \end{center}
+% \noindent where \refKey{tikz options} and \refKey{tikz command} are two keys
+% described below. When \refKey*{tikz command} is let unset, the drawing command
+% turns into:
+% \begin{center}
+%   \cs{tikz}|[|\refKey*{tikz options}|]{|\cs{draw}|[|\refKey*{path options}|]|
+%   \refKey*{path}|;}|
+% \end{center}
+%
+% The best way to customise |tikz| arrows is then to set the keys \refKey{tikz
+% options}, \refKey{path options} and \refKey{path}, preferably through the
+% handy alternatives: \refKey{add tikz options}, \refKey{add path options},
+% \refKey{arrows}, \refKey{line thickness} or \refKey{thinner}.
+%
+%\iffalse
+%<*example>
+% \fi
+\begin{dispExample*}{grow to left by=-2em}
+\NewOverArrowCommand[tikz]{overdotteddoublearrow}{%
+  add tikz options={blue}, add path options={densely dotted},
+  arrows={->[scale=0.5]>[scale=0.5]}, thinner,
+  min length=20, space after arrow={0.3ex},
+}
+$ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
+\end{dispExample*}
+% \iffalse
+%</example>
+% \fi
+%
+% The following keys are available when the |tikz| method is chosen.
+%
+% \begin{docKey}[][before lower=\medskip\par]
+% {tikz options}{=\marg{TikZ options}}
+% {no default, initially |x=|\cs{overarrowlength}|, line
+% width=|\cs{overarrowthickness}}
+%   Sets TikZ options to \meta{TikZ options}.
+%\end{docKey}
+%
+% \begin{docKey}[][before lower=\medskip\par]
+% {path options}{=\marg{path options}}
+% {no default, initially |arrows={-Classical TikZ Rightarrow}, cap=round|}
+%   Sets TikZ path options to \meta{path options}.
+% \end{docKey}
+% \begin{docKey}{path}{=\marg{path specification}}
+% {no default, initially |(0,0)--(1,0)|}
+% Sets TikZ path specification to \meta{path} (the ending semicolon is
+% automatically appended).
+%\end{docKey}
+%
+% \begin{docKey}{add tikz options}{=\marg{TikZ options}}{no default}
+%   Appends the options \meta{TikZ options} to the key \refKey{tikz options}.
+% \end{docKey}
+%
+% \begin{docKey}{add path options}{=\marg{path options}}{no default}
+%   Appends the options \meta{path options} to the key \refKey{path options}.
+% \end{docKey}
+%
+% \begin{docKey}{arrows}{=\marg{arrow specification}}{no default}
+%   Appends the option |arrows={|\meta{arrow specification}|}| to the key
+%   \refKey{path options}.
+% \end{docKey}
+%
+% \begin{docKey}{line thickness}{=\marg{length}}{no default}
+%   Appends the option |line width={|\meta{length}|}| to the key \refKey{path
+%   options}.
+% \end{docKey}
+%
+% \begin{docKey}{thinner}{}{}
+%   Sets the keys \refKey{line thickness} with \cs{overarrowsmallerthickness}.
+% \end{docKey}
+%
+% \begin{docKey}{tikz command}{=\marg{TikZ command}}{initially unset}
+%   Sets the \meta{TikZ command} used to draw the arrow. If left unset, the
+%   value \cs{draw}|[|\refKey*{path options}|] |\refKey*{path}|;| is used.
+%\end{docKey}
+%
+% \subsubsection{Picture environment settings}
+% \label{sec:picture-keys}
+%
+% If, at command creation (see section~\ref{sec:macro-for-commands-creation},
+% page~\pageref{sec:macro-for-commands-creation} for the documentation of
+% commands creation), the |picture| method is chosen, then the arrow is drawn
+% with by:
+% \begin{flushleft}\leftskip=3cm
+%   \cs{begin}|{picture}|\refKey*{geometry}|%|\\
+%    \quad\cs{linethickness}|{|\refDoc{key:picture}*{line thickness}|}%|\\
+%    \quad\refKey*{picture command}|%|\par
+%   \cs{end}|{picture}%|
+% \end{flushleft}
+% \noindent where \refKey{geometry}, \refDoc{key:picture}{line thickness} and
+% \refKey*{picture command} are three keys described below.
+%
+%\iffalse
+%<*example>
+% \fi
+\begin{dispExample*}{grow to left by=-2em}
+  % ^^A \arc and \roundcap commands are from the pict2e package
+  % ^^A this example needs \usepackage{pict2e} in the preamble
+  \NewOverArrowCommand[picture]{overarc}{%
+    picture command={%
+      \roundcap
+      \put(0.5\overarrowlength,0){\arc[180,0]{0.6\overarrowlength}}
+    },
+    geometry={%
+      (1.2\overarrowlength,0.5\overarrowlength)(-0.1\overarrowlength,0.2ex)
+    },
+    thinner, center arrow,
+  }
+  $ \overarc{v} \qquad \overarc{AB} $
+\end{dispExample*}
+% \iffalse
+%</example>
+% \fi
+% The following keys are available when the |picture| method is chosen.
+%
+% \begin{docKey}[][before lower=\medskip\par]
+% {picture command}{=\marg{picture command}}
+% {no default, initially \cs{put}|(0,0)\{|\cs{vector}|(1,0)\{|\refCom*{overarrowlength}|\}\}|}
+%   Sets picture command to \meta{picture command}.
+% \end{docKey}
+%
+% \begin{docKey}[][before lower=\medskip\par]
+% {geometry}{=\marg{picture geometry specification}}
+% {no default, initially |(|\refCom*{overarrowlength}|,1ex)(0,-0.5ex)|}
+%   Sets picture geometry to \meta{picture geometry specification}.
+% \end{docKey}
+%
+% \begin{docKey}[][doc label={picture:line thickness}]%^^A same name as for TikZ
+% {line thickness}{=\marg{length}}{no default}
+% Sets the picture line thickness to \meta{length}.
+% \end{docKey}
+%
+% \begin{docKey}[][doc label={picture:thinner}]%^^A same name as for TikZ
+% {thinner}{}{no default}
+% Sets the keys \refDoc{key:picture}{line thickness} with
+% \cs{overarrowsmallerthickness}.
+% \end{docKey}
+%
+% \subsection{Advanced commands and keys}
+%
+% The following commands and keys are used in the implementation of the
+% \pkg{overarrows} package. They can also be employed for an advanced
+% configuration of the commands created, although unnecessary in the vast
+% majority of cases.
+%
+% \subsubsection{Advanced commands}
+%
+% \begin{docCommands}{%
+%   {
+%     doc name=SetOverArrowsMethod,
+%     doc parameter=\oarg{stack mechanism}\marg{name}\oarg{pre code}\marg{keys def},
+%   },
+%   {
+%     doc name=SetOverArrowsMethod*,
+%     doc parameter=\marg{name}\oarg{pre code}\marg{keys def},
+%   },
+% }
+%   Defines the method \meta{name}, to be used in commands
+%   \refCom{NewOverArrowCommand}, \refCom{RenewOverArrowCommand},
+%   \refCom{ProvideOverArrowCommand} or \refCom{DeclareOverArrowCommand}.
+%   When the \meta{name} method is chosen, corresponding keys are defined by
+%   \meta{keys def}. This must set, in particular, the keys \refKey{no stack
+%   macro hook} and \refKey{no arrow macro hook}. Optional code \meta{pre code}
+%   is evaluated before the keys definition.
+%
+%   The unstarred variant automatically defines the key \refKey{no stack macro
+%   hook}, according to the value of the optional \meta{stack mechanism}.
+%   This one must be:
+%   \begin{description}
+%    \item[|fill|] if \refKey{arrow macro} creates extensible arrows (typically
+%     with \cs{cleaders}). In this case, the arrow macro (defined by \refKey{no
+%     arrow macro hook}) is called with the math style, passed as argument (it
+%     can be, for example, the macro \cs{rightarrowfill@} used by \pkg{amsmath}
+%     \cs{overrightarrow}). |fill| is the mechanism used by the |symb| method.
+%    \item[|lens|] if \refKey{arrow macro} creates fixed-length arrows, and
+%     needs the computation of lengths \refLen{overarrowlength}, \refLen{overarrowthickness}
+%     and \refLen{overarrowsmallerthickness}. In this case, the arrow macro
+%     (defined by \refKey{no arrow macro hook}) is called without argument.
+%     |lens| is the mechanism used by the |tikz| and |picture| methods.
+%   \end{description}
+%   Without optional \meta{stack mechanism}, |fill| is used. The starred variant
+%   does not set the key \refKey{no stack macro hook}.
+% \end{docCommands}
+%
+% \subsubsection{Advanced keys}
+%
+% \begin{docKey}{stack macro}{=\marg{stack definition}}
+% {no default, initially unset}
+% Defines the stack macro to be \meta{stack definition}. Stack macro is
+% a command which takes three arguments: the arrow macro set by \refKey{arrow
+% macro}, the math style, and the command content (under or over the arrow).
+% \meta{stack definition} can be, for example, the macro \cs{overarrow@} used by
+% \pkg{amsmath} \cs{overrightarrow}.
+% \end{docKey}
+%
+% \begin{docKey}{arrow macro}{=\marg{arrow definition}}
+% {no default, initially unset}
+% Defines the arrow macro (used in the stack macro) by to be \meta{arrow
+% definition}.
+% \end{docKey}
+%
+% \begin{docKey}{no stack macro hook}{=\marg{code}}{no default}
+%   Sets the \meta{code} executed if \refKey{stack macro} is left unset, after
+%   user evaluation of \meta{keys} in \refCom{NewOverArrowCommand},
+%   \refCom{RenewOverArrowCommand}, \refCom{ProvideOverArrowCommand} or
+%   \refCom{DeclareOverArrowCommand}.
+%
+%   \meta{code} must configure \refKey{stack macro} accordingly to the user
+%   keys setting.
+% \end{docKey}
+%
+% \begin{docKey}{no arrow macro hook}{=\marg{code}}{no default}
+%   Sets the \meta{code} executed if \refKey{arrow macro} is left unset, after
+%   user evaluation of \meta{keys} in \refCom{NewOverArrowCommand},
+%   \refCom{RenewOverArrowCommand}, \refCom{ProvideOverArrowCommand} or
+%   \refCom{DeclareOverArrowCommand}.
+%
+%   \meta{code} must configure \refKey{arrow macro} accordingly to the user
+%   keys setting.
+% \end{docKey}
+%
+% \begin{docKey}{fill macro}{=\marg{definition}}{no default, initially unset}
+%   Defines the fill macro to be \meta{definition}. The fill macro is used by
+%   arrows created with the |symb| method, to set \refKey{arrow macro} in
+%   \refKey{no arrow macro hook}. It is called with fours arguments: start,
+%   middle and end symbols used to draw the arrow, and the math style.
+%   \meta{definition} can be, for example, the macro \cs{arrowfill@} used by
+%   \pkg{amsmath} \cs{overrightarrow}.
+% \end{docKey}
+%
+% \section{Complements}
+%
+% \subsection{Math font issue}
+%
+% If the math font differs from the default \emph{Computer Modern}, arrow drawn
+% with the |symb| method may have a central part of the arrow with inappropriate
+% position or line width. This is
+% because the default symbol used for the arrow line is \cs{relbareda}
+% \symb{\relbareda} from the \pkg{esvect} package. This can be fixed with the
+% \refOpt{noesvect} option.
+%
+% \subsection{Package dependencies}
+%
+% The following packages are used by \pkg{overarrows}:
+% \begin{itemize}
+%  \item \pkg{amsmath}
+%  \item \pkg{etoolbox}
+%  \item \pkg{pgfkeys}
+%  \item \pkg{esvect} (unless the option \refOpt{noesvect} is used)
+%  \item \pkg{old-arrows} (when the option \refOpt{old-arrows} is used)
+%  \item \pkg{tikz} (when the |tikz| method or the option \refOpt{tikz} is used)
+%  \item \pkg{pict2e} (when the option \refOpt{pstarrows} is used)
+% \end{itemize}
+%
+% \LaTeX{} distributions prior to 2020/10/01 must load the \pkg{xparse} package
+% before \pkg{overarrows}.
+%
+% \subsection{Alternatives}
+%
+% \begin{description}
+%  \item[\textsf{esvect} package]
+%   (\url{https://www.ctan.org/pkg/esvect}), by Eddie Saudrais, provides the
+%   fine vector macro \cs{vv}. This package is loaded by default by
+%   \pkg{overarrows}.
+%
+%  \item[\pkg{letterswitharrows} package]
+%   (\url{https://www.ctan.org/pkg/letterswitharrows}), by Max Teegen, provides
+%   left and right over arrows commands, which can extend to
+%   multiple characters.
+%
+%  \item[\pkg{overrightarrow} package]
+%   (\url{https://www.ctan.org/pkg/overrightarrow}), by Robin Fairbairns,
+%   provides the \cs{Overrightarrow} which is an amalgam of \cs{overrightarrow}
+%   and \cs{Rightarrow}.
+%
+%  \item[\pkg{harpoon} package] (\url{https://ctan.org/pkg/harpoon}), by Tobias
+%   Kuipers, provides over- and under-harpoon symbol commands.
+% \end{description}
+%
+% \subsection{Changelog}
+%
+% \begin{description}
+%  \item[v1.0.1] Bug fix for under* options.
+%  \item[v1.0] Initial version.
+% \end{description}
+%
+% \StopEventually{}
+%
+% \section{Implementation}
+%
+%\iffalse
+%<*package>
+%\fi
+%
+% \setlength{\parindent}{0em}
+% \setlength{\parskip}{\smallskipamount}
+%
+%\subsection*{Management of options}
+%
+% \subsubsection*{Declaration of conditionals}
+%
+%    \begin{macrocode}
+\newif\ifovar at option@oldarrows@
+\newif\ifovar at option@esvect@ \ovar at option@esvect at true \PassOptionsToPackage{f}{esvect}
+\newif\ifovar at option@tikz@
+\newif\ifovar at option@pstarrows@
+\newif\ifovar at detectsubscripts@
+\newif\ifovar at option@debug@
+%    \end{macrocode}
+%
+% Following conditionals are for predefined commands.
+%
+%    \begin{macrocode}
+\newif\ifovar at option@overrightarrow@
+\newif\ifovar at option@underrightarrow@
+\newif\ifovar at option@overleftarrow@
+\newif\ifovar at option@underleftarrow@
+\newif\ifovar at option@overleftrightarrow@
+\newif\ifovar at option@underleftrightarrow@
+\newif\ifovar at option@overrightharpoonup@
+\newif\ifovar at option@underrightharpoonup@
+\newif\ifovar at option@overrightharpoondown@
+\newif\ifovar at option@underrightharpoondown@
+\newif\ifovar at option@overleftharpoonup@
+\newif\ifovar at option@underleftharpoonup@
+\newif\ifovar at option@overleftharpoondown@
+\newif\ifovar at option@underleftharpoondown@
+\newif\ifovar at option@overbar@
+\newif\ifovar at option@underbar@
+%    \end{macrocode}
+%
+% \subsubsection*{Declaration of options}
+%
+%    \begin{macrocode}
+\DeclareOption{esvect}{\ovar at option@esvect at true}
+\DeclareOption{noesvect}{\ovar at option@esvect at false}
+\DeclareOption{esvecta}{\ovar at option@esvect at true\PassOptionsToPackage{a}{esvect}}
+\DeclareOption{esvectb}{\ovar at option@esvect at true\PassOptionsToPackage{b}{esvect}}
+\DeclareOption{esvectc}{\ovar at option@esvect at true\PassOptionsToPackage{c}{esvect}}
+\DeclareOption{esvectd}{\ovar at option@esvect at true\PassOptionsToPackage{d}{esvect}}
+\DeclareOption{esvecte}{\ovar at option@esvect at true\PassOptionsToPackage{e}{esvect}}
+\DeclareOption{esvectf}{\ovar at option@esvect at true\PassOptionsToPackage{f}{esvect}}
+\DeclareOption{esvectg}{\ovar at option@esvect at true\PassOptionsToPackage{g}{esvect}}
+\DeclareOption{esvecth}{\ovar at option@esvect at true\PassOptionsToPackage{h}{esvect}}
+\DeclareOption{old-arrows}{\ovar at option@oldarrows at true}
+\DeclareOption{tikz}{\ovar at option@tikz at true}
+\DeclareOption{pstarrows}{\ovar at option@pstarrows at true}
+\DeclareOption{subscripts}{\ovar at detectsubscripts@true}
+\DeclareOption{debug}{\ovar at option@debug at true}
+%    \end{macrocode}
+%
+% Following options are for predefined commands.
+%
+% \changes{v1.0.1}{2023/01/19}{Bug fix for under* options}
+%
+%
+%    \begin{macrocode}
+\DeclareOption{overrightarrow}{\ovar at option@overrightarrow at true}
+\DeclareOption{underrightarrow}{\ovar at option@underrightarrow at true}
+\DeclareOption{overleftarrow}{\ovar at option@overleftarrow at true}
+\DeclareOption{underleftarrow}{\ovar at option@underleftarrow at true}
+\DeclareOption{overleftrightarrow}{\ovar at option@overleftrightarrow at true}
+\DeclareOption{underleftrightarrow}{\ovar at option@underleftrightarrow at true}
+\DeclareOption{overrightharpoonup}{\ovar at option@overrightharpoonup at true}
+\DeclareOption{underrightharpoonup}{\ovar at option@underrightharpoonup at true}
+\DeclareOption{overrightharpoondown}{\ovar at option@overrightharpoondown at true}
+\DeclareOption{underrightharpoondown}{\ovar at option@underrightharpoondown at true}
+\DeclareOption{overleftharpoonup}{\ovar at option@overleftharpoonup at true}
+\DeclareOption{underleftharpoonup}{\ovar at option@underleftharpoonup at true}
+\DeclareOption{overleftharpoondown}{\ovar at option@overleftharpoondown at true}
+\DeclareOption{underleftharpoondown}{\ovar at option@underleftharpoondown at true}
+\DeclareOption{overbar}{\ovar at option@overbar at true}
+\DeclareOption{underbar}{\ovar at option@underbar at true}
+%    \end{macrocode}
+%
+% Following options are for sets of predefined commands.
+%
+%    \begin{macrocode}
+\DeclareOption{overcommands}{%
+  \ovar at option@overrightarrow at true
+  \ovar at option@overleftarrow at true
+  \ovar at option@overleftrightarrow at true
+  \ovar at option@overrightharpoonup at true
+  \ovar at option@overrightharpoondown at true
+  \ovar at option@overleftharpoonup at true
+  \ovar at option@overleftharpoondown at true
+  \ovar at option@overbar at true
+}
+\DeclareOption{undercommands}{%
+  \ovar at option@underrightarrow at true
+  \ovar at option@underleftarrow at true
+  \ovar at option@underleftrightarrow at true
+  \ovar at option@underrightharpoonup at true
+  \ovar at option@underrightharpoondown at true
+  \ovar at option@underleftharpoonup at true
+  \ovar at option@underleftharpoondown at true
+  \ovar at option@underbar at true
+}
+\DeclareOption{allcommands}{%
+  \ovar at option@overrightarrow at true
+  \ovar at option@underrightarrow at true
+  \ovar at option@overleftarrow at true
+  \ovar at option@underleftarrow at true
+  \ovar at option@overleftrightarrow at true
+  \ovar at option@underleftrightarrow at true
+  \ovar at option@overrightharpoonup at true
+  \ovar at option@underrightharpoonup at true
+  \ovar at option@overrightharpoondown at true
+  \ovar at option@underrightharpoondown at true
+  \ovar at option@overleftharpoonup at true
+  \ovar at option@underleftharpoonup at true
+  \ovar at option@overleftharpoondown at true
+  \ovar at option@underleftharpoondown at true
+  \ovar at option@overbar at true
+  \ovar at option@underbar at true
+}
+%    \end{macrocode}
+%
+% \subsubsection*{Options processing}
+%
+%    \begin{macrocode}
+\DeclareOption*{\PackageWarning{overarrows}{Unknown option: '\CurrentOption'}}
+\ProcessOptions\relax
+%    \end{macrocode}
+%
+% \subsection*{Package dependencies}
+%
+% \LaTeX{} distributions prior to 2020/10/01 must add the \pkg{xparse} package.
+%
+%    \begin{macrocode}
+\RequirePackage{amsmath}
+\RequirePackage{etoolbox}
+%    \end{macrocode}
+% Option \refOpt{old-arrows}. Configuration of arrows used for
+% predefined commands.
+%    \begin{macrocode}
+\let\ovar at rightarrow\rightarrow
+\let\ovar at leftarrow\leftarrow
+\ifovar at option@oldarrows@
+  \RequirePackage[old]{old-arrows}
+  \let\ovar at rightarrow\varrightarrow
+  \let\ovar at leftarrow\varleftarrow
+\fi
+%    \end{macrocode}
+% Option \refOpt{esvect}.
+%    \begin{macrocode}
+\ifovar at option@esvect@
+  \RequirePackage{esvect}
+\fi
+%    \end{macrocode}
+% Option \refOpt{tikz}.
+%    \begin{macrocode}
+\ifovar at option@tikz@
+  \RequirePackage{tikz}
+  \usetikzlibrary{arrows.meta}
+\fi
+%    \end{macrocode}
+% Option \refOpt{pstarrows}.
+%    \begin{macrocode}
+\ifovar at option@pstarrows@
+  \RequirePackage[pstarrows]{pict2e}
+\fi
+%    \end{macrocode}
+%
+% \subsection*{Management of keys}
+%
+% \subsubsection*{Family declaration and setters}
+%
+%    \begin{macrocode}
+\RequirePackage{pgfkeys}
+\pgfkeys{overarrows/.is family}
+%    \end{macrocode}
+%
+% \begin{macro}{\ovar at set}
+%    \begin{macrocode}
+\newcommand{\ovar at set}[1]{\pgfqkeys{/overarrows}{#1}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SetOverArrowsMethod}
+%    \begin{macrocode}
+\NewDocumentCommand{\SetOverArrowsMethod}{ s O{fill} m O{} m }{%
+  \IfBooleanTF{#1}{%
+    \csgdef{ovar at set@#3}{#4\ovar at set{#5}}%
+  }{%
+    \csgdef{ovar at set@#3}{#4\ovar at set{%
+        no stack macro hook/.code={%
+          \ovar at set{stack macro/.expanded={%
+              \expandafter\expandonce\csname ovar at stack@#2\endcsname%
+              {\expandonce\ovar at length@min}%
+              {\expandonce\ovar at before@arrow}{\expandonce\ovar at after@arrow}%
+            }}%
+        },#5}}%
+  }%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection*{Common keys}
+%
+%    \begin{macrocode}
+\SetOverArrowsMethod*{common}[\undef{\ovar at macro@stack}\undef{\ovar at macro@arrow}]{%
+  detect subscripts/.is if=ovar at detectsubscripts@,
+%    \end{macrocode}
+%
+% \refKey{stack macro} and \refKey{arrow macro}.
+%
+%    \begin{macrocode}
+  stack macro/.store in=\ovar at macro@stack,
+  arrow macro/.store in=\ovar at macro@arrow,
+  stack macro/.value required,
+  arrow macro/.value required,
+%    \end{macrocode}
+%
+% \refKey{no stack macro hook}, \refKey{no arrow macro hook}. These two keys
+% must be redefined by the command \cs{ovar at set@}\meta{method}.
+%
+%    \begin{macrocode}
+  no stack macro hook/.code={%
+    \PackageError{overarrows}{Undefined stack macro}
+    {The requested method is perhaps mispelled}
+  },
+  no arrow macro hook/.code={%
+    \PackageError{overarrows}{Undefined arrow macro}
+    {The requested method is perhaps mispelled}
+  },
+%    \end{macrocode}
+%
+% \refKey{min length}.
+%
+%    \begin{macrocode}
+  min length/.store in=\ovar at length@min,
+  min length/.value required,
+  min length=0,
+%    \end{macrocode}
+%
+% \refKey{before arrow}, \refKey{after arrow}, \refKey{space before arrow},
+% \refKey{space after arrow}.
+%
+%    \begin{macrocode}
+  before arrow/.store in=\ovar at before@arrow,
+  after arrow/.store in=\ovar at after@arrow,
+  before arrow/.value required,
+  after arrow/.value required,
+  before arrow=\empty,
+  after arrow=\empty,
+  space before arrow/.code=\pgfkeysalso{before arrow={\kern ##1}},
+  space after arrow/.code=\pgfkeysalso{after arrow={\kern ##1}},
+%    \end{macrocode}
+%
+% \refKey{shift left}, \refKey{shift right}, \refKey{shift leftright},
+% \refKey{center arrow}, \refKey{left arrow}, \refKey{right arrow}.
+%
+%    \begin{macrocode}
+  shift left/.store in=\ovar at shift@left,
+  shift right/.store in=\ovar at shift@right,
+  shift left/.value required,
+  shift right/.value required,
+  shift leftright/.code=\pgfkeysalso{%
+    shift left=##1, shift right=##1,
+  },
+  center arrow/.code=\pgfkeysalso{shift leftright=0},
+  shift leftright/.value required,
+  center arrow/.value forbidden,
+  left arrow/.code=\pgfkeysalso{%
+    shift left=0, shift right=##1,
+  },
+  right arrow/.code=\pgfkeysalso{%
+    shift left=##1, shift right=0,
+  },
+  left arrow/.default=2,
+  right arrow/.default=2,
+  right arrow,
+%    \end{macrocode}
+%
+% \refKey{arrow under}.
+%
+%    \begin{macrocode}
+  arrow under/.is choice,
+  arrow under/noconfig/.code={
+    \def\ovar at stack@fill{\ovar at stackunder@fill}
+    \def\ovar at stack@lens{\ovar at stackunder@lens}
+  },
+  arrow under/autoconfig/.code={
+    \pgfkeysalso{%
+      arrow under=noconfig,
+      detect subscripts=false,
+      before arrow={\kern 1.3\ex@\relax},% like underarrow@ from amsmath
+    }
+  },
+  arrow under/.default=autoconfig,
+}
+%    \end{macrocode}
+%
+% \subsubsection*{Keys for the \texttt{symb} method}
+%
+%    \begin{macrocode}
+\SetOverArrowsMethod{symb}[\undef{\ovar at macro@arrowfill}]{%
+%    \end{macrocode}
+% Fill macro.
+%    \begin{macrocode}
+  fill macro/.store in=\ovar at macro@arrowfill,
+  fill macro/.value required,
+%    \end{macrocode}
+% Arrow macro.
+%    \begin{macrocode}
+  no arrow macro hook/.code={%
+    \ifdef{\ovar at macro@arrowfill}{}{%
+      \ovar at set{%
+        fill macro/.expanded={%
+          \noexpand\ovar at arrow@fill%
+          {\expandonce\ovar at shift@left}{\expandonce\ovar at shift@right}%
+        }
+      }
+    }
+    \ovar at set{%
+      arrow macro/.expanded={%
+        \expandonce{\ovar at macro@arrowfill}%
+        {\expandonce{\ovar at arrow@start}\expandonce{\ovar at trim@start}}%
+        {\expandonce{\ovar at trim@middle}\expandonce{\ovar at arrow@middle}%
+          \expandonce{\ovar at trim@middle}}%
+        {\expandonce{\ovar at trim@end}\expandonce{\ovar at arrow@end}}%
+      }
+    }
+  },
+%    \end{macrocode}
+% \refKey{start}, \refKey{middle}, \refKey{end}.
+%    \begin{macrocode}
+  start/.store in=\ovar at arrow@start,
+  middle/.store in=\ovar at arrow@middle,
+  end/.store in=\ovar at arrow@end,
+  start/.value required,
+  middle/.value required,
+  end/.value required,
+%    \end{macrocode}
+% \refKey{trim start}, \refKey{trim middle}, \refKey{trim end}, \refKey{trim},
+% \refKey{no trimming}.
+%    \begin{macrocode}
+  trim start/.code={\def\ovar at trim@start{\xjoinrel[##1]}},
+  trim middle/.code={\def\ovar at trim@middle{\xjoinrel[##1]}},
+  trim end/.code={\def\ovar at trim@end{\xjoinrel[##1]}},
+  trim start/.value required,
+  trim middle/.value required,
+  trim end/.value required,
+  trim/.code={\pgfkeysalso{trim start={##1}, trim middle={##1}, trim end={##1}}},
+  trim/.value required,
+  no trimming/.code={%
+    \let\ovar at trim@start\empty
+    \let\ovar at trim@middle\empty
+    \let\ovar at trim@end\empty
+  },
+  no trimming/.value forbidden,
+%    \end{macrocode}
+% \refKey{middle config}.
+%    \begin{macrocode}
+  middle config/.is choice,
+  middle config/.value required,
+  middle config/relbar/.code=\pgfkeysalso{%
+    middle={\relbar},
+    trim middle={2.5},
+  },
+  middle config/relbareda/.code={%
+    \ifundef{\relbareda}{%
+      \PackageWarning{overarrows}{Key 'middle config=relbareda' used,
+        \MessageBreak%
+        but \protect\relbareda\space is undefined; ignored.
+        \MessageBreak%
+        Load 'esvect' package, or use 'esvect' option \MessageBreak%
+        to remove this warning}
+    }{%
+      \pgfkeysalso{%
+        middle={\relbareda},
+        trim middle={1},
+      }
+    }
+  },
+  middle config/auto/.code={%
+    \ifovar at option@esvect@
+    \pgfkeysalso{middle config=relbareda}
+    \else
+    \pgfkeysalso{middle config=relbar}
+    \fi
+  },
+%    \end{macrocode}
+% \refKey{amsmath}.
+%    \begin{macrocode}
+  amsmath/.is choice,%
+  amsmath/mimic/.code=\pgfkeysalso{%
+    start={\relbar}, middle={\relbar}, end={\rightarrow},
+    trim start=7,
+    trim middle=2,
+    trim end=7,
+    shift leftright=0,
+    after arrow={}, before arrow={},
+  },
+  amsmath/strict/.code=\pgfkeysalso{%
+    amsmath=mimic,
+    no trimming,
+    fill macro={\arrowfill@}, stack macro={\overarrow@},
+  },
+  amsmath/.default=mimic,
+%    \end{macrocode}
+% \refKey{esvect}.
+%    \begin{macrocode}
+  esvect/.is choice,%
+  esvect/mimic/.code=\pgfkeysalso{%
+    start={\relbaredd}, middle={\relbareda}, end={\fldr},
+    trim start=1.5,
+    trim end=1.5,
+    trim middle=0,
+    right arrow=2,
+    space before arrow=-.7pt,
+    space after arrow=-.3pt,
+  },
+  esvect/strict/.code=\pgfkeysalso{%
+    esvect=mimic,
+    no trimming,
+    fill macro={\traitfill@}, stack macro={\overvect@},
+  },
+  esvect/.default=mimic,
+%    \end{macrocode}
+% Initial configuration.
+%    \begin{macrocode}
+  amsmath, middle config=auto, end=\ovar at rightarrow, right arrow,
+}
+%    \end{macrocode}
+%
+% \subsubsection*{Keys for the \texttt{tikz} method}
+%
+%    \begin{macrocode}
+\SetOverArrowsMethod[lens]{tikz}[\undef{\ovar at tikz@command}]{%
+%    \end{macrocode}
+% Arrow macro.
+%    \begin{macrocode}
+  no arrow macro hook/.code={%
+    \ifdef{\ovar at tikz@command}{}{%
+      \pgfkeysgetvalue{/overarrows/path options}{\ovar at tikz@pathoptions}
+      \ovar at set{%
+        tikz command/.expanded={%
+          \noexpand\draw[\expandonce\ovar at tikz@pathoptions]\expandonce\ovar at tikz@path;
+        }
+      }
+    }
+    \pgfkeysgetvalue{/overarrows/tikz options}{\ovar at tikz@options}
+    \ovar at set{%
+      arrow macro/.expanded={%
+        $\noexpand\mkern \expandonce{\ovar at shift@left} mu\noexpand\relax$%
+        \noexpand\tikz[\expandonce{\ovar at tikz@options}]{\expandonce{\ovar at tikz@command}}%
+        $\noexpand\mkern \expandonce{\ovar at shift@right} mu\noexpand\relax$%
+      }
+    }
+  },
+%    \end{macrocode}
+% TikZ parts: \refKey{tikz command}, \refKey{tikz options}, \refKey{path
+% options}, \refKey{path}.
+%    \begin{macrocode}
+  tikz command/.store in=\ovar at tikz@command,
+  tikz options/.initial={x=\overarrowlength, line width=\overarrowthickness},
+  path options/.initial={arrows={-Classical TikZ Rightarrow}, cap=round},
+  path/.store in=\ovar at tikz@path,
+  path={(0,0)--(1,0)},
+  tikz command/.value required,
+  tikz options/.value required,
+  path options/.value required,
+  path/.value required,
+%    \end{macrocode}
+% TikZ handy keys: \refKey{add path options}, \refKey{add tikz options},
+% \refKey{arrows}, \refKey{line thickness}, \refKey{thinner}.
+%    \begin{macrocode}
+  add path options/.code=\pgfkeysalso{%
+    path options/.append={, ##1}},%
+  add tikz options/.code=\pgfkeysalso{%
+    tikz options/.append={, ##1}},%
+  arrows/.code=\pgfkeysalso{add path options={arrows={##1}}},%
+  line thickness/.code=\pgfkeysalso{add path options={line width=##1}},%
+  thinner/.code=\pgfkeysalso{line thickness={\overarrowsmallerthickness}},%
+  add path options/.value required,%
+  add tikz options/.value required,%
+  arrows/.value required,%
+  line thickness/.value required,%
+  thinner/.value forbidden,%
+%    \end{macrocode}
+% Initial configuration.
+%    \begin{macrocode}
+  shift right=-2,
+  min length=12,
+}
+%    \end{macrocode}
+%
+% \subsubsection*{Keys for the \texttt{picture} method}
+%
+%    \begin{macrocode}
+\SetOverArrowsMethod[lens]{picture}{%
+%    \end{macrocode}
+% Arrow macro.
+%    \begin{macrocode}
+  no arrow macro hook/.code={%
+    \ovar at set{%
+      arrow macro/.expanded={%
+        $\noexpand\mkern \expandonce{\ovar at shift@left} mu\noexpand\relax$%
+        \noexpand\begin{picture}\expandonce{\ovar at picture@geometry}%
+          \noexpand\linethickness{\expandonce{\ovar at picture@linethickness}}%
+          \expandonce{\ovar at picture@command}%
+          \noexpand\end{picture}%
+        $\noexpand\mkern \expandonce{\ovar at shift@right} mu\noexpand\relax$%
+      }
+    }
+  },
+%    \end{macrocode}
+% Picture parts: \refKey{picture command}, \refKey{geometry},
+% \refDoc{key:picture}{line thickness}.
+%    \begin{macrocode}
+  picture command/.store in=\ovar at picture@command,
+  geometry/.store in=\ovar at picture@geometry,
+  line thickness/.store in=\ovar at picture@linethickness,
+  picture command/.value required,
+  geometry/.value required,
+  line thickness/.value required,
+%    \end{macrocode}
+% Picture handy key: \refDoc{key:picture}{thinner}.
+%    \begin{macrocode}
+  thinner/.code=\pgfkeysalso{line thickness={\overarrowsmallerthickness}},
+%    \end{macrocode}
+% Initial configuration.
+%    \begin{macrocode}
+  shift right=-2,
+  min length=18,
+  geometry={(\overarrowlength,1ex)(0,-0.5ex)},%
+  line thickness={\overarrowthickness},%
+  picture command={\put(0,0){\vector(1,0){\overarrowlength}}},%
+}
+%    \end{macrocode}
+%
+% \subsection*{Commands}
+%
+% \subsubsection*{Macros for symbols assemblage}
+%
+% \begin{macro}{\xjoinrel}
+%    \begin{macrocode}
+\ifdef{\xjoinrel}{%
+  \PackageWarning{overarrows}{Command \protect\xjoinrel\space already defined.
+    \MessageBreak%
+    Previous definition will be overridden}
+}{}
+%    \end{macrocode}
+%  Use a default value of |3.5 mu|, as recommended by egreg (see
+%  \url{https://tex.stackexchange.com/a/471736}). \cs{joinrel}
+%  uses a value of 3 mu.
+%    \begin{macrocode}
+\DeclareRobustCommand{\xjoinrel}[1][3.5]{\mathrel{\mkern-#1mu}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\smallermathstyle}
+%    \begin{macrocode}
+\newcommand*{\smallermathstyle}{%
+  \mathchoice{\scriptstyle}{\scriptstyle}{\scriptscriptstyle}{}
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ovar at arrow@fill}
+% Macro used for default \refKey{fill macro}.\\
+% |#1|: left shift\\
+% |#2|: right shift\\
+% |#3|: arrow start\\
+% |#4|: arrow middle\\
+% |#5|: arrow end\\
+% |#6|: math style
+%    \begin{macrocode}
+\def\ovar at arrow@fill#1#2#3#4#5#6{%
+  $\m at th\thickmuskip0mu\medmuskip\thickmuskip\thinmuskip\thickmuskip\relax%
+  \mkern #1 mu\relax#6#3%
+  \cleaders\hbox{$#6#4$}\hfill%
+  #5\mkern #2 mu\relax$%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection*{Macros for fixed length arrows}
+%
+% Lengths declaration.
+%    \begin{macrocode}
+\newlength{\overarrowlength}
+\newlength{\overarrowthickness}
+\newlength{\overarrowsmallerthickness}
+\newlength{\ovar at extralength}
+\newlength{\ovar at tempdim}
+%    \end{macrocode}
+%
+% \begin{macro}{\ovar at set@arrowlength}
+% Sets \refLen{overarrowlength}.\\
+% |#1|: min length, in math units\\
+% |#2|: math style\\
+% |#3|: content
+%    \begin{macrocode}
+\def\ovar at set@arrowlength#1#2#3{%
+  \settowidth{\ovar at tempdim}{$\m at th#2\mskip #1 mu\relax$}%
+  \settowidth{\overarrowlength}{$\m at th#2#3$}%
+  \ifdim \overarrowlength < \ovar at tempdim \overarrowlength=\ovar at tempdim\fi%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ovar at set@arrowthickness}
+% Sets \refLen{overarrowthickness} and \refLen{overarrowsmallerthickness}.\\
+% |#1|: arrow length\\
+% |#2|: math style
+%    \begin{macrocode}
+\def\ovar at set@arrowthickness#1{% use rule thickness=\fontdimen 8 font family 3
+  \ifx#1\displaystyle%
+    \overarrowthickness =        \fontdimen 8 \textfont 3%
+    \overarrowsmallerthickness = \fontdimen 8 \scriptfont 3%
+  \else\ifx#1\textstyle%
+    \overarrowthickness =        \fontdimen 8 \textfont 3%
+    \overarrowsmallerthickness = \fontdimen 8 \scriptfont 3%
+  \else\ifx#1\scriptstyle%
+    \overarrowthickness =        \fontdimen 8 \scriptfont 3%
+    \overarrowsmallerthickness = \fontdimen 8 \scriptscriptfont 3%
+  \else%
+    \overarrowthickness =        \fontdimen 8 \scriptscriptfont 3%
+    \overarrowsmallerthickness = \overarrowthickness%
+  \fi\fi\fi%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection*{Stack macros}
+%
+% \begin{macro}{\ovar at stackover@@}
+% \begin{macro}{\ovar at stackunder@@}
+% Bases of all stack macros.\\
+% |#1|: min length, in math units\\
+% |#2|: vertical mode material before arrow\\
+% |#3|: vertical mode material after arrow\\
+% |#4|: arrow\\
+% |#5|: math style\\
+% |#6|: content
+%    \begin{macrocode}
+\def\ovar at stackover@@#1#2#3#4#5#6{\vbox{\ialign{##\crcr%
+      $#5\mskip #1 mu\relax$\crcr%
+      \noalign{#2\nointerlineskip}#4\crcr%
+      \noalign{#3\nointerlineskip}%
+      $\m at th\hfil#5#6\hfil$\crcr%
+    }%
+  }%
+}
+\def\ovar at stackunder@@#1#2#3#4#5#6{\vtop{\ialign{##\crcr%
+      $\m at th\hfil#5#6\hfil$\crcr%
+      \noalign{#2\nointerlineskip}#4\crcr%
+      \noalign{#3\nointerlineskip}%
+      $#5\mskip #1 mu\relax$\crcr%
+    }%
+  }%
+}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ovar at stackover@}
+% \begin{macro}{\ovar at stackunder@}
+% Stack macros without min arrow length.\\
+% |#1|: vertical mode material before arrow\\
+% |#2|: vertical mode material after arrow\\
+% |#3|: arrow macro\\
+% |#4|: math style\\
+% |#5|: content
+%    \begin{macrocode}
+\def\ovar at stackover@#1#2#3#4#5{\ovar at stackover@@{0}{#1}{#2}{#3}{#4}{#5}}
+\def\ovar at stackunder@#1#2#3#4#5{\ovar at stackunder@@{0}{#1}{#2}{#3}{#4}{#5}}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ovar at stackover@fill}
+% \begin{macro}{\ovar at stackunder@fill}
+% \begin{macro}{\ovar at stack@fill}
+% Stack macros for extensible arrows.\\
+% |#1|: min length, in math units\\
+% |#2|: vertical mode material before arrow\\
+% |#3|: vertical mode material after arrow\\
+% |#4|: arrow filler macro\\
+% |#5|: math style\\
+% |#6|: content
+%    \begin{macrocode}
+\def\ovar at stackover@fill#1#2#3#4#5#6{\ovar at stackover@@{#1}{#2}{#3}{#4#5}{#5}{#6}}
+\def\ovar at stackunder@fill#1#2#3#4#5#6{\ovar at stackunder@@{#1}{#2}{#3}{#4#5}{#5}{#6}}
+%    \end{macrocode}
+% \cs{ovar at stack@fill} matches the macro \cs{ovar at stackover@fill} by default, or
+% \cs{ovar at stackunder@fill} with \refKey{arrow under}.
+%    \begin{macrocode}
+\def\ovar at stack@fill{\ovar at stackover@fill}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ovar at stackover@lens}
+% \begin{macro}{\ovar at stackunder@lens}
+% \begin{macro}{\ovar at stack@lens}
+% Stack macros for fixed-length arrows (these call \cs{ovar at set@arrowlength} and
+% \cs{ovar at set@arrowthickness}).\\
+% |#1|: min length, in math units\\
+% |#2|: vertical mode material before arrow\\
+% |#3|: vertical mode material after arrow\\
+% |#4|: arrow content macro\\
+% |#5|: math style\\
+% |#6|: content
+%    \begin{macrocode}
+\def\ovar at stackover@lens#1#2#3#4#5#6{%
+  \ovar at set@arrowlength{#1}{#5}{#6}%
+  \ovar at set@arrowthickness{#5}%
+  \ovar at stackover@{#2}{#3}{#4}{#5}{#6}%
+}
+\def\ovar at stackunder@lens#1#2#3#4#5#6{%
+  \ovar at set@arrowlength{#1}{#5}{#6}%
+  \ovar at set@arrowthickness{#5}%
+  \ovar at stackunder@{#2}{#3}{#4}{#5}{#6}%
+}
+%    \end{macrocode}
+% \cs{ovar at stack@lens} matches the macro \cs{ovar at stackover@lens} by default, or
+% \cs{ovar at stackunder@lens} with \refKey{arrow under}.
+%    \begin{macrocode}
+\def\ovar at stack@lens{\ovar at stackover@lens}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection*{Macro for commands creation}
+%
+% \begin{macro}{\DeclareOverArrowCommand}
+%    \begin{macrocode}
+\NewDocumentCommand{\DeclareOverArrowCommand}{ O{symb} m m }{%
+  \begingroup
+  \ovar at set@common
+  \ifcsdef{ovar at set@#1}{%
+    \csuse{ovar at set@#1}
+  }{%
+    \PackageError{overarrows}{Unknown method #1}
+    {Try with 'symb', 'tikz' or 'picture'}
+  }
+  \ovar at set{#3 }
+  \ifdef{\ovar at macro@arrow}{}{%
+    \ovar at set{no arrow macro hook}
+  }
+  \ifdef{\ovar at macro@stack}{}{%
+    \ovar at set{no stack macro hook}
+  }
+  \csxdef{ovar@#2 at normal}{%
+    \noexpand\mathpalette{%
+      \expandonce{\ovar at macro@stack}{\expandonce{\ovar at macro@arrow}}%
+    }
+  }
+  \csxdef{ovar@#2 at starred}{%
+    \noexpand\mathpalette{%
+      \noexpand\ovar at starversion{%
+        \expandonce{\ovar at macro@stack}{\expandonce{\ovar at macro@arrow}}%
+      }
+    }
+  }
+  \ifovar at detectsubscripts@%
+  \csgdef{ovar@#2 at auto}##1{%
+    \@ifnextchar _{%
+      \csuse{ovar@#2 at starred}{##1}%
+    }{%
+      \csuse{ovar@#2 at normal}{##1}%
+    }%
+  }
+  \csgdef{#2}{%
+    \@ifstar{\csuse{ovar@#2 at starred}}{\csuse{ovar@#2 at auto}}%
+  }
+  \else
+  \csgdef{#2}{%
+    \@ifstar{\csuse{ovar@#2 at starred}}{\csuse{ovar@#2 at normal}}%
+  }
+  \fi
+  \ifovar at option@debug@
+  \PackageInfo{overarrows}{%
+    Meaning of \protect\ovar@#2 at normal\MessageBreak
+    used for \@backslashchar#2:\MessageBreak%
+      \expandafter\meaning\csname ovar@#2 at normal\endcsname}
+  \fi
+  \endgroup
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ProvideOverArrowCommand}
+%    \begin{macrocode}
+\NewDocumentCommand{\ProvideOverArrowCommand}{ O{symb} m m }{%
+  \ifcsdef{#2}{}{
+    \DeclareOverArrowCommand[#1]{#2}{#3}
+  }
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\NewOverArrowCommand}
+%    \begin{macrocode}
+\NewDocumentCommand{\NewOverArrowCommand}{ O{symb} m m }{%
+  \ifcsdef{#2}{%
+    \PackageError{overarrows}{Command \csname #2\endcsname already defined}%
+    {You have used \protect\NewOverArrowCommand\space with a command that
+      already has a definition. \MessageBreak%
+      Choose another name, or use instead \protect\DeclareOverArrowCommand.}
+  }{%
+    \DeclareOverArrowCommand[#1]{#2}{#3}
+  }
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\RenewOverArrowCommand}
+%    \begin{macrocode}
+\NewDocumentCommand{\RenewOverArrowCommand}{ O{symb} m m }{%
+  \ifcsundef{#2}{%
+    \PackageError{overarrows}{Command  \csname #2\endcsname undefined}%
+    {You have used \protect\RenewOverArrowCommand\space with a command that was
+      never defined. \MessageBreak%
+      Check the requested name, or use instead \protect\NewOverArrowCommand.}
+  }{%
+    \DeclareOverArrowCommand[#1]{#2}{#3}
+  }
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection*{Starred variant}
+%
+% \begin{macro}{\ovar at starversion}
+% |#1|: definition (stack macro + arrow macro)\\
+% |#2|: math style\\
+% |#3|: content
+%    \begin{macrocode}
+\def\ovar at starversion#1#2#3{%
+  #1#2{#3}%
+  \settowidth{\ovar at extralength}{$\m at th#1#2{#3}$}
+  \settowidth{\ovar at tempdim}{$\m at th#2{#3}$}
+  \deflength{\ovar at extralength}{0.5\ovar at extralength-0.5\ovar at tempdim}%
+  \kern-\ovar at extralength%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection*{\cs{vv} vector command}
+%
+% \begin{macro}{\vv}
+% \begin{macro}{\esvectvv}
+% Backup and redefinition of \pkg{esvect} \refCom{vv} vector command.
+%    \begin{macrocode}
+\ifovar at option@esvect@
+  \let\esvectvv\vv
+  \undef\vv
+  \NewOverArrowCommand{vv}{esvect, middle config=auto}
+\fi
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection*{Predefined commands}
+%
+% \begin{macro}{\overrightarrow}
+%    \begin{macrocode}
+\ifovar at option@overrightarrow@
+  \DeclareOverArrowCommand{overrightarrow}{%
+    amsmath, middle config=relbar,
+    end=\ovar at rightarrow,
+    right arrow,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\underrightarrow}
+%    \begin{macrocode}
+\ifovar at option@underrightarrow@
+  \DeclareOverArrowCommand{underrightarrow}{%
+    amsmath, middle config=relbar,
+    end=\ovar at rightarrow,
+    right arrow,
+    arrow under,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\overleftarrow}
+%    \begin{macrocode}
+\ifovar at option@overleftarrow@
+  \DeclareOverArrowCommand{overleftarrow}{%
+    amsmath, middle config=relbar,
+    start=\ovar at leftarrow,
+    end=\relbar,
+    left arrow,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\underleftarrow}
+%    \begin{macrocode}
+\ifovar at option@underleftarrow@
+  \DeclareOverArrowCommand{underleftarrow}{%
+    amsmath, middle config=relbar,
+    start=\ovar at leftarrow,
+    end=\relbar,
+    left arrow,
+    arrow under,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\overleftrightarrow}
+%    \begin{macrocode}
+\ifovar at option@overleftrightarrow@
+  \DeclareOverArrowCommand{overleftrightarrow}{%
+    amsmath, middle config=relbar,
+    start=\ovar at leftarrow,
+    end=\ovar at rightarrow,
+    center arrow,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\underleftrightarrow}
+%    \begin{macrocode}
+\ifovar at option@underleftrightarrow@
+  \DeclareOverArrowCommand{underleftrightarrow}{%
+    amsmath, middle config=relbar,
+    start=\ovar at leftarrow,
+    end=\ovar at rightarrow,
+    center arrow,
+    arrow under,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\overrightharpoonup}
+%    \begin{macrocode}
+\ifovar at option@overrightharpoonup@
+  \DeclareOverArrowCommand{overrightharpoonup}{%
+    amsmath, middle config=relbar,
+    end=\rightharpoonup,
+    right arrow,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\underrightharpoonup}
+%    \begin{macrocode}
+\ifovar at option@underrightharpoonup@
+  \DeclareOverArrowCommand{underrightharpoonup}{%
+    amsmath, middle config=relbar,
+    end=\rightharpoonup,
+    right arrow,
+    arrow under,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\overrightharpoondown}
+%    \begin{macrocode}
+\ifovar at option@overrightharpoondown@
+  \DeclareOverArrowCommand{overrightharpoondown}{%
+    amsmath, middle config=relbar,
+    end=\rightharpoondown,
+    right arrow,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\underrightharpoondown}
+%    \begin{macrocode}
+\ifovar at option@underrightharpoondown@
+  \DeclareOverArrowCommand{underrightharpoondown}{%
+    amsmath, middle config=relbar,
+    end=\rightharpoondown,
+    right arrow,
+    arrow under,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\overleftharpoonup}
+%    \begin{macrocode}
+\ifovar at option@overleftharpoonup@
+  \DeclareOverArrowCommand{overleftharpoonup}{%
+    amsmath, middle config=relbar,
+    start=\leftharpoonup,
+    end=\relbar,
+    left arrow,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\underleftharpoonup}
+%    \begin{macrocode}
+\ifovar at option@underleftharpoonup@
+  \DeclareOverArrowCommand{underleftharpoonup}{%
+    amsmath, middle config=relbar,
+    start=\leftharpoonup,
+    end=\relbar,
+    left arrow,
+    arrow under,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\overleftharpoondown}
+%    \begin{macrocode}
+\ifovar at option@overleftharpoondown@
+  \DeclareOverArrowCommand{overleftharpoondown}{%
+    amsmath, middle config=relbar,
+    start=\leftharpoondown,
+    end=\relbar,
+    left arrow,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\underleftharpoondown}
+%    \begin{macrocode}
+\ifovar at option@underleftharpoondown@
+  \DeclareOverArrowCommand{underleftharpoondown}{%
+    amsmath, middle config=relbar,
+    start=\leftharpoondown,
+    end=\relbar,
+    left arrow,
+    arrow under,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\overbar}
+%    \begin{macrocode}
+\ifovar at option@overbar@
+  \DeclareOverArrowCommand{overbar}{%
+    amsmath, middle config=relbar,
+    start={\std at minus}, end={\std at minus},% \relbar is defined with \mathsm at sh
+    shift leftright=0,
+    space after arrow=-0.3ex,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\underbar}
+%    \begin{macrocode}
+\ifovar at option@underbar@
+  \DeclareOverArrowCommand{underbar}{%
+    amsmath, middle config=relbar,
+    start={\std at minus}, end={\std at minus},% \relbar is defined with \mathsm at sh
+    shift leftright=0,
+    arrow under,
+    space before arrow=-0.3ex,
+  }
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection*{Test macros}
+%
+% \begin{macro}{\ovar at testmathstyles}
+% Tabular containing the output of a command for the four math styles and
+% different patterns.
+%    \begin{macrocode}
+\newcommand{\ovar at testmathstyles}[2][]{
+  \begingroup
+  \newcommand*{\ovar at row@teststyle}[1]{%
+    $\displaystyle ##1$
+    & $\textstyle ##1$
+    & $\scriptstyle ##1$
+    & $\scriptscriptstyle ##1$
+    \\
+  }
+  \renewcommand*{\arraystretch}{1.5}
+  \begin{tabular*}{0.95\linewidth}{@{\extracolsep{\fill}} cccc}
+    \hline
+    \footnotesize\texttt{\texttt{\textbackslash displaystyle}}
+    & \footnotesize\texttt{\texttt{\textbackslash textstyle}}
+    & \footnotesize\texttt{\texttt{\textbackslash scriptstyle}}
+    & \footnotesize\texttt{\texttt{\textbackslash scriptscriptstyle}}
+    \\
+    \hline
+    \ovar at row@teststyle{\csuse{#2}{v}}
+    \ovar at row@teststyle{\csuse{#2}{AB}}
+    \ovar at row@teststyle{\csuse{#2}{\mathrm{grad}}}
+    \ovar at row@teststyle{\csuse{#2}{my~long~vector}}
+    \IfValueT{#1}{\ovar at row@teststyle{\csuse{#2}{#1}}}
+    \hline
+  \end{tabular*}
+  \endgroup
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\TestOverArrow}
+%    \begin{macrocode}
+\NewDocumentCommand{\TestOverArrow}{ s o m }{
+  \ifcsdef{#3}{}{%
+    \PackageWarning{overarrows}{Unknown name '#3' passed to
+      \protect\TestOverArrow}
+  }
+  \IfBooleanTF{#1}{%
+    \noindent\framebox{%
+      \begin{minipage}{0.95\linewidth}
+        \centering
+        \noindent\textbf{\large%
+          Test of \texttt{\textbackslash#3} and \texttt{\textbackslash#3*} macros}
+        \bigskip\par
+        \textbf{\texttt{\textbackslash#3} for different math styles}
+        \smallskip\par
+        \ovar at testmathstyles[#2]{#3}%
+        \bigskip\par
+        \textbf{\texttt{\textbackslash#3} kerning}
+        \begin{displaymath}
+          \csuse{#3}{t}_{\csuse{#3}{u}_{\csuse{#3}{v}}}
+          \qquad
+          \csuse{#3}{\imath}_0
+          \qquad
+          \csuse{#3}{v}
+          = \csuse{#3}{v}_x + \csuse{#3}{v}_y + \csuse{#3}{v}_z
+          = v_x \csuse{#3}{\imath} + v_y \csuse{#3}{\jmath} + v_z \csuse{#3}{k}
+        \end{displaymath}
+        \textbf{\texttt{\textbackslash#3*} kerning}
+        \begin{displaymath}
+          \csuse{#3}*{t}_{\csuse{#3}*{u}_{\csuse{#3}*{v}}}
+          \qquad
+          \csuse{#3}*{\imath}_0
+          \qquad
+          \csuse{#3}*{v}
+          = \csuse{#3}*{v}_x + \csuse{#3}*{v}_y + \csuse{#3}*{v}_z
+          = v_x \csuse{#3}*{\imath} + v_y \csuse{#3}*{\jmath} + v_z \csuse{#3}*{k}
+        \end{displaymath}
+      \end{minipage}%
+    }\bigskip\par
+  }{%
+    \ovar at testmathstyles[#2]{#3}%
+  }
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package> ^^A End of package implementation.
+%\fi
+%
+% \iffalse % ^^A The following is not for doc
+%
+%<*docstyle>
+%
+% \section*{overarrows-doc package}
+%
+% The following define some styles used for documentation and should not be
+% included in the documentation itself.
+%
+% \subsection*{Packages}
+%
+%    \begin{macrocode}
+\RequirePackage{xcolor}
+\PassOptionsToPackage{hyperref}{xcolor}
+\RequirePackage[many]{tcolorbox}
+\tcbuselibrary{listings}
+\tcbuselibrary{documentation}
+\hypersetup{hidelinks}
+%    \end{macrocode}
+%
+% \subsection*{Colors}
+%
+%    \begin{macrocode}
+\definecolor{ovar_lavender}{rgb}{0.92,0.92,1}
+\definecolor{ovar_darkblue}{rgb}{0.1,0.2,0.5}
+\definecolor{ovar_darkgreen}{rgb}{0,0.39,0}
+\definecolor{ovar_beige}{rgb}{.96,.96,.86}
+\colorlet{ovar_commands}{ovar_darkblue}
+\colorlet{ovar_keys}{ovar_darkgreen}
+\colorlet{ovar_lengths}{violet}
+\colorlet{ovar_options}{Definition} % from tcolorbox documentation
+%    \end{macrocode}
+%
+% \subsection*{listings styles}
+%
+%    \begin{macrocode}
+\lstdefinestyle{lstovardoc}{%
+  language = [LaTeX]TeX,
+  columns         = flexible,
+  keywordstyle    = {\bfseries\color{ovar_darkblue}},
+  texcsstyle      = *{\bfseries\color{ovar_darkblue}},
+  commentstyle    = {\color{gray}},
+  identifierstyle = {\color{ovar_darkgreen}},
+  morekeywords    = {},% keywordsprefix needs a morekeywords before
+  keywordsprefix  = {\\},
+%    \end{macrocode}
+% For literate, the extra braces around the replacement text avoid the error: "Argument of |lst at FillFixed@| has an extra \}."
+%    \begin{macrocode}
+  literate        = *{\$}{{\textcolor{red}{\$}}}{1}
+                    {\&}{{\textcolor{red}{\&}}}{1}
+                    {\}}{{\textcolor{darkgray}{\}}}}{1}
+                    {\{}{{\textcolor{darkgray}{\{}}}{1}
+                    {\\\\}{{\textcolor{red}{\textbackslash\textbackslash}}}{2}
+%    \begin{macrocode}
+% One \% and four spaces to remove extra lines added by \cs{macrocode}
+%    \end{macrocode}
+                    {\%\ \ \ \ }{}0,
+  basicstyle      = \ttfamily\footnotesize,
+  frame           = none,
+  framesep        = 0pt,
+  aboveskip       = 0pt,
+  belowskip       = 0pt,
+}
+\lstdefinestyle{lstovarcode}{%
+  style           = lstovardoc,
+  backgroundcolor = \color{ovar_beige},
+  breakindent     = 1cm,
+  numbers         = left,
+  numberstyle     = \scriptsize\ttfamily\color{gray},
+  aboveskip       = \smallskipamount,
+  belowskip       = \smallskipamount,
+}
+%    \end{macrocode}
+%
+% \subsection*{tcolorbox}
+%
+%    \begin{macrocode}
+\tcbset{% copied and adapted from tcolorbox.doc.s_main.sty
+  documentation listing style=lstovardoc,%
+  doc keypath=overarrows,
+  size=small,%
+  % verbatim ignore percent,
+  %% styles
+  docexample/.style={%
+    bicolor jigsaw,
+    before skip balanced=\medskipamount,
+    after skip balanced=\medskipamount,
+    fonttitle=\bfseries,
+    fontlower=\normalfont,
+    halign lower=center,
+    colframe=ovar_darkblue,
+    colback=ovar_lavender,
+    colbacklower=white,
+    drop fuzzy shadow,
+  },
+  color key=ovar_keys,
+  color command=ovar_commands,
+  color length=ovar_lengths,
+  doc head key={fontlower=\footnotesize, collower=darkgray},
+  before doc body={\parskip=\smallskipamount},
+}
+%    \end{macrocode}
+%
+% \subsection*{Index}
+%
+% To deal with internal macros, use '=' as index actual, in place of '@'.
+%    \begin{macrocode}
+\begin{filecontents*}{\jobname.mst}
+actual '='
+\end{filecontents*}
+\tcbset{%
+  index actual={=},
+  index colorize=true,
+  index gather all,
+  index format=pgfsection,
+}
+%    \end{macrocode}
+% Redefine \cs{tcb at doc@index at pgfsection} to add prologue (adapted from
+% tcbdocumentation.code.tex).
+%    \begin{macrocode}
+\def\tcb at doc@index at pgfsection{%
+  \def\index at prologue{%
+    \section*{\kvtcb at text@index}\addcontentsline{toc}{section}{\kvtcb at text@index}
+    {\small%
+      Entries listed in the categories ``commands", ``lengths", and
+      ``internal macros" also include references to package implementation. }
+    \bigskip\par\noindent%
+  }%
+  \tcb at doc@index at pgf@%
+}
+%    \end{macrocode}
+% Unset |\lst at UM| before indexing, to deals with comma (avoid |\unhbox \voidb at x
+% \kern \z@| in index file, see: \url{https://tex.stackexchange.com/a/510108}).
+%    \begin{macrocode}
+\newcommand{\indexmacro}[1]{%
+  \begingroup
+  \let\lst at UM\@empty%
+  \index{{Commands!#1=\tcbIndexPrintComC {#1}}}%
+  \endgroup
+}
+\newcommand{\indexmacrointernal}[1]{%
+  \begingroup
+  \let\lst at UM\@empty%
+  \index{{Internal macros!#1=\tcbIndexPrintComC {#1}}}%
+  \endgroup
+}
+\newcommand{\indexlength}[1]{%
+  \begingroup
+  \let\lst at UM\@empty%
+  \index{{Lengths!#1=\tcbIndexPrintLenC {#1}}}%
+  \endgroup
+}
+%    \end{macrocode}
+%
+% \subsection*{Redefinition of macrocode environment}
+%
+%    \begin{macrocode}
+\let\macrocode\relax
+\lstnewenvironment{macrocode}{%
+  \lstset{%
+    name=macrocode,
+    firstnumber=auto,
+    style       = lstovarcode,
+    showlines=false,
+%    \end{macrocode}
+% Commands and lengths identification and indexing
+%
+% Note: index works badly with inherited styles. It seems that "texcs" and
+% "index" keys should be set together.
+%    \begin{macrocode}
+    texcs       = [2]{% commands
+      DeclareOverArrowCommand, ProvideOverArrowCommand,%
+      NewOverArrowCommand, RenewOverArrowCommand,%
+      TestOverArrow, xjoinrel, smallermathstyle,%
+      esvectvv, vv,%
+      overrightarrow, overleftarrow, overleftrightarrow, overrightharpoonup,%
+      overrightharpoondown, overleftharpoonup, overleftharpoondown, overbar,%
+      underrightarrow, underleftarrow, underleftrightarrow, underrightharpoonup,%
+      underrightharpoondown, underleftharpoonup, underleftharpoondown, underbar,%
+      SetOverArrowsMethod,%
+    },
+    index       = [2][texcs2],%
+    indexstyle  = [2]\indexmacro,%
+    texcs       = [3]{% lengths
+      overarrowlength, overarrowthickness, overarrowsmallerthickness,%
+    },
+    index       = [3][texcs3],%
+    indexstyle  = [3]\indexlength,%
+%    \end{macrocode}
+% Internal macros identification and indexing
+%    \begin{macrocode}
+    texcs       = [4]{% internal macros
+      ovar at rightarrow, ovar at leftarrow, ifovar at option@oldarrows@,
+      ifovar at option@esvect@, ifovar at option@tikz@, ifovar at option@pstarrows@,
+      ifovar at detectsubscripts@, ifovar at option@debug@,
+      ifovar at option@overrightarrow@, ifovar at option@underrightarrow@,
+      ifovar at option@overleftarrow@, ifovar at option@underleftarrow@,
+      ifovar at option@overleftrightarrow@, ifovar at option@underleftrightarrow@,
+      ifovar at option@overrightharpoonup@, ifovar at option@underrightharpoonup@,
+      ifovar at option@overrightharpoondown@, ifovar at option@underrightharpoondown@,
+      ifovar at option@overleftharpoonup@, ifovar at option@underleftharpoonup@,
+      ifovar at option@overleftharpoondown@, ifovar at option@underleftharpoondown@,
+      ifovar at option@overbar@, ifovar at option@underbar@, ovar at set, ovar at length@min,
+      ovar at before@arrow, ovar at after@arrow, ovar at macro@stack, ovar at macro@arrow,
+      ovar at set@, ovar at shift@left, ovar at shift@right, ovar at stack@fill,
+      ovar at stackunder@fill, ovar at stack@lens, ovar at stackunder@lens,
+      ovar at macro@arrowfill, ovar at arrow@fill, ovar at arrow@start, ovar at trim@start,
+      ovar at trim@middle, ovar at arrow@middle, ovar at trim@end, ovar at arrow@end,
+      ovar at tikz@command, ovar at tikz@pathoptions, ovar at tikz@path,
+      ovar at tikz@options, ovar at picture@geometry, ovar at picture@linethickness,
+      ovar at picture@command, ovar at extralength, ovar at tempdim, ovar at set@arrowlength,
+      ovar at set@arrowthickness, ovar at stackover@@, ovar at stackunder@@,
+      ovar at stackover@, ovar at stackunder@, ovar at stackover@fill,
+      ovar at stackover@lens, ovar at set@common, ovar at starversion,
+      ovar at testmathstyles, ovar at row@teststyle,%
+    },
+    index       = [4][texcs4],%
+    indexstyle  = [4]\indexmacrointernal,%
+%    \end{macrocode}
+% Other macros identification
+%    \begin{macrocode}
+    moretexcs   = [5]{% other macros
+      Relbar, relbareda, relbaredd, rightarrow, Rightarrow, varleftarrow,
+      varrightarrow, twoheadrightarrow,%
+    },
+%    \end{macrocode}
+% Il would be nice to also index keys, but spaces are badly handled by listings.
+%    \begin{macrocode}
+%^^A    morekeywords = [2]{%
+%^^A      no stack macro hook, stack macro, arrow macro, no arrow macro hook, min
+%^^A      length, before arrow, after arrow, space before arrow, space after arrow,
+%^^A      shift left, shift right, shift leftright, center arrow, left arrow, right
+%^^A      arrow, arrow under, fill macro, start, middle, end, trim start, trim
+%^^A      middle, trim end, trim, no trimming, middle config, amsmath, esvect, tikz
+%^^A      command, tikz options, path options, path, add path options, add tikz
+%^^A      options, arrows, line thickness, thinner, picture command, geometry, detect subscripts,
+%^^A    },
+%^^A    index       = [3][keywords2],%
+%^^A    indexstyle  = [3]\lstindexmacro,%
+  }
+%    \end{macrocode}
+% Save and restore the line number (not done by environments defined with
+% |\lstnewenvironment|, see \url{https://tex.stackexchange.com/a/95048}):
+%    \begin{macrocode}
+  \csname\@lst @SetFirstNumber\endcsname
+}{%
+  \csname \@lst @SaveFirstNumber\endcsname
+}
+%    \end{macrocode}
+%
+% \subsection*{Redefinition of macro environment}
+%
+%    \begin{macrocode}
+\DeclareDocumentEnvironment{macro}{m}{%
+%    \end{macrocode}
+% Extraction of macro name. Save/restore current \cs{escapechar} in \cs{count@}.
+%    \begin{macrocode}
+ \count@\escapechar \escapechar=-1
+ \edef\macroname{\string#1}
+ \escapechar\count@
+ \marginpar{%
+   \parbox{0.88\linewidth}{%
+     \scriptsize\flushright\ifcsdef{r at com:\macroname}{\refCom*{\macroname}}{\cs{\macroname}}%
+   }%
+ }
+}{% end of macro environment
+}
+%    \end{macrocode}
+%
+% \subsection*{Documentation styles}
+%
+% \subsubsection*{Tool for references}
+%
+%    \begin{macrocode}
+\def\refDoc#1{\tcb at ref@doc{#1}}
+%    \end{macrocode}
+%
+% \subsubsection*{Package name}
+%
+%    \begin{macrocode}
+\newcommand{\pkg}[1]{\textsf{#1}}
+%    \end{macrocode}
+%
+% \subsubsection*{Package options}
+%
+% Definition of docOption environment to document package options, like keys.
+%    \begin{macrocode}
+\newrobustcmd{\tcbIndexPrintOptionCA}[1]{% adapted from \tcbIndexPrintKeyCA
+  \tcb at Index@Print at CA{#1}{ovar_options}{package option}%
+}
+\newrobustcmd{\tcbIndexPrintOptionC}[1]{% adapted from \tcbIndexPrintKeyCA
+  \tcb at Index@Print at C{#1}{ovar_options}%
+}
+\DeclareDocumentEnvironment{docOption}{ O{} m }{%
+  \begin{docKey*}[]
+    [doc name={#2}, doc label={opt:#2}, color key=ovar_options, #1]
+    {#2}{}{}%
+    \kvtcb at index@command{%
+      \kvtcb at doc@sortindex\idx at actual\tcbIndexPrintOptionCA{#2}%
+    }%
+    \kvtcb at index@command{%
+      {Package options}\idx at level\kvtcb at doc@sortindex\idx at actual%
+      \tcbIndexPrintOptionC{#2}%
+    }%
+}{%
+  \end{docKey*}%
+}
+\def\refOpt{\refDoc{key:opt}}
+%    \end{macrocode}
+%
+% \subsubsection*{Lengths}
+%
+% Definition of docLength environment to document lengths, like commands.
+%    \begin{macrocode}
+\let\tcbdocLength\docLength% save original definition
+\DeclareDocumentEnvironment{docLength}{ O{} m }{%
+  \begin{docCommand*}[doc name=#2, color command=ovar_lengths,#1]{#2}{}
+    \protected at edef\@currentlabel{\cs{#2}}%
+    \label{len:#2}%
+    %% add length index entry (from \docLength original definition)
+    \kvtcb at index@command{%
+      \kvtcb at doc@sortindex\idx at actual\tcbIndexPrintLenCA{\kvtcb at doc@index}%
+    }%
+    \kvtcb at index@command{%
+      \kvtcb at text@lengths\idx at level\kvtcb at doc@sortindex\idx at actual%
+      \tcbIndexPrintLenC{\kvtcb at doc@index}%
+    }%
+}{%
+  \end{docCommand*}%
+}
+\def\refLen{\refDoc{len}}
+%    \end{macrocode}
+%
+%</docstyle>
+%
+%<*comment>
+%
+% \section*{Notes}
+%
+% \subsection*{Bash commands reminder}
+%^^A the command |awk '!line[$0]++'| remove duplicate lines
+%
+% \subsubsection*{List of package options}
+%
+\begin{lstlisting}[language={bash}]
+rg -o -N 'DeclareOption\{\w+' overarrows.dtx | rg -o '\w+$'
+\end{lstlisting} %^^A dummy '|' for emacs
+%
+% \subsubsection*{List of commands}
+%
+\begin{lstlisting}[language={bash}]
+rg -o -N '^[[:blank:]]*\\(let|def|newcommand\*?|(New|Renew|Declare|Provides)\w*Command)[{\\]+[\w@]+' overarrows.sty | rg -o '[\w@]+$' | grep -v ovar@ | awk '!line[$0]++'
+\end{lstlisting} %^^A dummy '|' for emacs
+%
+% \subsubsection*{List of internal macros and lengths}
+%
+\begin{lstlisting}[language={bash}]
+  rg '\\(if)?ovar@[\w@]+' -o  -N overarrows.dtx | rg -v '(@true|@false)' | awk '!line[$0]++'
+\end{lstlisting} %^^A dummy '|' for emacs
+%
+% \subsubsection*{List of lengths}
+%
+\begin{lstlisting}[language={bash}]
+rg -o -N '^[[:blank:]]*\\(def|new)length[{\\]+[\w@]+' overarrows.sty | rg -o '[\w@]+$' | grep -v ovar@| awk '!line[$0]++'
+\end{lstlisting}
+%
+% \subsubsection*{List of keys}
+%
+\begin{lstlisting}[language={bash}]
+rg -o -N ".*/\." overarrows.sty | sed 's/\/\.$//' | sed -r 's/^([[:blank:]]|\\[[:alpha:]@]+\{)*//'  | awk '!line[$0]++'
+\end{lstlisting}
+%
+%</comment>
+%
+% \fi ^^A end of \iffalse
+%
+% \Finale
+%
+\endinput


Property changes on: trunk/Master/texmf-dist/source/latex/overarrows/overarrows.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/overarrows/overarrows.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/overarrows/overarrows.ins	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/overarrows/overarrows.ins	2023-01-20 23:02:46 UTC (rev 65599)
@@ -0,0 +1,48 @@
+%%
+%% Copyright (C) 2023 by Julien Labbé <Julien.Labbe at univ-grenoble-alpes.fr>
+%%
+%% This file may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
+%% (at your option) any later version. The latest version of this license is in
+%% the file https://www.latex-project.org/lppl.txt
+%%
+
+\input docstrip.tex
+\keepsilent
+
+\usedir{tex/latex/overarrows}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2023 by Julien Labbé <Julien.Labbe at univ-grenoble-alpes.fr>
+
+This file may be distributed and/or modified under the conditions of the LaTeX
+Project Public License (LPPL), either version 1.3c of this license or (at your
+option) any later version. The latest version of this license is in the file
+https://www.latex-project.org/lppl.txt
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate{\file{overarrows.sty}{\from{overarrows.dtx}{package}}}
+\generate{\file{overarrows-doc.sty}{\from{overarrows.dtx}{docstyle}}}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{*                                                           *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX:                    *}
+\Msg{*                                                           *}
+\Msg{*     overarrows.sty                                      *}
+\Msg{*                                                           *}
+\Msg{* To produce the documentation run the file                 *}
+\Msg{* overarrows.dtx through LaTeX.                           *}
+\Msg{*                                                           *}
+\Msg{* Happy TeXing!                                             *}
+\Msg{*                                                           *}
+\Msg{*************************************************************}
+
+\endbatchfile

Deleted: trunk/Master/texmf-dist/tex/latex/overarrows/LICENSE
===================================================================
--- trunk/Master/texmf-dist/tex/latex/overarrows/LICENSE	2023-01-20 22:31:29 UTC (rev 65598)
+++ trunk/Master/texmf-dist/tex/latex/overarrows/LICENSE	2023-01-20 23:02:46 UTC (rev 65599)
@@ -1,416 +0,0 @@
-The LaTeX Project Public License
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
-LPPL Version 1.3c  2008-05-04
-
-Copyright 1999 2002-2008 LaTeX3 Project
-    Everyone is allowed to distribute verbatim copies of this
-    license document, but modification of it is not allowed.
-
-
-PREAMBLE
-========
-
-The LaTeX Project Public License (LPPL) is the primary license under
-which the LaTeX kernel and the base LaTeX packages are distributed.
-
-You may use this license for any work of which you hold the copyright
-and which you wish to distribute.  This license may be particularly
-suitable if your work is TeX-related (such as a LaTeX package), but 
-it is written in such a way that you can use it even if your work is 
-unrelated to TeX.
-
-The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
-below, gives instructions, examples, and recommendations for authors
-who are considering distributing their works under this license.
-
-This license gives conditions under which a work may be distributed
-and modified, as well as conditions under which modified versions of
-that work may be distributed.
-
-We, the LaTeX3 Project, believe that the conditions below give you
-the freedom to make and distribute modified versions of your work
-that conform with whatever technical specifications you wish while
-maintaining the availability, integrity, and reliability of
-that work.  If you do not see how to achieve your goal while
-meeting these conditions, then read the document `cfgguide.tex'
-and `modguide.tex' in the base LaTeX distribution for suggestions.
-
-
-DEFINITIONS
-===========
-
-In this license document the following terms are used:
-
-   `Work'
-    Any work being distributed under this License.
-    
-   `Derived Work'
-    Any work that under any applicable law is derived from the Work.
-
-   `Modification' 
-    Any procedure that produces a Derived Work under any applicable
-    law -- for example, the production of a file containing an
-    original file associated with the Work or a significant portion of
-    such a file, either verbatim or with modifications and/or
-    translated into another language.
-
-   `Modify'
-    To apply any procedure that produces a Derived Work under any
-    applicable law.
-    
-   `Distribution'
-    Making copies of the Work available from one person to another, in
-    whole or in part.  Distribution includes (but is not limited to)
-    making any electronic components of the Work accessible by
-    file transfer protocols such as FTP or HTTP or by shared file
-    systems such as Sun's Network File System (NFS).
-
-   `Compiled Work'
-    A version of the Work that has been processed into a form where it
-    is directly usable on a computer system.  This processing may
-    include using installation facilities provided by the Work,
-    transformations of the Work, copying of components of the Work, or
-    other activities.  Note that modification of any installation
-    facilities provided by the Work constitutes modification of the Work.
-
-   `Current Maintainer'
-    A person or persons nominated as such within the Work.  If there is
-    no such explicit nomination then it is the `Copyright Holder' under
-    any applicable law.
-
-   `Base Interpreter' 
-    A program or process that is normally needed for running or
-    interpreting a part or the whole of the Work.    
-
-    A Base Interpreter may depend on external components but these
-    are not considered part of the Base Interpreter provided that each
-    external component clearly identifies itself whenever it is used
-    interactively.  Unless explicitly specified when applying the
-    license to the Work, the only applicable Base Interpreter is a
-    `LaTeX-Format' or in the case of files belonging to the 
-    `LaTeX-format' a program implementing the `TeX language'.
-
-
-
-CONDITIONS ON DISTRIBUTION AND MODIFICATION
-===========================================
-
-1.  Activities other than distribution and/or modification of the Work
-are not covered by this license; they are outside its scope.  In
-particular, the act of running the Work is not restricted and no
-requirements are made concerning any offers of support for the Work.
-
-2.  You may distribute a complete, unmodified copy of the Work as you
-received it.  Distribution of only part of the Work is considered
-modification of the Work, and no right to distribute such a Derived
-Work may be assumed under the terms of this clause.
-
-3.  You may distribute a Compiled Work that has been generated from a
-complete, unmodified copy of the Work as distributed under Clause 2
-above, as long as that Compiled Work is distributed in such a way that
-the recipients may install the Compiled Work on their system exactly
-as it would have been installed if they generated a Compiled Work
-directly from the Work.
-
-4.  If you are the Current Maintainer of the Work, you may, without
-restriction, modify the Work, thus creating a Derived Work.  You may
-also distribute the Derived Work without restriction, including
-Compiled Works generated from the Derived Work.  Derived Works
-distributed in this manner by the Current Maintainer are considered to
-be updated versions of the Work.
-
-5.  If you are not the Current Maintainer of the Work, you may modify
-your copy of the Work, thus creating a Derived Work based on the Work,
-and compile this Derived Work, thus creating a Compiled Work based on
-the Derived Work.
-
-6.  If you are not the Current Maintainer of the Work, you may
-distribute a Derived Work provided the following conditions are met
-for every component of the Work unless that component clearly states
-in the copyright notice that it is exempt from that condition.  Only
-the Current Maintainer is allowed to add such statements of exemption 
-to a component of the Work. 
-
-  a. If a component of this Derived Work can be a direct replacement
-     for a component of the Work when that component is used with the
-     Base Interpreter, then, wherever this component of the Work
-     identifies itself to the user when used interactively with that
-     Base Interpreter, the replacement component of this Derived Work
-     clearly and unambiguously identifies itself as a modified version
-     of this component to the user when used interactively with that
-     Base Interpreter.
-     
-  b. Every component of the Derived Work contains prominent notices
-     detailing the nature of the changes to that component, or a
-     prominent reference to another file that is distributed as part
-     of the Derived Work and that contains a complete and accurate log
-     of the changes.
-  
-  c. No information in the Derived Work implies that any persons,
-     including (but not limited to) the authors of the original version
-     of the Work, provide any support, including (but not limited to)
-     the reporting and handling of errors, to recipients of the
-     Derived Work unless those persons have stated explicitly that
-     they do provide such support for the Derived Work.
-
-  d. You distribute at least one of the following with the Derived Work:
-
-       1. A complete, unmodified copy of the Work; 
-          if your distribution of a modified component is made by
-          offering access to copy the modified component from a
-          designated place, then offering equivalent access to copy
-          the Work from the same or some similar place meets this
-          condition, even though third parties are not compelled to
-          copy the Work along with the modified component;
-
-       2. Information that is sufficient to obtain a complete,
-          unmodified copy of the Work.
-
-7.  If you are not the Current Maintainer of the Work, you may
-distribute a Compiled Work generated from a Derived Work, as long as
-the Derived Work is distributed to all recipients of the Compiled
-Work, and as long as the conditions of Clause 6, above, are met with
-regard to the Derived Work.
-
-8.  The conditions above are not intended to prohibit, and hence do not
-apply to, the modification, by any method, of any component so that it
-becomes identical to an updated version of that component of the Work as
-it is distributed by the Current Maintainer under Clause 4, above.
-
-9.  Distribution of the Work or any Derived Work in an alternative
-format, where the Work or that Derived Work (in whole or in part) is
-then produced by applying some process to that format, does not relax or
-nullify any sections of this license as they pertain to the results of
-applying that process.
-     
-10. a. A Derived Work may be distributed under a different license
-       provided that license itself honors the conditions listed in
-       Clause 6 above, in regard to the Work, though it does not have
-       to honor the rest of the conditions in this license.
-      
-    b. If a Derived Work is distributed under a different license, that
-       Derived Work must provide sufficient documentation as part of
-       itself to allow each recipient of that Derived Work to honor the 
-       restrictions in Clause 6 above, concerning changes from the Work.
-
-11. This license places no restrictions on works that are unrelated to
-the Work, nor does this license place any restrictions on aggregating
-such works with the Work by any means.
-
-12.  Nothing in this license is intended to, or may be used to, prevent
-complete compliance by all parties with all applicable laws.
-
-
-NO WARRANTY
-===========
-
-There is no warranty for the Work.  Except when otherwise stated in
-writing, the Copyright Holder provides the Work `as is', without
-warranty of any kind, either expressed or implied, including, but not
-limited to, the implied warranties of merchantability and fitness for a
-particular purpose.  The entire risk as to the quality and performance
-of the Work is with you.  Should the Work prove defective, you assume
-the cost of all necessary servicing, repair, or correction.
-
-In no event unless required by applicable law or agreed to in writing
-will The Copyright Holder, or any author named in the components of the
-Work, or any other party who may distribute and/or modify the Work as
-permitted above, be liable to you for damages, including any general,
-special, incidental or consequential damages arising out of any use of
-the Work or out of inability to use the Work (including, but not limited
-to, loss of data, data being rendered inaccurate, or losses sustained by
-anyone as a result of any failure of the Work to operate with any other
-programs), even if the Copyright Holder or said author or said other
-party has been advised of the possibility of such damages.
-
-
-MAINTENANCE OF THE WORK
-=======================
-
-The Work has the status `author-maintained' if the Copyright Holder
-explicitly and prominently states near the primary copyright notice in
-the Work that the Work can only be maintained by the Copyright Holder
-or simply that it is `author-maintained'.
-
-The Work has the status `maintained' if there is a Current Maintainer
-who has indicated in the Work that they are willing to receive error
-reports for the Work (for example, by supplying a valid e-mail
-address). It is not required for the Current Maintainer to acknowledge
-or act upon these error reports.
-
-The Work changes from status `maintained' to `unmaintained' if there
-is no Current Maintainer, or the person stated to be Current
-Maintainer of the work cannot be reached through the indicated means
-of communication for a period of six months, and there are no other
-significant signs of active maintenance.
-
-You can become the Current Maintainer of the Work by agreement with
-any existing Current Maintainer to take over this role.
-
-If the Work is unmaintained, you can become the Current Maintainer of
-the Work through the following steps:
-
- 1.  Make a reasonable attempt to trace the Current Maintainer (and
-     the Copyright Holder, if the two differ) through the means of
-     an Internet or similar search.
-
- 2.  If this search is successful, then enquire whether the Work
-     is still maintained.
-
-  a. If it is being maintained, then ask the Current Maintainer
-     to update their communication data within one month.
-     
-  b. If the search is unsuccessful or no action to resume active
-     maintenance is taken by the Current Maintainer, then announce
-     within the pertinent community your intention to take over
-     maintenance.  (If the Work is a LaTeX work, this could be
-     done, for example, by posting to comp.text.tex.)
-
- 3a. If the Current Maintainer is reachable and agrees to pass
-     maintenance of the Work to you, then this takes effect
-     immediately upon announcement.
-     
-  b. If the Current Maintainer is not reachable and the Copyright
-     Holder agrees that maintenance of the Work be passed to you,
-     then this takes effect immediately upon announcement.  
-    
- 4.  If you make an `intention announcement' as described in 2b. above
-     and after three months your intention is challenged neither by
-     the Current Maintainer nor by the Copyright Holder nor by other
-     people, then you may arrange for the Work to be changed so as
-     to name you as the (new) Current Maintainer.
-     
- 5.  If the previously unreachable Current Maintainer becomes
-     reachable once more within three months of a change completed
-     under the terms of 3b) or 4), then that Current Maintainer must
-     become or remain the Current Maintainer upon request provided
-     they then update their communication data within one month.
-
-A change in the Current Maintainer does not, of itself, alter the fact
-that the Work is distributed under the LPPL license.
-
-If you become the Current Maintainer of the Work, you should
-immediately provide, within the Work, a prominent and unambiguous
-statement of your status as Current Maintainer.  You should also
-announce your new status to the same pertinent community as
-in 2b) above.
-
-
-WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
-======================================================
-
-This section contains important instructions, examples, and
-recommendations for authors who are considering distributing their
-works under this license.  These authors are addressed as `you' in
-this section.
-
-Choosing This License or Another License
-----------------------------------------
-
-If for any part of your work you want or need to use *distribution*
-conditions that differ significantly from those in this license, then
-do not refer to this license anywhere in your work but, instead,
-distribute your work under a different license.  You may use the text
-of this license as a model for your own license, but your license
-should not refer to the LPPL or otherwise give the impression that
-your work is distributed under the LPPL.
-
-The document `modguide.tex' in the base LaTeX distribution explains
-the motivation behind the conditions of this license.  It explains,
-for example, why distributing LaTeX under the GNU General Public
-License (GPL) was considered inappropriate.  Even if your work is
-unrelated to LaTeX, the discussion in `modguide.tex' may still be
-relevant, and authors intending to distribute their works under any
-license are encouraged to read it.
-
-A Recommendation on Modification Without Distribution
------------------------------------------------------
-
-It is wise never to modify a component of the Work, even for your own
-personal use, without also meeting the above conditions for
-distributing the modified component.  While you might intend that such
-modifications will never be distributed, often this will happen by
-accident -- you may forget that you have modified that component; or
-it may not occur to you when allowing others to access the modified
-version that you are thus distributing it and violating the conditions
-of this license in ways that could have legal implications and, worse,
-cause problems for the community.  It is therefore usually in your
-best interest to keep your copy of the Work identical with the public
-one.  Many works provide ways to control the behavior of that work
-without altering any of its licensed components.
-
-How to Use This License
------------------------
-
-To use this license, place in each of the components of your work both
-an explicit copyright notice including your name and the year the work
-was authored and/or last substantially modified.  Include also a
-statement that the distribution and/or modification of that
-component is constrained by the conditions in this license.
-
-Here is an example of such a notice and statement:
-
-  %% pig.dtx
-  %% Copyright 2005 M. Y. Name
-  %
-  % This work may be distributed and/or modified under the
-  % conditions of the LaTeX Project Public License, either version 1.3
-  % of this license or (at your option) any later version.
-  % The latest version of this license is in
-  %   http://www.latex-project.org/lppl.txt
-  % and version 1.3 or later is part of all distributions of LaTeX
-  % version 2005/12/01 or later.
-  %
-  % This work has the LPPL maintenance status `maintained'.
-  % 
-  % The Current Maintainer of this work is M. Y. Name.
-  %
-  % This work consists of the files pig.dtx and pig.ins
-  % and the derived file pig.sty.
-
-Given such a notice and statement in a file, the conditions
-given in this license document would apply, with the `Work' referring
-to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
-generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
-referring to any `LaTeX-Format', and both `Copyright Holder' and
-`Current Maintainer' referring to the person `M. Y. Name'.
-
-If you do not want the Maintenance section of LPPL to apply to your
-Work, change `maintained' above into `author-maintained'.  
-However, we recommend that you use `maintained', as the Maintenance
-section was added in order to ensure that your Work remains useful to
-the community even when you can no longer maintain and support it
-yourself.
-
-Derived Works That Are Not Replacements
----------------------------------------
-
-Several clauses of the LPPL specify means to provide reliability and
-stability for the user community. They therefore concern themselves
-with the case that a Derived Work is intended to be used as a
-(compatible or incompatible) replacement of the original Work. If
-this is not the case (e.g., if a few lines of code are reused for a
-completely different task), then clauses 6b and 6d shall not apply.
-
-
-Important Recommendations
--------------------------
-
- Defining What Constitutes the Work
-
-   The LPPL requires that distributions of the Work contain all the
-   files of the Work.  It is therefore important that you provide a
-   way for the licensee to determine which files constitute the Work.
-   This could, for example, be achieved by explicitly listing all the
-   files of the Work near the copyright notice of each file or by
-   using a line such as:
-
-    % This work consists of all files listed in manifest.txt.
-   
-   in that place.  In the absence of an unequivocal list it might be
-   impossible for the licensee to determine what is considered by you
-   to comprise the Work and, in such a case, the licensee would be
-   entitled to make reasonable conjectures as to which files comprise
-   the Work.
-

Deleted: trunk/Master/texmf-dist/tex/latex/overarrows/README.md
===================================================================
--- trunk/Master/texmf-dist/tex/latex/overarrows/README.md	2023-01-20 22:31:29 UTC (rev 65598)
+++ trunk/Master/texmf-dist/tex/latex/overarrows/README.md	2023-01-20 23:02:46 UTC (rev 65599)
@@ -1,27 +0,0 @@
-# overarrows - Custom extensible arrows over math expressions
-
-## Presentation
-
-A LaTeX package to create custom arrows over math expressions, mainly for
-vectors (but arrows can as well be drawn below). Arrows stretch with content,
-scale with math styles, and have a correct kerning when a subscript follows.
-Some predefined commands are also provided.
-
-## Author
-
-Julien Labbé <Julien.Labbe at univ-grenoble-alpes.fr> Université Grenoble-Alpes
-
-## Repository
-
-https://gricad-gitlab.univ-grenoble-alpes.fr/labbeju/latex-packages/-/tree/main/overarrows
-
-## Licence
-
-Copyright (C) 2023 by Julien Labbé
-
-This file may be distributed and/or modified under the conditions of the LaTeX
-Project Public License (LPPL), either version 1.3c of this license or (at your
-option) any later version. The latest version of this license is in the file
-https://www.latex-project.org/lppl.txt
-
-

Deleted: trunk/Master/texmf-dist/tex/latex/overarrows/overarrows-doc.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/overarrows/overarrows-doc.sty	2023-01-20 22:31:29 UTC (rev 65598)
+++ trunk/Master/texmf-dist/tex/latex/overarrows/overarrows-doc.sty	2023-01-20 23:02:46 UTC (rev 65599)
@@ -1,237 +0,0 @@
-%%
-%% This is file `overarrows-doc.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% overarrows.dtx  (with options: `docstyle')
-%% 
-%% This is a generated file.
-%% 
-%% Copyright (C) 2023 by Julien Labbé <Julien.Labbe at univ-grenoble-alpes.fr>
-%% 
-%% This file may be distributed and/or modified under the conditions of the LaTeX
-%% Project Public License (LPPL), either version 1.3c of this license or (at your
-%% option) any later version. The latest version of this license is in the file
-%% https://www.latex-project.org/lppl.txt
-%% 
-\RequirePackage{xcolor}
-\PassOptionsToPackage{hyperref}{xcolor}
-\RequirePackage[many]{tcolorbox}
-\tcbuselibrary{listings}
-\tcbuselibrary{documentation}
-\hypersetup{hidelinks}
-\definecolor{ovar_lavender}{rgb}{0.92,0.92,1}
-\definecolor{ovar_darkblue}{rgb}{0.1,0.2,0.5}
-\definecolor{ovar_darkgreen}{rgb}{0,0.39,0}
-\definecolor{ovar_beige}{rgb}{.96,.96,.86}
-\colorlet{ovar_commands}{ovar_darkblue}
-\colorlet{ovar_keys}{ovar_darkgreen}
-\colorlet{ovar_lengths}{violet}
-\colorlet{ovar_options}{Definition} % from tcolorbox documentation
-\lstdefinestyle{lstovardoc}{%
-  language = [LaTeX]TeX,
-  columns         = flexible,
-  keywordstyle    = {\bfseries\color{ovar_darkblue}},
-  texcsstyle      = *{\bfseries\color{ovar_darkblue}},
-  commentstyle    = {\color{gray}},
-  identifierstyle = {\color{ovar_darkgreen}},
-  morekeywords    = {},% keywordsprefix needs a morekeywords before
-  keywordsprefix  = {\\},
-  literate        = *{\$}{{\textcolor{red}{\$}}}{1}
-                    {\&}{{\textcolor{red}{\&}}}{1}
-                    {\}}{{\textcolor{darkgray}{\}}}}{1}
-                    {\{}{{\textcolor{darkgray}{\{}}}{1}
-                    {\\\\}{{\textcolor{red}{\textbackslash\textbackslash}}}{2}
-                    {\%\ \ \ \ }{}0,
-  basicstyle      = \ttfamily\footnotesize,
-  frame           = none,
-  framesep        = 0pt,
-  aboveskip       = 0pt,
-  belowskip       = 0pt,
-}
-\lstdefinestyle{lstovarcode}{%
-  style           = lstovardoc,
-  backgroundcolor = \color{ovar_beige},
-  breakindent     = 1cm,
-  numbers         = left,
-  numberstyle     = \scriptsize\ttfamily\color{gray},
-  aboveskip       = \smallskipamount,
-  belowskip       = \smallskipamount,
-}
-\tcbset{% copied and adapted from tcolorbox.doc.s_main.sty
-  documentation listing style=lstovardoc,%
-  doc keypath=overarrows,
-  size=small,%
-  % verbatim ignore percent,
-  %% styles
-  docexample/.style={%
-    bicolor jigsaw,
-    before skip balanced=\medskipamount,
-    after skip balanced=\medskipamount,
-    fonttitle=\bfseries,
-    fontlower=\normalfont,
-    halign lower=center,
-    colframe=ovar_darkblue,
-    colback=ovar_lavender,
-    colbacklower=white,
-    drop fuzzy shadow,
-  },
-  color key=ovar_keys,
-  color command=ovar_commands,
-  color length=ovar_lengths,
-  doc head key={fontlower=\footnotesize, collower=darkgray},
-  before doc body={\parskip=\smallskipamount},
-}
-\begin{filecontents*}{\jobname.mst}
-actual '='
-\end{filecontents*}
-\tcbset{%
-  index actual={=},
-  index colorize=true,
-  index gather all,
-  index format=pgfsection,
-}
-\def\tcb at doc@index at pgfsection{%
-  \def\index at prologue{%
-    \section*{\kvtcb at text@index}\addcontentsline{toc}{section}{\kvtcb at text@index}
-    {\small%
-      Entries listed in the categories ``commands", ``lengths", and
-      ``internal macros" also include references to package implementation. }
-    \bigskip\par\noindent%
-  }%
-  \tcb at doc@index at pgf@%
-}
-\newcommand{\indexmacro}[1]{%
-  \begingroup
-  \let\lst at UM\@empty%
-  \index{{Commands!#1=\tcbIndexPrintComC {#1}}}%
-  \endgroup
-}
-\newcommand{\indexmacrointernal}[1]{%
-  \begingroup
-  \let\lst at UM\@empty%
-  \index{{Internal macros!#1=\tcbIndexPrintComC {#1}}}%
-  \endgroup
-}
-\newcommand{\indexlength}[1]{%
-  \begingroup
-  \let\lst at UM\@empty%
-  \index{{Lengths!#1=\tcbIndexPrintLenC {#1}}}%
-  \endgroup
-}
-\let\macrocode\relax
-\lstnewenvironment{macrocode}{%
-  \lstset{%
-    name=macrocode,
-    firstnumber=auto,
-    style       = lstovarcode,
-    showlines=false,
-    texcs       = [2]{% commands
-      DeclareOverArrowCommand, ProvideOverArrowCommand,%
-      NewOverArrowCommand, RenewOverArrowCommand,%
-      TestOverArrow, xjoinrel, smallermathstyle,%
-      esvectvv, vv,%
-      overrightarrow, overleftarrow, overleftrightarrow, overrightharpoonup,%
-      overrightharpoondown, overleftharpoonup, overleftharpoondown, overbar,%
-      underrightarrow, underleftarrow, underleftrightarrow, underrightharpoonup,%
-      underrightharpoondown, underleftharpoonup, underleftharpoondown, underbar,%
-      SetOverArrowsMethod,%
-    },
-    index       = [2][texcs2],%
-    indexstyle  = [2]\indexmacro,%
-    texcs       = [3]{% lengths
-      overarrowlength, overarrowthickness, overarrowsmallerthickness,%
-    },
-    index       = [3][texcs3],%
-    indexstyle  = [3]\indexlength,%
-    texcs       = [4]{% internal macros
-      ovar at rightarrow, ovar at leftarrow, ifovar at option@oldarrows@,
-      ifovar at option@esvect@, ifovar at option@tikz@, ifovar at option@pstarrows@,
-      ifovar at detectsubscripts@, ifovar at option@debug@,
-      ifovar at option@overrightarrow@, ifovar at option@underrightarrow@,
-      ifovar at option@overleftarrow@, ifovar at option@underleftarrow@,
-      ifovar at option@overleftrightarrow@, ifovar at option@underleftrightarrow@,
-      ifovar at option@overrightharpoonup@, ifovar at option@underrightharpoonup@,
-      ifovar at option@overrightharpoondown@, ifovar at option@underrightharpoondown@,
-      ifovar at option@overleftharpoonup@, ifovar at option@underleftharpoonup@,
-      ifovar at option@overleftharpoondown@, ifovar at option@underleftharpoondown@,
-      ifovar at option@overbar@, ifovar at option@underbar@, ovar at set, ovar at length@min,
-      ovar at before@arrow, ovar at after@arrow, ovar at macro@stack, ovar at macro@arrow,
-      ovar at set@, ovar at shift@left, ovar at shift@right, ovar at stack@fill,
-      ovar at stackunder@fill, ovar at stack@lens, ovar at stackunder@lens,
-      ovar at macro@arrowfill, ovar at arrow@fill, ovar at arrow@start, ovar at trim@start,
-      ovar at trim@middle, ovar at arrow@middle, ovar at trim@end, ovar at arrow@end,
-      ovar at tikz@command, ovar at tikz@pathoptions, ovar at tikz@path,
-      ovar at tikz@options, ovar at picture@geometry, ovar at picture@linethickness,
-      ovar at picture@command, ovar at extralength, ovar at tempdim, ovar at set@arrowlength,
-      ovar at set@arrowthickness, ovar at stackover@@, ovar at stackunder@@,
-      ovar at stackover@, ovar at stackunder@, ovar at stackover@fill,
-      ovar at stackover@lens, ovar at set@common, ovar at starversion,
-      ovar at testmathstyles, ovar at row@teststyle,%
-    },
-    index       = [4][texcs4],%
-    indexstyle  = [4]\indexmacrointernal,%
-    moretexcs   = [5]{% other macros
-      Relbar, relbareda, relbaredd, rightarrow, Rightarrow, varleftarrow,
-      varrightarrow, twoheadrightarrow,%
-    },
-  }
-  \csname\@lst @SetFirstNumber\endcsname
-}{%
-  \csname \@lst @SaveFirstNumber\endcsname
-}
-\DeclareDocumentEnvironment{macro}{m}{%
- \count@\escapechar \escapechar=-1
- \edef\macroname{\string#1}
- \escapechar\count@
- \marginpar{%
-   \parbox{0.88\linewidth}{%
-     \scriptsize\flushright\ifcsdef{r at com:\macroname}{\refCom*{\macroname}}{\cs{\macroname}}%
-   }%
- }
-}{% end of macro environment
-}
-\def\refDoc#1{\tcb at ref@doc{#1}}
-\newcommand{\pkg}[1]{\textsf{#1}}
-\newrobustcmd{\tcbIndexPrintOptionCA}[1]{% adapted from \tcbIndexPrintKeyCA
-  \tcb at Index@Print at CA{#1}{ovar_options}{package option}%
-}
-\newrobustcmd{\tcbIndexPrintOptionC}[1]{% adapted from \tcbIndexPrintKeyCA
-  \tcb at Index@Print at C{#1}{ovar_options}%
-}
-\DeclareDocumentEnvironment{docOption}{ O{} m }{%
-  \begin{docKey*}[]
-    [doc name={#2}, doc label={opt:#2}, color key=ovar_options, #1]
-    {#2}{}{}%
-    \kvtcb at index@command{%
-      \kvtcb at doc@sortindex\idx at actual\tcbIndexPrintOptionCA{#2}%
-    }%
-    \kvtcb at index@command{%
-      {Package options}\idx at level\kvtcb at doc@sortindex\idx at actual%
-      \tcbIndexPrintOptionC{#2}%
-    }%
-}{%
-  \end{docKey*}%
-}
-\def\refOpt{\refDoc{key:opt}}
-\let\tcbdocLength\docLength% save original definition
-\DeclareDocumentEnvironment{docLength}{ O{} m }{%
-  \begin{docCommand*}[doc name=#2, color command=ovar_lengths,#1]{#2}{}
-    \protected at edef\@currentlabel{\cs{#2}}%
-    \label{len:#2}%
-    %% add length index entry (from \docLength original definition)
-    \kvtcb at index@command{%
-      \kvtcb at doc@sortindex\idx at actual\tcbIndexPrintLenCA{\kvtcb at doc@index}%
-    }%
-    \kvtcb at index@command{%
-      \kvtcb at text@lengths\idx at level\kvtcb at doc@sortindex\idx at actual%
-      \tcbIndexPrintLenC{\kvtcb at doc@index}%
-    }%
-}{%
-  \end{docCommand*}%
-}
-\def\refLen{\refDoc{len}}
-\endinput
-%%
-%% End of file `overarrows-doc.sty'.

Deleted: trunk/Master/texmf-dist/tex/latex/overarrows/overarrows.dtx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/overarrows/overarrows.dtx	2023-01-20 22:31:29 UTC (rev 65598)
+++ trunk/Master/texmf-dist/tex/latex/overarrows/overarrows.dtx	2023-01-20 23:02:46 UTC (rev 65599)
@@ -1,3703 +0,0 @@
-% \iffalse meta-comment
-%
-% Copyright (C) 2023 by Julien Labbé <Julien.Labbe at univ-grenoble-alpes.fr>
-%
-% This file may be distributed and/or modified under the conditions of the
-% LaTeX Project Public License (LPPL), either version 1.3c of this license or
-% (at your option) any later version. The latest version of this license is in
-% the file https://www.latex-project.org/lppl.txt
-%
-% \fi
-%
-% \iffalse
-%<*driver>
-\ProvidesFile{overarrows.dtx}
-%</driver>
-%<package>\NeedsTeXFormat{LaTeX2e}
-%<package>\ProvidesPackage{overarrows}
-%<*package>
-[2023/01/19 v1.0.1 Custom extensible arrows over math expressions]
-%</package>
-%
-%<*driver>
-\documentclass[nohyperref]{ltxdoc}
-
-\usepackage{overarrows-doc} %^^A defined at end of this file, with guard <docstyle>
-\usepackage[old-arrows, esvect, tikz, pstarrows, allcommands]{overarrows}
-
-\EnableCrossrefs
-\PageIndex
-% \CodelineIndex
-\RecordChanges
-% \OnlyDescription
-
-%% symbols
-\newcommand*{\symb}[1]{\colorbox{yellow!50}{\rule{0pt}{1ex}$#1$}}
-
-%% Arrows used in doc
-\usepackage{amssymb}% for \twoheadrightarrow
-\NewOverArrowCommand{amsoverrightarrow}{amsmath=strict, end={\rightarrow}}
-\NewOverArrowCommand{overrightnewarrow}{%
-    amsmath, middle config=relbar,  end=\rightarrow,
-    right arrow,
-  }
-\DeclareMathSymbol{\fldra}{\mathrel}{esvector}{'021}
-\DeclareMathSymbol{\fldrb}{\mathrel}{esvector}{'022}
-\DeclareMathSymbol{\fldrc}{\mathrel}{esvector}{'023}
-\DeclareMathSymbol{\fldrd}{\mathrel}{esvector}{'024}
-\DeclareMathSymbol{\fldre}{\mathrel}{esvector}{'025}
-\DeclareMathSymbol{\fldrf}{\mathrel}{esvector}{'026}
-\DeclareMathSymbol{\fldrg}{\mathrel}{esvector}{'027}
-\DeclareMathSymbol{\fldrh}{\mathrel}{esvector}{'030}
-\NewOverArrowCommand{esveca}{esvect=strict, end={\fldra}}
-\NewOverArrowCommand{esvecb}{esvect=strict, end={\fldrb}}
-\NewOverArrowCommand{esvecc}{esvect=strict, end={\fldrc}}
-\NewOverArrowCommand{esvecd}{esvect=strict, end={\fldrd}}
-\NewOverArrowCommand{esvece}{esvect=strict, end={\fldre}}
-\NewOverArrowCommand{esvecg}{esvect=strict, end={\fldrg}}
-\NewOverArrowCommand{esvech}{esvect=strict, end={\fldrh}}
-\NewOverArrowCommand{vva}{esvect, middle config=auto, end=\fldra}
-\NewOverArrowCommand{esvecf}{esvect=strict, end={\fldrf}}
-\NewOverArrowCommand{vvb}{esvect, middle config=auto, end=\fldrb}
-\NewOverArrowCommand{vvc}{esvect, middle config=auto, end=\fldrc}
-\NewOverArrowCommand{vvd}{esvect, middle config=auto, end=\fldrd}
-\NewOverArrowCommand{vve}{esvect, middle config=auto, end=\fldre}
-\NewOverArrowCommand{vvf}{esvect, middle config=auto, end=\fldrf}
-\NewOverArrowCommand{vvg}{esvect, middle config=auto, end=\fldrg}
-\NewOverArrowCommand{vvh}{esvect, middle config=auto, end=\fldrh}
-
-\makeatletter
-\newcommand{\unsetoldarrows}{
-  \let\ovar at rightarrow\rightarrow
-  \let\ovar at leftarrow\leftarrow
-}
-\newcommand{\setoldarrows}{
-  \let\ovar at rightarrow\varrightarrow
-  \let\ovar at leftarrow\varleftarrow
-}
-\makeatother
-
-\begin{document}
-
-\DocInput{overarrows.dtx}
-
-\PrintIndex
-\PrintChanges
-
-\end{document}
-%</driver>
-% \fi
-%
-% \changes{v1.0}{2023/01/18}{Initial version}
-%
-% \GetFileInfo{\jobname.dtx}
-%
-% \title{The \pkg{overarrows} package\thanks{This document
-% corresponds to \pkg{overarrows}~\fileversion, dated \filedate.}}
-% \author{Julien Labb\'e \\ \texttt{Julien.Labbe at univ-grenoble-alpes.fr}}
-%
-% \maketitle
-%
-% \begin{abstract}
-%   A \LaTeX{} package to create custom arrows over math expressions, mainly for
-%   vectors (but arrows can as well be drawn below). Arrows stretch with
-%   content, scale with math styles, and have a correct kerning when a subscript
-%   follows.
-%
-% \bigskip
-%
-% Short example:
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\NewOverArrowCommand{overrightharpoon}{%
-  end=\rightharpoonup
-}
-
-\begin{align*}
-  &\overrightharpoon{v} && \overrightharpoon{v}_{subscript} \\
-  &\overrightharpoon{ABCD} && \overrightharpoon*{v}_{subscript}
-\end{align*}
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-%\bigskip
-%
-% Predefined commands are also provided:
-% \begin{itemize}
-%  \item to typeset vectors:
-%   $$ \vv{v} \qquad \vv{AB}, $$
-%
-% \item to draw arrows of various shapes above math expressions:
-% \begin{align*}
-%   \overrightarrow{AB}
-%   && \overleftarrow{AB}
-%   && \overleftrightarrow{AB}
-%   && \overrightharpoonup{AB}
-%   && \overleftharpoonup{AB}
-%   && \overrightharpoondown{AB}
-%   && \overleftharpoondown{AB}
-%   && \overbar{AB},
-% \end{align*}
-%
-% \item to draw arrows of various shapes under math expressions:
-% \begin{align*}
-%   \underrightarrow{AB}
-%   && \underleftarrow{AB}
-%   && \underleftrightarrow{AB}
-%   && \underrightharpoonup{AB}
-%   && \underleftharpoonup{AB}
-%   && \underrightharpoondown{AB}
-%   && \underleftharpoondown{AB}
-%   && \underbar{AB}.
-% \end{align*}
-% \end{itemize}
-%
-% \end{abstract}
-%
-% \clearpage
-%
-% \tableofcontents{}
-%\clearpage
-%
-% \section{Presentation of the package}
-% \label{sec:package-description}
-%
-% The \pkg{overarrows} package allows to create commands for drawing arrows over
-% math expressions. These arrows:
-% \begin{itemize}
-%  \item are fully customisable, at command definition, through a key-value
-%   interface;
-%  \item stretch with the content and can cover many characters, like in $\vv{AB}$;
-%  \item scale with math styles\footnotemark{}, like in
-%  $\vv*{v}_{\vv*{u}_{\vv*{w}}}$.
-% \footnotetext{\cs{displaystyle}, \cs{textstyle},  \cs{scriptstyle} and
-% \cs{scriptscriptstyle}.}
-% \end{itemize}
-%
-% Commands created with the \pkg{overarrows} package are provided with a starred
-% variant, that removes the extra end space generated by the arrow. This is
-% particularly useful when the command is followed by a subscript. For example,
-% the velocity of the center of mass can be written with exactly the same
-% kerning when scalar $v_{\text{cm}}$ or vector $\vv*{v}_{\text{cm}}$ (no extra
-% space before the subscript, unlike the output of the unstarred variant:
-% $\vv{v}_{\text{cm}}$).
-%
-% The \pkg{overarrows} package was primitively written for vectors, but in
-% a highly customisable way. It can be used to define a large variety of arrows,
-% using math symbols, or PGF/TikZ commands. It's also possible to create
-% commands that draw the arrows under. Some predefined commands are provided,
-% giving\footnotemark{}, for arrow over:
-% \footnotetext{Displayed here with the \refOpt{old-arrows} option.}
-% \begin{align*}
-%   \overrightarrow{\alpha+\beta}
-%   && \overleftarrow{\alpha+\beta}
-%   && \overleftrightarrow{\alpha+\beta}
-%   && \overrightharpoonup{\alpha+\beta}
-%   && \overleftharpoonup{\alpha+\beta}
-%   && \overrightharpoondown{\alpha+\beta}
-%   && \overleftharpoondown{\alpha+\beta}
-%   && \overbar{\alpha+\beta}
-% \end{align*}
-% and for arrow under :
-% \begin{align*}
-%   \underrightarrow{\alpha+\beta}
-%   && \underleftarrow{\alpha+\beta}
-%   && \underleftrightarrow{\alpha+\beta}
-%   && \underrightharpoonup{\alpha+\beta}
-%   && \underleftharpoonup{\alpha+\beta}
-%   && \underrightharpoondown{\alpha+\beta}
-%   && \underleftharpoondown{\alpha+\beta}
-%   && \underbar{\alpha+\beta}.
-% \end{align*}
-%
-% \section{Introduction}
-%
-% \subsection{Vector arrows}
-%
-% Vectors are commonly typeset in bold face, or with an arrow
-% above\footnotemark{}. For this second convention, \TeX/\LaTeX provides the
-% command \cs{vec}, which accents its content (using the \cs{mathaccent}
-% command) with the character~\symb{\mathchar "017E\relax}
-% (\cs{mathchar}|"017E| in Computer Modern font).
-% But \symb{\mathchar "017E\relax} isn't extensible, and gives: $\vec{v}$,
-% $\vec{AB}$ or $\vec{\text{grad}}$ (there's no command \cs{widevec} analogous
-% to \cs{widehat}).
-%
-% \footnotetext{See, for example: International Organization for
-% Standardization. (2019). \emph{Quantities and units -- Part 2: Mathematics}
-% (ISO Standard No. 80000-2:2019).
-% \url{https://www.iso.org/standard/64973.html}.}
-%
-% An extensible alternative is given by the command \cs{overrightarrow},
-% available in \TeX/\LaTeX, and which is redefined by the commonly used
-% \pkg{amsmath} package. But its arrow, built with the \cs{rightarrow} symbol
-% \symb{\rightarrow}, is too large with the default \emph{Computer Modern} font:
-% $\amsoverrightarrow{AB}$. Another alternative is the \pkg{esvect} package,
-% which provides the \cs{vv} command and a set of custom arrows: $\esveca{AB}$,
-% $\esvecb{AB}$, $\esvecc{AB}$, $\esvecd{AB}$, $\esvece{AB}$, $\esvecf{AB}$,
-% $\esvecg{AB}$, $\esvech{AB}$.
-%
-% \subsection{Stack and arrow macros}
-%
-% It worth looking at the definition of \pkg{amsmath} \cs{overrightarrow}
-% command:
-% \iffalse
-%<*example>
-% \fi
-\begin{dispListing}
-  \long macro:->\mathpalette {\overarrow@ \rightarrowfill@ }
-\end{dispListing}
-% \iffalse
-%</example>
-% \fi
-% \noindent Three macros are used here:
-% \begin{description}
-%    \item[\cs{mathpalette}] adapts the output to the current math style;
-%    \item[\cs{overarrow@}] is the \emph{stack macro}, that puts the arrow above
-%    the content;
-%    \item[\cs{rightarrowfill@}] is the \emph{arrow macro}, that holds the
-%    content of the arrow.
-% \end{description}
-% The command \cs{vv} from \pkg{esvec} is defined with a very similar way, using
-% its own stack macro (\cs{overvect@}) and arrow macro (\cs{vectfill@}).
-%
-% \medskip
-%
-% The \pkg{overarrows} package uses the same mechanism. Arrow and stack macros
-% are set, at command creation, through a key-value interface provided by the
-% \pkg{pgfkeys} package (after creation, however, the command definition is
-% static and the key-value interface is not used).
-%
-% \subsection{Extensible arrows}
-% \label{sec:extensible-arrows}
-%
-% Arrows drawn by the commands \cs{overrightarrow} or \cs{vv} are built by
-% joining math symbols, and made extensible by repetition of the central
-% symbol\footnotemark{}. Thus, the line of the macro \cs{overrightarrow} is made
-% by repetition of command \cs{relbar} \symb{\relbar} (which simply corresponds
-% to the minus sign), while \cs{vv} use its own command \cs{relbareda}
-% \symb{\relbareda}.
-%
-%\footnotetext{Using the \TeX{} \cs{cleaders} command.}
-%
-% This method may generate some undesirable spacing issues, when symbols
-% badly overlap. See, for example, the output of \pkg{amsmath}
-% \cs{overrightarrow} (left) and \pkg{esvect} \cs{vv} (right) in
-% \cs{scriptscriptstyle} math style (scaled by a factor~ 4):
-% \begin{center}
-%   \scalebox{4}{$\scriptscriptstyle \amsoverrightarrow{long~vector}$}
-%   \qquad
-%   \scalebox{4}{$\scriptscriptstyle \esvectvv{long~vector}$}.
-% \end{center}
-% While the arrow on the left lets guess where the symbols \symb{\relbar}
-% overlap, the arrow on the right present unwanted spaces and show clearly its
-% composition as association of the symbols \symb{\relbaredd}, \symb{\relbareda}
-% and \symb{\fldr}.
-%
-% \medskip
-%
-% By default, the \pkg{overarrows} package uses the same mechanism to extend
-% arrows according to their contents. Settings and tools are provided to perform
-% fine tuning and avoid spacing issues. As example, see below the
-% \cs{overrightarrow} and \cs{vv} commands, as redefined by \pkg{overarrows} (in
-% \cs{scriptscriptstyle} and scaled by a factor~4):
-% \begin{center}
-%   \scalebox{4}{$\scriptscriptstyle \overrightnewarrow{long~vector}$}
-%   \qquad
-%   \scalebox{4}{$\scriptscriptstyle \vv{long~vector}$}
-% \end{center}
-%
-% The \pkg{overarrows} package also provides an alternative mechanism.
-% When used, the length \cs{overarrowlength} is set, according to the arrow
-% command content, and can be employed, for example, to draw arrows using
-% PGF/TikZ or the \LaTeX{} picture environment.
-%
-% \section{Quick start}
-%
-% \subsection{Loading the package \pkg{overarrows}}
-%
-% To load the \pkg{overarrows}, simply add in preamble, before the
-% ``\cs{begin}|{document}|":
-% \iffalse
-%<*example>
-% \fi
-\begin{dispListing}
-\usepackage{overarrows}
-\end{dispListing}
-% \iffalse
-%</example>
-% \fi
-%
-% Options can be given, in a comma-separated list. For example, to use the
-% predefined commands shown in the section~\ref{sec:package-description},
-% page~\pageref{sec:package-description}, write:
-% \iffalse
-%<*example>
-% \fi
-\begin{dispListing}
-\usepackage[allcommands, old-arrows]{overarrows}
-\end{dispListing}
-% \iffalse
-%</example>
-% \fi
-% \noindent This define the commands (described in
-% section~\ref{sec:predefined-commands},
-% page~\pageref{sec:predefined-commands}):
-% \begin{center}
-% \begin{minipage}{0.5\linewidth}
-%   \begin{itemize}
-%   \item \refCom{overrightarrow}
-%   \item \refCom{overleftarrow}
-%   \item \refCom{overleftrightarrow}
-%   \item \refCom{overrightharpoonup}
-%   \item \refCom{overrightharpoondown}
-%   \item \refCom{overleftharpoonup}
-%   \item \refCom{overleftharpoondown}
-%   \item \refCom{overbar}
-%   \end{itemize}
-% \end{minipage}\hfill
-% \begin{minipage}{0.5\linewidth}
-%   \begin{itemize}
-%   \item \refCom{underrightarrow}
-%   \item \refCom{underleftarrow}
-%   \item \refCom{underleftrightarrow}
-%   \item \refCom{underrightharpoonup}
-%   \item \refCom{underrightharpoondown}
-%   \item \refCom{underleftharpoonup}
-%   \item \refCom{underleftharpoondown}
-%   \item \refCom{underbar}
-%   \end{itemize}
-% \end{minipage}
-% \end{center}
-% Note that the \refOpt{old-arrows} option may give bad results, if math fonts
-% have been changed. Simply remove the option in this case.
-%
-% Many other options are available. See the complete list,
-% page~\pageref{sec:package-options}.
-%
-% \subsection{Commands creation}
-%
-% Commands are created with \refCom{NewOverArrowCommand}. This macro take two
-% mandatory arguments : the name of the command (without backslash), and the
-% arrow configuration as comma-separated list of key-values. By default, a right
-% arrow is set:
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\NewOverArrowCommand{myovercmd}{}
-$\myovercmd{test}$
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-% \noindent Commands are defined with a starred variant, designed to handle
-% subscripts:
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-$ v_{sub} \qquad \myovercmd{v}_{sub} \qquad \myovercmd*{v}_{sub} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% \subsection{Start and end of the arrow}
-%
-% Extremities of the arrow are set by the keys \refKey{start} and \refKey{end}.
-% For example, an arrow starting with a hook (symbols \cs{lhook} \symb{\lhook})
-% and ending with two heads (symbol \cs{twoheadrightarrow}
-% \symb{\twoheadrightarrow}) is defined by:
-% \iffalse
-%<*example>
-% \fi
-\begin{dispListing}
-\NewOverArrowCommand{overhooktwoheadrightarrow}{%
-  start=\lhook, end=\twoheadrightarrow,
-}
-\end{dispListing}
-% \iffalse
-%</example>
-% \fi
-% \noindent Note that \cs{twoheadrightarrow} must be defined, as it is not in
-% \LaTeX{}. This can be done with the package \pkg{amssymb}, by adding in
-% preamble:
-% \iffalse
-%<*example>
-% \fi
-\begin{dispListing}
-\usepackage{amssymb}
-\end{dispListing}
-% \iffalse
-%</example>
-% \fi
-% With the previous definition, the result of the command
-% \cs{overhooktwoheadrightarrow} is faulty:
-% \iffalse
-%<*example>
-% \fi
-\NewOverArrowCommand{overhooktwoheadrightarrow}{%
-  start=\lhook, end=\twoheadrightarrow,
-}
-\begin{dispExample}
-$ \overhooktwoheadrightarrow{v} \qquad \overhooktwoheadrightarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-% \noindent The problem comes from symbols junction and the trimming used to
-% obtain their overlap. It can be solved with the keys \refKey{trim start} and
-% \refKey{trim end}, which are numbers and set the corresponding trimming in
-% math units (typically |1/18 em|). Appropriate values gives better results:
-% \iffalse
-%<*example>
-% \fi
-\csundef{overhooktwoheadrightarrow}
-\begin{dispExample}
-\NewOverArrowCommand{overhooktwoheadrightarrow}{%
-  start=\lhook, end=\twoheadrightarrow,
-  trim start=1.5, trim end=2,
-}
-$ \overhooktwoheadrightarrow{v} \qquad \overhooktwoheadrightarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% \medskip
-%
-% If the math font differs from the default \emph{Computer Modern}, the central
-% part of the arrow may have inappropriate position or line width. This is
-% because the default symbol used for the arrow line is \cs{relbareda}
-% \symb{\relbareda} from the \pkg{esvect} package. If needed, try to set the
-% \refKey{middle} key with the symbol \cs{relbar} \symb{\relbar}. The trimming
-% should also be adapted:
-% \iffalse
-%<*example>
-% \fi
-\csundef{overhooktwoheadrightarrow}
-\begin{dispExample}
-\NewOverArrowCommand{overhooktwoheadrightarrow}{%
-  start=\lhook, end=\twoheadrightarrow, middle=\relbar, %
-  trim start=0, trim end=3, trim middle=5,
-}
-$ \overhooktwoheadrightarrow{v} \qquad \overhooktwoheadrightarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% Finding the correct values for \refKey{trim start}, \refKey{trim end} and
-% \refKey{trim middle} may need many trials. For this purpose, the macro
-% \refCom{TestOverArrow} displays the result of a command for different lengths
-% and math styles:
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\TestOverArrow{overhooktwoheadrightarrow}
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% \subsection{Size and position of the arrow}
-%
-% A command \cs{OverRightarrow}, built with the symbols \cs{Relbar}
-% \symb{\Relbar} and \cs{Rightarrow} \symb{\Rightarrow}, gives:
-%\iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\NewOverArrowCommand{OverRightarrow}{%
-  start=\Relbar,
-  middle=\Relbar,
-  end=\Rightarrow,
-  trim=4,
-}
-$ \OverRightarrow{v} \qquad \OverRightarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%\noindent The key \refKey{trim} sets \refKey{trim start}, \refKey{trim middle} and
-%\refKey{trim end} with the same value.
-%
-% The previous arrow is visually too big. The macro \refCom{smallermathstyle}
-% allows to obtain a better result:
-% \iffalse
-%<*example>
-% \fi
-\csundef{OverRightarrow}
-\begin{dispExample}
-\NewOverArrowCommand{OverRightarrow}{%
-  start={\smallermathstyle\Relbar},
-  middle={\smallermathstyle\Relbar},
-  end=\Rightarrow,
-  trim=4,
-}
-$ \OverRightarrow{v} \qquad \OverRightarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-% \noindent Note that \refCom{smallermathstyle} should not be used for
-% \refKey{end}, because this last is formatted with the same math style as
-% \refKey{start}.
-%
-% It would be better to add an extra space between the arrow and the content of
-% the command. This can be done with the key \refKey{space after arrow}:
-% \iffalse
-%<*example>
-% \fi
-\csundef{OverRightarrow}
-\begin{dispExample}
-\NewOverArrowCommand{OverRightarrow}{%
-  start={\smallermathstyle\Relbar},
-  middle={\smallermathstyle\Relbar},
-  end=\Rightarrow,
-  trim=4,
-  space after arrow=0.25ex,
-}
-$ \OverRightarrow{v} \qquad \OverRightarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% \medskip
-%
-% Default arrows are slightly shifted to the right. For a left arrow, this
-% should be reversed, using the keys \refKey{shift left} and \refKey{shift
-% right}. These keys set the corresponding shifts, in math units. Example:
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\NewOverArrowCommand{OverLeftarrow}{%
-  start={\smallermathstyle\Leftarrow},
-  middle={\smallermathstyle\Relbar},
-  end=\Relbar,
-  trim=4,
-  space after arrow=0.25ex,
-  shift left=0, shift right=2,
-}
-$ \OverLeftarrow{v} \qquad \OverLeftarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% \medskip
-%
-% Finally, the key \refKey{arrow under} places the arrow below the content,
-% instead of above (and \refKey{space before arrow} sets the space upon it):
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\NewOverArrowCommand{OverLeftRightarrow}{%
-  start={\smallermathstyle\Leftarrow},
-  middle={\smallermathstyle\Relbar},
-  end=\Rightarrow,
-  trim=4,
-  arrow under,
-  space before arrow=0.5ex,
-  shift left=0, shift right=0,
-}
-$ \OverLeftRightarrow{v} \qquad \OverLeftRightarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% \subsection{Symbols assemblage}
-%
-% Many \LaTeX{} math symbols are built by assemblage, using the macro
-% \cs{joinrel}\footnotemark{} which remove 3 math units of horizontal space.
-% The \pkg{overarrows} package provides a flexible version of \cs{joinrel},
-% called \refCom{xjoinrel}, which remove an arbitrary number of math units,
-% given as optional argument.
-%
-%\footnotetext{For example, the symbol \cs{models}
-% \smash{\symb{\models}} is defined as
-% \cs{mathrel}\texttt{\{\textbar\}}\cs{joinrel}\cs{Relbar} and corresponds to
-% the assemblage of a  vertical line \symb{\vert} and the symbol \cs{Relbar}
-% \symb{\Relbar}. The command \cs{mathrel} modifies the spacing according to the
-% math relation class ; \cs{Relbar} corresponds to the equal sign (it's
-% definition is \cs{mathrel}\texttt{\{=\}}).}
-%
-% Symbols association is then simple. As example, one can define a triple tail
-% macro \cs{tttail} from the symbol \cs{succ} \symb{\succ}:
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\newcommand*{\tttail}{\succ\xjoinrel[10]\succ\xjoinrel[10]\succ}
-$ \tttail $
-\end{dispExample}
-\newcommand*{\tttail}{\succ\xjoinrel[10]\succ\xjoinrel[10]\succ}
-% \iffalse
-%</example>
-% \fi
-% \noindent Thus defined, the macro \cs{tttail} can be used in arrow definition:
-%\iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\NewOverArrowCommand{overtttailrightarrow}{%
-  start={\tttail},
-  end={\rightarrow},
-  trim start=12,
-  shift left=0, shift right=0,
-  space after arrow=.2ex,
-  min length=24,
-}
-$ \overtttailrightarrow{v} \qquad \overtttailrightarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-% \noindent Here the \refKey{min length} key was added to ensure a minimum length
-% (in math units) when the content of the command is small (as for a single
-% character).
-%
-% \medskip
-%
-% The previous arrow would be better with a smaller tail, and this can be done
-% with the macro \refCom{smallermathstyle}. But a small tail and a normal sized
-% head are not aligned; as |{\smallermathstyle\tttail}\xjoinrel[8]\rightarrow}|
-% gives:
-% \begin{center}
-%      \scalebox{2}{${\smallermathstyle\tttail}\xjoinrel[8]\rightarrow$}
-% \end{center}
-% \noindent The solution comes from the command \cs{vcenter} which centers
-% materials on math axis. The tail must then be wrapped in a \cs{hbox}:
-% \iffalse
-%<*example>
-% \fi
-\csundef{overtttailrightarrow}
-\begin{dispExample}
-\NewOverArrowCommand{overtttailrightarrow}{%
-  start={\vcenter{\hbox{$\smallermathstyle\tttail$}}},
-  end={\rightarrow},
-  trim start=12,
-  shift left=0, shift right=0,
-  space after arrow=.2ex,
-  min length=24,
-}
-$ \overtttailrightarrow{v} \qquad \overtttailrightarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% \medskip
-%
-% Text symbols, namely symbols that are not defined in math mode, can also be
-% used. They should yet be enclosed in the \cs{text} macro, from the
-% \pkg{amsmath} package, to be correctly displayed and correctly scaled
-% according to math style. With, for example, the arrow heads given by the
-% symbols 40 and 41 of the \emph{lasy} font:
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\newcommand*{\leftarrowhead}{\usefont{U}{lasy}{m}{n}\symbol{40}}
-\newcommand*{\righttarrowhead}{\usefont{U}{lasy}{m}{n}\symbol{41}}
-\NewOverArrowCommand{overrightleftarrow}{%
-  start=\text{\righttarrowhead},
-  end=\text{\leftarrowhead},
-  trim start=0.7,  trim end=0.7,
-  min length=20,
-  shift leftright=-2,
-}
-$ \overrightleftarrow{AB} \qquad \scriptstyle\overrightleftarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% \subsection{Drawing the arrow with TikZ}
-%
-% In addition to the default method presented previously (assemblage of symbols,
-% as described in section~\ref{sec:extensible-arrows},
-% page~\pageref{sec:extensible-arrows}), the \pkg{overarrows} package has an
-% alternative method to draw the arrow. This one allows the use of graphic
-% languages such as PGF/TikZ.
-%
-% Drawing arrows with TikZ requires to load the \pkg{tikz} package and its
-% library |arrows.meta|. This can be simply done by passing the \refOpt{tikz}
-% option to the \pkg{overarrows} package\footnotemark{}:
-%
-% \footnotetext{Note that the \refOpt{tikz} option isn't mandatory to use TikZ
-% commands in \pkg{overarrows}. The \pkg{tikz} package and its library
-% |arrows.meta| can be loaded independently.}
-% \iffalse
-%<*example>
-% \fi
-\begin{dispListing}
-\usepackage[tikz]{overarrows}
-\end{dispListing}
-% \iffalse
-%</example>
-% \fi
-%
-% \medskip
-%
-% To use PGF/TikZ language, the optional argument |tikz| must be passed to
-% \refCom{NewOverArrowCommand} . TikZ picture are not extensible. That's why the
-% \pkg{overarrows} package provides three lengths that can be used in TikZ
-% commands:
-% \begin{itemize}
-%  \item \refCom{overarrowlength} for the arrow length,
-%  \item \refCom{overarrowthickness} and \refCom{overarrowsmallerthickness} for
-%   the arrow thickness.
-% \end{itemize}
-% These lengths are computed at each utilisation of a command created with the
-% |tikz| optional argument.
-%
-% Without any other configuration, a right arrow is drawn:
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\NewOverArrowCommand[tikz]{overtikzarrow}{}
-$ \overtikzarrow{v} \qquad \overtikzarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% \medskip
-%
-% Keys to use Tikz are described in section~\ref{sec:tikz-keys},
-% page~\pageref{sec:tikz-keys}. Main keys are: \refKey{tikz options},
-% \refKey{path options} and \refKey{path}. It's also possible to append settings
-% with \refKey{add tikz options} and \refKey{add path options}. The full TikZ
-% command used to draw the arrow can as well be entirely redefined
-% with the key \refKey{tikz command}
-%
-% Here is a example of an arrow drawn with TikZ\footnotemark{}:
-%
-% \footnotetext{TikZ arrows are very powerfull, but much slower to draw than the
-% default method using assemblage of math symbols.}
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\NewOverArrowCommand[tikz]{overarchedleftrightarrow}{%
-  add tikz options={y=\overarrowlength},
-  add tikz options={line width={\overarrowsmallerthickness}},
-  path options={arrows={<[scale=0.5]->[scale=0.5]}},
-  path={(0,0) arc (-250:70:0.5 and 0.1)},
-  center arrow,
-  min length=25,
-  space after arrow=0.4ex,
-}
-$ \overarchedleftrightarrow{v} \qquad \overarchedleftrightarrow{ABCD} $
-
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% \subsection{Drawing the arrow with \LaTeX{} picture environment}
-%
-% As well as TikZ, the \LaTeX{} |picture| environment can be used to draw the
-% arrow. For this, the optional argument |picture| must be passed to
-% \refCom{NewOverArrowCommand}. Like for TikZ, the three lengths
-% \refCom{overarrowlength}, \refCom{overarrowthickness} and
-% \refCom{overarrowsmallerthickness} can be used in |picture| commands.
-% By default, a right vector is drawn:
-% \iffalse
-%<*example>
-% \fi
-\ltxarrows%^^A classic arrows
-\begin{dispExample}
-\NewOverArrowCommand[picture]{overpictarrow}{}
-$ \overpictarrow{v} \qquad \overpictarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-% \noindent If \pkg{overarrows} is loaded with the option \refOpt{pstarrows},
-% the package \pkg{pict2e} is used and a PSTricks style vector arrows is set.
-% This gives:
-% \iffalse
-%<*example>
-% \fi
-\pstarrows%^^A pst arrows
-\csundef{overpictarrow}
-\begin{dispExample}
-\NewOverArrowCommand[picture]{overpictarrow}{}
-$ \overpictarrow{v} \qquad \overpictarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% Keys to use \LaTeX{} |picture| environment are described in
-% section~\ref{sec:picture-keys}, page~\pageref{sec:picture-keys}. The main keys
-% are \refKey{picture command}, \refKey{geometry} an \refDoc{key:picture}{line
-% thickness}. Here is an example:
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\NewOverArrowCommand[picture]{overbandedarrow}{
-  picture command={%
-    \qbezier
-    (0.0\overarrowlength,0)
-    (0.5\overarrowlength,0)
-    (0.9\overarrowlength,0.2\overarrowlength)
-    \put(0.9\overarrowlength,0.2\overarrowlength)
-    {\vector(2,1){0.2\overarrowlength}}
-  },
-  geometry={(\overarrowlength,0.4\overarrowlength)(0,0)},
-  line thickness={\overarrowsmallerthickness},
-  center arrow,
-  space after arrow=0.4ex,
-}
-$ \overbandedarrow{v} \qquad \overbandedarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% \section{User interface}
-%
-% \subsection{Package options}
-% \label{sec:package-options}
-%
-%
-% The \pkg{overarrows} package accepts many options, given as a comma-separated
-% list \meta{options} at package loading:
-% \cs{usepackage}|[|\meta{options}|]{overarrows}|.
-%
-% The option \refOpt*{esvect} is set by default. This can be overridden with
-% \refOpt*{noesvect}.
-%
-% \subsubsection{\pkg{esvect} configuration}
-% \label{sec:esvect-conf}
-%
-% \begin{docOption}{esvect}
-%   Loads the \pkg{esvect} package and redefines its vector commands \refCom{vv}
-%   through the \pkg{overarrows} mechanism. Original \pkg{esvect} \cs{vv} macro
-%   is still available with \refCom{esvectvv}.
-%
-%   The \pkg{esvect} package provides the symbol \cs{relbareda} \symb{\relbareda}
-%   which is smaller and often more flexible than the classic one \cs{relbar}
-%   \symb{\relbar}. \cs{relbareda} fits with the standard \emph{Computer Modern}
-%   math font, but can be unsuitable with other fonts.
-%
-%   The \pkg{esvect} package also provides the right arrow command \cs{fldr}.
-%   The shape of the arrow depends on the option passed to the \pkg{esvect}
-%   package: \symb{\fldra} (option~|a|), \symb{\fldrb} (option~|b|), \symb{\fldrc}
-%   (option~|c|), \symb{\fldrd} (option~|d|), \symb{\fldre} (option~|e|),
-%   \symb{\fldrf} (option~|f|), \symb{\fldrg} (option~|g|) or \symb{\fldrh}
-%   (option~|h|). Note that by default \pkg{overarrows} loads the \pkg{esvect}
-%   package with the option~|f| (while \pkg{esvect} default is~|d|). This can be
-%   changed with one of the eight options described bellow: \refOpt*{esvecta},
-%   \refOpt*{esvectb}, \refOpt*{esvectc}, \refOpt*{esvectd}, \refOpt*{esvecte},
-%   \refOpt*{esvectf}, \refOpt*{esvectg} and \refOpt*{esvecth}.
-%
-%   This option is set by default and can be unset with \refOpt*{noesvect}.
-% \end{docOption}
-%
-% \begin{docOption}{noesvect}
-%   Prevents the loading of the \pkg{esvect} package and the definition of the
-%   command \refCom{vv}.
-% \end{docOption}
-%
-% \begin{docOption}{esvecta}
-%   Loads the \pkg{esvect} package with the |a| option.
-%
-%   \cs{fldr} corresponds the to the symbol \symb{\fldra}. \cs{vv} command
-%   gives : $\vva{v} \quad \vva{AB} \quad \vva{\mathrm{grad}}$.
-% \end{docOption}
-%
-% \begin{docOption}{esvectb}
-%   Loads the \pkg{esvect} package with the |b| option.
-%
-%   \cs{fldr} corresponds the to the symbol \symb{\fldrb}. \cs{vv} command
-%   gives : $\vvb{v} \quad \vvb{AB} \quad \vvb{\mathrm{grad}}$.
-% \end{docOption}
-%
-% \begin{docOption}{esvectc}
-%   Loads the \pkg{esvect} package with the |c| option.
-%
-%   \cs{fldr} corresponds the to the symbol \symb{\fldrc}. \cs{vv} command
-%   gives : $\vvc{v} \quad \vvc{AB} \quad \vvc{\mathrm{grad}}$.
-% \end{docOption}
-%
-% \begin{docOption}{esvectd}
-%   Loads the \pkg{esvect} package with the |d| option.
-%
-%   \cs{fldr} corresponds the to the symbol \symb{\fldrd}. \cs{vv} command
-%   gives : $\vvd{v} \quad \vvd{AB} \quad \vvd{\mathrm{grad}}$.
-% \end{docOption}
-%
-% \begin{docOption}{esvecte}
-%   Loads the \pkg{esvect} package with the |e| option.
-%
-%   \cs{fldr} corresponds the to the symbol \symb{\fldre}. \cs{vv} command
-%   gives : $\vve{v} \quad \vve{AB} \quad \vve{\mathrm{grad}}$.
-% \end{docOption}
-%
-% \begin{docOption}{esvectf}
-%   Loads the \pkg{esvect} package with the |f| option.
-%
-%   \cs{fldr} corresponds the to the symbol \symb{\fldrf}. \cs{vv} command
-%   gives : $\vvf{v} \quad \vvf{AB} \quad \vvf{\mathrm{grad}}$.
-% \end{docOption}
-%
-% \begin{docOption}{esvectg}
-%   Loads the \pkg{esvect} package with the |g| option.
-%
-%   \cs{fldr} corresponds the to the symbol \symb{\fldrg}. \cs{vv} command
-%   gives : $\vvg{v} \quad \vvg{AB} \quad \vvg{\mathrm{grad}}$.
-% \end{docOption}
-%
-% \begin{docOption}{esvecth}
-%   Loads the \pkg{esvect} package with the |h| option.
-%
-%   \cs{fldr} corresponds the to the symbol \symb{\fldrh}. \cs{vv} command
-%   gives : $\vvh{v} \quad \vvh{AB} \quad \vvh{\mathrm{grad}}$.
-% \end{docOption}
-%
-% \subsubsection{Predefined commands}
-%\label{sec:predefined-commands-opt}
-%
-% The \pkg{overarrows} package provides sixteen predefined commands, eight with
-% the arrow over, and eight with the arrow under. By default, theses commands
-% are not defined, and must be activated by the corresponding option.
-% Beware that commands are created without checking if already defined by
-% another package (\cs{overleftarrow}, \cs{overrightarrow},
-% \cs{overleftrightarrow}, \cs{underleftarrow}, \cs{underrightarrow} and
-% \cs{underleftrightarrow} are, for example, part of the \pkg{amsmath} package).
-%
-% Three options are also available to define set of commands.
-%
-% \medskip
-% \unsetoldarrows
-%
-% \noindent\textbf{Set of commands}
-%
-% \begin{docOption}{allcommands}
-%   Defines all sixteen predefined commands.
-%\end{docOption}
-% \begin{docOption}{overcommands}
-%   Defines all eight predefined commands with arrow over.
-%\end{docOption}
-% \begin{docOption}{undercommands}
-%   Defines all eight predefined commands with arrow under.
-% \end{docOption}
-%
-% \medskip
-%
-% \noindent\textbf{Over arrows}
-%
-% \begin{docOption}{overrightarrow}
-%   Defines the \refCom{overrightarrow} command: $\overrightarrow{v}$,
-%   $\overrightarrow{AB}$, $\overrightarrow{\textrm{grad}}$.
-% \end{docOption}
-% \begin{docOption}{overleftarrow}
-%   Defines the \refCom{overleftarrow} command: $\overleftarrow{v}$, $\overleftarrow{AB}$, $\overleftarrow{\textrm{grad}}$.
-% \end{docOption}
-% \begin{docOption}{overleftrightarrow}
-%   Defines the \refCom{overleftrightarrow} command: $\overleftrightarrow{v}$,
-%   $\overleftrightarrow{AB}$, $\overleftrightarrow{\textrm{grad}}$.
-% \end{docOption}
-% \begin{docOption}{overrightharpoonup}
-%   Defines the \refCom{overrightharpoonup} command: $\overrightharpoonup{v}$,
-%   $\overrightharpoonup{AB}$, $\overrightharpoonup{\textrm{grad}}$.
-% \end{docOption}
-% \begin{docOption}{overrightharpoondown}
-%   Defines the \refCom{overrightharpoondown} command:
-%   $\overrightharpoondown{v}$, $\overrightharpoondown{AB}$,
-%   $\overrightharpoondown{\textrm{grad}}$.
-% \end{docOption}
-% \begin{docOption}{overleftharpoonup}
-%   Defines the \refCom{overleftharpoonup} command: $\overleftharpoonup{v}$,
-%   $\overleftharpoonup{AB}$, $\overleftharpoonup{\textrm{grad}}$.
-% \end{docOption}
-% \begin{docOption}{overleftharpoondown}
-%   Defines the \refCom{overleftharpoondown} command: $\overleftharpoondown{v}$,
-%   $\overleftharpoondown{AB}$, $\overleftharpoondown{\textrm{grad}}$.
-% \end{docOption}
-% \begin{docOption}{overbar}
-%   Defines the \refCom{overbar} command: $\overbar{v}$, $\overbar{AB}$,
-%   $\overbar{\textrm{grad}}$.
-% \end{docOption}
-%
-% \medskip
-%
-% \noindent\textbf{Under arrows}
-%
-% \begin{docOption}{underrightarrow}
-%   Defines the \refCom{underrightarrow} command: $\underrightarrow{v}$,
-%   $\underrightarrow{AB}$, $\underrightarrow{\textrm{grad}}$.
-% \end{docOption}
-% \begin{docOption}{underleftarrow}
-%   Defines the \refCom{underleftarrow} command: $\underleftarrow{v}$,
-%   $\underleftarrow{AB}$, $\underleftarrow{\textrm{grad}}$.
-% \end{docOption}
-% \begin{docOption}{underleftrightarrow}
-%   Defines the \refCom{underleftrightarrow} command: $\underleftrightarrow{v}$,
-%   $\underleftrightarrow{AB}$, $\underleftrightarrow{\textrm{grad}}$.
-% \end{docOption}
-% \begin{docOption}{underrightharpoonup}
-%   Defines the \refCom{underrightharpoonup} command: $\underrightharpoonup{v}$,
-%   $\underrightharpoonup{AB}$, $\underrightharpoonup{\textrm{grad}}$.
-% \end{docOption}
-% \begin{docOption}{underrightharpoondown}
-%   Defines the \refCom{underrightharpoondown} command:
-%   $\underrightharpoondown{v}$, $\underrightharpoondown{AB}$,
-%   $\underrightharpoondown{\textrm{grad}}$.
-% \end{docOption}
-% \begin{docOption}{underleftharpoonup}
-%   Defines the \refCom{underleftharpoonup} command: $\underleftharpoonup{v}$,
-%   $\underleftharpoonup{AB}$, $\underleftharpoonup{\textrm{grad}}$.
-% \end{docOption}
-% \begin{docOption}{underleftharpoondown}
-%   Defines the \refCom{underleftharpoondown} command:
-%   $\underleftharpoondown{v}$, $\underleftharpoondown{AB}$,
-%   $\underleftharpoondown{\textrm{grad}}$.
-% \end{docOption}
-% \begin{docOption}{underbar}
-%   Defines the \refCom{underbar} command: $\underbar{v}$, $\underbar{AB}$,
-%   $\underbar{\textrm{grad}}$.
-% \end{docOption}
-%
-% \subsubsection{Other options}
-%
-% \begin{docOption}{old-arrows}\setoldarrows
-%   Loads the \pkg{old-arrows} package with its option |old|. This provides the
-%   symbols \cs{varleftarrow} \symb{\varleftarrow} and \cs{varrightarrow}
-%   \symb{\varrightarrow}, used then by default for predefined command.
-%
-%   When the \refOpt*{old-arrows} option is set, the commands
-%   \refCom{overrightarrow}, \refCom{overleftarrow},
-%   \refCom{overleftrightarrow}, \refCom{underrightarrow},
-%   \refCom{underleftarrow} and \refCom{underleftrightarrow} give respectively :
-%   $\overrightarrow{AB}$, $\overleftarrow{AB}$, $\overleftrightarrow{AB}$,
-%   $\underrightarrow{AB}$, $\underleftarrow{AB}$ and $\underleftrightarrow{AB}$
-% \end{docOption}
-%
-% \begin{docOption}{tikz}
-%   Loads the package \pkg{tikz} with its library |arrows.meta|.
-%
-%   Note that TikZ arrows, drawn with the |tikz| method, are always available,
-%   even if this option is not set, provided the \pkg{tikz} package and its
-%   library are loaded independently.
-% \end{docOption}
-%
-% \begin{docOption}{pstarrows}
-%   Loads the \pkg{pict2e} package, with its option |pstarrows|. Vectors using
-%   \LaTeX{} |picture| environment gives then \pstarrows$\overpictarrow{AB}$
-%   instead of \ltxarrows$\overpictarrow{AB}$.
-%
-%   Note that this affect all vectors drawn in \LaTeX{} |picture| environments,
-%   and that this setting can be changed on the fly with the commands \cs{pstarrows}
-%   and \cs{ltxarrows} from the \pkg{pict2e} package.
-% \end{docOption}
-%
-% \begin{docOption}{subscripts}
-%   Sets the default value of the key \refKey{detect subscripts} to |true|.
-%
-%   This option also impacts the command \refCom{vv} and all predefined
-%   commands, so that they automatically use their starred variant when
-%   a subscript follows.
-% \end{docOption}
-%
-% \begin{docOption}{debug}
-%   Writes the meaning of defined commands in \LaTeX{} log.
-% \end{docOption}
-%
-% \subsection{Commands}
-%
-% \subsubsection{Macro for commands creation}
-% \label{sec:macro-for-commands-creation}
-%
-% \begin{docCommands}{%
-%   {
-%     doc name=NewOverArrowCommand,
-%     doc parameter=\oarg{method}\marg{name}\marg{keys},
-%   },
-%   {
-%     doc name=RenewOverArrowCommand,
-%     doc parameter=\oarg{method}\marg{name}\marg{keys},
-%   },
-%   {
-%     doc name=ProvideOverArrowCommand,
-%     doc parameter=\oarg{method}\marg{name}\marg{keys},
-%   },
-%   {
-%     doc name=DeclareOverArrowCommand,
-%     doc parameter=\oarg{method}\marg{name}\marg{keys},
-%   },
-% }
-%   Creates the command \cs{\meta{name}} and its starred variant
-%   \cs{\meta{name}*}. The starred variant \cs{\meta{name}*} removes the extra
-%   end space generated by the arrow, which is suitable, as example, when
-%   a subscript follows.
-%
-% \begin{description}
-%   \item[\cs{NewOverArrowCommand}] raises an error if \cs{\meta{name}} is
-%   already defined.
-%
-%   \item[\cs{RenewOverArrowCommand}] raises an error if \cs{\meta{name}} is undefined.
-%
-%   \item[\cs{ProvideOverArrowCommand}] sets \cs{\meta{name}} if the command is
-%   undefined and does nothing if it is already defined, without raising
-%   any error.
-%
-%   \item[\cs{DeclareOverArrowCommand}] sets \cs{\meta{name}}, whether the
-%   command is already defined
-%   or not, without raising any error.
-%   \end{description}
-%
-%   The \meta{method} used to draw the arrow must be:
-%   \begin{description}
-%    \item[|symb|] to draw the arrow by symbols assemblage (default);
-%    \item[|tikz|] to draw the arrow with PGF/TikZ;
-%    \item[|picture|] to draw the arrow with the \LaTeX{}
-%     |picture| environment.
-%   \end{description}
-%   With no \meta{method} argument, the |symb| method is chosen.
-%
-%   \smallskip
-%
-%   \meta{keys} is a comma-separated list of keys-values. Available keys depends
-%   of the \meta{method} chosen and are described in section~\ref{sec:keys},
-%   page~\pageref{sec:keys}.
-%
-%\iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\NewOverArrowCommand[tikz]{myoverarrow}{arrows={Bar-Bar}, center arrow}
-$ \myoverarrow{v} \qquad \myoverarrow{ABCD} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-% \end{docCommands}
-%
-% \begin{docCommands}{%
-%   {
-%     doc name=TestOverArrow,
-%     doc parameter=\oarg{pattern}\marg{name},
-%   },
-%   {
-%     doc name=TestOverArrow*,
-%     doc parameter=\oarg{pattern}\marg{name},
-%   },
-% }
-%   Displays the result of the command \meta{name} for patterns of various
-%   lengths and for the four math styles. A custom \meta{pattern} can be added
-%   to the predefined ones.
-%
-%   The starred variant \cs{TestOverArrow*} displays a full report, including
-%   kerning tests of the commands \cs{\meta{name}} and \cs{\meta{name}*} .
-%
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\TestOverArrow*[my~pattern]{vv}
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% \end{docCommands}
-%
-% \subsubsection{Useful macros for symbols assemblage}
-%
-% Math symbols assemblage is the default method used to draw arrows. The macros
-% \refCom*{xjoinrel} and \refCom*{smallermathstyle} are designed to help combine
-% and format math symbols.
-%
-% \begin{docCommand}{xjoinrel}{\oarg{number}}
-%   Removes an horizontal space of \meta{number} math units (|3.5 mu| by
-%   default). Must be used in math mode. Useful to assemble math symbols and
-%   create new ones.
-%
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\newcommand*{\triplebar}{\Relbar\xjoinrel[14]\relbar}
-\newcommand*{\triplebararrow}{\Relbar\xjoinrel[15]\rightarrow}
-\scalebox{2}{$ \triplebar \quad \triplebararrow $} \par
-\scalebox{2}{$ \triplebar\xjoinrel\triplebararrow $}
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-% \end{docCommand}
-%
-% \begin{docCommand}{smallermathstyle}{}
-%   Applies the next math style, smaller than the current. That is:
-% \begin{itemize}
-%     \item sets \cs{scriptstyle} if the current math style is \cs{displaystyle}
-%           or \cs{textstyle};
-%     \item sets \cs{scriptscriptstyle} if the current math style is
-%           \cs{scriptstyle};
-%     \item does nothing if the current math style is \cs{scriptscriptstyle}.
-% \end{itemize}
-%
-%\iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-$ \displaystyle AB \quad \textstyle AB
- \quad \scriptstyle AB \quad \scriptscriptstyle AB $\par
-$ \displaystyle AB \quad \smallermathstyle AB
- \quad \smallermathstyle AB \quad \smallermathstyle AB $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% \end{docCommand}
-%
-% \subsubsection{Useful lengths for TikZ or \texttt{picture} environment}
-%
-% Arrows drawn with graphic languages, like PGF/TikZ or the \LaTeX{} |picture|
-% environment, are not extensible. The three lengths \refLen*{overarrowlength},
-% \refLen*{overarrowthickness} and \refLen*{overarrowsmallerthickness} are
-% computed at each utilisation of a command set with the |tikz| or |picture|
-% method, so they can be used in drawing commands.
-%
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample*}{grow to left by=-2em}
-\NewOverArrowCommand[tikz]{overparabola}{%
-  path options={x=\overarrowlength, line width=\overarrowsmallerthickness},
-  path={(0,0) parabola[parabola height=0.2\overarrowlength] (1,0)},
-  arrows={-}, center arrow, min length=30,
-}
-$\displaystyle \overparabola{v} \qquad \overparabola{ABCD} $ \par
-$\scriptstyle \overparabola{v} \qquad \overparabola{ABCD} $ \par
-\end{dispExample*}
-% \iffalse
-%</example>
-% \fi
-%
-% \begin{docLength}{overarrowlength}
-%   Is set to the width of the arrow command content, or, if larger, to the
-%   minimal arrow length set through the key \refKey{min length}.
-% \end{docLength}
-%
-% \begin{docLength}{overarrowthickness}
-%   Is set to the default rule thickness of the current math style. That is:
-%   \begin{itemize}
-%    \item |\fontdimen 8 \textfont 3| in \cs{displaystyle} or \cs{textstyle};
-%    \item |\fontdimen 8 \scriptfont 3| in \cs{scriptstyle};
-%    \item |\fontdimen 8 \scriptscriptfont 3| in
-%     \cs{scriptscriptstyle}.
-%   \end{itemize}
-% \end{docLength}
-%   
-%  \begin{docLength}{overarrowsmallerthickness}
-%    Is set to the default rule thickness of the next smaller math style.
-%    That is:
-%    \begin{itemize}
-%     \item |\fontdimen 8 \scriptfont 3| in \cs{displaystyle} or \cs{textstyle};
-%     \item |\fontdimen 8 \scriptscriptfont 3| in \cs{scriptstyle} or
-%      \cs{scriptscriptstyle}.
-%    \end{itemize}
-%  \end{docLength}
-%
-% \subsubsection{Vectors macros}
-%
-% The macro \cs{vv}, dedicated to vectors, is automatically defined when the
-% option \refOpt{esvect} is set (which is the default). It is a clone of the
-% \cs{vv} command provided by the \pkg{esvect} package, but its starred variant
-% has a correct kerning when followed by a subscript.
-%
-% \begin{docCommands}{%
-%   {
-%     doc name=vv,
-%     doc parameter=\marg{content},
-%   },
-%   {
-%     doc name=vv*,
-%     doc parameter=\marg{content},
-%   },
-% }
-%   Draws a vector arrow upon math \meta{content}. The shape of the arrow
-%   depends on the corresponding options described in
-%   section~\ref{sec:esvect-conf}, page~\pageref{sec:esvect-conf} :
-%   \refOpt{esvecta}, \refOpt{esvectb}, \refOpt{esvectc}, \refOpt{esvectd},
-%   \refOpt{esvecte}, \refOpt{esvectf}, \refOpt{esvectg}, \refOpt{esvecth}.
-%
-%   The starred variant \cs{vv*} suppresses the end space created by the arrow.
-%
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-$ \vv{\imath}_{0}  \quad \vv{e}_r \quad \vv{L}_\Delta $\par
-$ \vv*{\imath}_{0}  \quad \vv*{e}_r \quad \vv*{L}_\Delta $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-%\end{docCommands}
-%
-% \begin{docCommand}{esvectvv}{}
-%   Is simply the backup of the original \pkg{esvect} \cs{vv} command.
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-$ \esvectvv{\imath}_{0}  \quad \esvectvv{e}_{r} \quad \esvectvv{L}_\Delta $\par
-$ \esvectvv*{\imath}{0}  \quad \esvectvv*{e}{r} \quad \esvectvv*{L}{\Delta} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% \end{docCommand}
-%
-% \subsubsection{Predefined commands}
-% \label{sec:predefined-commands}
-%
-% Predefined commands are defined if the corresponding option is set (see
-% section~\ref{sec:predefined-commands-opt},
-% page~\pageref{sec:predefined-commands-opt}). The commands
-% \refCom*{overrightarrow}, \refCom*{overleftarrow},
-% \refCom*{overleftrightarrow}, \refCom*{underrightarrow},
-% \refCom*{underleftarrow} and \refCom*{underleftrightarrow} are affected by the
-% option \refOpt{old-arrows}.
-%
-% \medskip
-%
-% \noindent\textbf{Over arrows}
-%
-%  \begin{docCommand}{overrightarrow}{}
-%    $$\overrightarrow{v} \qquad \overrightarrow{AB} \qquad \overrightarrow{\mathrm{grad}}$$
-%
-%   The shape of the arrow is smaller if the option \refOpt{old-arrows} is set.
-%  \end{docCommand}
-%
-%  \begin{docCommand}{overleftarrow}{}
-%    $$\overleftarrow{v} \qquad \overleftarrow{AB} \qquad \overleftarrow{\mathrm{grad}}$$
-%
-%   The shape of the arrow is smaller if the option \refOpt{old-arrows} is set.
-%  \end{docCommand}
-%
-%  \begin{docCommand}{overleftrightarrow}{}
-%  $$\overleftrightarrow{v} \qquad \overleftrightarrow{AB} \qquad\overleftrightarrow{\mathrm{grad}}$$
-%
-%   The shape of the arrows is smaller if the option \refOpt{old-arrows} is set.%
-%  \end{docCommand}
-%
-%\begin{docCommand}{overrightharpoonup}{}
-%  $$\overrightharpoonup{v} \qquad \overrightharpoonup{AB} \qquad \overrightharpoonup{\mathrm{grad}}$$
-%  \end{docCommand}
-%
-%  \begin{docCommand}{overrightharpoondown}{}
-%  $$\overrightharpoondown{v} \qquad \overrightharpoondown{AB} \qquad \overrightharpoondown{\mathrm{grad}}$$
-%  \end{docCommand}
-%
-%  \begin{docCommand}{overleftharpoonup}{}
-%    $$\overleftharpoonup{v} \qquad \overleftharpoonup{AB} \qquad \overleftharpoonup{\mathrm{grad}}$$
-%  \end{docCommand}
-%
-%  \begin{docCommand}{overleftharpoondown}{}
-%  $$\overleftharpoondown{v} \qquad \overleftharpoondown{AB} \qquad \overleftharpoondown{\mathrm{grad}}$$
-%  \end{docCommand}
-%
-%  \begin{docCommand}{overbar}{}
-%  $$\overbar{v} \qquad \overbar{AB} \qquad \overbar{\mathrm{grad}}$$
-%  \end{docCommand}
-%
-%
-% \medskip
-%
-% \noindent\textbf{Under arrows}
-%
-%  \begin{docCommand}{underrightarrow}{}
-%    $$\underrightarrow{v} \qquad \underrightarrow{AB} \qquad \underrightarrow{\mathrm{grad}}$$
-%
-%   The shape of the arrow is smaller if the option \refOpt{old-arrows} is set.
-%  \end{docCommand}
-%
-%  \begin{docCommand}{underleftarrow}{}
-%    $$\underleftarrow{v} \qquad \underleftarrow{AB} \qquad \underleftarrow{\mathrm{grad}}$$
-%
-%   The shape of the arrow is smaller if the option \refOpt{old-arrows} is set.
-%  \end{docCommand}
-%
-%  \begin{docCommand}{underleftrightarrow}{}
-%  $$\underleftrightarrow{v} \qquad \underleftrightarrow{AB} \qquad \underleftrightarrow{\mathrm{grad}}$$
-%
-%   The shape of the arrows is smaller if the option \refOpt{old-arrows} is set.
-%  \end{docCommand}
-%
-%  \begin{docCommand}{underrightharpoonup}{}
-%  $$\underrightharpoonup{v} \qquad \underrightharpoonup{AB} \qquad \underrightharpoonup{\mathrm{grad}}$$
-%  \end{docCommand}
-%
-%  \begin{docCommand}{underrightharpoondown}{}
-%  $$\underrightharpoondown{v} \qquad \underrightharpoondown{AB} \qquad \underrightharpoondown{\mathrm{grad}}$$
-%  \end{docCommand}
-%
-%  \begin{docCommand}{underleftharpoonup}{}
-%  $$\underleftharpoonup{v} \qquad \underleftharpoonup{AB} \qquad \underleftharpoonup{\mathrm{grad}}$$
-%  \end{docCommand}
-%
-%  \begin{docCommand}{underleftharpoondown}{}
-%  $$\underleftharpoondown{v} \qquad \underleftharpoondown{AB} \qquad \underleftharpoondown{\mathrm{grad}}$$
-%  \end{docCommand}
-%
-%  \begin{docCommand}{underbar}{}
-%  $$\underbar{v} \qquad \underbar{AB} \qquad \underbar{\mathrm{grad}}$$
-%  \end{docCommand}
-%
-% \subsection{Keys}
-%\label{sec:keys}
-%
-% The customisation of arrows is done at command creation through a key-value
-% interface provided by the \pkg{pgfkeys} package (with |/overarrows/| as key
-% path).
-%
-% \subsubsection{Arrow position and length settings}
-%
-% These keys are available whatever the method chosen at command creation (see
-% section~\ref{sec:macro-for-commands-creation},
-% page~\pageref{sec:macro-for-commands-creation} for the documentation of
-% commands creation).
-%
-% \medskip\par\noindent\textbf{Length}
-%
-% \begin{docKey}{min length}{=\marg{number}}
-% {no default, see below for the initial value}
-% Sets the minimal arrow length to \meta{number} math units. The arrow length is
-% set from content width, or, if larger, to this value.
-%
-% The initial value of \refKey*{min length} depends on the \meta{method} chosen
-% at command creation (see section~\ref{sec:macro-for-commands-creation},
-% page~\pageref{sec:macro-for-commands-creation} for the documentation of
-% commands creation):
-% \begin{itemize}
-%  \item \meta{number}| = 0 | for the |symb| method (default);
-%  \item \meta{number}| = 12| for the |tikz| method;
-%  \item \meta{number}| = 18| for the |picture| method.
-% \end{itemize}
-%
-%\iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\NewOverArrowCommand{overlongarrow}{min length=50}
-$ \overlongarrow{v} \qquad \overlongarrow{ABCDEF} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%\end{docKey}
-%
-% \medskip\par\noindent\textbf{Placement}
-%
-% \begin{docKeys}{
-%   {
-%       doc name={arrow under},
-%       doc description={default |autoconfig|, initially unset},
-%   },
-%   {
-%       doc name={arrow under},
-%       doc parameter={=autoconfig\textbar noconfig},
-%       doc no index,
-%   }
-% }
-% Places the arrow under, instead of over.
-% \begin{description}
-%  \item[\refKey*{arrow under} or \refKey*{arrow under}|=autoconfig|] also
-%   configures suitably the key \refKey{detect subscripts} to |false| and the
-%   key \refKey{before arrow} to get an additional space over the arrow.
-%  \item[\refKey*{arrow under}|=noconfig|] does not do any
-%   additional configuration.
-% \end{description}
-%
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\NewOverArrowCommand{underhooks}{%
-  start={\lhook}, end={\rhook},  trim=1,
-  arrow under, shift leftright=-4,
-}
-$ \underhooks{v} \qquad \underhooks{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-% \end{docKeys}
-%
-% \medskip\par\noindent\textbf{Horizontal shifts}
-%
-% \begin{docKey}{shift left}{=\marg{number}}
-% {no default, initially |2|}
-% Shifts the left side of the arrow by \meta{number} math units (positive number
-% means a shift to the right).
-%\end{docKey}
-%
-% \begin{docKey}{shift right}{=\marg{number}}
-% {no default, see below for the initial value}
-% Shifts the right side of the arrow by \meta{number} math units (positive
-% number means a shift to the left).
-%
-% The initial value of \refKey*{shift right} depends on the \meta{method} chosen
-% at command creation (see section~\ref{sec:macro-for-commands-creation},
-% page~\pageref{sec:macro-for-commands-creation} for the documentation of
-% commands creation):
-% \begin{itemize}
-%  \item \meta{number}| = 0 | for the |symb| method  (default);
-%  \item \meta{number}| = -2| for the |tikz| and |picture| methods.
-% \end{itemize}
-%
-%\end{docKey}
-%
-%\iffalse
-%<*example>
-% \fi
-\begin{dispExample*}{grow to left by=-2em}
-\NewOverArrowCommand{lookback}{%
-  start={\leftarrow}, end={\rightharpoondown},
-  shift left=-50, shift right=-10,
-}
-$ \lookback{\text{look back}} $
-\end{dispExample*}
-% \iffalse
-%</example>
-% \fi
-%
-%
-% \begin{docKey}{shift leftright}{=\oarg{number}}{no default}
-%   Sets \refKey{shift left} and \refKey{shift right} to the same
-%   \meta{number} value.
-%\end{docKey}
-%
-%
-% \begin{docKey}{center arrow}{}{}
-%   Sets \refKey{shift left} and \refKey{shift right} to zero.
-%\end{docKey}
-%
-% \begin{docKey}{left arrow}{}{default |2|}
-%   Sets \refKey{shift left} to zero and \refKey{shift right} to \meta{number}.
-% \end{docKey}
-%
-% \begin{docKey}{right arrow}{}{default |2|}
-%   Sets \refKey{shift right} to zero and \refKey{shift left} to \meta{number}.
-% \end{docKey}
-%
-% \medskip\par\noindent\textbf{Vertical adjunct}
-%
-% \begin{docKeys}{
-%   {
-%       doc name={before arrow},
-%       doc parameter={=\marg{vertical material}},
-%       doc description={initially empty},
-%   },
-%   {
-%       doc name={after arrow},
-%       doc parameter={=\marg{vertical material}},
-%       doc description={initially empty},
-%   },
-% }
-%   Adds the \meta{vertical material} before or after the arrow.
-%
-%   Over and under arrow commands are typeset through the \TeX{} \cs{ialign}
-%   command, which aligns contents, like a tabular. The \meta{vertical material}
-%   is inserted \emph{between} the rows, with \TeX{} \cs{noalign} command.
-%
-%   These keys are essentially used to add some extra space between the arrow
-%   and the content of the command. They can be set in a handier way with the
-%   keys \refKey{space before arrow} and \refKey{space after arrow}.
-% \end{docKeys}
-%
-% \begin{docKey}{space before arrow}{=\marg{length}}{no default}
-%   Adds a space of \meta{length} before the arrow. This sets the keys
-%   \refKey{before arrow}.
-% \end{docKey}
-%
-% \begin{docKey}{space after arrow}{=\marg{length}}{no default}
-%   Adds a space of \meta{length} after the arrow. This sets the keys
-%   \refKey{after arrow}.
-% \end{docKey}
-%
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample*}{grow to left by=-2em}
-\NewOverArrowCommand{overharpoonsdown}{%
-  start=\leftharpoondown, end=\rightharpoondown, center arrow,
-  space before arrow=-0.2ex, space after arrow=0.3ex,
-}
-$ \dot{\overharpoonsdown{v}} \qquad \ddot{\overharpoonsdown{AB}}$
-\end{dispExample*}
-% \iffalse
-%</example>
-% \fi
-%
-% \subsubsection{Subscripts detection setting}
-%
-% This key is available whatever the method chosen at command creation (see
-% section~\ref{sec:macro-for-commands-creation},
-% page~\pageref{sec:macro-for-commands-creation} for the documentation of
-% commands creation).
-%
-% \begin{docKey}{detect subscripts}{=true\textbar{}false}
-% {default |true|, see below for the initial value}
-%
-% Removes automatically the extra end space created by the arrow, if a subscript
-% immediately follows the command.
-%
-% By default, the initial value of \refKey*{detect subscripts} is |false|.
-% When the option \refOpt{subscripts} is set, the initial value of
-% \refKey*{detect subscripts} is |true|.
-%
-% \iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\NewOverArrowCommand{autosub}{detect subscripts}
-$ \imath_0 \qquad \autosub{\imath}_0 \qquad
- {\autosub{\imath}}_0 \qquad {\autosub*{\imath}}_0 $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%
-%\end{docKey}
-%
-% \subsubsection{Symbols assemblage settings}
-%
-% The following keys are available for arrows drawn with the default |symb|
-% method (see section~\ref{sec:macro-for-commands-creation},
-% page~\pageref{sec:macro-for-commands-creation} for the documentation of
-% commands creation).
-%
-% \begin{docKeys}{
-%   {
-%       doc name={start},
-%       doc parameter={=\marg{command}},
-%       doc description={no default, initially \cs{relbar}},
-%   },
-%   {
-%       doc name={middle},
-%       doc parameter={=\marg{command}},
-%       doc description={no default, initially set by \refKey*{middle config}|=auto|},
-%   },
-%   {
-%       doc name={end},
-%       doc parameter={=\marg{command}},
-%       doc description={no default, see below for the initial value},
-%   },
-% }
-%   Sets the \meta{command} used to draw the start (left), middle (center) or
-%   end (right) part of the arrow. The \refKey*{middle} one is repeated, if
-%   necessary, to extend the arrow. It is set, initially by \refKey*{middle
-%   config}|=auto|.
-%   By default, the \refKey*{end} symbols is initially \cs{rightarrow}
-%   \symb{\rightarrow}. When the option \refOpt{old-arrows} is set, the initial
-%   value of \refKey*{end} is \cs{varrightarrow} \symb{\varrightarrow}.
-%
-%   \refKey*{start} and \refKey*{end} symbols are typeset in the same group.
-%   \refKey*{middle} is typeset alone. This means that, if a command, like
-%   \refCom{smallermathstyle}, is used to alter the symbols, it should be
-%   applied both to \refKey*{start} and \refKey*{middle} (but not to
-%   \refKey*{end}).
-%
-%\iffalse
-%<*example>
-% \fi
-\begin{dispExample}
-\NewOverArrowCommand{smalleroverrightarrow}{%
-  start={\smallermathstyle\relbar},
-  middle={\smallermathstyle\relbareda},
-  end={\rightarrow},
-  space after arrow={0.2ex},
-}
-$ \smalleroverrightarrow{v} \qquad \smalleroverrightarrow{AB} $
-\end{dispExample}
-% \iffalse
-%</example>
-% \fi
-%\end{docKeys}
-%
-%
-%\begin{docKey}{trim start}{=\marg{number}}{no default, initially |7|}
-%  Trims \meta{number} math units from the right side of the
-%  \refKey{start} symbol.
-% \end{docKey}
-%
-% \begin{docKey}{trim middle}{=\marg{number}}
-% {no default, initially set by \refKey*{middle config}|=auto|}
-%   Trims \meta{number} math units from both left and right sides of the
-%   \refKey{middle} symbol.
-% \end{docKey}
-%
-% \begin{docKey}{trim end}{=\marg{number}}{no default, initially |7|}
-%   Trims \meta{number} math units from the left side of the
-%   \refKey{end} symbol.
-% \end{docKey}
-%
-% \begin{docKey}{trim}{=\marg{number}}{no default}
-%   Sets \refKey{trim start}, \refKey{trim middle} and \refKey{trim end} to the
-%   same \meta{number} value.
-% \end{docKey}
-%
-% \begin{docKey}{no trimming}{}{}
-%   Clears \refKey{trim start}, \refKey{trim middle} and \refKey{trim end}.
-% \end{docKey}
-%
-%\begin{docKey}{middle config}{=auto\textbar relbar\textbar relbareda}{no default}
-%  Sets a suitable configuration for the keys \refKey{middle} and \refKey{trim middle}:
-%  \begin{description}
-%   \item[For \refKey*{middle config}| = relbar|,] \refKey{middle} is set to
-%    \cs{relbar} \symb{\relbar} and \refKey{trim middle} to |2.5|.
-%   \item[For \refKey*{middle config}| = relbareda|,] \refKey{middle} is set to
-%    \cs{relbareda} \symb{\relbareda} and \refKey{trim middle} to |1|.
-%   \item[For \refKey*{middle config}| = auto|,] \refKey{middle} is set with
-%   \refKey*{middle config}| = relabareda| if the option \refOpt{esvect} is set
-%   (which is the default) and \refKey*{middle config}| = relabar| if not.
-%   \end{description}
-%\end{docKey}
-%
-% \begin{docKeys}{
-%   {
-%       doc name={amsmath},
-%       doc description={default |mimic|},
-%   },
-%   {
-%       doc name={amsmath},
-%       doc parameter={=mimic\textbar strict},
-%       doc no index,
-%   }
-% }
-%   Loads a configuration coherent with \pkg{amsmath}
-%   \cs{overrightarrow} command.
-% \begin{description}
-%  \item[\refKey*{amsmath} or \refKey*{amsmath}|=mimic|] sets the corresponding
-%   keys suitably:
-%   \begin{center}
-%     \begin{tabular*}{\linewidth}{ @{\extracolsep{\fill}}lll }
-%     \refKey*{start}|={\relbar}|
-%     & \refKey*{middle}=|{\relbar}|
-%     & \refKey*{end}|={\rightarrow}| \\
-%     \refKey*{trim start}|=7|
-%     & \refKey*{trim middle}|=2|
-%     & \refKey*{trim end}|=7| \\
-%     \refKey*{shift leftright}|=0|
-%     & \refKey*{after arrow}|={}|
-%     & \refKey*{before arrow}|={}|
-%       \end{tabular*}
-%   \end{center}
-%  \item[\refKey*{amsmath}|=strict|] makes, in addition, the command uses the
-%  internal macros of  \pkg{amsmath}
-%  \cs{overrightarrow} (\refKey*{no trimming}, \refKey*{fill
-%  macro}|={\arrowfill@}|, \refKey*{stack macro}|={\overarrow@}|). Note that
-%  many configuration keys becomes ineffective.
-% \end{description}
-% \end{docKeys}
-%
-% \begin{docKeys}{
-%   {
-%       doc name={esvect},
-%       doc description={default |mimic|},
-%   },
-%   {
-%       doc name={esvect},
-%       doc parameter={=mimic\textbar strict},
-%       doc no index,
-%   }
-% }
-%   Loads a configuration coherent with \pkg{amsmath}
-%   \cs{vv} command.
-% \begin{description}
-%  \item[\refKey*{esvect} or \refKey*{esvect}|=mimic|] sets the corresponding
-%   keys suitably:
-%   \begin{center}
-%     \begin{tabular*}{\linewidth}{ @{\extracolsep{\fill}}lll }
-%     \refKey*{start}|={\relbaredd}|
-%     & \refKey*{middle}=|{\relbareda}|
-%     & \refKey*{end}|={\fldr}| \\
-%     \refKey*{trim start}|=1.5|
-%     & \refKey*{trim middle}|=0|
-%     & \refKey*{trim end}|=1.5| \\
-%     \refKey*{space before arrow}|=-.7pt|
-%     & \refKey*{space after arrow}|=-.3pt|
-%     &\refKey*{right arrow}|=2|
-%       \end{tabular*}
-%   \end{center}
-%  \item[\refKey*{esvect}|=strict|] makes, in addition, the command uses the
-%  internal macros of  \pkg{esvect}
-%  \cs{vv} (\refKey*{no trimming}, \refKey*{fill
-%  macro}|={\traitfill@}|, \refKey*{stack macro}|={\overvect@}|). Note that
-%  many configuration keys becomes ineffective.
-% \end{description}
-%
-%\end{docKeys}
-%
-% \subsubsection{TikZ settings}
-% \label{sec:tikz-keys}
-%
-% If, at command creation (see section~\ref{sec:macro-for-commands-creation},
-% page~\pageref{sec:macro-for-commands-creation} for the documentation of
-% commands creation), the |tikz| method is chosen, then the arrow is drawn by
-% the command:
-% \begin{center}
-%   \cs{tikz}|[|\refKey*{tikz options}|]{|\refKey*{tikz command}|}|
-% \end{center}
-% \noindent where \refKey{tikz options} and \refKey{tikz command} are two keys
-% described below. When \refKey*{tikz command} is let unset, the drawing command
-% turns into:
-% \begin{center}
-%   \cs{tikz}|[|\refKey*{tikz options}|]{|\cs{draw}|[|\refKey*{path options}|]|
-%   \refKey*{path}|;}|
-% \end{center}
-%
-% The best way to customise |tikz| arrows is then to set the keys \refKey{tikz
-% options}, \refKey{path options} and \refKey{path}, preferably through the
-% handy alternatives: \refKey{add tikz options}, \refKey{add path options},
-% \refKey{arrows}, \refKey{line thickness} or \refKey{thinner}.
-%
-%\iffalse
-%<*example>
-% \fi
-\begin{dispExample*}{grow to left by=-2em}
-\NewOverArrowCommand[tikz]{overdotteddoublearrow}{%
-  add tikz options={blue}, add path options={densely dotted},
-  arrows={->[scale=0.5]>[scale=0.5]}, thinner,
-  min length=20, space after arrow={0.3ex},
-}
-$ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
-\end{dispExample*}
-% \iffalse
-%</example>
-% \fi
-%
-% The following keys are available when the |tikz| method is chosen.
-%
-% \begin{docKey}[][before lower=\medskip\par]
-% {tikz options}{=\marg{TikZ options}}
-% {no default, initially |x=|\cs{overarrowlength}|, line
-% width=|\cs{overarrowthickness}}
-%   Sets TikZ options to \meta{TikZ options}.
-%\end{docKey}
-%
-% \begin{docKey}[][before lower=\medskip\par]
-% {path options}{=\marg{path options}}
-% {no default, initially |arrows={-Classical TikZ Rightarrow}, cap=round|}
-%   Sets TikZ path options to \meta{path options}.
-% \end{docKey}
-% \begin{docKey}{path}{=\marg{path specification}}
-% {no default, initially |(0,0)--(1,0)|}
-% Sets TikZ path specification to \meta{path} (the ending semicolon is
-% automatically appended).
-%\end{docKey}
-%
-% \begin{docKey}{add tikz options}{=\marg{TikZ options}}{no default}
-%   Appends the options \meta{TikZ options} to the key \refKey{tikz options}.
-% \end{docKey}
-%
-% \begin{docKey}{add path options}{=\marg{path options}}{no default}
-%   Appends the options \meta{path options} to the key \refKey{path options}.
-% \end{docKey}
-%
-% \begin{docKey}{arrows}{=\marg{arrow specification}}{no default}
-%   Appends the option |arrows={|\meta{arrow specification}|}| to the key
-%   \refKey{path options}.
-% \end{docKey}
-%
-% \begin{docKey}{line thickness}{=\marg{length}}{no default}
-%   Appends the option |line width={|\meta{length}|}| to the key \refKey{path
-%   options}.
-% \end{docKey}
-%
-% \begin{docKey}{thinner}{}{}
-%   Sets the keys \refKey{line thickness} with \cs{overarrowsmallerthickness}.
-% \end{docKey}
-%
-% \begin{docKey}{tikz command}{=\marg{TikZ command}}{initially unset}
-%   Sets the \meta{TikZ command} used to draw the arrow. If left unset, the
-%   value \cs{draw}|[|\refKey*{path options}|] |\refKey*{path}|;| is used.
-%\end{docKey}
-%
-% \subsubsection{Picture environment settings}
-% \label{sec:picture-keys}
-%
-% If, at command creation (see section~\ref{sec:macro-for-commands-creation},
-% page~\pageref{sec:macro-for-commands-creation} for the documentation of
-% commands creation), the |picture| method is chosen, then the arrow is drawn
-% with by:
-% \begin{flushleft}\leftskip=3cm
-%   \cs{begin}|{picture}|\refKey*{geometry}|%|\\
-%    \quad\cs{linethickness}|{|\refDoc{key:picture}*{line thickness}|}%|\\
-%    \quad\refKey*{picture command}|%|\par
-%   \cs{end}|{picture}%|
-% \end{flushleft}
-% \noindent where \refKey{geometry}, \refDoc{key:picture}{line thickness} and
-% \refKey*{picture command} are three keys described below.
-%
-%\iffalse
-%<*example>
-% \fi
-\begin{dispExample*}{grow to left by=-2em}
-  % ^^A \arc and \roundcap commands are from the pict2e package
-  % ^^A this example needs \usepackage{pict2e} in the preamble
-  \NewOverArrowCommand[picture]{overarc}{%
-    picture command={%
-      \roundcap
-      \put(0.5\overarrowlength,0){\arc[180,0]{0.6\overarrowlength}}
-    },
-    geometry={%
-      (1.2\overarrowlength,0.5\overarrowlength)(-0.1\overarrowlength,0.2ex)
-    },
-    thinner, center arrow,
-  }
-  $ \overarc{v} \qquad \overarc{AB} $
-\end{dispExample*}
-% \iffalse
-%</example>
-% \fi
-% The following keys are available when the |picture| method is chosen.
-%
-% \begin{docKey}[][before lower=\medskip\par]
-% {picture command}{=\marg{picture command}}
-% {no default, initially \cs{put}|(0,0)\{|\cs{vector}|(1,0)\{|\refCom*{overarrowlength}|\}\}|}
-%   Sets picture command to \meta{picture command}.
-% \end{docKey}
-%
-% \begin{docKey}[][before lower=\medskip\par]
-% {geometry}{=\marg{picture geometry specification}}
-% {no default, initially |(|\refCom*{overarrowlength}|,1ex)(0,-0.5ex)|}
-%   Sets picture geometry to \meta{picture geometry specification}.
-% \end{docKey}
-%
-% \begin{docKey}[][doc label={picture:line thickness}]%^^A same name as for TikZ
-% {line thickness}{=\marg{length}}{no default}
-% Sets the picture line thickness to \meta{length}.
-% \end{docKey}
-%
-% \begin{docKey}[][doc label={picture:thinner}]%^^A same name as for TikZ
-% {thinner}{}{no default}
-% Sets the keys \refDoc{key:picture}{line thickness} with
-% \cs{overarrowsmallerthickness}.
-% \end{docKey}
-%
-% \subsection{Advanced commands and keys}
-%
-% The following commands and keys are used in the implementation of the
-% \pkg{overarrows} package. They can also be employed for an advanced
-% configuration of the commands created, although unnecessary in the vast
-% majority of cases.
-%
-% \subsubsection{Advanced commands}
-%
-% \begin{docCommands}{%
-%   {
-%     doc name=SetOverArrowsMethod,
-%     doc parameter=\oarg{stack mechanism}\marg{name}\oarg{pre code}\marg{keys def},
-%   },
-%   {
-%     doc name=SetOverArrowsMethod*,
-%     doc parameter=\marg{name}\oarg{pre code}\marg{keys def},
-%   },
-% }
-%   Defines the method \meta{name}, to be used in commands
-%   \refCom{NewOverArrowCommand}, \refCom{RenewOverArrowCommand},
-%   \refCom{ProvideOverArrowCommand} or \refCom{DeclareOverArrowCommand}.
-%   When the \meta{name} method is chosen, corresponding keys are defined by
-%   \meta{keys def}. This must set, in particular, the keys \refKey{no stack
-%   macro hook} and \refKey{no arrow macro hook}. Optional code \meta{pre code}
-%   is evaluated before the keys definition.
-%
-%   The unstarred variant automatically defines the key \refKey{no stack macro
-%   hook}, according to the value of the optional \meta{stack mechanism}.
-%   This one must be:
-%   \begin{description}
-%    \item[|fill|] if \refKey{arrow macro} creates extensible arrows (typically
-%     with \cs{cleaders}). In this case, the arrow macro (defined by \refKey{no
-%     arrow macro hook}) is called with the math style, passed as argument (it
-%     can be, for example, the macro \cs{rightarrowfill@} used by \pkg{amsmath}
-%     \cs{overrightarrow}). |fill| is the mechanism used by the |symb| method.
-%    \item[|lens|] if \refKey{arrow macro} creates fixed-length arrows, and
-%     needs the computation of lengths \refLen{overarrowlength}, \refLen{overarrowthickness}
-%     and \refLen{overarrowsmallerthickness}. In this case, the arrow macro
-%     (defined by \refKey{no arrow macro hook}) is called without argument.
-%     |lens| is the mechanism used by the |tikz| and |picture| methods.
-%   \end{description}
-%   Without optional \meta{stack mechanism}, |fill| is used. The starred variant
-%   does not set the key \refKey{no stack macro hook}.
-% \end{docCommands}
-%
-% \subsubsection{Advanced keys}
-%
-% \begin{docKey}{stack macro}{=\marg{stack definition}}
-% {no default, initially unset}
-% Defines the stack macro to be \meta{stack definition}. Stack macro is
-% a command which takes three arguments: the arrow macro set by \refKey{arrow
-% macro}, the math style, and the command content (under or over the arrow).
-% \meta{stack definition} can be, for example, the macro \cs{overarrow@} used by
-% \pkg{amsmath} \cs{overrightarrow}.
-% \end{docKey}
-%
-% \begin{docKey}{arrow macro}{=\marg{arrow definition}}
-% {no default, initially unset}
-% Defines the arrow macro (used in the stack macro) by to be \meta{arrow
-% definition}.
-% \end{docKey}
-%
-% \begin{docKey}{no stack macro hook}{=\marg{code}}{no default}
-%   Sets the \meta{code} executed if \refKey{stack macro} is left unset, after
-%   user evaluation of \meta{keys} in \refCom{NewOverArrowCommand},
-%   \refCom{RenewOverArrowCommand}, \refCom{ProvideOverArrowCommand} or
-%   \refCom{DeclareOverArrowCommand}.
-%
-%   \meta{code} must configure \refKey{stack macro} accordingly to the user
-%   keys setting.
-% \end{docKey}
-%
-% \begin{docKey}{no arrow macro hook}{=\marg{code}}{no default}
-%   Sets the \meta{code} executed if \refKey{arrow macro} is left unset, after
-%   user evaluation of \meta{keys} in \refCom{NewOverArrowCommand},
-%   \refCom{RenewOverArrowCommand}, \refCom{ProvideOverArrowCommand} or
-%   \refCom{DeclareOverArrowCommand}.
-%
-%   \meta{code} must configure \refKey{arrow macro} accordingly to the user
-%   keys setting.
-% \end{docKey}
-%
-% \begin{docKey}{fill macro}{=\marg{definition}}{no default, initially unset}
-%   Defines the fill macro to be \meta{definition}. The fill macro is used by
-%   arrows created with the |symb| method, to set \refKey{arrow macro} in
-%   \refKey{no arrow macro hook}. It is called with fours arguments: start,
-%   middle and end symbols used to draw the arrow, and the math style.
-%   \meta{definition} can be, for example, the macro \cs{arrowfill@} used by
-%   \pkg{amsmath} \cs{overrightarrow}.
-% \end{docKey}
-%
-% \section{Complements}
-%
-% \subsection{Math font issue}
-%
-% If the math font differs from the default \emph{Computer Modern}, arrow drawn
-% with the |symb| method may have a central part of the arrow with inappropriate
-% position or line width. This is
-% because the default symbol used for the arrow line is \cs{relbareda}
-% \symb{\relbareda} from the \pkg{esvect} package. This can be fixed with the
-% \refOpt{noesvect} option.
-%
-% \subsection{Package dependencies}
-%
-% The following packages are used by \pkg{overarrows}:
-% \begin{itemize}
-%  \item \pkg{amsmath}
-%  \item \pkg{etoolbox}
-%  \item \pkg{pgfkeys}
-%  \item \pkg{esvect} (unless the option \refOpt{noesvect} is used)
-%  \item \pkg{old-arrows} (when the option \refOpt{old-arrows} is used)
-%  \item \pkg{tikz} (when the |tikz| method or the option \refOpt{tikz} is used)
-%  \item \pkg{pict2e} (when the option \refOpt{pstarrows} is used)
-% \end{itemize}
-%
-% \LaTeX{} distributions prior to 2020/10/01 must load the \pkg{xparse} package
-% before \pkg{overarrows}.
-%
-% \subsection{Alternatives}
-%
-% \begin{description}
-%  \item[\textsf{esvect} package]
-%   (\url{https://www.ctan.org/pkg/esvect}), by Eddie Saudrais, provides the
-%   fine vector macro \cs{vv}. This package is loaded by default by
-%   \pkg{overarrows}.
-%
-%  \item[\pkg{letterswitharrows} package]
-%   (\url{https://www.ctan.org/pkg/letterswitharrows}), by Max Teegen, provides
-%   left and right over arrows commands, which can extend to
-%   multiple characters.
-%
-%  \item[\pkg{overrightarrow} package]
-%   (\url{https://www.ctan.org/pkg/overrightarrow}), by Robin Fairbairns,
-%   provides the \cs{Overrightarrow} which is an amalgam of \cs{overrightarrow}
-%   and \cs{Rightarrow}.
-%
-%  \item[\pkg{harpoon} package] (\url{https://ctan.org/pkg/harpoon}), by Tobias
-%   Kuipers, provides over- and under-harpoon symbol commands.
-% \end{description}
-%
-% \subsection{Changelog}
-%
-% \begin{description}
-%  \item[v1.0.1] Bug fix for under* options.
-%  \item[v1.0] Initial version.
-% \end{description}
-%
-% \StopEventually{}
-%
-% \section{Implementation}
-%
-%\iffalse
-%<*package>
-%\fi
-%
-% \setlength{\parindent}{0em}
-% \setlength{\parskip}{\smallskipamount}
-%
-%\subsection*{Management of options}
-%
-% \subsubsection*{Declaration of conditionals}
-%
-%    \begin{macrocode}
-\newif\ifovar at option@oldarrows@
-\newif\ifovar at option@esvect@ \ovar at option@esvect at true \PassOptionsToPackage{f}{esvect}
-\newif\ifovar at option@tikz@
-\newif\ifovar at option@pstarrows@
-\newif\ifovar at detectsubscripts@
-\newif\ifovar at option@debug@
-%    \end{macrocode}
-%
-% Following conditionals are for predefined commands.
-%
-%    \begin{macrocode}
-\newif\ifovar at option@overrightarrow@
-\newif\ifovar at option@underrightarrow@
-\newif\ifovar at option@overleftarrow@
-\newif\ifovar at option@underleftarrow@
-\newif\ifovar at option@overleftrightarrow@
-\newif\ifovar at option@underleftrightarrow@
-\newif\ifovar at option@overrightharpoonup@
-\newif\ifovar at option@underrightharpoonup@
-\newif\ifovar at option@overrightharpoondown@
-\newif\ifovar at option@underrightharpoondown@
-\newif\ifovar at option@overleftharpoonup@
-\newif\ifovar at option@underleftharpoonup@
-\newif\ifovar at option@overleftharpoondown@
-\newif\ifovar at option@underleftharpoondown@
-\newif\ifovar at option@overbar@
-\newif\ifovar at option@underbar@
-%    \end{macrocode}
-%
-% \subsubsection*{Declaration of options}
-%
-%    \begin{macrocode}
-\DeclareOption{esvect}{\ovar at option@esvect at true}
-\DeclareOption{noesvect}{\ovar at option@esvect at false}
-\DeclareOption{esvecta}{\ovar at option@esvect at true\PassOptionsToPackage{a}{esvect}}
-\DeclareOption{esvectb}{\ovar at option@esvect at true\PassOptionsToPackage{b}{esvect}}
-\DeclareOption{esvectc}{\ovar at option@esvect at true\PassOptionsToPackage{c}{esvect}}
-\DeclareOption{esvectd}{\ovar at option@esvect at true\PassOptionsToPackage{d}{esvect}}
-\DeclareOption{esvecte}{\ovar at option@esvect at true\PassOptionsToPackage{e}{esvect}}
-\DeclareOption{esvectf}{\ovar at option@esvect at true\PassOptionsToPackage{f}{esvect}}
-\DeclareOption{esvectg}{\ovar at option@esvect at true\PassOptionsToPackage{g}{esvect}}
-\DeclareOption{esvecth}{\ovar at option@esvect at true\PassOptionsToPackage{h}{esvect}}
-\DeclareOption{old-arrows}{\ovar at option@oldarrows at true}
-\DeclareOption{tikz}{\ovar at option@tikz at true}
-\DeclareOption{pstarrows}{\ovar at option@pstarrows at true}
-\DeclareOption{subscripts}{\ovar at detectsubscripts@true}
-\DeclareOption{debug}{\ovar at option@debug at true}
-%    \end{macrocode}
-%
-% Following options are for predefined commands.
-%
-% \changes{v1.0.1}{2023/01/19}{Bug fix for under* options}
-%
-%
-%    \begin{macrocode}
-\DeclareOption{overrightarrow}{\ovar at option@overrightarrow at true}
-\DeclareOption{underrightarrow}{\ovar at option@underrightarrow at true}
-\DeclareOption{overleftarrow}{\ovar at option@overleftarrow at true}
-\DeclareOption{underleftarrow}{\ovar at option@underleftarrow at true}
-\DeclareOption{overleftrightarrow}{\ovar at option@overleftrightarrow at true}
-\DeclareOption{underleftrightarrow}{\ovar at option@underleftrightarrow at true}
-\DeclareOption{overrightharpoonup}{\ovar at option@overrightharpoonup at true}
-\DeclareOption{underrightharpoonup}{\ovar at option@underrightharpoonup at true}
-\DeclareOption{overrightharpoondown}{\ovar at option@overrightharpoondown at true}
-\DeclareOption{underrightharpoondown}{\ovar at option@underrightharpoondown at true}
-\DeclareOption{overleftharpoonup}{\ovar at option@overleftharpoonup at true}
-\DeclareOption{underleftharpoonup}{\ovar at option@underleftharpoonup at true}
-\DeclareOption{overleftharpoondown}{\ovar at option@overleftharpoondown at true}
-\DeclareOption{underleftharpoondown}{\ovar at option@underleftharpoondown at true}
-\DeclareOption{overbar}{\ovar at option@overbar at true}
-\DeclareOption{underbar}{\ovar at option@underbar at true}
-%    \end{macrocode}
-%
-% Following options are for sets of predefined commands.
-%
-%    \begin{macrocode}
-\DeclareOption{overcommands}{%
-  \ovar at option@overrightarrow at true
-  \ovar at option@overleftarrow at true
-  \ovar at option@overleftrightarrow at true
-  \ovar at option@overrightharpoonup at true
-  \ovar at option@overrightharpoondown at true
-  \ovar at option@overleftharpoonup at true
-  \ovar at option@overleftharpoondown at true
-  \ovar at option@overbar at true
-}
-\DeclareOption{undercommands}{%
-  \ovar at option@underrightarrow at true
-  \ovar at option@underleftarrow at true
-  \ovar at option@underleftrightarrow at true
-  \ovar at option@underrightharpoonup at true
-  \ovar at option@underrightharpoondown at true
-  \ovar at option@underleftharpoonup at true
-  \ovar at option@underleftharpoondown at true
-  \ovar at option@underbar at true
-}
-\DeclareOption{allcommands}{%
-  \ovar at option@overrightarrow at true
-  \ovar at option@underrightarrow at true
-  \ovar at option@overleftarrow at true
-  \ovar at option@underleftarrow at true
-  \ovar at option@overleftrightarrow at true
-  \ovar at option@underleftrightarrow at true
-  \ovar at option@overrightharpoonup at true
-  \ovar at option@underrightharpoonup at true
-  \ovar at option@overrightharpoondown at true
-  \ovar at option@underrightharpoondown at true
-  \ovar at option@overleftharpoonup at true
-  \ovar at option@underleftharpoonup at true
-  \ovar at option@overleftharpoondown at true
-  \ovar at option@underleftharpoondown at true
-  \ovar at option@overbar at true
-  \ovar at option@underbar at true
-}
-%    \end{macrocode}
-%
-% \subsubsection*{Options processing}
-%
-%    \begin{macrocode}
-\DeclareOption*{\PackageWarning{overarrows}{Unknown option: '\CurrentOption'}}
-\ProcessOptions\relax
-%    \end{macrocode}
-%
-% \subsection*{Package dependencies}
-%
-% \LaTeX{} distributions prior to 2020/10/01 must add the \pkg{xparse} package.
-%
-%    \begin{macrocode}
-\RequirePackage{amsmath}
-\RequirePackage{etoolbox}
-%    \end{macrocode}
-% Option \refOpt{old-arrows}. Configuration of arrows used for
-% predefined commands.
-%    \begin{macrocode}
-\let\ovar at rightarrow\rightarrow
-\let\ovar at leftarrow\leftarrow
-\ifovar at option@oldarrows@
-  \RequirePackage[old]{old-arrows}
-  \let\ovar at rightarrow\varrightarrow
-  \let\ovar at leftarrow\varleftarrow
-\fi
-%    \end{macrocode}
-% Option \refOpt{esvect}.
-%    \begin{macrocode}
-\ifovar at option@esvect@
-  \RequirePackage{esvect}
-\fi
-%    \end{macrocode}
-% Option \refOpt{tikz}.
-%    \begin{macrocode}
-\ifovar at option@tikz@
-  \RequirePackage{tikz}
-  \usetikzlibrary{arrows.meta}
-\fi
-%    \end{macrocode}
-% Option \refOpt{pstarrows}.
-%    \begin{macrocode}
-\ifovar at option@pstarrows@
-  \RequirePackage[pstarrows]{pict2e}
-\fi
-%    \end{macrocode}
-%
-% \subsection*{Management of keys}
-%
-% \subsubsection*{Family declaration and setters}
-%
-%    \begin{macrocode}
-\RequirePackage{pgfkeys}
-\pgfkeys{overarrows/.is family}
-%    \end{macrocode}
-%
-% \begin{macro}{\ovar at set}
-%    \begin{macrocode}
-\newcommand{\ovar at set}[1]{\pgfqkeys{/overarrows}{#1}}
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\SetOverArrowsMethod}
-%    \begin{macrocode}
-\NewDocumentCommand{\SetOverArrowsMethod}{ s O{fill} m O{} m }{%
-  \IfBooleanTF{#1}{%
-    \csgdef{ovar at set@#3}{#4\ovar at set{#5}}%
-  }{%
-    \csgdef{ovar at set@#3}{#4\ovar at set{%
-        no stack macro hook/.code={%
-          \ovar at set{stack macro/.expanded={%
-              \expandafter\expandonce\csname ovar at stack@#2\endcsname%
-              {\expandonce\ovar at length@min}%
-              {\expandonce\ovar at before@arrow}{\expandonce\ovar at after@arrow}%
-            }}%
-        },#5}}%
-  }%
-}
-%    \end{macrocode}
-% \end{macro}
-%
-% \subsubsection*{Common keys}
-%
-%    \begin{macrocode}
-\SetOverArrowsMethod*{common}[\undef{\ovar at macro@stack}\undef{\ovar at macro@arrow}]{%
-  detect subscripts/.is if=ovar at detectsubscripts@,
-%    \end{macrocode}
-%
-% \refKey{stack macro} and \refKey{arrow macro}.
-%
-%    \begin{macrocode}
-  stack macro/.store in=\ovar at macro@stack,
-  arrow macro/.store in=\ovar at macro@arrow,
-  stack macro/.value required,
-  arrow macro/.value required,
-%    \end{macrocode}
-%
-% \refKey{no stack macro hook}, \refKey{no arrow macro hook}. These two keys
-% must be redefined by the command \cs{ovar at set@}\meta{method}.
-%
-%    \begin{macrocode}
-  no stack macro hook/.code={%
-    \PackageError{overarrows}{Undefined stack macro}
-    {The requested method is perhaps mispelled}
-  },
-  no arrow macro hook/.code={%
-    \PackageError{overarrows}{Undefined arrow macro}
-    {The requested method is perhaps mispelled}
-  },
-%    \end{macrocode}
-%
-% \refKey{min length}.
-%
-%    \begin{macrocode}
-  min length/.store in=\ovar at length@min,
-  min length/.value required,
-  min length=0,
-%    \end{macrocode}
-%
-% \refKey{before arrow}, \refKey{after arrow}, \refKey{space before arrow},
-% \refKey{space after arrow}.
-%
-%    \begin{macrocode}
-  before arrow/.store in=\ovar at before@arrow,
-  after arrow/.store in=\ovar at after@arrow,
-  before arrow/.value required,
-  after arrow/.value required,
-  before arrow=\empty,
-  after arrow=\empty,
-  space before arrow/.code=\pgfkeysalso{before arrow={\kern ##1}},
-  space after arrow/.code=\pgfkeysalso{after arrow={\kern ##1}},
-%    \end{macrocode}
-%
-% \refKey{shift left}, \refKey{shift right}, \refKey{shift leftright},
-% \refKey{center arrow}, \refKey{left arrow}, \refKey{right arrow}.
-%
-%    \begin{macrocode}
-  shift left/.store in=\ovar at shift@left,
-  shift right/.store in=\ovar at shift@right,
-  shift left/.value required,
-  shift right/.value required,
-  shift leftright/.code=\pgfkeysalso{%
-    shift left=##1, shift right=##1,
-  },
-  center arrow/.code=\pgfkeysalso{shift leftright=0},
-  shift leftright/.value required,
-  center arrow/.value forbidden,
-  left arrow/.code=\pgfkeysalso{%
-    shift left=0, shift right=##1,
-  },
-  right arrow/.code=\pgfkeysalso{%
-    shift left=##1, shift right=0,
-  },
-  left arrow/.default=2,
-  right arrow/.default=2,
-  right arrow,
-%    \end{macrocode}
-%
-% \refKey{arrow under}.
-%
-%    \begin{macrocode}
-  arrow under/.is choice,
-  arrow under/noconfig/.code={
-    \def\ovar at stack@fill{\ovar at stackunder@fill}
-    \def\ovar at stack@lens{\ovar at stackunder@lens}
-  },
-  arrow under/autoconfig/.code={
-    \pgfkeysalso{%
-      arrow under=noconfig,
-      detect subscripts=false,
-      before arrow={\kern 1.3\ex@\relax},% like underarrow@ from amsmath
-    }
-  },
-  arrow under/.default=autoconfig,
-}
-%    \end{macrocode}
-%
-% \subsubsection*{Keys for the \texttt{symb} method}
-%
-%    \begin{macrocode}
-\SetOverArrowsMethod{symb}[\undef{\ovar at macro@arrowfill}]{%
-%    \end{macrocode}
-% Fill macro.
-%    \begin{macrocode}
-  fill macro/.store in=\ovar at macro@arrowfill,
-  fill macro/.value required,
-%    \end{macrocode}
-% Arrow macro.
-%    \begin{macrocode}
-  no arrow macro hook/.code={%
-    \ifdef{\ovar at macro@arrowfill}{}{%
-      \ovar at set{%
-        fill macro/.expanded={%
-          \noexpand\ovar at arrow@fill%
-          {\expandonce\ovar at shift@left}{\expandonce\ovar at shift@right}%
-        }
-      }
-    }
-    \ovar at set{%
-      arrow macro/.expanded={%
-        \expandonce{\ovar at macro@arrowfill}%
-        {\expandonce{\ovar at arrow@start}\expandonce{\ovar at trim@start}}%
-        {\expandonce{\ovar at trim@middle}\expandonce{\ovar at arrow@middle}%
-          \expandonce{\ovar at trim@middle}}%
-        {\expandonce{\ovar at trim@end}\expandonce{\ovar at arrow@end}}%
-      }
-    }
-  },
-%    \end{macrocode}
-% \refKey{start}, \refKey{middle}, \refKey{end}.
-%    \begin{macrocode}
-  start/.store in=\ovar at arrow@start,
-  middle/.store in=\ovar at arrow@middle,
-  end/.store in=\ovar at arrow@end,
-  start/.value required,
-  middle/.value required,
-  end/.value required,
-%    \end{macrocode}
-% \refKey{trim start}, \refKey{trim middle}, \refKey{trim end}, \refKey{trim},
-% \refKey{no trimming}.
-%    \begin{macrocode}
-  trim start/.code={\def\ovar at trim@start{\xjoinrel[##1]}},
-  trim middle/.code={\def\ovar at trim@middle{\xjoinrel[##1]}},
-  trim end/.code={\def\ovar at trim@end{\xjoinrel[##1]}},
-  trim start/.value required,
-  trim middle/.value required,
-  trim end/.value required,
-  trim/.code={\pgfkeysalso{trim start={##1}, trim middle={##1}, trim end={##1}}},
-  trim/.value required,
-  no trimming/.code={%
-    \let\ovar at trim@start\empty
-    \let\ovar at trim@middle\empty
-    \let\ovar at trim@end\empty
-  },
-  no trimming/.value forbidden,
-%    \end{macrocode}
-% \refKey{middle config}.
-%    \begin{macrocode}
-  middle config/.is choice,
-  middle config/.value required,
-  middle config/relbar/.code=\pgfkeysalso{%
-    middle={\relbar},
-    trim middle={2.5},
-  },
-  middle config/relbareda/.code={%
-    \ifundef{\relbareda}{%
-      \PackageWarning{overarrows}{Key 'middle config=relbareda' used,
-        \MessageBreak%
-        but \protect\relbareda\space is undefined; ignored.
-        \MessageBreak%
-        Load 'esvect' package, or use 'esvect' option \MessageBreak%
-        to remove this warning}
-    }{%
-      \pgfkeysalso{%
-        middle={\relbareda},
-        trim middle={1},
-      }
-    }
-  },
-  middle config/auto/.code={%
-    \ifovar at option@esvect@
-    \pgfkeysalso{middle config=relbareda}
-    \else
-    \pgfkeysalso{middle config=relbar}
-    \fi
-  },
-%    \end{macrocode}
-% \refKey{amsmath}.
-%    \begin{macrocode}
-  amsmath/.is choice,%
-  amsmath/mimic/.code=\pgfkeysalso{%
-    start={\relbar}, middle={\relbar}, end={\rightarrow},
-    trim start=7,
-    trim middle=2,
-    trim end=7,
-    shift leftright=0,
-    after arrow={}, before arrow={},
-  },
-  amsmath/strict/.code=\pgfkeysalso{%
-    amsmath=mimic,
-    no trimming,
-    fill macro={\arrowfill@}, stack macro={\overarrow@},
-  },
-  amsmath/.default=mimic,
-%    \end{macrocode}
-% \refKey{esvect}.
-%    \begin{macrocode}
-  esvect/.is choice,%
-  esvect/mimic/.code=\pgfkeysalso{%
-    start={\relbaredd}, middle={\relbareda}, end={\fldr},
-    trim start=1.5,
-    trim end=1.5,
-    trim middle=0,
-    right arrow=2,
-    space before arrow=-.7pt,
-    space after arrow=-.3pt,
-  },
-  esvect/strict/.code=\pgfkeysalso{%
-    esvect=mimic,
-    no trimming,
-    fill macro={\traitfill@}, stack macro={\overvect@},
-  },
-  esvect/.default=mimic,
-%    \end{macrocode}
-% Initial configuration.
-%    \begin{macrocode}
-  amsmath, middle config=auto, end=\ovar at rightarrow, right arrow,
-}
-%    \end{macrocode}
-%
-% \subsubsection*{Keys for the \texttt{tikz} method}
-%
-%    \begin{macrocode}
-\SetOverArrowsMethod[lens]{tikz}[\undef{\ovar at tikz@command}]{%
-%    \end{macrocode}
-% Arrow macro.
-%    \begin{macrocode}
-  no arrow macro hook/.code={%
-    \ifdef{\ovar at tikz@command}{}{%
-      \pgfkeysgetvalue{/overarrows/path options}{\ovar at tikz@pathoptions}
-      \ovar at set{%
-        tikz command/.expanded={%
-          \noexpand\draw[\expandonce\ovar at tikz@pathoptions]\expandonce\ovar at tikz@path;
-        }
-      }
-    }
-    \pgfkeysgetvalue{/overarrows/tikz options}{\ovar at tikz@options}
-    \ovar at set{%
-      arrow macro/.expanded={%
-        $\noexpand\mkern \expandonce{\ovar at shift@left} mu\noexpand\relax$%
-        \noexpand\tikz[\expandonce{\ovar at tikz@options}]{\expandonce{\ovar at tikz@command}}%
-        $\noexpand\mkern \expandonce{\ovar at shift@right} mu\noexpand\relax$%
-      }
-    }
-  },
-%    \end{macrocode}
-% TikZ parts: \refKey{tikz command}, \refKey{tikz options}, \refKey{path
-% options}, \refKey{path}.
-%    \begin{macrocode}
-  tikz command/.store in=\ovar at tikz@command,
-  tikz options/.initial={x=\overarrowlength, line width=\overarrowthickness},
-  path options/.initial={arrows={-Classical TikZ Rightarrow}, cap=round},
-  path/.store in=\ovar at tikz@path,
-  path={(0,0)--(1,0)},
-  tikz command/.value required,
-  tikz options/.value required,
-  path options/.value required,
-  path/.value required,
-%    \end{macrocode}
-% TikZ handy keys: \refKey{add path options}, \refKey{add tikz options},
-% \refKey{arrows}, \refKey{line thickness}, \refKey{thinner}.
-%    \begin{macrocode}
-  add path options/.code=\pgfkeysalso{%
-    path options/.append={, ##1}},%
-  add tikz options/.code=\pgfkeysalso{%
-    tikz options/.append={, ##1}},%
-  arrows/.code=\pgfkeysalso{add path options={arrows={##1}}},%
-  line thickness/.code=\pgfkeysalso{add path options={line width=##1}},%
-  thinner/.code=\pgfkeysalso{line thickness={\overarrowsmallerthickness}},%
-  add path options/.value required,%
-  add tikz options/.value required,%
-  arrows/.value required,%
-  line thickness/.value required,%
-  thinner/.value forbidden,%
-%    \end{macrocode}
-% Initial configuration.
-%    \begin{macrocode}
-  shift right=-2,
-  min length=12,
-}
-%    \end{macrocode}
-%
-% \subsubsection*{Keys for the \texttt{picture} method}
-%
-%    \begin{macrocode}
-\SetOverArrowsMethod[lens]{picture}{%
-%    \end{macrocode}
-% Arrow macro.
-%    \begin{macrocode}
-  no arrow macro hook/.code={%
-    \ovar at set{%
-      arrow macro/.expanded={%
-        $\noexpand\mkern \expandonce{\ovar at shift@left} mu\noexpand\relax$%
-        \noexpand\begin{picture}\expandonce{\ovar at picture@geometry}%
-          \noexpand\linethickness{\expandonce{\ovar at picture@linethickness}}%
-          \expandonce{\ovar at picture@command}%
-          \noexpand\end{picture}%
-        $\noexpand\mkern \expandonce{\ovar at shift@right} mu\noexpand\relax$%
-      }
-    }
-  },
-%    \end{macrocode}
-% Picture parts: \refKey{picture command}, \refKey{geometry},
-% \refDoc{key:picture}{line thickness}.
-%    \begin{macrocode}
-  picture command/.store in=\ovar at picture@command,
-  geometry/.store in=\ovar at picture@geometry,
-  line thickness/.store in=\ovar at picture@linethickness,
-  picture command/.value required,
-  geometry/.value required,
-  line thickness/.value required,
-%    \end{macrocode}
-% Picture handy key: \refDoc{key:picture}{thinner}.
-%    \begin{macrocode}
-  thinner/.code=\pgfkeysalso{line thickness={\overarrowsmallerthickness}},
-%    \end{macrocode}
-% Initial configuration.
-%    \begin{macrocode}
-  shift right=-2,
-  min length=18,
-  geometry={(\overarrowlength,1ex)(0,-0.5ex)},%
-  line thickness={\overarrowthickness},%
-  picture command={\put(0,0){\vector(1,0){\overarrowlength}}},%
-}
-%    \end{macrocode}
-%
-% \subsection*{Commands}
-%
-% \subsubsection*{Macros for symbols assemblage}
-%
-% \begin{macro}{\xjoinrel}
-%    \begin{macrocode}
-\ifdef{\xjoinrel}{%
-  \PackageWarning{overarrows}{Command \protect\xjoinrel\space already defined.
-    \MessageBreak%
-    Previous definition will be overridden}
-}{}
-%    \end{macrocode}
-%  Use a default value of |3.5 mu|, as recommended by egreg (see
-%  \url{https://tex.stackexchange.com/a/471736}). \cs{joinrel}
-%  uses a value of 3 mu.
-%    \begin{macrocode}
-\DeclareRobustCommand{\xjoinrel}[1][3.5]{\mathrel{\mkern-#1mu}}
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\smallermathstyle}
-%    \begin{macrocode}
-\newcommand*{\smallermathstyle}{%
-  \mathchoice{\scriptstyle}{\scriptstyle}{\scriptscriptstyle}{}
-}
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\ovar at arrow@fill}
-% Macro used for default \refKey{fill macro}.\\
-% |#1|: left shift\\
-% |#2|: right shift\\
-% |#3|: arrow start\\
-% |#4|: arrow middle\\
-% |#5|: arrow end\\
-% |#6|: math style
-%    \begin{macrocode}
-\def\ovar at arrow@fill#1#2#3#4#5#6{%
-  $\m at th\thickmuskip0mu\medmuskip\thickmuskip\thinmuskip\thickmuskip\relax%
-  \mkern #1 mu\relax#6#3%
-  \cleaders\hbox{$#6#4$}\hfill%
-  #5\mkern #2 mu\relax$%
-}
-%    \end{macrocode}
-% \end{macro}
-%
-% \subsubsection*{Macros for fixed length arrows}
-%
-% Lengths declaration.
-%    \begin{macrocode}
-\newlength{\overarrowlength}
-\newlength{\overarrowthickness}
-\newlength{\overarrowsmallerthickness}
-\newlength{\ovar at extralength}
-\newlength{\ovar at tempdim}
-%    \end{macrocode}
-%
-% \begin{macro}{\ovar at set@arrowlength}
-% Sets \refLen{overarrowlength}.\\
-% |#1|: min length, in math units\\
-% |#2|: math style\\
-% |#3|: content
-%    \begin{macrocode}
-\def\ovar at set@arrowlength#1#2#3{%
-  \settowidth{\ovar at tempdim}{$\m at th#2\mskip #1 mu\relax$}%
-  \settowidth{\overarrowlength}{$\m at th#2#3$}%
-  \ifdim \overarrowlength < \ovar at tempdim \overarrowlength=\ovar at tempdim\fi%
-}
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\ovar at set@arrowthickness}
-% Sets \refLen{overarrowthickness} and \refLen{overarrowsmallerthickness}.\\
-% |#1|: arrow length\\
-% |#2|: math style
-%    \begin{macrocode}
-\def\ovar at set@arrowthickness#1{% use rule thickness=\fontdimen 8 font family 3
-  \ifx#1\displaystyle%
-    \overarrowthickness =        \fontdimen 8 \textfont 3%
-    \overarrowsmallerthickness = \fontdimen 8 \scriptfont 3%
-  \else\ifx#1\textstyle%
-    \overarrowthickness =        \fontdimen 8 \textfont 3%
-    \overarrowsmallerthickness = \fontdimen 8 \scriptfont 3%
-  \else\ifx#1\scriptstyle%
-    \overarrowthickness =        \fontdimen 8 \scriptfont 3%
-    \overarrowsmallerthickness = \fontdimen 8 \scriptscriptfont 3%
-  \else%
-    \overarrowthickness =        \fontdimen 8 \scriptscriptfont 3%
-    \overarrowsmallerthickness = \overarrowthickness%
-  \fi\fi\fi%
-}
-%    \end{macrocode}
-% \end{macro}
-%
-% \subsubsection*{Stack macros}
-%
-% \begin{macro}{\ovar at stackover@@}
-% \begin{macro}{\ovar at stackunder@@}
-% Bases of all stack macros.\\
-% |#1|: min length, in math units\\
-% |#2|: vertical mode material before arrow\\
-% |#3|: vertical mode material after arrow\\
-% |#4|: arrow\\
-% |#5|: math style\\
-% |#6|: content
-%    \begin{macrocode}
-\def\ovar at stackover@@#1#2#3#4#5#6{\vbox{\ialign{##\crcr%
-      $#5\mskip #1 mu\relax$\crcr%
-      \noalign{#2\nointerlineskip}#4\crcr%
-      \noalign{#3\nointerlineskip}%
-      $\m at th\hfil#5#6\hfil$\crcr%
-    }%
-  }%
-}
-\def\ovar at stackunder@@#1#2#3#4#5#6{\vtop{\ialign{##\crcr%
-      $\m at th\hfil#5#6\hfil$\crcr%
-      \noalign{#2\nointerlineskip}#4\crcr%
-      \noalign{#3\nointerlineskip}%
-      $#5\mskip #1 mu\relax$\crcr%
-    }%
-  }%
-}
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\ovar at stackover@}
-% \begin{macro}{\ovar at stackunder@}
-% Stack macros without min arrow length.\\
-% |#1|: vertical mode material before arrow\\
-% |#2|: vertical mode material after arrow\\
-% |#3|: arrow macro\\
-% |#4|: math style\\
-% |#5|: content
-%    \begin{macrocode}
-\def\ovar at stackover@#1#2#3#4#5{\ovar at stackover@@{0}{#1}{#2}{#3}{#4}{#5}}
-\def\ovar at stackunder@#1#2#3#4#5{\ovar at stackunder@@{0}{#1}{#2}{#3}{#4}{#5}}
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\ovar at stackover@fill}
-% \begin{macro}{\ovar at stackunder@fill}
-% \begin{macro}{\ovar at stack@fill}
-% Stack macros for extensible arrows.\\
-% |#1|: min length, in math units\\
-% |#2|: vertical mode material before arrow\\
-% |#3|: vertical mode material after arrow\\
-% |#4|: arrow filler macro\\
-% |#5|: math style\\
-% |#6|: content
-%    \begin{macrocode}
-\def\ovar at stackover@fill#1#2#3#4#5#6{\ovar at stackover@@{#1}{#2}{#3}{#4#5}{#5}{#6}}
-\def\ovar at stackunder@fill#1#2#3#4#5#6{\ovar at stackunder@@{#1}{#2}{#3}{#4#5}{#5}{#6}}
-%    \end{macrocode}
-% \cs{ovar at stack@fill} matches the macro \cs{ovar at stackover@fill} by default, or
-% \cs{ovar at stackunder@fill} with \refKey{arrow under}.
-%    \begin{macrocode}
-\def\ovar at stack@fill{\ovar at stackover@fill}
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\ovar at stackover@lens}
-% \begin{macro}{\ovar at stackunder@lens}
-% \begin{macro}{\ovar at stack@lens}
-% Stack macros for fixed-length arrows (these call \cs{ovar at set@arrowlength} and
-% \cs{ovar at set@arrowthickness}).\\
-% |#1|: min length, in math units\\
-% |#2|: vertical mode material before arrow\\
-% |#3|: vertical mode material after arrow\\
-% |#4|: arrow content macro\\
-% |#5|: math style\\
-% |#6|: content
-%    \begin{macrocode}
-\def\ovar at stackover@lens#1#2#3#4#5#6{%
-  \ovar at set@arrowlength{#1}{#5}{#6}%
-  \ovar at set@arrowthickness{#5}%
-  \ovar at stackover@{#2}{#3}{#4}{#5}{#6}%
-}
-\def\ovar at stackunder@lens#1#2#3#4#5#6{%
-  \ovar at set@arrowlength{#1}{#5}{#6}%
-  \ovar at set@arrowthickness{#5}%
-  \ovar at stackunder@{#2}{#3}{#4}{#5}{#6}%
-}
-%    \end{macrocode}
-% \cs{ovar at stack@lens} matches the macro \cs{ovar at stackover@lens} by default, or
-% \cs{ovar at stackunder@lens} with \refKey{arrow under}.
-%    \begin{macrocode}
-\def\ovar at stack@lens{\ovar at stackover@lens}
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection*{Macro for commands creation}
-%
-% \begin{macro}{\DeclareOverArrowCommand}
-%    \begin{macrocode}
-\NewDocumentCommand{\DeclareOverArrowCommand}{ O{symb} m m }{%
-  \begingroup
-  \ovar at set@common
-  \ifcsdef{ovar at set@#1}{%
-    \csuse{ovar at set@#1}
-  }{%
-    \PackageError{overarrows}{Unknown method #1}
-    {Try with 'symb', 'tikz' or 'picture'}
-  }
-  \ovar at set{#3 }
-  \ifdef{\ovar at macro@arrow}{}{%
-    \ovar at set{no arrow macro hook}
-  }
-  \ifdef{\ovar at macro@stack}{}{%
-    \ovar at set{no stack macro hook}
-  }
-  \csxdef{ovar@#2 at normal}{%
-    \noexpand\mathpalette{%
-      \expandonce{\ovar at macro@stack}{\expandonce{\ovar at macro@arrow}}%
-    }
-  }
-  \csxdef{ovar@#2 at starred}{%
-    \noexpand\mathpalette{%
-      \noexpand\ovar at starversion{%
-        \expandonce{\ovar at macro@stack}{\expandonce{\ovar at macro@arrow}}%
-      }
-    }
-  }
-  \ifovar at detectsubscripts@%
-  \csgdef{ovar@#2 at auto}##1{%
-    \@ifnextchar _{%
-      \csuse{ovar@#2 at starred}{##1}%
-    }{%
-      \csuse{ovar@#2 at normal}{##1}%
-    }%
-  }
-  \csgdef{#2}{%
-    \@ifstar{\csuse{ovar@#2 at starred}}{\csuse{ovar@#2 at auto}}%
-  }
-  \else
-  \csgdef{#2}{%
-    \@ifstar{\csuse{ovar@#2 at starred}}{\csuse{ovar@#2 at normal}}%
-  }
-  \fi
-  \ifovar at option@debug@
-  \PackageInfo{overarrows}{%
-    Meaning of \protect\ovar@#2 at normal\MessageBreak
-    used for \@backslashchar#2:\MessageBreak%
-      \expandafter\meaning\csname ovar@#2 at normal\endcsname}
-  \fi
-  \endgroup
-}
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\ProvideOverArrowCommand}
-%    \begin{macrocode}
-\NewDocumentCommand{\ProvideOverArrowCommand}{ O{symb} m m }{%
-  \ifcsdef{#2}{}{
-    \DeclareOverArrowCommand[#1]{#2}{#3}
-  }
-}
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\NewOverArrowCommand}
-%    \begin{macrocode}
-\NewDocumentCommand{\NewOverArrowCommand}{ O{symb} m m }{%
-  \ifcsdef{#2}{%
-    \PackageError{overarrows}{Command \csname #2\endcsname already defined}%
-    {You have used \protect\NewOverArrowCommand\space with a command that
-      already has a definition. \MessageBreak%
-      Choose another name, or use instead \protect\DeclareOverArrowCommand.}
-  }{%
-    \DeclareOverArrowCommand[#1]{#2}{#3}
-  }
-}
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\RenewOverArrowCommand}
-%    \begin{macrocode}
-\NewDocumentCommand{\RenewOverArrowCommand}{ O{symb} m m }{%
-  \ifcsundef{#2}{%
-    \PackageError{overarrows}{Command  \csname #2\endcsname undefined}%
-    {You have used \protect\RenewOverArrowCommand\space with a command that was
-      never defined. \MessageBreak%
-      Check the requested name, or use instead \protect\NewOverArrowCommand.}
-  }{%
-    \DeclareOverArrowCommand[#1]{#2}{#3}
-  }
-}
-%    \end{macrocode}
-% \end{macro}
-%
-% \subsubsection*{Starred variant}
-%
-% \begin{macro}{\ovar at starversion}
-% |#1|: definition (stack macro + arrow macro)\\
-% |#2|: math style\\
-% |#3|: content
-%    \begin{macrocode}
-\def\ovar at starversion#1#2#3{%
-  #1#2{#3}%
-  \settowidth{\ovar at extralength}{$\m at th#1#2{#3}$}
-  \settowidth{\ovar at tempdim}{$\m at th#2{#3}$}
-  \deflength{\ovar at extralength}{0.5\ovar at extralength-0.5\ovar at tempdim}%
-  \kern-\ovar at extralength%
-}
-%    \end{macrocode}
-% \end{macro}
-%
-% \subsubsection*{\cs{vv} vector command}
-%
-% \begin{macro}{\vv}
-% \begin{macro}{\esvectvv}
-% Backup and redefinition of \pkg{esvect} \refCom{vv} vector command.
-%    \begin{macrocode}
-\ifovar at option@esvect@
-  \let\esvectvv\vv
-  \undef\vv
-  \NewOverArrowCommand{vv}{esvect, middle config=auto}
-\fi
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection*{Predefined commands}
-%
-% \begin{macro}{\overrightarrow}
-%    \begin{macrocode}
-\ifovar at option@overrightarrow@
-  \DeclareOverArrowCommand{overrightarrow}{%
-    amsmath, middle config=relbar,
-    end=\ovar at rightarrow,
-    right arrow,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\underrightarrow}
-%    \begin{macrocode}
-\ifovar at option@underrightarrow@
-  \DeclareOverArrowCommand{underrightarrow}{%
-    amsmath, middle config=relbar,
-    end=\ovar at rightarrow,
-    right arrow,
-    arrow under,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\overleftarrow}
-%    \begin{macrocode}
-\ifovar at option@overleftarrow@
-  \DeclareOverArrowCommand{overleftarrow}{%
-    amsmath, middle config=relbar,
-    start=\ovar at leftarrow,
-    end=\relbar,
-    left arrow,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\underleftarrow}
-%    \begin{macrocode}
-\ifovar at option@underleftarrow@
-  \DeclareOverArrowCommand{underleftarrow}{%
-    amsmath, middle config=relbar,
-    start=\ovar at leftarrow,
-    end=\relbar,
-    left arrow,
-    arrow under,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\overleftrightarrow}
-%    \begin{macrocode}
-\ifovar at option@overleftrightarrow@
-  \DeclareOverArrowCommand{overleftrightarrow}{%
-    amsmath, middle config=relbar,
-    start=\ovar at leftarrow,
-    end=\ovar at rightarrow,
-    center arrow,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\underleftrightarrow}
-%    \begin{macrocode}
-\ifovar at option@underleftrightarrow@
-  \DeclareOverArrowCommand{underleftrightarrow}{%
-    amsmath, middle config=relbar,
-    start=\ovar at leftarrow,
-    end=\ovar at rightarrow,
-    center arrow,
-    arrow under,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\overrightharpoonup}
-%    \begin{macrocode}
-\ifovar at option@overrightharpoonup@
-  \DeclareOverArrowCommand{overrightharpoonup}{%
-    amsmath, middle config=relbar,
-    end=\rightharpoonup,
-    right arrow,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\underrightharpoonup}
-%    \begin{macrocode}
-\ifovar at option@underrightharpoonup@
-  \DeclareOverArrowCommand{underrightharpoonup}{%
-    amsmath, middle config=relbar,
-    end=\rightharpoonup,
-    right arrow,
-    arrow under,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\overrightharpoondown}
-%    \begin{macrocode}
-\ifovar at option@overrightharpoondown@
-  \DeclareOverArrowCommand{overrightharpoondown}{%
-    amsmath, middle config=relbar,
-    end=\rightharpoondown,
-    right arrow,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\underrightharpoondown}
-%    \begin{macrocode}
-\ifovar at option@underrightharpoondown@
-  \DeclareOverArrowCommand{underrightharpoondown}{%
-    amsmath, middle config=relbar,
-    end=\rightharpoondown,
-    right arrow,
-    arrow under,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\overleftharpoonup}
-%    \begin{macrocode}
-\ifovar at option@overleftharpoonup@
-  \DeclareOverArrowCommand{overleftharpoonup}{%
-    amsmath, middle config=relbar,
-    start=\leftharpoonup,
-    end=\relbar,
-    left arrow,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\underleftharpoonup}
-%    \begin{macrocode}
-\ifovar at option@underleftharpoonup@
-  \DeclareOverArrowCommand{underleftharpoonup}{%
-    amsmath, middle config=relbar,
-    start=\leftharpoonup,
-    end=\relbar,
-    left arrow,
-    arrow under,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\overleftharpoondown}
-%    \begin{macrocode}
-\ifovar at option@overleftharpoondown@
-  \DeclareOverArrowCommand{overleftharpoondown}{%
-    amsmath, middle config=relbar,
-    start=\leftharpoondown,
-    end=\relbar,
-    left arrow,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\underleftharpoondown}
-%    \begin{macrocode}
-\ifovar at option@underleftharpoondown@
-  \DeclareOverArrowCommand{underleftharpoondown}{%
-    amsmath, middle config=relbar,
-    start=\leftharpoondown,
-    end=\relbar,
-    left arrow,
-    arrow under,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\overbar}
-%    \begin{macrocode}
-\ifovar at option@overbar@
-  \DeclareOverArrowCommand{overbar}{%
-    amsmath, middle config=relbar,
-    start={\std at minus}, end={\std at minus},% \relbar is defined with \mathsm at sh
-    shift leftright=0,
-    space after arrow=-0.3ex,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\underbar}
-%    \begin{macrocode}
-\ifovar at option@underbar@
-  \DeclareOverArrowCommand{underbar}{%
-    amsmath, middle config=relbar,
-    start={\std at minus}, end={\std at minus},% \relbar is defined with \mathsm at sh
-    shift leftright=0,
-    arrow under,
-    space before arrow=-0.3ex,
-  }
-\fi
-%    \end{macrocode}
-% \end{macro}
-%
-% \subsubsection*{Test macros}
-%
-% \begin{macro}{\ovar at testmathstyles}
-% Tabular containing the output of a command for the four math styles and
-% different patterns.
-%    \begin{macrocode}
-\newcommand{\ovar at testmathstyles}[2][]{
-  \begingroup
-  \newcommand*{\ovar at row@teststyle}[1]{%
-    $\displaystyle ##1$
-    & $\textstyle ##1$
-    & $\scriptstyle ##1$
-    & $\scriptscriptstyle ##1$
-    \\
-  }
-  \renewcommand*{\arraystretch}{1.5}
-  \begin{tabular*}{0.95\linewidth}{@{\extracolsep{\fill}} cccc}
-    \hline
-    \footnotesize\texttt{\texttt{\textbackslash displaystyle}}
-    & \footnotesize\texttt{\texttt{\textbackslash textstyle}}
-    & \footnotesize\texttt{\texttt{\textbackslash scriptstyle}}
-    & \footnotesize\texttt{\texttt{\textbackslash scriptscriptstyle}}
-    \\
-    \hline
-    \ovar at row@teststyle{\csuse{#2}{v}}
-    \ovar at row@teststyle{\csuse{#2}{AB}}
-    \ovar at row@teststyle{\csuse{#2}{\mathrm{grad}}}
-    \ovar at row@teststyle{\csuse{#2}{my~long~vector}}
-    \IfValueT{#1}{\ovar at row@teststyle{\csuse{#2}{#1}}}
-    \hline
-  \end{tabular*}
-  \endgroup
-}
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TestOverArrow}
-%    \begin{macrocode}
-\NewDocumentCommand{\TestOverArrow}{ s o m }{
-  \ifcsdef{#3}{}{%
-    \PackageWarning{overarrows}{Unknown name '#3' passed to
-      \protect\TestOverArrow}
-  }
-  \IfBooleanTF{#1}{%
-    \noindent\framebox{%
-      \begin{minipage}{0.95\linewidth}
-        \centering
-        \noindent\textbf{\large%
-          Test of \texttt{\textbackslash#3} and \texttt{\textbackslash#3*} macros}
-        \bigskip\par
-        \textbf{\texttt{\textbackslash#3} for different math styles}
-        \smallskip\par
-        \ovar at testmathstyles[#2]{#3}%
-        \bigskip\par
-        \textbf{\texttt{\textbackslash#3} kerning}
-        \begin{displaymath}
-          \csuse{#3}{t}_{\csuse{#3}{u}_{\csuse{#3}{v}}}
-          \qquad
-          \csuse{#3}{\imath}_0
-          \qquad
-          \csuse{#3}{v}
-          = \csuse{#3}{v}_x + \csuse{#3}{v}_y + \csuse{#3}{v}_z
-          = v_x \csuse{#3}{\imath} + v_y \csuse{#3}{\jmath} + v_z \csuse{#3}{k}
-        \end{displaymath}
-        \textbf{\texttt{\textbackslash#3*} kerning}
-        \begin{displaymath}
-          \csuse{#3}*{t}_{\csuse{#3}*{u}_{\csuse{#3}*{v}}}
-          \qquad
-          \csuse{#3}*{\imath}_0
-          \qquad
-          \csuse{#3}*{v}
-          = \csuse{#3}*{v}_x + \csuse{#3}*{v}_y + \csuse{#3}*{v}_z
-          = v_x \csuse{#3}*{\imath} + v_y \csuse{#3}*{\jmath} + v_z \csuse{#3}*{k}
-        \end{displaymath}
-      \end{minipage}%
-    }\bigskip\par
-  }{%
-    \ovar at testmathstyles[#2]{#3}%
-  }
-}
-%    \end{macrocode}
-% \end{macro}
-%
-%\iffalse
-%</package> ^^A End of package implementation.
-%\fi
-%
-% \iffalse % ^^A The following is not for doc
-%
-%<*docstyle>
-%
-% \section*{overarrows-doc package}
-%
-% The following define some styles used for documentation and should not be
-% included in the documentation itself.
-%
-% \subsection*{Packages}
-%
-%    \begin{macrocode}
-\RequirePackage{xcolor}
-\PassOptionsToPackage{hyperref}{xcolor}
-\RequirePackage[many]{tcolorbox}
-\tcbuselibrary{listings}
-\tcbuselibrary{documentation}
-\hypersetup{hidelinks}
-%    \end{macrocode}
-%
-% \subsection*{Colors}
-%
-%    \begin{macrocode}
-\definecolor{ovar_lavender}{rgb}{0.92,0.92,1}
-\definecolor{ovar_darkblue}{rgb}{0.1,0.2,0.5}
-\definecolor{ovar_darkgreen}{rgb}{0,0.39,0}
-\definecolor{ovar_beige}{rgb}{.96,.96,.86}
-\colorlet{ovar_commands}{ovar_darkblue}
-\colorlet{ovar_keys}{ovar_darkgreen}
-\colorlet{ovar_lengths}{violet}
-\colorlet{ovar_options}{Definition} % from tcolorbox documentation
-%    \end{macrocode}
-%
-% \subsection*{listings styles}
-%
-%    \begin{macrocode}
-\lstdefinestyle{lstovardoc}{%
-  language = [LaTeX]TeX,
-  columns         = flexible,
-  keywordstyle    = {\bfseries\color{ovar_darkblue}},
-  texcsstyle      = *{\bfseries\color{ovar_darkblue}},
-  commentstyle    = {\color{gray}},
-  identifierstyle = {\color{ovar_darkgreen}},
-  morekeywords    = {},% keywordsprefix needs a morekeywords before
-  keywordsprefix  = {\\},
-%    \end{macrocode}
-% For literate, the extra braces around the replacement text avoid the error: "Argument of |lst at FillFixed@| has an extra \}."
-%    \begin{macrocode}
-  literate        = *{\$}{{\textcolor{red}{\$}}}{1}
-                    {\&}{{\textcolor{red}{\&}}}{1}
-                    {\}}{{\textcolor{darkgray}{\}}}}{1}
-                    {\{}{{\textcolor{darkgray}{\{}}}{1}
-                    {\\\\}{{\textcolor{red}{\textbackslash\textbackslash}}}{2}
-%    \begin{macrocode}
-% One \% and four spaces to remove extra lines added by \cs{macrocode}
-%    \end{macrocode}
-                    {\%\ \ \ \ }{}0,
-  basicstyle      = \ttfamily\footnotesize,
-  frame           = none,
-  framesep        = 0pt,
-  aboveskip       = 0pt,
-  belowskip       = 0pt,
-}
-\lstdefinestyle{lstovarcode}{%
-  style           = lstovardoc,
-  backgroundcolor = \color{ovar_beige},
-  breakindent     = 1cm,
-  numbers         = left,
-  numberstyle     = \scriptsize\ttfamily\color{gray},
-  aboveskip       = \smallskipamount,
-  belowskip       = \smallskipamount,
-}
-%    \end{macrocode}
-%
-% \subsection*{tcolorbox}
-%
-%    \begin{macrocode}
-\tcbset{% copied and adapted from tcolorbox.doc.s_main.sty
-  documentation listing style=lstovardoc,%
-  doc keypath=overarrows,
-  size=small,%
-  % verbatim ignore percent,
-  %% styles
-  docexample/.style={%
-    bicolor jigsaw,
-    before skip balanced=\medskipamount,
-    after skip balanced=\medskipamount,
-    fonttitle=\bfseries,
-    fontlower=\normalfont,
-    halign lower=center,
-    colframe=ovar_darkblue,
-    colback=ovar_lavender,
-    colbacklower=white,
-    drop fuzzy shadow,
-  },
-  color key=ovar_keys,
-  color command=ovar_commands,
-  color length=ovar_lengths,
-  doc head key={fontlower=\footnotesize, collower=darkgray},
-  before doc body={\parskip=\smallskipamount},
-}
-%    \end{macrocode}
-%
-% \subsection*{Index}
-%
-% To deal with internal macros, use '=' as index actual, in place of '@'.
-%    \begin{macrocode}
-\begin{filecontents*}{\jobname.mst}
-actual '='
-\end{filecontents*}
-\tcbset{%
-  index actual={=},
-  index colorize=true,
-  index gather all,
-  index format=pgfsection,
-}
-%    \end{macrocode}
-% Redefine \cs{tcb at doc@index at pgfsection} to add prologue (adapted from
-% tcbdocumentation.code.tex).
-%    \begin{macrocode}
-\def\tcb at doc@index at pgfsection{%
-  \def\index at prologue{%
-    \section*{\kvtcb at text@index}\addcontentsline{toc}{section}{\kvtcb at text@index}
-    {\small%
-      Entries listed in the categories ``commands", ``lengths", and
-      ``internal macros" also include references to package implementation. }
-    \bigskip\par\noindent%
-  }%
-  \tcb at doc@index at pgf@%
-}
-%    \end{macrocode}
-% Unset |\lst at UM| before indexing, to deals with comma (avoid |\unhbox \voidb at x
-% \kern \z@| in index file, see: \url{https://tex.stackexchange.com/a/510108}).
-%    \begin{macrocode}
-\newcommand{\indexmacro}[1]{%
-  \begingroup
-  \let\lst at UM\@empty%
-  \index{{Commands!#1=\tcbIndexPrintComC {#1}}}%
-  \endgroup
-}
-\newcommand{\indexmacrointernal}[1]{%
-  \begingroup
-  \let\lst at UM\@empty%
-  \index{{Internal macros!#1=\tcbIndexPrintComC {#1}}}%
-  \endgroup
-}
-\newcommand{\indexlength}[1]{%
-  \begingroup
-  \let\lst at UM\@empty%
-  \index{{Lengths!#1=\tcbIndexPrintLenC {#1}}}%
-  \endgroup
-}
-%    \end{macrocode}
-%
-% \subsection*{Redefinition of macrocode environment}
-%
-%    \begin{macrocode}
-\let\macrocode\relax
-\lstnewenvironment{macrocode}{%
-  \lstset{%
-    name=macrocode,
-    firstnumber=auto,
-    style       = lstovarcode,
-    showlines=false,
-%    \end{macrocode}
-% Commands and lengths identification and indexing
-%
-% Note: index works badly with inherited styles. It seems that "texcs" and
-% "index" keys should be set together.
-%    \begin{macrocode}
-    texcs       = [2]{% commands
-      DeclareOverArrowCommand, ProvideOverArrowCommand,%
-      NewOverArrowCommand, RenewOverArrowCommand,%
-      TestOverArrow, xjoinrel, smallermathstyle,%
-      esvectvv, vv,%
-      overrightarrow, overleftarrow, overleftrightarrow, overrightharpoonup,%
-      overrightharpoondown, overleftharpoonup, overleftharpoondown, overbar,%
-      underrightarrow, underleftarrow, underleftrightarrow, underrightharpoonup,%
-      underrightharpoondown, underleftharpoonup, underleftharpoondown, underbar,%
-      SetOverArrowsMethod,%
-    },
-    index       = [2][texcs2],%
-    indexstyle  = [2]\indexmacro,%
-    texcs       = [3]{% lengths
-      overarrowlength, overarrowthickness, overarrowsmallerthickness,%
-    },
-    index       = [3][texcs3],%
-    indexstyle  = [3]\indexlength,%
-%    \end{macrocode}
-% Internal macros identification and indexing
-%    \begin{macrocode}
-    texcs       = [4]{% internal macros
-      ovar at rightarrow, ovar at leftarrow, ifovar at option@oldarrows@,
-      ifovar at option@esvect@, ifovar at option@tikz@, ifovar at option@pstarrows@,
-      ifovar at detectsubscripts@, ifovar at option@debug@,
-      ifovar at option@overrightarrow@, ifovar at option@underrightarrow@,
-      ifovar at option@overleftarrow@, ifovar at option@underleftarrow@,
-      ifovar at option@overleftrightarrow@, ifovar at option@underleftrightarrow@,
-      ifovar at option@overrightharpoonup@, ifovar at option@underrightharpoonup@,
-      ifovar at option@overrightharpoondown@, ifovar at option@underrightharpoondown@,
-      ifovar at option@overleftharpoonup@, ifovar at option@underleftharpoonup@,
-      ifovar at option@overleftharpoondown@, ifovar at option@underleftharpoondown@,
-      ifovar at option@overbar@, ifovar at option@underbar@, ovar at set, ovar at length@min,
-      ovar at before@arrow, ovar at after@arrow, ovar at macro@stack, ovar at macro@arrow,
-      ovar at set@, ovar at shift@left, ovar at shift@right, ovar at stack@fill,
-      ovar at stackunder@fill, ovar at stack@lens, ovar at stackunder@lens,
-      ovar at macro@arrowfill, ovar at arrow@fill, ovar at arrow@start, ovar at trim@start,
-      ovar at trim@middle, ovar at arrow@middle, ovar at trim@end, ovar at arrow@end,
-      ovar at tikz@command, ovar at tikz@pathoptions, ovar at tikz@path,
-      ovar at tikz@options, ovar at picture@geometry, ovar at picture@linethickness,
-      ovar at picture@command, ovar at extralength, ovar at tempdim, ovar at set@arrowlength,
-      ovar at set@arrowthickness, ovar at stackover@@, ovar at stackunder@@,
-      ovar at stackover@, ovar at stackunder@, ovar at stackover@fill,
-      ovar at stackover@lens, ovar at set@common, ovar at starversion,
-      ovar at testmathstyles, ovar at row@teststyle,%
-    },
-    index       = [4][texcs4],%
-    indexstyle  = [4]\indexmacrointernal,%
-%    \end{macrocode}
-% Other macros identification
-%    \begin{macrocode}
-    moretexcs   = [5]{% other macros
-      Relbar, relbareda, relbaredd, rightarrow, Rightarrow, varleftarrow,
-      varrightarrow, twoheadrightarrow,%
-    },
-%    \end{macrocode}
-% Il would be nice to also index keys, but spaces are badly handled by listings.
-%    \begin{macrocode}
-%^^A    morekeywords = [2]{%
-%^^A      no stack macro hook, stack macro, arrow macro, no arrow macro hook, min
-%^^A      length, before arrow, after arrow, space before arrow, space after arrow,
-%^^A      shift left, shift right, shift leftright, center arrow, left arrow, right
-%^^A      arrow, arrow under, fill macro, start, middle, end, trim start, trim
-%^^A      middle, trim end, trim, no trimming, middle config, amsmath, esvect, tikz
-%^^A      command, tikz options, path options, path, add path options, add tikz
-%^^A      options, arrows, line thickness, thinner, picture command, geometry, detect subscripts,
-%^^A    },
-%^^A    index       = [3][keywords2],%
-%^^A    indexstyle  = [3]\lstindexmacro,%
-  }
-%    \end{macrocode}
-% Save and restore the line number (not done by environments defined with
-% |\lstnewenvironment|, see \url{https://tex.stackexchange.com/a/95048}):
-%    \begin{macrocode}
-  \csname\@lst @SetFirstNumber\endcsname
-}{%
-  \csname \@lst @SaveFirstNumber\endcsname
-}
-%    \end{macrocode}
-%
-% \subsection*{Redefinition of macro environment}
-%
-%    \begin{macrocode}
-\DeclareDocumentEnvironment{macro}{m}{%
-%    \end{macrocode}
-% Extraction of macro name. Save/restore current \cs{escapechar} in \cs{count@}.
-%    \begin{macrocode}
- \count@\escapechar \escapechar=-1
- \edef\macroname{\string#1}
- \escapechar\count@
- \marginpar{%
-   \parbox{0.88\linewidth}{%
-     \scriptsize\flushright\ifcsdef{r at com:\macroname}{\refCom*{\macroname}}{\cs{\macroname}}%
-   }%
- }
-}{% end of macro environment
-}
-%    \end{macrocode}
-%
-% \subsection*{Documentation styles}
-%
-% \subsubsection*{Tool for references}
-%
-%    \begin{macrocode}
-\def\refDoc#1{\tcb at ref@doc{#1}}
-%    \end{macrocode}
-%
-% \subsubsection*{Package name}
-%
-%    \begin{macrocode}
-\newcommand{\pkg}[1]{\textsf{#1}}
-%    \end{macrocode}
-%
-% \subsubsection*{Package options}
-%
-% Definition of docOption environment to document package options, like keys.
-%    \begin{macrocode}
-\newrobustcmd{\tcbIndexPrintOptionCA}[1]{% adapted from \tcbIndexPrintKeyCA
-  \tcb at Index@Print at CA{#1}{ovar_options}{package option}%
-}
-\newrobustcmd{\tcbIndexPrintOptionC}[1]{% adapted from \tcbIndexPrintKeyCA
-  \tcb at Index@Print at C{#1}{ovar_options}%
-}
-\DeclareDocumentEnvironment{docOption}{ O{} m }{%
-  \begin{docKey*}[]
-    [doc name={#2}, doc label={opt:#2}, color key=ovar_options, #1]
-    {#2}{}{}%
-    \kvtcb at index@command{%
-      \kvtcb at doc@sortindex\idx at actual\tcbIndexPrintOptionCA{#2}%
-    }%
-    \kvtcb at index@command{%
-      {Package options}\idx at level\kvtcb at doc@sortindex\idx at actual%
-      \tcbIndexPrintOptionC{#2}%
-    }%
-}{%
-  \end{docKey*}%
-}
-\def\refOpt{\refDoc{key:opt}}
-%    \end{macrocode}
-%
-% \subsubsection*{Lengths}
-%
-% Definition of docLength environment to document lengths, like commands.
-%    \begin{macrocode}
-\let\tcbdocLength\docLength% save original definition
-\DeclareDocumentEnvironment{docLength}{ O{} m }{%
-  \begin{docCommand*}[doc name=#2, color command=ovar_lengths,#1]{#2}{}
-    \protected at edef\@currentlabel{\cs{#2}}%
-    \label{len:#2}%
-    %% add length index entry (from \docLength original definition)
-    \kvtcb at index@command{%
-      \kvtcb at doc@sortindex\idx at actual\tcbIndexPrintLenCA{\kvtcb at doc@index}%
-    }%
-    \kvtcb at index@command{%
-      \kvtcb at text@lengths\idx at level\kvtcb at doc@sortindex\idx at actual%
-      \tcbIndexPrintLenC{\kvtcb at doc@index}%
-    }%
-}{%
-  \end{docCommand*}%
-}
-\def\refLen{\refDoc{len}}
-%    \end{macrocode}
-%
-%</docstyle>
-%
-%<*comment>
-%
-% \section*{Notes}
-%
-% \subsection*{Bash commands reminder}
-%^^A the command |awk '!line[$0]++'| remove duplicate lines
-%
-% \subsubsection*{List of package options}
-%
-\begin{lstlisting}[language={bash}]
-rg -o -N 'DeclareOption\{\w+' overarrows.dtx | rg -o '\w+$'
-\end{lstlisting} %^^A dummy '|' for emacs
-%
-% \subsubsection*{List of commands}
-%
-\begin{lstlisting}[language={bash}]
-rg -o -N '^[[:blank:]]*\\(let|def|newcommand\*?|(New|Renew|Declare|Provides)\w*Command)[{\\]+[\w@]+' overarrows.sty | rg -o '[\w@]+$' | grep -v ovar@ | awk '!line[$0]++'
-\end{lstlisting} %^^A dummy '|' for emacs
-%
-% \subsubsection*{List of internal macros and lengths}
-%
-\begin{lstlisting}[language={bash}]
-  rg '\\(if)?ovar@[\w@]+' -o  -N overarrows.dtx | rg -v '(@true|@false)' | awk '!line[$0]++'
-\end{lstlisting} %^^A dummy '|' for emacs
-%
-% \subsubsection*{List of lengths}
-%
-\begin{lstlisting}[language={bash}]
-rg -o -N '^[[:blank:]]*\\(def|new)length[{\\]+[\w@]+' overarrows.sty | rg -o '[\w@]+$' | grep -v ovar@| awk '!line[$0]++'
-\end{lstlisting}
-%
-% \subsubsection*{List of keys}
-%
-\begin{lstlisting}[language={bash}]
-rg -o -N ".*/\." overarrows.sty | sed 's/\/\.$//' | sed -r 's/^([[:blank:]]|\\[[:alpha:]@]+\{)*//'  | awk '!line[$0]++'
-\end{lstlisting}
-%
-%</comment>
-%
-% \fi ^^A end of \iffalse
-%
-% \Finale
-%
-\endinput

Deleted: trunk/Master/texmf-dist/tex/latex/overarrows/overarrows.ins
===================================================================
--- trunk/Master/texmf-dist/tex/latex/overarrows/overarrows.ins	2023-01-20 22:31:29 UTC (rev 65598)
+++ trunk/Master/texmf-dist/tex/latex/overarrows/overarrows.ins	2023-01-20 23:02:46 UTC (rev 65599)
@@ -1,48 +0,0 @@
-%%
-%% Copyright (C) 2023 by Julien Labbé <Julien.Labbe at univ-grenoble-alpes.fr>
-%%
-%% This file may be distributed and/or modified under the conditions of the
-%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
-%% (at your option) any later version. The latest version of this license is in
-%% the file https://www.latex-project.org/lppl.txt
-%%
-
-\input docstrip.tex
-\keepsilent
-
-\usedir{tex/latex/overarrows}
-
-\preamble
-
-This is a generated file.
-
-Copyright (C) 2023 by Julien Labbé <Julien.Labbe at univ-grenoble-alpes.fr>
-
-This file may be distributed and/or modified under the conditions of the LaTeX
-Project Public License (LPPL), either version 1.3c of this license or (at your
-option) any later version. The latest version of this license is in the file
-https://www.latex-project.org/lppl.txt
-
-\endpreamble
-
-\askforoverwritefalse
-
-\generate{\file{overarrows.sty}{\from{overarrows.dtx}{package}}}
-\generate{\file{overarrows-doc.sty}{\from{overarrows.dtx}{docstyle}}}
-
-\obeyspaces
-\Msg{*************************************************************}
-\Msg{*                                                           *}
-\Msg{* To finish the installation you have to move the following *}
-\Msg{* file into a directory searched by TeX:                    *}
-\Msg{*                                                           *}
-\Msg{*     overarrows.sty                                      *}
-\Msg{*                                                           *}
-\Msg{* To produce the documentation run the file                 *}
-\Msg{* overarrows.dtx through LaTeX.                           *}
-\Msg{*                                                           *}
-\Msg{* Happy TeXing!                                             *}
-\Msg{*                                                           *}
-\Msg{*************************************************************}
-
-\endbatchfile

Deleted: trunk/Master/texmf-dist/tex/latex/overarrows/overarrows.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2023-01-20 22:31:29 UTC (rev 65598)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2023-01-20 23:02:46 UTC (rev 65599)
@@ -2263,7 +2263,7 @@
  'onedown',	'\.dict|' . $standardtex,
  'optex',	'\.opm|\.ini',
  'outerhbox',	'\.sty',
- 'overarrows',	'[^c]\.sty|',		# not -doc.sty
+ 'overarrows',	'[^c]\.sty',		# not -doc.sty
  'pageslts',    '\.sty|[^c]\.cfg',      # not ltxdoc.cfg
  'papermas',    '\.sty|[^c]\.cfg',      # not ltxdoc.cfg, would be system-wide
  'passivetex',  '\.xmt|' . $standardtex,



More information about the tex-live-commits mailing list.