From aa5b2a5b49cfcd05ec9d1a4f3051320f78c4afbf Mon Sep 17 00:00:00 2001 From: Karl Berry 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') 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