diff options
author | Karl Berry <karl@freefriends.org> | 2013-02-24 22:51:17 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-02-24 22:51:17 +0000 |
commit | a3c0a64b48a59420321a3e0f3279daf232b2bcc5 (patch) | |
tree | 01e21754afc0dbcc2f767d952b8a27fb57afe2b8 /Master/texmf-dist/source/latex/nameauth/nameauth.dtx | |
parent | 0e16fa40de31459f0f77644759dcd836108c9590 (diff) |
nameauth (24feb13)
git-svn-id: svn://tug.org/texlive/trunk@29219 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/nameauth/nameauth.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/nameauth/nameauth.dtx | 1114 |
1 files changed, 728 insertions, 386 deletions
diff --git a/Master/texmf-dist/source/latex/nameauth/nameauth.dtx b/Master/texmf-dist/source/latex/nameauth/nameauth.dtx index 0e0c371abcc..178b4e0c17a 100644 --- a/Master/texmf-dist/source/latex/nameauth/nameauth.dtx +++ b/Master/texmf-dist/source/latex/nameauth/nameauth.dtx @@ -25,7 +25,7 @@ %<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01] %<package>\ProvidesPackage{nameauth} %<*package> - [2012/07/24 v1.4 name authority macros to aid consistent display and indexing of names] + [2013/02/22 v1.5 name authority macros to aid consistent display and indexing of names] %</package> % %<*driver> @@ -57,8 +57,9 @@ \usepackage{makeidx} \usepackage{multicol} \usepackage[toc]{multitoc} -\usepackage{nameauth}[2012/07/24] +\usepackage{nameauth}[2013/02/22] \usepackage{hypdoc} +\usepackage{tikz} \makeindex \frenchspacing \EnableCrossrefs @@ -72,7 +73,7 @@ %</driver> % \fi % -% \CheckSum{1206} +% \CheckSum{1572} % % \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 @@ -97,17 +98,15 @@ % \changes{v0.85}{2012/02/05}{Added comma suppression, new class options, and more functionality} % \changes{v0.86}{2012/02/06}{Fixed some regressions} % \changes{v0.9}{2012/02/10}{Added first name formatting; comma and suffix handling expandable} -% \changes{v0.92}{2012/02/12}{Build with all major \LaTeX{} engines} -% \changes{v0.94}{2012/02/15}{Added index suppression, error checking, name particle caps} +% \changes{v0.94}{2012/02/15}{Build with all major \LaTeX{} engines; Added index suppression, error checking, name particle caps} % \changes{v0.95}{2012/02/17}{Bugfixes} % \changes{v0.96}{2012/02/19}{Bugfixes} % \changes{v1.0}{2012/02/20}{Works fully with \textsf{microtype} and \textsf{memoir}} % \changes{v1.1}{2012/03/08}{Fixed errors when emitting warnings} % \changes{v1.2}{2012/03/25}{Added tagging features; extensively edited documentation} -% \changes{v1.22}{2012/04/20}{Attempted first-use particle caps} -% \changes{v1.24}{2012/04/21}{Reverted functionality and suggested \cmd{\CapThis} workaround} -% \changes{v1.26}{2012/04/24}{Fixed sorting of name suffixes in index} +% \changes{v1.26}{2012/04/24}{First-letter caps fixed; fixed sorting of name suffixes in index} % \changes{v1.4}{2012/07/24}{Fixed issues moving argument problems, added several features} +% \changes{v1.5}{2013/02/22}{Minor bugfixes; added several features} % % \DoNotIndex{\@empty, \@gobble, \@period, \@token, \protected@edef, \zap@space, \bfseries, \bgroup, \csgdef, \csname, \csundef, \DeclareOption, \def, \detokenize, \edef, \egroup, \else, \endcsname, \endinput, \ExecuteOptions, \expandafter, \fi, \Forenames, \futurelet, \hbox, \if, \ifcsname, \ifx, \ignorespaces, \index, \itshape, \leavevmode, \let, \newcommand, \newcommandx, \newenvironment, \newif, \PackageWarning, \ProcessOptions, \relax, \renewcommand, \RequirePackage, \scshape, \space, \textbackslash, \uppercase, \WithSuffix} % @@ -133,7 +132,6 @@ % \end{abstract} % % \tableofcontents -% \clearpage % % \section{Introduction} % @@ -143,8 +141,9 @@ % \item Format, print, and index names all at once. % \item Automatically print a full name the first time it appears, with full or shorter forms thereafter. % \item Automatically apply typesetting to names, recalling German \emph{Sperr\-druck}. -% \item Rearrange text without retyping. -% \item Allow predictable name variants in the text, yet index consistent name forms. +% \item Rearrange text without retyping the names therein. +% \item Allow predictable name variants in the text, yet index consistent name forms, thus abstracting the concept of a name. +% \item Provide for some cross-cultural features in name ordering, capitalization, and indexing. % \item ``Tag'' and ``untag'' names in the index in order to index different people with the same name. % \item Macros can be used in the body text, in a \cmd{\marginpar}, in tabular material, and in list environments like \texttt{enumerate}, among others. % \end{itemize} @@ -152,101 +151,182 @@ % % \subsection{Design Notes and Thanks} % -% This package depends on \textsf{etoolbox}, \textsf{suffix}, and \textsf{xargs}. As of version 1.4 it has been refactored extensively with robustness and modularity in mind. It has been tested with \textsf{latex}, \textsf{lualatex}, \textsf{pdflatex} and \textsf{xelatex}. It will work with \textsf{makeindex} and \textsf{texindy}. This document 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}. +% This package depends on \textsf{etoolbox}, \textsf{suffix}, \textsf{trimspaces}, and \textsf{xargs}. As of version 1.4 it has been refactored extensively with robustness and modularity in mind. It has been tested with \textsf{latex}, \textsf{lualatex}, \textsf{pdflatex} and \textsf{xelatex}. It will work with \textsf{makeindex} and \textsf{texindy}. This document 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}. % % Thanks to \Name[Marc van]{Dongen}, \Name[Enrico]{Gregorio}, \Name[Philipp]{Stephani}, \Name[Heiko]{Oberdiek}, \Name[Uwe]{Lueck}, and \Name[Robert]{Schlicht} for their assistance. The light of their knowledge banished the umbra of my ignorance. % % \subsection{Disclaimer} -% This documentation uses names of historical figures because users refer to real people in their projects. At no time in this document am I intending either to promote, disparage, or make any assertions about any persons living or dead. All names mentioned herein deserve respect for the impact and legacy of their bearers. +% This documentation uses names of living and historical figures because users refer to real people in their projects. At no time herein do I intending any statement of bias for or against a particular person, culture, or tradition. All names mentioned herein deserve respect for the impact and legacy of their bearers. % \subsection{Caveat} -% Throughout this manual I play a ``dirty trick'' that makes a name print as if it had not yet occurred. In some cases I make a first occurrence print as if the name already had occurred. This trick can be used, for example, to force the formatting of the first name in a chapter or section. See Section \ref{sec:Tweaks} for more. +% Throughout this manual I perform a ``torture test'' of sorts on several macros in this package, disregarding the advice I offer the reader. General authors may never encounter some of these cases, as in Sections~\ref{sec:formatting} and~\ref{sec:Tweaks}. % \clearpage % % \section{Usage} % % \subsection{Package Options} -% The defaults are \texttt{mainmatter}, \texttt{smallcaps}, \texttt{nocomma}, and \texttt{index}. The package begins immediately to format the first occurrences of names with small caps, suppressing commas between surnames and suffixes, and indexing all names in place. The following package options alter this behavior.\\ -% -% \begin{tabular}{lp{3.25in}} -% & {\large\bfseries Enable/Disable Formatting}\\[0.5ex] -% \texttt{mainmatter} & Enable formatting attributes (see below), starting at the beginning of a document.\\[1ex] -% \texttt{frontmatter} & Disable formatting \emph{before} the invocation of \cmd{\NamesActive} while retaining automatic full and short forms. This option fits well, e.g., with a foreword from a contributor. See Section \ref{sec:SectionFormat}.\\[1ex] -% & {\large\bfseries Show/Hide Suffix Commas}\\[0.5ex] -% \texttt{nocomma} & Suppress commas between surnames and suffixes, following modern styles like \emph{Chicago Manual of Style}. Commas can be forced on a per-use basis with \cmd{\ShowComma}. See Section \ref{sec:suffix}.\\[1ex] -% \texttt{comma} & Retain commas between all surnames and suffixes. This imposes limits on the use of certain macros.\\[1ex] -% & {\large\bfseries Enable/Disable Indexing}\\[0.5ex] -% \texttt{index} & Create index entries in place with the names.\\[1ex] -% \texttt{noindex} & Prevent indexing before the invocation of the macro \cmd{\IndexActive}. See Section \ref{sec:SectionIndex}.\\[1ex] -% & {\large\bfseries Formatting Attributes}\\[0.5ex] -% \texttt{alwaysformat} & Disabled by default, this option can be used together with the options below. With the \texttt{mainmatter} option or after \cmd{\NamesActive}, always apply one of the predefined formatting options below or custom formatting (Section \ref{sec:formatting}). This is quite similar to using \emph{Sperr\-druck} in German to call out names.\\[1ex] -% \texttt{smallcaps} & Set the first use of a name in small caps.\\[1ex] +% \label{sec:options} +% Package options fall into several categories. Default options are in boldface:\\ +% +% \begin{tabular}{p{0.2\textwidth}p{0.6\textwidth}} +% & {\large\bfseries Show/Hide Suffix Commas}\\[1ex] +% \bfseries\texttt{nocomma} & \bfseries Suppress commas between surnames and suffixes, following modern styles like \emph{Chicago Manual of Style}. Commas can be forced on a per-use basis with \cmd{\ShowComma}. See Section~\ref{sec:suffix}.\\[1ex] +% \texttt{comma} & Retain commas between all surnames and suffixes. This imposes limits on certain macros.\\[2ex] +% \end{tabular} +% +% \noindent These options are the ``most global'' because they affect names in both the text and the index. The |comma| option, meant for use with older texts, restricts name forms and available macros. The \cmd{\ShowComma} macro allows the general benefits of |nocomma| while allowing the more limited |comma| behavior on a per-use basis at the cost of greater complexity. +% +%The above options are meant to be invoked at load time and left alone thereafter. Below we start those options that represent states of behavior capable of being toggled on and off.\\ +% +% \begin{tabular}{p{0.2\textwidth}p{0.6\textwidth}} +% & {\large\bfseries Enable/Disable Formatting}\\[1ex] +% \bfseries\texttt{mainmatter} & \bfseries Enable formatting attributes (see below), starting at the beginning of a document.\\[1ex] +% \texttt{frontmatter} & Disable formatting \emph{before} the invocation of \cmd{\NamesActive} while retaining automatic full and short forms. This option fits well, e.g., with a foreword from a contributor. See Section~\ref{sec:SectionFormat}.\\[1ex] +% & {\large\bfseries Enable/Disable Indexing}\\[1ex] +% \bfseries\texttt{index} & \bfseries Create index entries in place with names.\\[1ex] +% \texttt{noindex} & Prevent indexing before the invocation of the macro \cmd{\IndexActive}. See Section~\ref{sec:SectionIndex}.\\[2ex] +% \end{tabular} +% +% \noindent The options above broadly affect whether formatting and indexing are ``on'' or ``off.'' They set the initial states of formatting and indexing, which can be toggled on and off respectively with \cmd{\NamesActive} and \cmd{\IndexActive} on the one hand and \cmd{\NamesInactive} and \cmd{\IndexInactive} on the other. +% +% This package makes a distinction between \textit{formatting}, i.e., font weight, style, family, placement, and so on, and \textit{form}, i.e., capitalization and name order. The options on the next page alter the printing and capitalization of names apart from their formatting, but they do not change index entries: +% +% \begin{tabular}{p{0.2\textwidth}p{0.6\textwidth}} +% & {\large\bfseries Capitalize Entire Surnames}\\[1ex] +% \bfseries\texttt{normalcaps} & \bfseries Do not perform any special capitalization.\\[1ex] +% \texttt{allcaps} & Capitalize entire surnames in the manner of some romanized Japanese contexts. Note that this only affects the printed form; no capitalization occurs in the index. In that case, the user should type in the caps manually.\\[1ex] +% & {\large\bfseries Reverse Name Order}\\[1ex] +% \bfseries\texttt{notreversed} & \bfseries Print names in the order specified by \cmd{\Name} and the other macros.\\[1ex] +% \texttt{allreversed} & Print name forms in ``smart'' reverse order. See Sections~\ref{sec:suffix} and~\ref{sec:Eastern}.\\[1ex] +% \texttt{allrevcomma} & Not the same as the |comma| option or the \cmd{\ShowComma} macro. This causes all names to print in reverse Western order, with a comma between the surname and the other names.\\[2ex] +% \end{tabular} +% +% \noindent Macros that toggle the states represented by these options include \cmd{\AllCapsActive} and \cmd{\AllCapsInactive} for capitalizing entire surnames, \cmd{\ReverseActive} and \cmd{\ReverseInactive} for reversing name order, and \cmd{\ReverseCommaActive} and \cmd{\ReverseCommaInactive} to aid making lists in last-comma-first order. An even finer grain of control exists with the macros \cmd{\CapName}, \cmd{\RevName}, and \cmd{\RevComma}, which activate these features on a per-use basis.\\ +% +% \begin{tabular}{p{0.2\textwidth}p{0.6\textwidth}} +% & {\large\bfseries Formatting Attributes}\\[1ex] +% \texttt{alwaysformat} & With the \texttt{mainmatter} option or after \cmd{\NamesActive}, this option causes the formatting options below to affect every occurrence of \cmd{\Name}, not just the first use of a name. This recalls some contexts where German \emph{Sperrdruck} is used. See also the material on custom formatting (Section~\ref{sec:formatting}).\\[1ex] +% \bfseries\texttt{smallcaps} & \bfseries Set the first use of a name in small caps.\\[1ex] % \texttt{italic} & Italicize the first occurrence of a name.\\[1ex] % \texttt{boldface} & Set the first use of a name in boldface.\\[1ex] -% \texttt{noformat} & This formatting option creates no special formatting, but it does not alter the formatting mechanism like the \texttt{frontmatter} option.\\ +% \texttt{noformat} & This is a ``do nothing'' format that merely suppresses the ``look'' of formatting without disabling the mechanism itself.\\ % \end{tabular} % \clearpage % % \subsection{Quick Start Guide} % \label{sec:start} % -% This general section gets one using about 60\% of the package features right away. The seven basic patterns for names are:\\ -% -% \begin{small} -% \begin{tabular}{ll} -% \normalsize Pattern&\normalsize Restrictions\\ -% \cmd{\Name}\oarg{Forenames}\marg{Surnames}\dotfill\hbox{}&\emph{none}\\ -% \cmd{\Name}\oarg{Forenames}\marg{Surnames, Suffix}\dotfill\hbox{}&\texttt{comma}, \texttt{nocomma}\\ -% \cmd{\Name}\oarg{Forenames}\marg{Surnames}\oarg{Nicknames}\dotfill\hbox{}&\emph{none}\\ -% \cmd{\Name}\oarg{Forenames}\marg{Surnames, Suffix}\oarg{Nicknames}&\texttt{comma}, \texttt{nocomma}\\ -% \cmd{\Name}\marg{Mononym}\dotfill\hbox{}&\emph{none}\\ -% \cmd{\Name}\marg{Mononym, Suffix or Sobriquet}\dotfill\hbox{}&\texttt{comma}, \texttt{nocomma}\\ -% \cmd{\Name}\oarg{Mononym}\oarg{Sobriquet}\dotfill\hbox{}&\cmd{\AKA} and \cmd{\PName}\\ -% \end{tabular} -% \end{small}\\[2ex] -% The comma and nocomma options affect the appearance of names. That is especially true for the last two forms above. These patterns apply to all macros that accept a name form, with some restrictions. -% -% \subsubsection{Hints for Easier Usage} +% This general section gets one using many of the package features right away. Read the columns below in a left to right, top to bottom order. The basic patterns for \cmd{\Name}\oarg{arg1}\marg{arg2}\oarg{arg3} are:\\ +% +%\begin{tikzpicture}[line/.style={draw,thick}] +% \node [matrix,column sep=4cm] (tipsi) at (3,3) +% { +% \node[text width=2cm,align=left](opt){\footnotesize Add to force full name.}; & +% \node[text width=4cm,align=left](grp){\footnotesize Add before immediately subsequent |[|text in braces|]| if \meta{arg3} not used; else omit.}; \\ +% }; +% \node [matrix] (macro) at (2,1) +% { +% \node(cmd){\bfseries\texttt{\textbackslash Name}}; & +% \node(star){\bfseries\texttt{*}}; & +% \node(arg1){\bfseries\texttt{[}\textit{arg1}\texttt{]}}; & +% \node(arg2){\bfseries\texttt{\{}\textit{arg2}\texttt{\}}}; & +% \node(arg3){\bfseries\texttt{[}\textit{arg3}\texttt{]}}; & +% \node(braces){\bfseries\texttt{\{\}}}; \\ +% }; +% \node [matrix,column sep=1em] (tipsii) at (3,-2.5) +% { +% \node[align=left](a1) +% { +% \textit{forename(s)}\\ +% \textit{forename(s)}\\ +% \textit{forename(s)}\\ +% \textit{forename(s)}\\ +% \meta{empty}\\ +% \meta{empty}\\ +% \meta{empty}\\ +% \textit{Eastern FNN}\\ +% \meta{empty}\\ +% \meta{empty}\\ +% }; & & & +% \node[align=left](a2) +% { +% \textit{surname(s)}\\ +% \textit{surname(s)}\texttt{, }\textit{Suffix}$^1$\\ +% \textit{surname(s)}\\ +% \textit{surname(s)}\texttt{, }\textit{Suffix}$^1$\\ +% \textit{mononym}\\ +% \textit{mononym}\texttt{, }\textit{Affix}$^1$\\ +% \textit{mononym}\\ +% \textit{Eastern SNN}$^4$\\ +% \textit{Eastern SNN}\texttt{, }\textit{FNN}$^{1,5}$\\ +% \textit{Eastern SNN}\\ +% }; & & +% \node[align=left](a3) +% { +% \meta{empty}\\ +% \meta{empty}\\ +% \textit{Nickname(s)}$^2$\\ +% \textit{Nickname(s)}$^2$\\ +% \meta{empty}\\ +% \meta{empty}\\ +% \textit{Affix}$^3$\\ +% \meta{empty}\\ +% \meta{empty}\\ +% \textit{Eastern FNN}$^{3,5}$\\ +% }; \\ +% }; +% \begin{scope}[every path/.style=line] +% \path (opt) -- (star); +% \path (grp) -- (braces); +% \path (arg1) -- (a1); +% \path (arg2) -- (a2); +% \path (arg3) -- (a3); +% \end{scope} +%\end{tikzpicture} +% +% \indent\textsuperscript{1}The pattern \cmd{\Name}\oarg{forenames}\marg{surnames, suffix} and all patterns thereafter with the mandatory argument \meta{Name$_1$, Name$_2$} cannot be used with the |comma| option or in an instance where \cmd{\ShowComma} is used.\\[1ex] +% \indent\textsuperscript{2}The presence of a nickname is determined when both forename and nickname are present. In that case, the latter is swapped with the former.\\[1ex] +% \indent\textsuperscript{3}When \meta{arg1} is empty, \meta{arg3} is an affix. That form cannot be used with \cmd{\PName} and \cmd{\AKA}, but it does work with |comma| and \cmd{\ShowComma}.\\[1ex] +% \indent\textsuperscript{4}When expressing Eastern names via \cmd{\Name}\oarg{Eastern FNN}\marg{Eastern SNN}, they will appear in the index as the Western form \meta{SNN, FNN} even if \cmd{\RevName} is used to create an Eastern word order in the text.\\[1ex] +% \indent\textsuperscript{5}When expressing Eastern names using the form \cmd{\Name}\marg{Eastern SNN, FNN} or \cmd{\Name}\marg{Eastern SNN}\oarg{Eastern FNN}, such names will appear in the index using the Eastern form \meta{SNN FNN} even if \cmd{\RevName} is used to create a Western word order in the text.\\[1.5ex] +% If given the choice, use the |nocomma| option and the \meta{Name$_1$, Name$_2$} forms for suffixes and affixes in order to take advantage of extra space removal and other features that minimize possible errors. +% +% \subsubsection{Additional Hints} +% \IndexInactive\NamesInactive % \begin{tabular}{lp{4in}} -% Q:&There is too much space between the initials in the names.\\[0.5ex] -% A:&Bringhurst's \emph{Elements of Typographic Style} discourages full spaces between initials, calling for no spaces or thin spaces. Using \cmd{\frenchspacing} greatly simplifies related issues and it conforms with Bringhurst's guidelines.\\[1ex] -% Q:&I see two index entries that are exactly the same!\\[0.5ex] -% A:&As of version 1.4, the effect of spurious spaces in the printed names is negligible, but those spaces cause duplicate index entries. If you follow those entries to their pages, chances are that you will be able to track down the offending errors in short order.\\[1ex] -% Q:&OK, you threw a bazillion macros at me, I used them all, and now I am Googling your personal info because I'm on a deadline and you will soon have a date with a Cyberman.\\[0.5ex] -% A:&Hop in your TARDIS and leave a sticky note to yourself in the past to start just with \cmd{\Name} and spend a few pages breaking it in. See what happens in the index too. Use the other macros only when you need a function that the current ones are not fulfilling.\\[1ex] -% Q:&|\Name[Davey]{Jones}[a Monkee]| shows ``a Monkee Jones.''\\[0.5ex] -% A:&\cmd{\Name}\oarg{Forenames}\marg{Surnames}\oarg{Nickname} creates a nickname, not a sobriquet.\\[1ex] +% Q:&Too many macros! I quit.\\[0.5ex] +% A:&The macro you will use the most is \cmd{\Name}. Just use it until you discover that you need one of the other macros.\\[1ex] % Q:&I see ``Paragraph ended\dots'' or ``Missing \meta{grouping token} inserted'' and execution stops.\\[0.5ex] -% A:&Check if the |{|braces|}| and |[|brackets|]| are balanced.\\[1ex] -% \end{tabular} -% -% \begin{tabular}{lp{4in}} -% Q:&|\Name[Henry]{VII}[Tudor]| prints either ``Tudor VII'' or ``VII''; |\FName[Henry]{VII}[Tudor]| prints either ``Tudor VII'' or ``Tudor.'' May I hurt you now?\\[0.5ex] -% A:&The pattern \cmd{\Name}\oarg{King}\marg{Suffix} fails because even though authorities like Mulvany, \emph{Indexing Books} talk about optional surnames, it is far easier to encode royal names and mononyms as if they were surnames. Use either |\Name{Henry, VII}| with the \texttt{nocomma} option or |\Name{Henry}[VII]| with the \texttt{comma} option. Indicate that he was of House Tudor manually in the text and consider using something like |\TagName{Henry, VII}{ (Tudor)}| to indicate his house as part of the index entry.\\[1ex] -% Q:&|\Name{Aethelred, the really}[Unreadig]| shows ``Aethelred the really Unreadig.''\\[0.5ex] -% A:&Its index entry is messed up too. The form \cmd{\Name}\marg{Mononym, Suffix}\oarg{Sobriquet} creates two sobriquets, but badly. This is because the sobriquet feature of the final argument is best used with the \texttt{comma} option while the suffixed form is best used with the \texttt{nocomma} option. Mix them at your peril or at your whimsy.\\[1ex] -% Q:&I tried |\AKA{Boris}[the Animal]{Just Boris}| and that went about as well as getting my head used as a bowling ball.\\[0.5ex] -% A:&You cannot use \cmd{\AKA}\marg{Mononym}\oarg{Sobriquet}\dots\ because that would call for a macro with an ambiguous argument list that forces adding extra explicit arguments to work properly. Then you have to remember if you did or did not\,---\,or should or should not\,---\,add the explicit macro, and by that time the point of diminishing returns would have passed for both the package author and the package users. Sorry, but the manual solution is better. That also applies to the pattern \cmd{\AKA}\oarg{Forenames}\marg{Surnames}\oarg{Nicknames}\dots\ and the use of \cmd{\PName}.\\[1ex] +% A:&Check that the |{|braces|}| and |[|brackets|]| are balanced.\\[1ex] +% Q:&There is too much space between the initials in the names.\\[0.5ex] +% A:&Bringhurst's \emph{Elements of Typographic Style} calls for no spaces or thin spaces between initials. Use \cmd{\frenchspacing}.\\[1ex] +% Q:&|\Name[Davey]{Jones}[a Monkee]| shows ``\Name[Davey]{Jones}[a Monkee]'' or just ``\Name[Davey]{Jones}[a Monkee].'' \cmd{\FName} gives ``\FName[Davey]{Jones}[a Monkee].''\\[0.5ex] +% A:&\cmd{\Name}\oarg{Forenames}\marg{Surnames}\oarg{Nicknames} creates a nickname, not an affix or sobriquet.\\[1ex] +% Q:&|\Name[Henry]{VII}| prints either ``\Name*[Henry]{VII}'' or ``\Name[Henry]{VII}.'' Adding [Tudor] creates ``\Name*[Henry]{VII}[Tudor]'' and ``\Name[Henry]{VII}[Tudor].''\\[0.5ex] +% A:&\cmd{\Name}\oarg{King}\marg{Affix} will not work. Even though Mulvany, \emph{Indexing Books}, talks about forenames and optional surnames for royals, we prevent ambiguity by encoding royal names as surnames with optional affixes. Use \cmd{\Name}\marg{King, Affix} if possible, or \cmd{\Name}\marg{King}\oarg{Affix} with the |comma| option. |\Name{Henry, VII}| gives ``\Name{Henry, VII}'' and ``\Name{Henry, VII}.'' Manually add ``Tudor'' in the text and use |\TagName{Henry, VII}{, Tudor}| to add the tag automatically to the index entry.\\[1ex] +% Q:&|\Name{Aethelred, the really}[Unraedig]| shows ``\Name{Aethelred, the really}[Unraedig]'' or ``\Name{Aethelred, the really}[Unraedig].''\\[0.5ex] +% A:&The form \cmd{\Name}\marg{Mononym, Affix$_1$}\oarg{Affix$_2$} creates two sobriquets, but badly. Use either \cmd{\Name}\marg{Mononym, Affix} or \cmd{\Name}\marg{Mononym}\oarg{Affix} with |comma|. Mix the forms either at your peril or at your whimsy.\\[1ex] +% Q:&|\AKA{Boris}[the Animal]{Just Boris}| fails.\\[0.5ex] +% A:&\cmd{\AKA} fails with the \marg{Mononym}\oarg{Affix} pattern in order to avoid the collision of optional arguments. See Section~\ref{sec:AKA}.\\[1ex] % Q:&So how do I deal with some stage names and the like?\\[0.5ex] % A:&Use a forename or first initials to prevent failure:\\[0.5ex] -% &OK: |\Name[J.]{Kreskin}[The Amazing]|\\&\qquad|\AKA[J.]{Kreskin}[Joseph]{Kresge}|\\[0.5ex] +% &OK: |\Name[J.]{Kreskin}[The Amazing] |\Name[J.]{Kreskin}[The Amazing]\\&\quad|(\AKA[J.]{Kreskin}[Joseph]{Kresge})| (\AKA[J.]{Kreskin}[Joseph]{Kresge})\\[0.5ex] % &FAIL: |\Name{Kreskin}[The Amazing]|\\&\qquad|\AKA{Kreskin}[Joseph]{Kresge}|\\[1ex] -% Q:&\cmd{\Name} has a full name in the source, but it is shorter in the text!\\[0.5ex] -% A:&And you did not mean that to happen. Use \cmd{\Name*} in that case. It can be easy to forget that \cmd{\Name} can automatically shorten a reference even if you use the full name in the source text. Remember:\\[0.5ex] -% &|\Name[John]{Smith}| gives \Name[John]{Smith}\\[0.5ex] -% &|\Name[John]{Smith}| gives \Name[John]{Smith}\\[0.5ex] -% &|\FName[John]{Smith}| gives \FName[John]{Smith}\ForgetName[John]{Smith}\\[1ex] % \end{tabular} % % \begin{tabular}{lp{4in}} -% Q:&How do I refer to ``Iron Mike'' Tyson?\\[0.5ex] -% A:&Very, very carefully. Use |``\Name[Mike]{Tyson}[Iron Mike]''| and |\SubvertName[Mike]{Tyson}\Name[Mike]{Tyson}| to produce the example above. Or create two separate names and cross-reference them manually in order to track them both in the index (see page \pageref{manualxref}). Or use |``\AKA[Mike]{Tyson}{Iron Mike}''| if you just want to cross-reference the main name.\\[1ex] -% Q:&I had seen errors like ``Argument of |\Name| has an extra |}|''\\[0.5ex] -% A:&Older versions of \texttt{nameauth} were susceptible to fragility and moving arguments. Version 1.4 and later of \textsf{nameauth} address many of these issues.\\[1ex] +% Q:&How do I refer to ``\SubvertName[Mike]{Tyson}\FName[Mike]{Tyson}[Iron Mike]'' \Name[Mike]{Tyson}?\\[0.5ex] +% A:&Very carefully. One way uses |``\SubvertName[Mike]{Tyson}| |\FName[Mike]{Tyson}[Iron Mike]''| |\Name[Mike]{Tyson}| to produce the text above. Other manual methods are discussed on page \pageref{manualxref}. Using |``\AKA[Mike]{Tyson}{Iron Mike}''| creates ``\AKA[Mike]{Tyson}{Iron Mike}'' in the text and a \emph{see}-type cross-reference to the main name in the index.\\[1ex] +% Q:&\cmd{\Name} has a full name in the source, but it is shorter in the text!\\[0.5ex] +% A:&And you did not mean that to happen. Use \cmd{\Name*} in that case. It can be easy to forget that \cmd{\Name} auto-formats its arguments even if you type them out.\\[1ex] % \end{tabular} +% \IndexActive\NamesActive +% % \subsubsection{Error Handling} % \label{sec:error} % -% Except for the indexing parts of macros, most of the macros in this package print any erroneous arguments in the text, but not in the index. To find errors, one can look at index entries for irregularities or examine package warnings. Unless there is a syntax error, all macros emit meaningful warnings. Convenience macros like \cmd{\PName} produces warnings via their component macros \cmd{\Name} and \cmd{\AKA}. +% Version 1.5 introduces space removal in \meta{Name$_1$, Name$_2$} pairs that mitigates problems in both the text and in the index. Older versions of \texttt{nameauth} were susceptible to fragility and moving arguments. Version 1.4 and later of \textsf{nameauth} address many of these issues. +% +% Except for the indexing parts of macros, most of the macros in this package print any erroneous arguments in the text, but not in the index. To find errors, one can look at index entries for irregularities or examine package warnings. Unless there is a syntax error, all macros that produce output also emit meaningful warnings. Convenience macros like \cmd{\PName} produce warnings via their component macros, e.g., \cmd{\Name} and \cmd{\AKA}. % % Not all warnings are created equal. For example, the multiple creation of a cross-reference with \cmd{\AKA} will generate a warning, but it will have no ill effects and may be intentional. Other warnings, especially in the case of indexing macros, indicate that the macro produced no output.\\ % @@ -279,28 +359,28 @@ % % \begin{quote}\small % \begin{tabular}{ll}\hline -% {\normalsize\strut}|\Name[Albert]{Einstein}| & \Name[Albert]{Einstein}\\ -% |\Name*[Albert]{Einstein}| & \Name*[Albert]{Einstein}\\ -% |\Name[Albert]{Einstein}| & \Name[Albert]{Einstein}\\\hline -% {\normalsize\strut}|\Name{Confucius}| & \Name{Confucius}\\ -% |\Name*{Confucius}| & \Name{Confucius}\\ -% |\Name{Confucius}| & \Name*{Confucius}\\\hline -% {\normalsize\strut}|\Name[M.T.]{Cicero}[Marcus Tullius]| & \Name[M.T.]{Cicero}[Marcus Tullius]\\ -% |\Name*[M.T.]{Cicero}[Marcus Tullius]| & \Name*[M.T.]{Cicero}[Marcus Tullius]\\ -% |\Name[M.T.]{Cicero}[Marcus Tullius]| & \Name[M.T.]{Cicero}[Marcus Tullius]\\\hline -% {\normalsize\strut}|\Name{Charles}[the Bald]| & \Name{Charles}[the Bald]\\ -% |\Name*{Charles}[the Bald]| & \Name*{Charles}[the Bald]\\ -% |\Name{Charles}[the Bald]| & \Name{Charles}[the Bald]\\\hline +% {\large\strut}|\Name[Albert]{Einstein}| & \Name[Albert]{Einstein}\\ +% {\large\strut}|\Name*[Albert]{Einstein}| & \Name*[Albert]{Einstein}\\ +% {\large\strut}|\Name[Albert]{Einstein}| & \Name[Albert]{Einstein}\\\hline +% {\large\strut}|\Name{Confucius}| & \Name{Confucius}\\ +% {\large\strut}|\Name*{Confucius}| & \Name{Confucius}\\ +% {\large\strut}|\Name{Confucius}| & \Name*{Confucius}\\\hline +% {\large\strut}|\Name[M.T.]{Cicero}[Marcus Tullius]| & \Name[M.T.]{Cicero}[Marcus Tullius]\\ +% {\large\strut}|\Name*[M.T.]{Cicero}[Marcus Tullius]| & \Name*[M.T.]{Cicero}[Marcus Tullius]\\ +% {\large\strut}|\Name[M.T.]{Cicero}[Marcus Tullius]| & \Name[M.T.]{Cicero}[Marcus Tullius]\\\hline +% {\large\strut}|\Name{Charles}[the Bald]| & \Name{Charles}[the Bald]\\ +% {\large\strut}|\Name*{Charles}[the Bald]| & \Name*{Charles}[the Bald]\\ +% {\large\strut}|\Name{Charles}[the Bald]| & \Name{Charles}[the Bald]\\\hline % \end{tabular} % \end{quote} % -% \noindent \cmd{\Name} connects the \meta{FNN} to the \meta{SNN} to create respective printed and indexed forms, as illustrated in Section \ref{sec:PatRef} and thereafter. The invocation of \cmd{\Name} always prints the \meta{SNN} field. \cmd{\Name} prints the ``full name'' at the first occurrence, then only the partial form thereafter. \cmd{\Name*} always prints the full name. +% \noindent \cmd{\Name} connects the \meta{FNN} to the \meta{SNN} to create respective printed and indexed forms, as illustrated in Section~\ref{sec:PatRef} and thereafter. The invocation of \cmd{\Name} always prints the \meta{SNN} field. \cmd{\Name} prints the ``full name'' at the first occurrence, then only the partial form thereafter. \cmd{\Name*} always prints the full name. % -% Nicknames and sobriquets of some historical figures are implemented in slightly different ways. A nickname assumes the presence of \meta{FNN} and \meta{SNN} (see the example for \Name[M.T.]{Cicero}[Marcus Tullius] above). The \meta{alternate names} field allows a nickname to replace the \meta{FNN} field in the text while keeping the \meta{FNN} field in the index. Nicknames are truly optional. As long as the \meta{FNN} and \meta{SNN} fields are consistent, the index entries will be consistent. The shorter name printed by \cmd{\Name} will not print forenames or nicknames. See also Section \ref{sec:start} and \cmd{\FName} below. +% Nicknames and sobriquets of some historical figures are implemented in slightly different ways. A nickname assumes the presence of \meta{FNN} and \meta{SNN} (see the example for \Name[M.T.]{Cicero}[Marcus Tullius] above). The \meta{alternate names} field allows a nickname to replace the \meta{FNN} field in the text while keeping the \meta{FNN} field in the index. Nicknames are truly optional. As long as the \meta{FNN} and \meta{SNN} fields are consistent, the index entries will be consistent. The shorter name printed by \cmd{\Name} will not print forenames or nicknames. See also Section~\ref{sec:start} and \cmd{\FName} below. % % In the example of \Name*{Charles}[the Bald] above, ``the Bald'' is not a nickname because no \meta{FNN} are present. In that case the \meta{alternate names} field is appended to the \meta{SNN} in both the printed form \emph{and} in the index form. This behavior implies that, while ``the Bald'' uses an optional parameter, it is not truly optional once used. % -% Later we shall see that a similar effect, perhaps more preferable, can be achieved with the default \texttt{nocomma} option and |\Name{Charles, the Bald}|, as seen in Section \ref{sec:suffix}. One must always be consistent in using these forms. Otherwise one will get bogus index entries and errors in the text that are difficult to track. +% Later we shall see that a similar effect, perhaps more preferable, can be achieved with the default \texttt{nocomma} option and |\Name{Charles, the Bald}|, as seen in Section~\ref{sec:suffix}. One must always be consistent in using these forms. Otherwise one may get bogus index entries and errors in the text that are difficult to track. % \clearpage % % \subsubsection{Forenames: \texttt{\textbackslash FName}} @@ -315,14 +395,14 @@ % % \begin{quote}\small % \begin{tabular}{ll}\hline -% {\normalsize\strut}|\FName[Albert]{Einstein}| & \FName[Albert]{Einstein}\\ -% |\FName[Albert]{Einstein}| & \FName[Albert]{Einstein}\\\hline -% {\normalsize\strut}|\FName{Confucius}| & \FName{Confucius}\\ -% |\FName{Confucius}| & \FName{Confucius}\\\hline -% {\normalsize\strut} |\FName[M.T.]{Cicero}[Marcus Tullius]| & \FName[M.T.]{Cicero}[Marcus Tullius]\\ -% |\FName[M.T.]{Cicero}[Marcus Tullius]| & \FName[M.T.]{Cicero}[Marcus Tullius]\\\hline -% {\normalsize\strut} |\FName{Charles}[the Bald]| & \FName{Charles}[the Bald]\\ -% |\FName{Charles}[the Bald]| & \FName{Charles}[the Bald]\\\hline +% {\large\strut}|\FName[Albert]{Einstein}| & \FName[Albert]{Einstein}\\ +% {\large\strut}|\FName[Albert]{Einstein}| & \FName[Albert]{Einstein}\\\hline +% {\large\strut}|\FName{Confucius}| & \FName{Confucius}\\ +% {\large\strut}|\FName{Confucius}|& \FName{Confucius}\\\hline +% {\large\strut}|\FName[M.T.]{Cicero}[Marcus Tullius]| & \FName[M.T.]{Cicero}[Marcus Tullius]\\ +% {\large\strut}|\FName[M.T.]{Cicero}[Marcus Tullius]| & \FName[M.T.]{Cicero}[Marcus Tullius]\\\hline +% {\large\strut}|\FName{Charles}[the Bald]| & \FName{Charles}[the Bald]\\ +% {\large\strut}|\FName{Charles}[the Bald]| & \FName{Charles}[the Bald]\\\hline % \end{tabular} % \end{quote} % @@ -330,73 +410,143 @@ % % \begin{quote}|``\FName[Chesley B.]{Sullenberger, III}[Sully]''|\quad``\FName[Chesley B.]{Sullenberger, III}[Sully]''\end{quote} % -%\noindent A good way to cut keystrokes would be to assign the above macro to the control sequence \cmd{\Sully}. With comma-delimited suffixes we note special cases governed by the \texttt{nocomma} package option (see Section \ref{sec:suffix}). These include names like like the fictional \FName[J.D.]{Rock, III} and the real \FName{Charles, V}: -% \begin{quote}|\FName[J.D.]{Rock, III}|, ``\FName[J.D.]{Rock, III}''; |\FName{Charles, V}|, ``\FName{Charles, V}.''\end{quote} -% \cmd{\FName} suppresses extra periods if a forename with initials occurs at the end of a sentence, as in |``who shot \FName[J.D.]{Rock, III}.''| ``who shot \FName[J.D.]{Rock, III}.'' +%\noindent A good way to cut keystrokes would be to assign the above macro to the control sequence \cmd{\Sully}. % -% \subsection{Advanced Naming Topics} -% \subsubsection{Naming Conventions} +% \subsubsection{Full Stop Detection} % -% \DescribeMacro{\CapThis} -% English names with the particles \emph{de}, \emph{de\ la}, \emph{d'}, \emph{von}, \emph{van}, and \emph{ten} generally keep them with the last name, using varied capitalization. \emph{Le}, \emph{La}, and \emph{L'} are capitalized unless preceded by \emph{de}. In English, these particles go in the \meta{SNN} field of \cmd{\Name}, e.g., \ForgetName[Walter]{de la Mare}\Name[Walter]{de la Mare}. To capitalize the first particle in a subsequent \cmd{\Name} reference at the beginning of a sentence, use |\CapThis\Name[Walter]{de la Mare}|. \CapThis\Name[Walter]{de la Mare} will think it fair. \CapThis\Name{du Cange} (\AKA{du Cange}[Charles]{du Fresne}) would too, because \cmd{\CapThis} now works for all instances of \cmd{\Name} as of version 1.4. +% Suffixes and initials could result in the period of an abbreviation like ``Jr.,'' ``Sr.,'' and ``d.\,\"{A}.'' (\textit{der \"{A}ltere}) followed by the sentence full stop. These macros check for such collisions and drop the extra full stop as needed: % -% Names foreign to English usually put these particles in the \meta{FNN} field of \cmd{\Name}. Yet these particles are not first names. Using \cmd{\FName} with alternate forenames avoids that issue. See the examples starting on page \pageref{FirstVonLast}. - +% \begin{quote}\small\ForgetName[Martin Luther]{King, Jr.} +% \begin{tabular}{ll} +% {\large\strut}|\Name[Martin Luther]{King, Jr.}.| & \Name[Martin Luther]{King, Jr.}.\\ +% {\large\strut}|\Name[Martin Luther]{King, Jr.}.| & \Name[Martin Luther]{King, Jr.}.\\ +% {\large\strut}|\Name[Martin Luther]{King, Jr.}| & \Name[Martin Luther]{King, Jr.} (e.g., in a sentence)\\ +% {\large\strut}|\Name*[Martin Luther]{King, Jr.}.| & \Name*[Martin Luther]{King, Jr.}.\\ +% {\large\strut}|\Name*[Martin Luther]{King, Jr.}| & \Name*[Martin Luther]{King, Jr.} +% \end{tabular} +% \end{quote} +% See Section~\ref{sec:suffix} for more on comma-delimited suffixes. Full-stop detection also works with \cmd{\FName} in cases like the fictional \FName[J.D.]{Rock, III} where one might discuss |``who shot \FName[J.D.]{Rock, III}.''| ``who shot \FName[J.D.]{Rock, III}.'' % -% \subsubsection{Hyphenation} +% \subsection{Affixes and Eastern Names} % -% I find it helpful to use respectively the \textsf{babel} or \textsf{polyglossia} packages with name hyphenation. If one is using English as the main language, the default hyphenation patterns may not suffice. For example, the name \Name[John]{Strietelmeier} may break thus: ``Stri-etelmeier.'' That is fixed by creating a \cmd{\de} macro equivalent to |\newcommand{\de}[1]{\foreignlanguage{ngerman}{#1}}| (using \textsf{babel}) and writing |\de{\Name[John]{Strietelmeier}}|. +% \subsubsection{Comma-Delimited Suffixes} +% \label{sec:suffix} % -% One can insert optional hyphens in the arguments of \cmd{\Name} and friends but that must be done \emph{consistently} to avoid variants being treated as different names. +% Before we consider the topic of non-Western names, we must first engage the concept of suffixes and affixes as expressed in the \meta{Name$_1$, Name$_2$} pattern used in the mandatory argument of \cmd{\Name}. % -% \subsubsection{Suffixes and Non-Western Names} -% \label{sec:suffix} -% % \DescribeMacro{\ShowComma} -% This package has two main settings: \texttt{comma} and \texttt{nocomma}. These settings are meant to accommodate different typesetting conventions. When using the default \texttt{nocomma} option, the user can force a comma to appear between the name and suffix in the \meta{SNN} field as appropriate by putting \cmd{\ShowComma} before \cmd{\Name} and friends, such as |\ShowComma\Name[Louis]{Gossett, Jr.}| \ShowComma\Name[Louis]{Gossett, Jr.}. +% The |comma| option is restrictive, but helpful in reproducing older texts. \cmd{\ShowComma} permits the default |nocomma| option, yet forces a comma to appear between the name and suffix: |\ShowComma\Name[Louis]{Gossett, Jr.}| \ShowComma\Name[Louis]{Gossett, Jr.}. A caveat is that one must use \cmd{\ShowComma} consistently with that name thereafter or risk errors. -%The \texttt{comma} option restricts the flexibility of expressing some royal names and basic Eastern names. \cmd{\AKA} and \cmd{\PName} cannot create cross-references to these forms, but \cmd{\AKA} can cross-reference \emph{from} these forms in its second set of arguments. These restricted forms are shown below: +%The |comma| option and \cmd{\ShowComma} restrict the use of some royal names and Eastern names. \cmd{\AKA} and \cmd{\PName} cannot create cross-references to these forms, but \cmd{\AKA} can cross-reference \emph{from} these forms in its second set of arguments. These restricted forms are shown below: % % \begin{quote}\ForgetName{Henry}[VIII] % \begin{tabular}{ll}\hline -% {\normalsize\strut}|\Name{Henry}[VIII]| & \Name{Henry}[VIII]\\ -% |\Name{Henry}[VIII]| & \Name{Henry}[VIII]\\\hline -% {\normalsize\strut}|\Name{Chiang}[Kai-shek]| & \Name{Chiang}[Kai-shek]\\ -% |\Name{Chiang}[Kai-shek]| & \Name{Chiang}[Kai-shek]\\\hline +% {\large\strut}|\Name{Henry}[VIII]| & \Name{Henry}[VIII]\\ +% {\large\strut}|\Name{Henry}[VIII]| & \Name{Henry}[VIII]\\\hline +% {\large\strut}|\Name{Chiang}[Kai-shek]| & \Name{Chiang}[Kai-shek]\\ +% {\large\strut}|\Name{Chiang}[Kai-shek]| & \Name{Chiang}[Kai-shek]\\\hline % \end{tabular} % \end{quote} % -% \noindent Again, alternate forenames \emph{override} the \meta{FNN} in the text. Sobriquets are \emph{appended} to \meta{SNN}. The presence or absence of \meta{FNN} triggers this difference between the two actions\,---\,\textbf{this is a central concept}. +% \noindent We remember that these forms work because no \meta{FNN} are present, only the \cmd{\Name}\marg{mononym}\oarg{affix} type pattern. Of course, the mononym field can have more than one word in it, as can the affix. +% +% Using the default package option \texttt{nocomma} with comma-delimited suffixes offers a more robust method that can handle several different name types quite flexibly. We begin with the idea of a name and a suffix. One cannot write |\Name[Oskar]{Hammerstein}[II]| without getting the likes of ``II Hammerstein.'' On the other hand, |\Name[Oskar]{Hammerstein, II}| produces \Name[Oskar]{Hammerstein, II} the first time and \Name[Oskar]{Hammerstein, II} thereafter. One must always include a comma as a suffix delimiter; trailing commas are ignored. Automatic space removal and formatting helps reduce potential error. % -%There is perhaps a less-confusing manner of working with such names. \cmd{\Name}\,---\,not \cmd{\Name*}\,---\,truncates comma-delimited suffixes from last names. For example, it prints the name \Name[Oskar]{Hammerstein, II} the first time and \Name[Oskar]{Hammerstein, II} thereafter. One must always use a comma to activate this, e.g., |\Name[Oskar]{Hammerstein, II}|. Spaces (or no spaces) between the comma and the suffix must remain consistent or else they will produce duplicate index entries. Extra space does not, however, affect the formatted output. +% We can move beyond suffixes to work with more complex examples, including royal names and basic Eastern name forms: % -% Again, \textbf{the comma is essential to how this feature works}. Using, e.g., |\Name{Base, suff1, suff2}| for the \meta{SNN} argument yields: \IndexInactive \Name{Base, suff1, suff2}; then \Name{Base, suff1, suff2}.\IndexActive\ See how only the first comma is suppressed. +% \begin{quote}\ForgetName{Sun, Yat-sen} +% \begin{tabular}{ll}\hline +% {\large\strut}|\Name{Louis, XIV}| & \Name{Louis, XIV}\\ +% {\large\strut}|\Name{Louis, XIV}| & \Name{Louis, XIV}\\\hline +% {\large\strut}|\Name{Sun, Yat-sen}| & \Name{Sun, Yat-sen}\\ +% {\large\strut}|\Name{Sun, Yat-sen}| & \Name{Sun, Yat-sen}\\\hline +% \end{tabular} +% \end{quote} % -% These macros keep track of whether the name ends with the period of an abbreviation like ``Jr.'' and ``Sr.'' That should also work with abbreviations like ``d.\,\"{A}.'' (\textit{der \"{A}ltere}). Two periods are not printed when the full name is printed at the end of a sentence. The following example shows the combinations: +% \noindent The benefit to using this form is that one can type |\Name*{Louis, XIV}, the| |``\AKA{Louis, XIV}{Sun King}''| and get \Name*{Louis, XIV}, the ``\AKA{Louis, XIV}{Sun King}'' in the text with an appropriate \emph{see} reference from ``Sun King'' to ``Louis XIV'' in the index. The first method shown above prevents such usage. % -% \begin{quote}\small\ForgetName[Martin Luther]{King, Jr.} -% \begin{tabular}{ll} -% |\Name[Martin Luther]{King, Jr.}.| & \Name[Martin Luther]{King, Jr.}.\\ -% |\Name[Martin Luther]{King, Jr.}.| & \Name[Martin Luther]{King, Jr.}.\\ -% |\Name[Martin Luther]{King, Jr.}| & \Name[Martin Luther]{King, Jr.} (e.g., in a sentence)\\ -% |\Name*[Martin Luther]{King, Jr.}.| & \Name*[Martin Luther]{King, Jr.}.\\ -% |\Name*[Martin Luther]{King, Jr.}| & \Name*[Martin Luther]{King, Jr.} +% Suffix and sobriquet features generally produce the same \emph{output}, yet internally they are \emph{different}. For example, they do not respect each other's first use. One can force them to cooperate, as in Section~\ref{sec:formatting}, but it is not trivial. Users should avoid mixing the two suffix methods shown here. +% +% \subsubsection{Eastern Names} +% \label{sec:Eastern} +% +% This section will work with both \cmd{\Name}\marg{Eastern SNN}\oarg{Eastern FNN} and \cmd{\Name}\marg{Eastern SNN, Eastern FNN}. We have already shown the advantages of preferring the latter form. In particular, this section addresses some features seen in romanized Japanese contexts. Nevertheless, its use may be broader. +% +% One sees in many non-Western contexts that the family name comes first, followed by personal names. The \textsf{nameauth} package offers two routes to that result. Those routes depend on how \cmd{\Name} assembles index entries. \cmd{\Name}\oarg{Eastern FNN}\marg{Eastern SNN} will produce an index entry of the form \meta{Eastern SNN}, \meta{Eastern FNN}. There exists a comma between the names and the default output order is Western. We will see how to change that below. +% +% In contrast, both \cmd{\Name}\marg{Eastern SNN}\oarg{Eastern FNN} and \cmd{\Name}\marg{Eastern SNN, Eastern FNN} produce an index entry of the form \meta{Eastern SNN} \meta{Eastern FNN}. No comma is present in the latter form. Furthermore, in the latter two cases, the default output order is Eastern. +% +% \DescribeMacro{\ReverseActive} +% \DescribeMacro{\ReverseInactive} +% \DescribeMacro{\RevName} +% The way we get these two methods to meet is the reverse output mechanism. One can use the class options described in Section~\ref{sec:options}. One may activate and deactivate reversal with \cmd{\ReverseActive} and \cmd{\ReverseInactive}. One also may activate reversal for one time with \cmd{\RevName}. Using these methods, Western word order can be made to look Eastern and vice-versa. Therefore, the key is to decide the index entry format and choose the name encoding. +% +% The reversing mechanism intelligently swaps name patterns. To illustrate this, we turn off indexing and name formatting and always use full names. A list of Japanese music artists allows us to use \cmd{\RevName}\cmd{\Name}\dots\ and some creativity: +% +% \NamesInactive\IndexInactive +% \begin{quote} +% \begin{tabular}{lll}\hline +% {\large\strut}|\Name*[Aiko]{Nakano}| & \Name*[Aiko]{Nakano} & \RevName\Name*[Aiko]{Nakano}\\ +% {\large\strut}|\Name*{Arai, Akino}| & \Name*{Arai, Akino} & \RevName\Name*{Arai, Akino}\\ +% {\large\strut}|\Name*{Ishida}[Yoko]| & \Name*{Ishida}[Yoko] & \RevName\Name*{Ishida}[Yoko]\\ +% {\large\strut}|\Name*{Yohko}| & \Name*{Yohko} & \RevName\Name*{Yohko}\\\hline % \end{tabular} % \end{quote} -% Using the default package option \texttt{nocomma} with suffix removal, one can use the suffix feature to tweak more possibilities out of \cmd{\Name}. Instead of the sobriquet feature, one could use the following variants: +% \NamesActive\IndexActive\medskip % -% \begin{quote}\ForgetName{Sun, Yat-sen} -% \begin{tabular}{ll}\hline -% {\normalsize\strut} |\Name{Louis, XIV}| & \Name{Louis, XIV}\\ -% |\Name{Louis, XIV}| & \Name{Louis, XIV}\\\hline -% {\normalsize\strut} |\Name{Sun, Yat-sen}| & \Name{Sun, Yat-sen}\\ -% |\Name{Sun, Yat-sen}| & \Name{Sun, Yat-sen}\\\hline +% \DescribeMacro{\AllCapsActive} +% \DescribeMacro{\AllCapsInctive} +% \DescribeMacro{\CapName} +% \vskip-2.8ex\noindent Full capitalization of surnames occurs with \cmd{\AllCapsActive}, \cmd{\AllCapsInactive}, and \cmd{\CapName}. These macros are analogous to the reversing macros above and may be used alone or with those macros, e.g. \cmd{\CapName}\cmd{\RevName}\cmd{\Name}: +% +% \NamesInactive\IndexInactive +% \begin{quote} +% \begin{tabular}{lll}\hline +% {\large\strut}|\Name*[Yoko]{Kanno}| & \CapName\Name*[Yoko]{Kanno} & \CapName\RevName\Name*[Yoko]{Kanno}\\ +% {\large\strut}|\Name*{Shikata, Akiko}| & \CapName\Name*{Shikata, Akiko} & \CapName\RevName\Name*{Shikata, Akiko}\\ +% {\large\strut}|\Name*{Nogawa}[Sakura]| & \CapName\Name*{Nogawa}[Sakura] & \CapName\RevName\Name*{Nogawa}[Sakura]\\ +% {\large\strut}|\Name*{Yohko}| & \CapName\Name*{Yohko} & \CapName\RevName\Name*{Yohko}\\\hline +% \end{tabular} +% \end{quote} +% \NamesActive\IndexActive +% +% \noindent The reversing and capitalization macros also work with \cmd{\AKA}. They affect only the text, not the index. Whoever wants all-cap forms in the index will have to cap everything manually or modify the macros. +% +% \subsection{Other Naming Topics} +% +% \subsubsection{Listing by Surname} +% +%\DescribeMacro{\ReverseCommaActive} +%\DescribeMacro{\ReverseCommaInactive} +%\DescribeMacro{\RevComma} +% Another set of reversing macros, \cmd{\ReverseCommaActive}, \cmd{\ReverseCommaInactive}, and \cmd{\RevComma}, allows the easy generation of lists with surnames, followed by a comma, then forenames. The first two are broad toggles, while the third works on a per-use basis. Here is a good place to show incompatibility between Eastern, medieval, and royal names on the one hand and Western names on the other. An indiscriminate use of \cmd{\RevComma}\cmd{\Name}\dots\ can yield: +% +% \NamesInactive +% \begin{quote} +% \begin{tabular}{lll} +% {\large\strut}\Name*[Jeremy]{Bentham} & \RevComma\Name*[Jeremy]{Bentham} & OK\\ +% {\large\strut}\Name*[J.S.]{Mill}[John Stuart] & \RevComma\Name*[J.S.]{Mill}[John Stuart] & OK\\ +% {\large\strut}\Name*{John, Eriugena} & \RevComma\Name*{John, Eriugena} & FAIL\\ +% {\large\strut}\Name*{Albertus}[Magnus] & \RevComma\Name*{Albertus}[Magnus] & FAIL\\ +% {\large\strut}\Name*{Anaximander} & \RevComma\Name*{Anaximander} & OK\\ % \end{tabular} % \end{quote} +% \NamesActive +% \noindent There is no way around this ``fail'' here because that is exactly what we want to happen in the case of Eastern names. It is not possible for this package to be all things to all names, but it tries to be as broad as possible. +% +% \subsubsection{Naming Standards} +% +% \DescribeMacro{\CapThis} +% English names with the particles \emph{de}, \emph{de\ la}, \emph{d'}, \emph{von}, \emph{van}, and \emph{ten} generally keep them with the last name, using varied capitalization. \emph{Le}, \emph{La}, and \emph{L'} are capitalized unless preceded by \emph{de}. In English, these particles go in the \meta{SNN} field of \cmd{\Name}, e.g., \ForgetName[Walter]{de la Mare}\Name[Walter]{de la Mare}. To capitalize the first particle in a subsequent \cmd{\Name} reference at the beginning of a sentence, use |\CapThis\Name[Walter]{de la Mare}|. \CapThis\Name[Walter]{de la Mare} will think it fair. \CapThis\Name{du Cange} (\AKA{du Cange}[Charles]{du Fresne}) would too, because \cmd{\CapThis} works universally as of version 1.4. % -% \noindent The benefit to using this form is that one can type |\Name*{Louis, XIV}, the| |``\AKA{Louis, XIV}{Sun King}''| and get \Name*{Louis, XIV}, the ``\AKA{Louis, XIV}{Sun King}'' in the text with an appropriate reference from ``Sun King'' to ``Louis XIV'' in the index. The sobriquet feature would otherwise prevent such usage. +% Names foreign to English often associate these particles with the \meta{FNN} field of \cmd{\Name}. Yet these particles are not really first names. Using \cmd{\FName} with alternate forenames avoids that issue. See also Section~\ref{sec:Particles}. + +% +% \subsubsection{Hyphenation} +% +% I find it helpful to use respectively the \textsf{babel} or \textsf{polyglossia} packages with name hyphenation. If one is using English as the main language, the default hyphenation patterns may not suffice. For example, the name \Name[John]{Strietelmeier} may break thus: ``Stri-etelmeier.'' That is fixed by creating a \cmd{\de} macro equivalent to |\newcommand{\de}[1]{\foreignlanguage{ngerman}{#1}}| (using \textsf{babel}) and writing |\de{\Name[John]{Strietelmeier}}|. % -% Even though suffix and sobriquet features look like they produce the same \emph{output} in the body text using the \texttt{nocomma} option, they are internally \emph{different}. They will not respect each other regarding ``first use,'' although they will (tentatively) cooperate in the index. Use each approach consistently. An example of ``dangerous'' use of these features occurs in Section \ref{sec:formatting}. +% One can insert optional hyphens in the arguments of \cmd{\Name} and friends but that must be done \emph{consistently} to avoid variants being treated as different names. % % \subsubsection{Accented Names} % \label{sec:accents} @@ -420,9 +570,6 @@ % Ś Ş ş Š š Ţ ţ Ť ť & Ů ů Ű ű & Ź ź Ż ż Ž ž & second use \\ % \end{tabular} % \end{quote} -% -%With \textsf{makeindex} there are a number of solutions, but some depend on the availability of the |-g| option and user-created settings in an |.ist| file whose description goes beyond the scope of this document. You also could use \cmd{\IndexActive} and \cmd{\IndexInactive} to suppress indexing, then create manual entries. For non-English documents, however, that solution is not optimal. -% % One may use control sequences in \cmd{\Name} (thanks \Name*[Robert]{Schlicht}). That means more accents with NFSS, such as the next example that uses \textsf{inputenc}/\textsf{fontenc}: % \begin{quote}\small % |\usepackage{newunicodechar}|\\ @@ -434,8 +581,8 @@ % \end{quote} % For some situations, such as ``traditional'' NFSS, you will need fonts with TS1 glyphs, e.g., |\usepackage{lmodern}|. See the informative tables on pages 455--63 in \emph{The Latex Companion}. This allows |\Name{Ghazāli}| to generate \IndexInactive\Name{Ghazāli}\IndexActive. % -% In some cases, indexing accented names will fail unless you use \textsf{xetex} or \textsf{luatex}, both of which use \textsf{fontspec} instead of NFSS. 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]{Luecking}. I used |\IndexInactive\Name{Ghazāli}\IndexActive| to prevent the index entry ``ali'' sorted under ``Ghaz'' because even the manual entry fails in that case. -% +% In some cases, indexing accented names only works with \textsf{xetex} and \textsf{luatex}, both of which use \textsf{fontspec}. Using \textsf{makeindex} may require The |-g| option and user-created settings in an |.ist| file may be needed. That goes beyond the scope of this document. One could use \cmd{\IndexActive} and \cmd{\IndexInactive} to suppress indexing and create manual entries but that would be tedious in non-English documents. Control sequences like |\=a| fail when using \textsf{makeindex} and \texttt{gind.ist} because the equal sign is interpreted as a ``literal'' character, as mentioned by \Name[Dan]{Luecking}. I used |\IndexInactive\Name{Ghazāli}\IndexActive| to prevent the index entry ``ali'' sorted under ``Ghaz''. Even the manual entry fails in that case. +% % It is important that this package work in the context of multiple languages. The use of multiple typesetting engines facilitates that. This snippet from the preamble to this file allows it to be typeset with multiple engines.\\ % % \begin{tabular}{ll} @@ -455,10 +602,9 @@ % \hbox{\qquad}|\usepackage[TS1,T1]{fontenc}|\\ % \hbox{\quad}|\fi|\\ % |\fi| -% \end{tabular}\\ -% \clearpage +% \end{tabular} % -% I used the following in the text itself to allow for conditional processing that helps one to document work under multiple engines:\\ +% \medskip\noindent The following can be used in the text itself to allow for conditional processing that helps one to document work under multiple engines:\\ % % \begin{tabular}{l} % |\ifxetex |\meta{xelatex text}|%|\\ @@ -475,11 +621,11 @@ % |\fi| % \end{tabular} % -% \subsubsection{Name Formatting} +% \subsubsection{Custom Formatting} % \label{sec:formatting} % % \DescribeMacro{\NamesFormat} -% The first instance of a name is formatted with \cmd{\NamesFormat} when formatting is active. Additionally, the \texttt{alwaysformat} option will cause every name to be formatted when formatting is active. In addition to using the package options, one can redefine \cmd{\NamesFormat} to create some custom effects. For example, if you wanted to suppress formatting in footnotes, you could do something like: +% The first instance of a name is formatted with \cmd{\NamesFormat} when formatting is active. Additionally, the \texttt{alwaysformat} option will cause every name to be formatted when formatting is active. Beyond using the package options, one can redefine \cmd{\NamesFormat} to create some custom effects. For example, if you wanted to suppress formatting in footnotes, you could do something like: % % \begin{quote} % |\makeatletter|\\ @@ -506,7 +652,7 @@ % \Name{Vlad III}[Dracula] was known as Vlad Ţepeş, ``The Impaler,'' after his death. He was the son of \Name{Vlad II}[Dracul], a member of the Order of the Dragon. Later references to \Name{Vlad III}[Dracula] appear thus. % \end{quote} % -% \noindent The forms above do not work with \cmd{\PName} and \cmd{\AKA}. Consistently use either the suffix mechanism (Section \ref{sec:suffix}) or see Section \ref{sec:pennames} regarding manual entries. If you use the suffix mechanism, you would use the following forms: +% \noindent The forms above do not work with \cmd{\PName} and \cmd{\AKA}. Consistently use either the suffix mechanism (Section~\ref{sec:suffix}) or see Section~\ref{sec:pennames} regarding manual entries. If you use the suffix mechanism, you would use the following forms: % %\begin{quote}\ForgetName{Vlad III}[Dracula]\ForgetName{Vlad II}[Dracul] % \let\oldformat\NamesFormat% @@ -518,9 +664,9 @@ % {Vlad}[Ţepeş], ``\AKA*{Vlad III, Dracula}{Vlad}[the Impaler],'' after his death. He was the son of \Name{Vlad II, Dracul}, a member of the Order of the Dragon. Later references to \Name{Vlad III, Dracula} appear thus. % \end{quote} % -% \noindent The redefinition of \cmd{\NamesFormat} given above follows scoping rules. Since I used it in a quote environment, it reverts to normal and now we have: \ForgetName{Vlad III}[Dracula]\Name{Vlad III}[Dracula]. Later references produce \Name{Vlad III}[Dracula]. The ``Dracula'' example was manipulated extensively with the tweaking macros \cmd{\ForgetName} and \cmd{\SubvertName}. Mixing the sobriquet and suffix forms otherwise might cause errors to ``bite.'' +% \noindent The redefinition of \cmd{\NamesFormat} given above follows scoping rules. Since I used it in a quote environment, it reverts to normal and now we have: \ForgetName{Vlad III}[Dracula]\Name{Vlad III}[Dracula]. Later references produce \Name{Vlad III}[Dracula]. The ``Dracula'' example was manipulated extensively with the tweaking macros \cmd{\ForgetName} and \cmd{\SubvertName}. Mixing the comma-delimited suffix and third-parameter affix forms might cause errors. % -% \subsubsection{Formatting Certain Sections} +% \subsubsection{Disable Formatting} % \label{sec:SectionFormat} % % \DescribeMacro{\NamesActive} @@ -549,12 +695,12 @@ % \end{tabular} % \end{quote} % -%\noindent Notice that we have two independent cases of ``first use'' above. That is intended for different sections of the document, like front matter and main matter. It clashes on the same page. That is why you should suppress formatting in the main matter with a custom definition of \cmd{\NamesFormat} (Section \ref{sec:formatting}) instead of using \cmd{\NamesInactive}. The following section covers tweaks that help to minimize certain first-use clashes. +%\noindent Notice that we have two independent cases of ``first use'' above. That is intended for different sections of the document, like front matter and main matter. It clashes when on the same page or on one nearby. % % \subsubsection{Tweaks: \texttt{\textbackslash ForgetName} and \texttt{\textbackslash SubvertName}} % \label{sec:Tweaks} % -% These two macros are meant for tweaking text at or near final draft stage. They affect both front matter and main matter. +% Perhaps the easiest way to avoid the clashes above are the two macros presented here. They are meant for tweaking text at or near final draft stage. They affect both front matter and main matter. % % \DescribeMacro{\ForgetName} % This macro is a ``dirty trick'' of sorts that takes the same optional and mandatory parameters used by \cmd{\Name}. It handles its arguments in the same way, except that it ignores the final parameter if \meta{FNN} are present. The syntax is: @@ -589,7 +735,7 @@ % \Name{Jean}[sans Peur] (Jean the Fearless) reigned as Duke of Burgundy from 1404 to 1419. % \end{quote} % -% \noindent The suffix workaround would use |\Name{Jean, sans Peur}| and the author need merely type |\AKA{Jean, sans Peur}{Jean the Fearless}|. See also Section \ref{sec:suffix}. Using \textsf{makeindex} also requires some manual entries: +% \noindent The suffix workaround would use |\Name{Jean, sans Peur}| and the author need merely type |\AKA{Jean, sans Peur}{Jean the Fearless}|. See also Section~\ref{sec:suffix}. Using \textsf{makeindex} also requires some manual entries: % \begin{quote} % \bgroup\ttfamily\small % \verb+\index{Doctor Angelicus@\textit{Doctor Angelicus}|see{Thomas Aquinas}}+ @@ -619,13 +765,13 @@ % % \begin{quote}\footnotesize % \begin{tabular}{ll}\hline -% {\small\strut}|\AKA[Bob]{Hope}[Leslie Townes]{Hope}| & \AKA[Bob]{Hope}[Leslie Townes]{Hope}\\ -% {\small\strut}\dag|\AKA[Bob]{Hope}[Leslie Townes]{Hope}[Lester T.]| & \AKA[Bob]{Hope}[Leslie Townes]{Hope}[Lester T.]\\\hline -% {\small\strut}\ddag|\AKA{Louis, XIV}{Sun King}| & \AKA{Louis, XIV}{Sun King}\\ -% {\small\strut}|\AKA{Louis}[XIV]{Sun King}| & FAIL\\\hline -% {\small\strut}\S|\AKA{Gregory, I}{Gregory}[the Great]| & \AKA{Gregory, I}{Gregory}[the Great]\\ -% {\small\strut}|\AKA*{Gregory, I}{Gregory}[the Great]| & \AKA*{Gregory, I}{Gregory}[the Great]\\ -% {\small\strut}|\AKA{Gregory}[I]{Gregory}[the Great]| & FAIL\\\hline +% {\large\strut}|\AKA[Bob]{Hope}[Leslie Townes]{Hope}| & \AKA[Bob]{Hope}[Leslie Townes]{Hope}\\ +% {\large\strut}\dag|\AKA[Bob]{Hope}[Leslie Townes]{Hope}[Lester T.]| & \AKA[Bob]{Hope}[Leslie Townes]{Hope}[Lester T.]\\\hline +% {\large\strut}\ddag|\AKA{Louis, XIV}{Sun King}| & \AKA{Louis, XIV}{Sun King}\\ +% {\large\strut}|\AKA{Louis}[XIV]{Sun King}| & FAIL\\\hline +% {\large\strut}\S|\AKA{Gregory, I}{Gregory}[the Great]| & \AKA{Gregory, I}{Gregory}[the Great]\\ +% {\large\strut}|\AKA*{Gregory, I}{Gregory}[the Great]| & \AKA*{Gregory, I}{Gregory}[the Great]\\ +% {\large\strut}|\AKA{Gregory}[I]{Gregory}[the Great]| & FAIL\\\hline % \end{tabular} % % \smallskip\dag{} This succeeds, but replaces ``Leslie Townes'' with ``Lester T.'' in the text, while keeping ``Hope, Leslie Townes'' as the \emph{see} reference in the index.\\ @@ -643,17 +789,17 @@ % Today we consider \AKA[George]{Eliot}[Mary Anne]{Evans} and her literary contributions as \Name[George]{Eliot}. % \end{quote} % -% \noindent If the starred form \cmd{\AKA*} is used with the template \meta{none}\meta{alternate SNN}\meta{alt. names}, it only prints the \meta{alt. names}. With the same template, \cmd{\AKA} prints \meta{alternate SNN} followed by \meta{alt. names}. Section \ref{sec:TagName} offers a complete presentation of related features. +% \noindent If the starred form \cmd{\AKA*} is used with the template \meta{none}\meta{alternate SNN}\meta{alt. names}, it only prints the \meta{alt. names}. With the same template, \cmd{\AKA} prints \meta{alternate SNN} followed by \meta{alt. names}. Section~\ref{sec:TagName} further illustrates the usefulness of \cmd{\AKA}, \cmd{\AKA*}, and index tagging. % -% The cross-references generated by \cmd{\AKA} and \cmd{\AKA*} are meant to be \emph{see} references and thus the other macros in this package will not create page references for these cross-references. See also Section \ref{sec:error}. In certain cases, the alternate name might need to be indexed with page numbers. Do not use \cmd{\AKA} in those cases. Use \cmd{\Name} for both the main and the alternate names. Then, only after both instances of \cmd{\Name} have been invoked, create manual cross-references with \cmd{\index}, e.g.: +% The cross-references generated by \cmd{\AKA} and \cmd{\AKA*} are meant to be \emph{see} references and thus the other macros in this package will not create page references for these cross-references. See also Section~\ref{sec:error}. In certain cases, the alternate name might need to be indexed with page numbers. Do not use \cmd{\AKA} in those cases. Use \cmd{\Name} for both the main and the alternate names. Then, only after both instances of \cmd{\Name} have been invoked, create manual cross-references with \cmd{\index}, e.g.:\\ % % \label{manualxref}% % \bgroup\footnotesize\label{Rambam} % \begin{tabular}{p{0.7in}ll}\hline -% Authoritative Name & Alternate Name & Example of Use\\\hline -% \Name{Maimonides} & \AKA{Maimonides}{Moses ben-Maimon} & |\Name{Maimonides}|\\ +% {\large\strut}Authoritative Name & Alternate Name\newline & Example of Use\newline\\\hline +% {\large\strut}\Name{Maimonides} & \AKA{Maimonides}{Moses ben-Maimon} & |\Name{Maimonides}|\\ % &&|\AKA{Maimonides}{Moses ben-Maimon}|\\ -% \Name{Maimonides} & \Name{Rambam} & |\Name{Rambam}%|\\& & \verb!\index{Rambam|seealso{Maimonides}}!\\\hline +% {\large\strut}\Name{Maimonides} & \Name{Rambam} & |\Name{Rambam}%|\\& & \verb!\index{Rambam|seealso{Maimonides}}!\\\hline % \end{tabular} % \index{Rambam|seealso{Maimonides}}\egroup % @@ -674,13 +820,13 @@ % \noindent The author determines the name that is indexed (the first name) and the subsequent name that only occurs as a \emph{see} reference. For example: % % \begin{quote}\footnotesize -% \begin{tabular}{lp{1.3in}}\hline -% {\normalsize\strut}|\PName[Mark]{Twain}[Samuel L.]{Clemens}| & \PName[Mark]{Twain}[Samuel L.]{Clemens}\\ -% |\PName*[Mark]{Twain}[Samuel L.]{Clemens}| & \PName*[Mark]{Twain}[Samuel L.]{Clemens}\\ -% |\PName[Mark]{Twain}[Samuel L.]{Clemens}| & \PName[Mark]{Twain}[Samuel L.]{Clemens}\\\hline -% {\normalsize\strut}|\PName{Voltaire}[François-Marie]{Arouet}| & \PName{Voltaire}[François-Marie]{Arouet}\\ -% |\PName*{Voltaire}[François-Marie]{Arouet}| & \PName*{Voltaire}[François-Marie]{Arouet}\\ -% |\PName{Voltaire}[François-Marie]{Arouet}| & \PName{Voltaire}[François-Marie]{Arouet}\\\hline +% \begin{tabular}{@{}p{0.5\textwidth}@{}p{0.37\textwidth}@{}}\hline +% {\large\strut}|\PName[Mark]{Twain}[Samuel L.]{Clemens}| & \PName[Mark]{Twain}[Samuel L.]{Clemens}\\ +% {\large\strut}|\PName*[Mark]{Twain}[Samuel L.]{Clemens}| & \PName*[Mark]{Twain}[Samuel L.]{Clemens}\\ +% {\large\strut}|\PName[Mark]{Twain}[Samuel L.]{Clemens}| & \PName[Mark]{Twain}[Samuel L.]{Clemens}\\\hline +% {\large\strut}|\PName{Voltaire}[François-Marie]{Arouet}| & \PName{Voltaire}[François-Marie]{Arouet}\\ +% {\large\strut}|\PName*{Voltaire}[François-Marie]{Arouet}| & \PName*{Voltaire}[François-Marie]{Arouet}\\ +% {\large\strut}|\PName{Voltaire}[François-Marie]{Arouet}| & \PName{Voltaire}[François-Marie]{Arouet}\\\hline % \end{tabular} % \end{quote} % @@ -692,7 +838,7 @@ % \begin{quote} % \cmd{\IndexName}\oarg{FNN}\marg{SNN}\oarg{alternate names} % \end{quote} -% \cmd{\IndexName} does not index \meta{alternate names} unless \meta{FNN} are absent, whereupon it treats \meta{alternate names} as a sobriquet. If indexing is switched off (see Section \ref{sec:SectionIndex}), this macro does nothing. It will not create index entries for names that have been used as cross-references. +% \cmd{\IndexName} does not index \meta{alternate names} unless \meta{FNN} are absent, whereupon it treats \meta{alternate names} as an affix. If indexing is switched off (see Section~\ref{sec:SectionIndex}), this macro does nothing. It will not create index entries for names that have been used as cross-references. % % \subsubsection{\texttt{\textbackslash TagName}} % \label{sec:TagName} @@ -726,17 +872,17 @@ % \cmd{\TagName} will replace one tag with another tag, but it does not remove a tag from a name. That is the role of \cmd{\UntagName}. By using these two commands, one can disambiguate different people with the same name. For example:\\ % % \begin{tabular}{p{2in}p{2in}} -% |\ForgetName[John]{Smith}| |\TagName[John]{Smith}%| |{, the other one}| |\Name[John]{Smith}|\dots & This is the first reference to \ForgetName[John]{Smith}\TagName[John]{Smith}{, the other one}\Name[John]{Smith}, ``the other one'' in the index. Notice that it is tweaked.\\ -% |\ForgetName[John]{Smith}| |\TagName[John]{Smith}%| |{, the third}| |\Name[John]{Smith}|\dots & This refers to \ForgetName[John]{Smith}\TagName[John]{Smith}{, the third}\Name[John]{Smith} ``the third'' in the index. It is tweaked again as a ``first occurrence.''\\ -% |\SubvertName[John]{Smith}| |\UntagName[John]{Smith}| |\Name*[John]{Smith}| & This refers to the \SubvertName[John]{Smith}\UntagName[John]{Smith}\Name*[John]{Smith} in Section \ref{sec:start}. It is tweaked in order to force a subsequent reference.\\[1ex] +% |\ForgetName[John]{Smith}| |\TagName[John]{Smith}%| |{, the other one}| |\Name[John]{Smith}|\dots & This is the first reference to \ForgetName[John]{Smith}\TagName[John]{Smith}{, the other one}\Name[John]{Smith}, ``the other one'' in the index. Notice that it is tweaked.\newline\\[0.5ex] +% |\ForgetName[John]{Smith}| |\TagName[John]{Smith}%| |{, the third}| |\Name[John]{Smith}|\dots & This refers to \ForgetName[John]{Smith}\TagName[John]{Smith}{, the third}\Name[John]{Smith} ``the third'' in the index. It is tweaked again as a ``first occurrence.''\newline\\[0.5ex] +% |\SubvertName[John]{Smith}| |\UntagName[John]{Smith}| |\Name*[John]{Smith}| & This refers to the original \SubvertName[John]{Smith}\UntagName[John]{Smith}\Name*[John]{Smith}. It is tweaked in order to force a subsequent reference.\\[1ex] % \end{tabular}\\ -% -% \noindent Tagging and untagging in this manner requires the author to juggle more info. With more freedom comes more responsibility. +% \UntagName[John]{Smith} +% \noindent Tagging and untagging in this manner requires the author to juggle more info. With more freedom comes more responsibility. Also, if you use \cmd{\UntagName} within a scope, you may need to repeat it after leaving that scope. % % \subsubsection{\texttt{\textbackslash ExcludeName}} % % \DescribeMacro{\ExcludeName} -% This prevents \cmd{\Name}, etc. from both formatting and indexing a specific name, but \emph{only if that name has not been used}. See also Section \ref{sec:error}. The syntax is: +% This prevents \cmd{\Name}, etc. from both formatting and indexing a specific name, but \emph{only if that name has not been used}. See also Section~\ref{sec:error}. The syntax is: % \begin{quote} % \cmd{\ExcludeName}\oarg{FNN}\marg{SNN}\oarg{alternate names} % \end{quote} @@ -749,7 +895,7 @@ % \DescribeMacro{\IndexInactive} % Using the \texttt{noindex} option deactivates indexing until \cmd{\IndexActive} occurs. Another macro, \cmd{\IndexInactive}, will deactivate indexing again. These can be used throughout the document, independently of \cmd{\ExcludeName}. % -% \subsubsection{Variant Spellings} +% \subsection{Variant Spellings} % % Handling variant name spellings can be complicated, but one could create macros on a per-case basis to make it easier. For example, one might settle on the form \Name[W.E.B.]{Du Bois} in one's name authority. Yet an essay could use \IndexInactive\Name*[W.E.B.]{DuBois}\IndexActive, where the publisher would not grant the right to alter the spelling. In that case, do the following in that document section: % @@ -763,136 +909,91 @@ % \subsection{Naming Pattern Reference} % \label{sec:PatRef} % \subsubsection{Basic Naming} -% \begin{multicols}{2}\small -% \noindent The macro used most often is \cmd{\Name}, but we list the starred form first here because it always produces the fullest name form. When referring to a name for the first time, the following macros have the same result: -% \begin{enumerate}\setlength\itemsep{0pt} -% \item First reference: \ForgetName[John]{Smith}\Name[John]{Smith}\\[0.5ex] -% |\Name*[John]{Smith}| or\\ |\Name[John]{Smith}| or\\ |\FName[John]{Smith}| -% \item First mononym reference: \ForgetName{Plato}\Name{Plato}\\[0.5ex] -% |\Name*{Plato}| or\\ |\Name{Plato}| or\\ |\FName{Plato}| -% \end{enumerate} -% Subsequent references to names have a different format depending on the macro used: -% \begin{enumerate}\addtocounter{enumi}{2}\setlength\itemsep{0pt} -% \item Subsequent full name: \Name*[John]{Smith}\\[0.5ex] -% |\Name*[John]{Smith}| -% \item Subsequent surname: \Name[John]{Smith}\\[0.5ex] -% |\Name[John]{Smith}| -% \item Subsequent forename: \FName[John]{Smith}\\[0.5ex] -% |\FName[John]{Smith}| -% \item Subsequent mononym: \Name{Plato}\\[0.5ex] -% |\Name*{Plato}| or\\ |\Name{Plato}| or\\ |\FName{Plato}| -% \end{enumerate} -% These examples show printing of alternate forenames, keeping the same name in the index. They use both the first and final optional parameters of \cmd{\Name} and friends. -% \begin{enumerate}\addtocounter{enumi}{6}\setlength\itemsep{0pt}\small -% \item Long first ref: \ForgetName[J.Q.]{Public}\Name[J.Q.]{Public}[Jane Q.]\\[0.5ex] -% |\Name*[J.Q.]{Public}[Jane Q.]| or\\ |\Name[J.Q.]{Public}[Jane Q.]| or\\ |\FName[J.Q.]{Public}[Jane Q.]| -% \item Different forenames, same surname: \Name*[J.Q.]{Public}[Jane Qetsiyah]\\[0.5ex] -% {\footnotesize |\Name*[J.Q.]{Public}[Jane Qetsiyah]|} -% \item Subsequent name: \Name*[J.Q.]{Public}\\[0.5ex] -% |\Name*[J.Q.]{Public}| -% \item Alternate forename: \FName[J.Q.]{Public}[Janie]\\[0.5ex] -% |\FName[J.Q.]{Public}[Janie]| -% \end{enumerate} -% These next examples work with or without the \texttt{comma} option. \cmd{\AKA} and \cmd{\PName} cannot cross-reference these forms. Page \pageref{sec:Intermediate}, Section \ref{sec:suffix}, and Section \ref{sec:pennames} address this issue with different solutions. -% \begin{enumerate}\addtocounter{enumi}{10}\setlength\itemsep{0pt} -% \item First Eastern ref: \ForgetName{Mao}[Tse-tung]\Name{Mao}[Tse-tung]\\[0.5ex] -% |\Name*{Mao}[Tse-tung]| or\\ |\Name{Mao}[Tse-tung]| -% \item Subsequent references: \Name*{Mao}[Tse-tung]\\[0.5ex] -% |\Name*{Mao}[Tse-tung]| -% \item Subsequent references: \Name{Mao}[Tse-tung]\\[0.5ex] -% |\Name{Mao}[Tse-tung]| or\\ |\FName{Mao}[Tse-tung]| -% \item First royal: \ForgetName{Louis}[the Pious]\Name{Louis}[the Pious]\\[0.5ex] -% |\Name*{Louis}[the Pious]| or\\ |\Name{Louis}[the Pious]| or\\ |\FName{Louis}[the Pious]| -% \item Subsequent refs: \Name*{Louis}[the Pious]\\[0.5ex] -% |\Name*{Louis}[the Pious]| -% \item Subsequent references: \Name{Louis}[the Pious]\\[0.5ex] -% |\Name{Louis}[the Pious]| or\\ |\FName{Louis}[the Pious]| -% \item First ancient: \ForgetName{Ptolemy I}[Soter]\Name{Ptolemy I}[Soter]\\[0.5ex] -% |\Name*{Ptolemy I}[Soter]| or\\ |\Name{Ptolemy I}[Soter]| or\\ |\FName{Ptolemy I}[Soter]|\columnbreak -% \item Subsequent refs: \Name*{Ptolemy I}[Soter]\\[0.5ex] -% |\Name*{Ptolemy I}[Soter]| -% \item Subsequent refs: \Name{Ptolemy I}[Soter]\\[0.5ex] -% |\Name{Ptolemy I}[Soter]| or\\ |\FName{Ptolemy I}[Soter]| -% \item First royal: \ForgetName{Henry}[VIII]\Name{Henry}[VIII]\\[0.5ex] -% |\Name*{Henry}[VIII]| or\\ |\Name{Henry}[VIII]| or\\ |\FName{Henry}[VIII]| -% \item Subsequent refs: \Name*{Henry}[VIII]\\[0.5ex] -% |\Name*{Henry}[VIII]| -% \item Subsequent references: \Name{Henry}[VIII]\\[0.5ex] -% |\Name{Henry}[VIII]| or\\ |\FName{Henry}[VIII]| -% \end{enumerate} -% \end{multicols} +% \label{sec:Basic} +% When referring to a name for the first time, the following have the same result. We put the starred form first because its output is always longest:\\[2ex] +% \begin{tabular}{p{0.4\textwidth}p{0.5\textwidth}} +% First reference in the text:\newline\hbox to 1em{\hfil}\ForgetName[John]{Smith}\Name[John]{Smith} & +% |\Name*[John]{Smith}|\newline |\Name[John]{Smith}|\newline |\FName[John]{Smith}|\\[0.5ex] +% First mononym reference:\newline\hbox to 1em{\hfil}\ForgetName{Plato}\Name{Plato} & +% |\Name*{Plato}|\newline |\Name{Plato}|\newline |\FName{Plato}|\\ +% \end{tabular}\\[2ex] +% Subsequent references to names differ, based on the macro used:\\[1ex] +% \begin{tabular}{p{0.4\textwidth}p{0.5\textwidth}} +% Subsequent full name:\newline\hbox to 1em{\hfil}\Name*[John]{Smith} & |\Name*[John]{Smith}|\newline\\[0.5ex] +% Subsequent surname: \Name[John]{Smith} & |\Name[John]{Smith}|\\[0.5ex] +% Subsequent forename: \FName[John]{Smith} & |\FName[John]{Smith}|\\[0.5ex] +% Subsequent mononym: \Name{Plato} & |\Name*{Plato}|\newline |\Name{Plato}|\newline |\FName{Plato}|\\ +% \end{tabular}\\[2ex] +% \clearpage +% \noindent Nicknames and alternate forenames use both the first and third arguments of \cmd{\Name}. The index forms are constant even when the print forms change:\\[2ex] +% \begin{tabular}{p{0.4\textwidth}p{0.5\textwidth}} +% Long first ref: \ForgetName[J.Q.]{Public}\Name[J.Q.]{Public}[Jane Q.] & |\Name*[J.Q.]{Public}[Jane Q.]|\newline |\Name[J.Q.]{Public}[Jane Q.]|\newline |\FName[J.Q.]{Public}[Jane Q.]|\\[0.5ex] +% Different forenames, same surname: \Name*[J.Q.]{Public}[Jane Qetsiyah] & |\Name*[J.Q.]{Public}[Jane Qetsiyah]|\newline\\[0.5ex] +% Subsequent name: \Name*[J.Q.]{Public} & |\Name*[J.Q.]{Public}|\\[0.5ex] +% Alternate forename: \FName[J.Q.]{Public}[Janie] & |\FName[J.Q.]{Public}[Janie]|\\[0.5ex] +% \end{tabular}\\[2ex] +% These next examples are the ``limited'' variants that work with the \texttt{comma} option. \cmd{\AKA} and \cmd{\PName} cannot cross-reference to these forms. Sections~\ref{sec:suffix} and~\ref{sec:pennames} address this issue with different solutions.\\[2ex] +% \begin{tabular}{p{0.4\textwidth}p{0.5\textwidth}} +% First Eastern reference:\newline \ForgetName{Mao}[Tse-tung]\Name{Mao}[Tse-tung] & |\Name*{Mao}[Tse-tung]|\newline |\Name{Mao}[Tse-tung]|\\[0.5ex] +% Subsequent refs: \Name*{Mao}[Tse-tung] & |\Name*{Mao}[Tse-tung]|\\[0.5ex] +% Subsequent refs: \Name{Mao}[Tse-tung] & |\Name{Mao}[Tse-tung]|\newline |\FName{Mao}[Tse-tung]|\\[0.5ex] +% First royal: \ForgetName{Louis}[the Pious]\Name{Louis}[the Pious] & |\Name*{Louis}[the Pious]|\newline |\Name{Louis}[the Pious]|\newline |\FName{Louis}[the Pious]|\\[0.5ex] +% Subsequent refs: \Name*{Louis}[the Pious] & |\Name*{Louis}[the Pious]|\\[0.5ex] +% Subsequent refs: \Name{Louis}[the Pious] & |\Name{Louis}[the Pious]|\newline |\FName{Louis}[the Pious]|\\[0.5ex] +% First ancient ref:\newline \ForgetName{Ptolemy I}[Soter]\Name{Ptolemy I}[Soter] & |\Name*{Ptolemy I}[Soter]|\newline |\Name{Ptolemy I}[Soter]|\newline |\FName{Ptolemy I}[Soter]|\\[0.5ex] +% Subsequent refs: \Name*{Ptolemy I}[Soter] & |\Name*{Ptolemy I}[Soter]|\\[0.5ex] +% Subsequent refs: \Name{Ptolemy I}[Soter] & |\Name{Ptolemy I}[Soter]|\newline |\FName{Ptolemy I}[Soter]|\\[0.5ex] +% First royal: \ForgetName{Henry}[VIII]\Name{Henry}[VIII] & |\Name*{Henry}[VIII]|\newline |\Name{Henry}[VIII]|\newline |\FName{Henry}[VIII]|\\[0.5ex] +% Subsequent refs: \Name*{Henry}[VIII] & |\Name*{Henry}[VIII]|\\[0.5ex] +% Subsequent refs: \Name{Henry}[VIII] & |\Name{Henry}[VIII]|\newline |\FName{Henry}[VIII]|\\ +% \end{tabular} +% \clearpage % -% \subsubsection{Suffixes} -% \label{sec:Intermediate}% -% \begin{multicols}{2}\small -% \noindent Always use a comma to delimit suffixes. \cmd{\AKA} and \cmd{\PName} will cross-reference these forms. See also Section \ref{sec:suffix}. Macros that are too wide for the column are split using the comment token for readability. -% \begin{enumerate}\setlength\itemsep{0pt} -% \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.}|} -% \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] -% |\Name[George S.]{Patton, Jr.}| -% \item Subsequent forename: \FName[George S.]{Patton, Jr.}[George]\\[0.5ex] -% |\FName[George S.]{Patton, Jr.}%|\\|[George]| -% \end{enumerate} -% The next cases depend on the default \texttt{nocomma} option, whereby one can use comma suppression to implement forms of ancient, royal and Eastern names. \cmd{\AKA} and \cmd{\PName} will cross-reference these forms. -% -% Cf. the reference to \Name{Ptolemy I}[Soter] (above). Using |\Name{Demetrius, I Soter}| keeps the number with the suffix. To keep the number with the name, use |\Name{Demetrius I, Soter}|.\columnbreak -% \begin{enumerate}\addtocounter{enumi}{4}\setlength\itemsep{0pt} -% \item First reference: \ForgetName{Francis, I}\Name{Francis, I}\\[0.5ex] -% |\Name*{Francis, I}| or\\ |\Name{Francis, I}| or\\ |\FName{Francis, I}| -% \item Subsequent full name: \Name*{Francis, I}\\[0.5ex] -% |\Name*{Francis, I}| -% \item Subsequent name: \Name{Francis, I}\\[0.5ex] -% |\Name{Francis, I}| or\\ |\FName{Francis, I}| -% \item First reference: \ForgetName{Demetrius, I Soter}\Name{Demetrius, I Soter}\\[0.5ex] -% |\Name*{Demetrius, I Soter}| or\\ |\Name{Demetrius, I Soter}| or\\ |\FName{Demetrius, I Soter}| -% \item Next full name: \Name*{Demetrius, I Soter}\\[0.5ex] -% |\Name*{Demetrius, I Soter}| -% \item Subsequent name: \Name{Demetrius, I Soter}\\[0.5ex] -% |\Name{Demetrius, I Soter}| or\\ |\FName{Demetrius, I Soter}| -% \item First reference: \ForgetName{Sun, Yat-sen}\Name{Sun, Yat-sen}\\[0.5ex] -% |\Name*{Sun, Yat-sen}| or\\ |\Name{Sun, Yat-sen}| or\\ |\FName{Sun, Yat-sen}| -% \item Subsequent full name: \Name*{Sun, Yat-sen}\\[0.5ex] -% |\Name*{Sun, Yat-sen}| -% \item Subsequent name: \Name{Sun, Yat-sen}\\[0.5ex] -% |\Name{Sun, Yat-sen}| or\\ |\FName{Sun, Yat-sen}| -% \end{enumerate} -% \end{multicols} +% \subsubsection{Affixes} +% \label{sec:Intermediate} +% Always use a comma to delimit name/affix pairs. \cmd{\AKA} and \cmd{\PName} will cross-reference these forms. See also Section~\ref{sec:suffix}.\\[2ex] +% \begin{tabular}{p{0.4\textwidth}p{0.5\textwidth}} +% First: \ForgetName[George S.]{Patton, Jr.}\Name[George S.]{Patton, Jr.} & |\Name*[George S.]{Patton, Jr.}|\newline |\Name[George S.]{Patton, Jr.}|\newline |\FName[George S.]{Patton, Jr.}|\\[0.5ex] +% Subsequent full:\newline\hbox to 1em{\hfil}\Name*[George S.]{Patton, Jr.} & |\Name*[George S.]{Patton, Jr.}|\newline\\[0.5ex] +% Subsequent surname: \Name[George S.]{Patton, Jr.} & |\Name[George S.]{Patton, Jr.}|\\[0.5ex] +% Subsequent forename: \FName[George S.]{Patton, Jr.}[George] & |\FName[George S.]{Patton, Jr.}[George]|\\ +% \end{tabular}\\[2ex] +% The next cases depend on the default \texttt{nocomma} option, whereby one can use comma suppression to implement forms of ancient, royal and Eastern names. \cmd{\AKA} and \cmd{\PName} will cross-reference these forms. Cf. the reference to \Name{Ptolemy I}[Soter] (Section~\ref{sec:Basic}). Using |\Name{Demetrius, I Soter}| keeps the number with the suffix. To keep the number with the name, use |\Name{Demetrius I, Soter}|.\\[2ex] +% \begin{tabular}{p{0.4\textwidth}p{0.5\textwidth}} +% First reference: \ForgetName{Francis, I}\Name{Francis, I} & |\Name*{Francis, I}|\newline |\Name{Francis, I}|\newline |\FName{Francis, I}|\\[0.5ex] +% Subsequent full name: \Name*{Francis, I} & |\Name*{Francis, I}|\\[0.5ex] +% Subsequent name: \Name{Francis, I} & |\Name{Francis, I}|\newline |\FName{Francis, I}|\\[0.5ex] +% First reference: \newline\hbox to 1em{\hfil}\ForgetName{Demetrius, I Soter}\Name{Demetrius, I Soter} & |\Name*{Demetrius, I Soter}|\newline |\Name{Demetrius, I Soter}|\newline |\FName{Demetrius, I Soter}|\\[0.5ex] +% Next full name: \newline\hbox to 1em{\hfil}\Name*{Demetrius, I Soter} & |\Name*{Demetrius, I Soter}|\newline\\[0.5ex] +% Subsequent name: \Name{Demetrius, I Soter} & |\Name{Demetrius, I Soter}|\newline |\FName{Demetrius, I Soter}|\\[0.5ex] +% First reference: \ForgetName{Sun, Yat-sen}\Name{Sun, Yat-sen} & |\Name*{Sun, Yat-sen}|\newline |\Name{Sun, Yat-sen}|\newline |\FName{Sun, Yat-sen}|\\[0.5ex] +% Subsequent full name: \newline\hbox to 1em{\hfil}\Name*{Sun, Yat-sen} & |\Name*{Sun, Yat-sen}|\newline\\[0.5ex] +% Subsequent name: \Name{Sun, Yat-sen} & |\Name{Sun, Yat-sen}|\newline |\FName{Sun, Yat-sen}|\\ +% \end{tabular}\\ +% \clearpage % % \subsubsection{Particles} -% \begin{multicols}{2}\small -% \noindent The following illustrate the American style of particulate names. -% \begin{enumerate}\setlength\itemsep{0pt} -% \item First: \ForgetName[Walter]{de la Mare}\Name[Walter]{de la Mare}\\[0.5ex] -% |\Name*[Walter]{de la Mare}| or\\ |\Name[Walter]{de la Mare}| or\\ |\FName[Walter]{de la Mare}| -% \item Next reference: \Name[Walter]{de la Mare}\\[0.5ex] -% |\Name[Walter]{de la Mare}| -% \item At start of sentence: \CapThis\Name[Walter]{de la Mare}\\[0.5ex] -% |\CapThis\Name[Walter]{de la Mare}| -% \item Forename: \FName[Walter]{de la Mare}\\[0.5ex] -% |\FName[Walter]{de la Mare}| -% \end{enumerate} -% \label{FirstVonLast} -% The Continental style differs slightly. Forms 5--7 put the particles in the index. Forms 8--11 use the nickname feature to omit the particles from the index. Long macros are split for readability. -% \begin{enumerate}\addtocounter{enumi}{4}\setlength\itemsep{0pt} -% \item The (admittedly long) first use:\\\Name[Johann Wolfgang von]{Goethe}\\[0.5ex] -% |\Name*[Johann Wolfgang von]%|\\|{Goethe}| or\\ |\Name[Johann Wolfgang von]%|\\|{Goethe}| or\\ |\FName[Johann Wolfgang von]%|\\|{Goethe}| -% \item Subsequent: \Name[Johann Wolfgang von]{Goethe}\\[0.5ex] -% |\Name[Johann Wolfgang von]%|\\|{Goethe}| -% \item Forenames: \FName[Johann Wolfgang von]{Goethe}[Johann Wolfgang]\\[0.5ex] -% |\FName[Johann Wolfgang von]%|\\ |{Goethe}[Johann Wolfgang]| -% \item First: \Name[Adolf]{Harnack}[Adolf von]\\[0.5ex] -% |\Name*[Adolf]{Harnack}[Adolf von]|\,or\\ |\Name[Adolf]{Harnack}[Adolf von]|\,or\\ |\FName[Adolf]{Harnack}[Adolf von]| -% \item Next full name: \Name*[Adolf]{Harnack}[Adolf von]\\[0.5ex] -% |\Name*[Adolf]{Harnack}[Adolf von]| -% \item Subsequent surname: \Name[Adolf]{Harnack}[Adolf von]\\[0.5ex] -% |\Name[Adolf]{Harnack}[Adolf von]| or |\Name[Adolf]{Harnack}| -% \item Subsequent forename: \FName[Adolf]{Harnack}\\[0.5ex] -% |\FName[Adolf]{Harnack}| -% \end{enumerate} -% \end{multicols} +% \label{sec:Particles} +% The following illustrate the American style of particulate names.\\[2ex] +% \begin{tabular}{p{0.4\textwidth}p{0.5\textwidth}} +% First: \ForgetName[Walter]{de la Mare}\Name[Walter]{de la Mare} & |\Name*[Walter]{de la Mare}|\newline |\Name[Walter]{de la Mare}|\newline |\FName[Walter]{de la Mare}|\\[0.5ex] +% Next reference: \Name[Walter]{de la Mare} & |\Name[Walter]{de la Mare}|\\[0.5ex] +% At start of sentence: \CapThis\Name[Walter]{de la Mare} & |\CapThis\Name[Walter]{de la Mare}|\\[0.5ex] +% Forename: \FName[Walter]{de la Mare} & |\FName[Walter]{de la Mare}|\\[0.5ex] +% \end{tabular}\\[2ex] +% The Continental style differs slightly. These first three forms below put the particles in the index. Long macros are split for readability.\\[2ex] +% \begin{tabular}{p{0.4\textwidth}p{0.5\textwidth}} +% The (admittedly long) first use:\newline\small\Name[Johann Wolfgang von]{Goethe} & |\Name*[Johann Wolfgang von]{Goethe}|\newline |\Name[Johann Wolfgang von]{Goethe}|\newline |\FName[Johann Wolfgang von]{Goethe}|\\[0.5ex] +% Subsequent: \Name[Johann Wolfgang von]{Goethe} & |\Name[Johann Wolfgang von]{Goethe}|\\[0.5ex] +% Forenames: \FName[Johann Wolfgang von]{Goethe}[Johann Wolfgang] & |\FName[Johann Wolfgang von]{Goethe}%|\newline|[Johann Wolfgang]|\\[0.5ex] +% \end{tabular}\\[2ex] +% These latter examples of the Continental style use the nickname feature to omit the particles from the index. Long macros are split for readability.\\[2ex] +% \begin{tabular}{p{0.4\textwidth}p{0.5\textwidth}} +% First: \Name[Adolf]{Harnack}[Adolf von] & |\Name*[Adolf]{Harnack}[Adolf von]|\newline |\Name[Adolf]{Harnack}[Adolf von]|\newline |\FName[Adolf]{Harnack}[Adolf von]|\\[0.5ex] +% Next full name:\newline\hbox to 1em{\hfil}\Name*[Adolf]{Harnack}[Adolf von] & |\Name*[Adolf]{Harnack}[Adolf von]|\newline\\[0.5ex] +% Subsequent surname: \Name[Adolf]{Harnack}[Adolf von] & |\Name[Adolf]{Harnack}[Adolf von]|\newline |\Name[Adolf]{Harnack}|\\[0.5ex] +% Subsequent forename: \FName[Adolf]{Harnack} & |\FName[Adolf]{Harnack}|\\[0.5ex] +% \end{tabular} % \clearpage % % \StopEventually{\PrintChanges\clearpage\PrintIndex} @@ -927,6 +1028,12 @@ % % \begin{macrocode} \newif\if@nameauth@DoCaps +\newif\if@nameauth@AllCaps +\newif\if@nameauth@AllThis +\newif\if@nameauth@RevAll +\newif\if@nameauth@RevThis +\newif\if@nameauth@RevAllComma +\newif\if@nameauth@RevThisComma % \end{macrocode} % This Boolean triggers capitalization in \cmd{\Name} of particles like \emph{de la} that may occur at the start of a sentence. It is triggered with \cmd{\CapThis}.\\ % @@ -938,13 +1045,19 @@ \DeclareOption{boldface}{\renewcommand{\NamesFormat}{\bfseries}} \DeclareOption{noformat}{\renewcommand{\NamesFormat}{}} \DeclareOption{alwaysformat}{\@nameauth@AlwaysFormattrue} +\DeclareOption{allcaps}{\@nameauth@AllCapstrue} +\DeclareOption{normalcaps}{\@nameauth@AllCapsfalse} +\DeclareOption{allreversed}{\@nameauth@RevAlltrue\@nameauth@RevAllCommafalse} +\DeclareOption{allrevcomma}{\@nameauth@RevAlltrue\@nameauth@RevAllCommatrue} +\DeclareOption{notreversed}{\@nameauth@RevAllfalse\@nameauth@RevAllCommafalse} \DeclareOption{comma}{\protected@edef\Interspace{,\space}} \DeclareOption{nocomma}{\protected@edef\Interspace{\space}} \DeclareOption{index}{\@nameauth@DoIndextrue} \DeclareOption{noindex}{\@nameauth@DoIndexfalse} -\ExecuteOptions{smallcaps,mainmatter,nocomma,index} +\ExecuteOptions{nocomma,mainmatter,index,normalcaps,notreversed,smallcaps} \ProcessOptions\relax \RequirePackage{etoolbox} +\RequirePackage{trimspaces} \RequirePackage{suffix} \RequirePackage{xargs} % \end{macrocode} @@ -1005,6 +1118,17 @@ % \end{macro} % This delimited-parameter macro caps the first parameter and strips suffixes off the second. % +% \begin{macro}{\@nameauth@AllCapRoot} +% \changes{v1.5}{2013/02/22}{Added macro} +% \begin{macrocode} +\newcommand*{\@nameauth@AllCapRoot}[1]% +{% + \uppercase{\@nameauth@Root{#1}}% +} +% \end{macrocode} +% \end{macro} +% This macro caps the root name(s) in a potential \meta{root}|,|\meta{suffix} pair. +% % \begin{macro}{\@nameauth@Suffix} % \changes{v0.9}{2012/02/10}{added macro} % \changes{v1.4}{2012/07/24}{Made more robust} @@ -1020,13 +1144,14 @@ % \begin{macro}{\@nameauth@TrimSuffix} % \changes{v0.9}{2012/02/10}{added macro} % \changes{v1.4}{2012/07/24}{Made more robust} +% \changes{v1.5}{2013/02/22}{Added space removal} % \begin{macrocode} -\def\@nameauth@TrimSuffix#1,#2\relax{#2} +\def\@nameauth@TrimSuffix#1,#2\relax{\trim@spaces{#2}} % \end{macrocode} % \end{macro} -% This delimited-parameter macro strips the first parameter and returns the second.\\ +% This delimited-parameter macro strips the first parameter and returns the second. By stripping off spaces it allows consistent formatting. % -% The next macros check whether the next token is a period. They are only called if the terminal character produced within \cmd{\Name} and \cmd{\FName} is itself a period. +%The next macros check whether the next token is a period. They are only called if the terminal character produced within \cmd{\Name} and \cmd{\FName} is itself a period. % % \begin{macro}{\@nameauth@CheckDot} % \changes{v0.8}{2012/01/29}{Renamed macro to help compatibility} @@ -1114,7 +1239,7 @@ } % \end{macrocode} % \end{macro} -% If the indexing flag is true, create an index entry, otherwise do nothing.\clearpage +% If the indexing flag is true, create an index entry, otherwise do nothing. % % \subsection{User Interface Macros} % @@ -1129,6 +1254,40 @@ % \end{macro} % Force the capitalizing of particles. This affects the next occurrence of \cmd{\Name}, which then turns off the forced caps. % +% \begin{macro}{\CapName} +% \changes{v1.5}{2013/02/22}{Added macro} +% \begin{macrocode} +\newcommand{\CapName}% +{% + \@nameauth@AllThistrue% +} +% \end{macrocode} +% \end{macro} +% Force the capitalizing of particles. This affects the next occurrence of \cmd{\Name}, which then turns off the forced caps. +% +% \begin{macro}{\RevName} +% \changes{v1.5}{2013/02/22}{Added macro} +% \begin{macrocode} +\newcommand{\RevName}% +{% + \@nameauth@RevThistrue% +} +% \end{macrocode} +% \end{macro} +% Force the capitalizing of particles. This affects the next occurrence of \cmd{\Name}, which then turns off the forced caps. +% +% \begin{macro}{\RevComma} +% \changes{v1.5}{2013/02/22}{Added macro} +% \begin{macrocode} +\newcommand{\RevComma}% +{% + \@nameauth@RevThistrue% + \@nameauth@RevThisCommatrue% +} +% \end{macrocode} +% \end{macro} +% Force the capitalizing of particles. This affects the next occurrence of \cmd{\Name}, which then turns off the forced caps. +% % \begin{macro}{\ShowComma} % \changes{v1.4}{2012/07/24}{Added macro} % \begin{macrocode} @@ -1151,43 +1310,73 @@ % \changes{v1.0}{2012/02/20}{Fixed compatibility issues.} % \changes{v1.26}{2012/04/24}{Fixed sorting of name suffixes in index} % \changes{v1.4}{2012/07/24}{Made more robust} +% \changes{v1.5}{2013/02/22}{Added reversing and caps mechanisms} % \begin{macrocode} \newcommandx\Name[3][1=\@empty, 3=\@empty]% {% + \leavevmode\hbox{}% \protected@edef\testi{#1}% + \protected@edef\testii{#2}% \protected@edef\testiii{#3}% - \leavevmode\hbox{}% + \if@nameauth@AllCaps\CapName\fi% + \if@nameauth@RevAll\RevName\fi% + \if@nameauth@RevAllComma\RevComma\fi% \if@nameauth@ShowComma% \protected@edef\Space{,\space}% \else% \let\Space\Interspace% \fi% - \protected@edef\RawSurnames{#2}% \protected@edef\RawShort{\@nameauth@Root{#2}}% \protected@edef\CapShort{\@nameauth@CapRoot{#2}}% + \protected@edef\AllCapShort{\@nameauth@AllCapRoot{#2}}% \let\IndexShort\RawShort% - \let\IndexSurnames\RawShort% - \ifx\RawSurnames\RawShort% + \ifx\testii\RawShort% \protected@edef\Suffix{\@empty}% + \let\IndexSurnames\RawShort% + \let\Reversed\RawShort% + \let\Surnames\RawShort% + \let\PrintShort\RawShort% \if@nameauth@DoCaps% + \let\Reversed\CapShort% \let\Surnames\CapShort% \let\PrintShort\CapShort% - \else% - \let\Surnames\RawShort% - \let\PrintShort\RawShort% + \fi% + \if@nameauth@AllThis% + \let\Reversed\AllCapShort% + \let\Surnames\AllCapShort% + \let\PrintShort\AllCapShort% \fi% \else% - \protected@edef\Suffix{\ignorespaces\@nameauth@Suffix{#2}}% + \protected@edef\Suffix{\@nameauth@Suffix{#2}}% \protected@edef\IndexSurnames{\RawShort\Space\Suffix}% - \if@nameauth@DoCaps% - \protected@edef\Surnames{\CapShort\Space\Suffix}% - \let\PrintShort\CapShort% + \protected@edef\Reversed{\Suffix\Space\RawShort}% + \protected@edef\Surnames{\RawShort\Space\Suffix}% + \if@nameauth@RevThis% + \let\PrintShort\Suffix% \else% - \protected@edef\Surnames{\RawShort\Space\Suffix}% \let\PrintShort\RawShort% \fi% + \if@nameauth@DoCaps% + \protected@edef\Reversed{\Suffix\Space\CapShort}% + \protected@edef\Surnames{\CapShort\Space\Suffix}% + \if@nameauth@RevThis% + \let\PrintShort\Suffix% + \else% + \let\PrintShort\CapShort% + \fi% + \fi% + \if@nameauth@AllThis% + \protected@edef\Reversed{\Suffix\Space\AllCapShort}% + \protected@edef\Surnames{\AllCapShort\Space\Suffix}% + \if@nameauth@RevThis% + \let\PrintShort\Suffix% + \else% + \let\PrintShort\AllCapShort% + \fi% + \fi% \fi% \@nameauth@DoCapsfalse% + \@nameauth@AllThisfalse% \@nameauth@ShowCommafalse% \ifx\testi\@empty% \ifx\testiii\@empty% @@ -1205,7 +1394,11 @@ \fi% \if@nameauth@FullName% \@nameauth@FullNamefalse% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnames}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Reversed}% + \else% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnames}% + \fi% \else% \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}% \fi% @@ -1213,7 +1406,11 @@ \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% \csgdef{\@nameauth@CleanName{#2!MN!}}{}% - \expandafter\@nameauth@FmtName\expandafter{\Surnames}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter{\Reversed}% + \else% + \expandafter\@nameauth@FmtName\expandafter{\Surnames}% + \fi% \fi% \else% \ifcsname\@nameauth@CleanName{#2!NF!}\endcsname% @@ -1223,7 +1420,11 @@ \fi% \if@nameauth@FullName% \@nameauth@FullNamefalse% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnames}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Reversed}% + \else% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnames}% + \fi% \else% \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}% \fi% @@ -1231,7 +1432,11 @@ \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% \csgdef{\@nameauth@CleanName{#2!NF!}}{}% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnames}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Reversed}% + \else% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnames}% + \fi% \fi% \fi% \else% @@ -1249,17 +1454,31 @@ \fi% \if@nameauth@FullName% \@nameauth@FullNamefalse% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Surnames\expandafter\space#3}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{% + \expandafter\testiii\expandafter\space\Surnames}% + \else% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{% + \expandafter\Surnames\expandafter\space#3}% + \fi% \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{\testiii}% + \else% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}% + \fi% \fi% \else% \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% \csgdef{\@nameauth@CleanName{#2#3!MN!}}{}% - \expandafter\@nameauth@FmtName\expandafter{% - \expandafter\Surnames\expandafter\space#3}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter{% + \expandafter\testiii\expandafter\space\Surnames}% + \else% + \expandafter\@nameauth@FmtName\expandafter{% + \expandafter\Surnames\expandafter\space#3}% + \fi% \fi% \else% \ifcsname\@nameauth@CleanName{#2#3!NF!}\endcsname% @@ -1269,21 +1488,40 @@ \fi% \if@nameauth@FullName% \@nameauth@FullNamefalse% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Surnames\expandafter\space#3}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{% + \expandafter\testiii\expandafter\space\Surnames}% + \else% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{% + \expandafter\Surnames\expandafter\space#3}% + \fi% \else% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{\testiii}% + \else% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}% + \fi% \fi% \else% \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% \csgdef{\@nameauth@CleanName{#2#3!NF!}}{}% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Surnames\expandafter\space#3}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{% + \expandafter\testiii\expandafter\space\Surnames}% + \else% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{% + \expandafter\Surnames\expandafter\space#3}% + \fi% \fi% \fi% \fi% \else% + \if@nameauth@RevThisComma% + \protected@edef\Space{,\space}% + \else% + \let\Space\Interspace% + \fi% \ifx\testiii\@empty% \protected@edef\Forenames{#1}% \else% @@ -1308,8 +1546,13 @@ \fi% \if@nameauth@FullName% \@nameauth@FullNamefalse% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Forenames\expandafter\space\Surnames}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{% + \expandafter\Surnames\expandafter\Space\Forenames}% + \else% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{% + \expandafter\Forenames\expandafter\space\Surnames}% + \fi% \else% \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}% \fi% @@ -1317,8 +1560,13 @@ \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% \csgdef{\@nameauth@CleanName{#1#2!MN!}}{}% - \expandafter\@nameauth@FmtName\expandafter{% - \expandafter\Forenames\expandafter\space\Surnames}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter{% + \expandafter\Surnames\expandafter\Space\Forenames}% + \else% + \expandafter\@nameauth@FmtName\expandafter{% + \expandafter\Forenames\expandafter\space\Surnames}% + \fi% \fi% \else% \ifcsname\@nameauth@CleanName{#1#2!NF!}\endcsname% @@ -1329,8 +1577,13 @@ \fi% \if@nameauth@FullName% \@nameauth@FullNamefalse% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Forenames\expandafter\space\Surnames}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{% + \expandafter\Surnames\expandafter\Space\Forenames}% + \else% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{% + \expandafter\Forenames\expandafter\space\Surnames}% + \fi% \else% \expandafter\@nameauth@FmtName\expandafter*\expandafter{\PrintShort}% \fi% @@ -1338,11 +1591,18 @@ \@nameauth@FullNamefalse% \@nameauth@FirstNamefalse% \csgdef{\@nameauth@CleanName{#1#2!NF!}}{}% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Forenames\expandafter\space\Surnames}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{% + \expandafter\Surnames\expandafter\Space\Forenames}% + \else% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{% + \expandafter\Forenames\expandafter\space\Surnames}% + \fi% \fi% \fi% \fi% + \@nameauth@RevThisfalse% + \@nameauth@RevThisCommafalse% \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi% } % \end{macrocode} @@ -1401,37 +1661,44 @@ % \changes{v1.1}{2012/03/08}{Fixed warning reporting.} % \changes{v1.26}{2012/04/24}{Fixed sorting of name suffixes in index} % \changes{v1.4}{2012/07/24}{Made more robust} +% \changes{v1.5}{2013/02/22}{Added reversing and caps mechanisms} % \begin{macrocode} \newcommandx\AKA[5][1=\@empty, 3=\@empty, 5=\@empty]% {% + \leavevmode\hbox{}% \protected@edef\testi{#1}% + \protected@edef\testii{#2}% \protected@edef\testiii{#3}% + \protected@edef\testiv{#4}% \protected@edef\testv{#5}% - \leavevmode\hbox{}% + \if@nameauth@AllCaps\CapName\fi% + \if@nameauth@RevAll\RevName\fi% + \if@nameauth@RevAll\RevComma\fi% \if@nameauth@ShowComma% \protected@edef\Space{,\space}% \else% \let\Space\Interspace% \fi% - \protected@edef\RawSurnamesi{#2}% - \protected@edef\RawSurnamesii{#4}% - \protected@edef\Shorti{\@nameauth@Root{#2}}% - \protected@edef\Shortii{\@nameauth@Root{#4}}% - \ifx\RawSurnamesi\Shorti% - \let\Surnamesi\Shorti% - \protected@edef\Suffixi{\@empty}% - \else% - \protected@edef\Suffixi{\ignorespaces\@nameauth@Suffix{#2}}% - \protected@edef\Surnamesi{\Shorti\Space\Suffixi}% - \fi% - \ifx\RawSurnamesii\Shortii% + \protected@edef\Shortii{\@nameauth@Root{#2}}% + \protected@edef\Shortiv{\@nameauth@Root{#4}}% + \ifx\testii\Shortii% \let\Surnamesii\Shortii% \protected@edef\Suffixii{\@empty}% \else% - \protected@edef\Suffixii{\ignorespaces\@nameauth@Suffix{#4}}% + \protected@edef\Suffixii{\@nameauth@Suffix{#2}}% \protected@edef\Surnamesii{\Shortii\Space\Suffixii}% \fi% + \ifx\testiv\Shortiv% + \protected@edef\Suffixiv{\@empty}% + \let\Surnamesiv\Shortiv% + \let\Reverseiv\Shortiv% + \else% + \protected@edef\Suffixiv{\@nameauth@Suffix{#4}}% + \protected@edef\Surnamesiv{\Shortiv\Space\Suffixiv}% + \protected@edef\Reverseiv{\Suffixiv\Space\Shortiv}% + \fi% \@nameauth@ShowCommafalse% + \@nameauth@AllThisfalse% \ifx\testiii\@empty% \ifx\testv\@empty% \ifcsname\@nameauth@CleanName{#4!PN!}\endcsname% @@ -1448,16 +1715,25 @@ \else% \csgdef{\@nameauth@CleanName{#4!PN!}}{}% \ifx\testi\@empty% - \@nameauth@Index{\Surnamesii|see{\Surnamesi}}% + \@nameauth@Index{\Surnamesiv|see{\Surnamesii}}% \else% - \ifx\Suffixi\@empty \@nameauth@Index{\Surnamesii|see{\Surnamesi, #1}}% - \else\@nameauth@Index{\Surnamesii|see{\Shorti, #1, \Suffixi}}\fi% + \ifx\Suffixii\@empty \@nameauth@Index{\Surnamesiv|see{\Surnamesii, #1}}% + \else\@nameauth@Index{\Surnamesiv|see{\Shortii, #1, \Suffixii}}\fi% \fi% \fi% \fi% \fi% \@nameauth@AltAKAfalse% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnamesii}% + \if@nameauth@RevThisComma% + \protected@edef\Space{,\space}% + \else% + \let\Space\Interspace% + \fi% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Reverseiv}% + \else% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnamesiv}% + \fi% \else% \ifcsname\@nameauth@CleanName{#4#5!PN!}\endcsname% \PackageWarning{nameauth}% @@ -1473,20 +1749,32 @@ \else% \csgdef{\@nameauth@CleanName{#4#5!PN!}}{}% \ifx\testi\@empty% - \@nameauth@Index{\Surnamesii\space#5|see{\Surnamesi}}% + \@nameauth@Index{\Surnamesiv\space#5|see{\Surnamesii}}% \else% - \ifx\Suffixi\@empty \@nameauth@Index{\Surnamesii\space#5|see{\Surnamesi, #1}}% - \else\@nameauth@Index{\Surnamesii\space#5|see{\Shorti, #1, \Suffixi}}\fi% + \ifx\Suffixii\@empty \@nameauth@Index{\Surnamesiv\space#5|see{\Surnamesii, #1}}% + \else\@nameauth@Index{\Surnamesiv\space#5|see{\Shortii, #1, \Suffixii}}\fi% \fi% \fi% \fi% \fi% + \if@nameauth@RevThisComma% + \protected@edef\Space{,\space}% + \else% + \let\Space\Interspace% + \fi% \if@nameauth@AltAKA% \@nameauth@AltAKAfalse% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{#5}% + \if@nameauth@RevThis% + \else% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{\testv}% + \fi% \else% \@nameauth@AltAKAfalse% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{\Surnamesii\space#5}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{\expandafter\testv\expandafter\Space\Surnamesiv}% + \else% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{\expandafter\Surnamesiv\expandafter\space\testv}% + \fi% \fi% \fi% \else% @@ -1504,20 +1792,20 @@ \else% \csgdef{\@nameauth@CleanName{#3#4!PN!}}{}% \ifx\testi\@empty% - \ifx\Suffixii\@empty \@nameauth@Index{\Surnamesii, #3|see{\Surnamesi}}% - \else\@nameauth@Index{\Shortii, #3, \Suffixii|see{\Surnamesi}}\fi% + \ifx\Suffixiv\@empty \@nameauth@Index{\Surnamesiv, #3|see{\Surnamesii}}% + \else\@nameauth@Index{\Shortiv, #3, \Suffixiv|see{\Surnamesii}}\fi% \else% - \ifx\Suffixi\@empty% - \ifx\Suffixii\@empty% - \@nameauth@Index{\Surnamesii, #3|see{\Surnamesi, #1}}% + \ifx\Suffixii\@empty% + \ifx\Suffixiv\@empty% + \@nameauth@Index{\Surnamesiv, #3|see{\Surnamesii, #1}}% \else% - \@nameauth@Index{\Shortii, #3, \Suffixii|see{\Surnamesi, #1}}% + \@nameauth@Index{\Shortiv, #3, \Suffixiv|see{\Surnamesii, #1}}% \fi% \else% - \ifx\Suffixii\@empty% - \@nameauth@Index{\Surnamesii, #3|see{\Shorti, #1, \Suffixi}}% + \ifx\Suffixiv\@empty% + \@nameauth@Index{\Surnamesiv, #3|see{\Shortii, #1, \Suffixii}}% \else% - \@nameauth@Index{\Shortii, #3, \Suffixii|see{\Shorti, #1, \Suffixi}}% + \@nameauth@Index{\Shortiv, #3, \Suffixiv|see{\Shortii, #1, \Suffixii}}% \fi% \fi% \fi% @@ -1525,14 +1813,26 @@ \fi% \fi% \@nameauth@AltAKAfalse% + \if@nameauth@RevThisComma% + \protected@edef\Space{,\space}% + \else% + \let\Space\Interspace% + \fi% \ifx\testv\@empty% \protected@edef\Forenames{#3}% \else% \protected@edef\Forenames{#5}% \fi% - \expandafter\@nameauth@FmtName\expandafter*\expandafter{% - \expandafter\Forenames\expandafter\space\Surnamesii}% + \if@nameauth@RevThis% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{% + \expandafter\Surnamesiv\expandafter\Space\Forenames}% + \else% + \expandafter\@nameauth@FmtName\expandafter*\expandafter{% + \expandafter\Forenames\expandafter\space\Surnamesiv}% + \fi% \fi% + \@nameauth@RevThisfalse% + \@nameauth@RevThisCommafalse% \if@nameauth@Punct\expandafter\@nameauth@CheckDot\fi% } \WithSuffix\newcommandx\AKA*[5][1=\@empty,3=\@empty,5=\@empty]% @@ -1629,19 +1929,19 @@ \newcommandx\IndexName[3][1=\@empty, 3=\@empty]% {% \protected@edef\testi{#1}% + \protected@edef\testii{#2}% \protected@edef\testiii{#3}% \if@nameauth@ShowComma% \protected@edef\Space{,\space}% \else% \let\Space\Interspace% \fi% - \protected@edef\RawSurnames{#2}% \protected@edef\Short{\@nameauth@Root{#2}}% - \ifx\RawSurnames\Short% + \ifx\testii\Short% \let\Surnames\Short% \protected@edef\Suffix{\@empty}% \else% - \protected@edef\Suffix{\ignorespaces\@nameauth@Suffix{#2}}% + \protected@edef\Suffix{\@nameauth@Suffix{#2}}% \protected@edef\Surnames{\Short\Space\Suffix}% \fi% \@nameauth@ShowCommafalse% @@ -1799,6 +2099,48 @@ % \end{macrocode} % \end{macro} % +% \changes{v1.5}{2013/02/22}{Added macro} +% \begin{macro}{\AllCapsInactive} +% \begin{macrocode} +\newcommand{\AllCapsInactive}{\@nameauth@AllCapsfalse} +% \end{macrocode} +% \end{macro} +% +% \changes{v1.5}{2013/02/22}{Added macro} +% \begin{macro}{\AllCapsActive} +% \begin{macrocode} +\newcommand{\AllCapsActive}{\@nameauth@AllCapstrue} +% \end{macrocode} +% \end{macro} +% +% \changes{v1.5}{2013/02/22}{Added macro} +% \begin{macro}{\ReverseInactive} +% \begin{macrocode} +\newcommand{\ReverseInactive}{\@nameauth@RevAllfalse} +% \end{macrocode} +% \end{macro} +% +% \changes{v1.5}{2013/02/22}{Added macro} +% \begin{macro}{\ReverseActive} +% \begin{macrocode} +\newcommand{\ReverseActive}{\@nameauth@RevAlltrue} +% \end{macrocode} +% \end{macro} +% +% \changes{v1.5}{2013/02/22}{Added macro} +% \begin{macro}{\ReverseCommaInactive} +% \begin{macrocode} +\newcommand{\ReverseCommaInactive}{\@nameauth@RevAllfalse\@nameauth@RevAllCommafalse} +% \end{macrocode} +% \end{macro} +% +% \changes{v1.5}{2013/02/22}{Added macro} +% \begin{macro}{\ReverseCommaActive} +% \begin{macrocode} +\newcommand{\ReverseCommaActive}{\@nameauth@RevAlltrue\@nameauth@RevAllCommatrue} +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\IndexInactive} % \changes{v0.94}{2012/02/15}{Added macro} % \begin{macrocode} |