From d7234c8b1a0b9dd638531f41e22cb99a6952c474 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 12 Nov 2015 22:17:08 +0000 Subject: nameauth (12nov15) git-svn-id: svn://tug.org/texlive/trunk@38829 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/nameauth/nameauth.sty | 1576 ++++++++++++--------- 1 file changed, 900 insertions(+), 676 deletions(-) (limited to 'Master/texmf-dist/tex/latex/nameauth/nameauth.sty') diff --git a/Master/texmf-dist/tex/latex/nameauth/nameauth.sty b/Master/texmf-dist/tex/latex/nameauth/nameauth.sty index e6ae07608af..a78b978c695 100644 --- a/Master/texmf-dist/tex/latex/nameauth/nameauth.sty +++ b/Master/texmf-dist/tex/latex/nameauth/nameauth.sty @@ -5,34 +5,27 @@ %% The original source files were: %% %% nameauth.dtx (with options: `package') +%% --------:| ---------------------------------------------------------------- +%% nameauth:| Name authority mechanism 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 %% -%% This is a generated file. -%% -%% Copyright (C) 2011 by Charles P. Schaum -%% -%% This file may be distributed and/or modified under the conditions of -%% the LaTeX Project Public License, either version 1.2 of this license -%% or (at your option) any later version. The latest version of this -%% license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.2 or later is part of all distributions of LaTeX version -%% 1999/12/01 or later. -%% -\NeedsTeXFormat{LaTeX2e}[2005/12/01] +\NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{nameauth} - [2015/07/09 v1.9 name authority macros to aid consistent display and indexing of names] + [2015/11/11 v2.0 Name authority mechanism for consistency in text and index] \newif\if@nameauth@FullName \newif\if@nameauth@FirstName \newif\if@nameauth@AltAKA \newif\if@nameauth@DoFormat -\newif\if@nameauth@DoIndex +\newif\if@nameauth@FirstFormat \newif\if@nameauth@AlwaysFormat \newif\if@nameauth@AlwaysComma \newif\if@nameauth@ShowComma \newif\if@nameauth@NBSP -\newif\if@nameauth@Comma +\newif\if@nameauth@DoIndex +\newif\if@nameauth@Pretag \newif\if@nameauth@Punct \newif\if@nameauth@DoCaps \newif\if@nameauth@AllCaps @@ -42,6 +35,7 @@ \newif\if@nameauth@RevAllComma \newif\if@nameauth@RevThisComma \newcommand{\NamesFormat}{} +\def\@nameauth@Actual{@} \DeclareOption{mainmatter}{\@nameauth@DoFormattrue} \DeclareOption{frontmatter}{\@nameauth@DoFormatfalse} \DeclareOption{smallcaps}{\renewcommand{\NamesFormat}{\scshape}} @@ -51,28 +45,36 @@ \DeclareOption{alwaysformat}{\@nameauth@AlwaysFormattrue} \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{allreversed}% + {\@nameauth@RevAlltrue\@nameauth@RevAllCommafalse} +\DeclareOption{allrevcomma}% + {\@nameauth@RevAlltrue\@nameauth@RevAllCommatrue} +\DeclareOption{notreversed}% + {\@nameauth@RevAllfalse\@nameauth@RevAllCommafalse} \DeclareOption{comma}{\@nameauth@AlwaysCommatrue} \DeclareOption{nocomma}{\@nameauth@AlwaysCommafalse} \DeclareOption{index}{\@nameauth@DoIndextrue} \DeclareOption{noindex}{\@nameauth@DoIndexfalse} -\ExecuteOptions{nocomma,mainmatter,index,normalcaps,notreversed,smallcaps} +\DeclareOption{pretag}{\@nameauth@Pretagtrue} +\DeclareOption{nopretag}{\@nameauth@Pretagfalse} +\ExecuteOptions% + {nocomma,% + mainmatter,% + index,% + pretag,% + normalcaps,% + notreversed,% + smallcaps} \ProcessOptions\relax \RequirePackage{etoolbox} \RequirePackage{trimspaces} \RequirePackage{suffix} \RequirePackage{xargs} -\newcommand*{\@nameauth@CleanName}[1]% -{% - \expandafter\zap@space\detokenize{#1} \@empty% -} +\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{#1} + {\@nameauth@TrimRoot#1,\@empty\relax} +\def\@nameauth@TrimRoot#1,#2\relax{\trim@spaces{#1}} \newcommand*{\@nameauth@CapRoot}[1]% {\@nameauth@CR#1\relax} \def\@nameauth@CR#1#2\relax{\uppercase{#1}\@nameauth@Root{#2}} @@ -89,548 +91,609 @@ \@nameauth@Punctfalse% \TestDot#1\TestEnd.\TestEnd\TestStop% } -\def\@nameauth@CheckDot{\futurelet\@token\@nameauth@EvalDot} -\def\@nameauth@EvalDot% +\newcommand*{\@nameauth@CheckDot}% + {\futurelet\@token\@nameauth@EvalDot} +\newcommand*{\@nameauth@EvalDot}% {\let\@period=.\ifx\@token\@period\expandafter\@gobble \fi} -\newcommand{\@nameauth@FmtName}[1]% +\newcommand*{\@nameauth@FmtName}[1]% {% + \if@nameauth@AlwaysFormat\@nameauth@FirstFormattrue\fi \@nameauth@TestDot{#1}% - \if@nameauth@DoFormat% - \bgroup\NamesFormat{#1}\egroup% - \else% - #1% - \fi% -} -\WithSuffix\newcommand\@nameauth@FmtName*[1]% -{% - \@nameauth@TestDot{#1}% - \if@nameauth@DoFormat% - \if@nameauth@AlwaysFormat% + \if@nameauth@DoFormat + \if@nameauth@FirstFormat \bgroup\NamesFormat{#1}\egroup% - \else% + \else #1% - \fi% - \else% + \fi + \else #1% - \fi% + \fi } -\newcommandx\@nameauth@Index[2][2=\@empty]% +\newcommand*{\@nameauth@Index}[2]% {% - \ifx#2\@empty% - \if@nameauth@DoIndex\index{#1}\fi% - \else% - \ifcsname#2\endcsname% - \if@nameauth@DoIndex\index{#1\csname#2\endcsname}\fi% - \else% - \if@nameauth@DoIndex\index{#1}\fi% - \fi% - \fi% + \def\cseq{#1}% + \ifcsname\cseq!TAG\endcsname + \ifcsname\cseq!PRE\endcsname + \if@nameauth@DoIndex + \index{\csname\cseq!PRE\endcsname#2\csname\cseq!TAG\endcsname}% + \fi + \else + \if@nameauth@DoIndex\index{#2\csname\cseq!TAG\endcsname}\fi + \fi + \else + \ifcsname\cseq!PRE\endcsname + \if@nameauth@DoIndex\index{\csname\cseq!PRE\endcsname#2}\fi + \else + \if@nameauth@DoIndex\index{#2}\fi + \fi + \fi } -\newcommand{\CapThis}{\@nameauth@DoCapstrue} -\newcommand{\CapName}{\@nameauth@AllThistrue} -\newcommand{\RevName}{\@nameauth@RevThistrue} -\newcommand{\RevComma}% +\newcommand*{\CapThis}{\@nameauth@DoCapstrue} +\newcommand*{\CapName}{\@nameauth@AllThistrue} +\newcommand*{\RevName}{\@nameauth@RevThistrue} +\newcommand*{\RevComma}% {\@nameauth@RevThistrue\@nameauth@RevThisCommatrue} -\newcommand{\ShowComma}{\@nameauth@ShowCommatrue} -\newcommand{\KeepAffix}{\@nameauth@NBSPtrue} -\newcommandx\Name[3][1=\@empty, 3=\@empty]% +\newcommand*{\ShowComma}{\@nameauth@ShowCommatrue} +\newcommand*{\KeepAffix}{\@nameauth@NBSPtrue} +\newcommand*{\NamesInactive}{\@nameauth@DoFormatfalse} +\newcommand*{\NamesActive}{\@nameauth@DoFormattrue} +\newcommand*{\AllCapsInactive}{\@nameauth@AllCapsfalse} +\newcommand*{\AllCapsActive}{\@nameauth@AllCapstrue} +\newcommand*{\ReverseInactive}{\@nameauth@RevAllfalse} +\newcommand*{\ReverseActive}{\@nameauth@RevAlltrue} +\newcommand*{\ReverseCommaInactive}% + {\@nameauth@RevAllfalse\@nameauth@RevAllCommafalse} +\newcommand*{\ReverseCommaActive}% + {\@nameauth@RevAlltrue\@nameauth@RevAllCommatrue} +\newcommand*{\IndexInactive}{\@nameauth@DoIndexfalse} +\newcommand*{\IndexActive}{\@nameauth@DoIndextrue} +\newcommand*{\IndexActual}[1]{\gdef\@nameauth@Actual{#1}} +\newcommandx*\Name[3][1=\@empty, 3=\@empty]% {% + \let\ex\expandafter% \leavevmode\hbox{}% - \protected@edef\testi{#1}% - \protected@edef\testii{#2}% - \protected@edef\testiii{#3}% - \if@nameauth@AllCaps\@nameauth@AllThistrue\fi% - \if@nameauth@RevAll\@nameauth@RevThistrue\fi% - \if@nameauth@RevAllComma\@nameauth@RevThisCommatrue\fi% + \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}}% + \ifx\testb\@empty + \PackageError{nameauth}% + {macro \Name: Essential name missing}% + \else + \ifx\csb\@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\ISpace{\space}% \protected@edef\Space{\space}% - \if@nameauth@NBSP\protected@edef\Space{\nobreakspace}\fi% - \if@nameauth@AlwaysComma% + \if@nameauth@NBSP\protected@edef\Space{\nobreakspace}\fi + \if@nameauth@AlwaysComma \protected@edef\ISpace{,\space}% \protected@edef\Space{,\space}% - \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi% - \fi% - \if@nameauth@ShowComma% + \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi + \fi + \if@nameauth@ShowComma \protected@edef\ISpace{,\space}% \protected@edef\Space{,\space}% - \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi% - \fi% + \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi + \fi \protected@edef\RawShort{\@nameauth@Root{#2}}% \protected@edef\CapShort{\@nameauth@CapRoot{#2}}% \protected@edef\AllCapShort{\@nameauth@AllCapRoot{#2}}% \let\IndexShort\RawShort% - \ifx\testii\RawShort% - \protected@edef\Suffix{\@empty}% - \let\IndexSurnames\RawShort% + \ifx\testb\testbr + \protected@edef\Suff{\@empty}% + \let\IndexSNN\RawShort% \let\Reversed\RawShort% - \let\Surnames\RawShort% + \let\SNN\RawShort% \let\PrintShort\RawShort% - \if@nameauth@DoCaps% + \if@nameauth@DoCaps \let\Reversed\CapShort% - \let\Surnames\CapShort% + \let\SNN\CapShort% \let\PrintShort\CapShort% - \fi% - \if@nameauth@AllThis% + \fi + \if@nameauth@AllThis \let\Reversed\AllCapShort% - \let\Surnames\AllCapShort% + \let\SNN\AllCapShort% \let\PrintShort\AllCapShort% - \fi% - \else% - \protected@edef\Suffix{\@nameauth@Suffix{#2}}% - \protected@edef\IndexSurnames{\RawShort\ISpace\Suffix}% - \protected@edef\Reversed{\Suffix\Space\RawShort}% - \protected@edef\Surnames{\RawShort\Space\Suffix}% - \if@nameauth@RevThis% - \let\PrintShort\Suffix% - \else% + \fi + \else + \protected@edef\Suff{\@nameauth@Suffix{#2}}% + \protected@edef\IndexSNN{\RawShort\ISpace\Suff}% + \protected@edef\Reversed{\Suff\Space\RawShort}% + \protected@edef\SNN{\RawShort\Space\Suff}% + \if@nameauth@RevThis + \let\PrintShort\Suff% + \else \let\PrintShort\RawShort% - \fi% - \if@nameauth@DoCaps% - \protected@edef\Reversed{\Suffix\Space\CapShort}% - \protected@edef\Surnames{\CapShort\Space\Suffix}% - \if@nameauth@RevThis% - \let\PrintShort\Suffix% - \else% + \fi + \if@nameauth@DoCaps + \protected@edef\Reversed{\Suff\Space\CapShort}% + \protected@edef\SNN{\CapShort\Space\Suff}% + \if@nameauth@RevThis + \let\PrintShort\Suff% + \else \let\PrintShort\CapShort% - \fi% - \fi% - \if@nameauth@AllThis% - \protected@edef\Reversed{\Suffix\Space\AllCapShort}% - \protected@edef\Surnames{\AllCapShort\Space\Suffix}% - \if@nameauth@RevThis% - \let\PrintShort\Suffix% - \else% + \fi + \fi + \if@nameauth@AllThis + \protected@edef\Reversed{\Suff\Space\AllCapShort}% + \protected@edef\SNN{\AllCapShort\Space\Suff}% + \if@nameauth@RevThis + \let\PrintShort\Suff% + \else \let\PrintShort\AllCapShort% - \fi% - \fi% - \fi% - \ifx\testi\@empty% - \ifx\testiii\@empty% - \ifcsname\@nameauth@CleanName{#2!PN!}\endcsname% + \fi + \fi + \fi + \ifx\testa\@empty + \ifx\testc\@empty + \ifcsname\csb!PN\endcsname \PackageWarning{nameauth}% - {macro \Name: Xref: #2 cannot be a page reference.}% - \else% - \@nameauth@Index{\IndexSurnames}[\@nameauth@CleanName{#2}!TAG!]% - \fi% - \if@nameauth@DoFormat% - \ifcsname\@nameauth@CleanName{#2!MN!}\endcsname% - \if@nameauth@FirstName% - \@nameauth@FullNamefalse% - \@nameauth@FirstNamefalse% - \fi% - \if@nameauth@FullName% - \@nameauth@FullNamefalse% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Reversed}% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnames}% - \fi% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}% - \fi% - \else% + {macro \Name: Xref: #2 cannot be a page reference}% + \else + \@nameauth@Index{\csb}{\IndexSNN}% + \fi + \if@nameauth@DoFormat + \ifcsname\csb!MN\endcsname + \if@nameauth@FirstName \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% - \csgdef{\@nameauth@CleanName{#2!MN!}}{}% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter{\Reversed}% - \else% - \expandafter\@nameauth@FmtName\expandafter{\Surnames}% - \fi% - \fi% - \else% - \ifcsname\@nameauth@CleanName{#2!NF!}\endcsname% - \if@nameauth@FirstName% - \@nameauth@FullNamefalse% - \@nameauth@FirstNamefalse% - \fi% - \if@nameauth@FullName% - \@nameauth@FullNamefalse% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Reversed}% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnames}% - \fi% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}% - \fi% - \else% + \fi + \if@nameauth@FullName + \@nameauth@FullNamefalse% + \if@nameauth@RevThis + \ex\@nameauth@FmtName\ex{\Reversed}% + \else + \ex\@nameauth@FmtName\ex{\SNN}% + \fi + \else + \ex\@nameauth@FmtName\ex{\PrintShort}% + \fi + \else + \@nameauth@FirstFormattrue% + \@nameauth@FullNamefalse% + \@nameauth@FirstNamefalse% + \csgdef{\csb!MN}{}% + \if@nameauth@RevThis + \ex\@nameauth@FmtName\ex{\Reversed}% + \else + \ex\@nameauth@FmtName\ex{\SNN}% + \fi + \fi + \else + \ifcsname\csb!NF\endcsname + \if@nameauth@FirstName \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% - \csgdef{\@nameauth@CleanName{#2!NF!}}{}% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Reversed}% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnames}% - \fi% - \fi% - \fi% - \else% - \ifcsname\@nameauth@CleanName{#2#3!PN!}\endcsname% + \fi + \if@nameauth@FullName + \@nameauth@FullNamefalse% + \if@nameauth@RevThis + \ex\@nameauth@FmtName\ex{\Reversed}% + \else + \ex\@nameauth@FmtName\ex{\SNN}% + \fi + \else + \ex\@nameauth@FmtName\ex{\PrintShort}% + \fi + \else + \@nameauth@FullNamefalse% + \@nameauth@FirstNamefalse% + \csgdef{\csb!NF}{}% + \if@nameauth@RevThis + \ex\@nameauth@FmtName\ex{\Reversed}% + \else + \ex\@nameauth@FmtName\ex{\SNN}% + \fi + \fi + \fi + \else + \ifcsname\csbc!PN\endcsname \PackageWarning{nameauth}% - {macro \Name: Xref: #2 #3 cannot be a page reference.}% - \else% - \@nameauth@Index{\IndexSurnames\ISpace#3}[\@nameauth@CleanName{#2#3}!TAG!]% - \fi% - \if@nameauth@DoFormat% - \ifcsname\@nameauth@CleanName{#2#3!MN!}\endcsname% - \if@nameauth@FirstName% + {macro \Name: Xref: #2 #3 cannot be a page reference}% + \else + \@nameauth@Index{\csbc}{\IndexSNN\ISpace\argc}% + \fi + \if@nameauth@DoFormat + \ifcsname\csbc!MN\endcsname + \if@nameauth@FirstName \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% - \fi% - \if@nameauth@FullName% + \fi + \if@nameauth@FullName \@nameauth@FullNamefalse% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\testiii\expandafter\space\Surnames}% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Surnames\expandafter\space#3}% - \fi% - \else% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\testiii}% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}% - \fi% - \fi% - \else% + \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 + \else + \@nameauth@FirstFormattrue% \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% - \csgdef{\@nameauth@CleanName{#2#3!MN!}}{}% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter{% - \expandafter\testiii\expandafter\space\Surnames}% - \else% - \expandafter\@nameauth@FmtName\expandafter{% - \expandafter\Surnames\expandafter\space#3}% - \fi% - \fi% - \else% - \ifcsname\@nameauth@CleanName{#2#3!NF!}\endcsname% - \if@nameauth@FirstName% + \csgdef{\csbc!MN}{}% + \if@nameauth@RevThis + \ex\@nameauth@FmtName\ex{\ex\argc\ex\space\SNN}% + \else + \ex\@nameauth@FmtName\ex{\ex\SNN\ex\space\argc}% + \fi + \fi + \else + \ifcsname\csbc!NF\endcsname + \if@nameauth@FirstName \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% - \fi% - \if@nameauth@FullName% + \fi + \if@nameauth@FullName \@nameauth@FullNamefalse% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\testiii\expandafter\space\Surnames}% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Surnames\expandafter\space#3}% - \fi% - \else% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\testiii}% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}% - \fi% - \fi% - \else% + \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 + \else \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% - \csgdef{\@nameauth@CleanName{#2#3!NF!}}{}% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\testiii\expandafter\space\Surnames}% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Surnames\expandafter\space\testiii}% - \fi% - \fi% - \fi% - \fi% - \else% - \if@nameauth@RevThisComma% + \csgdef{\csbc!NF}{}% + \if@nameauth@RevThis + \ex\@nameauth@FmtName\ex{\ex\argc\ex\space\SNN}% + \else + \ex\@nameauth@FmtName\ex{\ex\SNN\ex\space\argc}% + \fi + \fi + \fi + \fi + \else + \if@nameauth@RevThisComma \protected@edef\ISpace{,\space}% \protected@edef\Space{,\space}% - \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi% - \fi% - \ifx\testiii\@empty% - \protected@edef\Forenames{#1}% - \else% - \protected@edef\Forenames{#3}% - \fi - \ifcsname\@nameauth@CleanName{#1#2!PN!}\endcsname% + \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi + \fi + \ifx\testc\@empty + \let\FNN\arga% + \else + \let\FNN\argc% + \fi + \ifcsname\csab!PN\endcsname \PackageWarning{nameauth}% - {macro \Name: Xref: #1 #2 cannot be a page reference.}% - \else% - \ifx\Suffix\@empty% - \@nameauth@Index{\IndexShort, #1}[\@nameauth@CleanName{#1#2}!TAG!]% - \else% - \@nameauth@Index{\IndexShort, #1, \Suffix}[\@nameauth@CleanName{#1#2}!TAG!]% - \fi% - \fi% - \if@nameauth@DoFormat% - \ifcsname\@nameauth@CleanName{#1#2!MN!}\endcsname% - \if@nameauth@FirstName% + {macro \Name: Xref: #1 #2 cannot be a page reference}% + \else + \ifx\Suff\@empty + \@nameauth@Index{\csab}{\IndexShort,\space\arga}% + \else + \@nameauth@Index{\csab}{\IndexShort,\space\arga,\space\Suff}% + \fi + \fi + \if@nameauth@DoFormat + \ifcsname\csab!MN\endcsname + \if@nameauth@FirstName \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% - \let\PrintShort\Forenames% - \fi% - \if@nameauth@FullName% + \let\PrintShort\FNN% + \fi + \if@nameauth@FullName \@nameauth@FullNamefalse% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Surnames\expandafter\Space\Forenames}% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Forenames\expandafter\space\Surnames}% - \fi% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}% - \fi% - \else% + \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 + \else + \@nameauth@FirstFormattrue% \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% - \csgdef{\@nameauth@CleanName{#1#2!MN!}}{}% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter{% - \expandafter\Surnames\expandafter\Space\Forenames}% - \else% - \expandafter\@nameauth@FmtName\expandafter{% - \expandafter\Forenames\expandafter\space\Surnames}% - \fi% - \fi% - \else% - \ifcsname\@nameauth@CleanName{#1#2!NF!}\endcsname% - \if@nameauth@FirstName% + \csgdef{\csab!MN}{}% + \if@nameauth@RevThis + \ex\@nameauth@FmtName\ex{\ex\SNN\ex\Space\FNN}% + \else + \ex\@nameauth@FmtName\ex{\ex\FNN\ex\space\SNN}% + \fi + \fi + \else + \ifcsname\csab!NF\endcsname + \if@nameauth@FirstName \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% - \let\PrintShort\Forenames% - \fi% - \if@nameauth@FullName% + \let\PrintShort\FNN% + \fi + \if@nameauth@FullName \@nameauth@FullNamefalse% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Surnames\expandafter\Space\Forenames}% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Forenames\expandafter\space\Surnames}% - \fi% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}% - \fi% - \else% + \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 + \else \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% - \csgdef{\@nameauth@CleanName{#1#2!NF!}}{}% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Surnames\expandafter\Space\Forenames}% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Forenames\expandafter\space\Surnames}% - \fi% - \fi% - \fi% - \fi% + \csgdef{\csab!NF}{}% + \if@nameauth@RevThis + \ex\@nameauth@FmtName\ex{\ex\SNN\ex\Space\FNN}% + \else + \ex\@nameauth@FmtName\ex{\ex\FNN\ex\space\SNN}% + \fi + \fi + \fi + \fi + \@nameauth@FirstFormatfalse% \@nameauth@NBSPfalse% \@nameauth@DoCapsfalse% \@nameauth@AllThisfalse% \@nameauth@ShowCommafalse% \@nameauth@RevThisfalse% \@nameauth@RevThisCommafalse% - \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi% + \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi } -\WithSuffix\newcommandx\Name*[3][1=\@empty, 3=\@empty]% - {\@nameauth@FullNametrue\Name[#1]{#2}[#3]} -\newcommandx\FName[3][1=\@empty, 3=\@empty]% - {\@nameauth@FirstNametrue\Name[#1]{#2}[#3]} -\WithSuffix\newcommandx\FName*[3][1=\@empty, 3=\@empty]% - {\@nameauth@FirstNametrue\Name[#1]{#2}[#3]} -\newcommandx\AKA[5][1=\@empty, 3=\@empty, 5=\@empty]% +\WithSuffix\def\Name*{\@nameauth@FullNametrue\Name} +\def\FName{\@nameauth@FirstNametrue\Name} +\WithSuffix\def\FName*{\@nameauth@FirstNametrue\Name} +\newcommandx*\AKA[5][1=\@empty, 3=\@empty, 5=\@empty]% {% + \let\ex\expandafter% \leavevmode\hbox{}% - \protected@edef\testi{#1}% - \protected@edef\testii{#2}% - \protected@edef\testiii{#3}% - \protected@edef\testiv{#4}% - \protected@edef\testv{#5}% - \if@nameauth@AllCaps\@nameauth@AllThistrue\fi% - \if@nameauth@RevAll\@nameauth@RevThistrue\fi% - \if@nameauth@RevAllComma\@nameauth@RevThisCommatrue\fi% + \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\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}}% + \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\ISpace{\space}% \protected@edef\Space{\space}% - \if@nameauth@NBSP\protected@edef\Space{\nobreakspace}\fi% - \if@nameauth@AlwaysComma% + \if@nameauth@NBSP\protected@edef\Space{\nobreakspace}\fi + \if@nameauth@AlwaysComma \protected@edef\ISpace{,\space}% \protected@edef\Space{,\space}% - \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi% - \fi% - \if@nameauth@ShowComma% + \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi + \fi + \if@nameauth@ShowComma \protected@edef\ISpace{,\space}% \protected@edef\Space{,\space}% - \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi% - \fi% - \protected@edef\Shortii{\@nameauth@Root{#2}}% - \protected@edef\Shortiv{\@nameauth@Root{#4}}% + \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi + \fi + \protected@edef\Shortb{\@nameauth@Root{#2}}% + \protected@edef\Shortd{\@nameauth@Root{#4}}% \protected@edef\CapShort{\@nameauth@CapRoot{#4}}% \protected@edef\AllCapShort{\@nameauth@AllCapRoot{#4}}% - \ifx\testii\Shortii% - \let\Surnamesii\Shortii% - \protected@edef\Suffixii{\@empty}% - \else% - \protected@edef\Suffixii{\@nameauth@Suffix{#2}}% - \protected@edef\Surnamesii{\Shortii\ISpace\Suffixii}% - \fi% - \ifx\testiv\Shortiv% - \protected@edef\Suffixiv{\@empty}% - \let\ISurnamesiv\Shortiv% - \let\Reversed\Shortiv% - \let\Surnamesiv\Shortiv% - \if@nameauth@DoCaps% - \let\Surnamesiv\CapShort% + \ifx\testb\testbr + \let\SNNb\Shortb% + \protected@edef\Suffb{\@empty}% + \else + \protected@edef\Suffb{\@nameauth@Suffix{#2}}% + \protected@edef\SNNb{\Shortb\ISpace\Suffb}% + \fi + \ifx\testd\testdr + \protected@edef\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\Surnamesiv\AllCapShort% + \fi + \if@nameauth@AllThis + \let\SNNd\AllCapShort% \let\Reversed\AllCapShort% - \fi% - \else% - \protected@edef\Suffixiv{\@nameauth@Suffix{#4}}% - \protected@edef\ISurnamesiv{\Shortiv\ISpace\Suffixiv}% - \protected@edef\Reversed{\Suffixiv\Space\Shortiv}% - \protected@edef\Surnamesiv{\Shortiv\Space\Suffixiv}% - \if@nameauth@DoCaps% - \protected@edef\Reversed{\Suffixiv\Space\CapShort}% - \protected@edef\Surnamesiv{\CapShort\Space\Suffixiv}% - \fi% - \if@nameauth@AllThis% - \protected@edef\Reversed{\Suffixiv\Space\AllCapShort}% - \protected@edef\Surnamesiv{\AllCapShort\Space\Suffixiv}% - \fi% - \fi% - \ifx\testiii\@empty% - \ifx\testv\@empty% - \ifcsname\@nameauth@CleanName{#4!PN!}\endcsname% + \fi + \else + \protected@edef\Suffd{\@nameauth@Suffix{#4}}% + \protected@edef\ISNNd{\Shortd\ISpace\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.}% - \else% - \ifcsname\@nameauth@CleanName{#4!MN!}\endcsname% + {macro \AKA: XRef: #4 exists}% + \else + \ifcsname\csd!MN\endcsname \PackageWarning{nameauth}% - {macro \AKA: Name reference: #4 already exists; no see ref.}% - \else% - \ifcsname\@nameauth@CleanName{#4#5!NF!}\endcsname% + {macro \AKA: Name reference: #4 exists; no xref}% + \else + \ifcsname\csd!NF\endcsname \PackageWarning{nameauth}% - {macro \AKA: Name reference: #4 already exists; no see ref.}% - \else% - \csgdef{\@nameauth@CleanName{#4!PN!}}{}% - \ifx\testi\@empty% - \@nameauth@Index{\ISurnamesiv|see{\Surnamesii}}% - \else% - \ifx\Suffixii\@empty \@nameauth@Index{\ISurnamesiv|see{\Surnamesii, #1}}% - \else \@nameauth@Index{\ISurnamesiv|see{\Shortii, #1, \Suffixii}}\fi% - \fi% - \fi% - \fi% - \fi% - \if@nameauth@RevThisComma% + {macro \AKA: Name reference: #4 exists; no xref}% + \else + \csgdef{\csd!PN}{}% + \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 + \fi + \fi + \fi + \if@nameauth@RevThisComma \protected@edef\ISpace{,\space}% \protected@edef\Space{,\space}% - \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi% - \fi% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Reversed}% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnamesiv}% - \fi% - \else% - \ifcsname\@nameauth@CleanName{#4#5!PN!}\endcsname% + \if@nameauth@NBSP + \protected@edef\Space{,\nobreakspace}% + \fi + \fi + \if@nameauth@RevThis + \ex\@nameauth@FmtName\ex{\Reversed}% + \else + \ex\@nameauth@FmtName\ex{\SNNd}% + \fi + \else + \ifcsname\csde!PN\endcsname \PackageWarning{nameauth}% - {macro \AKA: XRef: #4 #5 exists.}% - \else% - \ifcsname\@nameauth@CleanName{#4#5!MN!}\endcsname% + {macro \AKA: XRef: #4 #5 exists}% + \else + \ifcsname\csde!MN\endcsname \PackageWarning{nameauth}% - {macro \AKA: Name reference: #4 #5 already exists; no see ref.}% - \else% - \ifcsname\@nameauth@CleanName{#4#5!NF!}\endcsname% + {macro \AKA: Name reference: #4 #5 exists; no xref}% + \else + \ifcsname\csde!NF\endcsname \PackageWarning{nameauth}% - {macro \AKA: Name reference: #4 #5 already exists; no see ref.}% - \else% - \csgdef{\@nameauth@CleanName{#4#5!PN!}}{}% - \ifx\testi\@empty% - \@nameauth@Index{\ISurnamesiv\ISpace#5|see{\Surnamesii}}% - \else% - \ifx\Suffixii\@empty \@nameauth@Index{\ISurnamesiv\ISpace#5|see{\Surnamesii, #1}}% - \else \@nameauth@Index{\ISurnamesiv\ISpace#5|see{\Shortii, #1, \Suffixii}}\fi% - \fi% - \fi% - \fi% - \fi% - \if@nameauth@RevThisComma% + {macro \AKA: Name reference: #4 #5 exists; no xref}% + \else + \csgdef{\csde!PN}{}% + \ifx\testa\@empty + \@nameauth@Index{\csde}% + {\ISNNd\ISpace\arge|see{\SNNb}}% + \else + \ifx\Suffb\@empty + \@nameauth@Index{\csde}% + {\ISNNd\ISpace\arge|see{\SNNb,\space\arga}}% + \else + \@nameauth@Index{\csde}% + {\ISNNd\ISpace\arge|see{\Shortb,\space\arga,\space\Suffb}}% + \fi + \fi + \fi + \fi + \fi + \if@nameauth@RevThisComma \protected@edef\ISpace{,\space}% \protected@edef\Space{,\space}% - \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi% - \fi% - \if@nameauth@AltAKA% - \if@nameauth@RevThis% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\testv}% - \fi% - \else% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\expandafter\testv\expandafter\Space\Surnamesiv}% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\expandafter\Surnamesiv\expandafter\space\testv}% - \fi% - \fi% - \fi% - \else% - \ifcsname\@nameauth@CleanName{#3#4!PN!}\endcsname% + \if@nameauth@NBSP + \protected@edef\Space{,\nobreakspace}% + \fi + \fi + \if@nameauth@AltAKA + \ex\@nameauth@FmtName\ex{\arge}% + \else + \if@nameauth@RevThis + \ex\@nameauth@FmtName\ex{\ex\arge\ex\Space\SNNd}% + \else + \ex\@nameauth@FmtName\ex{\ex\SNNd\ex\space\arge}% + \fi + \fi + \fi + \else + \ifcsname\cscd!PN\endcsname \PackageWarning{nameauth}% - {macro \AKA: XRef: #3 #4 exists.}% - \else% - \ifcsname\@nameauth@CleanName{#3#4!MN!}\endcsname% + {macro \AKA: XRef: #3 #4 exists}% + \else + \ifcsname\cscd!MN\endcsname \PackageWarning{nameauth}% - {macro \AKA: Name reference: #3 #4 already exists; no see ref.}% - \else% - \ifcsname\@nameauth@CleanName{#3#4!NF!}\endcsname% + {macro \AKA: Name reference: #3 #4 exists; no xref}% + \else + \ifcsname\cscd!NF\endcsname \PackageWarning{nameauth}% - {macro \AKA: Name reference: #3 #4 already exists; no see ref.}% - \else% - \csgdef{\@nameauth@CleanName{#3#4!PN!}}{}% - \ifx\testi\@empty% - \ifx\Suffixiv\@empty \@nameauth@Index{\ISurnamesiv, #3|see{\Surnamesii}}% - \else \@nameauth@Index{\Shortiv, #3, \Suffixiv|see{\Surnamesii}}\fi% - \else% - \ifx\Suffixii\@empty% - \ifx\Suffixiv\@empty% - \@nameauth@Index{\ISurnamesiv, #3|see{\Surnamesii, #1}}% - \else% - \@nameauth@Index{\Shortiv, #3, \Suffixiv|see{\Surnamesii, #1}}% - \fi% - \else% - \ifx\Suffixiv\@empty% - \@nameauth@Index{\ISurnamesiv, #3|see{\Shortii, #1, \Suffixii}}% - \else% - \@nameauth@Index{\Shortiv, #3, \Suffixiv|see{\Shortii, #1, \Suffixii}}% - \fi% - \fi% - \fi% - \fi% - \fi% - \fi% - \if@nameauth@RevThisComma% + {macro \AKA: Name reference: #3 #4 exists; no xref}% + \else + \csgdef{\cscd!PN}{}% + \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 + \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 + \fi + \fi + \fi + \fi + \if@nameauth@RevThisComma \protected@edef\ISpace{,\space}% \protected@edef\Space{,\space}% - \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi% - \fi% - \ifx\testv\@empty% - \protected@edef\Forenames{#3}% - \else% - \protected@edef\Forenames{#5}% - \fi% - \if@nameauth@RevThis% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Surnamesiv\expandafter\Space\Forenames}% - \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Forenames\expandafter\space\Surnamesiv}% - \fi% - \fi% + \if@nameauth@NBSP\protected@edef\Space{,\nobreakspace}\fi + \fi + \ifx\teste\@empty + \let\FNN\argc% + \else + \let\FNN\arge% + \fi + \if@nameauth@RevThis + \ex\@nameauth@FmtName\ex{\ex\SNNd\ex\Space\FNN}% + \else + \ex\@nameauth@FmtName\ex{\ex\FNN\ex\space\SNNd}% + \fi + \fi \@nameauth@NBSPfalse% \@nameauth@AltAKAfalse% \@nameauth@DoCapsfalse% @@ -638,253 +701,414 @@ \@nameauth@ShowCommafalse% \@nameauth@RevThisfalse% \@nameauth@RevThisCommafalse% - \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi% + \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi } -\WithSuffix\newcommandx\AKA*[5][1=\@empty,3=\@empty,5=\@empty]% +\WithSuffix\def\AKA*{\@nameauth@AltAKAtrue\AKA} +\newcommandx*\PName[5][1=\@empty,3=\@empty,5=\@empty]% {% - \@nameauth@AltAKAtrue% - \AKA[#1]{#2}[#3]{#4}[#5]% + \Name[#1]{#2}\space(\AKA[#1]{#2}[#3]{#4}[#5])% } -\newcommandx\PName[5][1=\@empty,3=\@empty,5=\@empty]% +\WithSuffix\def\PName*{\@nameauth@FullNametrue\PName} +\newcommandx*\TagName[4][1=\@empty, 3=\@empty]% {% - \Name[#1]{#2}\space(\AKA[#1]{#2}[#3]{#4}[#5])% + \protected@edef\testa{#1}% + \protected@edef\testb{\trim@spaces{#2}}% + \protected@edef\testc{#3}% + \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 + \ifx\testa\@empty + \ifx\testc\@empty + \ifcsname\csb!PN\endcsname + \PackageWarning{nameauth}% + {macro \TagName: not tagging xref: #2}% + \else + \csgdef{\csb!TAG}{#4}% + \fi + \else + \ifcsname\csbc!PN\endcsname + \PackageWarning{nameauth}% + {macro \TagName: not tagging xref: #2 #3}% + \else + \csgdef{\csbc!TAG}{#4}% + \fi + \fi + \else + \ifcsname\csab!PN\endcsname + \PackageWarning{nameauth}% + {macro \TagName: not tagging xref: #1 #2}% + \else + \csgdef{\csab!TAG}{#4}% + \fi + \fi } -\WithSuffix\newcommandx\PName*[5][1=\@empty,3=\@empty,5=\@empty]% +\newcommandx*\UntagName[3][1=\@empty, 3=\@empty]% {% - \Name*[#1]{#2}\space(\AKA[#1]{#2}[#3]{#4}[#5])% + \protected@edef\testa{#1}% + \protected@edef\testb{\trim@spaces{#2}}% + \protected@edef\testc{#3}% + \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 + \ifx\testa\@empty + \ifx\testc\@empty + \global\csundef{\csb!TAG}% + \else + \global\csundef{\csbc!TAG}% + \fi + \else + \global\csundef{\csab!TAG}% + \fi } -\newcommandx\TagName[4][1=\@empty, 3=\@empty]% +\newcommandx*\PretagName[4][1=\@empty, 3=\@empty]% {% - \protected@edef\testi{#1}% - \protected@edef\testiii{#3}% - \ifx\testi\@empty% - \ifx\testiii\@empty% - \ifcsname\@nameauth@CleanName{#2!PN!}\endcsname% - \PackageWarning{nameauth}% - {macro \textbackslash TagName Cannot tag xref: #2.}% - \else% - \csgdef{\@nameauth@CleanName{#2}!TAG!}{#4}% - \fi% - \else% - \ifcsname\@nameauth@CleanName{#2#3!PN!}\endcsname% + \protected@edef\testa{#1}% + \protected@edef\testb{\trim@spaces{#2}}% + \protected@edef\testc{#3}% + \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 + \ifx\testa\@empty + \ifx\testc\@empty + \ifcsname\csb!PN\endcsname \PackageWarning{nameauth}% - {macro \textbackslash TagName Cannot tag xref: #2 #3.}% - \else% - \csgdef{\@nameauth@CleanName{#2#3}!TAG!}{#4}% - \fi% - \fi% - \else% - \ifcsname\@nameauth@CleanName{#1#2!PN!}\endcsname% + {macro \PretagName: tagging xref: #2}% + \fi + \if@nameauth@Pretag\csgdef{\csb!PRE}{#4\@nameauth@Actual}\fi + \else + \ifcsname\csbc!PN\endcsname \PackageWarning{nameauth}% - {macro \textbackslash TagName Cannot tag xref: #1 #2.}% - \else% - \csgdef{\@nameauth@CleanName{#1#2}!TAG!}{#4}% - \fi% - \fi% -} -\newcommandx\UntagName[3][1=\@empty, 3=\@empty]% -{% - \protected@edef\testi{#1}% - \protected@edef\testiii{#3}% - \ifx\testi\@empty% - \ifx\testiii\@empty% - \global\csundef{\@nameauth@CleanName{#2}!TAG!}% - \else% - \global\csundef{\@nameauth@CleanName{#2#3}!TAG!}% - \fi% - \else% - \global\csundef{\@nameauth@CleanName{#1#2}!TAG!}% - \fi% + {macro \PretagName: tagging xref: #2 #3}% + \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 + \fi } -\newcommandx\IndexName[3][1=\@empty, 3=\@empty]% +\newcommandx*\IndexName[3][1=\@empty, 3=\@empty]% {% - \protected@edef\testi{#1}% - \protected@edef\testii{#2}% - \protected@edef\testiii{#3}% + \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}}% + \ifx\testb\@empty + \PackageError{nameauth}% + {macro \IndexName: Essential name missing}% + \else + \ifx\csb\@empty + \PackageError{nameauth}% + {macro \IndexName: Essential name malformed}% + \fi + \fi \protected@edef\Space{\space}% - \if@nameauth@AlwaysComma% + \if@nameauth@AlwaysComma \protected@edef\Space{,\space}% - \fi% - \if@nameauth@ShowComma% + \fi + \if@nameauth@ShowComma \protected@edef\Space{,\space}% - \fi% - \protected@edef\Short{\@nameauth@Root{#2}}% - \ifx\testii\Short% - \let\Surnames\Short% - \protected@edef\Suffix{\@empty}% - \else% - \protected@edef\Suffix{\@nameauth@Suffix{#2}}% - \protected@edef\Surnames{\Short\Space\Suffix}% - \fi% - \ifx\testi\@empty% - \ifx\testiii\@empty% - \ifcsname\@nameauth@CleanName{#2!PN!}\endcsname% + \fi + \let\Short\testbr% + \ifx\testb\testbr + \let\SNN\Short% + \protected@edef\Suff{\@empty}% + \else + \protected@edef\Suff{\@nameauth@Suffix{#2}}% + \protected@edef\SNN{\Short\Space\Suff}% + \fi + \ifx\testa\@empty + \ifx\testc\@empty + \ifcsname\csb!PN\endcsname \PackageWarning{nameauth}% - {macro \IndexName: XRef: #2 exists.}% - \else% - \@nameauth@Index{\Surnames}[\@nameauth@CleanName{#2}!TAG!]% - \fi% - \else% - \ifcsname\@nameauth@CleanName{#2#3!PN!}\endcsname% - \PackageWarning{nameauth}% - {macro \IndexName: XRef: #2 #3 exists.}% - \else% - \@nameauth@Index{\Surnames\Space#3}[\@nameauth@CleanName{#2#3}!TAG!]% - \fi% - \fi% - \else% - \ifcsname\@nameauth@CleanName{#1#2!PN!}\endcsname% + {macro \IndexName: XRef: #2 exists}% + \else + \@nameauth@Index{\csb}{\SNN}% + \fi + \else + \ifcsname\csbc!PN\endcsname \PackageWarning{nameauth}% - {macro \IndexName: XRef: #1 #2 exists.}% - \else% - \ifx\Suffix\@empty \@nameauth@Index{\Short, #1}[\@nameauth@CleanName{#1#2}!TAG!]% - \else \@nameauth@Index{\Short, #1, \Suffix}[\@nameauth@CleanName{#1#2}!TAG!]\fi% - \fi% - \fi% + {macro \IndexName: XRef: #2 #3 exists}% + \else + \@nameauth@Index{\csbc}{\SNN\Space\argc}% + \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}% + \fi + \fi + \fi \@nameauth@ShowCommafalse% } -\newcommandx\ExcludeName[3][1=\@empty, 3=\@empty]% +\newcommandx*\ExcludeName[3][1=\@empty, 3=\@empty]% {% - \protected@edef\testi{#1}% - \protected@edef\testiii{#3}% - \ifx\testi\@empty% - \ifx\testiii\@empty% - \ifcsname\@nameauth@CleanName{#2!PN!}\endcsname\relax% - \else% - \ifcsname\@nameauth@CleanName{#2!MN!}\endcsname% + \protected@edef\testa{#1}% + \protected@edef\testb{\trim@spaces{#2}}% + \protected@edef\testc{#3}% + \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 + \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 already exists; no exclusion.}% - \else% - \ifcsname\@nameauth@CleanName{#2!NF!}\endcsname% + {macro \ExcludeName: Reference: #2 exists; no exclusion}% + \else + \ifcsname\csb!NF\endcsname \PackageWarning{nameauth}% - {macro \ExcludeName: Reference: #2 already exists; no exclusion.}% - \else% - \csgdef{\@nameauth@CleanName{#2!PN!}}{}% - \fi% - \fi% - \fi% - \else% - \ifcsname\@nameauth@CleanName{#2#3!PN!}\endcsname\relax% - \else% - \ifcsname\@nameauth@CleanName{#2#3!MN!}\endcsname% + {macro \ExcludeName: Reference: #2 exists; no exclusion}% + \else + \csgdef{\csb!PN}{}% + \fi + \fi + \fi + \else + \ifcsname\csbc!PN\endcsname + \PackageWarning{nameauth}% + {macro \ExcludeName: Xref: #2 #3 already exists}% + \else + \ifcsname\csbc!MN\endcsname \PackageWarning{nameauth}% - {macro \ExcludeName: Reference: #2 #3 already exists; no exclusion.}% - \else% - \ifcsname\@nameauth@CleanName{#2#3!NF!}\endcsname% + {macro \ExcludeName: Reference: #2 #3 exists; no exclusion}% + \else + \ifcsname\csbc!NF\endcsname \PackageWarning{nameauth}% - {macro \ExcludeName: Reference: #2 #3 already exists; no exclusion.}% - \else% - \csgdef{\@nameauth@CleanName{#2#3!PN!}}{}% - \fi% - \fi% - \fi% - \fi% - \else% - \ifcsname\@nameauth@CleanName{#1#2!PN!}\endcsname% + {macro \ExcludeName: Reference: #2 #3 exists; no exclusion}% + \else + \csgdef{\csbc!PN}{}% + \fi + \fi + \fi + \fi + \else + \ifcsname\csab!PN\endcsname \PackageWarning{nameauth}% - {macro \ExcludeName: XRef: #1 #2 exists.}% - \else% - \ifcsname\@nameauth@CleanName{#1#2!MN!}\endcsname% + {macro \ExcludeName: XRef: #1 #2 already exists}% + \else + \ifcsname\csab!MN\endcsname \PackageWarning{nameauth}% - {macro \ExcludeName: Reference: #1 #2 already exists; no exclusion.}% - \else% - \ifcsname\@nameauth@CleanName{#1#2!NF!}\endcsname% + {macro \ExcludeName: Reference: #1 #2 exists; no exclusion}% + \else + \ifcsname\csab!NF\endcsname \PackageWarning{nameauth}% - {macro \ExcludeName: Reference: #1 #2 already exists; no exclusion.}% - \else% - \csgdef{\@nameauth@CleanName{#1#2!PN!}}{}% - \fi% - \fi% - \fi% - \fi% + {macro \ExcludeName: Reference: #1 #2 exists; no exclusion}% + \else + \csgdef{\csab!PN}{}% + \fi + \fi + \fi + \fi } -\newcommandx\ForgetName[3][1=\@empty, 3=\@empty]% +\newcommandx*\ForgetName[3][1=\@empty, 3=\@empty]% {% - \protected@edef\testi{#1}% - \protected@edef\testiii{#3}% - \ifx\testi\@empty% - \ifx\testiii\@empty% - \global\csundef{\@nameauth@CleanName{#2!MN!}}% - \global\csundef{\@nameauth@CleanName{#2!NF!}}% - \else% - \global\csundef{\@nameauth@CleanName{#2#3!MN!}}% - \global\csundef{\@nameauth@CleanName{#2#3!NF!}}% - \fi% - \else% - \global\csundef{\@nameauth@CleanName{#1#2!MN!}}% - \global\csundef{\@nameauth@CleanName{#1#2!NF!}}% - \fi% + \protected@edef\testa{#1}% + \protected@edef\testb{\trim@spaces{#2}}% + \protected@edef\testc{#3}% + \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 + \ifx\testa\@empty + \ifx\testc\@empty + \global\csundef{\csb!MN}% + \global\csundef{\csb!NF}% + \else + \global\csundef{\csbc!MN}% + \global\csundef{\csbc!NF}% + \fi + \else + \global\csundef{\csab!MN}% + \global\csundef{\csab!NF}% + \fi } -\newcommandx\SubvertName[3][1=\@empty, 3=\@empty]% +\newcommandx*\SubvertName[3][1=\@empty, 3=\@empty]% {% - \protected@edef\testi{#1}% - \protected@edef\testiii{#3}% - \ifx\testi\@empty% - \ifx\testiii\@empty% - \csgdef{\@nameauth@CleanName{#2!MN!}}{}% - \csgdef{\@nameauth@CleanName{#2!NF!}}{}% - \else% - \csgdef{\@nameauth@CleanName{#2#3!MN!}}{}% - \csgdef{\@nameauth@CleanName{#2#3!NF!}}{}% - \fi% - \else% - \csgdef{\@nameauth@CleanName{#1#2!MN!}}{}% - \csgdef{\@nameauth@CleanName{#1#2!NF!}}{}% - \fi% + \protected@edef\testa{#1}% + \protected@edef\testb{\trim@spaces{#2}}% + \protected@edef\testc{#3}% + \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 + \ifx\testa\@empty + \ifx\testc\@empty + \csgdef{\csb!MN}{}% + \csgdef{\csb!NF}{}% + \else + \csgdef{\csbc!MN}{}% + \csgdef{\csbc!NF}{}% + \fi + \else + \csgdef{\csab!MN}{}% + \csgdef{\csab!NF}{}% + \fi } \newenvironment{nameauth}{% \begingroup% + \let\ex\expandafter% \csdef{<}##1&##2&##3&##4>{% \protected@edef\arga{\trim@spaces{##1}}% - \protected@edef\argb{\trim@spaces{##2}}% - \protected@edef\argc{\trim@spaces{##3}}% - \protected@edef\argd{\trim@spaces{##4}}% + \protected@edef\testb{\trim@spaces{##2}}% + \protected@edef\testc{\trim@spaces{##3}}% + \protected@edef\testd{\trim@spaces{##4}}% + \newtoks\tokb% + \newtoks\tokc% + \newtoks\tokd% + \tokb\expandafter{##2}% + \tokc\expandafter{##3}% + \tokd\expandafter{##4}% \ifx\arga\@empty \PackageError{nameauth}% - {environment nameauth: Control sequence missing.}% + {environment nameauth: Control sequence missing}% \else - \ifx\argc\@empty + \ifx\testc\@empty \PackageError{nameauth}% - {environment nameauth: Essential name missing.}% + {environment nameauth: Essential name missing}% \else - \ifx\argd\@empty - \ifx\argb\@empty - \csxdef{\arga}{\Name{\argc}}% - \csxdef{L\arga}{\Name*{\argc}}% - \csxdef{S\arga}{\FName{\argc}}% + \ifcsname\arga\endcsname + \PackageWarning{nameauth}% + {environment nameauth: Redefinition of shorthands}% + \fi + \ifx\testd\@empty + \ifx\testb\@empty + \ex\csxdef\ex{\ex\arga\ex}\ex{\ex\Name\ex{\the\tokc}}% + \ex\csgdef\ex{\ex L\ex\arga\ex}\ex{\ex\Name\ex*\ex{\the\tokc}}% + \ex\csgdef\ex{\ex S\ex\arga\ex}\ex{\ex\FName\ex{\the\tokc}}% \else - \csxdef{\arga}{\Name[\argb]{\argc}}% - \csxdef{L\arga}{\Name*[\argb]{\argc}}% - \csxdef{S\arga}{\FName[\argb]{\argc}}% + \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex\arga\ex\ex\ex}% + \ex\ex\ex{\ex\ex\ex\Name\ex\ex\ex[\ex\the\ex\tokb\ex]% + \ex{\the\tokc}}% + \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex L\ex\ex\ex\arga% + \ex\ex\ex}\ex\ex\ex{\ex\ex\ex\Name\ex\ex\ex*% + \ex\ex\ex[\ex\the\ex\tokb\ex]\ex{\the\tokc}}% + \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex S\ex\ex\ex\arga% + \ex\ex\ex}\ex\ex\ex{\ex\ex\ex\FName\ex\ex\ex[% + \ex\the\ex\tokb\ex]\ex{\the\tokc}}% \fi \else - \ifx\argb\@empty - \csxdef{\arga}{\Name{\argc}[\argd]}% - \csxdef{L\arga}{\Name*{\argc}[\argd]}% - \csxdef{S\arga}{\FName{\argc}[\argd]}% + \ifx\testb\@empty + \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex\arga\ex\ex\ex}% + \ex\ex\ex{\ex\ex\ex\Name\ex\ex\ex{\ex\the\ex\tokc\ex}% + \ex[\the\tokd]}% + \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex L\ex\ex\ex\arga% + \ex\ex\ex}\ex\ex\ex{\ex\ex\ex\Name% + \ex\ex\ex*\ex\ex\ex{\ex\the\ex\tokc\ex}\ex[\the\tokd]}% + \ex\ex\ex\csgdef\ex\ex\ex{\ex\ex\ex S\ex\ex\ex\arga% + \ex\ex\ex}\ex\ex\ex{\ex\ex\ex\FName\ex\ex\ex{% + \ex\the\ex\tokc\ex}\ex[\the\tokd]}% \else - \csxdef{\arga}{\Name[\argb]{\argc}[\argd]}% - \csxdef{L\arga}{\Name*[\argb]{\argc}[\argd]}% - \csxdef{S\arga}{\FName[\argb]{\argc}[\argd]}% + \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\Name% + \ex\ex\ex\ex\ex\ex\ex[\ex\ex\ex\the\ex\ex\ex\tokb% + \ex\ex\ex]\ex\ex\ex{\ex\the\ex\tokc\ex}\ex[\the\tokd]}% + \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\Name\ex\ex\ex\ex\ex\ex\ex*% + \ex\ex\ex\ex\ex\ex\ex[\ex\ex\ex\the\ex\ex\ex\tokb% + \ex\ex\ex]\ex\ex\ex{\ex\the\ex\tokc\ex}\ex[\the\tokd]}% + \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\FName\ex\ex\ex\ex\ex\ex\ex[% + \ex\ex\ex\the\ex\ex\ex\tokb\ex\ex\ex]% + \ex\ex\ex{\ex\the\ex\tokc\ex}\ex[\the\tokd]}% \fi \fi \fi \fi \ignorespaces% - }% -}{\endgroup} -\newcommand{\NamesInactive}{\@nameauth@DoFormatfalse} -\newcommand{\NamesActive}{\@nameauth@DoFormattrue} -\newcommand{\AllCapsInactive}{\@nameauth@AllCapsfalse} -\newcommand{\AllCapsActive}{\@nameauth@AllCapstrue} -\newcommand{\ReverseInactive}{\@nameauth@RevAllfalse} -\newcommand{\ReverseActive}{\@nameauth@RevAlltrue} -\newcommand{\ReverseCommaInactive}% - {\@nameauth@RevAllfalse\@nameauth@RevAllCommafalse} -\newcommand{\ReverseCommaActive}% - {\@nameauth@RevAlltrue\@nameauth@RevAllCommatrue} -\newcommand{\IndexInactive}{\@nameauth@DoIndexfalse} -\newcommand{\IndexActive}{\@nameauth@DoIndextrue} -\endinput + }\ignorespaces% +}{\endgroup\ignorespaces} +%% +%% Copyright (C) 2015 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 file nameauth.dtx 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'. -- cgit v1.2.3