greyshade

nameauth_mod.sty

Sep 11th, 2014
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. %%
  2. %% This is file `nameauth.sty',
  3. %% generated with the docstrip utility.
  4. %%
  5. %% The original source files were:
  6. %%
  7. %% nameauth.dtx  (with options: `package')
  8. %%
  9. %% This is a generated file.
  10. %%
  11. %% Copyright (C) 2011 by Charles P. Schaum <charles dot schaum at comcast dot net>
  12. %%
  13. %% This file may be distributed and/or modified under the conditions of
  14. %% the LaTeX Project Public License, either version 1.2 of this license
  15. %% or (at your option) any later version.  The latest version of this
  16. %% license is in:
  17. %%
  18. %%    http://www.latex-project.org/lppl.txt
  19. %%
  20. %% and version 1.2 or later is part of all distributions of LaTeX version
  21. %% 1999/12/01 or later.
  22. %%
  23. \NeedsTeXFormat{LaTeX2e}[2005/12/01]
  24. \ProvidesPackage{nameauth_mod}
  25.   [2013/09/19 v1.8 name authority macros to aid consistent display and indexing of names]
  26. \newif\if@nameauth@FullName
  27. \newif\if@nameauth@FirstName
  28. \newif\if@nameauth@AltAKA
  29. \newif\if@nameauth@DoFormat
  30. \newif\if@nameauth@DoIndex
  31. \newif\if@nameauth@AlwaysFormat
  32. \newif\if@nameauth@ShowComma
  33. \newif\if@nameauth@Comma
  34. \newif\if@nameauth@Punct
  35. \newif\if@nameauth@DoCaps
  36. \newif\if@nameauth@AllCaps
  37. \newif\if@nameauth@AllThis
  38. \newif\if@nameauth@SmallCaps
  39. \newif\if@nameauth@SmallThis
  40. \newif\if@nameauth@RevAll
  41. \newif\if@nameauth@RevThis
  42. \newif\if@nameauth@RevAllComma
  43. \newif\if@nameauth@RevThisComma
  44. \newcommand{\NamesFormat}{}
  45. \DeclareOption{mainmatter}{\@nameauth@DoFormattrue}
  46. \DeclareOption{frontmatter}{\@nameauth@DoFormatfalse}
  47. \DeclareOption{smallcaps}{\renewcommand{\NamesFormat}{\scshape}}
  48. \DeclareOption{italic}{\renewcommand{\NamesFormat}{\itshape}}
  49. \DeclareOption{boldface}{\renewcommand{\NamesFormat}{\bfseries}}
  50. \DeclareOption{noformat}{\renewcommand{\NamesFormat}{}}
  51. \DeclareOption{alwaysformat}{\@nameauth@AlwaysFormattrue}
  52. \DeclareOption{allcaps}{\@nameauth@AllCapstrue}
  53. \DeclareOption{namesmallcaps}{\@nameauth@SmallCapstrue}
  54. \DeclareOption{normalcaps}{\@nameauth@AllCapsfalse}
  55. \DeclareOption{allreversed}{\@nameauth@RevAlltrue\@nameauth@RevAllCommafalse}
  56. \DeclareOption{allrevcomma}{\@nameauth@RevAlltrue\@nameauth@RevAllCommatrue}
  57. \DeclareOption{notreversed}{\@nameauth@RevAllfalse\@nameauth@RevAllCommafalse}
  58. \DeclareOption{comma}{\protected@edef\Interspace{,\space}}
  59. \DeclareOption{nocomma}{\protected@edef\Interspace{\space}}
  60. \DeclareOption{index}{\@nameauth@DoIndextrue}
  61. \DeclareOption{noindex}{\@nameauth@DoIndexfalse}
  62. \ExecuteOptions{nocomma,mainmatter,index,normalcaps,notreversed,smallcaps}
  63. \ProcessOptions\relax
  64. \RequirePackage{etoolbox}
  65. \RequirePackage{trimspaces}
  66. \RequirePackage{suffix}
  67. \RequirePackage{xargs}
  68. \newcommand*{\@nameauth@CleanName}[1]%
  69. {%
  70.   \expandafter\zap@space\detokenize{#1} \@empty%
  71. }
  72. \newcommand*{\@nameauth@Root}[1]%
  73. {%
  74.   \@nameauth@TrimRoot#1,\@empty\relax%
  75. }
  76. \def\@nameauth@TrimRoot#1,#2\relax{#1}
  77. \newcommand*{\@nameauth@CapRoot}[1]%
  78. {%
  79.   \@nameauth@CR#1\relax%
  80. }
  81. \def\@nameauth@CR#1#2\relax{\uppercase{#1}\@nameauth@Root{#2}}
  82. \newcommand*{\@nameauth@AllCapRoot}[1]%
  83. {%
  84.   \uppercase{\@nameauth@Root{#1}}%
  85. }
  86. \newcommand*{\@nameauth@SmallCapRoot}[1]%
  87. {%
  88.   \textsc{\@nameauth@Root{#1}}%
  89. }
  90. \newcommand*{\@nameauth@Suffix}[1]%
  91. {%
  92.   \@nameauth@TrimSuffix#1\relax%
  93. }
  94. \def\@nameauth@TrimSuffix#1,#2\relax{\trim@spaces{#2}}
  95. \def\@nameauth@CheckDot{\futurelet\@token\@nameauth@EvalDot}
  96. \def\@nameauth@EvalDot%
  97. {%
  98.   \let\@period=.\ifx\@token\@period\expandafter\@gobble \fi%
  99. }
  100. \newcommand*{\@nameauth@TestDot}[1]%
  101. {%
  102.   \def\TestDot##1.\TestEnd##2\TestStop{\TestPunct{##2}}%
  103.   \def\TestPunct##1%
  104.     {\ifx\TestPunct##1\TestPunct\else\@nameauth@Puncttrue\fi}%
  105.   \@nameauth@Punctfalse%
  106.   \TestDot#1\TestEnd.\TestEnd\TestStop%
  107. }
  108. \newcommand{\@nameauth@FmtName}[1]%
  109. {%
  110.   \@nameauth@TestDot{#1}%
  111.   \if@nameauth@DoFormat%
  112.     \bgroup\NamesFormat{#1}\egroup%
  113.   \else%
  114.     #1%
  115.   \fi%
  116. }
  117. \WithSuffix\newcommand\@nameauth@FmtName*[1]%
  118. {%
  119.   \@nameauth@TestDot{#1}%
  120.   \if@nameauth@DoFormat%
  121.     \if@nameauth@AlwaysFormat%
  122.       \bgroup\NamesFormat{#1}\egroup%
  123.     \else%
  124.       #1%
  125.     \fi%
  126.   \else%
  127.     #1%
  128.   \fi%
  129. }
  130. \newcommandx\@nameauth@Index[2][2=\@empty]%
  131. {%
  132.   \ifx#2\@empty%
  133.     \if@nameauth@DoIndex\index{#1}\fi%
  134.   \else%
  135.     \ifcsname#2\endcsname%
  136.       \if@nameauth@DoIndex\index{#1\csname#2\endcsname}\fi%
  137.     \else%
  138.       \if@nameauth@DoIndex\index{#1}\fi%
  139.     \fi%
  140.   \fi%
  141. }
  142. \newcommand{\CapThis}%
  143. {%
  144.   \@nameauth@DoCapstrue%
  145. }
  146. \newcommand{\CapName}%
  147. {%
  148.   \@nameauth@AllThistrue%
  149. }
  150. \newcommand{\SCapName}%
  151. {%
  152.   \@nameauth@SmallThistrue%
  153. }
  154. \newcommand{\RevName}%
  155. {%
  156.   \@nameauth@RevThistrue%
  157. }
  158. \newcommand{\RevComma}%
  159. {%
  160.   \@nameauth@RevThistrue%
  161.   \@nameauth@RevThisCommatrue%
  162. }
  163. \newcommand{\ShowComma}%
  164. {%
  165.   \@nameauth@ShowCommatrue%
  166. }
  167. \newcommandx\Name[3][1=\@empty, 3=\@empty]%
  168. {%
  169.   \leavevmode\hbox{}%
  170.   \protected@edef\testi{#1}%
  171.   \protected@edef\testii{#2}%
  172.   \protected@edef\testiii{#3}%
  173.   \if@nameauth@AllCaps\CapName\fi%
  174.   \if@nameauth@SmallCaps\SCapName\fi%
  175.   \if@nameauth@RevAll\RevName\fi%
  176.   \if@nameauth@RevAllComma\RevComma\fi%
  177.   \if@nameauth@ShowComma%
  178.     \protected@edef\Space{,\space}%
  179.   \else%
  180.     \let\Space\Interspace%
  181.   \fi%
  182.   \protected@edef\RawShort{\@nameauth@Root{#2}}%
  183.   \protected@edef\CapShort{\@nameauth@CapRoot{#2}}%
  184.   \protected@edef\AllCapShort{\@nameauth@AllCapRoot{#2}}%
  185.   \protected@edef\SmallCapShort{\@nameauth@SmallCapRoot{#2}}%
  186.   \if@nameauth@SmallThis%
  187.     \protected@edef\RawShortIdx{\textsc{\RawShort}}%
  188.   \else%
  189.     \protected@edef\RawShortIdx{\RawShort}%
  190.   \fi%
  191.   \let\IndexShort\RawShortIdx%
  192.   \ifx\testii\RawShort%
  193.     \protected@edef\Suffix{\@empty}%
  194.     \let\IndexSurnames\RawShortIdx%
  195.     \let\Reversed\RawShort%
  196.     \let\Surnames\RawShort%
  197.     \let\PrintShort\RawShort%
  198.     \if@nameauth@DoCaps%
  199.       \let\Reversed\CapShort%
  200.       \let\Surnames\CapShort%
  201.       \let\PrintShort\CapShort%
  202.     \fi%
  203.     \if@nameauth@AllThis%
  204.       \let\Reversed\AllCapShort%
  205.       \let\Surnames\AllCapShort%
  206.       \let\PrintShort\AllCapShort%
  207.     \fi%
  208.     \if@nameauth@SmallThis%
  209.       \let\Reversed\SmallCapShort%
  210.       \let\Surnames\SmallCapShort%
  211.       \let\PrintShort\SmallCapShort%
  212.     \fi%
  213.   \else%
  214.     \protected@edef\Suffix{\@nameauth@Suffix{#2}}%
  215.     \protected@edef\IndexSurnames{\RawShortIdx\Space\Suffix}%
  216.     \protected@edef\Reversed{\Suffix\Space\RawShort}%
  217.     \protected@edef\Surnames{\RawShort\Space\Suffix}%
  218.     \if@nameauth@RevThis%
  219.       \let\PrintShort\Suffix%
  220.     \else%
  221.       \let\PrintShort\RawShort%
  222.     \fi%
  223.     \if@nameauth@DoCaps%
  224.       \protected@edef\Reversed{\Suffix\Space\CapShort}%
  225.       \protected@edef\Surnames{\CapShort\Space\Suffix}%
  226.       \if@nameauth@RevThis%
  227.         \let\PrintShort\Suffix%
  228.       \else%
  229.         \let\PrintShort\CapShort%
  230.       \fi%
  231.     \fi%
  232.     \if@nameauth@AllThis%
  233.       \protected@edef\Reversed{\Suffix\Space\AllCapShort}%
  234.       \protected@edef\Surnames{\AllCapShort\Space\Suffix}%
  235.       \if@nameauth@RevThis%
  236.         \let\PrintShort\Suffix%
  237.       \else%
  238.         \let\PrintShort\AllCapShort%
  239.       \fi%
  240.     \fi%
  241.     \if@nameauth@SmallThis%
  242.       \protected@edef\Reversed{\Suffix\Space\SmallCapShort}%
  243.       \protected@edef\Surnames{\SmallCapShort\Space\Suffix}%
  244.       \if@nameauth@RevThis%
  245.         \let\PrintShort\Suffix%
  246.       \else%
  247.         \let\PrintShort\SmallCapShort%
  248.       \fi%
  249.     \fi%
  250.   \fi%
  251.   \@nameauth@DoCapsfalse%
  252.   \@nameauth@AllThisfalse%
  253.   \@nameauth@SmallThisfalse%
  254.   \@nameauth@ShowCommafalse%
  255.   \ifx\testi\@empty%
  256.     \ifx\testiii\@empty%
  257.       \ifcsname\@nameauth@CleanName{#2!PN!}\endcsname%
  258.         \PackageWarning{nameauth}%
  259.         {macro \Name: Xref: #2 cannot be a page reference.}%
  260.       \else%
  261.         \@nameauth@Index{\IndexSurnames}[\@nameauth@CleanName{#2}]%
  262.       \fi%
  263.       \if@nameauth@DoFormat%
  264.           \ifcsname\@nameauth@CleanName{#2!MN!}\endcsname%
  265.             \if@nameauth@FirstName%
  266.               \@nameauth@FullNamefalse%
  267.               \@nameauth@FirstNamefalse%
  268.             \fi%
  269.             \if@nameauth@FullName%
  270.               \@nameauth@FullNamefalse%
  271.               \if@nameauth@RevThis%
  272.                 \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Reversed}%
  273.               \else%
  274.                 \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnames}%
  275.               \fi%
  276.             \else%
  277.               \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}%
  278.             \fi%
  279.           \else%
  280.             \@nameauth@FullNamefalse%
  281.             \@nameauth@FirstNamefalse%
  282.             \csgdef{\@nameauth@CleanName{#2!MN!}}{}%
  283.             \if@nameauth@RevThis%
  284.               \expandafter\@nameauth@FmtName\expandafter{\Reversed}%
  285.             \else%
  286.               \expandafter\@nameauth@FmtName\expandafter{\Surnames}%
  287.             \fi%
  288.           \fi%
  289.       \else%
  290.           \ifcsname\@nameauth@CleanName{#2!NF!}\endcsname%
  291.             \if@nameauth@FirstName%
  292.               \@nameauth@FullNamefalse%
  293.               \@nameauth@FirstNamefalse%
  294.             \fi%
  295.             \if@nameauth@FullName%
  296.               \@nameauth@FullNamefalse%
  297.               \if@nameauth@RevThis%
  298.                 \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Reversed}%
  299.               \else%
  300.                 \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnames}%
  301.               \fi%
  302.             \else%
  303.               \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}%
  304.             \fi%
  305.           \else%
  306.             \@nameauth@FullNamefalse%
  307.             \@nameauth@FirstNamefalse%
  308.             \csgdef{\@nameauth@CleanName{#2!NF!}}{}%
  309.             \if@nameauth@RevThis%
  310.               \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Reversed}%
  311.             \else%
  312.               \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnames}%
  313.             \fi%
  314.           \fi%
  315.       \fi%
  316.     \else%
  317.       \ifcsname\@nameauth@CleanName{#2#3!PN!}\endcsname%
  318.         \PackageWarning{nameauth}%
  319.         {macro \Name: Xref: #2 #3 cannot be a page reference.}%
  320.       \else%
  321.         \@nameauth@Index{\IndexSurnames\space#3}[\@nameauth@CleanName{#2#3}]%
  322.       \fi%
  323.       \if@nameauth@DoFormat%
  324.         \ifcsname\@nameauth@CleanName{#2#3!MN!}\endcsname%
  325.           \if@nameauth@FirstName%
  326.             \@nameauth@FullNamefalse%
  327.             \@nameauth@FirstNamefalse%
  328.           \fi%
  329.           \if@nameauth@FullName%
  330.             \@nameauth@FullNamefalse%
  331.             \if@nameauth@RevThis%
  332.               \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  333.                 \expandafter\testiii\expandafter\space\Surnames}%
  334.             \else%
  335.               \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  336.                 \expandafter\Surnames\expandafter\space#3}%
  337.             \fi%
  338.           \else%
  339.             \if@nameauth@RevThis%
  340.               \expandafter\@nameauth@FmtName\expandafter*\expandafter{\testiii}%
  341.             \else%
  342.               \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}%
  343.             \fi%
  344.           \fi%
  345.         \else%
  346.           \@nameauth@FullNamefalse%
  347.           \@nameauth@FirstNamefalse%
  348.           \csgdef{\@nameauth@CleanName{#2#3!MN!}}{}%
  349.           \if@nameauth@RevThis%
  350.             \expandafter\@nameauth@FmtName\expandafter{%
  351.               \expandafter\testiii\expandafter\space\Surnames}%
  352.           \else%
  353.             \expandafter\@nameauth@FmtName\expandafter{%
  354.               \expandafter\Surnames\expandafter\space#3}%
  355.           \fi%
  356.         \fi%
  357.       \else%
  358.         \ifcsname\@nameauth@CleanName{#2#3!NF!}\endcsname%
  359.           \if@nameauth@FirstName%
  360.             \@nameauth@FullNamefalse%
  361.             \@nameauth@FirstNamefalse%
  362.           \fi%
  363.           \if@nameauth@FullName%
  364.             \@nameauth@FullNamefalse%
  365.             \if@nameauth@RevThis%
  366.               \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  367.                 \expandafter\testiii\expandafter\space\Surnames}%
  368.             \else%
  369.               \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  370.                 \expandafter\Surnames\expandafter\space#3}%
  371.             \fi%
  372.           \else%
  373.             \if@nameauth@RevThis%
  374.               \expandafter\@nameauth@FmtName\expandafter*\expandafter{\testiii}%
  375.             \else%
  376.               \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}%
  377.             \fi%
  378.           \fi%
  379.         \else%
  380.           \@nameauth@FullNamefalse%
  381.           \@nameauth@FirstNamefalse%
  382.           \csgdef{\@nameauth@CleanName{#2#3!NF!}}{}%
  383.           \if@nameauth@RevThis%
  384.             \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  385.               \expandafter\testiii\expandafter\space\Surnames}%
  386.           \else%
  387.             \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  388.               \expandafter\Surnames\expandafter\space#3}%
  389.           \fi%
  390.         \fi%
  391.       \fi%
  392.     \fi%
  393.   \else%
  394.     \if@nameauth@RevThisComma%
  395.       \protected@edef\Space{,\space}%
  396.     \else%
  397.       \let\Space\Interspace%
  398.     \fi%
  399.     \ifx\testiii\@empty%
  400.       \protected@edef\Forenames{#1}%
  401.     \else%
  402.       \protected@edef\Forenames{#3}%
  403.     \fi
  404.     \ifcsname\@nameauth@CleanName{#1#2!PN!}\endcsname%
  405.       \PackageWarning{nameauth}%
  406.       {macro \Name: Xref: #1 #2 cannot be a page reference.}%
  407.     \else%
  408.       \ifx\Suffix\@empty%
  409.         \@nameauth@Index{\IndexShort, #1}[\@nameauth@CleanName{#1#2}]%
  410.       \else%
  411.         \@nameauth@Index{\IndexShort, #1, \Suffix}[\@nameauth@CleanName{#1#2}]%
  412.       \fi%
  413.     \fi%
  414.     \if@nameauth@DoFormat%
  415.       \ifcsname\@nameauth@CleanName{#1#2!MN!}\endcsname%
  416.         \if@nameauth@FirstName%
  417.           \@nameauth@FullNamefalse%
  418.           \@nameauth@FirstNamefalse%
  419.           \let\PrintShort\Forenames%
  420.         \fi%
  421.         \if@nameauth@FullName%
  422.           \@nameauth@FullNamefalse%
  423.           \if@nameauth@RevThis%
  424.             \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  425.               \expandafter\Surnames\expandafter\Space\Forenames}%
  426.           \else%
  427.             \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  428.               \expandafter\Forenames\expandafter\space\Surnames}%
  429.           \fi%
  430.         \else%
  431.           \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}%
  432.         \fi%
  433.       \else%
  434.         \@nameauth@FullNamefalse%
  435.         \@nameauth@FirstNamefalse%
  436.         \csgdef{\@nameauth@CleanName{#1#2!MN!}}{}%
  437.         \if@nameauth@RevThis%
  438.           \expandafter\@nameauth@FmtName\expandafter{%
  439.             \expandafter\Surnames\expandafter\Space\Forenames}%
  440.         \else%
  441.           \expandafter\@nameauth@FmtName\expandafter{%
  442.             \expandafter\Forenames\expandafter\space\Surnames}%
  443.         \fi%
  444.       \fi%
  445.     \else%
  446.       \ifcsname\@nameauth@CleanName{#1#2!NF!}\endcsname%
  447.         \if@nameauth@FirstName%
  448.           \@nameauth@FullNamefalse%
  449.           \@nameauth@FirstNamefalse%
  450.           \let\PrintShort\Forenames%
  451.         \fi%
  452.         \if@nameauth@FullName%
  453.           \@nameauth@FullNamefalse%
  454.           \if@nameauth@RevThis%
  455.             \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  456.               \expandafter\Surnames\expandafter\Space\Forenames}%
  457.           \else%
  458.             \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  459.               \expandafter\Forenames\expandafter\space\Surnames}%
  460.           \fi%
  461.         \else%
  462.           \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}%
  463.         \fi%
  464.       \else%
  465.         \@nameauth@FullNamefalse%
  466.         \@nameauth@FirstNamefalse%
  467.         \csgdef{\@nameauth@CleanName{#1#2!NF!}}{}%
  468.         \if@nameauth@RevThis%
  469.           \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  470.             \expandafter\Surnames\expandafter\Space\Forenames}%
  471.         \else%
  472.           \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  473.             \expandafter\Forenames\expandafter\space\Surnames}%
  474.         \fi%
  475.       \fi%
  476.     \fi%
  477.   \fi%
  478.   \@nameauth@RevThisfalse%
  479.   \@nameauth@RevThisCommafalse%
  480.   \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi%
  481. }
  482. \WithSuffix\newcommandx\Name*[3][1=\@empty, 3=\@empty]%
  483. {%
  484.   \@nameauth@FullNametrue%
  485.   \Name[#1]{#2}[#3]%
  486. }
  487. \newcommandx\FName[3][1=\@empty, 3=\@empty]%
  488. {%
  489.   \@nameauth@FirstNametrue%
  490.   \Name[#1]{#2}[#3]%
  491. }
  492. \WithSuffix\newcommandx\FName*[3][1=\@empty, 3=\@empty]%
  493. {%
  494.   \@nameauth@FirstNametrue%
  495.   \Name[#1]{#2}[#3]%
  496. }
  497. \newcommandx\AKA[5][1=\@empty, 3=\@empty, 5=\@empty]%
  498. {%
  499.   \leavevmode\hbox{}%
  500.   \protected@edef\testi{#1}%
  501.   \protected@edef\testii{#2}%
  502.   \protected@edef\testiii{#3}%
  503.   \protected@edef\testiv{#4}%
  504.   \protected@edef\testv{#5}%
  505.   \if@nameauth@AllCaps\CapName\fi%
  506.   \if@nameauth@SmallCaps\SCapName\fi%
  507.   \if@nameauth@RevAll\RevName\fi%
  508.   \if@nameauth@RevAll\RevComma\fi%
  509.   \if@nameauth@ShowComma%
  510.     \protected@edef\Space{,\space}%
  511.   \else%
  512.     \let\Space\Interspace%
  513.   \fi%
  514.   \protected@edef\Shortii{\@nameauth@Root{#2}}%
  515.   \protected@edef\Shortiv{\@nameauth@Root{#4}}%
  516.   \protected@edef\ShortivSmallCaps{\@nameauth@SmallCapRoot{#4}}%
  517.   \ifx\testii\Shortii%
  518.     \let\Surnamesii\Shortii%
  519.     \protected@edef\Suffixii{\@empty}%
  520.   \else%
  521.     \protected@edef\Suffixii{\@nameauth@Suffix{#2}}%
  522.     \protected@edef\Surnamesii{\Shortii\Space\Suffixii}%
  523.   \fi%
  524.   \ifx\testiv\Shortiv%
  525.     \protected@edef\Suffixiv{\@empty}%
  526.     \if@nameauth@SmallThis%
  527.       \let\Surnamesiv\ShortivSmallCaps%
  528.       \let\Reverseiv\ShortivSmallCaps%
  529.     \else%
  530.       \let\Surnamesiv\Shortiv%
  531.       \let\Reverseiv\Shortiv%
  532.     \fi%
  533.   \else%
  534.     \protected@edef\Suffixiv{\@nameauth@Suffix{#4}}%
  535.     \if@nameauth@SmallThis%
  536.       \protected@edef\Surnamesiv{\ShortivSmallCaps\Space\Suffixiv}%
  537.       \protected@edef\Reverseiv{\Suffixiv\Space\ShortivSmallCaps}%
  538.     \else%
  539.       \protected@edef\Surnamesiv{\Shortiv\Space\Suffixiv}%
  540.       \protected@edef\Reverseiv{\Suffixiv\Space\Shortiv}%
  541.     \fi%
  542.   \fi%
  543.   \@nameauth@ShowCommafalse%
  544.   \@nameauth@AllThisfalse%
  545.   \ifx\testiii\@empty%
  546.     \ifx\testv\@empty%
  547.       \ifcsname\@nameauth@CleanName{#4!PN!}\endcsname%
  548.         \PackageWarning{nameauth}%
  549.         {macro \AKA: XRef: #4 exists.}%
  550.       \else%
  551.         \ifcsname\@nameauth@CleanName{#4!MN!}\endcsname%
  552.           \PackageWarning{nameauth}%
  553.           {macro \AKA: Name reference: #4 already exists; no see ref.}%
  554.         \else%
  555.           \ifcsname\@nameauth@CleanName{#4#5!NF!}\endcsname%
  556.             \PackageWarning{nameauth}%
  557.             {macro \AKA: Name reference: #4 already exists; no see ref.}%
  558.           \else%
  559.             \csgdef{\@nameauth@CleanName{#4!PN!}}{}%
  560.             \ifx\testi\@empty%
  561.               \@nameauth@Index{\Surnamesiv|see{\Surnamesii}}%
  562.             \else%
  563.               \ifx\Suffixii\@empty \@nameauth@Index{\Surnamesiv|see{\Surnamesii, #1}}%
  564.               \else \@nameauth@Index{\Surnamesiv|see{\Shortii, #1, \Suffixii}}\fi%
  565.             \fi%
  566.           \fi%
  567.         \fi%
  568.       \fi%
  569.       \@nameauth@AltAKAfalse%
  570.       \if@nameauth@RevThisComma%
  571.         \protected@edef\Space{,\space}%
  572.       \else%
  573.         \let\Space\Interspace%
  574.       \fi%
  575.       \if@nameauth@RevThis%
  576.         \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Reverseiv}%
  577.       \else%
  578.         \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnamesiv}%
  579.       \fi%
  580.     \else%
  581.       \ifcsname\@nameauth@CleanName{#4#5!PN!}\endcsname%
  582.         \PackageWarning{nameauth}%
  583.         {macro \AKA: XRef: #4 #5 exists.}%
  584.       \else%
  585.         \ifcsname\@nameauth@CleanName{#4#5!MN!}\endcsname%
  586.           \PackageWarning{nameauth}%
  587.           {macro \AKA: Name reference: #4 #5 already exists; no see ref.}%
  588.         \else%
  589.           \ifcsname\@nameauth@CleanName{#4#5!NF!}\endcsname%
  590.             \PackageWarning{nameauth}%
  591.             {macro \AKA: Name reference: #4 #5 already exists; no see ref.}%
  592.           \else%
  593.             \csgdef{\@nameauth@CleanName{#4#5!PN!}}{}%
  594.             \ifx\testi\@empty%
  595.               \@nameauth@Index{\Surnamesiv\space#5|see{\Surnamesii}}%
  596.             \else%
  597.               \ifx\Suffixii\@empty \@nameauth@Index{\Surnamesiv\space#5|see{\Surnamesii, #1}}%
  598.               \else \@nameauth@Index{\Surnamesiv\space#5|see{\Shortii, #1, \Suffixii}}\fi%
  599.             \fi%
  600.           \fi%
  601.         \fi%
  602.       \fi%
  603.       \if@nameauth@RevThisComma%
  604.         \protected@edef\Space{,\space}%
  605.       \else%
  606.         \let\Space\Interspace%
  607.       \fi%
  608.       \if@nameauth@AltAKA%
  609.         \@nameauth@AltAKAfalse%
  610.         \if@nameauth@RevThis%
  611.         \else%
  612.           \expandafter\@nameauth@FmtName\expandafter*\expandafter{\testv}%
  613.         \fi%
  614.       \else%
  615.         \@nameauth@AltAKAfalse%
  616.         \if@nameauth@RevThis%
  617.           \expandafter\@nameauth@FmtName\expandafter*\expandafter{\expandafter\testv\expandafter\Space\Surnamesiv}%
  618.         \else%
  619.           \expandafter\@nameauth@FmtName\expandafter*\expandafter{\expandafter\Surnamesiv\expandafter\space\testv}%
  620.         \fi%
  621.       \fi%
  622.     \fi%
  623.   \else%
  624.     \ifcsname\@nameauth@CleanName{#3#4!PN!}\endcsname%
  625.       \PackageWarning{nameauth}%
  626.       {macro \AKA: XRef: #3 #4 exists.}%
  627.     \else%
  628.       \ifcsname\@nameauth@CleanName{#3#4!MN!}\endcsname%
  629.         \PackageWarning{nameauth}%
  630.         {macro \AKA: Name reference: #3 #4 already exists; no see ref.}%
  631.       \else%
  632.         \ifcsname\@nameauth@CleanName{#3#4!NF!}\endcsname%
  633.           \PackageWarning{nameauth}%
  634.           {macro \AKA: Name reference: #3 #4 already exists; no see ref.}%
  635.         \else%
  636.           \csgdef{\@nameauth@CleanName{#3#4!PN!}}{}%
  637.           \ifx\testi\@empty%
  638.             \ifx\Suffixiv\@empty \@nameauth@Index{\Surnamesiv, #3|see{\Surnamesii}}%
  639.             \else \@nameauth@Index{\Shortiv, #3, \Suffixiv|see{\Surnamesii}}\fi%
  640.           \else%
  641.             \ifx\Suffixii\@empty%
  642.               \ifx\Suffixiv\@empty%
  643.                 \@nameauth@Index{\Surnamesiv, #3|see{\Surnamesii, #1}}%
  644.               \else%
  645.                 \@nameauth@Index{\Shortiv, #3, \Suffixiv|see{\Surnamesii, #1}}%
  646.               \fi%
  647.             \else%
  648.               \ifx\Suffixiv\@empty%
  649.                 \@nameauth@Index{\Surnamesiv, #3|see{\Shortii, #1, \Suffixii}}%
  650.               \else%
  651.                 \@nameauth@Index{\Shortiv, #3, \Suffixiv|see{\Shortii, #1, \Suffixii}}%
  652.               \fi%
  653.             \fi%
  654.           \fi%
  655.         \fi%
  656.       \fi%
  657.     \fi%
  658.     \@nameauth@AltAKAfalse%
  659.     \if@nameauth@RevThisComma%
  660.       \protected@edef\Space{,\space}%
  661.     \else%
  662.       \let\Space\Interspace%
  663.     \fi%
  664.     \ifx\testv\@empty%
  665.       \protected@edef\Forenames{#3}%
  666.     \else%
  667.       \protected@edef\Forenames{#5}%
  668.     \fi%
  669.     \if@nameauth@RevThis%
  670.       \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  671.         \expandafter\Surnamesiv\expandafter\Space\Forenames}%
  672.     \else%
  673.       \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  674.         \expandafter\Forenames\expandafter\space\Surnamesiv}%
  675.     \fi%
  676.   \fi%
  677.   \@nameauth@RevThisfalse%
  678.   \@nameauth@RevThisCommafalse%
  679.   \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi%
  680. }
  681. \WithSuffix\newcommandx\AKA*[5][1=\@empty,3=\@empty,5=\@empty]%
  682. {%
  683.   \@nameauth@AltAKAtrue%
  684.   \AKA[#1]{#2}[#3]{#4}[#5]%
  685. }
  686. \newcommandx\PName[5][1=\@empty,3=\@empty,5=\@empty]%
  687. {%
  688.   \Name[#1]{#2}\space(\AKA[#1]{#2}[#3]{#4}[#5])%
  689. }
  690. \WithSuffix\newcommandx\PName*[5][1=\@empty,3=\@empty,5=\@empty]%
  691. {%
  692.   \Name*[#1]{#2}\space(\AKA[#1]{#2}[#3]{#4}[#5])%
  693. }
  694. \newcommandx\TagName[4][1=\@empty, 3=\@empty]%
  695. {%
  696.   \protected@edef\testi{#1}%
  697.   \protected@edef\testiii{#3}%
  698.   \ifx\testi\@empty%
  699.     \ifx\testiii\@empty%
  700.       \ifcsname\@nameauth@CleanName{#2!PN!}\endcsname%
  701.         \PackageWarning{nameauth}%
  702.         {macro \textbackslash TagName Cannot tag xref: #2.}%
  703.       \else%
  704.         \csgdef{\@nameauth@CleanName{#2}}{#4}%
  705.       \fi%
  706.     \else%
  707.       \ifcsname\@nameauth@CleanName{#2#3!PN!}\endcsname%
  708.         \PackageWarning{nameauth}%
  709.         {macro \textbackslash TagName Cannot tag xref: #2 #3.}%
  710.       \else%
  711.         \csgdef{\@nameauth@CleanName{#2#3}}{#4}%
  712.       \fi%
  713.     \fi%
  714.   \else%
  715.       \ifcsname\@nameauth@CleanName{#1#2!PN!}\endcsname%
  716.         \PackageWarning{nameauth}%
  717.         {macro \textbackslash TagName Cannot tag xref: #1 #2.}%
  718.       \else%
  719.         \csgdef{\@nameauth@CleanName{#1#2}}{#4}%
  720.       \fi%
  721.   \fi%
  722. }
  723. \newcommandx\UntagName[3][1=\@empty, 3=\@empty]%
  724. {%
  725.   \protected@edef\testi{#1}%
  726.   \protected@edef\testiii{#3}%
  727.   \ifx\testi\@empty%
  728.     \ifx\testiii\@empty%
  729.       \csundef{\@nameauth@CleanName{#2}}%
  730.     \else%
  731.       \csundef{\@nameauth@CleanName{#2#3}}%
  732.     \fi%
  733.   \else%
  734.       \csundef{\@nameauth@CleanName{#1#2}}%
  735.   \fi%
  736. }
  737. \newcommandx\IndexName[3][1=\@empty, 3=\@empty]%
  738. {%
  739.   \protected@edef\testi{#1}%
  740.   \protected@edef\testii{#2}%
  741.   \protected@edef\testiii{#3}%
  742.   \if@nameauth@ShowComma%
  743.     \protected@edef\Space{,\space}%
  744.   \else%
  745.     \let\Space\Interspace%
  746.   \fi%
  747.   \protected@edef\Short{\@nameauth@Root{#2}}%
  748.   \ifx\testii\Short%
  749.     \let\Surnames\Short%
  750.     \protected@edef\Suffix{\@empty}%
  751.   \else%
  752.     \protected@edef\Suffix{\@nameauth@Suffix{#2}}%
  753.     \protected@edef\Surnames{\Short\Space\Suffix}%
  754.   \fi%
  755.   \@nameauth@ShowCommafalse%
  756.   \ifx\testi\@empty%
  757.     \ifx\testiii\@empty%
  758.       \ifcsname\@nameauth@CleanName{#2!PN!}\endcsname%
  759.         \PackageWarning{nameauth}%
  760.         {macro \IndexName: XRef: #2 exists.}%
  761.       \else%
  762.         \@nameauth@Index{\Surnames}[\@nameauth@CleanName{#2}]%
  763.       \fi%
  764.     \else%
  765.       \ifcsname\@nameauth@CleanName{#2#3!PN!}\endcsname%
  766.         \PackageWarning{nameauth}%
  767.         {macro \IndexName: XRef: #2 #3 exists.}%
  768.       \else%
  769.         \@nameauth@Index{\Surnames\space#3}[\@nameauth@CleanName{#2#3}]%
  770.       \fi%
  771.     \fi%
  772.   \else%
  773.       \ifcsname\@nameauth@CleanName{#1#2!PN!}\endcsname%
  774.         \PackageWarning{nameauth}%
  775.         {macro \IndexName: XRef: #1 #2 exists.}%
  776.       \else%
  777.         \ifx\Suffix\@empty \@nameauth@Index{\Short, #1}[\@nameauth@CleanName{#1#2}]%
  778.         \else \@nameauth@Index{\Short, #1, \Suffix}[\@nameauth@CleanName{#1#2}]\fi%
  779.       \fi%
  780.   \fi%
  781. }
  782. \newcommandx\ExcludeName[3][1=\@empty, 3=\@empty]%
  783. {%
  784.   \protected@edef\testi{#1}%
  785.   \protected@edef\testiii{#3}%
  786.   \ifx\testi\@empty%
  787.     \ifx\testiii\@empty%
  788.       \ifcsname\@nameauth@CleanName{#2!PN!}\endcsname\relax%
  789.       \else%
  790.         \ifcsname\@nameauth@CleanName{#2!MN!}\endcsname%
  791.           \PackageWarning{nameauth}%
  792.           {macro \ExcludeName: Reference: #2 already exists; no exclusion.}%
  793.         \else%
  794.           \ifcsname\@nameauth@CleanName{#2!NF!}\endcsname%
  795.             \PackageWarning{nameauth}%
  796.             {macro \ExcludeName: Reference: #2 already exists; no exclusion.}%
  797.           \else%
  798.             \csgdef{\@nameauth@CleanName{#2!PN!}}{}%
  799.           \fi%
  800.         \fi%
  801.       \fi%
  802.     \else%
  803.       \ifcsname\@nameauth@CleanName{#2#3!PN!}\endcsname\relax%
  804.       \else%
  805.         \ifcsname\@nameauth@CleanName{#2#3!MN!}\endcsname%
  806.           \PackageWarning{nameauth}%
  807.           {macro \ExcludeName: Reference: #2 #3 already exists; no exclusion.}%
  808.         \else%
  809.           \ifcsname\@nameauth@CleanName{#2#3!NF!}\endcsname%
  810.             \PackageWarning{nameauth}%
  811.             {macro \ExcludeName: Reference: #2 #3 already exists; no exclusion.}%
  812.           \else%
  813.             \csgdef{\@nameauth@CleanName{#2#3!PN!}}{}%
  814.           \fi%
  815.         \fi%
  816.       \fi%
  817.     \fi%
  818.   \else%
  819.     \ifcsname\@nameauth@CleanName{#1#2!PN!}\endcsname%
  820.       \PackageWarning{nameauth}%
  821.       {macro \ExcludeName: XRef: #1 #2 exists.}%
  822.     \else%
  823.       \ifcsname\@nameauth@CleanName{#1#2!MN!}\endcsname%
  824.         \PackageWarning{nameauth}%
  825.         {macro \ExcludeName: Reference: #1 #2 already exists; no exclusion.}%
  826.       \else%
  827.         \ifcsname\@nameauth@CleanName{#1#2!NF!}\endcsname%
  828.           \PackageWarning{nameauth}%
  829.           {macro \ExcludeName: Reference: #1 #2 already exists; no exclusion.}%
  830.         \else%
  831.           \csgdef{\@nameauth@CleanName{#1#2!PN!}}{}%
  832.         \fi%
  833.       \fi%
  834.     \fi%
  835.   \fi%
  836. }
  837. \newcommandx\ForgetName[3][1=\@empty, 3=\@empty]%
  838. {%
  839.   \protected@edef\testi{#1}%
  840.   \protected@edef\testiii{#3}%
  841.   \ifx\testi\@empty%
  842.     \ifx\testiii\@empty%
  843.       \csundef{\@nameauth@CleanName{#2!MN!}}%
  844.       \csundef{\@nameauth@CleanName{#2!NF!}}%
  845.     \else%
  846.       \csundef{\@nameauth@CleanName{#2#3!MN!}}%
  847.       \csundef{\@nameauth@CleanName{#2#3!NF!}}%
  848.     \fi%
  849.   \else%
  850.       \csundef{\@nameauth@CleanName{#1#2!MN!}}%
  851.       \csundef{\@nameauth@CleanName{#1#2!NF!}}%
  852.   \fi%
  853. }
  854. \newcommandx\SubvertName[3][1=\@empty, 3=\@empty]%
  855. {%
  856.   \protected@edef\testi{#1}%
  857.   \protected@edef\testiii{#3}%
  858.   \ifx\testi\@empty%
  859.     \ifx\testiii\@empty%
  860.       \csgdef{\@nameauth@CleanName{#2!MN!}}{}%
  861.       \csgdef{\@nameauth@CleanName{#2!NF!}}{}%
  862.     \else%
  863.       \csgdef{\@nameauth@CleanName{#2#3!MN!}}{}%
  864.       \csgdef{\@nameauth@CleanName{#2#3!NF!}}{}%
  865.     \fi%
  866.   \else%
  867.       \csgdef{\@nameauth@CleanName{#1#2!MN!}}{}%
  868.       \csgdef{\@nameauth@CleanName{#1#2!NF!}}{}%
  869.   \fi%
  870. }
  871. \newcommand{\NamesInactive}{\@nameauth@DoFormatfalse}
  872. \newcommand{\NamesActive}{\@nameauth@DoFormattrue}
  873. \newcommand{\AllCapsInactive}{\@nameauth@AllCapsfalse}
  874. \newcommand{\AllCapsActive}{\@nameauth@AllCapstrue}
  875. \newcommand{\ReverseInactive}{\@nameauth@RevAllfalse}
  876. \newcommand{\ReverseActive}{\@nameauth@RevAlltrue}
  877. \newcommand{\ReverseCommaInactive}{\@nameauth@RevAllfalse\@nameauth@RevAllCommafalse}
  878. \newcommand{\ReverseCommaActive}{\@nameauth@RevAlltrue\@nameauth@RevAllCommatrue}
  879. \newcommand{\IndexInactive}{\@nameauth@DoIndexfalse}
  880. \newcommand{\IndexActive}{\@nameauth@DoIndextrue}
  881. \newenvironment{nameauth}{%
  882.   \begingroup%
  883.   \csdef{<}##1&##2&##3&##4>{%
  884.     \protected@edef\arga{\trim@spaces{##1}}%
  885.     \protected@edef\argb{\trim@spaces{##2}}%
  886.     \protected@edef\argc{\trim@spaces{##3}}%
  887.     \protected@edef\argd{\trim@spaces{##4}}%
  888.     \ifx\arga\@empty
  889.         \PackageError{nameauth}%
  890.         {environment nameauth: Control sequence missing.}%
  891.     \else
  892.       \ifx\argc\@empty
  893.         \PackageError{nameauth}%
  894.         {environment nameauth: Essential name missing.}%
  895.       \else
  896.         \ifx\argd\@empty
  897.           \ifx\argb\@empty
  898.             \csxdef{\arga}{\Name{\argc}}%
  899.             \csxdef{L\arga}{\Name*{\argc}}%
  900.             \csxdef{S\arga}{\FName{\argc}}%
  901.           \else
  902.             \csxdef{\arga}{\Name[\argb]{\argc}}%
  903.             \csxdef{L\arga}{\Name*[\argb]{\argc}}%
  904.             \csxdef{S\arga}{\FName[\argb]{\argc}}%
  905.           \fi
  906.         \else
  907.           \ifx\argb\@empty
  908.             \csxdef{\arga}{\Name{\argc}[\argd]}%
  909.             \csxdef{L\arga}{\Name*{\argc}[\argd]}%
  910.             \csxdef{S\arga}{\FName{\argc}[\argd]}%
  911.           \else
  912.             \csxdef{\arga}{\Name[\argb]{\argc}[\argd]}%
  913.             \csxdef{L\arga}{\Name*[\argb]{\argc}[\argd]}%
  914.             \csxdef{S\arga}{\FName[\argb]{\argc}[\argd]}%
  915.           \fi
  916.         \fi
  917.       \fi
  918.     \fi
  919.     \ignorespaces%
  920.   }%
  921. }{\endgroup}
  922. \endinput
  923. %%
  924. %% End of file `nameauth.sty'.
Advertisement
Add Comment
Please, Sign In to add comment