%% %% This is file `nameauth.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% nameauth.dtx (with options: `package') %% %% --------:| ---------------------------------------------------------------- %% 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 %% See:| http://www.latex-project.org/lppl.txt %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{nameauth} [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@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@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@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{} \newcommand*\FrontNameHook{} \newcommand*\NameauthName{\@nameauth@Name} \newcommand*\NameauthLName{\@nameauth@Name} \newcommand*\NameauthFName{\@nameauth@Name} \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} \DeclareOption{nopretag}{\@nameauth@Pretagfalse} \DeclareOption{allcaps}{\@nameauth@AllCapstrue} \DeclareOption{normalcaps}{\@nameauth@AllCapsfalse} \DeclareOption{allreversed}% {\@nameauth@RevAlltrue\@nameauth@RevAllCommafalse} \DeclareOption{allrevcomma}% {\@nameauth@RevAlltrue\@nameauth@RevAllCommatrue} \DeclareOption{notreversed}% {\@nameauth@RevAllfalse\@nameauth@RevAllCommafalse} \DeclareOption{alwaysformat}{\@nameauth@AlwaysFormattrue} \DeclareOption{smallcaps}{\renewcommand*\NamesFormat{\scshape}} \DeclareOption{italic}{\renewcommand*\NamesFormat{\itshape}} \DeclareOption{boldface}{\renewcommand*\NamesFormat{\bfseries}} \DeclareOption{noformat}{\renewcommand*\NamesFormat{}} \DeclareOption{verbose}{\@nameauth@Verbosetrue} \ExecuteOptions% {nocomma,% mainmatter,% index,% pretag,% normalcaps,% notreversed,% noformat} \ProcessOptions\relax \RequirePackage{etoolbox} \RequirePackage{suffix} \RequirePackage{trimspaces} \RequirePackage{xargs} \newcommand*\@nameauth@Clean[1] {\expandafter\zap@space\detokenize{#1} \@empty} \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] {% \ifdefined\Umathchar \@nameauth@UTFfalse% \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@UTFtrue% \@nameauth@Accentfalse% \fi \else\@nameauth@UTFfalse\fi \fi } \newcommand*\@nameauth@CapRoot[1] {% \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\\% } \newcommand*\@nameauth@CheckDot% {\futurelet\@token\@nameauth@EvalDot} \newcommand*\@nameauth@EvalDot% {% \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 \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@AllThis \protected@edef\rootb{\@nameauth@AllCapRoot{#2}}% \else \protected@edef\rootb{\@nameauth@Root{#2}}% \fi \fi \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 \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 \ifx\argc\@empty \let\FNN\arga% \else \let\FNN\argc% \fi \ifx\suffb\@empty \else \protected@edef\SNN{\rootb\Space\suffb}% \if@nameauth@ShortSNN\let\SNN\rootb\fi \fi \@nameauth@West{\csab#4}% \fi \fi } \newcommand*\@nameauth@NonWest[1] {% \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 \ifcsname#1\endcsname\else \@nameauth@FullNametrue% \@nameauth@FirstNamefalse% \fi \fi \if@nameauth@FirstName \@nameauth@FullNamefalse% \fi \ifx\FNN\@empty \@nameauth@Hook{\SNN}% \else \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 } \newcommand*\@nameauth@West[1] {% \if@nameauth@Lock \ifcsname#1\endcsname\else \@nameauth@FirstFormattrue% \fi \if@nameauth@InAKA \if@nameauth@AltAKA \@nameauth@FullNamefalse% \@nameauth@FirstNametrue% \else \@nameauth@FullNametrue% \@nameauth@FirstNamefalse% \fi \else \ifcsname#1\endcsname\else \@nameauth@FullNametrue% \@nameauth@FirstNamefalse% \fi \fi \if@nameauth@FirstName \@nameauth@FullNamefalse% \fi \if@nameauth@FullName \if@nameauth@RevThis \@nameauth@Hook{\SNN\space\FNN}% \else \if@nameauth@RevThisComma \edef\RevSpace{,\space}% \@nameauth@Hook{\SNN\RevSpace\FNN}% \else \@nameauth@Hook{\FNN\space\SNN}% \fi \fi \else \if@nameauth@FirstName \@nameauth@Hook{\FNN}% \else \@nameauth@Hook{\rootb}% \fi \fi \ifcsname#1\endcsname\else \if@nameauth@InAKA\else\csgdef{#1}{}\fi% \fi \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% \fi } \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 \if@nameauth@FirstFormat \bgroup\NamesFormat{#1}\egroup% \else \bgroup\MainNameHook{#1}\egroup% \fi \else \if@nameauth@FirstFormat \bgroup\FrontNamesFormat{#1}\egroup% \else \bgroup\FrontNameHook{#1}\egroup% \fi \fi \else \if@nameauth@AlwaysFormat \@nameauth@FirstFormattrue% \fi \if@nameauth@MainFormat \if@nameauth@FirstFormat \bgroup\NamesFormat{#1}\egroup% \else \bgroup\MainNameHook{#1}\egroup% \fi \else \if@nameauth@FirstFormat \bgroup\FrontNamesFormat{#1}\egroup% \else \bgroup\FrontNameHook{#1}\egroup% \fi \fi \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 \index% {\csname\cseq!PRE\endcsname#2\csname\cseq!TAG\endcsname}% \fi \else \if@nameauth@Xref \index{#2\ShortTag}% \else \index{#2\csname\cseq!TAG\endcsname}% \fi \fi \else \ifcsname\cseq!PRE\endcsname \index{\csname\cseq!PRE\endcsname#2}% \else \index{#2}% \fi \fi \fi } \newcommand*\@nameauth@Actual{@} \newcommand*\CapThis{\@nameauth@DoCapstrue} \newcommand*\AccentCapThis% {\@nameauth@Accenttrue\@nameauth@DoCapstrue} \newcommand*\CapName{\@nameauth@AllThistrue} \newcommand*\AllCapsInactive{\@nameauth@AllCapsfalse} \newcommand*\AllCapsActive{\@nameauth@AllCapstrue} \newcommand*\RevName{\@nameauth@RevThistrue} \newcommand*\ReverseInactive{\@nameauth@RevAllfalse} \newcommand*\ReverseActive{\@nameauth@RevAlltrue} \newcommand*\ForceFN{\@nameauth@EastFNtrue} \newcommand*\RevComma% {\@nameauth@RevThisCommatrue} \newcommand*\ReverseCommaInactive% {\@nameauth@RevAllCommafalse} \newcommand*\ReverseCommaActive% {\@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} \newcommand*\LocalNames{\global\@nameauth@LocalNamestrue} \newcommand*\GlobalNames{\global\@nameauth@LocalNamesfalse} \newcommand*\IndexInactive{\@nameauth@DoIndexfalse} \newcommand*\IndexActive{\@nameauth@DoIndextrue} \newcommand*\IndexActual[1] {\global\renewcommand*\@nameauth@Actual{#1}} \newcommand*\SeeAlso{\@nameauth@SeeAlsotrue} \newcommand*\NameParser {% \if@nameauth@InHook \let\SNN\rootb% \ifx\arga\@empty \ifx\argc\@empty \let\FNN\suffb% \else \let\FNN\argc% \fi \ifx\suffb\@empty \SNN% \else \if@nameauth@FullName \if@nameauth@RevThis \FNN\Space\SNN% \else \SNN\Space\FNN% \fi \else \if@nameauth@EastFN \FNN% \else \SNN% \fi \fi \fi \else \ifx\argc\@empty \let\FNN\arga% \else \let\FNN\argc% \fi \ifx\suffb\@empty \else \protected@edef\SNN{\rootb\Space\suffb}% \if@nameauth@ShortSNN\let\SNN\rootb\fi% \fi \if@nameauth@FullName \if@nameauth@RevThis \SNN\space\FNN% \else \if@nameauth@RevThisComma \SNN\RevSpace\FNN% \else \FNN\space\SNN% \fi \fi \else \if@nameauth@FirstName \FNN% \else \protected@edef\SNN{\rootb}% \SNN% \fi \fi \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 \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 \ifcsname\csb!PN\endcsname \if@nameauth@Verbose \PackageWarning{nameauth}% {macro \IndexName: XRef: #2 exists}% \fi \else \@nameauth@Index{\csb}{\SNN}% \fi \fi \fi \else \ifcsname\csab!PN\endcsname \if@nameauth@Verbose \PackageWarning{nameauth}% {macro \IndexName: XRef: #1 #2 exists}% \fi \else \ifx\suffb\@empty \@nameauth@Index{\csab}% {\Short,\space\arga}% \else \@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 \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 \if@nameauth@SeeAlso \@nameauth@Index{\csbc}% {\SNN\space\argc|seealso{\target}}% \else \@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 \else \ifcsname\csab!PN\endcsname \if@nameauth@Verbose \PackageWarning{nameauth}% {macro \IndexRef: XRef: #1 #2 exists}% \fi \else \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 \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 \fi \@nameauth@SeeAlsofalse% \@nameauth@Xreffalse% } \newcommandx*\ExcludeName[3][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\ExcludeName}% \ifx\testa\@empty \ifx\testc\@empty \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{\csab!PN}{!}% \fi \fi } \newcommandx*\IncludeName[3][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\IncludeName}% \ifx\testa\@empty \ifx\testc\@empty \ifcsname\csb!PN\endcsname \edef\testex{\csname\csb!PN\endcsname}% \ifx\testex\@empty\else\global\csundef{\csb!PN}\fi \fi \else \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!PN\endcsname \edef\testex{\csname\csab!PN\endcsname}% \ifx\testex\@empty\else\global\csundef{\csab!PN}\fi \fi \fi } \WithSuffix{\newcommandx*}\IncludeName*[3][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}}% \edef\testa{!}% \@nameauth@Error{#2}{macro \string\IncludeName*}% \ifx\testa\@empty \ifx\testc\@empty \global\csundef{\csb!PN}% \else \ifx\suffb\@empty \global\csundef{\csbc!PN}% \else \global\csundef{\csb!PN}% \fi \fi \else \global\csundef{\csab!PN}% \fi } \newcommandx*\PretagName[4][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\PretagName}% \ifx\testa\@empty \ifx\testc\@empty \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 \else \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 \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 \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] {% \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\TagName}% \ifx\testa\@empty \ifx\testc\@empty \ifcsname\csb!PN\endcsname \if@nameauth@Verbose \PackageWarning{nameauth}% {macro \TagName: not tagging xref: #2}% \fi \else \csgdef{\csb!TAG}{#4}% \fi \else \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 \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 \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] {% \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\UntagName}% \ifx\testa\@empty \ifx\testc\@empty \global\csundef{\csb!TAG}% \else \ifx\suffb\@empty \global\csundef{\csbc!TAG}% \else \global\csundef{\csb!TAG}% \fi \fi \else \global\csundef{\csab!TAG}% \fi } \newcommandx\NameAddInfo[4][1=\@empty, 3=\@empty] {% \protected@edef\testa{#1}% \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}}% \@nameauth@Error{#2}{macro \string\NameAddInfo}% \ifx\testa\@empty \ifx\testc\@empty \csgdef{\csb!DB}{#4}% \else \ifx\Suff\@empty \csgdef{\csbc!DB}{#4}% \else \csgdef{\csb!DB}{#4}% \fi \fi \else \csgdef{\csab!DB}{#4}% \fi } \newcommandx\NameQueryInfo[3][1=\@empty, 3=\@empty] {% \protected@edef\testa{#1}% \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}}% \@nameauth@Error{#2}{macro \string\NameQueryInfo}% \ifx\testa\@empty \ifx\testc\@empty \ifcsname\csb!DB\endcsname\csname\csb!DB\endcsname\fi \else \ifx\Suff\@empty \ifcsname\csbc!DB\endcsname\csname\csbc!DB\endcsname\fi \else \ifcsname\csb!DB\endcsname\csname\csb!DB\endcsname\fi \fi \fi \else \ifcsname\csab!DB\endcsname\csname\csab!DB\endcsname\fi \fi } \newcommandx*\NameClearInfo[3][1=\@empty, 3=\@empty] {% \protected@edef\testa{#1}% \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}}% \@nameauth@Error{#2}{macro \string\NameClearInfo}% \ifx\testa\@empty \ifx\testc\@empty \global\csundef{\csb!DB}% \else \ifx\Suff\@empty \global\csundef{\csbc!DB}% \else \global\csundef{\csb!DB}% \fi \fi \else \global\csundef{\csab!DB}% \fi } \newcommandx\IfMainName[5][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\IfMainName}% \ifx\testa\@empty \ifx\testc\@empty \ifcsname\csb!MN\endcsname{#4}\else{#5}\fi \else \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\IfFrontName[5][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\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\testex{\csname\csb!PN\endcsname}% \ifx\testex\@empty{#4}\else{#6}\fi \else{#5}\fi \else \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\testex{\csname\csab!PN\endcsname}% \ifx\testex\@empty{#4}\else{#6}\fi \else{#5}\fi \fi } \newcommandx*\ForgetName[3][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\ForgetName}% \ifx\testa\@empty \ifx\testc\@empty \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 \else \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 \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 \if@nameauth@LocalNames \if@nameauth@MainFormat \global\csundef{\csab!MN}% \else \global\csundef{\csab!NF}% \fi \else \global\csundef{\csab!MN}% \global\csundef{\csab!NF}% \fi \fi } \newcommandx*\SubvertName[3][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\SubvertName}% \ifx\testa\@empty \ifx\testc\@empty \if@nameauth@LocalNames \if@nameauth@MainFormat \csgdef{\csb!MN}{}% \else \csgdef{\csb!NF}{}% \fi \else \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{\csb!MN}{}% \else \csgdef{\csb!NF}{}% \fi \else \csgdef{\csb!MN}{}% \csgdef{\csb!NF}{}% \fi \fi \else \if@nameauth@LocalNames \if@nameauth@MainFormat \csgdef{\csab!MN}{}% \else \csgdef{\csab!NF}{}% \fi \else \csgdef{\csab!MN}{}% \csgdef{\csab!NF}{}% \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\@testd{\trim@spaces{##4}}% \@nameauth@etoksb\expandafter{##2}% \@nameauth@etoksc\expandafter{##3}% \@nameauth@etoksd\expandafter{##4}% \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\@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 \ignorespaces% }\ignorespaces% }{\endgroup\ignorespaces} %% %% Copyright (C) 2016 by Charles P. Schaum %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License (LPPL), either %% version 1.3c of this license or (at your option) any later %% version. The latest version of this license is in the file: %% %% http://www.latex-project.org/lppl.txt %% %% This work is "maintained" (as per LPPL maintenance status) by %% 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 install" installs the files in the local TeX tree. %% %% %% End of file `nameauth.sty'.