diff options
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r-- | Master/texmf-dist/source/latex/nameauth/nameauth.dtx | 146 |
1 files changed, 81 insertions, 65 deletions
diff --git a/Master/texmf-dist/source/latex/nameauth/nameauth.dtx b/Master/texmf-dist/source/latex/nameauth/nameauth.dtx index 0cbb8318571..75bbc717b6b 100644 --- a/Master/texmf-dist/source/latex/nameauth/nameauth.dtx +++ b/Master/texmf-dist/source/latex/nameauth/nameauth.dtx @@ -26,7 +26,7 @@ %<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01] %<package>\ProvidesPackage{nameauth} %<*package> - [2012/02/19 v0.96 name authority macros to aid consistent display and indexing of names] + [2012/02/20 v1.0 name authority macros to aid consistent display and indexing of names] %</package> % %<*driver> @@ -46,12 +46,18 @@ \else \usepackage[utf8]{inputenc} \usepackage[TS1,T1]{fontenc} +\usepackage{newunicodechar} \usepackage{lmodern} +\DeclareTextSymbolDefault{\textlongs}{TS1} +\DeclareTextSymbol{\textlongs}{TS1}{115} +\newunicodechar{ſ}{\textlongs} +\newunicodechar{ā}{\=a} +\newunicodechar{ṃ}{\d m} \fi \fi \usepackage{makeidx} \usepackage{multicol} -\usepackage{nameauth}[2012/02/19] +\usepackage{nameauth}[2012/02/20] \usepackage[colorlinks=true,linkcolor=blue]{hyperref} \begingroup\lccode`!=`\\\lowercase{\endgroup\def\bsc{!}} \makeindex @@ -67,7 +73,7 @@ %</driver> % \fi % -% \CheckSum{928} +% \CheckSum{916} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -96,8 +102,9 @@ % \changes{v0.94}{2012/02/15}{Added index suppression, error checking, better particle handling} % \changes{v0.95}{2012/02/17}{Fixed occasional incompatibility with \textsf{microtype}.} % \changes{v0.96}{2012/02/19}{Defined compatibility limits with \textsf{microtype} and \textsf{memoir}.} +% \changes{v1.0}{2012/02/20}{Fixed compatibility issues.} % -% \DoNotIndex{\newcommand, \newenvironment, \@empty, \@gobble, \bfseries, \bgroup, \def, \egroup, \else, \endcsname, \endinput, \ExecuteOptions, \fi, \if, \ifx, \IfBooleanTF, \IfValueTF, \itshape, \let, \newif, \relax, \renewcommand, \RequirePackage, \scshape, \space, \DeclareDocumentCommand, \DeclareOption, \ProcessOptions, \@token, \@period, \csgdef, \csundef, \detokenize, \expandafter, \Forenames, \futurelet, \if@nameauth@DoComma, \if@nameauth@DoFormat, \if@nameauth@Punct, \ifcsname, \index, \PackageWarning, \Surnames, \Surnamesi, \Surnamesii, \TestDot, \TestEnd, \TestPunct, \TestStop, \zap@space, \edef, \if@nameauth@DoIndex, \if@nameauth@Comma, \Test, \bsc, \uppercase, \Input, \Output, \if@nameauth@DoCaps, \Cap, \@Cap, \ISurnames, \Shortnames} +% \DoNotIndex{\newcommand, \newenvironment, \@empty, \@gobble, \@period, \@token, \protected@edef, \zap@space, \bfseries, \bgroup, \csgdef, \csundef, \def, \detokenize, \expandafter, \edef, \egroup, \else, \endcsname, \endinput, \futurelet, \fi, \if, \ifx, \ifcsname, \index, \IfBooleanTF, \IfValueTF, \itshape, \let, \newif, \relax, \renewcommand, \scshape, \space, \uppercase, \DeclareDocumentCommand, \DeclareOption, \ExecuteOptions, \PackageWarning, \ProcessOptions, \RequirePackage, \if@nameauth@DoComma, \if@nameauth@DoFormat, \if@nameauth@Punct, \if@nameauth@DoIndex, \if@nameauth@Comma, \if@nameauth@DoCaps, \Forenames, \Surnames, \Surnamesi, \Surnamesii, \TestDot, \TestEnd, \TestPunct, \TestStop, \Test, \bsc, \Shortnames} % % \providecommand*{\url}{\texttt} % \GetFileInfo{nameauth.dtx} @@ -116,11 +123,11 @@ % % \subsection{Typesetting, Indexing, and Design} % -% This package depends on \textsf{etoolbox} and \textsf{xparse.} It has been tested with \textsf{latex}, \textsf{lualatex}, \textsf{pdflatex} and \textsf{xelatex}, as well as \textsf{makeindex} and \textsf{texindy}. This file was typeset with \ifxetex\textsf{xelatex}\else\ifluatex\ifpdf\textsf{lualatex} in \texttt{pdf} mode\else\textsf{lualatex} in \texttt{dvi} mode\fi\else\ifpdf\textsf{pdflatex}\else\textsf{latex}\fi\fi\fi{} and \textsf{makeindex}. Section \ref{sec:accents} discusses infrequent cases of incompatibility with \textsf{microtype} when using \textsf{memoir}. The default options and design of this package try to minimize keystrokes or trade extra work for benefits in formatting and consistency. The \texttt{.dtx} file is also a good source of information. +% This package depends on \textsf{etoolbox} and \textsf{xparse.} It has been tested with \textsf{latex}, \textsf{lualatex}, \textsf{pdflatex} and \textsf{xelatex}, as well as \textsf{makeindex} and \textsf{texindy}. This file was typeset with \ifxetex\textsf{xelatex}\else\ifluatex\ifpdf\textsf{lualatex} in \texttt{pdf} mode\else\textsf{lualatex} in \texttt{dvi} mode\fi\else\ifpdf\textsf{pdflatex}\else\textsf{latex}\fi\fi\fi{} and \textsf{makeindex}. The default options and design of this package try to minimize keystrokes or trade extra work for benefits in formatting and consistency. The \texttt{.dtx} file is also a good source of information. % % \subsection{Thanks} % -% Thanks to \Name[Marc van]{Dongen}, \Name[Enrico]{Gregorio}, \Name[Philipp]{Stephani}, \Name[Heiko]{Oberdiek}, and \Name[Uwe]{Lueck} for their invaluable assistance. \FName[Marc van]{Dongen}[Marc] showed me the basic structure using the \textsf{xparse} package. \FName[Enrico]{Gregorio} and \FName[Philipp]{Stephani} helped with generating control sequences and sanitizing. \FName[Heiko]{Oberdiek} gave a space-removing solution that could be passed as an argument in a macro. Code adapted from \FName[Uwe]{Lueck}'s work on the texhax list enabled the routines to function with the \textsf{microtype} package. +% Thanks to \Name[Marc van]{Dongen}, \Name[Enrico]{Gregorio}, \Name[Philipp]{Stephani}, \Name[Heiko]{Oberdiek}, \Name[Uwe]{Lueck}, and \Name[Robert]{Schlicht} for their invaluable assistance. \FName[Marc van]{Dongen}[Marc] showed me the basic structure using the \textsf{xparse} package. \FName[Enrico]{Gregorio} and \FName[Philipp]{Stephani} helped with generating control sequences and sanitizing. \FName[Heiko]{Oberdiek} gave a space-removing solution that could be passed as an argument in a macro. Code adapted from \FName[Uwe]{Lueck}'s work on the texhax list and the sagacious advice of \FName[Robert]{Schlicht} enabled the routines to function with the \textsf{microtype} package. % % \section{Usage} % @@ -134,9 +141,9 @@ % {\large\strut}\texttt{smallcaps} & The default behavior when a name is first encountered is to print it in small caps.\\[1ex] % \texttt{italic} & This option causes the first occurrence of the name to be italicized.\\[1ex] % \texttt{boldface} & This option causes the first occurrence of the name to be set in boldface.\\[1ex] -% \texttt{noformat} & This option suppresses document formatting after the invocation of \cmd{\NamesActive}. If an author wants the indexing and aliasing functions without any special typesetting, this option accomplishes that easily. Additional formatting options are discussed in Section \ref{sec:formatting}. This option is \emph{not} equivalent to \texttt{frontmatter}, which prevents formatting when in force. The \texttt{noformat} option simply sets the `formatting'' to nil, helping one to write the same document for different publishers' style requirements.\\[0.25ex]\hline -% {\large\strut}\texttt{nocomma} & The default behavior suppresses printing of commas between surnames and suffixes, following modern styles like \emph{Chicago Manual of Style}. See Section \ref{sec:suffix} for implications of this behavior.\\[1ex] -% \texttt{comma} & Print commas between surnames and suffixes, following older styles. See also Section \ref{sec:suffix}.\\[0.25ex]\hline +% \texttt{noformat} & This option suppresses document formatting after the invocation of \cmd{\NamesActive} if an author wants the indexing and aliasing functions without any special typesetting. Additional formatting options are discussed in Section \ref{sec:formatting}. This option is \emph{not} equivalent to \texttt{frontmatter}, which prevents formatting when in force. The \texttt{noformat} option simply sets the ``formatting'' to nil, helping one to write the same document for different publishers' style requirements.\\[0.25ex]\hline +% {\large\strut}\texttt{nocomma} & The default behavior suppresses printing of commas between surnames and suffixes, following modern styles like \emph{Chicago Manual of Style}. See Section \ref{sec:suffix} for additional implications of this behavior.\\[1ex] +% \texttt{comma} & Print commas between surnames and suffixes, following older styles. Several points throughout the document discuss the limits that this option imposes.\\[0.25ex]\hline % {\large\strut}\texttt{index} & The default behavior creates index entries in place with the names.\\[1ex] % \texttt{noindex} & Similar to \texttt{frontmatter}, this option prevents indexing until a call to \cmd{\IndexActive}. See also Section \ref{sec:SectionIndex}.\\ % \end{tabular} @@ -152,7 +159,7 @@ % % \noindent\textbf{Example Text:} % -% {\small\ttfamily This is a toast to |\Name[John]{Smith}| and his longtime sweetheart,\break |\Name[J.Q.]{Public}[Jane Q.]|. |\FName[John]{Smith}| and\break |``\FName[J.Q.]{Public}[Janie]''| have finally made it official today! After\break casual dating as teenagers, they met again in college where they learned\break about |\Name{Aristotle}| and all the stuff that I can't keep in my head.\break [laughs] Nevertheless, by the time they got to |\Name{John}[Duns Scotus]| they were definitely a number. They studied medieval history-makers like\break |\Name{Gregory, I}| |``\AKA*{Gregory, I}{Gregory}[the Great]''| and by the\break Renaissance they were engaged. After spending time in separate grad schools, these promising medievalists got faculty positions at adjoining colleges\break and here we are. As the brother of |\FName[J.Q.]{Public}[Jane]|\break |``\AKA*[J.Q.]{Public}{Jane}[the Great]''| I am happy to welcome\break |\FName[John]{Smith}[Sir John]| to our raucous family.}\\ +% {\small\ttfamily This is a toast to |\Name[John]{Smith}| and his longtime sweetheart,\newline |\Name[J.Q.]{Public}[Jane Q.]|. |\FName[John]{Smith}| and\break |``\FName[J.Q.]{Public}[Janie]''| have finally made it official today! After\break casual dating as teenagers, they met again in college where they learned\break about |\Name{Aristotle}| and all the stuff that I can't keep in my head.\break [laughs] Nevertheless, by the time they got to |\Name{John}[Duns Scotus]| they were definitely a number. They studied medieval history-makers like\break |\Name{Gregory, I}| |``\AKA*{Gregory, I}{Gregory}[the Great]''| and by the\break Renaissance they were engaged. After spending time in separate grad schools, these promising medievalists got faculty positions at adjoining colleges\break and here we are. As the brother of |\FName[J.Q.]{Public}[Jane]|\break |``\AKA*[J.Q.]{Public}{Jane}[the Great]''| I am happy to welcome\break |\FName[John]{Smith}[Sir John]| to our raucous family.}\\ % % This is a toast to \Name[John]{Smith} and his longtime sweetheart, \Name[J.Q.]{Public}[Jane Q.]. \FName[John]{Smith} and ``\FName[J.Q.]{Public}[Janie]'' have finally made it official today! After casual dating as teenagers, they met again in college where they learned about \Name{Aristotle} and all the stuff that I can't keep in my head. [laughs] Nevertheless, by the time they got to \Name{John}[Duns Scotus] they were definitely a number. They studied medieval history-makers like \Name{Gregory, I} ``\AKA*{Gregory, I}{Gregory}[the Great]'' and by the Renaissance they were engaged. After spending time in separate grad schools, these promising medievalists got faculty positions at adjoining colleges and here we are. As the brother of \FName[J.Q.]{Public}[Jane] ``\AKA*[J.Q.]{Public}{Jane}[the Great]'' I am happy to welcome \FName[John]{Smith}[Sir John] to our raucous family.\\ % @@ -232,7 +239,7 @@ % These next examples engage a number of special cases. Many depend on the default \texttt{nocomma} option. Always use a comma to delimit suffixes. Use a space or thin space after the comma. These forms will work with \cmd{\AKA} and \cmd{\PName}. See also Section \ref{sec:suffix} % \begin{enumerate}\setlength\itemsep{0pt}\small % \item First: \ForgetName[George S.]{Patton, Jr.}\Name[George S.]{Patton, Jr.}\\[0.5ex] -% {\footnotesize |\Name*[George S.]{Patton, Jr.}|\,or\\ |\Name[George S.]{Patton, Jr.}| or\\ |\FName[George S.]{Patton, Jr.}|} +% {\footnotesize |\Name*[George S.]{Patton, Jr.}| or\\ |\Name[George S.]{Patton, Jr.}| or\\ |\FName[George S.]{Patton, Jr.}|} % \item Subsequent full: \Name*[George S.]{Patton, Jr.}\\[0.5ex] % |\Name*[George S.]{Patton, Jr.}| % \item Subsequent surname: \Name[George S.]{Patton, Jr.}\\[0.5ex] @@ -297,23 +304,23 @@ % |\IndexName{Gregory, I}| % \item Index, but do not print a reference to ``Sun Yat-sen'' \IndexName{Sun, Yat-sen}\\[0.5ex] % |\IndexName{Sun, Yat-sen}| -% \item Following a name, print a pseudonym in parentheses. \PName[Bob]{Hope}[Leslie Townes]{Hope}\\[0.5ex] +% \item Following a name, print a pseudonym in parentheses: \PName[Bob]{Hope}[Leslie Townes]{Hope}\\[0.5ex] % |\PName[Bob]{Hope}%|\\|[Leslie Townes]{Hope}| % \item Print a name that is only a \emph{see} reference to another: \AKA[Bob]{Hope}[Lester T.]{Hope}\\[0.5ex] % |\AKA[Bob]{Hope}[Lester T.]{Hope}|\\[2ex] The following only works with the default \texttt{nocomma} option. % \item Print a name and ``sobriquet'' for an ancient name, making it a cross-reference: \AKA{Leo, I}{Leo}[the Great]\\[0.5ex] % |\AKA{Leo, I}{Leo}[the Great]| -% \item Print only the ``sobriquet'' form directly after a \cmd{\Name} reference: \Name{Leo, I} ``\AKA*{Leo, I}{Leo}[the Great]''\\[0.5ex] +% \item Print only a ``sobriquet'' after a \cmd{\Name} reference: \Name{Leo, I} ``\AKA*{Leo, I}{Leo}[the Great]''\\[0.5ex] % |\Name{Leo, I}| |``\AKA*{Leo, I}%| |{Leo}[the Great]''| % \end{enumerate} % \subsubsection{Pitfalls} % Avoiding the following pitfalls will save time and frustration: % \begin{enumerate}\setlength\itemsep{0pt}\small -% \item Mixing sobriquets with modern forms fails due to the ``alternate name'' feature:\\ |\Name[First]{Ancient}[Sobriquet]|\\ |\Name[King]{Number}[Sobriquet]| +% \item Mixing sobriquets with modern forms fails due to the ``alternate name'' feature, e.g.:\\ |\Name[First]{Ancient}[Sobriquet]|\\ |\Name[King]{Number}[Sobriquet]| % \item Using \cmd{\AKA} and \cmd{\PName} with sobriquet-based forms will fail unless you use comma-delimited suffixes. See Section \ref{sec:suffix}. % \item Using a forename or first initials can prevent failure in some cases:\\[0.5ex]{\footnotesize OK: |\Name[J.]{Kreskin}[The Amazing]|\\ |(\AKA[J.]{Kreskin}[Joseph]{Kresge})|\\[0.5ex] FAIL: |\Name[]{Kreskin}[The Amazing]|\\ |(\AKA{Kreskin}[Joseph]{Kresge})|\\[0.5ex] FAIL: |\Name{Kreskin}[The Amazing]|\\ |(\AKA{Kreskin}[Joseph]{Kresge})|} % \item \cmd{\Name} can shorten a reference even if you use the full name in the text. -% \item Unbalanced or incorrect \texttt{\{} braces \texttt{\}} and \texttt{[} brackets \texttt{]}, as well as forgetting the periods in initials, create errors that can be difficult to track. Leading spaces in macro arguments will create incorrectly sorted index entries. +% \item Unbalanced or incorrect \texttt{\{} braces \texttt{\}} and \texttt{[} brackets \texttt{]}, putting a star |*| after |\FName|, and forgetting periods in initials create errors that can be difficult to track. Leading spaces in macro arguments will create incorrectly sorted index entries. % \end{enumerate} % \end{multicols} % @@ -597,7 +604,7 @@ % \subsection{Accented Names} % \label{sec:accents} % -% The snippet on the next page from the preamble allows this document to be typeset with multiple engines. I used the following in the text to test what is being used:\\ +% The snippet on the next page from the preamble allows this document to be typeset with multiple engines. I used the following test in the text itself:\\ % % \bgroup\footnotesize% % \noindent |\ifxetex\textsf{xelatex}%|\\ @@ -650,9 +657,18 @@ % \end{tabular} % \end{quote} % -% \noindent \emph{Caveat}: If one uses \textsf{inputenc} with the \texttt{utf8} option together with \textsf{microtype} and the \textsf{memoir} class, \cmd{\Name}, etc. will cause \textsf{microtype} to emit errors if one uses accented characters apart from the list above. One can avoid this issue by manually formatting and indexing names that contain characters apart from the list. Control sequences like |\=a| also fail when using \textsf{makeindex} and \texttt{gind.ist} because the equal sign is interpreted as a ``literal.'' +% \noindent One may add control sequences to names, thanks to the help of \Name*[Robert]{Schlicht}. The next example adds more accented characters under \textsf{inputenc}/\textsf{fontenc}: +% \begin{quote}\small +% |\usepackage{newunicodechar}|\\ +% |\DeclareTextSymbolDefault{\textlongs}{TS1}|\\ +% |\DeclareTextSymbol{\textlongs}{TS1}{115}|\\ +% |\newunicodechar{ſ}{\textlongs}|\\ +% |\newunicodechar{ā}{\=a}|\\ +% |\newunicodechar{ṃ}{\d m}| +% \end{quote} +% +% \noindent For some glyphs you will need fonts with TS1 glyphs, e.g., |\usepackage{lmodern}|. See also pages 455--63 in \emph{The Latex Companion}. This allows |\Name{Ghazāli}| to generate \IndexInactive\Name{Ghazāli}\IndexActive. Control sequences like |\=a| fail even in manual index entries when using \textsf{makeindex} and \texttt{gind.ist} because the equal sign is interpreted as a ``literal'' character, as mentioned by \Name[Dan]{Lueking}. I stopped |\Name| from indexing \IndexInactive\Name{Ghazāli}\IndexActive{} to prevent the entry ``ali'' sorted under ``Ghaz''. % -% Technically, \textsf{microtype} wants the control sequences fully expanded via \cmd{\edef} when comma suppression and suffix removal occur in \cmd{\Name} and \cmd{\FName}. Fixing that conflict puts accented characters directly into the \texttt{.aux} files when using \textsf{inputenc} with the \texttt{utf8} option and the indexing macros built into \textsf{memoir}. That causes a conflict with \textsf{inputenc}. The workaround for that is to use \cmd{\def}, which then conflicts with \textsf{microtype}. Until I can determine whether a permanent workaround exists, I have chosen the lesser of two package conflicts. If someone knows of a solution, I will implement it and give credit where it is due. % \subsection{Name Formatting} % \label{sec:formatting} % @@ -976,21 +992,20 @@ % \changes{v0.94}{2012/02/15}{Error checking expanded} % \changes{v0.95}{2012/02/17}{Fixed incompatibility with \textsf{microtype}} % \changes{v0.96}{2012/02/19}{Fixed occasional incompatibility with \textsf{memoir}.} +% \changes{v1.0}{2012/02/20}{Fixed compatibility issues.} % \begin{macrocode} \DeclareDocumentCommand\Name{s o m o}% {% - \edef\Surnames{#3}% - \def\ISurnames{#3}% + \protected@edef\Surnames{#3}% \if@nameauth@DoCaps% - \def\Shortnames{\@nameauth@CapRoot{#3,}}% + \protected@edef\Shortnames{\@nameauth@CapRoot{#3,}}% \else% - \def\Shortnames{\@nameauth@Root{#3,}}% + \protected@edef\Shortnames{\@nameauth@Root{#3,}}% \fi% \if@nameauth@DoComma\else% \@nameauth@CheckComma{#3}% \if@nameauth@Comma% - \edef\Surnames{\@nameauth@Root{#3}\@nameauth@Suffix{#3}}% - \def\ISurnames{\@nameauth@Root{#3}\@nameauth@Suffix{#3}}% + \protected@edef\Surnames{\@nameauth@Root{#3}\@nameauth@Suffix{#3}}% \fi% \fi% \IfValueTF{#2}% @@ -1007,28 +1022,28 @@ \IfBooleanTF{#1}% {\expandafter\@nameauth@FmtName\expandafter*\expandafter{% \expandafter\Forenames\expandafter\space\Surnames}% - \@nameauth@Index{\ISurnames, #2}}% + \@nameauth@Index{\Surnames, #2}}% {\expandafter\@nameauth@FmtName\expandafter*\expandafter{\Shortnames}% - \@nameauth@Index{\ISurnames, #2}}% + \@nameauth@Index{\Surnames, #2}}% \else% \csgdef{\@nameauth@CleanName{#2#3!MN!}}{}% \expandafter\@nameauth@FmtName\expandafter{% \expandafter\Forenames\expandafter\space\Surnames}% - \@nameauth@Index{\ISurnames, #2}% + \@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{\ISurnames, #2}}% + \@nameauth@Index{\Surnames, #2}}% {\expandafter\@nameauth@FmtName\expandafter*\expandafter{\Shortnames}% - \@nameauth@Index{\ISurnames, #2}}% + \@nameauth@Index{\Surnames, #2}}% \else% \csgdef{\@nameauth@CleanName{#2#3!NF!}}{}% \expandafter\@nameauth@FmtName\expandafter*\expandafter{% \expandafter\Forenames\expandafter\space\Surnames}% - \@nameauth@Index{\ISurnames, #2}% + \@nameauth@Index{\Surnames, #2}% \fi% \fi% \fi}% @@ -1044,28 +1059,28 @@ \IfBooleanTF{#1}% {\expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnames\space#4}% - \@nameauth@Index{\ISurnames\space#4}}% + \@nameauth@Index{\Surnames\space#4}}% {\expandafter\@nameauth@FmtName\expandafter*\expandafter{\Shortnames}% - \@nameauth@Index{\ISurnames\space#4}}% + \@nameauth@Index{\Surnames\space#4}}% \else% \csgdef{\@nameauth@CleanName{#3#4!MN!}}{}% \expandafter\@nameauth@FmtName\expandafter{% \Surnames\space#4}% - \@nameauth@Index{\ISurnames\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{\ISurnames\space#4}}% + \@nameauth@Index{\Surnames\space#4}}% {\expandafter\@nameauth@FmtName\expandafter*\expandafter{\Shortnames}% - \@nameauth@Index{\ISurnames\space#4}}% + \@nameauth@Index{\Surnames\space#4}}% \else% \csgdef{\@nameauth@CleanName{#3#4!NF!}}{}% \expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnames\space#4}% - \@nameauth@Index{\ISurnames\space#4}% + \@nameauth@Index{\Surnames\space#4}% \fi% \fi% \fi}% @@ -1080,27 +1095,27 @@ \IfBooleanTF{#1}% {\expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnames}% - \@nameauth@Index{\ISurnames}}% + \@nameauth@Index{\Surnames}}% {\@nameauth@FmtName*{\Shortnames}% - \@nameauth@Index{\ISurnames}}% + \@nameauth@Index{\Surnames}}% \else% \csgdef{\@nameauth@CleanName{#3!MN!}}{}% \expandafter\@nameauth@FmtName\expandafter{\Surnames}% - \@nameauth@Index{\ISurnames}% + \@nameauth@Index{\Surnames}% \fi% \else% \ifcsname\@nameauth@CleanName{#3!NF!}\endcsname% \IfBooleanTF{#1}% {\expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnames}% - \@nameauth@Index{\ISurnames}}% + \@nameauth@Index{\Surnames}}% {\@nameauth@FmtName*{\Shortnames}% - \@nameauth@Index{\ISurnames}}% + \@nameauth@Index{\Surnames}}% \else% \csgdef{\@nameauth@CleanName{#3!NF!}}{}% \expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnames}% - \@nameauth@Index{\ISurnames}% + \@nameauth@Index{\Surnames}% \fi% \fi% \fi}% @@ -1115,7 +1130,7 @@ % % Regarding the remaining eighteen branches, one cannot assume that the name will terminate with a suffix like ``Jr.'' until a check has been run to determine if the suffix should be truncated. The Boolean and value parameters offer eight valid patterns of input. The first or subsequent use are two more, as are front or main matter use. Operations on suffixes are governed by the first or subsequent use. The formatting or non-formatting of output is governed both by a formatting Boolean and by first/subsequent use. A final choice deals with handling alternate names in the \cmd{\Forenames} macro. % -% Here is how these many factors interrelate: \cmd{\Name} first checks for comma suppression. if so it stores a comma-suppressed version of the third parameter in \cmd{\Surnames}. Otherwise it stores an unchanged version in \cmd{\Surnames} and \cmd{\ISurnames}. The former needs to be fully expanded for the double-period checking to work, thus using \cmd{\edef}. The latter should not be fully expanded when using the \textsf{memoir} class with the utf8 option of \textsf{inputenc}. This will be passed respectively to \cmd{\@nameauth@FmtName} and \cmd{\@nameauth@Index}.\\ +% Here is how these many factors interrelate: \cmd{\Name} first checks for comma suppression. if so it stores a comma-suppressed version of the third parameter in \cmd{\Surnames}. Otherwise it stores an unchanged version in \cmd{\Surnames} and \cmd{\Surnames}. The former needs to be fully expanded for the double-period checking to work, thus using \cmd{\edef}. The latter should not be fully expanded when using the \textsf{memoir} class with the utf8 option of \textsf{inputenc}. This will be passed respectively to \cmd{\@nameauth@FmtName} and \cmd{\@nameauth@Index}.\\ % %\noindent \cmd{\Name} then checks for the forenames argument. Two outcomes are possible. % \begin{enumerate} @@ -1143,16 +1158,15 @@ % \changes{v0.9}{2012/02/10}{Added macro} % \changes{v0.94}{2012/02/15}{Error checking expanded} % \changes{v0.96}{2012/02/19}{Fixed occasional incompatibility with \textsf{memoir}.} +% \changes{v1.0}{2012/02/20}{Fixed compatibility issues.} % \begin{macrocode} \DeclareDocumentCommand\FName{o m o}% {% - \edef\Surnames{#2}% - \def\ISurnames{#2}% + \protected@edef\Surnames{#2}% \if@nameauth@DoComma\else% \@nameauth@CheckComma{#2}% \if@nameauth@Comma% - \edef\Surnames{\@nameauth@Root{#2}\@nameauth@Suffix{#2}}% - \def\ISurnames{\@nameauth@Root{#2}\@nameauth@Suffix{#2}}% + \protected@edef\Surnames{\@nameauth@Root{#2}\@nameauth@Suffix{#2}}% \fi% \fi% \IfValueTF{#1}% @@ -1167,23 +1181,23 @@ \ifcsname\@nameauth@CleanName{#1#2!MN!}\endcsname% \expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Forenames}% - \@nameauth@Index{\ISurnames, #1}% + \@nameauth@Index{\Surnames, #1}% \else% \csgdef{\@nameauth@CleanName{#1#2!MN!}}{}% \expandafter\@nameauth@FmtName\expandafter{% \expandafter\Forenames\expandafter\space\Surnames}% - \@nameauth@Index{\ISurnames, #1}% + \@nameauth@Index{\Surnames, #1}% \fi% \else% \ifcsname\@nameauth@CleanName{#1#2!NF!}\endcsname% \expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Forenames}% - \@nameauth@Index{\ISurnames, #1}% + \@nameauth@Index{\Surnames, #1}% \else% \csgdef{\@nameauth@CleanName{#1#2!NF!}}{}% \expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Forenames\expandafter\space\Surnames}% - \@nameauth@Index{\ISurnames, #1}% + \@nameauth@Index{\Surnames, #1}% \fi% \fi% \fi}% @@ -1197,22 +1211,22 @@ \if@nameauth@DoFormat% \ifcsname\@nameauth@CleanName{#2#3!MN!}\endcsname% \@nameauth@FmtName*{\@nameauth@Root{#2,}}% - \@nameauth@Index{\ISurnames\space#3}% + \@nameauth@Index{\Surnames\space#3}% \else% \csgdef{\@nameauth@CleanName{#2#3!MN!}}{}% \expandafter\@nameauth@FmtName% \expandafter{\Surnames\space#3}% - \@nameauth@Index{\ISurnames\space#3}% + \@nameauth@Index{\Surnames\space#3}% \fi% \else% \ifcsname\@nameauth@CleanName{#2#3!NF!}\endcsname% \@nameauth@FmtName*{\@nameauth@Root{#2,}}% - \@nameauth@Index{\ISurnames\space#3}% + \@nameauth@Index{\Surnames\space#3}% \else% \csgdef{\@nameauth@CleanName{#2#3!NF!}}{}% \expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnames\space#3}% - \@nameauth@Index{\ISurnames\space#3}% + \@nameauth@Index{\Surnames\space#3}% \fi% \fi% \fi}% @@ -1225,21 +1239,21 @@ \if@nameauth@DoFormat% \ifcsname\@nameauth@CleanName{#2!MN!}\endcsname% \@nameauth@FmtName*{\@nameauth@Root{#2,}}% - \@nameauth@Index{\ISurnames}% + \@nameauth@Index{\Surnames}% \else% \csgdef{\@nameauth@CleanName{#2!MN!}}{}% \expandafter\@nameauth@FmtName\expandafter{\Surnames}% - \@nameauth@Index{\ISurnames}% + \@nameauth@Index{\Surnames}% \fi% \else% \ifcsname\@nameauth@CleanName{#2!NF!}\endcsname% \@nameauth@FmtName*{\@nameauth@Root{#2,}}% - \@nameauth@Index{\ISurnames}% + \@nameauth@Index{\Surnames}% \else% \csgdef{\@nameauth@CleanName{#2!NF!}}{}% \expandafter\@nameauth@FmtName\expandafter*% \expandafter{\Surnames}% - \@nameauth@Index{\ISurnames}% + \@nameauth@Index{\Surnames}% \fi% \fi% \fi}% @@ -1255,19 +1269,20 @@ % \changes{v0.86}{2012/02/06}{Fixed some regressions} % \changes{v0.9}{2012/02/10}{Added starred mode; redesigned} % \changes{v0.94}{2012/02/15}{Added error checking} +% \changes{v1.0}{2012/02/20}{Fixed compatibility issues.} % \begin{macrocode} \DeclareDocumentCommand\AKA{s o m o m o}% {% - \def\Surnamesi{#3}% - \def\Surnamesii{#5}% + \protected@edef\Surnamesi{#3}% + \protected@edef\Surnamesii{#5}% \if@nameauth@DoComma\else% \@nameauth@CheckComma{#3}% \if@nameauth@Comma% - \def\Surnamesi{\@nameauth@Root{#3}\@nameauth@Suffix{#3}}% + \protected@edef\Surnamesi{\@nameauth@Root{#3}\@nameauth@Suffix{#3}}% \fi% \@nameauth@CheckComma{#5}% \if@nameauth@Comma% - \def\Surnamesii{\@nameauth@Root{#5}\@nameauth@Suffix{#5}}% + \protected@edef\Surnamesii{\@nameauth@Root{#5}\@nameauth@Suffix{#5}}% \fi% \fi% \IfValueTF{#4}% @@ -1358,14 +1373,15 @@ % \changes{v0.85}{2012/02/05}{Add comma suppression, ltxdoc compatibility} % \changes{v0.86}{2012/02/06}{Slight tweak using \cmd{\edef}} % \changes{v0.9}{2012/02/10}{redesigned macro} +% \changes{v1.0}{2012/02/20}{Fixed compatibility issues.} % \begin{macrocode} \DeclareDocumentCommand\IndexName{o m o}% {% - \def\Surnames{#2}% + \protected@edef\Surnames{#2}% \if@nameauth@DoComma\else% \@nameauth@CheckComma{#2}% \if@nameauth@Comma% - \edef\Surnames{\@nameauth@Root{#2}\@nameauth@Suffix{#2}}% + \protected@edef\Surnames{\@nameauth@Root{#2}\@nameauth@Suffix{#2}}% \fi% \fi% \IfValueTF{#1}% |