%% %% This is file `nameauth.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% nameauth.dtx (with options: `package') %% %% 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] \ProvidesPackage{nameauth} [2012/02/15 v0.94 name authority macros to aid consistent display and indexing of names] %% \DescribeMacro{\IndexActive} \newif\if@nameauth@DoFormat \newif\if@nameauth@DoComma \newif\if@nameauth@DoIndex \newif\if@nameauth@Comma \newif\if@nameauth@Punct \newif\if@nameauth@DoCaps \DeclareOption{mainmatter}{\@nameauth@DoFormattrue} \DeclareOption{frontmatter}{\@nameauth@DoFormatfalse} \DeclareOption{smallcaps}{\newcommand{\NamesFormat}{\scshape}} \DeclareOption{italic}{\renewcommand{\NamesFormat}{\itshape}} \DeclareOption{boldface}{\renewcommand{\NamesFormat}{\bfseries}} \DeclareOption{noformat}{\renewcommand{\NamesFormat}{}} \DeclareOption{comma}{\@nameauth@DoCommatrue} \DeclareOption{nocomma}{\@nameauth@DoCommafalse} \DeclareOption{index}{\@nameauth@DoIndextrue} \DeclareOption{noindex}{\@nameauth@DoIndexfalse} \ExecuteOptions{smallcaps,mainmatter,nocomma,index} \ProcessOptions\relax \RequirePackage{etoolbox} \RequirePackage{xparse} \newcommand*{\@nameauth@CleanName}[1]% {\expandafter\zap@space\detokenize{#1} \@empty} \newcommand*{\@nameauth@Root}[1]{% \@nameauth@TrimRoot#1\relax% } \def\@nameauth@TrimRoot#1,#2\relax{#1} \newcommand*{\@nameauth@Suffix}[1]{% \@nameauth@TrimSuffix#1\relax% } \def\@nameauth@TrimSuffix#1,#2\relax{#2} \newcommand*{\@nameauth@CheckComma}[1]{% \@nameauth@CheckSuffix#1,\relax% } \def\@nameauth@CheckSuffix#1,#2\relax{% \def\Test{#2}% \ifx\Test\@empty\@nameauth@Commafalse\else\@nameauth@Commatrue\fi% } \newcommand*{\@nameauth@NoComma}[1]{% \@nameauth@Root{#1}\@nameauth@Suffix{#1}% } \def\@nameauth@CheckDot{\futurelet\@token\@nameauth@EvalDot} \def\@nameauth@EvalDot% {\let\@period=.\ifx\@token\@period\expandafter\@gobble \fi} \newcommand*{\@nameauth@TestDot}[1]{% \def\TestDot##1.\TestEnd##2\TestStop{\TestPunct{##2}}% \def\TestPunct##1% {\ifx\TestPunct##1\TestPunct\else\@nameauth@Puncttrue\fi}% \@nameauth@Punctfalse% \TestDot#1\TestEnd.\TestEnd\TestStop% } \DeclareDocumentCommand\@nameauth@FmtName{s m}% {% \edef\Input{#2}% \def\Cap##1{\@Cap##1}% \def\@Cap##1##2{\uppercase{##1}##2}% \if@nameauth@DoCaps% \expandafter\def\expandafter\Output\expandafter{% \expandafter\Cap\expandafter{\Input}}% \else\let\Output\Input\fi% \@nameauth@DoCapsfalse\@nameauth@TestDot{#2}% \IfBooleanTF{#1}% {\Output}% {\bgroup\NamesFormat{#2}\egroup}% } \DeclareDocumentCommand\@nameauth@FmtFName{s m}% {% \@nameauth@DoCapsfalse\@nameauth@TestDot{#2}% \IfBooleanTF{#1}% {#2}% {\bgroup\NamesFormat{#2}\egroup}% } \newcommand{\@nameauth@Index}[1]{% \if@nameauth@DoIndex\index{#1}\fi% } \newcommand{\CapThis}{\@nameauth@DoCapstrue} \DeclareDocumentCommand\Name{s o m o}% {% \def\Surnames{#3}% \if@nameauth@DoComma\else% \@nameauth@CheckComma{#3}% \if@nameauth@Comma% \edef\Surnames{\@nameauth@Root{#3}\@nameauth@Suffix{#3}}% \fi% \fi% \IfValueTF{#2}% {\IfValueTF{#4}% {\edef\Forenames{#4}}{\edef\Forenames{#2}}% \ifcsname\@nameauth@CleanName{#2#3!PN!}\endcsname% \expandafter\@nameauth@FmtName\expandafter*\expandafter{% \expandafter\Forenames\expandafter\space\Surnames}% \PackageWarning{nameauth}% {\bsc Name Cross-reference: #2 #3 cannot be a page reference.}% \else% \if@nameauth@DoFormat% \ifcsname\@nameauth@CleanName{#2#3!MN!}\endcsname% \IfBooleanTF{#1}% {\expandafter\@nameauth@FmtName\expandafter*\expandafter{% \expandafter\Forenames\expandafter\space\Surnames}% \@nameauth@Index{\Surnames, #2}}% {\@nameauth@FmtName*{\@nameauth@Root{#3,}}% \@nameauth@Index{\Surnames, #2}}% \else% \csgdef{\@nameauth@CleanName{#2#3!MN!}}{}% \expandafter\@nameauth@FmtName\expandafter{% \expandafter\Forenames\expandafter\space\Surnames}% \@nameauth@Index{\Surnames, #2}% \fi% \else% \ifcsname\@nameauth@CleanName{#2#3!NF!}\endcsname% \IfBooleanTF{#1}% {\expandafter\@nameauth@FmtName\expandafter*\expandafter{% \expandafter\Forenames\expandafter\space\Surnames}% \@nameauth@Index{\Surnames, #2}}% {\@nameauth@FmtName*{\@nameauth@Root{#3,}}% \@nameauth@Index{\Surnames, #2}}% \else% \csgdef{\@nameauth@CleanName{#2#3!NF!}}{}% \expandafter\@nameauth@FmtName\expandafter*\expandafter{% \expandafter\Forenames\expandafter\space\Surnames}% \@nameauth@Index{\Surnames, #2}% \fi% \fi% \fi}% {\IfValueTF{#4} {\ifcsname\@nameauth@CleanName{#3#4!PN!}\endcsname% \expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnames\space#4}% \PackageWarning{nameauth}% {\bsc Name Cross-reference: #3 #4 cannot be a page reference.}% \else% \if@nameauth@DoFormat% \ifcsname\@nameauth@CleanName{#3#4!MN!}\endcsname% \IfBooleanTF{#1}% {\expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnames\space#4}% \@nameauth@Index{\Surnames\space#4}}% {\@nameauth@FmtName*{\@nameauth@Root{#3,}}% \@nameauth@Index{\Surnames\space#4}}% \else% \csgdef{\@nameauth@CleanName{#3#4!MN!}}{}% \expandafter\@nameauth@FmtName\expandafter{% \Surnames\space#4}% \@nameauth@Index{\Surnames\space#4}% \fi% \else% \ifcsname\@nameauth@CleanName{#3#4!NF!}\endcsname% \IfBooleanTF{#1}% {\expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnames\space#4}% \@nameauth@Index{\Surnames\space#4}}% {\@nameauth@FmtName*{\@nameauth@Root{#3,}}% \@nameauth@Index{\Surnames\space#4}}% \else% \csgdef{\@nameauth@CleanName{#3#4!NF!}}{}% \expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnames\space#4}% \@nameauth@Index{\Surnames\space#4}% \fi% \fi% \fi}% {\ifcsname\@nameauth@CleanName{#3!PN!}\endcsname% \expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnames}% \PackageWarning{nameauth}% {\bsc Name Cross-reference: #3 cannot be a page reference.}% \else% \if@nameauth@DoFormat% \ifcsname\@nameauth@CleanName{#3!MN!}\endcsname% \IfBooleanTF{#1}% {\expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnames}% \@nameauth@Index{\Surnames}}% {\@nameauth@FmtName*{\@nameauth@Root{#3,}}% \@nameauth@Index{\Surnames}}% \else% \csgdef{\@nameauth@CleanName{#3!MN!}}{}% \expandafter\@nameauth@FmtName\expandafter{\Surnames}% \@nameauth@Index{\Surnames}% \fi% \else% \ifcsname\@nameauth@CleanName{#3!NF!}\endcsname% \IfBooleanTF{#1}% {\expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnames}% \@nameauth@Index{\Surnames}}% {\@nameauth@FmtName*{\@nameauth@Root{#3,}}% \@nameauth@Index{\Surnames}}% \else% \csgdef{\@nameauth@CleanName{#3!NF!}}{}% \expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnames}% \@nameauth@Index{\Surnames}% \fi% \fi% \fi}% }% \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi% } \DeclareDocumentCommand\FName{o m o}% {% \def\Surnames{#2}% \if@nameauth@DoComma\else% \@nameauth@CheckComma{#2}% \if@nameauth@Comma% \edef\Surnames{\@nameauth@Root{#2}\@nameauth@Suffix{#2}}% \fi% \fi% \IfValueTF{#1}% {\IfValueTF{#3}{\edef\Forenames{#3}}{\edef\Forenames{#1}}% \ifcsname\@nameauth@CleanName{#1#2!PN!}\endcsname% \expandafter\@nameauth@FmtFName\expandafter*% \expandafter{\Forenames}% \PackageWarning{nameauth}% {\bsc FName Cross-reference: #1 #2 cannot be a page reference.}% \else% \if@nameauth@DoFormat% \ifcsname\@nameauth@CleanName{#1#2!MN!}\endcsname% \expandafter\@nameauth@FmtFName\expandafter*% \expandafter{\Forenames}% \@nameauth@Index{\Surnames, #1}% \else% \csgdef{\@nameauth@CleanName{#1#2!MN!}}{}% \expandafter\@nameauth@FmtFName\expandafter{% \expandafter\Forenames\expandafter\space\Surnames}% \@nameauth@Index{\Surnames, #1}% \fi% \else% \ifcsname\@nameauth@CleanName{#1#2!NF!}\endcsname% \expandafter\@nameauth@FmtFName\expandafter*% \expandafter{\Forenames}% \@nameauth@Index{\Surnames, #1}% \else% \csgdef{\@nameauth@CleanName{#1#2!NF!}}{}% \expandafter\@nameauth@FmtFName\expandafter*% \expandafter{\Forenames\expandafter\space\Surnames}% \@nameauth@Index{\Surnames, #1}% \fi% \fi% \fi}% {\IfValueTF{#3} {\ifcsname\@nameauth@CleanName{#2#3!PN!}\endcsname% \expandafter\@nameauth@FmtFName\expandafter*% \expandafter{\Surnames\space#3}% \PackageWarning{nameauth}% {\bsc FName Cross-reference: #2 #3 cannot be a page reference.}% \else% \if@nameauth@DoFormat% \ifcsname\@nameauth@CleanName{#2#3!MN!}\endcsname% \@nameauth@FmtFName*{\@nameauth@Root{#2,}}% \@nameauth@Index{\Surnames\space#3}% \else% \csgdef{\@nameauth@CleanName{#2#3!MN!}}{}% \expandafter\@nameauth@FmtFName% \expandafter{\Surnames\space#3}% \@nameauth@Index{\Surnames\space#3}% \fi% \else% \ifcsname\@nameauth@CleanName{#2#3!NF!}\endcsname% \@nameauth@FmtFName*{\@nameauth@Root{#2,}}% \@nameauth@Index{\Surnames\space#3}% \else% \csgdef{\@nameauth@CleanName{#2#3!NF!}}{}% \expandafter\@nameauth@FmtFName\expandafter*% \expandafter{\Surnames\space#3}% \@nameauth@Index{\Surnames\space#3}% \fi% \fi% \fi}% {\ifcsname\@nameauth@CleanName{#2!PN!}\endcsname% \expandafter\@nameauth@FmtFName\expandafter*% \expandafter{\Surnames}% \PackageWarning{nameauth}% {\bsc FName Cross-reference: #2 cannot be a page reference.}% \else% \if@nameauth@DoFormat% \ifcsname\@nameauth@CleanName{#2!MN!}\endcsname% \@nameauth@FmtFName*{\@nameauth@Root{#2,}}% \@nameauth@Index{\Surnames}% \else% \csgdef{\@nameauth@CleanName{#2!MN!}}{}% \expandafter\@nameauth@FmtFName\expandafter{\Surnames}% \@nameauth@Index{\Surnames}% \fi% \else% \ifcsname\@nameauth@CleanName{#2!NF!}\endcsname% \@nameauth@FmtFName*{\@nameauth@Root{#2,}}% \@nameauth@Index{\Surnames}% \else% \csgdef{\@nameauth@CleanName{#2!NF!}}{}% \expandafter\@nameauth@FmtFName\expandafter*% \expandafter{\Surnames}% \@nameauth@Index{\Surnames}% \fi% \fi% \fi}% }% \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi% } \DeclareDocumentCommand\AKA{s o m o m o}% {% \def\Surnamesi{#3}% \def\Surnamesii{#5}% \if@nameauth@DoComma\else% \@nameauth@CheckComma{#3}% \if@nameauth@Comma% \edef\Surnamesi{\@nameauth@Root{#3}\@nameauth@Suffix{#3}}% \fi% \@nameauth@CheckComma{#5}% \if@nameauth@Comma% \edef\Surnamesii{\@nameauth@Root{#5}\@nameauth@Suffix{#5}}% \fi% \fi% \IfValueTF{#4}% {\IfValueTF{#6}% {\edef\Forenames{#6}}{\edef\Forenames{#4}}% \expandafter\@nameauth@FmtName\expandafter*\expandafter{% \expandafter\Forenames\expandafter\space\Surnamesii}% \ifcsname\@nameauth@CleanName{#4#5!PN!}\endcsname% \PackageWarning{nameauth}% {\bsc AKA XRef: #1 #2 exists.}% \else% \ifcsname\@nameauth@CleanName{#4#5!MN!}\endcsname% \PackageWarning{nameauth}% {\bsc AKA: Name reference: #4 #5 already exists; no see ref.}% \else% \ifcsname\@nameauth@CleanName{#4#5!NF!}\endcsname% \PackageWarning{nameauth}% {\bsc AKA: Name reference: #4 #5 already exists; no see ref.}% \else% \csgdef{\@nameauth@CleanName{#4#5!PN!}}{}% \IfValueTF{#2}% {\@nameauth@Index{\Surnamesii, #4|see{\Surnamesi, #2}}}% {\@nameauth@Index{\Surnamesii, #4|see{\Surnamesi}}}% \fi% \fi% \fi}% {\IfValueTF{#6}% {\IfBooleanTF{#1}% {\@nameauth@FmtName*{#6}}% {\expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnamesii\space#6}}% \ifcsname\@nameauth@CleanName{#5#6!PN!}\endcsname\relax% \else% \ifcsname\@nameauth@CleanName{#5#6!MN!}\endcsname% \PackageWarning{nameauth}% {\bsc AKA Name reference: #5 #6 already exists; no see ref.}% \else% \ifcsname\@nameauth@CleanName{#5#6!NF!}\endcsname% \PackageWarning{nameauth}% {\bsc AKA Name reference: #5 #6 already exists; no see ref.}% \else% \csgdef{\@nameauth@CleanName{#5#6!PN!}}{}% \IfValueTF{#2}% {\@nameauth@Index{\Surnamesii\space#6|see{\Surnamesi, #2}}}% {\@nameauth@Index{\Surnamesii\space#6|see{\Surnamesi}}}% \fi% \fi% \fi}% {\expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnamesii}% \ifcsname\@nameauth@CleanName{#5!PN!}\endcsname\relax% \else% \ifcsname\@nameauth@CleanName{#5!MN!}\endcsname% \PackageWarning{nameauth}% {\bsc AKA Name reference: #5 already exists; no see ref.}% \else% \ifcsname\@nameauth@CleanName{#5!NF!}\endcsname% \PackageWarning{nameauth}% {\bsc AKA Name reference: #5 already exists; no see ref.}% \else% \csgdef{\@nameauth@CleanName{#5!PN!}}{}% \IfValueTF{#2}% {\@nameauth@Index{\Surnamesii|see{\Surnamesi, #2}}}% {\@nameauth@Index{\Surnamesii|see{\Surnamesi}}}% \fi% \fi% \fi}% }% \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi% } \DeclareDocumentCommand\PName{s o m o m o}% {% \IfBooleanTF{#1}{\Name*[#2]{#3}}{\Name[#2]{#3}}% {\space}(\AKA[#2]{#3}[#4]{#5}[#6])% } \DeclareDocumentCommand\IndexName{o m o}% {% \def\Surnames{#2}% \if@nameauth@DoComma\else% \@nameauth@CheckComma{#2}% \if@nameauth@Comma% \edef\Surnames{\@nameauth@Root{#2}\@nameauth@Suffix{#2}}% \fi% \fi% \IfValueTF{#1}% {\ifcsname\@nameauth@CleanName{#1#2!PN!}\endcsname% \else% \@nameauth@Index{\Surnames, #1}% \fi}% {\IfValueTF{#3} {\ifcsname\@nameauth@CleanName{#2#3!PN!}\endcsname% \else% \@nameauth@Index{\Surnames\space#3}% \fi}% {\ifcsname\@nameauth@CleanName{#2!PN!}\endcsname% \else% \@nameauth@Index{\Surnames}% \fi}% }% } \DeclareDocumentCommand\ExcludeName{o m o}% {% \IfValueTF{#1}% {% \ifcsname\@nameauth@CleanName{#1#2!PN!}\endcsname% \PackageWarning{nameauth}% {\bsc ExcludeName XRef: #1 #2 exists.}% \else% \ifcsname\@nameauth@CleanName{#1#2!MN!}\endcsname% \PackageWarning{nameauth}% {\bsc ExcludeName Reference: #1 #2 already exists; no exclusion.}% \else% \ifcsname\@nameauth@CleanName{#1#2!NF!}\endcsname% \PackageWarning{nameauth}% {\bsc ExcludeName Reference: #1 #2 already exists; no exclusion.}% \else% \csgdef{\@nameauth@CleanName{#1#2!PN!}}{}% \fi% \fi% \fi}% {\IfValueTF{#3}% {\ifcsname\@nameauth@CleanName{#2#3!PN!}\endcsname\relax% \else% \ifcsname\@nameauth@CleanName{#2#3!MN!}\endcsname% \PackageWarning{nameauth}% {\bsc ExcludeName Reference: #2 #3 already exists; no exclusion.}% \else% \ifcsname\@nameauth@CleanName{#2#3!NF!}\endcsname% \PackageWarning{nameauth}% {\bsc ExcludeName Reference: #2 #3 already exists; no exclusion.}% \else% \csgdef{\@nameauth@CleanName{#2#3!PN!}}{}% \fi% \fi% \fi}% {\ifcsname\@nameauth@CleanName{#2!PN!}\endcsname\relax% \else% \ifcsname\@nameauth@CleanName{#2!MN!}\endcsname% \PackageWarning{nameauth}% {\bsc ExcludeName Reference: #2 already exists; no exclusion.}% \else% \ifcsname\@nameauth@CleanName{#2!NF!}\endcsname% \PackageWarning{nameauth}% {\bsc ExcludeName Reference: #2 already exists; no exclusion.}% \else% \csgdef{\@nameauth@CleanName{#2!PN!}}{}% \fi% \fi% \fi}% }% } \DeclareDocumentCommand\ForgetName{o m o}% {% \IfValueTF{#1}% {\csundef{\@nameauth@CleanName{#1#2!MN!}}% \csundef{\@nameauth@CleanName{#1#2!NF!}}}% {\IfValueTF{#3}% {\csundef{\@nameauth@CleanName{#2#3!MN!}}% \csundef{\@nameauth@CleanName{#2#3!NF!}}}% {\csundef{\@nameauth@CleanName{#2!MN!}}% \csundef{\@nameauth@CleanName{#2!NF!}}}% }% } \DeclareDocumentCommand\SubvertName{o m o}% {% \IfValueTF{#1}% {\csgdef{\@nameauth@CleanName{#1#2!MN!}}% \csgdef{\@nameauth@CleanName{#1#2!NF!}}}% {\IfValueTF{#3}% {\csgdef{\@nameauth@CleanName{#2#3!MN!}}% \csgdef{\@nameauth@CleanName{#2#3!NF!}}}% {\csgdef{\@nameauth@CleanName{#2!MN!}}% \csgdef{\@nameauth@CleanName{#2!NF!}}}% }% } \newcommand{\NamesInactive}{\@nameauth@DoFormatfalse} \newcommand{\NamesActive}{\@nameauth@DoFormattrue} \newcommand{\IndexInactive}{\@nameauth@DoIndexfalse} \newcommand{\IndexActive}{\@nameauth@DoIndextrue} \endinput %% %% End of file `nameauth.sty'.