greyshade

nameauth_mod.sty

Aug 9th, 2014
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Latex 30.18 KB | None | 0 0
  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@RevAll\RevName\fi%
  507.   \if@nameauth@RevAll\RevComma\fi%
  508.   \if@nameauth@ShowComma%
  509.     \protected@edef\Space{,\space}%
  510.   \else%
  511.     \let\Space\Interspace%
  512.   \fi%
  513.   \protected@edef\Shortii{\@nameauth@Root{#2}}%
  514.   \protected@edef\Shortiv{\@nameauth@Root{#4}}%
  515.   \ifx\testii\Shortii%
  516.     \let\Surnamesii\Shortii%
  517.     \protected@edef\Suffixii{\@empty}%
  518.   \else%
  519.     \protected@edef\Suffixii{\@nameauth@Suffix{#2}}%
  520.     \protected@edef\Surnamesii{\Shortii\Space\Suffixii}%
  521.   \fi%
  522.   \ifx\testiv\Shortiv%
  523.     \protected@edef\Suffixiv{\@empty}%
  524.     \let\Surnamesiv\Shortiv%
  525.     \let\Reverseiv\Shortiv%
  526.   \else%
  527.     \protected@edef\Suffixiv{\@nameauth@Suffix{#4}}%
  528.     \protected@edef\Surnamesiv{\Shortiv\Space\Suffixiv}%
  529.     \protected@edef\Reverseiv{\Suffixiv\Space\Shortiv}%
  530.   \fi%
  531.   \@nameauth@ShowCommafalse%
  532.   \@nameauth@AllThisfalse%
  533.   \ifx\testiii\@empty%
  534.     \ifx\testv\@empty%
  535.       \ifcsname\@nameauth@CleanName{#4!PN!}\endcsname%
  536.         \PackageWarning{nameauth}%
  537.         {macro \AKA: XRef: #4 exists.}%
  538.       \else%
  539.         \ifcsname\@nameauth@CleanName{#4!MN!}\endcsname%
  540.           \PackageWarning{nameauth}%
  541.           {macro \AKA: Name reference: #4 already exists; no see ref.}%
  542.         \else%
  543.           \ifcsname\@nameauth@CleanName{#4#5!NF!}\endcsname%
  544.             \PackageWarning{nameauth}%
  545.             {macro \AKA: Name reference: #4 already exists; no see ref.}%
  546.           \else%
  547.             \csgdef{\@nameauth@CleanName{#4!PN!}}{}%
  548.             \ifx\testi\@empty%
  549.               \@nameauth@Index{\Surnamesiv|see{\Surnamesii}}%
  550.             \else%
  551.               \ifx\Suffixii\@empty \@nameauth@Index{\Surnamesiv|see{\Surnamesii, #1}}%
  552.               \else \@nameauth@Index{\Surnamesiv|see{\Shortii, #1, \Suffixii}}\fi%
  553.             \fi%
  554.           \fi%
  555.         \fi%
  556.       \fi%
  557.       \@nameauth@AltAKAfalse%
  558.       \if@nameauth@RevThisComma%
  559.         \protected@edef\Space{,\space}%
  560.       \else%
  561.         \let\Space\Interspace%
  562.       \fi%
  563.       \if@nameauth@RevThis%
  564.         \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Reverseiv}%
  565.       \else%
  566.         \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnamesiv}%
  567.       \fi%
  568.     \else%
  569.       \ifcsname\@nameauth@CleanName{#4#5!PN!}\endcsname%
  570.         \PackageWarning{nameauth}%
  571.         {macro \AKA: XRef: #4 #5 exists.}%
  572.       \else%
  573.         \ifcsname\@nameauth@CleanName{#4#5!MN!}\endcsname%
  574.           \PackageWarning{nameauth}%
  575.           {macro \AKA: Name reference: #4 #5 already exists; no see ref.}%
  576.         \else%
  577.           \ifcsname\@nameauth@CleanName{#4#5!NF!}\endcsname%
  578.             \PackageWarning{nameauth}%
  579.             {macro \AKA: Name reference: #4 #5 already exists; no see ref.}%
  580.           \else%
  581.             \csgdef{\@nameauth@CleanName{#4#5!PN!}}{}%
  582.             \ifx\testi\@empty%
  583.               \@nameauth@Index{\Surnamesiv\space#5|see{\Surnamesii}}%
  584.             \else%
  585.               \ifx\Suffixii\@empty \@nameauth@Index{\Surnamesiv\space#5|see{\Surnamesii, #1}}%
  586.               \else \@nameauth@Index{\Surnamesiv\space#5|see{\Shortii, #1, \Suffixii}}\fi%
  587.             \fi%
  588.           \fi%
  589.         \fi%
  590.       \fi%
  591.       \if@nameauth@RevThisComma%
  592.         \protected@edef\Space{,\space}%
  593.       \else%
  594.         \let\Space\Interspace%
  595.       \fi%
  596.       \if@nameauth@AltAKA%
  597.         \@nameauth@AltAKAfalse%
  598.         \if@nameauth@RevThis%
  599.         \else%
  600.           \expandafter\@nameauth@FmtName\expandafter*\expandafter{\testv}%
  601.         \fi%
  602.       \else%
  603.         \@nameauth@AltAKAfalse%
  604.         \if@nameauth@RevThis%
  605.           \expandafter\@nameauth@FmtName\expandafter*\expandafter{\expandafter\testv\expandafter\Space\Surnamesiv}%
  606.         \else%
  607.           \expandafter\@nameauth@FmtName\expandafter*\expandafter{\expandafter\Surnamesiv\expandafter\space\testv}%
  608.         \fi%
  609.       \fi%
  610.     \fi%
  611.   \else%
  612.     \ifcsname\@nameauth@CleanName{#3#4!PN!}\endcsname%
  613.       \PackageWarning{nameauth}%
  614.       {macro \AKA: XRef: #3 #4 exists.}%
  615.     \else%
  616.       \ifcsname\@nameauth@CleanName{#3#4!MN!}\endcsname%
  617.         \PackageWarning{nameauth}%
  618.         {macro \AKA: Name reference: #3 #4 already exists; no see ref.}%
  619.       \else%
  620.         \ifcsname\@nameauth@CleanName{#3#4!NF!}\endcsname%
  621.           \PackageWarning{nameauth}%
  622.           {macro \AKA: Name reference: #3 #4 already exists; no see ref.}%
  623.         \else%
  624.           \csgdef{\@nameauth@CleanName{#3#4!PN!}}{}%
  625.           \ifx\testi\@empty%
  626.             \ifx\Suffixiv\@empty \@nameauth@Index{\Surnamesiv, #3|see{\Surnamesii}}%
  627.             \else \@nameauth@Index{\Shortiv, #3, \Suffixiv|see{\Surnamesii}}\fi%
  628.           \else%
  629.             \ifx\Suffixii\@empty%
  630.               \ifx\Suffixiv\@empty%
  631.                 \@nameauth@Index{\Surnamesiv, #3|see{\Surnamesii, #1}}%
  632.               \else%
  633.                 \@nameauth@Index{\Shortiv, #3, \Suffixiv|see{\Surnamesii, #1}}%
  634.               \fi%
  635.             \else%
  636.               \ifx\Suffixiv\@empty%
  637.                 \@nameauth@Index{\Surnamesiv, #3|see{\Shortii, #1, \Suffixii}}%
  638.               \else%
  639.                 \@nameauth@Index{\Shortiv, #3, \Suffixiv|see{\Shortii, #1, \Suffixii}}%
  640.               \fi%
  641.             \fi%
  642.           \fi%
  643.         \fi%
  644.       \fi%
  645.     \fi%
  646.     \@nameauth@AltAKAfalse%
  647.     \if@nameauth@RevThisComma%
  648.       \protected@edef\Space{,\space}%
  649.     \else%
  650.       \let\Space\Interspace%
  651.     \fi%
  652.     \ifx\testv\@empty%
  653.       \protected@edef\Forenames{#3}%
  654.     \else%
  655.       \protected@edef\Forenames{#5}%
  656.     \fi%
  657.     \if@nameauth@RevThis%
  658.       \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  659.         \expandafter\Surnamesiv\expandafter\Space\Forenames}%
  660.     \else%
  661.       \expandafter\@nameauth@FmtName\expandafter*\expandafter{%
  662.         \expandafter\Forenames\expandafter\space\Surnamesiv}%
  663.     \fi%
  664.   \fi%
  665.   \@nameauth@RevThisfalse%
  666.   \@nameauth@RevThisCommafalse%
  667.   \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi%
  668. }
  669. \WithSuffix\newcommandx\AKA*[5][1=\@empty,3=\@empty,5=\@empty]%
  670. {%
  671.   \@nameauth@AltAKAtrue%
  672.   \AKA[#1]{#2}[#3]{#4}[#5]%
  673. }
  674. \newcommandx\PName[5][1=\@empty,3=\@empty,5=\@empty]%
  675. {%
  676.   \Name[#1]{#2}\space(\AKA[#1]{#2}[#3]{#4}[#5])%
  677. }
  678. \WithSuffix\newcommandx\PName*[5][1=\@empty,3=\@empty,5=\@empty]%
  679. {%
  680.   \Name*[#1]{#2}\space(\AKA[#1]{#2}[#3]{#4}[#5])%
  681. }
  682. \newcommandx\TagName[4][1=\@empty, 3=\@empty]%
  683. {%
  684.   \protected@edef\testi{#1}%
  685.   \protected@edef\testiii{#3}%
  686.   \ifx\testi\@empty%
  687.     \ifx\testiii\@empty%
  688.       \ifcsname\@nameauth@CleanName{#2!PN!}\endcsname%
  689.         \PackageWarning{nameauth}%
  690.         {macro \textbackslash TagName Cannot tag xref: #2.}%
  691.       \else%
  692.         \csgdef{\@nameauth@CleanName{#2}}{#4}%
  693.       \fi%
  694.     \else%
  695.       \ifcsname\@nameauth@CleanName{#2#3!PN!}\endcsname%
  696.         \PackageWarning{nameauth}%
  697.         {macro \textbackslash TagName Cannot tag xref: #2 #3.}%
  698.       \else%
  699.         \csgdef{\@nameauth@CleanName{#2#3}}{#4}%
  700.       \fi%
  701.     \fi%
  702.   \else%
  703.       \ifcsname\@nameauth@CleanName{#1#2!PN!}\endcsname%
  704.         \PackageWarning{nameauth}%
  705.         {macro \textbackslash TagName Cannot tag xref: #1 #2.}%
  706.       \else%
  707.         \csgdef{\@nameauth@CleanName{#1#2}}{#4}%
  708.       \fi%
  709.   \fi%
  710. }
  711. \newcommandx\UntagName[3][1=\@empty, 3=\@empty]%
  712. {%
  713.   \protected@edef\testi{#1}%
  714.   \protected@edef\testiii{#3}%
  715.   \ifx\testi\@empty%
  716.     \ifx\testiii\@empty%
  717.       \csundef{\@nameauth@CleanName{#2}}%
  718.     \else%
  719.       \csundef{\@nameauth@CleanName{#2#3}}%
  720.     \fi%
  721.   \else%
  722.       \csundef{\@nameauth@CleanName{#1#2}}%
  723.   \fi%
  724. }
  725. \newcommandx\IndexName[3][1=\@empty, 3=\@empty]%
  726. {%
  727.   \protected@edef\testi{#1}%
  728.   \protected@edef\testii{#2}%
  729.   \protected@edef\testiii{#3}%
  730.   \if@nameauth@ShowComma%
  731.     \protected@edef\Space{,\space}%
  732.   \else%
  733.     \let\Space\Interspace%
  734.   \fi%
  735.   \protected@edef\Short{\@nameauth@Root{#2}}%
  736.   \ifx\testii\Short%
  737.     \let\Surnames\Short%
  738.     \protected@edef\Suffix{\@empty}%
  739.   \else%
  740.     \protected@edef\Suffix{\@nameauth@Suffix{#2}}%
  741.     \protected@edef\Surnames{\Short\Space\Suffix}%
  742.   \fi%
  743.   \@nameauth@ShowCommafalse%
  744.   \ifx\testi\@empty%
  745.     \ifx\testiii\@empty%
  746.       \ifcsname\@nameauth@CleanName{#2!PN!}\endcsname%
  747.         \PackageWarning{nameauth}%
  748.         {macro \IndexName: XRef: #2 exists.}%
  749.       \else%
  750.         \@nameauth@Index{\Surnames}[\@nameauth@CleanName{#2}]%
  751.       \fi%
  752.     \else%
  753.       \ifcsname\@nameauth@CleanName{#2#3!PN!}\endcsname%
  754.         \PackageWarning{nameauth}%
  755.         {macro \IndexName: XRef: #2 #3 exists.}%
  756.       \else%
  757.         \@nameauth@Index{\Surnames\space#3}[\@nameauth@CleanName{#2#3}]%
  758.       \fi%
  759.     \fi%
  760.   \else%
  761.       \ifcsname\@nameauth@CleanName{#1#2!PN!}\endcsname%
  762.         \PackageWarning{nameauth}%
  763.         {macro \IndexName: XRef: #1 #2 exists.}%
  764.       \else%
  765.         \ifx\Suffix\@empty \@nameauth@Index{\Short, #1}[\@nameauth@CleanName{#1#2}]%
  766.         \else \@nameauth@Index{\Short, #1, \Suffix}[\@nameauth@CleanName{#1#2}]\fi%
  767.       \fi%
  768.   \fi%
  769. }
  770. \newcommandx\ExcludeName[3][1=\@empty, 3=\@empty]%
  771. {%
  772.   \protected@edef\testi{#1}%
  773.   \protected@edef\testiii{#3}%
  774.   \ifx\testi\@empty%
  775.     \ifx\testiii\@empty%
  776.       \ifcsname\@nameauth@CleanName{#2!PN!}\endcsname\relax%
  777.       \else%
  778.         \ifcsname\@nameauth@CleanName{#2!MN!}\endcsname%
  779.           \PackageWarning{nameauth}%
  780.           {macro \ExcludeName: Reference: #2 already exists; no exclusion.}%
  781.         \else%
  782.           \ifcsname\@nameauth@CleanName{#2!NF!}\endcsname%
  783.             \PackageWarning{nameauth}%
  784.             {macro \ExcludeName: Reference: #2 already exists; no exclusion.}%
  785.           \else%
  786.             \csgdef{\@nameauth@CleanName{#2!PN!}}{}%
  787.           \fi%
  788.         \fi%
  789.       \fi%
  790.     \else%
  791.       \ifcsname\@nameauth@CleanName{#2#3!PN!}\endcsname\relax%
  792.       \else%
  793.         \ifcsname\@nameauth@CleanName{#2#3!MN!}\endcsname%
  794.           \PackageWarning{nameauth}%
  795.           {macro \ExcludeName: Reference: #2 #3 already exists; no exclusion.}%
  796.         \else%
  797.           \ifcsname\@nameauth@CleanName{#2#3!NF!}\endcsname%
  798.             \PackageWarning{nameauth}%
  799.             {macro \ExcludeName: Reference: #2 #3 already exists; no exclusion.}%
  800.           \else%
  801.             \csgdef{\@nameauth@CleanName{#2#3!PN!}}{}%
  802.           \fi%
  803.         \fi%
  804.       \fi%
  805.     \fi%
  806.   \else%
  807.     \ifcsname\@nameauth@CleanName{#1#2!PN!}\endcsname%
  808.       \PackageWarning{nameauth}%
  809.       {macro \ExcludeName: XRef: #1 #2 exists.}%
  810.     \else%
  811.       \ifcsname\@nameauth@CleanName{#1#2!MN!}\endcsname%
  812.         \PackageWarning{nameauth}%
  813.         {macro \ExcludeName: Reference: #1 #2 already exists; no exclusion.}%
  814.       \else%
  815.         \ifcsname\@nameauth@CleanName{#1#2!NF!}\endcsname%
  816.           \PackageWarning{nameauth}%
  817.           {macro \ExcludeName: Reference: #1 #2 already exists; no exclusion.}%
  818.         \else%
  819.           \csgdef{\@nameauth@CleanName{#1#2!PN!}}{}%
  820.         \fi%
  821.       \fi%
  822.     \fi%
  823.   \fi%
  824. }
  825. \newcommandx\ForgetName[3][1=\@empty, 3=\@empty]%
  826. {%
  827.   \protected@edef\testi{#1}%
  828.   \protected@edef\testiii{#3}%
  829.   \ifx\testi\@empty%
  830.     \ifx\testiii\@empty%
  831.       \csundef{\@nameauth@CleanName{#2!MN!}}%
  832.       \csundef{\@nameauth@CleanName{#2!NF!}}%
  833.     \else%
  834.       \csundef{\@nameauth@CleanName{#2#3!MN!}}%
  835.       \csundef{\@nameauth@CleanName{#2#3!NF!}}%
  836.     \fi%
  837.   \else%
  838.       \csundef{\@nameauth@CleanName{#1#2!MN!}}%
  839.       \csundef{\@nameauth@CleanName{#1#2!NF!}}%
  840.   \fi%
  841. }
  842. \newcommandx\SubvertName[3][1=\@empty, 3=\@empty]%
  843. {%
  844.   \protected@edef\testi{#1}%
  845.   \protected@edef\testiii{#3}%
  846.   \ifx\testi\@empty%
  847.     \ifx\testiii\@empty%
  848.       \csgdef{\@nameauth@CleanName{#2!MN!}}{}%
  849.       \csgdef{\@nameauth@CleanName{#2!NF!}}{}%
  850.     \else%
  851.       \csgdef{\@nameauth@CleanName{#2#3!MN!}}{}%
  852.       \csgdef{\@nameauth@CleanName{#2#3!NF!}}{}%
  853.     \fi%
  854.   \else%
  855.       \csgdef{\@nameauth@CleanName{#1#2!MN!}}{}%
  856.       \csgdef{\@nameauth@CleanName{#1#2!NF!}}{}%
  857.   \fi%
  858. }
  859. \newcommand{\NamesInactive}{\@nameauth@DoFormatfalse}
  860. \newcommand{\NamesActive}{\@nameauth@DoFormattrue}
  861. \newcommand{\AllCapsInactive}{\@nameauth@AllCapsfalse}
  862. \newcommand{\AllCapsActive}{\@nameauth@AllCapstrue}
  863. \newcommand{\ReverseInactive}{\@nameauth@RevAllfalse}
  864. \newcommand{\ReverseActive}{\@nameauth@RevAlltrue}
  865. \newcommand{\ReverseCommaInactive}{\@nameauth@RevAllfalse\@nameauth@RevAllCommafalse}
  866. \newcommand{\ReverseCommaActive}{\@nameauth@RevAlltrue\@nameauth@RevAllCommatrue}
  867. \newcommand{\IndexInactive}{\@nameauth@DoIndexfalse}
  868. \newcommand{\IndexActive}{\@nameauth@DoIndextrue}
  869. \newenvironment{nameauth}{%
  870.   \begingroup%
  871.   \csdef{<}##1&##2&##3&##4>{%
  872.     \protected@edef\arga{\trim@spaces{##1}}%
  873.     \protected@edef\argb{\trim@spaces{##2}}%
  874.     \protected@edef\argc{\trim@spaces{##3}}%
  875.     \protected@edef\argd{\trim@spaces{##4}}%
  876.     \ifx\arga\@empty
  877.         \PackageError{nameauth}%
  878.         {environment nameauth: Control sequence missing.}%
  879.     \else
  880.       \ifx\argc\@empty
  881.         \PackageError{nameauth}%
  882.         {environment nameauth: Essential name missing.}%
  883.       \else
  884.         \ifx\argd\@empty
  885.           \ifx\argb\@empty
  886.             \csxdef{\arga}{\Name{\argc}}%
  887.             \csxdef{L\arga}{\Name*{\argc}}%
  888.             \csxdef{S\arga}{\FName{\argc}}%
  889.           \else
  890.             \csxdef{\arga}{\Name[\argb]{\argc}}%
  891.             \csxdef{L\arga}{\Name*[\argb]{\argc}}%
  892.             \csxdef{S\arga}{\FName[\argb]{\argc}}%
  893.           \fi
  894.         \else
  895.           \ifx\argb\@empty
  896.             \csxdef{\arga}{\Name{\argc}[\argd]}%
  897.             \csxdef{L\arga}{\Name*{\argc}[\argd]}%
  898.             \csxdef{S\arga}{\FName{\argc}[\argd]}%
  899.           \else
  900.             \csxdef{\arga}{\Name[\argb]{\argc}[\argd]}%
  901.             \csxdef{L\arga}{\Name*[\argb]{\argc}[\argd]}%
  902.             \csxdef{S\arga}{\FName[\argb]{\argc}[\argd]}%
  903.           \fi
  904.         \fi
  905.       \fi
  906.     \fi
  907.     \ignorespaces%
  908.   }%
  909. }{\endgroup}
  910. \endinput
  911. %%
  912. %% End of file `nameauth.sty'.
Advertisement
Add Comment
Please, Sign In to add comment