From aa5b2a5b49cfcd05ec9d1a4f3051320f78c4afbf Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Thu, 27 Oct 2016 21:23:31 +0000
Subject: nameauth (27oct16)

git-svn-id: svn://tug.org/texlive/trunk@42368 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/latex/nameauth/nameauth.sty | 1862 ++++++++++-----------
 1 file changed, 915 insertions(+), 947 deletions(-)

(limited to 'Master/texmf-dist/tex/latex/nameauth/nameauth.sty')

diff --git a/Master/texmf-dist/tex/latex/nameauth/nameauth.sty b/Master/texmf-dist/tex/latex/nameauth/nameauth.sty
index f01e7f486ff..1af86456999 100644
--- a/Master/texmf-dist/tex/latex/nameauth/nameauth.sty
+++ b/Master/texmf-dist/tex/latex/nameauth/nameauth.sty
@@ -7,7 +7,7 @@
 %% nameauth.dtx  (with options: `package')
 %% 
 %% --------:| ----------------------------------------------------------------
-%% nameauth:| Name authority mechanism for consistency in text and index
+%% nameauth:| Name authority management for consistency in text and index
 %%   Author:| Charles P. Schaum
 %%   E-mail:| charles dot schaum at comcast dot net
 %%  License:| Released under the LaTeX Project Public License v1.3c or later
@@ -15,34 +15,47 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[1999/12/01]
 \ProvidesPackage{nameauth}
-    [2016/09/19 v2.6 Name authority mechanism for consistency in text and index]
-
-\newif\if@nameauth@AlwaysComma
-\newif\if@nameauth@ShowComma
-\newif\if@nameauth@NoComma
+    [2016/10/26 v3.0 Name authority management for consistency in text and index]
+\newif\if@nameauth@InAKA
+\newif\if@nameauth@InName
+\newif\if@nameauth@Xref
+\newif\if@nameauth@Lock
+\newif\if@nameauth@InHook
+\newif\if@nameauth@DoIndex
+\newif\if@nameauth@Pretag
+\newif\if@nameauth@SeeAlso
 \newif\if@nameauth@MainFormat
 \newif\if@nameauth@AKAFormat
 \newif\if@nameauth@LocalNames
-\newif\if@nameauth@DoIndex
-\newif\if@nameauth@Pretag
+\newif\if@nameauth@FirstFormat
+\newif\if@nameauth@AlwaysFormat
+\newif\if@nameauth@AlwaysComma
+\newif\if@nameauth@ShowComma
+\newif\if@nameauth@NoComma
+\newif\if@nameauth@NBSP
+\newif\if@nameauth@Punct
 \newif\if@nameauth@FullName
 \newif\if@nameauth@FirstName
 \newif\if@nameauth@AltAKA
-\newif\if@nameauth@AllCaps
-\newif\if@nameauth@AllThis
+\newif\if@nameauth@OldAKA
+\newif\if@nameauth@ShortSNN
+\newif\if@nameauth@EastFN
 \newif\if@nameauth@RevAll
 \newif\if@nameauth@RevThis
+\newif\if@nameauth@AllCaps
+\newif\if@nameauth@AllThis
 \newif\if@nameauth@RevAllComma
 \newif\if@nameauth@RevThisComma
 \newif\if@nameauth@DoCaps
+\newif\if@nameauth@UTF
 \newif\if@nameauth@Accent
-\newif\if@nameauth@NBSP
-\newif\if@nameauth@Punct
-\newif\if@nameauth@FirstFormat
-\newif\if@nameauth@AlwaysFormat
-\newif\if@nameauth@InAKA
-\newif\if@nameauth@InName
-\newif\if@nameauth@Lock
+\newif\if@nameauth@Verbose
+\newtoks\@nameauth@toksa%
+\newtoks\@nameauth@toksb%
+\newtoks\@nameauth@toksc%
+\newtoks\@nameauth@etoksb%
+\newtoks\@nameauth@etoksc%
+\newtoks\@nameauth@etoksd%
 \newcommand*\NamesFormat{}
 \newcommand*\MainNameHook{}
 \newcommand*\FrontNamesFormat{}
@@ -50,17 +63,12 @@
 \newcommand*\NameauthName{\@nameauth@Name}
 \newcommand*\NameauthLName{\@nameauth@Name}
 \newcommand*\NameauthFName{\@nameauth@Name}
-\newtoks\@nameauth@toksa%
-\newtoks\@nameauth@toksb%
-\newtoks\@nameauth@toksc%
-\newtoks\@nameauth@etoksb%
-\newtoks\@nameauth@etoksc%
-\newtoks\@nameauth@etoksd%
 \DeclareOption{comma}{\@nameauth@AlwaysCommatrue}
 \DeclareOption{nocomma}{\@nameauth@AlwaysCommafalse}
 \DeclareOption{mainmatter}{\@nameauth@MainFormattrue}
 \DeclareOption{frontmatter}{\@nameauth@MainFormatfalse}
 \DeclareOption{formatAKA}{\@nameauth@AKAFormattrue}
+\DeclareOption{oldAKA}{\@nameauth@oldAKAtrue}
 \DeclareOption{index}{\@nameauth@DoIndextrue}
 \DeclareOption{noindex}{\@nameauth@DoIndexfalse}
 \DeclareOption{pretag}{\@nameauth@Pretagtrue}
@@ -78,6 +86,7 @@
 \DeclareOption{italic}{\renewcommand*\NamesFormat{\itshape}}
 \DeclareOption{boldface}{\renewcommand*\NamesFormat{\bfseries}}
 \DeclareOption{noformat}{\renewcommand*\NamesFormat{}}
+\DeclareOption{verbose}{\@nameauth@Verbosetrue}
 \ExecuteOptions%
   {nocomma,%
    mainmatter,%
@@ -88,421 +97,361 @@
    noformat}
 \ProcessOptions\relax
 \RequirePackage{etoolbox}
-\RequirePackage{ifluatex}
-\RequirePackage{ifxetex}
-\RequirePackage{trimspaces}
 \RequirePackage{suffix}
+\RequirePackage{trimspaces}
 \RequirePackage{xargs}
-\newcommand*\@nameauth@Clean[1]%
+\newcommand*\@nameauth@Clean[1]
   {\expandafter\zap@space\detokenize{#1} \@empty}
-\newcommand*\@nameauth@Root[1]%
-  {\@nameauth@TrimRoot#1,\@empty\relax}
-\def\@nameauth@TrimRoot#1,#2\relax{\trim@spaces{#1}}
-\newcommand*\@nameauth@CapRoot[1]%
+\newcommand*\@nameauth@Root[1]{\@nameauth@TrimRoot#1,\\}
+\def\@nameauth@TrimRoot#1,#2\\{\trim@spaces{#1}}
+\newcommand*\@nameauth@TagRoot[1]{\@nameauth@TrimTag#1|\\}
+\def\@nameauth@TrimTag#1|#2\\{#1}
+\newcommand*\@nameauth@Suffix[1]{\@nameauth@TrimSuffix#1,,\\}
+\def\@nameauth@TrimSuffix#1,#2,#3\\{%
+  \ifx\\#2\\\@empty\else\trim@spaces{#2}\fi}
+\newcommand*\@nameauth@AllCapRoot[1]
+  {\uppercase{\@nameauth@Root{#1}}}
+\newcommand*\@nameauth@UTFtest[1]
 {%
-  \ifxetex
-    \@nameauth@CRii#1\relax%
+  \ifdefined\Umathchar
+    \@nameauth@UTFfalse%
   \else
-    \ifluatex
-      \@nameauth@CRii#1\relax%
-    \else
+    \ifdefined\UTFviii@two@octets
+      \toks@\expandafter{\@car#1\@nil}%
+      \edef\one{\the\toks@}%
+      \toks@\expandafter{\@carß\@nil}%
+      \edef\two{\the\toks@}%
+      \ifx\one\two\@nameauth@UTFtrue\else\@nameauth@UTFfalse\fi
       \if@nameauth@Accent
-        \@nameauth@CRiii#1\relax%
-      \else
-        \@nameauth@CRii#1\relax%
+        \@nameauth@UTFtrue%
+        \@nameauth@Accentfalse%
       \fi
-    \fi
+    \else\@nameauth@UTFfalse\fi
   \fi
 }
-\def\@nameauth@CRii#1#2\relax{\uppercase{#1}\@nameauth@Root{#2}}
-\def\@nameauth@CRiii#1#2#3\relax{\uppercase{#1#2}\@nameauth@Root{#3}}
-\newcommand*\@nameauth@AllCapRoot[1]%
-  {\uppercase{\@nameauth@Root{#1}}}
-\newcommand*\@nameauth@Suffix[1]%
-  {\@nameauth@TrimSuffix#1\relax}
-\def\@nameauth@TrimSuffix#1,#2\relax{\trim@spaces{#2}}
-\newcommand*\@nameauth@TestDot[1]%
+\newcommand*\@nameauth@CapRoot[1]
 {%
-  \def\TestDot##1.\TestEnd##2\TestStop{\TestPunct{##2}}%
-  \def\TestPunct##1%
-    {\ifx\TestPunct##1\TestPunct\else\@nameauth@Puncttrue\fi}%
+  \if@nameauth@UTF \@nameauth@CRiii#1\\%
+  \else \@nameauth@CRii#1\\%
+  \fi
+}
+\def\@nameauth@CRii#1#2\\{\@nameauth@Root{\uppercase{#1}#2}}
+\def\@nameauth@CRiii#1#2#3\\{\@nameauth@Root{\uppercase{#1#2}#3}}
+\newcommand*\@nameauth@TestDot[1]
+{%
+  \def\TestDot##1.\TestEnd##2\\{\TestPunct{##2}}%
+  \def\TestPunct##1{%
+    \ifx\TestPunct##1\TestPunct%
+    \else
+      \@nameauth@Puncttrue%
+    \fi
+  }%
   \@nameauth@Punctfalse%
-  \TestDot#1\TestEnd.\TestEnd\TestStop%
+  \TestDot#1\TestEnd.\TestEnd\\%
 }
 \newcommand*\@nameauth@CheckDot%
   {\futurelet\@token\@nameauth@EvalDot}
 \newcommand*\@nameauth@EvalDot%
-  {\let\@period=.\ifx\@token\@period\expandafter\@gobble \fi}
-\newcommand*\@nameauth@FmtName[1]%
 {%
-  \if@nameauth@InAKA
-    \if@nameauth@AlwaysFormat
-      \@nameauth@FirstFormattrue%
-    \else
-      \if@nameauth@AKAFormat\else\@nameauth@FirstFormatfalse\fi
+  \let\@period=.%
+  \ifx\@token\@period\expandafter\@gobble \fi
+}
+\newcommand*\@nameauth@Error[2]
+{%
+  \edef\msg{#2}%
+  \edef\pkg{nameauth}%
+  \let\ex\expandafter%
+  \protected@edef\argb{\trim@spaces{#1}}%
+  \protected@edef\rootb{\@nameauth@Root{#1}}%
+  \ifx\argb\@empty
+    \ex\PackageError\ex{\ex\pkg\ex}\ex{\msg SNN field empty}%
+  \else
+    \ifx\rootb\@empty
+      \ex\PackageError\ex{\ex\pkg\ex}\ex{\msg SNN field malformed}%
     \fi
-    \@nameauth@TestDot{#1}%
-    \if@nameauth@MainFormat
-      \if@nameauth@FirstFormat
-        \bgroup\NamesFormat{#1}\egroup%
-      \else
-        \bgroup\MainNameHook{#1}\egroup%
-      \fi
+  \fi
+}
+\newcommandx*\@nameauth@Name[3][1=\@empty, 3=\@empty]
+{%
+  \if@nameauth@Lock\else
+  \@nameauth@Locktrue%
+  \@nameauth@InNametrue%
+  \@nameauth@Error{#2}{macro \string\@nameauth@name}%
+  \leavevmode\hbox{}%
+  \IndexName[#1]{#2}[#3]%
+  \if@nameauth@MainFormat
+    \@nameauth@Parse[#1]{#2}[#3]{!MN}%
+  \else
+    \@nameauth@Parse[#1]{#2}[#3]{!NF}%
+  \fi
+  \IndexName[#1]{#2}[#3]%
+  \@nameauth@Lockfalse%
+  \@nameauth@InNamefalse%
+  \@nameauth@NBSPfalse%
+  \@nameauth@DoCapsfalse%
+  \@nameauth@Accentfalse%
+  \@nameauth@AllThisfalse%
+  \@nameauth@ShowCommafalse%
+  \@nameauth@NoCommafalse%
+  \@nameauth@RevThisfalse%
+  \@nameauth@RevThisCommafalse%
+  \@nameauth@ShortSNNfalse%
+  \@nameauth@EastFNfalse%
+  \fi
+  \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi
+}
+\newcommandx*\@nameauth@Parse[4][1=\@empty, 3=\@empty]
+{%
+  \if@nameauth@Lock
+    \protected@edef\arga{\trim@spaces{#1}}%
+    \protected@edef\argc{\trim@spaces{#3}}%
+    \protected@edef\suffb{\@nameauth@Suffix{#2}}%
+    \if@nameauth@AllCaps\@nameauth@AllThistrue\fi
+    \if@nameauth@RevAll\@nameauth@RevThistrue\fi
+    \if@nameauth@RevAllComma\@nameauth@RevThisCommatrue\fi
+    \if@nameauth@DoCaps
+      \@nameauth@UTFtest{#2}%
+      \protected@edef\rootb{\@nameauth@CapRoot{#2}}%
     \else
-      \if@nameauth@FirstFormat
-        \bgroup\FrontNamesFormat{#1}\egroup%
+      \if@nameauth@AllThis
+        \protected@edef\rootb{\@nameauth@AllCapRoot{#2}}%
       \else
-        \bgroup\FrontNameHook{#1}\egroup%
+        \protected@edef\rootb{\@nameauth@Root{#2}}%
       \fi
     \fi
-  \else
-    \if@nameauth@AlwaysFormat\@nameauth@FirstFormattrue\fi
-    \@nameauth@TestDot{#1}%
-    \if@nameauth@MainFormat
-      \if@nameauth@FirstFormat
-        \bgroup\NamesFormat{#1}\egroup%
+    \def\csb{\@nameauth@Clean{#2}}%
+    \def\csbc{\@nameauth@Clean{#2,#3}}%
+    \def\csab{\@nameauth@Clean{#1!#2}}%
+    \@nameauth@toksa\expandafter{#1}%
+    \@nameauth@toksb\expandafter{#2}%
+    \@nameauth@toksc\expandafter{#3}%
+    \edef\Space{\space}%
+    \if@nameauth@NBSP\edef\Space{\nobreakspace}\fi
+    \ifx\arga\@empty\else
+      \if@nameauth@AlwaysComma
+        \edef\Space{,\space}%
+        \if@nameauth@NBSP\edef\Space{,\nobreakspace}\fi
+      \fi
+      \if@nameauth@ShowComma
+        \edef\Space{,\space}%
+        \if@nameauth@NBSP\edef\Space{,\nobreakspace}\fi
+      \fi
+      \if@nameauth@NoComma
+        \edef\Space{\space}%
+        \if@nameauth@NBSP\edef\Space{\nobreakspace}\fi
+      \fi
+    \fi
+    \let\SNN\rootb%
+    \ifx\arga\@empty
+      \ifx\argc\@empty
+        \let\FNN\suffb%
+        \let\SNN\rootb%
+        \@nameauth@NonWest{\csb#4}%
       \else
-        \bgroup\MainNameHook{#1}\egroup%
+        \ifx\suffb\@empty
+          \let\FNN\argc%
+          \let\SNN\rootb%
+          \@nameauth@NonWest{\csbc#4}%
+        \else
+          \let\FNN\argc%
+          \let\SNN\rootb%
+          \@nameauth@NonWest{\csb#4}%
+        \fi
       \fi
     \else
-      \if@nameauth@FirstFormat
-        \bgroup\FrontNamesFormat{#1}\egroup%
+      \ifx\argc\@empty
+        \let\FNN\arga%
+      \else
+        \let\FNN\argc%
+      \fi
+      \ifx\suffb\@empty
       \else
-        \bgroup\FrontNameHook{#1}\egroup%
+        \protected@edef\SNN{\rootb\Space\suffb}%
+        \if@nameauth@ShortSNN\let\SNN\rootb\fi
       \fi
+      \@nameauth@West{\csab#4}%
     \fi
   \fi
 }
-\newcommand*\@nameauth@Actual{@}
-\newcommand*\@nameauth@Index[2]%
+\newcommand*\@nameauth@NonWest[1]
 {%
-  \def\cseq{#1}%
-  \ifcsname\cseq!TAG\endcsname
-    \ifcsname\cseq!PRE\endcsname
-      \if@nameauth@DoIndex
-        \index%
-        {\csname\cseq!PRE\endcsname#2\csname\cseq!TAG\endcsname}%
+  \if@nameauth@Lock
+    \ifcsname#1\endcsname\else
+      \@nameauth@FirstFormattrue%
+    \fi
+    \if@nameauth@InAKA
+      \if@nameauth@AltAKA
+        \if@nameauth@OldAKA\@nameauth@EastFNtrue\fi
+        \@nameauth@FullNamefalse%
+        \@nameauth@FirstNametrue%
+      \else
+        \@nameauth@FullNametrue%
+        \@nameauth@FirstNamefalse%
       \fi
     \else
-      \if@nameauth@DoIndex\index{#2\csname\cseq!TAG\endcsname}\fi
+      \ifcsname#1\endcsname\else
+        \@nameauth@FullNametrue%
+        \@nameauth@FirstNamefalse%
+      \fi
     \fi
-  \else
-    \ifcsname\cseq!PRE\endcsname
-      \if@nameauth@DoIndex\index{\csname\cseq!PRE\endcsname#2}\fi
+    \if@nameauth@FirstName
+      \@nameauth@FullNamefalse%
+    \fi
+    \ifx\FNN\@empty
+      \@nameauth@Hook{\SNN}%
     \else
-      \if@nameauth@DoIndex\index{#2}\fi
+      \if@nameauth@FullName
+        \if@nameauth@RevThis
+          \@nameauth@Hook{\FNN\Space\SNN}%
+        \else
+          \@nameauth@Hook{\SNN\Space\FNN}%
+        \fi
+      \else
+        \if@nameauth@EastFN
+          \@nameauth@Hook{\FNN}%
+        \else
+          \@nameauth@Hook{\SNN}%
+        \fi
+      \fi
+    \fi
+    \ifcsname#1\endcsname\else
+      \if@nameauth@InAKA\else\csgdef{#1}{}\fi%
     \fi
+    \@nameauth@FullNamefalse%
+    \@nameauth@FirstNamefalse%
   \fi
 }
-\newcommandx*\@nameauth@Name[3][1=\@empty, 3=\@empty]%
+\newcommand*\@nameauth@West[1]
 {%
-  \if@nameauth@Lock\else
-  \@nameauth@Locktrue%
-  \@nameauth@InNametrue%
-  \let\ex\expandafter%
-  \leavevmode\hbox{}%
-  \protected@edef\testa{#1}%
-  \protected@edef\arga{\trim@spaces{#1}}%
-  \protected@edef\testb{\trim@spaces{#2}}%
-  \protected@edef\testbr{\@nameauth@Root{#2}}%
-  \protected@edef\testc{#3}%
-  \protected@edef\argc{\trim@spaces{#3}}%
-  \def\csb{\@nameauth@Clean{#2}}%
-  \def\csbc{\@nameauth@Clean{#2,#3}}%
-  \def\csab{\@nameauth@Clean{#1!#2}}%
-  \@nameauth@toksa\expandafter{#1}%
-  \@nameauth@toksb\expandafter{#2}%
-  \@nameauth@toksc\expandafter{#3}%
-  \ifx\testb\@empty
-    \PackageError{nameauth}%
-    {macro \Name: Essential name missing}%
-  \else
-    \ifx\csb\@empty
-      \PackageError{nameauth}%
-      {macro \Name: Essential name malformed}%
-    \fi
-  \fi
-  \if@nameauth@AllCaps\@nameauth@AllThistrue\fi
-  \if@nameauth@RevAll\@nameauth@RevThistrue\fi
-  \if@nameauth@RevAllComma\@nameauth@RevThisCommatrue\fi
-  \IndexName[#1]{#2}[#3]%
-  \protected@edef\Space{\space}%
-  \if@nameauth@NBSP\protected@edef\Space{\nobreakspace}\fi
-  \ifx\arga\@empty\else
-    \if@nameauth@AlwaysComma
-      \protected@edef\Space{,\space}%
-      \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi
-    \fi
-    \if@nameauth@ShowComma
-      \protected@edef\Space{,\space}%
-      \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi
-    \fi
-    \if@nameauth@NoComma
-      \protected@edef\Space{\space}%
-      \if@nameauth@NBSP\protected@edef\Space{\nobreakspace}\fi
-    \fi
-  \fi
-  \protected@edef\RawShort{\@nameauth@Root{#2}}%
-  \if@nameauth@DoCaps
-    \protected@edef\CapShort{\@nameauth@CapRoot{#2}}%
-  \else
-    \let\CapShort\RawShort%
-  \fi
-  \protected@edef\AllCapShort{\@nameauth@AllCapRoot{#2}}%
-  \ifx\testb\testbr
-    \let\Suff\@empty%
-    \let\Reversed\RawShort%
-    \let\SNN\RawShort%
-    \let\PrintShort\RawShort%
-    \if@nameauth@DoCaps
-      \let\Reversed\CapShort%
-      \let\SNN\CapShort%
-      \let\PrintShort\CapShort%
-    \fi
-    \if@nameauth@AllThis
-      \let\Reversed\AllCapShort%
-      \let\SNN\AllCapShort%
-      \let\PrintShort\AllCapShort%
+  \if@nameauth@Lock
+    \ifcsname#1\endcsname\else
+      \@nameauth@FirstFormattrue%
     \fi
-  \else
-    \protected@edef\Suff{\@nameauth@Suffix{#2}}%
-    \protected@edef\Reversed{\Suff\Space\RawShort}%
-    \protected@edef\SNN{\RawShort\Space\Suff}%
-    \if@nameauth@RevThis
-      \let\PrintShort\Suff%
+    \if@nameauth@InAKA
+      \if@nameauth@AltAKA
+        \@nameauth@FullNamefalse%
+        \@nameauth@FirstNametrue%
+      \else
+        \@nameauth@FullNametrue%
+        \@nameauth@FirstNamefalse%
+      \fi
     \else
-      \let\PrintShort\RawShort%
+      \ifcsname#1\endcsname\else
+        \@nameauth@FullNametrue%
+        \@nameauth@FirstNamefalse%
+      \fi
     \fi
-    \if@nameauth@DoCaps
-      \protected@edef\Reversed{\Suff\Space\CapShort}%
-      \protected@edef\SNN{\CapShort\Space\Suff}%
+    \if@nameauth@FirstName
+      \@nameauth@FullNamefalse%
+    \fi
+    \if@nameauth@FullName
       \if@nameauth@RevThis
-        \let\PrintShort\Suff%
+        \@nameauth@Hook{\SNN\space\FNN}%
       \else
-        \let\PrintShort\CapShort%
+        \if@nameauth@RevThisComma
+          \edef\RevSpace{,\space}%
+          \@nameauth@Hook{\SNN\RevSpace\FNN}%
+        \else
+          \@nameauth@Hook{\FNN\space\SNN}%
+        \fi
       \fi
-    \fi
-    \if@nameauth@AllThis
-      \protected@edef\Reversed{\Suff\Space\AllCapShort}%
-      \protected@edef\SNN{\AllCapShort\Space\Suff}%
-      \if@nameauth@RevThis
-        \let\PrintShort\Suff%
+    \else
+      \if@nameauth@FirstName
+        \@nameauth@Hook{\FNN}%
       \else
-        \let\PrintShort\AllCapShort%
+        \@nameauth@Hook{\rootb}%
       \fi
     \fi
+    \ifcsname#1\endcsname\else
+      \if@nameauth@InAKA\else\csgdef{#1}{}\fi%
+    \fi
+    \@nameauth@FullNamefalse%
+    \@nameauth@FirstNamefalse%
   \fi
-  \ifx\testa\@empty
-    \ifx\testc\@empty
+}
+\newcommand*\@nameauth@Hook[1]
+{%
+  \if@nameauth@Lock
+    \@nameauth@InHooktrue%
+    \protected@edef\test{#1}%
+    \expandafter\@nameauth@TestDot\expandafter{\test}%
+    \if@nameauth@InAKA
+      \if@nameauth@AlwaysFormat
+        \@nameauth@FirstFormattrue%
+      \else
+        \if@nameauth@AKAFormat\else
+        \@nameauth@FirstFormatfalse\fi
+      \fi
       \if@nameauth@MainFormat
-        \ifcsname\csb!MN\endcsname
-          \if@nameauth@FirstName
-            \@nameauth@FullNamefalse%
-          \fi
-          \if@nameauth@FullName
-            \if@nameauth@RevThis
-              \ex\@nameauth@FmtName\ex{\Reversed}%
-            \else
-              \ex\@nameauth@FmtName\ex{\SNN}%
-            \fi
-          \else
-            \ex\@nameauth@FmtName\ex{\PrintShort}%
-          \fi
-          \@nameauth@FullNamefalse%
-          \@nameauth@FirstNamefalse%
+        \if@nameauth@FirstFormat
+          \bgroup\NamesFormat{#1}\egroup%
         \else
-          \@nameauth@FirstFormattrue%
-          \@nameauth@FullNametrue%
-          \@nameauth@FirstNamefalse%
-          \if@nameauth@RevThis
-            \ex\@nameauth@FmtName\ex{\Reversed}%
-          \else
-            \ex\@nameauth@FmtName\ex{\SNN}%
-          \fi
-          \csgdef{\csb!MN}{}%
-          \@nameauth@FullNamefalse%
+          \bgroup\MainNameHook{#1}\egroup%
         \fi
       \else
-        \ifcsname\csb!NF\endcsname
-          \if@nameauth@FirstName
-            \@nameauth@FullNamefalse%
-          \fi
-          \if@nameauth@FullName
-            \if@nameauth@RevThis
-              \ex\@nameauth@FmtName\ex{\Reversed}%
-            \else
-              \ex\@nameauth@FmtName\ex{\SNN}%
-            \fi
-          \else
-            \ex\@nameauth@FmtName\ex{\PrintShort}%
-          \fi
-          \@nameauth@FullNamefalse%
-          \@nameauth@FirstNamefalse%
+        \if@nameauth@FirstFormat
+          \bgroup\FrontNamesFormat{#1}\egroup%
         \else
-          \@nameauth@FirstFormattrue%
-          \@nameauth@FullNametrue%
-          \@nameauth@FirstNamefalse%
-          \if@nameauth@RevThis
-            \ex\@nameauth@FmtName\ex{\Reversed}%
-          \else
-            \ex\@nameauth@FmtName\ex{\SNN}%
-          \fi
-          \csgdef{\csb!NF}{}%
-          \@nameauth@FullNamefalse%
+          \bgroup\FrontNameHook{#1}\egroup%
         \fi
       \fi
     \else
+      \if@nameauth@AlwaysFormat
+        \@nameauth@FirstFormattrue%
+      \fi
       \if@nameauth@MainFormat
-        \ifcsname\csbc!MN\endcsname
-          \if@nameauth@FirstName
-            \@nameauth@FullNamefalse%
-          \fi
-          \if@nameauth@FullName
-            \if@nameauth@RevThis
-              \ex\@nameauth@FmtName\ex{\ex\argc\ex\Space\SNN}%
-            \else
-              \ex\@nameauth@FmtName\ex{\ex\SNN\ex\Space\argc}%
-            \fi
-          \else
-            \if@nameauth@RevThis
-              \ex\@nameauth@FmtName\ex{\argc}%
-            \else
-              \ex\@nameauth@FmtName\ex{\PrintShort}%
-            \fi
-          \fi
-          \@nameauth@FullNamefalse%
-          \@nameauth@FirstNamefalse%
+        \if@nameauth@FirstFormat
+          \bgroup\NamesFormat{#1}\egroup%
         \else
-          \@nameauth@FirstFormattrue%
-          \@nameauth@FullNametrue%
-          \@nameauth@FirstNamefalse%
-          \if@nameauth@RevThis
-            \ex\@nameauth@FmtName\ex{\ex\argc\ex\Space\SNN}%
-          \else
-            \ex\@nameauth@FmtName\ex{\ex\SNN\ex\Space\argc}%
-          \fi
-          \csgdef{\csbc!MN}{}%
-          \@nameauth@FullNamefalse%
+          \bgroup\MainNameHook{#1}\egroup%
         \fi
       \else
-        \ifcsname\csbc!NF\endcsname
-          \if@nameauth@FirstName
-            \@nameauth@FullNamefalse%
-          \fi
-          \if@nameauth@FullName
-            \if@nameauth@RevThis
-              \ex\@nameauth@FmtName\ex{\ex\argc\ex\Space\SNN}%
-            \else
-              \ex\@nameauth@FmtName\ex{\ex\SNN\ex\Space\argc}%
-            \fi
-          \else
-            \if@nameauth@RevThis
-              \ex\@nameauth@FmtName\ex{\argc}%
-            \else
-              \ex\@nameauth@FmtName\ex{\PrintShort}%
-            \fi
-          \fi
-          \@nameauth@FullNamefalse%
-          \@nameauth@FirstNamefalse%
+        \if@nameauth@FirstFormat
+          \bgroup\FrontNamesFormat{#1}\egroup%
         \else
-          \@nameauth@FirstFormattrue%
-          \@nameauth@FullNametrue%
-          \@nameauth@FirstNamefalse%
-          \if@nameauth@RevThis
-            \ex\@nameauth@FmtName\ex{\ex\argc\ex\Space\SNN}%
-          \else
-            \ex\@nameauth@FmtName\ex{\ex\SNN\ex\Space\argc}%
-          \fi
-          \csgdef{\csbc!NF}{}%
-          \@nameauth@FullNamefalse%
+          \bgroup\FrontNameHook{#1}\egroup%
         \fi
       \fi
     \fi
-  \else
-    \if@nameauth@RevThisComma
-      \protected@edef\Space{,\space}%
-      \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi
-    \fi
-    \ifx\testc\@empty
-      \let\FNN\arga%
-    \else
-      \let\FNN\argc%
-    \fi
-    \if@nameauth@MainFormat
-      \ifcsname\csab!MN\endcsname
-        \if@nameauth@FirstName
-          \@nameauth@FullNamefalse%
-          \let\PrintShort\FNN%
-        \fi
-        \if@nameauth@FullName
-          \if@nameauth@RevThis
-            \ex\@nameauth@FmtName\ex{\ex\SNN\ex\Space\FNN}%
-          \else
-            \ex\@nameauth@FmtName\ex{\ex\FNN\ex\space\SNN}%
-          \fi
+    \@nameauth@FirstFormatfalse%
+    \@nameauth@InHookfalse%
+  \fi
+}
+\newcommand*\@nameauth@Index[2]
+{%
+  \def\cseq{#1}%
+  \let\ex\expandafter%
+  \ifcsname\cseq!TAG\endcsname
+    \protected@edef\Tag{\csname#1!TAG\endcsname}%
+    \ex\def\ex\ShortTag\ex{\ex\@nameauth@TagRoot\ex{\Tag}}%
+  \fi
+  \if@nameauth@DoIndex
+    \ifcsname\cseq!TAG\endcsname
+      \ifcsname\cseq!PRE\endcsname
+        \if@nameauth@Xref%
+          \index%
+          {\csname\cseq!PRE\endcsname#2\ShortTag}%
         \else
-          \ex\@nameauth@FmtName\ex{\PrintShort}%
+          \index%
+          {\csname\cseq!PRE\endcsname#2\csname\cseq!TAG\endcsname}%
         \fi
-        \@nameauth@FullNamefalse%
-        \@nameauth@FirstNamefalse%
       \else
-        \@nameauth@FirstFormattrue%
-        \@nameauth@FullNametrue%
-        \@nameauth@FirstNamefalse%
-        \if@nameauth@RevThis
-          \ex\@nameauth@FmtName\ex{\ex\SNN\ex\Space\FNN}%
+        \if@nameauth@Xref
+          \index{#2\ShortTag}%
         \else
-          \ex\@nameauth@FmtName\ex{\ex\FNN\ex\space\SNN}%
+          \index{#2\csname\cseq!TAG\endcsname}%
         \fi
-        \csgdef{\csab!MN}{}%
-        \@nameauth@FullNamefalse%
       \fi
     \else
-      \ifcsname\csab!NF\endcsname
-        \if@nameauth@FirstName
-          \@nameauth@FullNamefalse%
-          \let\PrintShort\FNN%
-        \fi
-        \if@nameauth@FullName
-          \if@nameauth@RevThis
-            \ex\@nameauth@FmtName\ex{\ex\SNN\ex\Space\FNN}%
-          \else
-            \ex\@nameauth@FmtName\ex{\ex\FNN\ex\space\SNN}%
-          \fi
-        \else
-          \ex\@nameauth@FmtName\ex{\PrintShort}%
-        \fi
-        \@nameauth@FullNamefalse%
-        \@nameauth@FirstNamefalse%
+      \ifcsname\cseq!PRE\endcsname
+        \index{\csname\cseq!PRE\endcsname#2}%
       \else
-        \@nameauth@FirstFormattrue%
-        \@nameauth@FullNametrue%
-        \@nameauth@FirstNamefalse%
-        \if@nameauth@RevThis
-          \ex\@nameauth@FmtName\ex{\ex\SNN\ex\Space\FNN}%
-        \else
-          \ex\@nameauth@FmtName\ex{\ex\FNN\ex\space\SNN}%
-        \fi
-        \csgdef{\csab!NF}{}%
-        \@nameauth@FullNamefalse%
+        \index{#2}%
       \fi
     \fi
   \fi
-  \IndexName[#1]{#2}[#3]%
-  \@nameauth@Lockfalse%
-  \@nameauth@InNamefalse%
-  \@nameauth@FirstFormatfalse%
-  \@nameauth@NBSPfalse%
-  \@nameauth@DoCapsfalse%
-  \@nameauth@Accentfalse%
-  \@nameauth@AllThisfalse%
-  \@nameauth@ShowCommafalse%
-  \@nameauth@NoCommafalse%
-  \@nameauth@RevThisfalse%
-  \@nameauth@RevThisCommafalse%
-  \fi
-  \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi
 }
+\newcommand*\@nameauth@Actual{@}
 \newcommand*\CapThis{\@nameauth@DoCapstrue}
 \newcommand*\AccentCapThis%
   {\@nameauth@Accenttrue\@nameauth@DoCapstrue}
@@ -512,14 +461,16 @@
 \newcommand*\RevName{\@nameauth@RevThistrue}
 \newcommand*\ReverseInactive{\@nameauth@RevAllfalse}
 \newcommand*\ReverseActive{\@nameauth@RevAlltrue}
+\newcommand*\ForceFN{\@nameauth@EastFNtrue}
 \newcommand*\RevComma%
-  {\@nameauth@RevThistrue\@nameauth@RevThisCommatrue}
+  {\@nameauth@RevThisCommatrue}
 \newcommand*\ReverseCommaInactive%
-  {\@nameauth@RevAllfalse\@nameauth@RevAllCommafalse}
+  {\@nameauth@RevAllCommafalse}
 \newcommand*\ReverseCommaActive%
-  {\@nameauth@RevAlltrue\@nameauth@RevAllCommatrue}
+  {\@nameauth@RevAllCommatrue}
 \newcommand*\ShowComma{\@nameauth@ShowCommatrue}
 \newcommand*\NoComma{\@nameauth@NoCommatrue}
+\newcommand*\DropAffix{\@nameauth@ShortSNNtrue}
 \newcommand*\KeepAffix{\@nameauth@NBSPtrue}
 \newcommand*\NamesInactive{\@nameauth@MainFormatfalse}
 \newcommand*\NamesActive{\@nameauth@MainFormattrue}
@@ -527,714 +478,673 @@
 \newcommand*\GlobalNames{\global\@nameauth@LocalNamesfalse}
 \newcommand*\IndexInactive{\@nameauth@DoIndexfalse}
 \newcommand*\IndexActive{\@nameauth@DoIndextrue}
-\newcommand*\IndexActual[1]%
+\newcommand*\IndexActual[1]
   {\global\renewcommand*\@nameauth@Actual{#1}}
-\def\Name{\NameauthName}
-\WithSuffix\def\Name*{\@nameauth@FullNametrue\NameauthLName}
-\def\FName{\@nameauth@FirstNametrue\NameauthFName}
-\WithSuffix\def\FName*{\@nameauth@FirstNametrue\NameauthFName}
-\newcommandx*\AKA[5][1=\@empty, 3=\@empty, 5=\@empty]%
+\newcommand*\SeeAlso{\@nameauth@SeeAlsotrue}
+\newcommand*\NameParser
 {%
-  \if@nameauth@Lock\else
-  \@nameauth@Locktrue%
-  \@nameauth@InAKAtrue%
-  \let\ex\expandafter%
-  \leavevmode\hbox{}%
-  \protected@edef\testa{#1}%
-  \protected@edef\arga{\trim@spaces{#1}}%
-  \protected@edef\testb{\trim@spaces{#2}}%
-  \protected@edef\testbr{\@nameauth@Root{#2}}%
-  \protected@edef\testc{#3}%
-  \protected@edef\argc{\trim@spaces{#3}}%
-  \def\argd{\trim@spaces{#3}}%
-  \protected@edef\testd{\trim@spaces{#4}}%
-  \protected@edef\testdr{\@nameauth@Root{#4}}%
-  \protected@edef\teste{#5}%
-  \protected@edef\arge{\trim@spaces{#5}}%
-  \def\csd{\@nameauth@Clean{#4}}%
-  \def\csde{\@nameauth@Clean{#4,#5}}%
-  \def\cscd{\@nameauth@Clean{#3!#4}}%
-  \@nameauth@toksa\expandafter{#3}%
-  \@nameauth@toksb\expandafter{#4}%
-  \@nameauth@toksc\expandafter{#5}%
-  \ifx\testb\@empty
-    \PackageError{nameauth}%
-    {macro \AKA: Essential name missing}%
-  \else
-    \ifx\csb\@empty
-      \PackageError{nameauth}%
-      {macro \AKA: Essential name malformed}%
-    \fi
-  \fi
-  \ifx\testd\@empty
-    \PackageError{nameauth}%
-    {macro \AKA: Essential name missing}%
-  \else
-    \ifx\csd\@empty
-      \PackageError{nameauth}%
-      {macro \AKA: Essential name malformed}%
-    \fi
-  \fi
-  \if@nameauth@AllCaps\@nameauth@AllThistrue\fi
-  \if@nameauth@RevAll\@nameauth@RevThistrue\fi
-  \if@nameauth@RevAllComma\@nameauth@RevThisCommatrue\fi
-  \protected@edef\Space{\space}%
-  \if@nameauth@NBSP\protected@edef\Space{\nobreakspace}\fi
-  \ifx\argc\@empty\else
-    \if@nameauth@AlwaysComma
-      \protected@edef\Space{,\space}%
-      \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi
-    \fi
-    \if@nameauth@ShowComma
-      \protected@edef\Space{,\space}%
-      \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi
-    \fi
-    \if@nameauth@NoComma
-      \protected@edef\Space{\space}%
-      \if@nameauth@NBSP\protected@edef\Space{\nobreakspace}\fi
-    \fi
-  \fi
-  \protected@edef\Shortb{\@nameauth@Root{#2}}%
-  \protected@edef\Shortd{\@nameauth@Root{#4}}%
-  \if@nameauth@DoCaps
-    \protected@edef\CapShort{\@nameauth@CapRoot{#4}}%
-  \else
-    \let\CapShort\Shortd
-  \fi
-  \protected@edef\AllCapShort{\@nameauth@AllCapRoot{#4}}%
-  \ifx\testb\testbr
-    \let\SNNb\Shortb%
-    \let\Suffb\@empty%
-  \else
-    \protected@edef\Suffb{\@nameauth@Suffix{#2}}%
-    \protected@edef\SNNb{\Shortb\space\Suffb}%
-  \fi
-  \ifx\testd\testdr
-    \let\Suffd\@empty%
-    \let\ISNNd\Shortd%
-    \let\Reversed\Shortd%
-    \let\SNNd\Shortd%
-    \if@nameauth@DoCaps
-      \let\SNNd\CapShort%
-      \let\Reversed\CapShort%
-    \fi
-    \if@nameauth@AllThis
-      \let\SNNd\AllCapShort%
-      \let\Reversed\AllCapShort%
-    \fi
-  \else
-    \protected@edef\Suffd{\@nameauth@Suffix{#4}}%
-    \protected@edef\ISNNd{\Shortd\space\Suffd}%
-    \protected@edef\Reversed{\Suffd\Space\Shortd}%
-    \protected@edef\SNNd{\Shortd\Space\Suffd}%
-    \if@nameauth@DoCaps
-      \protected@edef\Reversed{\Suffd\Space\CapShort}%
-      \protected@edef\SNNd{\CapShort\Space\Suffd}%
-    \fi
-    \if@nameauth@AllThis
-      \protected@edef\Reversed{\Suffd\Space\AllCapShort}%
-      \protected@edef\SNNd{\AllCapShort\Space\Suffd}%
-    \fi
-  \fi
-  \ifx\testc\@empty
-    \ifx\teste\@empty
-      \ifcsname\csd!PN\endcsname
-        \PackageWarning{nameauth}%
-        {macro \AKA: XRef: #4 exists}%
+  \if@nameauth@InHook
+    \let\SNN\rootb%
+    \ifx\arga\@empty
+      \ifx\argc\@empty
+        \let\FNN\suffb%
       \else
-        \ifcsname\csd!MN\endcsname
-          \PackageWarning{nameauth}%
-          {macro \AKA: Name reference: #4 exists; no xref}%
+        \let\FNN\argc%
+      \fi
+      \ifx\suffb\@empty
+        \SNN%
+      \else
+        \if@nameauth@FullName
+          \if@nameauth@RevThis
+            \FNN\Space\SNN%
+          \else
+            \SNN\Space\FNN%
+          \fi
         \else
-          \ifcsname\csd!NF\endcsname
-            \PackageWarning{nameauth}%
-            {macro \AKA: Name reference: #4 exists; no xref}%
+          \if@nameauth@EastFN
+            \FNN%
           \else
-            \ifx\testa\@empty
-              \@nameauth@Index{\csd}%
-                {\ISNNd|see{\SNNb}}%
-            \else
-              \ifx\Suffb\@empty
-                \@nameauth@Index{\csd}%
-                  {\ISNNd|see{\SNNb,\space\arga}}%
-              \else
-                \@nameauth@Index{\csd}%
-                  {\ISNNd|see{\Shortb,\space\arga,\space\Suffb}}%
-              \fi
-            \fi
+            \SNN%
           \fi
         \fi
       \fi
-      \if@nameauth@RevThisComma
-        \protected@edef\Space{,\space}%
-        \if@nameauth@NBSP
-          \protected@edef\Space{,\nobreakspace}%
-        \fi
-      \fi
-      \ifcsname\csd!PN\endcsname\else\@nameauth@FirstFormattrue\fi
-      \if@nameauth@RevThis
-        \ex\@nameauth@FmtName\ex{\Reversed}%
+    \else
+      \ifx\argc\@empty
+        \let\FNN\arga%
       \else
-        \ex\@nameauth@FmtName\ex{\SNNd}%
+        \let\FNN\argc%
       \fi
-      \ifcsname\csd!PN\endcsname\else\csgdef{\csd!PN}{}\fi
-    \else
-      \ifcsname\csde!PN\endcsname
-        \PackageWarning{nameauth}%
-        {macro \AKA: XRef: #4 #5 exists}%
+      \ifx\suffb\@empty
       \else
-        \ifcsname\csde!MN\endcsname
-          \PackageWarning{nameauth}%
-          {macro \AKA: Name reference: #4 #5 exists; no xref}%
+        \protected@edef\SNN{\rootb\Space\suffb}%
+        \if@nameauth@ShortSNN\let\SNN\rootb\fi%
+      \fi
+      \if@nameauth@FullName
+        \if@nameauth@RevThis
+          \SNN\space\FNN%
         \else
-          \ifcsname\csde!NF\endcsname
-            \PackageWarning{nameauth}%
-            {macro \AKA: Name reference: #4 #5 exists; no xref}%
+          \if@nameauth@RevThisComma
+            \SNN\RevSpace\FNN%
           \else
-            \ifx\testa\@empty
-              \@nameauth@Index{\csde}%
-                {\ISNNd\space\arge|see{\SNNb}}%
-            \else
-              \ifx\Suffb\@empty
-                \@nameauth@Index{\csde}%
-                  {\ISNNd\space\arge|see{\SNNb,\space\arga}}%
-              \else
-                \@nameauth@Index{\csde}%
-                {\ISNNd\space\arge|see{\Shortb,\space\arga,\space\Suffb}}%
-              \fi
-            \fi
+            \FNN\space\SNN%
           \fi
         \fi
+      \else
+        \if@nameauth@FirstName
+          \FNN%
+        \else
+          \protected@edef\SNN{\rootb}%
+          \SNN%
+        \fi
       \fi
-      \if@nameauth@RevThisComma
-        \protected@edef\Space{,\space}%
-        \if@nameauth@NBSP
-          \protected@edef\Space{,\nobreakspace}%
+    \fi
+  \fi
+}
+\newcommand\Name{\NameauthName}
+\WithSuffix{\newcommand*}\Name*%
+  {\@nameauth@FullNametrue\NameauthLName}
+\newcommand\FName{\@nameauth@FirstNametrue\NameauthFName}
+\WithSuffix{\newcommand*}\FName*%
+  {\@nameauth@FirstNametrue\NameauthFName}
+\newcommandx*\IndexName[3][1=\@empty, 3=\@empty]
+{%
+  \protected@edef\testa{#1}%
+  \protected@edef\arga{\trim@spaces{#1}}%
+  \protected@edef\testb{\trim@spaces{#2}}%
+  \protected@edef\rootb{\@nameauth@Root{#2}}%
+  \protected@edef\suffb{\@nameauth@Suffix{#2}}%
+  \protected@edef\testc{#3}%
+  \protected@edef\argc{\trim@spaces{#3}}%
+  \def\csb{\@nameauth@Clean{#2}}%
+  \def\csbc{\@nameauth@Clean{#2,#3}}%
+  \def\csab{\@nameauth@Clean{#1!#2}}%
+  \@nameauth@Error{#2}{macro \string\IndexName}%
+  \let\Short\rootb%
+  \ifx\suffb\@empty
+    \let\SNN\rootb%
+  \else
+    \protected@edef\SNN{\rootb\space\suffb}%
+  \fi
+  \ifx\testa\@empty
+    \ifx\testc\@empty
+      \ifcsname\csb!PN\endcsname
+        \if@nameauth@Verbose
+          \PackageWarning{nameauth}%
+          {macro \IndexName: XRef: #2 exists}%
         \fi
+      \else
+        \@nameauth@Index{\csb}{\SNN}%
       \fi
-      \ifcsname\csde!PN\endcsname\else\@nameauth@FirstFormattrue\fi
-      \if@nameauth@AltAKA
-        \ex\@nameauth@FmtName\ex{\arge}%
+    \else
+      \ifx\suffb\@empty
+        \ifcsname\csbc!PN\endcsname
+          \if@nameauth@Verbose
+            \PackageWarning{nameauth}%
+            {macro \IndexName: XRef: #2 #3 exists}%
+          \fi
+        \else
+          \@nameauth@Index{\csbc}{\SNN\space\argc}%
+        \fi
       \else
-        \if@nameauth@RevThis
-          \ex\@nameauth@FmtName\ex{\ex\arge\ex\Space\SNNd}%
+        \ifcsname\csb!PN\endcsname
+          \if@nameauth@Verbose
+            \PackageWarning{nameauth}%
+            {macro \IndexName: XRef: #2 exists}%
+          \fi
         \else
-          \ex\@nameauth@FmtName\ex{\ex\SNNd\ex\Space\arge}%
+          \@nameauth@Index{\csb}{\SNN}%
         \fi
       \fi
-      \ifcsname\csde!PN\endcsname\else\csgdef{\csde!PN}{}\fi
     \fi
   \else
-    \ifcsname\cscd!PN\endcsname
-      \PackageWarning{nameauth}%
-      {macro \AKA: XRef: #3 #4 exists}%
-    \else
-      \ifcsname\cscd!MN\endcsname
+    \ifcsname\csab!PN\endcsname
+      \if@nameauth@Verbose
         \PackageWarning{nameauth}%
-        {macro \AKA: Name reference: #3 #4 exists; no xref}%
+        {macro \IndexName: XRef: #1 #2 exists}%
+      \fi
+    \else
+      \ifx\suffb\@empty
+        \@nameauth@Index{\csab}%
+        {\Short,\space\arga}%
       \else
-        \ifcsname\cscd!NF\endcsname
+        \@nameauth@Index{\csab}%
+        {\Short,\space\arga,\space\suffb}%
+      \fi
+    \fi
+  \fi
+}
+\newcommandx*\IndexRef[4][1=\@empty, 3=\@empty]
+{%
+  \protected@edef\testa{#1}%
+  \protected@edef\arga{\trim@spaces{#1}}%
+  \protected@edef\rootb{\@nameauth@Root{#2}}%
+  \protected@edef\suffb{\@nameauth@Suffix{#2}}%
+  \protected@edef\testc{#3}%
+  \protected@edef\argc{\trim@spaces{#3}}%
+  \protected@edef\target{#4}%
+  \def\csb{\@nameauth@Clean{#2}}%
+  \def\csbc{\@nameauth@Clean{#2,#3}}%
+  \def\csab{\@nameauth@Clean{#1!#2}}%
+  \let\ex\expandafter%
+  \@nameauth@Error{#2}{macro \string\IndexRef}%
+  \@nameauth@Xreftrue%
+  \let\Short\rootb%
+  \ifx\suffb\@empty
+    \let\SNN\rootb%
+  \else
+    \protected@edef\SNN{\rootb\space\suffb}%
+  \fi
+  \ifx\testa\@empty
+    \ifx\testc\@empty
+      \ifcsname\csb!PN\endcsname
+        \if@nameauth@Verbose
           \PackageWarning{nameauth}%
-          {macro \AKA: Name reference: #3 #4 exists; no xref}%
+          {macro \IndexRef: XRef: #2 exists}%
+        \fi
+      \else
+        \if@nameauth@SeeAlso
+          \@nameauth@Index{\csb}{\SNN|seealso{\target}}%
+        \else
+          \@nameauth@Index{\csb}{\SNN|see{\target}}%
+        \fi
+        \csgdef{\csb!PN}{}%
+      \fi
+    \else
+      \ifx\suffb\@empty
+        \ifcsname\csbc!PN\endcsname
+          \if@nameauth@Verbose
+            \PackageWarning{nameauth}%
+            {macro \IndexRef: XRef: #2 #3 exists}%
+          \fi
         \else
-          \ifx\testa\@empty
-            \ifx\Suffd\@empty
-              \@nameauth@Index{\cscd}%
-                {\ISNNd,\space\argc|see{\SNNb}}%
-            \else
-              \@nameauth@Index{\cscd}%
-                {\Shortd,\space\argc,\space\Suffd|see{\SNNb}}%
-            \fi
+          \if@nameauth@SeeAlso
+            \@nameauth@Index{\csbc}%
+              {\SNN\space\argc|seealso{\target}}%
           \else
-            \ifx\Suffb\@empty
-              \ifx\Suffd\@empty
-                \@nameauth@Index{\cscd}%
-                  {\ISNNd,\space\argc|see{\SNNb,\space\arga}}%
-              \else
-                \@nameauth@Index{\cscd}%
-                {\Shortd,\space\argc,\space\Suffd|see{\SNNb,\space\arga}}%
-              \fi
-            \else
-              \ifx\Suffd\@empty
-                \@nameauth@Index{\cscd}%
-                {\ISNNd,\space\argc|see{\Shortb,\space\arga,\space\Suffb}}%
-              \else
-                \@nameauth@Index{\cscd}%
-  {\Shortd,\space\argc,\space\Suffd|see{\Shortb,\space\arga,\space\Suffb}}%
-              \fi
-            \fi
+            \@nameauth@Index{\csbc}%
+              {\SNN\space\argc|see{\target}}%
           \fi
+          \csgdef{\csbc!PN}{}%
+        \fi
+      \else
+        \ifcsname\csb!PN\endcsname
+          \if@nameauth@Verbose
+            \PackageWarning{nameauth}%
+            {macro \IndexRef: XRef: #2 exists}%
+          \fi
+        \else
+          \if@nameauth@SeeAlso
+            \@nameauth@Index{\csb}%
+              {\SNN|seealso{\target}}%
+          \else
+            \@nameauth@Index{\csb}%
+              {\SNN|see{\target}}%
+          \fi
+          \csgdef{\csb!PN}{}%
         \fi
       \fi
     \fi
-    \if@nameauth@RevThisComma
-      \protected@edef\Space{,\space}%
-      \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi
-    \fi
-    \ifx\teste\@empty
-      \let\FNN\argc%
-    \else
-      \let\FNN\arge%
-    \fi
-    \ifcsname\cscd!PN\endcsname\else\@nameauth@FirstFormattrue\fi
-    \if@nameauth@AltAKA
-      \ex\@nameauth@FmtName\ex{\FNN}%
+  \else
+    \ifcsname\csab!PN\endcsname
+      \if@nameauth@Verbose
+        \PackageWarning{nameauth}%
+        {macro \IndexRef: XRef: #1 #2 exists}%
+      \fi
     \else
-      \if@nameauth@RevThis
-        \ex\@nameauth@FmtName\ex{\ex\SNNd\ex\Space\FNN}%
+      \ifx\suffb\@empty
+        \if@nameauth@SeeAlso
+          \@nameauth@Index{\csab}%
+          {\Short,\space\arga|seealso{\target}}%
+        \else
+          \@nameauth@Index{\csab}%
+          {\Short,\space\arga|see{\target}}%
+        \fi
       \else
-        \ex\@nameauth@FmtName\ex{\ex\FNN\ex\space\SNNd}%
+        \if@nameauth@SeeAlso
+          \@nameauth@Index{\csab}%
+          {\Short,\space\arga,\space\suffb|seealso{\target}}%
+        \else
+          \@nameauth@Index{\csab}%
+          {\Short,\space\arga,\space\suffb|see{\target}}%
+        \fi
       \fi
+      \csgdef{\csab!PN}{}%
     \fi
-    \ifcsname\cscd!PN\endcsname\else\csgdef{\cscd!PN}{}\fi
   \fi
-  \@nameauth@Lockfalse%
-  \@nameauth@InAKAfalse%
-  \@nameauth@FirstFormatfalse%
-  \@nameauth@NBSPfalse%
-  \@nameauth@AltAKAfalse%
-  \@nameauth@DoCapsfalse%
-  \@nameauth@Accentfalse%
-  \@nameauth@AllThisfalse%
-  \@nameauth@ShowCommafalse%
-  \@nameauth@NoCommafalse%
-  \@nameauth@RevThisfalse%
-  \@nameauth@RevThisCommafalse%
-  \fi
-  \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi
+  \@nameauth@SeeAlsofalse%
+  \@nameauth@Xreffalse%
 }
-\WithSuffix\def\AKA*{\@nameauth@AltAKAtrue\AKA}
-\newcommandx*\PName[5][1=\@empty,3=\@empty,5=\@empty]%
-{%
-  \NameauthName[#1]{#2}\space(\AKA[#1]{#2}[#3]{#4}[#5])%
-}
-\WithSuffix\def\PName*{\@nameauth@FullNametrue\PName}
-\newcommandx\NameAddInfo[4][1=\@empty, 3=\@empty]%
+\newcommandx*\ExcludeName[3][1=\@empty, 3=\@empty]
 {%
   \protected@edef\testa{#1}%
-  \protected@edef\testb{\trim@spaces{#2}}%
   \protected@edef\testc{#3}%
+  \protected@edef\suffb{\@nameauth@Suffix{#2}}%
   \def\csb{\@nameauth@Clean{#2}}%
   \def\csbc{\@nameauth@Clean{#2,#3}}%
   \def\csab{\@nameauth@Clean{#1!#2}}%
-  \ifx\testb\@empty
-    \PackageError{nameauth}%
-    {macro \NameInfo: Essential name missing}%
-  \else
-    \ifx\csb\@empty
-      \PackageError{nameauth}%
-      {macro \NameInfo: Essential name malformed}%
-    \fi
-  \fi
+  \@nameauth@Error{#2}{macro \string\ExcludeName}%
   \ifx\testa\@empty
     \ifx\testc\@empty
-      \csgdef{\csb!DB}{#4}%
+      \if@nameauth@Verbose
+        \ifcsname\csb!MN\endcsname
+          \PackageWarning{nameauth}%
+          {macro \ExcludeName: Reference: #2 exists}%
+        \fi
+        \ifcsname\csb!NF\endcsname
+          \PackageWarning{nameauth}%
+          {macro \ExcludeName: Reference: #2 exists}%
+        \fi
+      \fi
+      \ifcsname\csb!PN\endcsname
+        \if@nameauth@Verbose
+          \PackageWarning{nameauth}%
+          {macro \ExcludeName: Xref: #2 exists}%
+        \fi
+      \else
+        \csgdef{\csb!PN}{!}%
+      \fi
+    \else
+      \ifx\suffb\@empty
+        \if@nameauth@Verbose
+          \ifcsname\csbc!MN\endcsname
+            \PackageWarning{nameauth}%
+            {macro \ExcludeName: Reference: #2 #3 exists}%
+          \fi
+          \ifcsname\csbc!NF\endcsname
+            \PackageWarning{nameauth}%
+            {macro \ExcludeName: Reference: #2 #3 exists}%
+          \fi
+        \fi
+        \csgdef{\csbc!PN}{!}%
+        \ifcsname\csbc!PN\endcsname
+          \if@nameauth@Verbose
+            \PackageWarning{nameauth}%
+            {macro \ExcludeName: Xref: #2 exists}%
+          \fi
+        \else
+          \csgdef{\csbc!PN}{!}%
+        \fi
+      \else
+        \if@nameauth@Verbose
+          \ifcsname\csb!MN\endcsname
+            \PackageWarning{nameauth}%
+            {macro \ExcludeName: Reference: #2 exists}%
+          \fi
+          \ifcsname\csb!NF\endcsname
+            \PackageWarning{nameauth}%
+            {macro \ExcludeName: Reference: #2 exists}%
+          \fi
+        \fi
+        \ifcsname\csb!PN\endcsname
+          \if@nameauth@Verbose
+            \PackageWarning{nameauth}%
+            {macro \ExcludeName: Xref: #2 exists}%
+          \fi
+        \else
+          \csgdef{\csb!PN}{!}%
+        \fi
+      \fi
+    \fi
+  \else
+    \if@nameauth@Verbose
+      \ifcsname\csab!MN\endcsname
+        \PackageWarning{nameauth}%
+        {macro \ExcludeName: Reference: #1 #2 exists}%
+      \fi
+      \ifcsname\csab!NF\endcsname
+        \PackageWarning{nameauth}%
+        {macro \ExcludeName: Reference: #1 #2 exists}%
+      \fi
+    \fi
+    \ifcsname\csab!PN\endcsname
+      \if@nameauth@Verbose
+        \PackageWarning{nameauth}%
+        {macro \ExcludeName: Xref: #2 exists}%
+      \fi
     \else
-      \csgdef{\csbc!DB}{#4}%
+      \csgdef{\csab!PN}{!}%
     \fi
-  \else
-    \csgdef{\csab!DB}{#4}%
   \fi
 }
-\newcommandx\NameQueryInfo[3][1=\@empty, 3=\@empty]%
+\newcommandx*\IncludeName[3][1=\@empty, 3=\@empty]
 {%
   \protected@edef\testa{#1}%
-  \protected@edef\testb{\trim@spaces{#2}}%
   \protected@edef\testc{#3}%
+  \protected@edef\suffb{\@nameauth@Suffix{#2}}%
   \def\csb{\@nameauth@Clean{#2}}%
   \def\csbc{\@nameauth@Clean{#2,#3}}%
   \def\csab{\@nameauth@Clean{#1!#2}}%
-  \ifx\testb\@empty
-    \PackageError{nameauth}%
-    {macro \NameInfo: Essential name missing}%
-  \else
-    \ifx\csb\@empty
-      \PackageError{nameauth}%
-      {macro \NameInfo: Essential name malformed}%
-    \fi
-  \fi
+  \@nameauth@Error{#2}{macro \string\IncludeName}%
   \ifx\testa\@empty
     \ifx\testc\@empty
-      \ifcsname\csb!DB\endcsname\csname\csb!DB\endcsname\fi
+      \ifcsname\csb!PN\endcsname
+        \edef\testex{\csname\csb!PN\endcsname}%
+        \ifx\testex\@empty\else\global\csundef{\csb!PN}\fi
+      \fi
     \else
-      \ifcsname\csbc!DB\endcsname\csname\csbc!DB\endcsname\fi
+      \ifx\suffb\@empty
+        \ifcsname\csbc!PN\endcsname
+          \edef\testex{\csname\csbc!PN\endcsname}%
+          \ifx\testex\@empty\else\global\csundef{\csbc!PN}\fi
+        \fi
+      \else
+        \ifcsname\csb!PN\endcsname
+          \edef\testex{\csname\csb!PN\endcsname}%
+          \ifx\testex\@empty\else\global\csundef{\csb!PN}\fi
+        \fi
+      \fi
     \fi
   \else
-    \ifcsname\csab!DB\endcsname\csname\csab!DB\endcsname\fi
+    \ifcsname\csab!PN\endcsname
+      \edef\testex{\csname\csab!PN\endcsname}%
+      \ifx\testex\@empty\else\global\csundef{\csab!PN}\fi
+    \fi
   \fi
 }
-\newcommandx*\NameClearInfo[3][1=\@empty, 3=\@empty]%
+\WithSuffix{\newcommandx*}\IncludeName*[3][1=\@empty, 3=\@empty]
 {%
   \protected@edef\testa{#1}%
-  \protected@edef\testb{\trim@spaces{#2}}%
   \protected@edef\testc{#3}%
+  \protected@edef\suffb{\@nameauth@Suffix{#2}}%
   \def\csb{\@nameauth@Clean{#2}}%
   \def\csbc{\@nameauth@Clean{#2,#3}}%
   \def\csab{\@nameauth@Clean{#1!#2}}%
-  \ifx\testb\@empty
-    \PackageError{nameauth}%
-    {macro \UntagName: Essential name missing}%
-  \else
-    \ifx\csb\@empty
-      \PackageError{nameauth}%
-      {macro \UntagName: Essential name malformed}%
-    \fi
-  \fi
+  \edef\testa{!}%
+  \@nameauth@Error{#2}{macro \string\IncludeName*}%
   \ifx\testa\@empty
     \ifx\testc\@empty
-      \global\csundef{\csb!DB}%
+      \global\csundef{\csb!PN}%
     \else
-      \global\csundef{\csbc!DB}%
+      \ifx\suffb\@empty
+        \global\csundef{\csbc!PN}%
+      \else
+        \global\csundef{\csb!PN}%
+      \fi
     \fi
   \else
-    \global\csundef{\csab!DB}%
+    \global\csundef{\csab!PN}%
   \fi
 }
-\newcommandx*\IndexName[3][1=\@empty, 3=\@empty]%
+\newcommandx*\PretagName[4][1=\@empty, 3=\@empty]
 {%
   \protected@edef\testa{#1}%
-  \protected@edef\arga{\trim@spaces{#1}}%
-  \protected@edef\testb{\trim@spaces{#2}}%
-  \protected@edef\testbr{\@nameauth@Root{#2}}%
   \protected@edef\testc{#3}%
-  \protected@edef\argc{\trim@spaces{#3}}%
+  \protected@edef\suffb{\@nameauth@Suffix{#2}}%
   \def\csb{\@nameauth@Clean{#2}}%
   \def\csbc{\@nameauth@Clean{#2,#3}}%
   \def\csab{\@nameauth@Clean{#1!#2}}%
-  \ifx\testb\@empty
-    \PackageError{nameauth}%
-    {macro \IndexName: Essential name missing}%
-  \else
-    \ifx\csb\@empty
-      \PackageError{nameauth}%
-      {macro \IndexName: Essential name malformed}%
-    \fi
-  \fi
-  \let\Short\testbr%
-  \ifx\testb\testbr
-    \let\SNN\Short%
-    \let\Suff\@empty%
-  \else
-    \protected@edef\Suff{\@nameauth@Suffix{#2}}%
-    \protected@edef\SNN{\Short\space\Suff}%
-  \fi
+  \@nameauth@Error{#2}{macro \string\PretagName}%
   \ifx\testa\@empty
     \ifx\testc\@empty
       \ifcsname\csb!PN\endcsname
-        \PackageWarning{nameauth}%
-        {macro \IndexName: XRef: #2 exists}%
-      \else
-        \@nameauth@Index{\csb}{\SNN}%
+        \if@nameauth@Verbose
+          \PackageWarning{nameauth}%
+          {macro \PretagName: tagging xref: #2}%
+        \fi
       \fi
+      \if@nameauth@Pretag\csgdef{\csb!PRE}{#4\@nameauth@Actual}\fi
     \else
-      \ifcsname\csbc!PN\endcsname
-        \PackageWarning{nameauth}%
-        {macro \IndexName: XRef: #2 #3 exists}%
+      \ifx\suffb\@empty
+        \ifcsname\csbc!PN\endcsname
+          \if@nameauth@Verbose
+            \PackageWarning{nameauth}%
+            {macro \PretagName: tagging xref: #2 #3}%
+          \fi
+        \fi
+        \if@nameauth@Pretag\csgdef{\csbc!PRE}{#4\@nameauth@Actual}\fi
       \else
-        \@nameauth@Index{\csbc}{\SNN\space\argc}%
+        \ifcsname\csb!PN\endcsname
+          \if@nameauth@Verbose
+            \PackageWarning{nameauth}%
+            {macro \PretagName: tagging xref: #2}%
+          \fi
+        \fi
+        \if@nameauth@Pretag\csgdef{\csb!PRE}{#4\@nameauth@Actual}\fi
       \fi
     \fi
   \else
     \ifcsname\csab!PN\endcsname
-      \PackageWarning{nameauth}%
-      {macro \IndexName: XRef: #1 #2 exists}%
-    \else
-      \ifx\Suff\@empty
-        \@nameauth@Index{\csab}{\Short,\space\arga}%
-      \else
-        \@nameauth@Index{\csab}{\Short,\space\arga,\space\Suff}%
+      \if@nameauth@Verbose
+        \PackageWarning{nameauth}%
+        {macro \PretagName: tagging xref: #1 #2}%
       \fi
     \fi
+    \if@nameauth@Pretag\csgdef{\csab!PRE}{#4\@nameauth@Actual}\fi
   \fi
 }
-\newcommandx*\TagName[4][1=\@empty, 3=\@empty]%
+\newcommandx*\TagName[4][1=\@empty, 3=\@empty]
 {%
   \protected@edef\testa{#1}%
-  \protected@edef\testb{\trim@spaces{#2}}%
   \protected@edef\testc{#3}%
+  \protected@edef\suffb{\@nameauth@Suffix{#2}}%
   \def\csb{\@nameauth@Clean{#2}}%
   \def\csbc{\@nameauth@Clean{#2,#3}}%
   \def\csab{\@nameauth@Clean{#1!#2}}%
-  \ifx\testb\@empty
-    \PackageError{nameauth}%
-    {macro \TagName: Essential name missing}%
-  \else
-    \ifx\csb\@empty
-      \PackageError{nameauth}%
-      {macro \TagName: Essential name malformed}%
-    \fi
-  \fi
+  \@nameauth@Error{#2}{macro \string\TagName}%
   \ifx\testa\@empty
     \ifx\testc\@empty
       \ifcsname\csb!PN\endcsname
-        \PackageWarning{nameauth}%
-        {macro \TagName: not tagging xref: #2}%
+        \if@nameauth@Verbose
+          \PackageWarning{nameauth}%
+          {macro \TagName: not tagging xref: #2}%
+        \fi
       \else
         \csgdef{\csb!TAG}{#4}%
       \fi
     \else
-      \ifcsname\csbc!PN\endcsname
-        \PackageWarning{nameauth}%
-        {macro \TagName: not tagging xref: #2 #3}%
+      \ifx\suffb\@empty
+        \ifcsname\csbc!PN\endcsname
+          \if@nameauth@Verbose
+            \PackageWarning{nameauth}%
+            {macro \TagName: not tagging xref: #2 #3}%
+          \fi
+        \else
+          \csgdef{\csbc!TAG}{#4}%
+        \fi
       \else
-        \csgdef{\csbc!TAG}{#4}%
+        \ifcsname\csb!PN\endcsname
+          \if@nameauth@Verbose
+            \PackageWarning{nameauth}%
+            {macro \TagName: not tagging xref: #2}%
+          \fi
+        \else
+          \csgdef{\csb!TAG}{#4}%
+        \fi
       \fi
     \fi
   \else
     \ifcsname\csab!PN\endcsname
-      \PackageWarning{nameauth}%
-      {macro \TagName: not tagging xref: #1 #2}%
+      \if@nameauth@Verbose
+        \PackageWarning{nameauth}%
+        {macro \TagName: not tagging xref: #1 #2}%
+      \fi
     \else
       \csgdef{\csab!TAG}{#4}%
     \fi
   \fi
 }
-\newcommandx*\UntagName[3][1=\@empty, 3=\@empty]%
+\newcommandx*\UntagName[3][1=\@empty, 3=\@empty]
 {%
   \protected@edef\testa{#1}%
-  \protected@edef\testb{\trim@spaces{#2}}%
   \protected@edef\testc{#3}%
+  \protected@edef\suffb{\@nameauth@Suffix{#2}}%
   \def\csb{\@nameauth@Clean{#2}}%
   \def\csbc{\@nameauth@Clean{#2,#3}}%
   \def\csab{\@nameauth@Clean{#1!#2}}%
-  \ifx\testb\@empty
-    \PackageError{nameauth}%
-    {macro \UntagName: Essential name missing}%
-  \else
-    \ifx\csb\@empty
-      \PackageError{nameauth}%
-      {macro \UntagName: Essential name malformed}%
-    \fi
-  \fi
+  \@nameauth@Error{#2}{macro \string\UntagName}%
   \ifx\testa\@empty
     \ifx\testc\@empty
       \global\csundef{\csb!TAG}%
     \else
-      \global\csundef{\csbc!TAG}%
+      \ifx\suffb\@empty
+        \global\csundef{\csbc!TAG}%
+      \else
+        \global\csundef{\csb!TAG}%
+      \fi
     \fi
   \else
     \global\csundef{\csab!TAG}%
   \fi
 }
-\newcommandx*\PretagName[4][1=\@empty, 3=\@empty]%
+\newcommandx\NameAddInfo[4][1=\@empty, 3=\@empty]
 {%
   \protected@edef\testa{#1}%
-  \protected@edef\testb{\trim@spaces{#2}}%
   \protected@edef\testc{#3}%
+  \protected@edef\Suff{\@nameauth@Suffix{#2}}%
   \def\csb{\@nameauth@Clean{#2}}%
   \def\csbc{\@nameauth@Clean{#2,#3}}%
   \def\csab{\@nameauth@Clean{#1!#2}}%
-  \ifx\testb\@empty
-    \PackageError{nameauth}%
-    {macro \TagName: Essential name missing}%
-  \else
-    \ifx\csb\@empty
-      \PackageError{nameauth}%
-      {macro \TagName: Essential name malformed}%
-    \fi
-  \fi
+  \@nameauth@Error{#2}{macro \string\NameAddInfo}%
   \ifx\testa\@empty
     \ifx\testc\@empty
-      \ifcsname\csb!PN\endcsname
-        \PackageWarning{nameauth}%
-        {macro \PretagName: tagging xref: #2}%
-      \fi
-      \if@nameauth@Pretag\csgdef{\csb!PRE}{#4\@nameauth@Actual}\fi
+      \csgdef{\csb!DB}{#4}%
     \else
-      \ifcsname\csbc!PN\endcsname
-        \PackageWarning{nameauth}%
-        {macro \PretagName: tagging xref: #2 #3}%
+      \ifx\Suff\@empty
+        \csgdef{\csbc!DB}{#4}%
+      \else
+        \csgdef{\csb!DB}{#4}%
       \fi
-      \if@nameauth@Pretag\csgdef{\csbc!PRE}{#4\@nameauth@Actual}\fi
     \fi
   \else
-    \ifcsname\csab!PN\endcsname
-      \PackageWarning{nameauth}%
-      {macro \PretagName: tagging xref: #1 #2}%
-    \fi
-    \if@nameauth@Pretag\csgdef{\csab!PRE}{#4\@nameauth@Actual}\fi
+    \csgdef{\csab!DB}{#4}%
   \fi
 }
-\newcommandx*\ExcludeName[3][1=\@empty, 3=\@empty]%
+\newcommandx\NameQueryInfo[3][1=\@empty, 3=\@empty]
 {%
   \protected@edef\testa{#1}%
-  \protected@edef\testb{\trim@spaces{#2}}%
   \protected@edef\testc{#3}%
+  \protected@edef\Suff{\@nameauth@Suffix{#2}}%
   \def\csb{\@nameauth@Clean{#2}}%
   \def\csbc{\@nameauth@Clean{#2,#3}}%
   \def\csab{\@nameauth@Clean{#1!#2}}%
-  \ifx\testb\@empty
-    \PackageError{nameauth}%
-    {macro \ExcludeName: Essential name missing}%
-  \else
-    \ifx\csb\@empty
-      \PackageError{nameauth}%
-      {macro \ExcludeName: Essential name malformed}%
-    \fi
-  \fi
+  \@nameauth@Error{#2}{macro \string\NameQueryInfo}%
   \ifx\testa\@empty
     \ifx\testc\@empty
-      \ifcsname\csb!PN\endcsname
-        \PackageWarning{nameauth}%
-        {macro \ExcludeName: Xref: #2 already exists}%
-      \else
-        \ifcsname\csb!MN\endcsname
-          \PackageWarning{nameauth}%
-          {macro \ExcludeName: Reference: #2 exists; no exclusion}%
-        \else
-          \ifcsname\csb!NF\endcsname
-            \PackageWarning{nameauth}%
-            {macro \ExcludeName: Reference: #2 exists; no exclusion}%
-          \else
-            \csgdef{\csb!PN}{!}%
-          \fi
-        \fi
-      \fi
+      \ifcsname\csb!DB\endcsname\csname\csb!DB\endcsname\fi
     \else
-      \ifcsname\csbc!PN\endcsname
-        \PackageWarning{nameauth}%
-        {macro \ExcludeName: Xref: #2 #3 already exists}%
+      \ifx\Suff\@empty
+        \ifcsname\csbc!DB\endcsname\csname\csbc!DB\endcsname\fi
       \else
-        \ifcsname\csbc!MN\endcsname
-          \PackageWarning{nameauth}%
-          {macro \ExcludeName: Reference: #2 #3 exists; no exclusion}%
-        \else
-          \ifcsname\csbc!NF\endcsname
-            \PackageWarning{nameauth}%
-            {macro \ExcludeName: Reference: #2 #3 exists; no exclusion}%
-          \else
-            \csgdef{\csbc!PN}{!}%
-          \fi
-        \fi
+        \ifcsname\csb!DB\endcsname\csname\csb!DB\endcsname\fi
       \fi
     \fi
   \else
-    \ifcsname\csab!PN\endcsname
-      \PackageWarning{nameauth}%
-      {macro \ExcludeName: XRef: #1 #2 already exists}%
-    \else
-      \ifcsname\csab!MN\endcsname
-        \PackageWarning{nameauth}%
-        {macro \ExcludeName: Reference: #1 #2 exists; no exclusion}%
-      \else
-        \ifcsname\csab!NF\endcsname
-          \PackageWarning{nameauth}%
-          {macro \ExcludeName: Reference: #1 #2 exists; no exclusion}%
-        \else
-          \csgdef{\csab!PN}{!}%
-        \fi
-      \fi
-    \fi
+    \ifcsname\csab!DB\endcsname\csname\csab!DB\endcsname\fi
   \fi
 }
-\newcommandx\IfFrontName[5][1=\@empty, 3=\@empty]%
+\newcommandx*\NameClearInfo[3][1=\@empty, 3=\@empty]
 {%
   \protected@edef\testa{#1}%
-  \protected@edef\testb{\trim@spaces{#2}}%
   \protected@edef\testc{#3}%
+  \protected@edef\Suff{\@nameauth@Suffix{#2}}%
   \def\csb{\@nameauth@Clean{#2}}%
   \def\csbc{\@nameauth@Clean{#2,#3}}%
   \def\csab{\@nameauth@Clean{#1!#2}}%
-  \ifx\testb\@empty
-    \PackageError{nameauth}%
-    {macro \IfFrontName: Essential name missing}%
-  \else
-    \ifx\csb\@empty
-      \PackageError{nameauth}%
-      {macro \IfFrontName: Essential name malformed}%
-    \fi
-  \fi
+  \@nameauth@Error{#2}{macro \string\NameClearInfo}%
   \ifx\testa\@empty
     \ifx\testc\@empty
-      \ifcsname\csb!NF\endcsname{#4}\else{#5}\fi
+      \global\csundef{\csb!DB}%
     \else
-      \ifcsname\csbc!NF\endcsname{#4}\else{#5}\fi
+      \ifx\Suff\@empty
+        \global\csundef{\csbc!DB}%
+      \else
+        \global\csundef{\csb!DB}%
+      \fi
     \fi
   \else
-    \ifcsname\csab!NF\endcsname{#4}\else{#5}\fi
+    \global\csundef{\csab!DB}%
   \fi
 }
-\newcommandx\IfMainName[5][1=\@empty, 3=\@empty]%
+\newcommandx\IfMainName[5][1=\@empty, 3=\@empty]
 {%
   \protected@edef\testa{#1}%
-  \protected@edef\testb{\trim@spaces{#2}}%
   \protected@edef\testc{#3}%
+  \protected@edef\suffb{\@nameauth@Suffix{#2}}%
   \def\csb{\@nameauth@Clean{#2}}%
   \def\csbc{\@nameauth@Clean{#2,#3}}%
   \def\csab{\@nameauth@Clean{#1!#2}}%
-  \ifx\testb\@empty
-    \PackageError{nameauth}%
-    {macro \IfMainName: Essential name missing}%
-  \else
-    \ifx\csb\@empty
-      \PackageError{nameauth}%
-      {macro \IfMainName: Essential name malformed}%
-    \fi
-  \fi
+  \@nameauth@Error{#2}{macro \string\IfMainName}%
   \ifx\testa\@empty
     \ifx\testc\@empty
       \ifcsname\csb!MN\endcsname{#4}\else{#5}\fi
     \else
-      \ifcsname\csbc!MN\endcsname{#4}\else{#5}\fi
+      \ifx\suffb\@empty
+        \ifcsname\csbc!MN\endcsname{#4}\else{#5}\fi
+      \else
+        \ifcsname\csb!MN\endcsname{#4}\else{#5}\fi
+      \fi
     \fi
   \else
     \ifcsname\csab!MN\endcsname{#4}\else{#5}\fi
   \fi
 }
-\newcommandx\IfAKA[6][1=\@empty, 3=\@empty]%
+\newcommandx\IfFrontName[5][1=\@empty, 3=\@empty]
 {%
   \protected@edef\testa{#1}%
-  \protected@edef\testb{\trim@spaces{#2}}%
   \protected@edef\testc{#3}%
+  \protected@edef\suffb{\@nameauth@Suffix{#2}}%
   \def\csb{\@nameauth@Clean{#2}}%
   \def\csbc{\@nameauth@Clean{#2,#3}}%
   \def\csab{\@nameauth@Clean{#1!#2}}%
-  \def\test{!}%
-  \ifx\testb\@empty
-    \PackageError{nameauth}%
-    {macro \IfAKA: Essential name missing}%
-  \else
-    \ifx\csb\@empty
-      \PackageError{nameauth}%
-      {macro \IfAKA: Essential name malformed}%
+  \@nameauth@Error{#2}{macro \string\IfFrontName}%
+  \ifx\testa\@empty
+    \ifx\testc\@empty
+      \ifcsname\csb!NF\endcsname{#4}\else{#5}\fi
+    \else
+      \ifx\suffb\@empty
+        \ifcsname\csbc!NF\endcsname{#4}\else{#5}\fi
+      \else
+        \ifcsname\csb!NF\endcsname{#4}\else{#5}\fi
+      \fi
     \fi
+  \else
+    \ifcsname\csab!NF\endcsname{#4}\else{#5}\fi
   \fi
+}
+\newcommandx\IfAKA[6][1=\@empty, 3=\@empty]
+{%
+  \protected@edef\testa{#1}%
+  \protected@edef\testc{#3}%
+  \protected@edef\suffb{\@nameauth@Suffix{#2}}%
+  \def\csb{\@nameauth@Clean{#2}}%
+  \def\csbc{\@nameauth@Clean{#2,#3}}%
+  \def\csab{\@nameauth@Clean{#1!#2}}%
+  \@nameauth@Error{#2}{macro \string\IfAKA}%
   \ifx\testa\@empty
     \ifx\testc\@empty
       \ifcsname\csb!PN\endcsname
-        \edef\testa{\csname\csb!PN\endcsname}%
-        \ifx\testa\test{#6}\else{#4}\fi
+        \edef\testex{\csname\csb!PN\endcsname}%
+        \ifx\testex\@empty{#4}\else{#6}\fi
       \else{#5}\fi
     \else
-      \ifcsname\csbc!PN\endcsname
-        \edef\testa{\csname\csbc!PN\endcsname}%
-        \ifx\testa\test{#6}\else{#4}\fi
-      \else{#5}\fi
+      \ifx\suffb\@empty
+        \ifcsname\csbc!PN\endcsname
+          \edef\testex{\csname\csbc!PN\endcsname}%
+          \ifx\testex\@empty{#4}\else{#6}\fi
+        \else{#5}\fi
+      \else
+        \ifcsname\csb!PN\endcsname
+          \edef\testex{\csname\csb!PN\endcsname}%
+          \ifx\testex\@empty{#4}\else{#6}\fi
+        \else{#5}\fi
+      \fi
     \fi
   \else
     \ifcsname\csab!PN\endcsname
-      \edef\testa{\csname\csab!PN\endcsname}%
-      \ifx\testa\test{#6}\else{#4}\fi
+      \edef\testex{\csname\csab!PN\endcsname}%
+      \ifx\testex\@empty{#4}\else{#6}\fi
     \else{#5}\fi
   \fi
 }
-\newcommandx*\ForgetName[3][1=\@empty, 3=\@empty]%
+\newcommandx*\ForgetName[3][1=\@empty, 3=\@empty]
 {%
   \protected@edef\testa{#1}%
-  \protected@edef\testb{\trim@spaces{#2}}%
   \protected@edef\testc{#3}%
+  \protected@edef\suffb{\@nameauth@Suffix{#2}}%
   \def\csb{\@nameauth@Clean{#2}}%
   \def\csbc{\@nameauth@Clean{#2,#3}}%
   \def\csab{\@nameauth@Clean{#1!#2}}%
-  \ifx\testb\@empty
-    \PackageError{nameauth}%
-    {macro \ForgetName: Essential name missing}%
-  \else
-    \ifx\csb\@empty
-      \PackageError{nameauth}%
-      {macro \ForgetName: Essential name malformed}%
-    \fi
-  \fi
+  \@nameauth@Error{#2}{macro \string\ForgetName}%
   \ifx\testa\@empty
     \ifx\testc\@empty
       \if@nameauth@LocalNames
@@ -1248,15 +1158,28 @@
         \global\csundef{\csb!NF}%
       \fi
     \else
-      \if@nameauth@LocalNames
-        \if@nameauth@MainFormat
-          \global\csundef{\csbc!MN}%
+      \ifx\suffb\@empty
+        \if@nameauth@LocalNames
+          \if@nameauth@MainFormat
+            \global\csundef{\csbc!MN}%
+          \else
+            \global\csundef{\csbc!NF}%
+          \fi
         \else
+          \global\csundef{\csbc!MN}%
           \global\csundef{\csbc!NF}%
         \fi
       \else
-        \global\csundef{\csbc!MN}%
-        \global\csundef{\csbc!NF}%
+        \if@nameauth@LocalNames
+          \if@nameauth@MainFormat
+            \global\csundef{\csb!MN}%
+          \else
+            \global\csundef{\csb!NF}%
+          \fi
+        \else
+          \global\csundef{\csb!MN}%
+          \global\csundef{\csb!NF}%
+        \fi
       \fi
     \fi
   \else
@@ -1272,23 +1195,15 @@
     \fi
   \fi
 }
-\newcommandx*\SubvertName[3][1=\@empty, 3=\@empty]%
+\newcommandx*\SubvertName[3][1=\@empty, 3=\@empty]
 {%
   \protected@edef\testa{#1}%
-  \protected@edef\testb{\trim@spaces{#2}}%
   \protected@edef\testc{#3}%
+  \protected@edef\suffb{\@nameauth@Suffix{#2}}%
   \def\csb{\@nameauth@Clean{#2}}%
   \def\csbc{\@nameauth@Clean{#2,#3}}%
   \def\csab{\@nameauth@Clean{#1!#2}}%
-  \ifx\testb\@empty
-    \PackageError{nameauth}%
-    {macro \SubvertName: Essential name missing}%
-  \else
-    \ifx\csb\@empty
-      \PackageError{nameauth}%
-      {macro \SubvertName: Essential name malformed}%
-    \fi
-  \fi
+  \@nameauth@Error{#2}{macro \string\SubvertName}%
   \ifx\testa\@empty
     \ifx\testc\@empty
       \if@nameauth@LocalNames
@@ -1301,16 +1216,29 @@
         \csgdef{\csb!MN}{}%
         \csgdef{\csb!NF}{}%
       \fi
+    \else
+      \ifx\suffb\@empty
+        \if@nameauth@LocalNames
+          \if@nameauth@MainFormat
+            \csgdef{\csbc!MN}{}%
+          \else
+            \csgdef{\csbc!NF}{}%
+          \fi
+        \else
+          \csgdef{\csbc!MN}{}%
+          \csgdef{\csbc!NF}{}%
+        \fi
+      \fi
     \else
       \if@nameauth@LocalNames
         \if@nameauth@MainFormat
-          \csgdef{\csbc!MN}{}%
+          \csgdef{\csb!MN}{}%
         \else
-          \csgdef{\csbc!NF}{}%
+          \csgdef{\csb!NF}{}%
         \fi
       \else
-        \csgdef{\csbc!MN}{}%
-        \csgdef{\csbc!NF}{}%
+        \csgdef{\csb!MN}{}%
+        \csgdef{\csb!NF}{}%
       \fi
     \fi
   \else
@@ -1326,13 +1254,58 @@
     \fi
   \fi
 }
+\newcommandx*\AKA[5][1=\@empty, 3=\@empty, 5=\@empty]
+{%
+  \if@nameauth@Lock\else
+  \@nameauth@Locktrue%
+  \@nameauth@InAKAtrue%
+  \@nameauth@Error{#2}{macro \string\AKA}%
+  \@nameauth@Error{#4}{macro \string\AKA}%
+  \leavevmode\hbox{}%
+  \protected@edef\testi{#1}%
+  \protected@edef\argi{\trim@spaces{#1}}%
+  \protected@edef\rooti{\@nameauth@Root{#2}}%
+  \protected@edef\suffi{\@nameauth@Suffix{#2}}%
+  \@nameauth@Parse[#3]{#4}[#5]{!PN}%
+  \ifx\testi\@empty
+    \ifx\suffi\@empty
+      \IndexRef[#3]{#4}[#5]{\rooti}%
+    \else
+      \IndexRef[#3]{#4}[#5]{\rooti\space\suffi}%
+    \fi
+  \else
+    \ifx\suffi\@empty
+      \IndexRef[#3]{#4}[#5]{\rooti,\space\argi}%
+    \else
+      \IndexRef[#3]{#4}[#5]{\rooti,\space\argi,\space\suffi}%
+    \fi
+  \fi
+  \@nameauth@Lockfalse%
+  \@nameauth@InAKAfalse%
+  \@nameauth@AltAKAfalse%
+  \@nameauth@NBSPfalse%
+  \@nameauth@DoCapsfalse%
+  \@nameauth@Accentfalse%
+  \@nameauth@AllThisfalse%
+  \@nameauth@ShowCommafalse%
+  \@nameauth@NoCommafalse%
+  \@nameauth@RevThisfalse%
+  \@nameauth@RevThisCommafalse%
+  \@nameauth@ShortSNNfalse%
+  \@nameauth@EastFNfalse%
+  \fi
+  \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi
+}
+\WithSuffix{\newcommand*}\AKA*{\@nameauth@AltAKAtrue\AKA}
+\newcommandx*\PName[5][1=\@empty,3=\@empty,5=\@empty]
+{\NameauthName[#1]{#2}\space(\AKA[#1]{#2}[#3]{#4}[#5])}
+\WithSuffix{\newcommand*}\PName*{\@nameauth@FullNametrue\PName}
 \newenvironment{nameauth}{%
   \begingroup%
   \let\ex\expandafter%
   \csdef{<}##1&##2&##3&##4>{%
     \protected@edef\@arga{\trim@spaces{##1}}%
     \protected@edef\@testb{\trim@spaces{##2}}%
-    \protected@edef\@testc{\trim@spaces{##3}}%
     \protected@edef\@testd{\trim@spaces{##4}}%
     \@nameauth@etoksb\expandafter{##2}%
     \@nameauth@etoksc\expandafter{##3}%
@@ -1340,76 +1313,71 @@
     \ifx\@arga\@empty
       \PackageError{nameauth}%
       {environment nameauth: Control sequence missing}%
+    \fi
+    \@nameauth@Error{##3}{environment nameauth}%
+    \ifcsname\@arga\endcsname
+      \PackageWarning{nameauth}%
+      {environment nameauth: Shorthand macro already exists}%
+   \fi
+   \ifx\@testd\@empty
+      \ifx\@testb\@empty
+        \ex\csgdef\ex{\ex\@arga\ex}\ex{\ex\NameauthName\ex{%
+          \the\@nameauth@etoksc}}%
+        \ex\csgdef\ex{\ex L\ex\@arga\ex}\ex{%
+          \ex\@nameauth@FullNametrue%
+          \ex\NameauthLName\ex{\the\@nameauth@etoksc}}%
+        \ex\csgdef\ex{\ex S\ex\@arga\ex}\ex{%
+          \ex\@nameauth@FirstNametrue%
+          \ex\NameauthFName\ex{\the\@nameauth@etoksc}}%
+      \else
+        \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex\@arga\ex\ex\ex}%
+          \ex\ex\ex{\ex\ex\ex\NameauthName\ex\ex\ex[%
+          \ex\the\ex\@nameauth@etoksb\ex]\ex{\the\@nameauth@etoksc}}%
+        \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex L\ex\ex\ex\@arga%
+          \ex\ex\ex}\ex\ex\ex{\ex\ex\ex\@nameauth@FullNametrue%
+          \ex\ex\ex\NameauthLName\ex\ex\ex[%
+          \ex\the\ex\@nameauth@etoksb\ex]\ex{\the\@nameauth@etoksc}}%
+        \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex S\ex\ex\ex\@arga%
+          \ex\ex\ex}\ex\ex\ex{\ex\ex\ex\@nameauth@FirstNametrue%
+          \ex\ex\ex\NameauthFName\ex\ex\ex[%
+          \ex\the\ex\@nameauth@etoksb\ex]\ex{\the\@nameauth@etoksc}}%
+      \fi
     \else
-      \ifx\@testc\@empty
-        \PackageError{nameauth}%
-        {environment nameauth: Essential name missing}%
+      \ifx\@testb\@empty
+        \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex\@arga\ex\ex\ex}%
+          \ex\ex\ex{\ex\ex\ex\NameauthName\ex\ex\ex{%
+          \ex\the\ex\@nameauth@etoksc\ex}\ex[\the\@nameauth@etoksd]}%
+        \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex L\ex\ex\ex\@arga%
+          \ex\ex\ex}\ex\ex\ex{\ex\ex\ex\@nameauth@FullNametrue%
+          \ex\ex\ex\NameauthLName\ex\ex\ex{%
+          \ex\the\ex\@nameauth@etoksc\ex}\ex[\the\@nameauth@etoksd]}%
+        \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex S\ex\ex\ex\@arga%
+          \ex\ex\ex}\ex\ex\ex{\ex\ex\ex\@nameauth@FirstNametrue%
+          \ex\ex\ex\NameauthFName\ex\ex\ex{%
+          \ex\the\ex\@nameauth@etoksc\ex}\ex[\the\@nameauth@etoksd]}%
       \else
-        \ifcsname\@arga\endcsname
-          \PackageWarning{nameauth}%
-          {environment nameauth: Redefinition of shorthands}%
-        \fi
-        \ifx\@testd\@empty
-          \ifx\@testb\@empty
-            \ex\csgdef\ex{\ex\@arga\ex}\ex{\ex\NameauthName\ex{%
-              \the\@nameauth@etoksc}}%
-            \ex\csgdef\ex{\ex L\ex\@arga\ex}\ex{%
-              \ex\@nameauth@FullNametrue%
-              \ex\NameauthLName\ex{\the\@nameauth@etoksc}}%
-            \ex\csgdef\ex{\ex S\ex\@arga\ex}\ex{%
-              \ex\@nameauth@FirstNametrue%
-              \ex\NameauthFName\ex{\the\@nameauth@etoksc}}%
-          \else
-            \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex\@arga\ex\ex\ex}%
-              \ex\ex\ex{\ex\ex\ex\NameauthName\ex\ex\ex[%
-              \ex\the\ex\@nameauth@etoksb\ex]\ex{\the\@nameauth@etoksc}}%
-            \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex L\ex\ex\ex\@arga%
-              \ex\ex\ex}\ex\ex\ex{\ex\ex\ex\@nameauth@FullNametrue%
-              \ex\ex\ex\NameauthLName\ex\ex\ex[%
-              \ex\the\ex\@nameauth@etoksb\ex]\ex{\the\@nameauth@etoksc}}%
-            \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex S\ex\ex\ex\@arga%
-              \ex\ex\ex}\ex\ex\ex{\ex\ex\ex\@nameauth@FirstNametrue%
-              \ex\ex\ex\NameauthFName\ex\ex\ex[%
-              \ex\the\ex\@nameauth@etoksb\ex]\ex{\the\@nameauth@etoksc}}%
-          \fi
-        \else
-          \ifx\@testb\@empty
-            \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex\@arga\ex\ex\ex}%
-              \ex\ex\ex{\ex\ex\ex\NameauthName\ex\ex\ex{%
-              \ex\the\ex\@nameauth@etoksc\ex}\ex[\the\@nameauth@etoksd]}%
-            \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex L\ex\ex\ex\@arga%
-              \ex\ex\ex}\ex\ex\ex{\ex\ex\ex\@nameauth@FullNametrue%
-              \ex\ex\ex\NameauthLName\ex\ex\ex{%
-              \ex\the\ex\@nameauth@etoksc\ex}\ex[\the\@nameauth@etoksd]}%
-            \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex S\ex\ex\ex\@arga%
-              \ex\ex\ex}\ex\ex\ex{\ex\ex\ex\@nameauth@FirstNametrue%
-              \ex\ex\ex\NameauthFName\ex\ex\ex{%
-              \ex\the\ex\@nameauth@etoksc\ex}\ex[\the\@nameauth@etoksd]}%
-          \else
-            \ex\ex\ex\ex\ex\ex\ex\csgdef\ex\ex\ex\ex\ex\ex\ex{%
-              \ex\ex\ex\ex\ex\ex\ex\@arga\ex\ex\ex\ex\ex\ex\ex}%
-              \ex\ex\ex\ex\ex\ex\ex{\ex\ex\ex\ex\ex\ex\ex\NameauthName%
-              \ex\ex\ex\ex\ex\ex\ex[\ex\ex\ex\the\ex\ex\ex\@nameauth@etoksb%
-              \ex\ex\ex]\ex\ex\ex{\ex\the\ex\@nameauth@etoksc\ex}\ex[%
-              \the\@nameauth@etoksd]}%
-            \ex\ex\ex\ex\ex\ex\ex\csgdef\ex\ex\ex\ex\ex\ex\ex{%
-              \ex\ex\ex\ex\ex\ex\ex L\ex\ex\ex\ex\ex\ex\ex\@arga%
-              \ex\ex\ex\ex\ex\ex\ex}\ex\ex\ex\ex\ex\ex\ex{%
-              \ex\ex\ex\ex\ex\ex\ex\@nameauth@FullNametrue%
-              \ex\ex\ex\ex\ex\ex\ex\NameauthLName\ex\ex\ex\ex\ex\ex\ex[%
-              \ex\ex\ex\the\ex\ex\ex\@nameauth@etoksb%
-              \ex\ex\ex]\ex\ex\ex{\ex\the\ex\@nameauth@etoksc\ex}\ex[%
-              \the\@nameauth@etoksd]}%
-            \ex\ex\ex\ex\ex\ex\ex\csgdef\ex\ex\ex\ex\ex\ex\ex{%
-              \ex\ex\ex\ex\ex\ex\ex S\ex\ex\ex\ex\ex\ex\ex\@arga%
-              \ex\ex\ex\ex\ex\ex\ex}\ex\ex\ex\ex\ex\ex\ex{%
-              \ex\ex\ex\ex\ex\ex\ex\@nameauth@FirstNametrue%
-              \ex\ex\ex\ex\ex\ex\ex\NameauthFName\ex\ex\ex\ex\ex\ex\ex[%
-              \ex\ex\ex\the\ex\ex\ex\@nameauth@etoksb\ex\ex\ex]%
-              \ex\ex\ex{\ex\the\ex\@nameauth@etoksc\ex}\ex[%
-              \the\@nameauth@etoksd]}%
-          \fi
-        \fi
+        \ex\ex\ex\ex\ex\ex\ex\csgdef\ex\ex\ex\ex\ex\ex\ex{%
+          \ex\ex\ex\ex\ex\ex\ex\@arga\ex\ex\ex\ex\ex\ex\ex}%
+          \ex\ex\ex\ex\ex\ex\ex{\ex\ex\ex\ex\ex\ex\ex\NameauthName%
+          \ex\ex\ex\ex\ex\ex\ex[\ex\ex\ex\the\ex\ex\ex\@nameauth@etoksb%
+          \ex\ex\ex]\ex\ex\ex{\ex\the\ex\@nameauth@etoksc\ex}\ex[%
+          \the\@nameauth@etoksd]}%
+        \ex\ex\ex\ex\ex\ex\ex\csgdef\ex\ex\ex\ex\ex\ex\ex{%
+          \ex\ex\ex\ex\ex\ex\ex L\ex\ex\ex\ex\ex\ex\ex\@arga%
+          \ex\ex\ex\ex\ex\ex\ex}\ex\ex\ex\ex\ex\ex\ex{%
+          \ex\ex\ex\ex\ex\ex\ex\@nameauth@FullNametrue%
+          \ex\ex\ex\ex\ex\ex\ex\NameauthLName\ex\ex\ex\ex\ex\ex\ex[%
+          \ex\ex\ex\the\ex\ex\ex\@nameauth@etoksb%
+          \ex\ex\ex]\ex\ex\ex{\ex\the\ex\@nameauth@etoksc\ex}\ex[%
+          \the\@nameauth@etoksd]}%
+        \ex\ex\ex\ex\ex\ex\ex\csgdef\ex\ex\ex\ex\ex\ex\ex{%
+          \ex\ex\ex\ex\ex\ex\ex S\ex\ex\ex\ex\ex\ex\ex\@arga%
+          \ex\ex\ex\ex\ex\ex\ex}\ex\ex\ex\ex\ex\ex\ex{%
+          \ex\ex\ex\ex\ex\ex\ex\@nameauth@FirstNametrue%
+          \ex\ex\ex\ex\ex\ex\ex\NameauthFName\ex\ex\ex\ex\ex\ex\ex[%
+          \ex\ex\ex\the\ex\ex\ex\@nameauth@etoksb\ex\ex\ex]%
+          \ex\ex\ex{\ex\the\ex\@nameauth@etoksc\ex}\ex[%
+          \the\@nameauth@etoksd]}%
       \fi
     \fi
     \ignorespaces%
@@ -1429,8 +1397,8 @@
 %% Charles P. Schaum.
 %% 
 %% This work consists of the files nameauth.dtx, examples.tex, and a Makefile.
-%% Running "make" generates the derived files README, nameauth.pdf and nameauth.sty.
-%% Running "make inst" installs the files in the user's TeX tree.
+%% Running "make" generates the derived files README, nameauth.pdf and
+%% nameauth.sty. Running "make inst" installs the files in the user's TeX tree.
 %% Running "make install" installs the files in the local TeX tree.
 %% 
 %%
-- 
cgit v1.2.3

