diff options
author | Karl Berry <karl@freefriends.org> | 2017-03-23 21:29:07 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-03-23 21:29:07 +0000 |
commit | 92c843695cdf50eda50282ddd95705cf0aec67c5 (patch) | |
tree | 5ceda1f4e573944c61cd8edf8965f695d0590a5a /Master | |
parent | 10c1a2a82f0cc8edd68925cce34738ffd368bed8 (diff) |
nameauth (23mar17)
git-svn-id: svn://tug.org/texlive/trunk@43586 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/nameauth/README | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/nameauth/README.txt | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/nameauth/examples.tex | 138 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/nameauth/nameauth.pdf | bin | 956426 -> 979787 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/nameauth/nameauth.dtx | 910 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/nameauth/nameauth.ins | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/nameauth/nameauth.sty | 138 |
7 files changed, 747 insertions, 447 deletions
diff --git a/Master/texmf-dist/doc/latex/nameauth/README b/Master/texmf-dist/doc/latex/nameauth/README index 6a67fe35238..eba2ade9054 100644 --- a/Master/texmf-dist/doc/latex/nameauth/README +++ b/Master/texmf-dist/doc/latex/nameauth/README @@ -1,6 +1,6 @@ | --------:| ---------------------------------------------------------------- -nameauth:| Name authority management for consistency in text and index +nameauth:| Name authority mechanism for consistency in text and index Author:| Charles P. Schaum E-mail:| charles dot schaum at comcast dot net License:| Released under the LaTeX Project Public License 1.3c or later diff --git a/Master/texmf-dist/doc/latex/nameauth/README.txt b/Master/texmf-dist/doc/latex/nameauth/README.txt index 6a67fe35238..eba2ade9054 100644 --- a/Master/texmf-dist/doc/latex/nameauth/README.txt +++ b/Master/texmf-dist/doc/latex/nameauth/README.txt @@ -1,6 +1,6 @@ | --------:| ---------------------------------------------------------------- -nameauth:| Name authority management for consistency in text and index +nameauth:| Name authority mechanism for consistency in text and index Author:| Charles P. Schaum E-mail:| charles dot schaum at comcast dot net License:| Released under the LaTeX Project Public License 1.3c or later diff --git a/Master/texmf-dist/doc/latex/nameauth/examples.tex b/Master/texmf-dist/doc/latex/nameauth/examples.tex index 85c62eb98f1..f7de75f8800 100644 --- a/Master/texmf-dist/doc/latex/nameauth/examples.tex +++ b/Master/texmf-dist/doc/latex/nameauth/examples.tex @@ -4,28 +4,59 @@ %% This is an example file used with the nameauth package. %% See README and nameauth.pdf for copyright info. %% -\section*{Test for Latex Engine} + +\section{Test for Latex Engine} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Test which LaTeX engine you are using %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{verbatim} +\ifdefined\Umathchar + \usepackage{fontspec} + \usepackage{polyglossia} +\else + \usepackage[utf8]{inputenc} + \usepackage[TS1,T1]{fontenc} + \usepackage{babel} +\fi +% Below is optional; use only if your dvi viewer|\\ +% crashes or becomes unresponsive with tikz.|\\ \usepackage{ifxetex} \usepackage{ifluatex} -\ifxetex% uses fontspec - \usepackage{fontspec}% check package docs - \defaultfontfeatures{Mapping=tex-text} - \usepackage{xunicode}% check if outmoded - \usepackage{xltxtra}% check if outmoded +\usepackage{ifpdf} +\ifxetex + \usepackage{tikz} \else - \ifluatex% also uses fontspec - \usepackage{fontspec}% check package docs - \defaultfontfeatures{Ligatures=TeX} - \else% traditional NFSS - \usepackage[utf8]{inputenc} - \usepackage[TS1,T1]{fontenc} + \ifpdf + \usepackage{tikz} \fi \fi \end{verbatim} + +\section{Use Different Latex Engines} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Allow for multiple LaTeX engines +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Requires \textsf{ifxetex}, \textsf{ifluatex}, and \textsf{ifpdf}. +\begin{verbatim} +\ifxetex + xelatex % +\else + \ifluatex + \ifpdf + lualatex in pdf mode % + \else + lualatex in dvi mode % + \fi + \else + \ifpdf + pdflatex % + \else + latex % + \fi + \fi +\fi +\end{verbatim} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Print the first use of a name in text and margin %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -35,7 +66,7 @@ %% %% This macro is suitable to replace \NamesFormat and \FrontNamesFormat. %% -\section*{First Use in Margin: $\epsilon$-\TeX} +\section{First Use in Margin: $\epsilon$-\TeX} \begin{verbatim} \renewcommand*\NamesFormat[1]% {% @@ -45,7 +76,8 @@ \fi } \end{verbatim} -\section*{First Use in Margin: Historic \TeX} + +\section{First Use in Margin: Historic \TeX} \begin{verbatim} \renewcommand*\NamesFormat[1]% {% @@ -55,7 +87,7 @@ \fi } \end{verbatim} -\clearpage + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Print a text tag after first name use %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -65,7 +97,7 @@ %% %% This macro is suitable to replace \NamesFormat and \FrontNamesFormat. %% -\section*{Text Tag With First Use: $\epsilon$-\TeX} +\section{Text Tag With First Use: $\epsilon$-\TeX} \begin{verbatim} \newif\ifNoTag \makeatletter @@ -85,7 +117,9 @@ \fi}\temp\global\NoTagfalse} \makeatother \end{verbatim} -\section*{Text Tag With First Use: Historic \TeX} +\clearpage + +\section{Text Tag With First Use: Historic \TeX} \begin{verbatim} \newif\ifNoTag \makeatletter @@ -109,6 +143,7 @@ \global\NoTagfalse} \makeatother \end{verbatim} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Surname index entries in an fbox %% First surname instances in text are in an fbox @@ -118,7 +153,7 @@ %% box when \@nameauth@DoAlt is true, or it just prints its argument. %% %% -\section*{Formatting and Capping: New Style} +\section{Formatting and Capping: New Style} \begin{verbatim} \makeatletter \newcommand*\Fbox[1]{% @@ -131,6 +166,8 @@ \let\FrontNameHook\MainNameHook \end{verbatim} +\clearpage + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Use both the arguments passed to the hooks %% and \NameParser under different conditions @@ -141,7 +178,7 @@ %% to make \NameParser print the name differently. %% %% -\section*{Putting \texttt{\textbackslash NameParser} on Display} +\section{Putting \texttt{\textbackslash NameParser} on Display} \begin{verbatim} \makeatletter \renewcommand*\NamesFormat[1]{% @@ -163,6 +200,7 @@ \makeatother \end{verbatim} \clearpage + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Surname index entries in an fbox %% First surname instances in text are in an fbox @@ -175,14 +213,15 @@ %% We then create a macro \Fbox that prints its argument in %% an fbox when \ifFbox is true, or makes no change otherwise. %% -%% The \AltCap macro only capitalizies its argument inside the formatting -%% hook \NamesFormat below. +%% The \AltCaps macro only capitalizies its argument inside the +%% formatting hook \NamesFormat below. %% %% \Namesformat ignores its argument, sets \InHooktrue, then %% calls the name parser used specifically in formatting hooks. +%% \MainNameHook toggles \Fboxfalse to suppress formatting. %% %% -\section*{Formatting and Capping: Old Style} +\section{Formatting and Capping: Old Style} \begin{verbatim} \newif\ifFbox \newif\ifFirstCap @@ -193,9 +232,9 @@ \ifFbox\fbox{#1}\else#1\fi } -\renewcommand*\AltCap[1]{% +\renewcommand*\AltCaps[1]{% \ifInHook - \ifFirstCap\uppercase{#1}\else#1\fi + \ifFirstCap\MakeUppercase{#1}\else#1\fi \else #1% \fi @@ -218,4 +257,55 @@ \let\FrontNamesFormat\Namesformat \let\FrontNameHook\MainNameHook \end{verbatim} +\clearpage + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Migrate new style to old style +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% This is the full example abbreviated in the manual. +%% Below we create a Boolean value \ifCaps and set it true. +%% This will trigger small caps. +%% +%% We then redefine \textSC to use our flag instead of package internals. +%% We redefine \AltCaps, \CapThis, and \NamesFormat in the same manner +%% as above. We change \MainNameHook to use our Caps flag. +%% +%% +\section{Migrating New Style to Old Style} +\begin{verbatim} +\newif\ifCaps +\newif\ifFirstCap +\newif\ifInHook +\Capstrue + +\renewcommand*\textSC[1]{% + \ifCaps\textsc{#1}\else#1\fi +} + +\renewcommand*\AltCaps[1]{% + \ifInHook + \ifFirstCap\MakeUppercase{#1}\else#1\fi + \else + #1% + \fi +} + +\renewcommand\CapThis{\FirstCaptrue} + +\renewcommand*\NamesFormat[1] +{% + \InHooktrue\NameParser\InHookfalse% + \global\FirstCapfalse% +} + +\renewcommand*\MainNameHook[1] +{% + \Capsfalse\InHooktrue\NameParser\InHookfalse% + \global\FirstCapfalse\Capstrue% +} + +\let\FrontNamesFormat\Namesformat +\let\FrontNameHook\MainNameHook +\end{verbatim} \end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/nameauth/nameauth.pdf b/Master/texmf-dist/doc/latex/nameauth/nameauth.pdf Binary files differindex 1c29d15eb5f..7a7da3804ec 100644 --- a/Master/texmf-dist/doc/latex/nameauth/nameauth.pdf +++ b/Master/texmf-dist/doc/latex/nameauth/nameauth.pdf diff --git a/Master/texmf-dist/source/latex/nameauth/nameauth.dtx b/Master/texmf-dist/source/latex/nameauth/nameauth.dtx index 3747d190ac1..556ededf48d 100644 --- a/Master/texmf-dist/source/latex/nameauth/nameauth.dtx +++ b/Master/texmf-dist/source/latex/nameauth/nameauth.dtx @@ -6,7 +6,7 @@ %<*readme> | --------:| ---------------------------------------------------------------- -nameauth:| Name authority management for consistency in text and index +nameauth:| Name authority mechanism for consistency in text and index Author:| Charles P. Schaum E-mail:| charles dot schaum at comcast dot net License:| Released under the LaTeX Project Public License 1.3c or later @@ -106,7 +106,7 @@ This material is subject to the LaTeX Project Public License: http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html Happy TeXing! -%</readme>F +%</readme> %<*internal> \fi \def\nameofplainTeX{plain} @@ -121,7 +121,7 @@ Happy TeXing! \preamble --------:| ---------------------------------------------------------------- -nameauth:| Name authority management for consistency in text and index +nameauth:| Name authority mechanism for consistency in text and index Author:| Charles P. Schaum E-mail:| charles dot schaum at comcast dot net License:| Released under the LaTeX Project Public License 1.3c or later @@ -180,66 +180,52 @@ Running "make install" installs the files in the local TeX tree. %<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] %<package>\ProvidesPackage{nameauth} %<*package> - [2017/01/13 3.1 Name authority management for consistency in text and index] + [2017/03/22 3.2 Name authority mechanism for consistency in text and index] %</package> %<*driver> \documentclass[11pt]{ltxdoc} +\usepackage[textwidth=137mm,textheight=237mm,right=25mm,marginparwidth=40mm,nohead]{geometry} \usepackage{ifxetex} \usepackage{ifluatex} \usepackage{ifpdf} -\ifxetex +\ifdefined\Umathchar \usepackage{fontspec} - \defaultfontfeatures{Mapping=tex-text} + \usepackage{polyglossia} + \setdefaultlanguage{american} + \setotherlanguage{german} + \newcommand\de[1]{\textgerman{#1}} \else - \ifluatex - \usepackage{fontspec} - \defaultfontfeatures{Ligatures=TeX} - \else - \usepackage[utf8]{inputenc} - \usepackage[TS1,T1]{fontenc} - \usepackage{newunicodechar} - \usepackage{lmodern} - \DeclareTextSymbolDefault{\textlongs}{TS1} - \DeclareTextSymbol{\textlongs}{TS1}{115} - \newunicodechar{ſ}{\textlongs} - \fi + \usepackage[utf8]{inputenc} + \usepackage[TS1,T1]{fontenc} + \usepackage{newunicodechar} + \usepackage{lmodern} + \DeclareTextSymbolDefault{\textlongs}{TS1} + \DeclareTextSymbol{\textlongs}{TS1}{115} + \newunicodechar{ſ}{\textlongs} + \usepackage[ngerman,american]{babel} + \newcommand\de[1]{\foreignlanguage{ngerman}{#1}} \fi \usepackage{\jobname} +\usepackage{booktabs} +\usepackage{enumitem} +\usepackage{makeidx} \usepackage{manfnt} -\usepackage[textwidth=135mm,textheight=237mm,right=25mm,marginparwidth=40mm,nohead]{geometry} \usepackage[toc]{multitoc} -\usepackage{makeidx} \usepackage{setspace} -\usepackage{enumitem} -\usepackage{booktabs} +\ifxetex\usepackage{tikz}\else\ifpdf\usepackage{tikz}\fi\fi \usepackage{xcolor} \colorlet{naviolet}{violet!80!black} \colorlet{nagreen}{green!40!black} \colorlet{naolive}{olive!90!black} \colorlet{naorange}{orange!50!black} \colorlet{nared}{red!60!black} +\usepackage[numbered]{hypdoc} \makeatletter \newcommand\NO{\@ifstar% {\textcolor{nared}{\large\strut {\hbox to 2.5em{\hfil\S\textsf{No}\hfil}}}}{\textcolor{nared}{\large\strut {\hbox to 2.5em{\hfil\textsf{No}\hfil}}}}} \newcommand\YES{\@ifstar% {\textcolor{nagreen}{\large\strut\bfseries \fbox{\hbox to 2.1em{\hfil*\textsf{Yes}\hfil}}}}{\textcolor{nagreen}{\large\strut\bfseries \fbox{\hbox to 2.1em{\hfil\textsf{Yes}\hfil}}}}} \makeatother -\ifxetex - \usepackage{tikz}% -\else - \ifluatex - \ifpdf - \usepackage{tikz}% - \else - \fi - \else - \ifpdf - \usepackage{tikz}% - \else - \fi - \fi -\fi -\usepackage[numbered]{hypdoc} \setlist{rightmargin=\leftmargin,itemsep=0pt} \frenchspacing \DisableCrossrefs @@ -286,6 +272,8 @@ Running "make install" installs the files in the local TeX tree. \< SDJR & Sammy & \noexpand\textSC{Davis}, \noexpand\textSC{Jr}. & > \< Soto & Hernando & de Soto & > + \< Striet & John & Strie\-tel\-meier & > + \< Strieti & John & \de{Strietelmeier} & > \< VBuren & Martin & Van Buren & > \< Sun & & Sun, Yat-sen & > \< Wash & George & Washington & > @@ -310,6 +298,8 @@ Running "make install" installs the files in the local TeX tree. {Rockefeller, John David 3} \PretagName[John David]{Rockefeller, IV}{Rockefeller, John David 4} \PretagName[John]{\noexpand\textSC{Adams}}{Adams, John} +\PretagName[John]{Strie\-tel\-meier}{Strietelmeier, John} +\PretagName[John]{\de{Strietelmeier}}{Strietelmeier, John} \PretagName[Pierre-Jean]% {\noexpand\Fbox{\noexpand\AltCaps{d}e Smet}}% {de Smet, Pierre-Jean} @@ -330,6 +320,8 @@ Running "make install" installs the files in the local TeX tree. \PretagName{Thomas, à~Kempis}{Thomas a Kempis} \PretagName{Vlad, Ţepeş}{Vlad Tepes} \PretagName[Frenec]{Molnár}{Molnar, Frenec} +\PretagName[Wm.]{\noexpand\textSC{Shakespeare}}{Shakespeare, William} +\TagName[e.e.]{cummings}{|hyperpage} \TagName[Martin]{Van Buren}{, pres.|hyperpage} \TagName[Frenec]{Molnár}{\dag|hyperpage} \TagName[Martin]{\noexpand\textSC{Luther}}{|hyperpage} @@ -367,7 +359,8 @@ Running "make install" installs the files in the local TeX tree. \TagName[John Maynard]{Keynes}{|hyperpage} \TagName[John]{\noexpand\textSC{Adams}}{, pres.|hyperpage} \TagName[John]{Smith}{*|hyperpage} -\TagName[John]{Strietelmeier}{|hyperpage} +\TagName[John]{Strie\-tel\-meier}{|hyperpage} +\TagName[John]{\de{Strietelmeier}}{|hyperpage} \TagName[Lafcadio]{Hearn}{|hyperpage} \TagName[Louis]{Gossett, Jr.}{|hyperpage} \TagName[M.T.]{Cicero}{|hyperpage} @@ -425,6 +418,7 @@ Running "make install" installs the files in the local TeX tree. \TagName{Yamamoto, Isoroku}{|hyperpage} \TagName{Yohko}{|hyperpage} \TagName{Yoshida}[Shigeru]{\ddag, PM|hyperpage} +\TagName[Wm.]{\noexpand\textSC{Shakespeare}}{|hyperpage} \NameAddInfo{Friedrich, I}{Barbarossa} \IndexActual{=} \begin{document} @@ -433,7 +427,7 @@ Running "make install" installs the files in the local TeX tree. %</driver> % \fi % -% \CheckSum{3356} +% \CheckSum{3502} % % \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 @@ -452,10 +446,11 @@ Running "make install" installs the files in the local TeX tree. % Right brace \} Tilde \~} % % \changes{0.7}{2011/12/26}{Initial release} -% \changes{2.0}{2015/11/11}{Use dtxgen template; prevent malformed input in most macros} +% \changes{2.0}{2015/11/11}{Use dtxgen template; prevent malformed input} % \changes{2.5}{2016/04/06}{No default formatting} -% \changes{2.6}{2016/09/19}{Fix older syntax in most macros} -% \changes{3.1}{2017/01/13}{Simplified logic and argument tests in most macros} +% \changes{2.6}{2016/09/19}{Fix older syntax} +% \changes{3.1}{2017/01/13}{Fix logic, arg tests} +% \changes{3.2}{2017/03/22}{Use \cmd{\MakeUppercase} instead of \cmd{\uppercase}} % \GetFileInfo{\jobname.dtx} % \DoNotIndex{\@empty, \@gobble, \@period, \@token, \trim@spaces, \zap@space} % \DoNotIndex{\begingroup, \bfseries, \bgroup, \csdef, \csgdef, \csname, \csundef, \DeclareOption, \def, \detokenize, \edef, \egroup, \else, \endcsname, \endgroup, \endinput, \ExecuteOptions, \expandafter, \fi, \futurelet, \global, \hbox, \if, \ifcsname, \ifx, \ignorespaces, \index, \itshape, \leavevmode, \let, \newcommand, \newcommandx, \newenvironment, \newif, \nobreakspace, \PackageError, \PackageWarning, \ProcessOptions, \relax, \renewcommand, \RequirePackage, \scshape, \space, \textbackslash, \uppercase} @@ -463,16 +458,13 @@ Running "make install" installs the files in the local TeX tree. % \newif\ifDoTikZ % \newif\ifNoTag % -% \ifxetex\DoTikZtrue\else -% \ifluatex\ifpdf\DoTikZtrue\fi -% \else\ifpdf\DoTikZtrue\fi\fi\fi -% \let\ex\expandafter +% \ifxetex\DoTikZtrue\else\ifpdf\DoTikZtrue\fi\fi % \renewcommand*\FrontNamesFormat[1]{\color{nagreen}\sffamily #1} % \renewcommand*\FrontNameHook[1]{\color{naolive}\sffamily #1} % \renewcommand*\NamesFormat[1]{\color{naviolet}\sffamily #1} % \renewcommand*\MainNameHook[1]{\color{naorange}\sffamily #1} % -% \title{\textsf{nameauth} --- Name authority management\\ for consistency in text and +% \title{\textsf{nameauth} --- Name authority mechanism\\ for consistency in text and % index\thanks{This file describes version \fileversion, last revised \filedate.}} % \author{Charles P. Schaum\thanks{E-mail: charles dot schaum at comcast dot net}} % \date{Released \filedate} @@ -702,7 +694,7 @@ Running "make install" installs the files in the local TeX tree. % |\Name [George S.]{Patton, Jr.}|\dotfill\Name[George S.]{Patton, Jr.}\\ % |\FName[George S.]{Patton, Jr.}|\dotfill\FName[George S.]{Patton, Jr.}}\medskip % -% \noindent\meta{Alternate names} with Western forms require the \meta{FNN} argument to have a name in it. \meta{Alternate names} print in the text. \meta{FNN} prints in the index. For alternate surnames see Section~\ref{sec:DuBois}.\medskip +% \noindent\meta{Alternate names} with Western forms require the \meta{FNN} argument to have a name in it. \meta{Alternate names} print only in the text. \meta{FNN} prints in the text and index. For alternate surnames see Section~\ref{sec:DuBois}.\medskip % % {\setstretch{1.1}\noindent|\Name [Clive Staples]{Lewis}|\dotfill\Name[Clive Staples]{Lewis}\\ % |\Name*[Clive Staples]{Lewis}[C.S.]|\dotfill\Name*[Clive Staples]{Lewis}[C.S.]\\ @@ -714,9 +706,9 @@ Running "make install" installs the files in the local TeX tree. % \noindent Both affixes and alternate names can vary in the text. Western names require a comma to delimit affixes; see Sections~\ref{sec:obsolete} and~\ref{sec:Affix}. Using alternate names does not trigger an explicit first use. That is intentional.\medskip % % {\setstretch{1.1}\noindent|\Name [John David]{Rockefeller, IV}|\dotfill\Name[John David]{Rockefeller, IV}\\ -% |\Name [John David]{Rockefeller, IV}[Jay]|\dotfill\Name[John David]{Rockefeller, IV}[Jay]\\ % |\Name*[John David]{Rockefeller, IV}[Jay]|\dotfill\Name*[John David]{Rockefeller, IV}[Jay]\\ % |\DropAffix\Name*[John David]{Rockefeller, IV}[Jay]|\dotfill\DropAffix\Name*[John David]{Rockefeller, IV}[Jay]} +% |\Name [John David]{Rockefeller, IV}[Jay]|\dotfill\Name[John David]{Rockefeller, IV}[Jay]\\ % \clearpage % % \noindent{\bfseries ``Non-Native'' Eastern Names in the Text, Western Index Entry} @@ -817,16 +809,16 @@ Running "make install" installs the files in the local TeX tree. % \else\vfill\fi % \textbf{Examples:}\medskip % -% \noindent The main feature of non-Western forms in \textsf{nameauth} is the comma-delimited suffix. Eastern names have the family name in \meta{SNN} where ancient names have the personal name, but that remains the required argument. +% \noindent The main feature of non-Western forms in \textsf{nameauth} is the comma-delimited suffix. Eastern names have the family name in \meta{SNN} where ancient names have the personal name, but that root name remains the required argument. % -%These names always take the form \meta{SNN FNN} in the index. See Section~\ref{sec:Eastern}. Here we call this the ``native'' Eastern form.\medskip +%These names always take the form \meta{SNN FNN} in the index. See Section~\ref{sec:Eastern}. In this manual we refer to the ``native'' Eastern form below:\medskip % % {\noindent\setstretch{1.1}|\Name{Yamamoto, Isoroku}|\dotfill\Name{Yamamoto, Isoroku}\\ % |\Name{Yamamoto, Isoroku}|\dotfill\Name{Yamamoto, Isoroku}\\ % |\RevName\Name*{Yamamoto, Isoroku}|\dotfill\RevName\Name*{Yamamoto, Isoroku}\\ % |\RevName\Name*{Yamamoto, Isoroku}[Admiral]|\dotfill\RevName\Name*{Yamamoto, Isoroku}[Admiral]}\medskip % -% \noindent Non-Western\marginpar{\large\raggedleft\textsf{\bfseries 3.0}\strut\break\small\dbend} forms also can have alternate names, except for mononyms (for which it makes no sense). These alternate names do not work with the older syntax for non-Western names (see Section~\ref{sec:obsolete}). +% \noindent Non-Western\marginpar{\large\raggedleft\textsf{\bfseries 3.0}\strut\break\small\dbend} forms also can have alternate names, except for mononyms (for which alternate names make no sense). Alternate names do not work with the older syntax for non-Western names (see Section~\ref{sec:obsolete}). % \clearpage % % \noindent{\bfseries Ancient Names} @@ -856,7 +848,7 @@ Running "make install" installs the files in the local TeX tree. % \else\vspace{20ex}\fi % \textbf{Examples:}\medskip % -% \noindent These forms are for royalty and ancient figures. They have one or more personal names that may or may not have suffixes.\medskip +% \noindent These forms are meant for royalty and ancient figures. They have one or more personal names that may or may not have suffixes.\medskip % % {\noindent\setstretch{1.1}|\Name{Aristotle}|\dotfill\Name{Aristotle}\\ % |\Name{Aristotle}|\dotfill\Name{Aristotle}\\ @@ -867,22 +859,22 @@ Running "make install" installs the files in the local TeX tree. % \label{sec:simplestart}% % % \DescribeEnv{nameauth} -% The |nameauth| environment replaces \cmd{\Name}, \cmd{\Name*}, and \cmd{\FName} with shorthands. Using |nameauth| in the preamble is not required, but it helps prevent undefined control sequences. We set some names up below. Comments are added for explanation; they are not part of the environment itself. +% The |nameauth| environment replaces \cmd{\Name}, \cmd{\Name*}, and \cmd{\FName} with shorthands. Using |nameauth| in the preamble is not required, but it helps prevent undefined control sequences. We set some names up below. Comments (shown in red) are added for explanation; they are not part of the environment itself. % \begin{quote}\small\setstretch{1.1} -% |% Field 1 Field 2 Field 3 Field 4|\\ +% {\color{nared}|% Field 1 Field 2 Field 3 Field 4|}\\ % |\begin{nameauth}|\\[0.2ex] -% | \< Wash & George & Washington & > %|\hfill\emph{Western}\\ -% | \< Soto & Hernando & de Soto & > %|\hfill\emph{Western}\\ -% | \< Pat & George S. & Patton, Jr. & > %|\hfill\emph{W+affix}\\ -% | \< JRIV & John David & Rockefeller, IV & > %|\hfill\emph{W+affix}\\ -% | \< Lewis & Clive Staples & Lewis & > %|\hfill\emph{Western}\\ -% | \< Aris & & Aristotle & > %|\hfill\emph{Ancient}\\ -% | \< Aeth & & Æthelred, II & > %|\hfill\emph{Ancient}\\ -% | \< Eliz & & Elizabeth, I & > %|\hfill\emph{Ancient}\\ -% | \< Attil & & Attila, the Hun & > %|\hfill\emph{Ancient}\\ -% | \< Konoe & Fumimaro & Konoe & > %|\hfill\emph{W\,as\,East.}\\ -% | \< Miyaz & & Miyazaki, Hayao & > %|\hfill\emph{Eastern}\\ -% | \< Yamt & & Yamamoto, Isoroku & > %|\hfill\emph{Eastern}\\ +% | \< Wash & George & Washington & > |{\color{nared}|%|\hfill\emph{Western}}\\ +% | \< Soto & Hernando & de Soto & > |{\color{nared}|%|\hfill\emph{Western}}\\ +% | \< Pat & George S. & Patton, Jr. & > |{\color{nared}|%|\hfill\emph{W+affix}}\\ +% | \< JRIV & John David & Rockefeller, IV & > |{\color{nared}|%|\hfill\emph{W+affix}}\\ +% | \< Lewis & Clive Staples & Lewis & > |{\color{nared}|%|\hfill\emph{Western}}\\ +% | \< Aris & & Aristotle & > |{\color{nared}|%|\hfill\emph{Ancient}}\\ +% | \< Aeth & & Æthelred, II & > |{\color{nared}|%|\hfill\emph{Ancient}}\\ +% | \< Eliz & & Elizabeth, I & > |{\color{nared}|%|\hfill\emph{Ancient}}\\ +% | \< Attil & & Attila, the Hun & > |{\color{nared}|%|\hfill\emph{Ancient}}\\ +% | \< Konoe & Fumimaro & Konoe & > |{\color{nared}|%|\hfill\emph{W\,as\,East.}}\\ +% | \< Miyaz & & Miyazaki, Hayao & > |{\color{nared}|%|\hfill\emph{Eastern}}\\ +% | \< Yamt & & Yamamoto, Isoroku & > |{\color{nared}|%|\hfill\emph{Eastern}}\\ % |\end{nameauth}| % \end{quote} % @@ -896,32 +888,9 @@ Running "make install" installs the files in the local TeX tree. % \item Put trailing braces |{|\,|}| or something else after the shorthands to prevent subsequent text in brackets |[|\,|]| from becoming an optional argument. % \end{itemize} % -% Normally you would use something like |\LLewis[C.S.]| to get \LLewis[C.S.] instead of \LLewis. You can make that permanent, where \SCSL\ always prints in the text, yet the index always shows ``Lewis, Clive Staples. Some permanent alternate names are shown below: -% -% \begin{quote}\small\setstretch{1.1} -% |\begin{nameauth}|\\[0.2ex] -% | \< JayR & John David & Rockefeller, IV & Jay > %|\hfill\emph{Western}\\ -% | \< CSL & Clive Staples & Lewis & C.S. > %|\hfill\emph{Western}\\ -% | \< Unraed & & Æthelred, II & Unrædig > %|\hfill\emph{Ancient}\\ -% | \< MSens & & Miyazaki, Hayao & Sensei > %|\hfill\emph{Eastern}\\ -% |\end{nameauth}| -% \end{quote} -% -% So you get \ForgetThis\JayR, \ForgetThis\CSL, \ForgetThis\Unraed, and \ForgetThis\MSens\ instead of \LJRIV, \LLewis, \LAeth, and \LMiyaz, but they all have the same respective index entries.\footnote{One could use \cmd{\AKA} to create a cross-reference \AKA[John David]{Rockefeller, IV}[Jay]{Rockefeller}. See Sections~\ref{sec:IndexXref} and~\ref{sec:AKA}.} -% The caveat is that |\LLewis[Jack]| prints \LLewis[Jack] while |\LCSL[Jack]| prints \LCSL[Jack]. Section~\ref{sec:Fname} explains why. -% -% \begin{quote}\small\setstretch{1.1} -% |\begin{nameauth}|\\[0.2ex] -% | \< JWG & J.W. von & Goethe & > %|\hfill\emph{Western; German}\\ -% | \< VBuren & Martin & Van Buren & > %|\hfill\emph{Western; English}\\ -% |\end{nameauth}| -% \end{quote} -% -% English keeps the prefix with the surname in the text and the index: \VBuren\ is ``Van Buren, Martin'' in the index. German separates particles: \cmd{\JWG} prints \JWG\ and \JWG, with ``Goethe, J.W. von'' in the index. You get \LJWG[von] with |\LJWG[von]|. See Section~\ref{sec:standards} on multicultural standards and Section~\ref{sec:DuBois} on indexing alternate names. Additionally, [\hyperlink{Mulvany}{Mulvany}, 152--82] and the \emph{Chicago Manual of Style} offer helpful guidance.\ForgetName[J.W. von]{Goethe}\medskip -% % \noindent\textbf{So, why use it?}\medskip % -% The simplified interface can save work. Instead of the traditional interface macros on the left, one uses the simplified macros on the right:\\[1ex] +% \noindent The simplified interface can save work. Instead of the traditional interface macros on the left, one uses the simplified macros on the right:\\[1ex] % {\small\setstretch{1.1} % |\Name [George]{Washington}|\dotfill\cmd{\Wash}: \ForgetThis\Wash\\ % |\Name*[George]{Washington}|\dotfill\cmd{\LWash}: \LWash\\ @@ -931,12 +900,11 @@ Running "make install" installs the files in the local TeX tree. % |\ForgetName[George]{Washington}%|\\ % |\Name[George]{Washington}|\dotfill\cmd{\ForgetThis}\cmd{\Wash}: \ForgetThis\Wash\\[1ex] % |\SubvertName[George]{Washington}%|\\ -% |\Name[George]{Washington}|\dotfill\cmd{\SubvertThis}\cmd{\Wash}: \SubvertThis\Wash\hphantom{ \SWash}} -% \clearpage +% |\Name[George]{Washington}|\dotfill\cmd{\SubvertThis}\cmd{\Wash}: \SubvertThis\Wash\hphantom{ \SWash}}\medskip % % \noindent\textbf{Examples:}\medskip % -% Below, ``non-native'' Eastern name forms are shown with a dagger (\dag). Please see Section~\ref{sec:Eastern} to avoid pitfalls with Eastern names and reversing macros. We reset some ``first uses'' of names from before (Section~\ref{sec:tweaks}). +% \noindent Below, ``non-native'' Eastern name forms are shown with a dagger (\dag). Please see Section~\ref{sec:Eastern} to avoid pitfalls with Eastern names and reversing macros. We reset some ``first uses'' of names from before (Section~\ref{sec:tweaks}). % % \begin{center}\footnotesize\setstretch{1.1} % \begin{tabular}{@{}ll@{}} @@ -972,7 +940,30 @@ Running "make install" installs the files in the local TeX tree. % \end{center} % \ExcludeName{Attila, the Hun} % -% Sections~\ref{sec:standards},\marginpar{\small\raggedleft\dbend} \ref{sec:accents}, and~\ref{sec:IndexSort} deal with the pitfalls of accents and capitalization, as well as why you should use \cmd{\PretagName} when dealing with names that contain control sequences or active Unicode characters. +% \noindent\textbf{Some Devils in the Details:}\medskip +% +% \noindent English keeps the prefix with the surname in the text and the index, while German keeps particles separate: +% \begin{quote}\small\setstretch{1.1} +% |\begin{nameauth}|\\[0.2ex] +% | \< JWG & J.W. von & Goethe & > |{\color{nared}|%|\hfill\emph{Western; German}}\\ +% | \< VBuren & Martin & Van Buren & > |{\color{nared}|%|\hfill\emph{Western; English}}\\ +% |\end{nameauth}| +% \end{quote} +% +% \VBuren\ is ``Van Buren, Martin'' in the index. \cmd{\JWG} prints \JWG\ and \JWG, with ``Goethe, J.W. von'' in the index. You get a quasi-Anglicized \LJWG[von] with |\LJWG[von]|. Either |\CapThis\LJWG[Von]| or |\LJWG[Von]| produce \CapThis\LJWG[von]; see Section~\ref{sec:standards}. Additionally, [\hyperlink{Mulvany}{Mulvany}, 152--82] and the \emph{Chicago Manual of Style} offer helpful guidance.\ForgetName[J.W. von]{Goethe} +% +% Normally you would use something like |\LLewis[C.S.]| to get \LLewis[C.S.] instead of \LLewis. You can make that permanent, where \SCSL\ always prints in the text, yet the index always shows ``Lewis, Clive Staples. Some permanent alternate names are shown below: +% +% \begin{quote}\small\setstretch{1.1} +% |\begin{nameauth}|\\[0.2ex] +% | \< JayR & John David & Rockefeller, IV & Jay > |{\color{nared}|%|\hfill\emph{Western}}\\ +% | \< CSL & Clive Staples & Lewis & C.S. > |{\color{nared}|%|\hfill\emph{Western}}\\ +% | \< Unraed & & Æthelred, II & Unrædig > |{\color{nared}|%|\hfill\emph{Ancient}}\\ +% | \< MSens & & Miyazaki, Hayao & Sensei > |{\color{nared}|%|\hfill\emph{Eastern}}\\ +% |\end{nameauth}| +% \end{quote} +% +% With the names above you get \ForgetThis\JayR, \ForgetThis\CSL, \ForgetThis\Unraed, and \ForgetThis\MSens\ instead of those from the previous page: \LJRIV, \LLewis, \LAeth, and \LMiyaz.\footnote{One could use \cmd{\AKA} to create a cross-reference \AKA[John David]{Rockefeller, IV}[Jay]{Rockefeller}. See Sections~\ref{sec:IndexXref} and~\ref{sec:AKA}.} They all have the same respective index entries and first/subsequent uses, which is why we forced the formatting in the names above. Also |\LLewis[Jack]| prints \LLewis[Jack] while |\LCSL[Jack]| prints \LCSL[Jack]. Section~\ref{sec:Fname} explains why. % % The simplified\marginpar{\small\raggedleft\dbend} interface can tempt one into completely equating a name with its shortcut. Here we show that to be false. |\ForgetThis\CSL| prints \ForgetThis\CSL. Then |\Lewis| prints \Lewis. Likewise, |\ForgetThis\Lewis| prints \ForgetThis\Lewis. Then |\CSL| prints \CSL. The name itself is the pattern that governs everything. Internally, that detokenized pattern is |CliveStaples!Lewis|. Non-western names have patterns like |Elizabeth,I| and |Yamamoto,Isoroku|. Mononyms are their own pattern: |Aristotle|. % @@ -981,6 +972,8 @@ Running "make install" installs the files in the local TeX tree. % |\TagName[John David]{Rockefeller, IV}{|\meta{something}|}|\\ % |\TagName[Clive Staples]{Lewis}{|\meta{something}|}| % \end{quote} +% +% Sections~\ref{sec:standards},\marginpar{\small\raggedleft\dbend} \ref{sec:accents}, and~\ref{sec:IndexSort} deal with the pitfalls of accents and capitalization, as well as why you should use \cmd{\PretagName} when dealing with names that contain control sequences or active Unicode characters. % \clearpage % % \subsection{Older Syntax} @@ -990,11 +983,11 @@ Running "make install" installs the files in the local TeX tree. % % The big change is, instead of using a comma-delimited affix, this form uses the final optional argument for personal names and affixes. When \textsf{nameauth} was young, this seemed the intuitive approach to take. Now it only remains so that older documents still work today. % \begin{quote}\small\setstretch{1.1} -% |\Name{Henry}[VIII]|\hfill|% |\emph{royal name}\\ -% |\Name{Chiang}[Kai-shek]|\hfill|% |\emph{Eastern name}\\ +% |\Name{Henry}[VIII] |{\color{nared}| %|\hfill\emph{royal name}}\\ +% |\Name{Chiang}[Kai-shek] |{\color{nared}| %|\hfill\emph{Eastern name}}\\ % |\begin{nameauth}|\\ -% | \< Dagb & & Dagobert & I >|\hfill|% |\emph{royal name}\\ -% | \< Yosh & & Yoshida & Shigeru >|\hfill|% |\emph{Eastern name}\\ +% | \< Dagb & & Dagobert & I > |{\color{nared}| %|\hfill\emph{royal name}}\\ +% | \< Yosh & & Yoshida & Shigeru > |{\color{nared}|%|\hfill\emph{Eastern name}}\\ % |\end{nameauth}| % \end{quote} % Since the \meta{FNN} fields are empty, the final field becomes either \meta{affix} or \meta{FNN} and will appear in the index. We show these names with a double dagger (\ddag): @@ -1014,8 +1007,8 @@ Running "make install" installs the files in the local TeX tree. % % \noindent|\Name{Henry}[VIII]|\marginpar{\large\raggedleft\textsf{\bfseries 2.6}\strut\break\small\raggedleft\dbend} (older syntax) will share name occurrences, tags, and index entries with |\Name{Henry, VIII}| (new syntax), as we see below. We recommend using the newer syntax unless otherwise needed. % \begin{quote}\small\setstretch{1.1} -% \NameAddInfo{Henry}[VIII]{ (\emph{Defensor Fidei})}|\NameAddInfo{Henry}[VIII]{ (\emph{Defensor Fidei})}% older|\\ -% \texttt{\dots} |\Name*{Henry, VIII}\NameQueryInfo{Henry, VIII} | |% new|\\[0.5ex] +% \NameAddInfo{Henry}[VIII]{ (\emph{Defensor Fidei})}|\NameAddInfo{Henry}[VIII]{ (\emph{Defensor Fidei})} |{\color{nared}|% older|}\\ +% \texttt{\dots} |\Name*{Henry, VIII}\NameQueryInfo{Henry, VIII} |{\,\color{nared}| % new|}\\[0.5ex] % \Name*{Henry, VIII}\NameQueryInfo{Henry, VIII} % \end{quote} % @@ -1142,8 +1135,8 @@ Running "make install" installs the files in the local TeX tree. % \hfil They stack: \cmd{\CapThis}\cmd{\SubvertThis}\cmd{\SkipIndex}\cmd{\Name[foo]\{bar\}}: \CapThis\SubvertThis\SkipIndex\Name[foo]{bar} % \begin{center}\small\setstretch{1.05} % \begin{tabular}{rp{0.72\textwidth}}\toprule -% \cmd{\CapThis} & Capitalize first letter of \meta{SNN} or \meta{Affix} in body text. Overrides both \cmd{\CapName} and \cmd{\AllCapsActive}.\footnotemark[3]\\ -% \cmd{\CapName} & Cap entire \meta{SNN} in body text.\\\midrule +% \cmd{\CapThis} & Capitalize first letter of all name components in body text.\footnotemark[3]\\ +% \cmd{\CapName} & Cap entire \meta{SNN} in body text. Works also with \cmd{\CapThis}.\\\midrule % \cmd{\RevName} & Reverse name order in body text (e.g., for Eastern names).\\\midrule % \cmd{\RevComma} & Reverse Western names to \meta{SNN}, \meta{FNN}.\footnotemark[4]\\ % \cmd{\ShowComma} & Add comma between \meta{SNN} and \meta{Affix}.\\ @@ -1177,23 +1170,23 @@ Running "make install" installs the files in the local TeX tree. % \begin{quote}\small % |\usepackage[|\meta{$option_1$}|,|\meta{$option_2$}|,|\dots|]{nameauth}| % \end{quote} -% The options have no required order. Still, we discuss them from the general to the specific, as the headings below indicate. In the listings below, when there are defaults, \textbf{default options are shown in boldface.} +% The options have no required order. Still, we discuss them from the general to the specific, as the headings below indicate. In the listings below, {\bfseries implicit default options are boldface and need not be invoked by the user.} {\color{nared}Non-default options are in red and must be invoked explicitly.} % % \begin{center}\large\bfseries Choosing Features\end{center} % % \noindent{\bfseries Enable Package Warnings}\\[1ex] -% {\setstretch{1.1}\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} -% \quad\texttt{verbose} & Show warnings about index cross-references.\\ +% {\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} +% \leavevmode\color{nared}\quad\texttt{verbose} & \leavevmode\color{nared}Show warnings about index cross-references.\\ % \end{tabular}}\\[1ex] % The default\marginpar{\large\raggedleft\textsf{\bfseries 3.0}\strut} suppresses package warnings from the indexing macros. Warnings from the \texttt{nameauth} environment are not suppressed.\bigskip % % \noindent{\bfseries Choose Formatting}\\[1ex] -% {\setstretch{1.1}\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} -% \quad\bfseries\texttt{mainmatter} & \bfseries Start with ``main-matter names'' and formatting hooks (see also page~\pageref{page:PostProcess}).\\ -% \quad\texttt{frontmatter} & Start with ``front-matter names'' and hooks.\\ -% \quad\texttt{alwaysformat} & Use only respective ``first use'' formatting hooks.\\ -% \quad\texttt{formatAKA} & Format the first use of a name with \cmd{\AKA} like the first use of a name with \cmd{\Name}.\\ -% \quad\texttt{oldAKA} & Force \cmd{\AKA*} to act like it did before v.3.0.\\ +% {\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} +% \bfseries\quad\texttt{mainmatter} & \bfseries Start with ``main-matter names'' and formatting hooks (see also page~\pageref{page:PostProcess}).\\[0.5ex] +% \leavevmode\color{nared}\quad\texttt{frontmatter} & \leavevmode\color{nared}Start with ``front-matter names'' and hooks.\\[0.5ex] +% \leavevmode\color{nared}\quad\texttt{alwaysformat} & \leavevmode\color{nared}Use only respective ``first use'' formatting hooks.\\[0.5ex] +% \leavevmode\color{nared}\quad\texttt{formatAKA} & \leavevmode\color{nared}Format the first use of a name with \cmd{\AKA} like the first use of a name with \cmd{\Name}.\\[0.5ex] +% \leavevmode\color{nared}\quad\texttt{oldAKA} & \leavevmode\color{nared}Force \cmd{\AKA*} to act like it did before v.3.0.\\ % \end{tabular}}\\[1ex] % The \texttt{mainmatter} option and the \texttt{frontmatter} option enable two different systems of name use and formatting. They are mutually exclusive. \cmd{\NamesActive} starts the main matter system when \texttt{frontmatter} is used. See Section~\ref{sec:formatting}. % @@ -1204,48 +1197,48 @@ Running "make install" installs the files in the local TeX tree. % Using the\marginpar{\large\raggedleft\textsf{\bfseries 3.0}\strut} \texttt{oldAKA} option forces \cmd{\AKA*} always to print a ``forename'' field in the text, as it did in versions 2.6 and older. Otherwise the current behavior of \cmd{\AKA*} prints in the same fashion as \cmd{\FName} (see Sections~\ref{sec:Fname} and~\ref{sec:AKA}).\bigskip % % \noindent{\bfseries Enable/Disable Indexing}\\[1ex] -% {\setstretch{1.1}\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} -% \quad\bfseries\texttt{index} & \bfseries Create index entries in place with names.\\ -% \quad\texttt{noindex} & Suppress indexing of names.\\ +% {\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} +% \quad\bfseries\texttt{index} & \bfseries Create index entries in place with names.\\[0.5ex] +% \leavevmode\color{nared}\quad\texttt{noindex} & \leavevmode\color{nared}Suppress indexing of names.\\ % \end{tabular}}\\[1ex] -% These apply only to the \textsf{nameauth} package macros. The default \texttt{index} option enables name indexing right away. The \texttt{noindex} option disables the indexing of names until \cmd{\IndexActive} enables it. \textbf{Caution:}\marginpar{\small\raggedleft\dbend} using \texttt{noindex} and \cmd{\IndexInactive} prevents index tags until you call \cmd{\IndexInactive}, as explained also in Section~\ref{sec:indexctrl}. +% These apply only to the \textsf{nameauth} package macros. The default \texttt{index} option enables name indexing right away. The \texttt{noindex} option disables the indexing of names until \cmd{\IndexActive} enables it. \textbf{Caution:}\marginpar{\small\raggedleft\dbend} using \texttt{noindex} and \cmd{\IndexInactive} prevents index tags until you call \cmd{\IndexActive}, as explained also in Section~\ref{sec:indexctrl}. % \clearpage % % \noindent{\bfseries Enable/Disable Index Sorting}\\[1ex] -% {\setstretch{1.1}\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} -% \quad\bfseries\texttt{pretag} & \bfseries Create sort keys used with \texttt{makeindex}.\\ -% \quad\texttt{nopretag} & Do not create sort keys. \\ +% {\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} +% \quad\bfseries\texttt{pretag} & \bfseries Create sort keys used with \texttt{makeindex}.\\[0.5ex] +% \leavevmode\color{nared}\quad\texttt{nopretag} & \leavevmode\color{nared}Do not create sort keys. \\ % \end{tabular}}\\[1ex] % The default allows \cmd{\PretagName} to create sort keys used with NFSS or \texttt{makeindex} and its analogues. The \texttt{nopretag} option disables the sorting mechanism, e.g., if a different sorting method is used with \texttt{xindy}. See Section~\ref{sec:IndexSort}. % % \begin{center}\large\bfseries Affect the Syntax of Names\end{center} % {\bfseries Show/Hide Affix Commas}\\[2ex] -% {\setstretch{1.1}\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} -% \quad\bfseries\texttt{nocomma} & \bfseries Suppress commas between surnames and affixes, following the \emph{Chicago Manual of Style} and other conventions.\\ -% \quad\texttt{comma} & Retain commas between surnames and affixes.\\ +% {\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} +% \quad\bfseries\texttt{nocomma} & \bfseries Suppress commas between surnames and affixes, following the \emph{Chicago Manual of Style} and other conventions.\\[0.5ex] +% \leavevmode\color{nared}\quad\texttt{comma} & \leavevmode\color{nared}Retain commas between surnames and affixes.\\ % \end{tabular}}\\[1ex] -% This option is set at load time. If you use \emph{modern standards}, choose the default \texttt{nocomma} option to get, \emph{e.g.}, \Name[J.E.]{Carter, Jr.}[James Earl]. If you need to adopt \emph{older standards} that use commas between surnames and affixes, you have two choices: +% If you use \emph{modern standards}, choose the default \texttt{nocomma} option to get, \emph{e.g.}, \Name[J.E.]{Carter, Jr.}[James Earl]. If you need to adopt \emph{older standards} that use commas between surnames and affixes, you have two choices: % \begin{enumerate} % \item The \texttt{comma} option globally produces, \emph{e.g.}, \ShowComma\Name*[J.E.]{Carter, Jr.}[James Earl]. % \item Section~\ref{sec:Affix} shows how one can use \cmd{\ShowComma} with the \texttt{nocomma} option and \cmd{\NoComma} with the \texttt{comma} option to get per-name results. % \end{enumerate}\medskip % % \noindent{\bfseries Capitalize Entire Surnames}\\[2ex] -% {\setstretch{1.1}\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} -% \quad\bfseries\texttt{normalcaps} & \bfseries Do not perform any special capitalization.\\ -% \quad\texttt{allcaps} & Capitalize entire surnames, such as romanized Eastern names.\\ +% {\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} +% \quad\bfseries\texttt{normalcaps} & \bfseries Do not perform any special capitalization.\\[0.5ex] +% \leavevmode\color{nared}\quad\texttt{allcaps} & \leavevmode\color{nared}Capitalize entire surnames, such as romanized Eastern names.\\ % \end{tabular}}\\[1ex] % This only capitalizes names printed in the body text. English standards usually do not propagate typographic changes into the index. % -% Still,\marginpar{\small\raggedleft\dbend} you can use this package with non-English conventions. You can add, \emph{e.g.}, uppercase or small caps in surnames, formatting them also in the index. See also Sections~\ref{sec:altformat} and~\ref{sec:Hooksc} The simplified interface aids the embedding of control sequences in names. Section~\ref{sec:Eastern} deals with capitalization on a section-level and per-name basis.\bigskip +% Still,\marginpar{\small\raggedleft\dbend} you can use this package with non-English conventions (just not via these options). You can add, \emph{e.g.}, uppercase or small caps in surnames, formatting them also in the index. See also Sections~\ref{sec:altformat} and~\ref{sec:Hooksc}. The simplified interface aids the embedding of control sequences in names. Section~\ref{sec:Eastern} deals with capitalization on a section-level and per-name basis.\bigskip % % \noindent{\bfseries Reverse Name Order}\\[2ex] -% {\setstretch{1.1}\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} -% \quad\bfseries\texttt{notreversed} & \bfseries Print names in the order specified by \cmd{\Name} and the other macros.\\ -% \quad\texttt{allreversed} & Print all name forms in ``smart'' reverse order.\\ -% \quad\texttt{allrevcomma} & Print all names in ``Surname, Forenames'' order, meant for Western names.\\ +% {\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} +% \quad\bfseries\texttt{notreversed} & \bfseries Print names in the order specified by \cmd{\Name} and the other macros.\\[0.5ex] +% \leavevmode\color{nared}\quad\texttt{allreversed} & \leavevmode\color{nared}Print all name forms in ``smart'' reverse order.\\[0.5ex] +% \leavevmode\color{nared}\quad\texttt{allrevcomma} & \leavevmode\color{nared}Print all names in ``Surname, Forenames'' order, meant for Western names.\\ % \end{tabular}}\\[1ex] -% These options are mutually exclusive. Section~\ref{sec:Eastern} speaks more about reversing. The \texttt{allreversed} option, \cmd{\ReverseActive}, and \cmd{\RevName} work with all names and override \texttt{allrevcomma} and its macros. +% These three options are mutually exclusive. Section~\ref{sec:Eastern} speaks more about reversing. The \texttt{allreversed} option, \cmd{\ReverseActive}, and \cmd{\RevName} work with all names and override \texttt{allrevcomma} and its macros. % % So-called ``last-comma-first'' lists of names via \texttt{allrevcomma} and the reversing macros \cmd{\ReverseCommaActive} and \cmd{\RevComma} (Section~\ref{sec:LastFirst}) are \emph{not} the same as the \texttt{comma} option. They only affect Western names. % \clearpage @@ -1253,11 +1246,11 @@ Running "make install" installs the files in the local TeX tree. % \phantomsection\label{page:PostProcess} % \begin{center}\large\bfseries Typographic Post-Processing\end{center} % \noindent{\bfseries Formatting Attributes}\\[2ex] -% {\setstretch{1.1}\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} -% \quad\texttt{smallcaps} & First use of a main-matter name in small caps.\\ -% \quad\texttt{italic} & First use of a main-matter name in italic.\\ -% \quad\texttt{boldface} & First use of a main-matter name in boldface.\\ -% \quad\bfseries\texttt{noformat} & \bfseries Do not define a default format.\\ +% {\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} +% \quad\bfseries\texttt{noformat} & \bfseries Do not define a default format.\\[0.5ex] +% \leavevmode\color{nared}\quad\texttt{smallcaps} & \leavevmode\color{nared}First use of a main-matter name in small caps.\\[0.5ex] +% \leavevmode\color{nared}\quad\texttt{italic} & \leavevmode\color{nared}First use of a main-matter name in italic.\\[0.5ex] +% \leavevmode\color{nared}\quad\texttt{boldface} & \leavevmode\color{nared}First use of a main-matter name in boldface.\\ % \end{tabular}}\\ % % Current\marginpar{\large\raggedleft\textsf{\bfseries 2.5}\strut} versions assign no default formatting to names. Most users have preferred the \texttt{noformat} option as the default and then design their own hooks as needed.\footnote{For those that want the old default option from the early days of this package, one can recover that behavior with the \texttt{smallcaps} option.} @@ -1276,8 +1269,8 @@ Running "make install" installs the files in the local TeX tree. % % \begin{center}\large\bfseries Alternate or Continental Formatting\end{center} % \noindent{\bfseries Alternate Syntactic Formatting}\\[2ex] -% {\setstretch{1.1}\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} -% \quad\texttt{altformat} & Make available the alternate formatting framework from the start of the document. Activate formatting by default.\\ +% {\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}} +% \leavevmode\color{nared}\quad\texttt{altformat} & \leavevmode\color{nared}Make available the alternate formatting framework from the start of the document. Activate formatting by default.\\ % \end{tabular}}\\ % % A built-in\marginpar{\large\raggedleft\textsf{\bfseries 3.1}\strut\break\small\dbend} framework provides an alternate formatting mechanism that can be used for ``Continental'' formatting that one sees in German, French, and so on. Continental standards format surnames only, both in the text and in the index. Section~\ref{sec:altformat} introduces the topic, while Section~\ref{sec:Hooksc} goes into greater detail. The previous methods the produced Continental formatting still ought to work. The error protection that prevents \cmd{\CapThis} from breaking alternately formatted names is available by using this option or other macros in Section~\ref{sec:altformat}. @@ -1285,7 +1278,7 @@ Running "make install" installs the files in the local TeX tree. % % \subsection{Naming Macros} % -% Although the formatting hooks do nothing by default, we use them here for teaching purposes. We also force first and subsequent uses as needed. See also Sections~\ref{sec:formatting} and~\ref{sec:tweaks}. Section~\ref{sec:tweaks} show how the name reference systems are independent of other data sets in \textsf{nameauth}. +% Although the formatting hooks do nothing by default, we use them here for teaching purposes. We also force first and subsequent uses as needed. See also Sections~\ref{sec:formatting} and~\ref{sec:tweaks}, which explain the concept in detail. % % \subsubsection{\texttt{\textbackslash Name} and \texttt{\textbackslash Name*}} % \label{sec:Naming} @@ -1360,8 +1353,8 @@ Running "make install" installs the files in the local TeX tree. % |\ForceFN\FName{Miyazaki, Hayao}[Sensei]|\\ % or |\ForceFN\SMiyaz[Sensei]| & \ForceFN\FName{Miyazaki, Hayao}[Sensei]\\\midrule % |\FName{Elizabeth, I}| or |\SEliz| & \SEliz\\\midrule -% |\ForceFN\FName{Elizabeth, I}[the First]|\\ -% or |\ForceFN\SEliz[the First]| & \ForceFN\SEliz[the First]\\\bottomrule +% |\ForceFN\FName{Elizabeth, I}| & \ForceFN\FName{Elizabeth, I}\\\midrule +% |\ForceFN\SEliz[the First]| & \ForceFN\SEliz[the First]\\\bottomrule % \end{tabular} % \end{center} % @@ -1381,7 +1374,7 @@ Running "make install" installs the files in the local TeX tree. % % For example, if a book section refers always to \LCSL, but another section introduces him as \LLewis, one can use both \cmd{\CSL} and \cmd{\Lewis}. \cmd{\Lewis} and \cmd{\CSL} share common first and subsequent uses because they both point to the same \meta{FNN} (Clive Staples) and \meta{SNN} (Lewis). % -% The drawback lies in remembering that \cmd{\Ches} gives us \Ches, while \cmd{\LSully} produces \LSully. Likewise, \cmd{\SCSL[Jack]} produces \SCSL[Jack]. This happens because the final field in the \texttt{nameauth} environment populates the \meta{Alternate Names} argument. When that occurs, the following text in square brackets becomes just normal text. +% The drawback lies in remembering that \cmd{\Ches} gives us \Ches, while \cmd{\LSully} produces \LSully. Likewise, \cmd{\SCSL[Jack]} produces \SCSL[Jack]. The final field in the \texttt{nameauth} environment populates the \meta{Alternate Names} argument, making \texttt{[Jack]} normal text. % % {\medskip\noindent\hbox{}\hfill\large Back to Section~\ref{sec:RefTables} \hfill\hbox{}} % \clearpage @@ -1405,20 +1398,22 @@ Running "make install" installs the files in the local TeX tree. % \end{tabular} % \end{center} % -% Western\marginpar{\small\raggedleft\dbend} names with suffixes must use the comma-delimited syntax. Using the older non-Western syntax |\Name[Oskar]{Hammerstein}[II]| produces \SkipIndex\Name[Oskar]{Hammerstein}[II] (index entry skipped). Also, one must use comma-delimited suffixes to with the cross-reference target of \cmd{\AKA} (Section~\ref{sec:AKA}).\medskip +% Western\marginpar{\small\raggedleft\dbend} names with suffixes must use the comma-delimited syntax. Using the older non-Western syntax |\Name[Oskar]{Hammerstein}[II]| produces \SkipIndex\Name[Oskar]{Hammerstein}[II] (index entry skipped). Also, one must use comma-delimited suffixes with the cross-reference target of \cmd{\AKA} (Section~\ref{sec:AKA}).\medskip % % \DescribeMacro{\KeepAffix} +% In the text only, \cmd{\KeepAffix} turns the space between \meta{SNN} and \meta{Affix} into a non-breaking space. This holds for a Western surname and affix, an ancient name and affix, and a native Eastern family name and personal name.\medskip +% % \DescribeMacro{\KeepName} -% In the text only,\marginpar{\large\raggedleft\textsf{\bfseries 3.1}\strut} \cmd{\KeepAffix} puts a non-breaking space between a Western surname and affix, an ancient name and affix, and a native Eastern family name and personal name. -% In the text only, \cmd{\KeepName} turns all spaces between syntactic name components (\meta{FNN}, \meta{SNN}, \meta{Affix}, \meta{Alternate name(s)}) into non-breaking spaces. You get no bad breaks when using |\KeepName\LJWG[von]| \KeepName\LJWG[von]. -% Any spaces between multiple names in each syntactic name component are not affected. \cmd{\KeepAffix} and \cmd{\KeepName} affect all \textsf{nameauth} macros that print a name in the text.\medskip +% In the text only,\marginpar{\large\raggedleft\textsf{\bfseries 3.1}\strut} \cmd{\KeepName} turns all spaces between name components \meta{FNN}, \meta{SNN}, \meta{Affix}, and \meta{Alternate name(s)} into non-breaking spaces. You get no bad breaks with |\KeepName\LJWG[von]| \KeepName\LJWG[von]. +% +% \cmd{\KeepAffix} and \cmd{\KeepName} affect all \textsf{nameauth} macros that print names in the text. Spaces between multiple names within each name component (think Spanish surnames and French or German forenames) are not affected.\medskip % % \DescribeMacro{\DropAffix} % Preceding\marginpar{\large\raggedleft\textsf{\bfseries 3.0}\strut} the naming macros with \cmd{\DropAffix} will suppress an affix in a Western name. |\DropAffix\Name*[Oskar]{Hammerstein, II}| produces ``\DropAffix\Name*[Oskar]{Hammerstein, II}.'' This does not affect non-Western names.\medskip % % \DescribeMacro{\ShowComma} % \DescribeMacro{\NoComma} -% \cmd{\ShowComma} forces a comma between a Western name and its affix. It works like the \texttt{comma} option on a per-name basis, and only in the body text. \cmd{\NoComma}\marginpar{\large\raggedleft\textsf{\bfseries 2.6}\strut} works like the \texttt{nocomma} option on a per-name basis. +% \cmd{\ShowComma} forces a comma between a Western name and its affix. It works like the \texttt{comma} option on a per-name basis, and only in the body text. \cmd{\NoComma}\marginpar{\large\raggedleft\textsf{\bfseries 2.6}\strut} works like the \texttt{nocomma} option in the body text on a per-name basis. % \begin{center}\small\setstretch{1.1} % \begin{tabular}{@{}ll@{}}\toprule % |\ShowComma\Name*[Louis]{Gossett, Jr.}| & \ShowComma\Name*[Louis]{Gossett, Jr.}\\ @@ -1438,9 +1433,9 @@ Running "make install" installs the files in the local TeX tree. % \begin{quote}\small % \cmd{\RevName}\cmd{\Name*}\oarg{FNN}\marg{SNN}\oarg{Alternate names} % \end{quote} -% The index entry of this name form looks like \meta{SNN}, \meta{FNN} (including the comma). This type of entry is a Western form. Pick this form especially when using Hungarian names, although apologies are due from this author for needing to enter these names in reverse.\medskip +% The index entry of this name form looks like \meta{SNN}, \meta{FNN} (including the comma). This type of entry is a Western form. Pick this form also when using Hungarian names. Apologies for needing to enter Hungarian names in reverse, as in |\RevName\Name*[Frenec]{Molnár}| \RevName\Name*[Frenec]{Molnár}\dag.\medskip % -% In\marginpar{\small\raggedleft native} contrast, there are two general forms of syntax for ``native'' Eastern name forms, which are indexed as such and appear in Eastern name order in the body text. Apologies are due for using the \meta{SNN} and \meta{FNN} nomenclature for Eastern family and personal names, but human speech has its limitations. The new syntax permits alternate names; the old does not: +% In\marginpar{\small\raggedleft native} contrast, there are two general forms of syntax for ``native'' Eastern name forms, which are indexed as such and appear in Eastern name order in the body text. Apologies for using quasi-Western \meta{SNN} and \meta{FNN} nomenclature for Eastern names. The new syntax permits alternate names; the old does not: % \begin{quote}\small\setstretch{1.1} % \cmd{\Name}\marg{SNN, FNN}\oarg{Alternate names}\hfill (new syntax)\\ % \cmd{\Name}\marg{SNN}\oarg{FNN}\hfill (older syntax) @@ -1450,7 +1445,9 @@ Running "make install" installs the files in the local TeX tree. % \DescribeMacro{\ReverseActive} % \DescribeMacro{\ReverseInactive} % \DescribeMacro{\RevName} -% In addition to the class options (Section~\ref{sec:options}), the macros \cmd{\ReverseActive} and \cmd{\ReverseInactive} toggle reversing on a larger scale, while \cmd{\RevName} is used once per name. The reverse output mechanism is designed to reverse full names only. Nevertheless, it does not force full names. Results vary, based on the type of Eastern name forms being used. Non-native forms are shown by a dagger (\dag): +% In addition to the class options for reversing and capitalization (Section~\ref{sec:options}), \cmd{\ReverseActive} and \cmd{\ReverseInactive} reverse name order for blocks of text and \cmd{\RevName} does that once per name. These macros only affect names in the text. They work also with \cmd{\AKA} and its derivatives. +% +% The reverse output mechanism affects full names only. Nevertheless, it does not force full names. Results vary, based on the type of Eastern name forms being used. Non-native forms are shown by a dagger (\dag): % \begin{center}\small\setstretch{1.1} % \begin{tabular}{rll}\toprule % & \emph{unchanged} & |\RevName|\\\midrule @@ -1466,7 +1463,7 @@ Running "make install" installs the files in the local TeX tree. % \end{tabular} % \end{center} % -% Creating\marginpar{\large\raggedleft\textsf{\bfseries 3.0}\strut} ``last-comma-first'' listings by surname (Section~\ref{sec:LastFirst}) only makes sense with Western names and maybe non-native Eastern names, but not with native Eastern names or ancient forms. That is why native Eastern forms and ancient forms are unaffected by the comma form of reversing. +% Creating\marginpar{\large\raggedleft\textsf{\bfseries 3.0}\strut} ``last-comma-first'' listings by surname (Section~\ref{sec:LastFirst}) only makes sense with Western names and maybe non-native Eastern names, but not with native Eastern names or ancient forms. That is why native Eastern forms and ancient forms are unaffected by the comma form of reversing.\medskip % % Please\marginpar{\small\raggedleft\cmd{\global}} note that \cmd{\ReverseActive} and \cmd{\ReverseInactive} can be used explicitly as a pair. They also can be used singly within an explicit scope, where the effects cease after leaving that scope. Use \cmd{\global} to force a global effect. % \clearpage @@ -1474,12 +1471,9 @@ Running "make install" installs the files in the local TeX tree. % \DescribeMacro{\AllCapsActive} % \DescribeMacro{\AllCapsInactive} % \DescribeMacro{\CapName} -% The \textsf{nameauth} package allows one to capitalize entire family names in the body text while keeping them in standard English form in the index. This capitalization is designed to work with Eastern name forms. -% Use \cmd{\AllCapsActive}, \cmd{\AllCapsInactive}, and \cmd{\CapName} for fully-capitalized family names in the body text. These macros are analogous to the reversing macros and may be used alone or with other prefix macros, \emph{e.g.}: \cmd{\CapName}\cmd{\RevName}\cmd{\Name*}\marg{SNN, Affix}. -% -% Both\marginpar{\small\raggedleft\cmd{\global}} \cmd{\AllCapsActive} and \cmd{\AllCapsInactive} have the same local restrictions as the other state-changing macros. Use \cmd{\global} to force a global effect. +% Using \cmd{\AllCapsActive} \cmd{\AllCapsInactive} for blocks of text and \cmd{\CapName} for specific names, the \textsf{nameauth} package allows one to capitalize \meta{SNN} in the body text only. These macros also work with \cmd{\AKA} and friends. For caps in the text and index see Sections~\ref{sec:altformat} and~\ref{sec:Hooksc}. % -% In the example below, names in Western order, then non-native Eastern order are marked with a dagger ({\dag}). All other names are in native Eastern, then Western order. Older-syntax forms have a double dagger(\ddag): +% Below, non-native Eastern forms (first Western, then reversed) are marked with a dagger ({\dag}). All other names are in native Eastern, then Western order. Older-syntax forms have a double dagger(\ddag): % % \begin{center}\small\setstretch{1.1}\AllCapsActive % \begin{tabular}{lll}\toprule @@ -1491,7 +1485,9 @@ Running "make install" installs the files in the local TeX tree. % \end{tabular}\AllCapsInactive % \end{center}\smallskip % -% Capitalization and reversing precede post-processing. The reversing and capitalization macros also work with \cmd{\AKA}. They affect only the text, not the index. For caps in the text and index see Sections~\ref{sec:altformat} and~\ref{sec:Hooksc}. +% +% Both\marginpar{\small\raggedleft\cmd{\global}} \cmd{\AllCapsActive} and \cmd{\AllCapsInactive} have the same local restrictions as the other state-changing macros. Use \cmd{\global} to force a global effect. +% % % {\medskip\noindent\hbox{}\hfill\large Back to Section~\ref{sec:RefTables} \hfill\hbox{}} % @@ -1519,20 +1515,18 @@ Running "make install" installs the files in the local TeX tree. % % \subsubsection{Hyphenation} % -% In English, some names come from other cultures. These names can break badly with standard hyphenation. The simplified interface trivializes the insertion of optional hyphens in names, but such hyphens must be used consistently: -% -% \begin{quote}\small\setstretch{1.1} -% |\begin{nameauth}|\\ -% | \< Striet & John & Striet\-el\-meier & >|\\ -% |\end{nameauth}| -% \end{quote} -% -% One also can fix bad breaks with the \textsf{babel} or \textsf{polyglossia} packages. This can make the solution more elegant at times. We avoid bad breaks by using \textsf{babel}:\IndexName[John]{Strietelmeier} +% In English, some names come from other cultures. These names, like \SkipIndex\Name[John]{Strietelmeier} (|\Name[John]{Strietelmeier}|, index entry skipped) can break badly. One solution consistently uses optional hyphens, while another uses either \textsf{babel} or \textsf{polyglossia}. If using both solutions with a name, suppress unwanted index entries. % \begin{quote}\small\setstretch{1.1} -% \newcommand\de[1]{\foreignlanguage{ngerman}{#1}}% % |\newcommand\de[1]{\foreignlanguage{ngerman}{#1}}|\\ -% |\de{\Name*[John]{Strietelmeier}}| +% |% or polyglossia: \newcommand\de[1]{\textgerman{#1}}|\\ +% |\begin{nameauth}|\\ +% | \< Striet & John & Strie\-tel\-meier & >|\\ +% | \< Strieti & John & \de{Strietelmeier} & >|\\ +% |\end{nameauth}|\\ +% |\PretagName[John]{Strie\-tel\-meier}{Strietelmeier, John}|\\ +% |\PretagName[John]{\de{Strietelmeier}}{Strietelmeier, John}| % \end{quote} +% In English, some names come from other cultures. These names, like \SkipIndex\Striet, (\cmd{\Striet}, index entry skipped) could break badly unless handled correctly. In English, some names come from other cultures. These names, like \Strieti, (\cmd{\Strieti}) could break badly if not handled correctly. % % \subsubsection{Listing by Surname} % \label{sec:LastFirst} @@ -1553,7 +1547,7 @@ Running "make install" installs the files in the local TeX tree. % \end{tabular} % \end{center} % -% Since\marginpar{\large\raggedleft\textsf{\bfseries 3.0}} reversing with commas is independent of ``native'' Eastern and ancient names, we see its effects on ``non-native'' Eastern names: +% Since\marginpar{\large\raggedleft\textsf{\bfseries 3.0}} reversing with commas does not change ``native'' Eastern and ancient names, we see its effects on ``non-native'' Eastern names: % \begin{center}\small\setstretch{1.1} % \begin{tabular}{rl}\toprule % |\ForgetThis\Konoe| & \ForgetThis\Konoe\dag\\ @@ -1567,10 +1561,10 @@ Running "make install" installs the files in the local TeX tree. % \subsubsection{Particles} % \label{sec:standards} % -% According to [\hyperlink{Mulvany}{Mulvany}, 165f.] and the \emph{Chicago Manual of Style}, 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'} always are capitalized unless preceded by \emph{de}. To Anglicize \JWG[Johann Wolfgang von] in the text as \LJWG[von], but indexed under ``Goethe, J.W. von,'' we use |\LJWG[von]|. |\Name[Catherine de']{Medici}| should be indexed as ``Medici, Catherine de'\,'' instead of modern ``De~Medici.'' See also Sections~\ref{sec:indexctrl} and especially~\ref{sec:DuBois} for name variants. +% According to [\hyperlink{Mulvany}{Mulvany}, 165f.] and the \emph{Chicago Manual of Style}, 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'} always are capitalized unless preceded by \emph{de}. To Anglicize \JWG[Johann Wolfgang von] in the text as \LJWG[von], but indexed under ``Goethe, J.W. von,'' we use |\LJWG[von]|. |\Name[Catherine de']{Medici}| should be indexed as ``Medici, Catherine de'\,'' instead of modern ``De~Medici.'' See also Sections~\ref{sec:indexctrl} and especially~\ref{sec:DuBois} for name variants.\AltFormatActive\JustIndex\Cath\AltFormatInactive % -% We\marginpar{\small\raggedleft non-breaking\break spaces} recommend inserting |~| or \cmd{\nobreakspace} between particles and names if the particles are less than three letters. This will keep them from becoming lost because of a bad line break or page break.\footnote{With v.3.0, \cmd{\CapThis} does not eat the space between a single-letter particle and a name.} -% Please remember that some particles look very similar. For example, \emph{L'} and \emph{d'} are two separate glyphs each, while \emph{Ľ} and \emph{ď} are one Unicode glyph each.\medskip +% We\marginpar{\small\raggedleft non-breaking\break spaces} recommend inserting |~| or \cmd{\nobreakspace} between particles and names to prevent bad breaks.\footnote{With v.3.0, \cmd{\CapThis} does not eat the space between a single-letter particle and a name.} +% Some particles look very similar. For example, \emph{L'} and \emph{d'} are two separate glyphs each. \emph{Ľ} and \emph{ď} are one Unicode glyph each.\medskip % % \DescribeMacro{\CapThis} % In English and modern Romance languages, \emph{e.g.}, \ForgetThis\Soto\ shows that these particles go in the \meta{SNN} field of \cmd{\Name}: \Soto. When the particle appears at the beginning of a sentence, one must capitalize it: @@ -1579,11 +1573,33 @@ Running "make install" installs the files in the local TeX tree. % \CapThis\Soto\ was a famous Spanish explorer in North America. % \end{quote} % -% \cmd{\CapThis}\marginpar{\large\raggedleft\textsf{\bfseries 3.1}\strut} will not cause errors if one uses the \texttt{altformat} option and the provided macros for Continental surname formats. Otherwise it could cause errors in some cases where control sequences in the macro arguments conflict with the capitalization process. See Section~\ref{sec:altformat}. -% \clearpage +% \cmd{\CapThis},\marginpar{\large\raggedleft\textsf{\bfseries 3.2}\strut} rather, the capitalizing mechanism that it triggers, has undergone a significant overhaul in recent versions of \textsf{nameauth}. Earlier versions tried to take a few ``shortcuts'' that appeared to work. Problems arose with specific cases where capitalization did not work. We have addressed those problems, most of which involved macro expansion. +% +% Now, \cmd{\CapThis} should work as expected with all of the Unicode characters available in the T1 encoding. Section~\ref{sec:Unicode} has a list, yet see also the table on pages 455--63 in \emph{The Latex Companion}. For a broader set of Unicode characters, consider using \texttt{xelatex} and \texttt{lualatex}. +% +% Without going into the gory details, it became clear that: +% \begin{enumerate} +% \item There must be one ``regular'' test for a leading active Unicode character and a separate test when that occurs in a comma-delimited suffix. +% \item We cannot use the suffix designed for printing and for testing if we even have a suffix. The test requires a ``raw'' form of the suffix. +% \item The token list test for active Unicode characters can be its own component shared by the two test forms above. +% \item One should do one of the two tests, then pick one of two capitalization methods. Keeping everything separate will help the expansion work properly in every case. +% \item Every name component is modified. The idea is that you decide to use \cmd{\CapThis} in a short name form when the leading element needs to be capitalized. Chances are, you will not need a full name reference with suffix, etc. By capping every element, you have access to caps on demand using any form of short name reference. +% \end{enumerate} +% +% \cmd{\CapThis} will not cause errors if one uses the \texttt{altformat} option and the provided macros for Continental surname formats because that option entirely bypasses the normal in-text capitalization mechanism. \cmd{\CapThis} still triggers the alternate capping macros, but the mechanism is different and far more manual. Otherwise \cmd{\CapThis} could cause errors in some cases where control sequences in the macro arguments conflict with the capitalization process. See Section~\ref{sec:altformat}. +% +% For another example, we suppose that you want to mention poet \Name[e.e.]{cummings}. You might be in a situation where an editor wants: ``\SkipIndex\SubvertThis\CapThis\Name[e.e.]{cummings'} motif of the goat-footed balloon man has underlying sexual motifs that nevertheless have a childish facade.'' We got that form using: +% \begin{quote}\small +% |\SkipIndex\SubvertThis\CapThis\Name[e.e.]{cummings'}| +% \end{quote} +% +% A long-name reference to \CapThis\Name*[e.e.]{cummings} really does not work, nor is it meant to. \cmd{\CapThis} is not meant for general situations. Using \cmd{\CapName} replaces both the original \meta{SNN} and the \meta{SNN} created by \cmd{\CapThis}. Again, this usage is situation-dependent. +% +% Names are beautiful, yet ambiguous creatures whose forms change greatly, depending on one's needs and circumstances. This package allows for such variation, yet it provides consistent in the index. We do try to minimize the amount of typing, allowing for automatic reformatting if one moves blocks of text around. We hope that this approach is useful.\medskip % % \DescribeMacro{\AccentCapThis} -% If the source files\marginpar{\large\raggedleft\textsf{\bfseries 3.0}\strut} for the \textsf{nameauth} package have Unicode encoding and run on a Unicode-compliant system, \cmd{\AccentCapThis} is not necessary. See also page~\pageref{page:CapRoot}. If the text encoding of the source files is changed or there are system encoding issues, \cmd{\AccentCapThis} might be needed with NFSS when the first name character is an active Unicode character. See also Section \ref{sec:Unicode}.\medskip +% If the source files\marginpar{\large\raggedleft\textsf{\bfseries 3.0}\strut} for the \textsf{nameauth} package have Unicode encoding and run on a Unicode-compliant system, \cmd{\AccentCapThis} is not necessary. See also page~\pageref{page:CapSystem}. If the text encoding of the source files is changed or there are system encoding issues, \cmd{\AccentCapThis} might be needed with NFSS when the first name character is an active Unicode character. See also Section \ref{sec:Unicode}. +% \clearpage % % Medieval\marginpar{\small\raggedleft Medieval name\break issues} names present some interesting difficulties, often based on the expected standards of the context in which they are used: % \begin{quote}\small\setstretch{1.1} @@ -1595,13 +1611,13 @@ Running "make install" installs the files in the local TeX tree. % | \< KempW & Thomas & à~Kempis & >|\hfill\emph{Western}\\ % |\end{nameauth}| % \end{quote} -% The medieval forms\marginpar{\large\raggedleft\textsf{\bfseries 3.1}\strut} are \KempMed\ and \KempMed, indexed as ``Thomas à~Kempis.'' The suffixed place name ``à~Kempis'' (Latin for \emph{von Kempen}) is used by some as a surname: \ForceFN\SKempMed. We use |\ForceFN\SKempMed| to get that form. \CapThis\ForceFN\SKempMed\ can start a sentence via |\CapThis\ForceFN\SKempMed|. The old syntax works just as well: \CapThis\ForceFN\SKempAlt\ occurs via |\CapThis\ForceFN\SKempAlt|. +% The medieval forms\marginpar{\large\raggedleft\textsf{\bfseries 3.1}\strut} are \KempMed\ and \KempMed, indexed as ``Thomas à~Kempis.'' The suffixed place name ``\ForceFN\SKempMed'' (Latin for \emph{von Kempen}) is used by some as a surname and achieved by using |\ForceFN\SKempMed|. \CapThis\ForceFN\SKempMed\ can start a sentence via |\CapThis\ForceFN\SKempMed|. The old syntax works just as well: \CapThis\ForceFN\SKempAlt\ occurs via |\CapThis\ForceFN\SKempAlt|. % % Western forms\marginpar{\small\raggedleft\dbend} like |\KempW|: \SkipIndex\KempW\ are different from medieval forms and create different index entries. |\CapThis\KempW| gives ``\SkipIndex\CapThis\KempW'' in the text and ``à~Kempis, Thomas'' in the index, which we suppress here.\footnote{Name variants result from work flow constraints, name authorities, and publisher styles. This package works with that, over against this author's plea for cultural sensitivity.} % The publisher's way of handling names may differ from the standard way. This package allows for such variations.\footnote{Yet some publishers have problems with some name forms. An example of a true error is the index entry ``Yat-sen, Sun'' (as if Sun were a forename) in Immanuel Geiss, \emph{Personen: Die biographische Dimension der Weltgeschichte}, Geschichte Griffbereit vol. 2 (Munich: Wissen Media Verlag, 2002), 720. Still, the six-volume set is a helpful reference work.} -% Developing a good rapport with the publisher and the editor will help you apply this package to the company's style.\medskip +% Developing a good rapport with the publisher and the editor will help you apply this package to the company's style. % -% Using \cmd{\CapThis}\marginpar{\small\raggedleft Alternates} with a form like |\SubvertThis\ForceFN\FName{Thomas,| |\`a~Kempis}| only works in NFSS: \CapThis\SkipIndex\SubvertThis\ForceFN\FName{Thomas, \`a~Kempis}. It fails with \texttt{xelatex} and \texttt{lualatex} because \textsf{inputenc} is not compatible with \textsf{fontspec}. +% Using \cmd{\CapThis} with forms like |\`a~Kempis| will work (\SkipIndex\CapThis\SubvertThis\ForceFN\ForceName\FName{Thomas, \`a~Kempis}) in all situations where one uses the preamble snippet in Section~\ref{sec:engines}.\footnote{This little example is among one of the longest uses of prefix macros in this manual: \cmd{\SkipIndex}\cmd{\CapThis}\cmd{\SubvertThis}\cmd{\ForceFN}\cmd{\ForceName}\cmd{\FName\{Thomas, \textbackslash`a~Kempis\}}.} % % \begingroup % \makeatletter\renewcommand*\NamesFormat[1]{\begingroup\ignorespaces% @@ -1609,7 +1625,7 @@ Running "make install" installs the files in the local TeX tree. % \noexpand\NameQueryInfo[\unexpanded\expandafter{\the\@nameauth@toksa}] % {\unexpanded\expandafter{\the\@nameauth@toksb}} % [\unexpanded\expandafter{\the\@nameauth@toksc}]}}\temp}\makeatother% -% Non-English\marginpar{\small\raggedleft\dbend} contexts do not necessarily bind particles to surnames. One can use the alternate names fields or ``text tags'' and ``index tags.'' See also Sections~\ref{sec:indextag}, \ref{sec:tagtext}, and~\ref{sec:Hooksb}. The macros below allow us to show \Name{Friedrich, I}, \Name*{Friedrich, I}, and \Name{Friedrich, I} via |\Name{Friedrich, I}|: +% Non-English\marginpar{\small\raggedleft\dbend} contexts do not necessarily bind particles to surnames. One can use the alternate names field or ``text tags'' and ``index tags.'' See also Sections~\ref{sec:indextag}, \ref{sec:tagtext}, and~\ref{sec:Hooksb}. The macros below allow us to show \Name{Friedrich, I}, \Name*{Friedrich, I}, and \Name{Friedrich, I} via |\Name{Friedrich, I}|: % \begin{quote}\footnotesize\setstretch{1.1} % |\NameAddInfo{Friedrich, I}{Barbarossa}|\\ % |\PretagName{Friedrich, I}{Friedrich 1}|\\ @@ -1669,7 +1685,8 @@ Running "make install" installs the files in the local TeX tree. % |\FName[Martin Luther]{King, Jr.}[M.L.]|. & gobbled & \FName[Martin Luther]{King, Jr.}[M.L.]\\\bottomrule % \end{tabular} % \end{center} -% Grouping tokens can prevent this: |{\Name*[Martin Luther]{King, Jr.}}.| produces ``{\Name*[Martin Luther]{King, Jr.}}.'' We see two periods. Enclosing |{Jr.}| within braces or making the whole suffix a macro argument will do the same. Leave the final period outside the macro or group: +% Grouping tokens inhibit gobbling: |{\Name*[Martin Luther]{King, Jr.}}.| +% This produces ``{\Name*[Martin Luther]{King, Jr.}}.'' We see two periods. Enclosing |{Jr.}| within braces or making the whole suffix a macro argument also prevents gobbling. Leave the final period outside the macro or group, for example: %\begin{quote} %\indent{\small|\Name[Martin Luther]{\textSC{King}, \textSC{Jr}.}|} % \end{quote} @@ -1693,7 +1710,7 @@ Running "make install" installs the files in the local TeX tree. % % \DescribeMacro{\NamesActive} % \DescribeMacro{\NamesInactive} -% \cmd{\NamesInactive} and the \texttt{frontmatter} option make names use the front matter system. \cmd{\NamesActive} switches names to the main matter system. +% \cmd{\NamesInactive} and the \texttt{frontmatter} option make names use the front matter system. \cmd{\NamesActive} switches names to the main matter system.\medskip % % Please\marginpar{\small\raggedleft\cmd{\global}} note that these two macros can be used explicitly as a pair. They also can be used singly within an explicit scope, where the effects cease after leaving that scope. Use \cmd{\global} to force a global effect.\medskip % @@ -1704,20 +1721,19 @@ Running "make install" installs the files in the local TeX tree. % |\renewcommand*\NamesFormat[1]{\color{naviolet}\sffamily #1}|\\ % |\renewcommand*\MainNameHook[1]{\color{naorange}\sffamily #1}| % \end{quote} -% The two systems are meant to be used in distinct parts of the document, such as front matter and main matter or text and footnotes. The look awkward when used in the same block of text.\medskip +% The two systems are meant to be used in distinct parts of the document, such as front matter and main matter or text and footnotes. The look awkward when used in the same block of text. % -% \noindent We switch to the ``front matter'' system: % \begin{quote}\small\setstretch{1.1} +% We switch to the ``front matter'' system:\\ % \cmd{\NamesInactive}\NamesInactive\\[0.4ex] % \begin{tabular}{@{}ll} % |\Name[Rudolph]{Carnap}| & \Name[Rudolph]{Carnap}\\ % |\Name[Rudolph]{Carnap}| & \Name[Rudolph]{Carnap}\\ % |\Name[Nicolas]{Malebranche}| & \Name[Nicolas]{Malebranche}\\ % |\Name[Nicolas]{Malebranche}| & \Name[Nicolas]{Malebranche}\\ -% \end{tabular} -% \end{quote} -% Then we switch back to ``main matter'' system: -% \begin{quote}\small\setstretch{1.1} +% \end{tabular}\\ +% +% Then we switch back to ``main matter'' system:\\ % \cmd{\NamesActive}\NamesActive\\[0.4ex] % \begin{tabular}{@{}ll} % |\Name[Rudolph]{Carnap}| & \Name[Rudolph]{Carnap}\\ @@ -1726,11 +1742,12 @@ Running "make install" installs the files in the local TeX tree. % |\Name[Nicolas]{Malebranche}| & \Name[Nicolas]{Malebranche}\\ % \end{tabular} % \end{quote} -% \clearpage +% % \DescribeMacro{\ForceName} -% Use this prefix macro\marginpar{\large\raggedleft\textsf{\bfseries 3.1}\strut} to force ``first use'' formatting for the next \cmd{\Name}, etc. This will not force a full name reference. One must use the \texttt{formatAKA} option when using this with \cmd{\AKA}, etc. We show this macro in Sections~\ref{sec:tweaks}, \ref{sec:AKA}, and~\ref{sec:Hooksb}.\medskip +% Use this prefix macro\marginpar{\large\raggedleft\textsf{\bfseries 3.1}\strut} to force ``first use'' formatting for the next \cmd{\Name}, etc. This will not force a full name reference. One must use the \texttt{formatAKA} option when using this with \cmd{\AKA}, etc. We show this macro in Sections~\ref{sec:tweaks}, \ref{sec:AKA}, and~\ref{sec:Hooksb}. +% \clearpage % -% Below\marginpar{\small\raggedleft \texttt{alwaysformat}} we simulate the \texttt{alwaysformat} option by manipulating the package internals. After the examples, we reset the formatting hooks. +% Below\marginpar{\small\raggedleft \texttt{alwaysformat}} we simulate the \texttt{alwaysformat} option by manipulating the package internals. Using first-use hooks will not force full name references. % \makeatletter\@nameauth@AlwaysFormattrue\makeatother% % \ForgetName[M.T.]{Cicero}\ForgetName{Elizabeth, I}% % \begin{itemize} @@ -1746,43 +1763,42 @@ Running "make install" installs the files in the local TeX tree. % \end{quote} % The hooks are called in a way that lets them either have one argument or none and keeps changes local via: \cmd{\bgroup}\meta{Hook}|{#1}|\cmd{\egroup}\medskip % -% The\marginpar{\small\raggedleft applied to\break footnotes\break\dbend} previous examples illustrate the independent systems or ``species'' of names. This is most useful when you want to format names one way in the regular body text but another way somewhere else. In footnotes, for example, we could locally redefine \cmd{\NamesFormat} to create custom formatting: +% \makeatletter\ignorespaces% +% \let\@oldfntext\@makefntext\ignorespaces% +% \long\def\@makefntext#1{\renewcommand*\NamesFormat{\color{naviolet}\scshape}\@oldfntext{#1}}\ignorespaces% +% \makeatother\ignorespaces% +% The\marginpar{\small\raggedleft applied to\break footnotes\break\dbend} previous examples illustrate the independent systems or ``species'' of names. Use different ``species'' in different parts of your document. When we do not do this, for example, names in the body text like \Name[John Maynard]{Keynes} affect names in the footnotes.\footnote{You get \Name[John Maynard]{Keynes} from \cmd{\Name}\texttt{[John Maynard]\{Keynes\}} instead of \ForgetThis\Name[John Maynard]{Keynes}.} +% In this case, \cmd{\MainNameHook} is called instead of \cmd{\NamesFormat} because the name already occurred in the text. % \begin{quote}\small\setstretch{1.1} -% |\makeatletter|\\ -% |\let\@oldfntext\@makefntext|\hfill|% restore this later|\\ -% |\long\def\@makefntext#1{%|\\ +% |\makeatletter|{\color{nared}\hfill|% text affects footnotes|}\\ +% |\let\@oldfntext\@makefntext|{\color{nared}\hfill|% restore this later|}\\ +% |\long\def\@makefntext#1{%|{\color{nared}\hfill|% new format; same name system|}\\ % | \renewcommand*\NamesFormat{\color{naviolet}\scshape}%|\\ % | \@oldfntext{#1}}|\\ % |\makeatother| % \end{quote} -% \makeatletter\ignorespaces% -% \let\@oldfntext\@makefntext% -% \long\def\@makefntext#1{\renewcommand*\NamesFormat{\color{naviolet}\scshape}\@oldfntext{#1}}% -% \makeatother% -% -% The problem above is that \Name[John Maynard]{Keynes} in the text affects formatting in the footnotes.\footnote{You get \Name[John Maynard]{Keynes} from \cmd{\Name}\texttt{[John Maynard]\{Keynes\}} instead of \ForgetThis\Name[John Maynard]{Keynes}.} -% In this case, the subsequent-use hook \cmd{\MainNameHook} is called because the name already occurred in the text. % -% Using the front-matter system to manage names in the footnotes independently of those in the body text may be the easiest and most robust solution: +% \makeatletter\ignorespaces% +% \long\def\@makefntext#1{\renewcommand*\FrontNamesFormat{\color{nagreen}\scshape}\NamesInactive\@oldfntext{#1}\NamesActive}\ignorespaces% +% \makeatother\ignorespaces% +% The front-matter system keeps names in the footnotes independent of those in the body text.\footnote{We have the expected \Name[John Maynard]{Keynes}, then \Name[John Maynard]{Keynes}.} +% You can synchronize the two naming systems if needed; see Section~\ref{sec:tweaks}. Using the front-matter system looks like: % \begin{quote}\small\setstretch{1.1} -% |\makeatletter|\\ -% |\long\def\@makefntext#1{%|\\ +% |\makeatletter|{\color{nared}\hfill|% text does not affect footnotes|}\\ +% |\long\def\@makefntext#1{%|{\color{nared}\hfill|% new format; different name system|}\\ +% | \renewcommand*\FrontNamesFormat{\color{nagreen}\scshape}%|\\ % | \NamesInactive\@oldfntext{#1}\NamesActive%|\\ % |}\makeatother| % \end{quote} -% \makeatletter\ignorespaces% -% \long\def\@makefntext#1{\NamesInactive\@oldfntext{#1}\NamesActive}% -% \makeatother% -% Your footnotes do not affect the main body text now.\footnote{We have the expected \Name[John Maynard]{Keynes}, then \Name[John Maynard]{Keynes}.} -% Nevertheless, you can synchronize the two naming systems if needed or manipulate them independently; see Section~\ref{sec:tweaks}. Now we change footnotes back to normal, either with \cmd{\let} or with scoping and groups: +% \makeatletter\let\@makefntext\@oldfntext\makeatother% +% Now we change footnotes back to normal, for example: % \begin{quote}\small\setstretch{1.1} % |\makeatletter|\\ % |\let\@makefntext\@oldfntext|\\ % |\makeatother| % \end{quote} -% \makeatletter\let\@makefntext\@oldfntext\makeatother% -% % {\noindent\hbox{}\hfill\large Back to Section~\ref{sec:RefTables} \hfill\hbox{}} +% \clearpage % % \subsubsection{Alternate Format} % \label{sec:altformat} @@ -1802,7 +1818,7 @@ Running "make install" installs the files in the local TeX tree. % Previous methods to get Continental formatting still should work. Simply use the \texttt{altformat} option or \cmd{\AltFormatActive} to add protection against \cmd{\CapThis}.\medskip % % \DescribeMacro{\AltFormatActive} -% Both the \texttt{altformat} option and \cmd{\AltFormatActive} globally enable alternate formatting and switch the formatting macros ``on.'' This causes \cmd{\CapThis} only to work via \cmd{\AltCaps}.\medskip +% Both the \texttt{altformat} option and \cmd{\AltFormatActive} globally enable alternate formatting and switch the formatting macros ``on.'' It will change the effects of \cmd{\AltFormatActive*}. It causes \cmd{\CapThis} only to work via \cmd{\AltCaps}.\medskip % % \DescribeMacro{\AltFormatActive*} % When one wants to enable alternate formatting but keep the formatting macros in the ``off'' state, use the starred form \cmd{\AltFormatActive*}. It can change the effects of both the \texttt{altformat} option and \cmd{\AltFormatActive}. It causes \cmd{\CapThis} only to work via \cmd{\AltCaps}.\medskip @@ -1865,7 +1881,7 @@ Running "make install" installs the files in the local TeX tree. % \end{tabular} % \end{center} % -% Only the new syntax allows alternate names to be used in the text. Thus, |\LFukuyama[Sensei]| \LFukuyama[Sensei] wrote \emph{Nihon Fukuin R\=uteru Ky\=okai Shi} in 1954, after studying in the US in the 1930s. The old syntax |\LOFukuyama[Sensei]| yields \LOFukuyama[Sensei]. +% Only the new syntax allows one to use alternate names in the text. For example, |\LFukuyama[Sensei]| \LFukuyama[Sensei] wrote \emph{Nihon Fukuin R\=uteru Ky\=okai Shi} in 1954, after studying in the US in the 1930s. The old syntax |\LOFukuyama[Sensei]|, which we avoid, yields \LOFukuyama[Sensei]. % % \begin{center}\bfseries Advanced Features\end{center} % A more complex version of alternate formatting allows us to make format changes in the text while keeping format consistent in the index. We use \cmd{\textSC}, \cmd{\textIT}, \cmd{\textBF}, and \cmd{\textUC} with \cmd{\noexpand} and special triggering macros. Using \cmd{\noexpand} is crucial because we do not want to have the macros expand at the wrong time, giving us the wrong results. Thus: @@ -1912,7 +1928,7 @@ Running "make install" installs the files in the local TeX tree. %This gives us \Cath\ and \Cath. To get either \ForceName\CapThis\LCath[\noexpand\AltCaps{d}e'] or \CapThis\LCath[\noexpand\AltCaps{d}e'], use |\CapThis\LCath[\noexpand\AltCaps{d}e']|. % \end{quote} % -% Sections~\ref{sec:formatting} and~\ref{sec:Hooksc} have more on these topics, especially the use of \cmd{\NameParser}. We return to normal formatting with \cmd{\AltFormatInactive} and ensure that no names in the alternate regime are used elsewhere. +% Sections~\ref{sec:formatting} and~\ref{sec:Hooksc} have more on these topics. We resume normal formatting with \cmd{\AltFormatInactive}. We do not use alternately-formatted names in the normal regime in order to prevent spurious index entries. % \AltFormatInactive\endgroup % % {\medskip\noindent\hbox{}\hfill\large Back to Section~\ref{sec:RefTables} \hfill\hbox{}} @@ -1920,14 +1936,14 @@ Running "make install" installs the files in the local TeX tree. % % \subsection{Indexing Macros} % -% Current\marginpar{\large\raggedleft\textsf{\bfseries 3.0}\strut} versions of \textsf{nameauth} offer greater flexibility with indexing but still implement some error protection. We cover the indexing macros here because the later macros in this manual build on many of their concepts. Some aspects of indexing go beyond the scope of this package.\footnote{The maintainer of the \textsf{babel} package is working to address issues with Roman page numbers. For \textsf{memoir}, search for ``memoir babel index'' at \url{http://tex.stackexchange.com}.} +% Current\marginpar{\large\raggedleft\textsf{\bfseries 3.0}\strut} versions of \textsf{nameauth} offer greater flexibility with indexing but still implement some error protection. We cover the indexing macros here because the later macros in this manual build on many of their concepts. Some aspects of indexing go beyond the scope of this package.\footnote{For example, search for ``memoir babel index'' at \url{http://tex.stackexchange.com}.} % % \subsubsection{Indexing Control} % \label{sec:indexctrl} % % \DescribeMacro{\IndexActive} % \DescribeMacro{\IndexInactive} -% Using the \texttt{noindex} option deactivates the indexing function of this package until \cmd{\IndexActive} occurs. Another macro, \cmd{\IndexInactive}, will deactivate indexing again. These can be used throughout the document. \cmd{\ExcludeName} and \cmd{\IncludeName} do not deactivate indexing, but they leverage the cross-referencing system to prevent page entries. +% Using the \texttt{noindex} option deactivates the indexing function of this package until \cmd{\IndexActive} occurs. Another macro, \cmd{\IndexInactive}, will deactivate indexing again. These can be used throughout the document. \cmd{\ExcludeName} and \cmd{\IncludeName} do not deactivate indexing, but they leverage the cross-referencing system to prevent page entries.\medskip % % Please\marginpar{\small\raggedleft\cmd{\global}} note that these two macros can be used explicitly as a pair. They also can be used singly within an explicit scope, where the effects cease after leaving that scope. Use \cmd{\global} to force a global effect. % @@ -1939,7 +1955,7 @@ Running "make install" installs the files in the local TeX tree. % \DescribeMacro{\JustIndex} % This prefix macro makes \cmd{\Name} and \cmd{\Fname} act just like a call to \cmd{\IndexName} one time only. That means, like \cmd{\IndexName}, the effects of all the other prefix macros will ``pass through'' to the next naming macro. Both \cmd{\AKA} and \cmd{\PName} ignore and reset the flag controlled by this macro. % -% All the changes made by the prefix macros pass through |\JustIndex\|\meta{$name_1$} to the next instance of \cmd{\Name}, etc., |\|\meta{$name_2$}. This is exactly as if you called \cmd{\IndexName}. This makes |\JustIndex\|\meta{$name_1$}|\SkipIndex\|\meta{$name_2$} equivalent to |\SkipIndex\JustIndex\|\meta{$name_1$}|\|\meta{$name_2$}.\medskip +% All the changes\marginpar{\small\raggedleft\dbend} made by the prefix macros pass through |\JustIndex\|\meta{$name_1$} to the next instance of \cmd{\Name}, etc., |\|\meta{$name_2$}. This is exactly as if you called \cmd{\IndexName}. This makes |\JustIndex\|\meta{$name_1$}|\SkipIndex\|\meta{$name_2$} equivalent to |\SkipIndex\JustIndex\|\meta{$name_1$}|\|\meta{$name_2$}.\medskip % % Now we use tricks from Sections~\ref{sec:IndexName}, \ref{sec:IndexXref} and~\ref{sec:tweaks} to modify name forms, formatting, and indexing. Instead of using \cmd{\SkipIndex}, \cmd{\IndexInactive}, and \cmd{\IndexActive}, here we let the name exclusion mechanism protect a name: % \begin{quote}\small\setstretch{1.1} @@ -1948,7 +1964,7 @@ Running "make install" installs the files in the local TeX tree. % |\end{nameauth}|\\ % |\ExcludeName[George]{Washington's}| % \end{quote} -% |\Washs| and |\Washs| produce \Washs\ and \Washs, but no index entries. Use |\JustIndex\Wash|\JustIndex\Wash\ as needed. +% |\Washs| and |\Washs| produce \Washs\ and \Washs, but no index entries. Use |\JustIndex\Wash|\JustIndex\Wash\ as needed. Remember that one only needs this trick when using something other than default formatting. Otherwise just put an inflected ending after the name macro. % % {\medskip\noindent\hbox{}\hfill\large Back to Section~\ref{sec:RefTables} \hfill\hbox{}} % \clearpage @@ -1964,7 +1980,7 @@ Running "make install" installs the files in the local TeX tree. % % \cmd{\IndexName} complies with the new syntax, where a suffixed pair in \meta{SNN} is a name/affix pair that can be ancient or Eastern. If \meta{FNN} are present, it ignores \meta{Alternate names} for Western and native Eastern name forms. If \meta{FNN} are absent, \cmd{\IndexName} sees \meta{Alternate names} as an affix or Eastern forename using the older syntax. % -% If used after \cmd{\IndexInactive} this macro does nothing until \cmd{\IndexActive} appears. It will not create index entries for names used as cross-references by \cmd{\IndexRef} and \cmd{\AKA}. This provides a basic level of error protection. +% If used after \cmd{\IndexInactive} this macro does nothing until \cmd{\IndexActive} appears. It will not create index entries for cross-references made by \cmd{\IndexRef} and \cmd{\AKA}. It will not index names excluded by \cmd{\ExcludeName}. This provides a basic level of error protection for professional indexing. % % The indexing mechanism in the \textsf{nameauth} package follows [\hyperlink{Mulvany}{Mulvany}, 152--82] and the \emph{Chicago Manual of Style} regarding Western name affixes. Thus \LChes\ becomes ``Sullenberger, Chesley B., III'' in the index. % @@ -2019,7 +2035,7 @@ Running "make install" installs the files in the local TeX tree. % \cmd{\IndexRef}\oarg{FNN}\marg{SNN}\oarg{Alternate names}\marg{reference target} % \end{quote} % -% The name used for the cross-reference is parsed in the same way as by \cmd{\IndexName}. The final argument is neither parsed nor checked to see if a corresponding main entry exists. For example, to cross-reference ``Sun King'' with \Name*{Louis, XIV} use: \cmd{\IndexRef}\texttt{\{Sun King\}\{Louis XIV\}}\IndexRef{Sun King}{Louis XIV}. To format that reference in the text, use \cmd{\AKA} (Section~\ref{sec:AKA}). +% The name used for the cross-reference is parsed like \cmd{\IndexName}. The final argument is neither parsed nor checked to see if a corresponding main entry exists. For example, to cross-reference ``Sun King'' with \Name*{Louis, XIV} use: \cmd{\IndexRef}\texttt{\{Sun King\}\{Louis XIV\}}\IndexRef{Sun King}{Louis XIV}. To format that reference in the text, use \cmd{\AKA} (Section~\ref{sec:AKA}). % % \begin{center}\bfseries Please see page~\pageref{page:manualxref} regarding complex cross-references.\end{center} % @@ -2123,7 +2139,7 @@ Running "make install" installs the files in the local TeX tree. % A macro with the general form below, similar to \cmd{\IndexName}, will add two spaces after \emph{other} control sequences that are expanded multiple times. Those spaces only affect index sorting, not appearance. Remember this when using and modifying manual index entries with \textsf{nameauth}: % \begin{quote}\small\setstretch{1.1} % |\newcommand\IndexExample[1]{%|\\ -% \hbox{}\qquad|\protected@edef\argument{#1}\index{\argument}}%| +% \hbox{}\qquad|\protected@edef\argument{#1}\index{\argument}}| % % |\IndexExample{\textsc{football}}| $\rightarrow$\\ \hbox{}\qquad\ignorespaces% % \cmd{\indexentry}\ignorespaces% @@ -2227,7 +2243,7 @@ Running "make install" installs the files in the local TeX tree. % \cmd{\NameAddInfo}\oarg{FNN}\marg{SNN}\oarg{Alternate names}\marg{tag} % \end{quote} % -% For example, |\NameAddInfo[George]{Washington}{(1732--99)}|\NameAddInfo[George]{Washington}{(1732--99)} will associate the text ``\NameQueryInfo[George]{Washington}'' with the name ``\LWash.'' Note, however, that the tag does not print automatically with the name. +% For example, |\NameAddInfo[George]{Washington}{(1732--99)}|\NameAddInfo[George]{Washington}{(1732--99)} will associate the text ``\NameQueryInfo[George]{Washington}'' with the name ``\LWash.'' Note, however, that the tag does not print automatically with the name. The tag exists as the value to which a control sequence based on \SkipIndex\Washs\ name expands. Such a tag always must expand in the index to have consistent entries. In the text that is not required, so we do that explicitly with \cmd{\NameQueryInfo}. % \clearpage % % \DescribeMacro{\NameQueryInfo} @@ -2249,6 +2265,8 @@ Running "make install" installs the files in the local TeX tree. % |\Name[Schuyler]{Colfax}.\NameQueryInfo[Schuyler]{Colfax}| % \end{quote} % +% Please remember that text tags which query each other or themselves would cause a stack overflow unless you prevented that.\medskip +% % \DescribeMacro{\NameClearInfo} % \cmd{\NameAddInfo} will replace one text tag with another text tag, but it does not delete a text tag. That is the role of \cmd{\NameClearInfo}. The syntax is: % \begin{quote}\small @@ -2272,7 +2290,7 @@ Running "make install" installs the files in the local TeX tree. % \item That affects accented characters in \texttt{pdflatex}/NFSS. % \end{itemize} % -% See Sections~\ref{sec:Hooksb} and~\ref{sec:Hooksc} for related ideas about tokens and expansion. Using \cmd{\tracingmacros}, \cmd{\show}, or \cmd{\meaning} can help you. +% See Sections~\ref{sec:Hooksb} and~\ref{sec:Hooksc} for related ideas about tokens and expansion. Using the \textsf{trace} package, \cmd{\show}, or \cmd{\meaning} can help you. % \clearpage % % \DescribeMacro{\IfMainName} @@ -2318,7 +2336,7 @@ Running "make install" installs the files in the local TeX tree. % \end{quote}% % Please refer to Sections~\ref{sec:tweaks} and~\ref{sec:LocalNames} to understand the scope and operation of main- and front-matter names. % \vfil -% \begin{center}\large This space intentionally left blank.\end{center} +% \begin{center}\large \emph{This space intentionally left blank.}\end{center} % \clearpage % % \DescribeMacro{\IfAKA} @@ -2387,7 +2405,7 @@ Running "make install" installs the files in the local TeX tree. % Then \Name{Sam} met \Name{Freddy}, who lives with his uncle.\\ % Now he is \NameQueryInfo{Sam} on a quest to save the realm. % \end{quote} -% We use \cmd{\SkipIndex} to prevent the name ``\SkipIndex\Name{Freddy's}'' from making an index entry of its own. See Section~\ref{sec:indexctrl}. Take care to avoid a stack overflow by conditionally nesting tags ``down the rabbit hole.'' +% We use \cmd{\SkipIndex} to prevent the name ``\SkipIndex\Name{Freddy's}'' from making an index entry of its own. See Section~\ref{sec:indexctrl}. Take care to avoid a stack overflow by not allowing conditional text to call tags recursively ``down the rabbit hole.'' % % {\medskip\noindent\hbox{}\hfill\large Back to Section~\ref{sec:RefTables} \hfill\hbox{}} % @@ -2444,18 +2462,18 @@ Running "make install" installs the files in the local TeX tree. % This mode switch\marginpar{\large\raggedleft\textsf{\bfseries 3.1}} causes the next instance of a naming macro or shorthand to call \cmd{\SubvertName} internally. \cmd{\ForgetThis} takes precedence over \cmd{\SubvertThis}. % \begin{quote}\small\setstretch{1.1} % \begin{tabular}{@{}lll} -% |\SubvertThis\LAnth| & \SubvertThis\LAnth & \emph{forced subsequent use, forced long}\\ -% |\ForceName\SAnth| & \ForceName\SAnth & \emph{subsequent use, forced first format}\\ -% |\ForgetThis\SAnth| & \ForgetThis\SAnth & \emph{forced first use and format}\\ +% |\SubvertThis\LAnth| & \SubvertThis\LAnth & \emph{force subseq. use, force long}\\ +% |\ForceName\SAnth| & \ForceName\SAnth & \emph{subseq. use, force first format}\\ +% |\ForgetThis\SAnth| & \ForgetThis\SAnth & \emph{force first use and format}\\ % |\SAnth| & \SAnth & \emph{subsequent use, short}\\ % \end{tabular} % \end{quote} % We met \cmd{\ForceName} back in Section~\ref{sec:formatting}. Here we use it with a subsequent name use to format it as a first use. We will meet \cmd{\ForceName} again in Section~\ref{sec:AKA}.\medskip % -% By default,\marginpar{\small\raggedleft Naming system\break scope} these macros affect a name form in both front matter and main matter naming systems. The example on page~\pageref{page:Carnap} above gave us the answer, ``\IfFrontName[Rudolph]{Carnap}{\IfMainName[Rudolph]{Carnap}{\Name[Rudolph]{Carnap} is both}{\Name[Rudolph]{Carnap} is only non-formatted}}{\IfMainName[Rudolph]{Carnap}{\Name[Rudolph]{Carnap} is only formatted}{\Name[Rudolph]{Carnap} is not mentioned}}''. After we use \ForgetName[Rudolph]{Carnap}|\ForgetName[Rudolph]{Carnap}| we get the result: +% By default,\marginpar{\small\raggedleft Naming system\break scope} these macros affect a name form in both front matter and main matter naming systems. The example on page~\pageref{page:Carnap} above gave us the answer, ``\IfFrontName[Rudolph]{Carnap}{\IfMainName[Rudolph]{Carnap}{\Name[Rudolph]{Carnap} is both}{\Name[Rudolph]{Carnap} is only non-formatted}}{\IfMainName[Rudolph]{Carnap}{\Name[Rudolph]{Carnap} is only formatted}{\Name[Rudolph]{Carnap} is not mentioned}}.'' After we use \ForgetName[Rudolph]{Carnap}|\ForgetName[Rudolph]{Carnap}| we get the result: % ``\IfFrontName[Rudolph]{Carnap}{\IfMainName[Rudolph]{Carnap}{\Name[Rudolph]{Carnap} is both}{\Name[Rudolph]{Carnap} is only non-formatted}}{\IfMainName[Rudolph]{Carnap}{\Name[Rudolph]{Carnap} is only formatted}{\Name[Rudolph]{Carnap} is not mentioned}}.'' Both front- and main-matter names were forgotten and now we have a first-use situation. % -% This default behavior helps synchronize formatted and unformatted types of names. For example, if you wanted to use unformatted names in the footnotes and formatted names in the text (Section~\ref{sec:formatting}), you could use, \emph{e.g.} \cmd{\SubvertName} right after the first use of a name in the body text, ensuring that all references in the text and notes would be short unless otherwise modified. This manual uses that behavior to synchronize uses of names between formatting systems.\medskip +% This default ``name scope'' behavior helps synchronize formatted and unformatted types of names. For example, one could use \cmd{\ForgetName} and \cmd{\SubvertName} in the footnote examples from Section~\ref{sec:formatting} to synchronize uses of names between formatting systems. This manual uses that approach at need.\medskip % % \DescribeMacro{\LocalNames} % \DescribeMacro{\GlobalNames} @@ -2477,7 +2495,7 @@ Running "make install" installs the files in the local TeX tree. % \cmd{\AKA*}\oarg{FNN}\marg{SNN}\oarg{Alt. FNN}\marg{Alt. SNN}\oarg{Alt. names} % \end{quote} % Both macros create a cross-reference in the index from the \meta{Alt. FNN}, \meta{Alt. SNN}, and \meta{Alt. names} fields to a target defined by \meta{FNN} and \meta{SNN}, regardless of whether that name exists. -% \textbf{The name order for \cmd{\AKA} is opposite that of \cmd{\IndexRef}.}\footnote{That ordering is due to the collision between \textbf{\meta{Alt\textsubscript{1}}} and \textbf{\meta{FNN\textsubscript{2}}} in a hypothetical \cmd{\AKA}\oarg{FNN\textsubscript{1}}\marg{SNN\textsubscript{1}}\ignorespaces% +% \textbf{The order of the name and cross-reference in \cmd{\AKA} is opposite that of \cmd{\IndexRef}.}\footnote{That ordering is due to the collision between \textbf{\meta{Alt\textsubscript{1}}} and \textbf{\meta{FNN\textsubscript{2}}} in a hypothetical \cmd{\AKA}\oarg{FNN\textsubscript{1}}\marg{SNN\textsubscript{1}}\ignorespaces% % \textbf{\oarg{Alt\textsubscript{1}}\oarg{FNN\textsubscript{2}}}\ignorespaces% % \marg{SNN\textsubscript{2}}\oarg{Alt\textsubscript{2}} By only allowing \meta{FNN\textsubscript{1}} and \meta{SNN\textsubscript{1}} for the target name, we can let the other fields permit an unrestricted cross-reference.} %See also Section~\ref{sec:indextag}. @@ -2502,7 +2520,7 @@ Running "make install" installs the files in the local TeX tree. % \end{itemize} % % \begin{center}\bfseries Examples\end{center} -% We make cross-references to \Name[Bob]{Hope}, where sll of the forms below create the cross-reference ``Hope, Leslie Townes \emph{see} Hope, Bob'': +% We make cross-references to \Name[Bob]{Hope}, where all of the forms below create the cross-reference ``Hope, Leslie Townes \emph{see} Hope, Bob'': % \begin{center}\small\setstretch{1.1} % \begin{tabular}{p{0.6\textwidth}l}\toprule % \footnotesize|\AKA[Bob]{Hope}[Leslie Townes]{Hope}| & \AKA[Bob]{Hope}[Leslie Townes]{Hope}\\ @@ -2544,7 +2562,7 @@ Running "make install" installs the files in the local TeX tree. % Again we mention Queen \Eliz, ``\AKA{Elizabeth, I}[Good Queen]{Bess}.''\\ % \cmd{\ForceName}: \ForceName\AKA{Elizabeth, I}[Good Queen]{Bess}. % \end{quote} -% Section~\ref{sec:tweaks} also shows how cross-references are independent of other data sets in \textsf{nameauth}. Cross-references do not respect the two namng systems. The first time that the cross-reference appears, we see that \texttt{formatAKA} lets it use the first-use hooks. Thereafter, it uses the subsequent-use hooks. When we switched to the main matter, the cross-reference \AKA{Elizabeth, I}[Good Queen]{Bess} did not switch to a first use until we used \cmd{\ForceName}. Now we compare the \texttt{alwaysformat} option: +% Section~\ref{sec:tweaks} also shows how cross-references are independent of other data sets in \textsf{nameauth}. Cross-references do not respect the two namng systems. The first time that the cross-reference appears, we see that \texttt{formatAKA} permits the first-use hooks. Thereafter, it uses the subsequent-use hooks. When we switched to the main matter, the cross-reference \AKA{Elizabeth, I}[Good Queen]{Bess} did not switch to a first use until we used \cmd{\ForceName}. Now we compare the \texttt{alwaysformat} option: % % \begin{quote}\small\setstretch{1.1} % \makeatletter\@nameauth@AlwaysFormattrue\makeatother @@ -2610,14 +2628,12 @@ Running "make install" installs the files in the local TeX tree. % {\ttfamily% % |\PretagName{\textit{Doctor| |angelicus}}{Doctor| |angelicus}|\\ % |Perhaps| |the| |greatest| |medieval| |theologian was %|\\ -% |\Name{Thomas,| |Aquinas} %|\\ -% |(\AKA{Thomas,| |Aquinas}{Thomas| |of| |Aquino}), also known as %|\\ +% |\Name{Thomas,| |Aquinas}, also known as %|\\ % |\AKA{Thomas, Aquinas}{\textit{Doctor angelicus}}|.} % % \PretagName{\textit{Doctor angelicus}}{Doctor Angelicus} % Perhaps the greatest medieval theologian was -% \Name{Thomas, Aquinas} % -% (\AKA{Thomas, Aquinas}{Thomas of Aquino}), also known as % +% \Name{Thomas, Aquinas}, also known as % % \AKA{Thomas, Aquinas}{\textit{Doctor angelicus}}. % \end{quote} % We use the medieval form: |\Name{Thomas, Aquinas}| because ``Aquinas'' is not a surname, even though many people, including scholars, use it as such. Section~\ref{sec:standards} talks about how one can use |\ForceFN\FName{Thomas, Aquinas}| to refer to \ForceFN\FName{Thomas, Aquinas}. Using |\ForceFN\Name{Thomas, Aquinas}| will produce \ForceFN\Name{Thomas, Aquinas}. That helps prevent unwanted side effects with Eastern names. @@ -2685,7 +2701,7 @@ Running "make install" installs the files in the local TeX tree. % \item This name gives us an extra level of difficulty because the two variants differ only in terms of spaces. They share the same internal representation in the \textsf{nameauth} macros: |W.E.B.!DuBois|. We fix this ambiguity by inserting a non-printing control sequence in the alternate form, such as |{Du\empty Bois}|. That prevents ``{Du\empty Bois}'' from breaking at the end of a line or page. A discretionary hyphen would allow the name to break.\footnote{Ignoring spaces in names is good because it aids fault tolerance, thereby decreasing spurious index entries. Here we have a special case where this behavior is not useful.} % % \item Instead of using \cmd{\SkipIndex}\cmd{\AltDuBois} every time we wanted to avoid making an index entry, we create a cross-reference in the index from the alternate name to the canonical name:\\ -% | \IndexRef[W.E.B.]{Du\empty Bois}%| |{Du Bois, W.E.B.}| +% | \IndexRef[W.E.B.]{Du\empty Bois}{Du Bois, W.E.B.}| % % \IndexRef[W.E.B.]{Du\empty Bois}{Du Bois, W.E.B.}From this point onward, no page entry for \AltDuBois\ will occur in the index unless manipulated by \cmd{\IncludeName*}. The canonical \DuBois\ functions as a different name and is not affected. % \end{enumerate} @@ -2726,41 +2742,41 @@ Running "make install" installs the files in the local TeX tree. % \end{quote} % Next we create a formatted name in the ``main matter'': % \begin{quote}\small\setstretch{1.1} -% |\Name*[Charlie]{Chaplin}|\hfill\Name*[Charlie]{Chaplin}\\ -% |\CheckChuck|\hfill\CheckChuck +% |\Name*[Charlie]{Chaplin}|\hfill\Name*[Charlie]{Chaplin}\qquad\qquad\qquad\hbox{}\\ +% |\CheckChuck|\hfill\CheckChuck\qquad\qquad\qquad\hbox{} % \end{quote} % Now we switch to ``front-matter'' text and create a name. To ignore any local scoping we use \cmd{\global}\cmd{\NamesInactive}: % \begin{quote}\small\setstretch{1.1} % |\global\NamesInactive|\global\NamesInactive\\ -% |\Name*[Charlie]{Chaplin}|\hfill\Name*[Charlie]{Chaplin}\\ -% |\CheckChuck|\hfill\CheckChuck +% |\Name*[Charlie]{Chaplin}|\hfill\Name*[Charlie]{Chaplin}\qquad\qquad\qquad\hbox{}\\ +% |\CheckChuck|\hfill\CheckChuck\qquad\qquad\qquad\hbox{} % \end{quote} % We now have two names. They look and behave the same, but are two different ``species'' with independent first and subsequent uses. We use \cmd{\Localnames} to make \cmd{\ForgetName} and \cmd{\SubvertName} work with only the front-matter species. Then we ``forget'' the front-matter name: % \begin{quote}\small\setstretch{1.1} % |\LocalNames|\LocalNames\\ % |\ForgetName[Charlie]{Chaplin}|\ForgetName[Charlie]{Chaplin}\\ -% |\CheckChuck|\hfill\CheckChuck +% |\CheckChuck|\hfill\CheckChuck\qquad\qquad\qquad\hbox{} % \end{quote} % Next we ``subvert'' the front-matter name to ``remember'' it again and switch to the main section, again using \cmd{\global} to ignore scoping. Now \cmd{\ForgetName} and \cmd{\SubvertName} are working with the main-matter species. % \begin{quote}\small\setstretch{1.1} % |\SubvertName[Charlie]{Chaplin}|\SubvertName[Charlie]{Chaplin}\\ % |\global\NamesActive|\global\NamesActive\\ -% |\CheckChuck|\hfill\CheckChuck +% |\CheckChuck|\hfill\CheckChuck\qquad\qquad\qquad\hbox{} % \end{quote} % We forget the main-matter name and additionally reset the default behavior so that \cmd{\ForgetName} and \cmd{\SubvertName} work with both species: % \begin{quote}\small\setstretch{1.1} % |\ForgetName[Charlie]{Chaplin}|\ForgetName[Charlie]{Chaplin}\\ % |\GlobalNames|\GlobalNames\\ -% |\CheckChuck|\hfill\CheckChuck +% |\CheckChuck|\hfill\CheckChuck\qquad\qquad\qquad\hbox{} % \end{quote} % Finally, we forget everything. Even though we are in a main-matter section, the front-matter control sequence goes away: % \begin{quote}\small\setstretch{1.1} % |\ForgetName[Charlie]{Chaplin}|\ForgetName[Charlie]{Chaplin}\\ -% |\CheckChuck|\hfill\CheckChuck +% |\CheckChuck|\hfill\CheckChuck\qquad\qquad\qquad\hbox{} % \end{quote} % \clearpage % -% \subsubsection{Unicode and NFSS} +% \subsubsection{Unicode + \textsf{inputenc}} % \label{sec:Unicode} % % The following subset of active Unicode characters are available ``out of the box'' using NFSS, \textsf{inputenc}, and \textsf{fontenc}: @@ -2785,7 +2801,7 @@ Running "make install" installs the files in the local TeX tree. % |\newunicodechar{ſ}{\textlongs}| % \end{quote} % -% Although\marginpar{\small\raggedleft\dbend} |\newunicodechar{ā}{\=a}| allows |\Name{Ghazāli}| to show \SkipIndex\Name{Ghaz\=ali}, one must be careful with control sequences like |\=a|. They fail when using \texttt{makeindex} and \texttt{gind.ist}. For example, the \textsf{ltxdoc} class, with \texttt{gind.ist}, turns the default ``actual'' character |@| into |=|. Using |\index{Gh{\=a}zali}| halts execution. Understandably, using |\index{Gh\=azali}| gives an ``azali'' entry sorted under ``Gh'' (thanks \Name[Dan]{Luecking}). This issue is not specific to \textsf{nameauth}. +% Using\marginpar{\small\raggedleft\dbend} |\newunicodechar{ā}{\=a}| allows |\Name{Ghazāli}| to show \SkipIndex\Name{Ghaz\=ali}, but control sequences like |\=a| fail when using \texttt{makeindex} and \texttt{gind.ist}. For example, the \textsf{ltxdoc} class, with \texttt{gind.ist}, turns the default ``actual'' character |@| into |=|. Using |\index{Gh{\=a}zali}| halts execution. Understandably, using |\index{Gh\=azali}| gives an ``azali'' entry sorted under ``Gh'' (thanks \Name[Dan]{Luecking}). This issue is not specific to \textsf{nameauth}. % % Such\marginpar{\small\raggedleft\dbend} issues with \texttt{gind.ist} are not the only concerns one must have about NFSS, \textsf{inputenc}, and \textsf{fontenc} when using Unicode. Although the manner in which glyphs are handled is quite powerful, it also is fragile. Any \TeX\ macro that partitions its argument without using delimiters can break Unicode under NFSS. Consider the following examples with |\def\foo#1#2#3\relax{<#1#2><#3>}|: % \begin{center}\setstretch{1.1} @@ -2812,7 +2828,7 @@ Running "make install" installs the files in the local TeX tree. % % Without digging into the details of font encoding and NFSS, we can say in simple terms that |æ| is ``two arguments wide.'' Any macro where this |#1#2| pair gets split into |#1| and |#2| will produce either \texttt{Unicode char \dots not set up for LaTeX} or \texttt{Argument of \textbackslash UTFviii@two@octets has an extra \}}. Again, this is not just specific to \textsf{nameauth}. % -% \cmd{\CapThis}\marginpar{\large\raggedleft\textsf{\bfseries 3.0}\strut\break\small\dbend} avoids these pitfalls by checking if the leading token of the argument to be capitalized is equivalent to the leading token of an active Unicode character. We chose \texttt{ß} as the test character somewhat at random. Page~\pageref{page:CapRoot} shows the test. Essentially, the following two expressions are equal under NFSS: +% \cmd{\CapThis}\marginpar{\large\raggedleft\textsf{\bfseries 3.0}\strut\break\small\dbend} avoids these pitfalls by checking if the leading token of the argument to be capitalized is equivalent to the leading token of an active Unicode character. We chose \texttt{ß} as the test character somewhat at random. Page~\pageref{page:CapSystem} shows the test. Essentially, the following two expressions are equal under NFSS: % \begin{quote}\small\setstretch{1.1} % \cmd{\@car}\meta{$test_1$}\cmd{\@nil}, where \meta{$test_1$} expands to \cmd{\IeC} \marg{$test_1$}\\ % \cmd{\@car}\meta{$test_2$}\cmd{\@nil}, where \meta{$test_2$} expands to \cmd{\IeC} \marg{$test_2$} @@ -2859,29 +2875,33 @@ Running "make install" installs the files in the local TeX tree. % \label{sec:engines} % % The\marginpar{\small\raggedleft\dbend} \textsf{nameauth} package tries to work with multiple languages and typesetting engines. The following preamble snippet illustrates how that can be done:\footnote{A similar version of this example is in \texttt{examples.tex}, collocated with this manual.} -% Please note that there have been changes to the \textsf{fontspec} package in 2016, so one should consult the relevant package documentation regarding the new encodings and what packages to include or not to include as a result. +% This example reflects changes to several packages since 2014 and may not address older documents and systems or all possible cases. Of course, the user must specify the main and alternate languages and any package options as the respective package documentation files indicate. % \begin{quote}\small\setstretch{1.1} +% |\ifdefined\Umathchar|\\ +% | \usepackage{fontspec}|\\ +% | \usepackage{polyglossia}|\\ +% |\else|\\ +% | \usepackage[utf8]{inputenc}|\\ +% | \usepackage[TS1,T1]{fontenc}|\\ +% | \usepackage{babel}|\\ +% |\fi|\\ +% |% Below is optional; use only if your dvi viewer|\\ +% |% crashes or becomes unresponsive with tikz.|\\ % |\usepackage{ifxetex}|\\ % |\usepackage{ifluatex}|\\ -% |\ifxetex%|\hfill |uses fontspec|\\ -% \hbox{\quad}|\usepackage{fontspec}%|\hfill | check package docs|\\ -% \hbox{\quad}|\defaultfontfeatures{Mapping=tex-text}|\\ -% \hbox{\quad}|\usepackage{xunicode}%|\hfill | check if outmoded|\\ -% \hbox{\quad}|\usepackage{xltxtra}%|\hfill | check if outmoded|\\ +% |\usepackage{ifpdf}|\\ +% |\ifxetex|\\ +% | \usepackage{tikz}|\\ % |\else|\\ -% \hbox{\quad}|\ifluatex%|\hfill | also uses fontspec|\\ -% \hbox{\quad}\hbox{\quad}|\usepackage{fontspec}%|\hfill | check package docs|\\ -% \hbox{\quad}\hbox{\quad}|\defaultfontfeatures{Ligatures=TeX}|\\ -% \hbox{\quad}|\else%|\hfill | traditional NFSS|\\ -% \hbox{\qquad}|\usepackage[utf8]{inputenc}|\\ -% \hbox{\qquad}|\usepackage[TS1,T1]{fontenc}|\\ -% \hbox{\quad}|\fi|\\ +% | \ifpdf|\\ +% | \usepackage{tikz}|\\ +% | \fi|\\ % |\fi| % \end{quote} % % This general arrangement works for this manual, which is tested with all of the \LaTeX\ engines above. This example is not meant to be the only possible way to check which engine you are using and how to set things up. % -% The following can be used in the text itself to allow for conditional processing that helps one to document work under multiple engines: +% The following can be used in the text itself to allow for conditional processing that helps one to document work under multiple engines. One must include the \textsf{ifxetex}, \textsf{ifluatex}, and \textsf{ifpdf} packages for it to work. % % \begin{quote}\small\setstretch{1.1} % |\ifxetex| \meta{xelatex text}|%|\\ @@ -2942,7 +2962,7 @@ Running "make install" installs the files in the local TeX tree. % |}| % \end{quote} % \renewcommand*\MainNameHook[1]{{#1}\IndexInactive\Name{foo}\AKA{bar}{baz}\IndexActive}% -% Calling,\marginpar{\large\raggedleft\textsf{\bfseries 2.4}\strut} \emph{e.g.}, |\Wash| produces \Wash, without foo, bar, or baz. \cmd{\Name} and \cmd{\AKA} expand to nothing. This prevents stack-overflows both in this case and if you called the naming macros as their own arguments. |\Name{foo\Name{bar}}| would produce ``foo'' in the text and ``foobar'' in the index. As you see, these cases are to be avoided. +% Calling,\marginpar{\large\raggedleft\textsf{\bfseries 2.4}\strut} \emph{e.g.}, |\Wash| produces \Wash, without foo, bar, or baz. \cmd{\Name} and \cmd{\AKA} expand to nothing. This prevents stack overflows both in this case and if you called the naming macros as their own arguments. |\Name{foo\Name{bar}}| would produce ``foo'' in the text and ``foobar'' in the index. As you see, these cases are to be avoided. % \let\MainNameHook\OldMainHook % \clearpage % @@ -2961,10 +2981,10 @@ Running "make install" installs the files in the local TeX tree. % % We assume that we will not be using the \texttt{alwaysformat} option, meaning that we only call this hook once for a first use of \cmd{\AKA}. We also use a different formatting for the naming macros on the one hand and \cmd{\AKA} on the other:\footnote{A similar version of this example is in \texttt{examples.tex}, collocated with this manual.} % \begin{quote}\small\setstretch{1.1} -% |\newif\ifNoTag%|\hfill|allows us to work around \ForgetName|\\ -% |\let\OldFormat\NamesFormat%|\hfill|save the format|\\ +% |\newif\ifNoTag|{\color{nared}|%|\hfill|allows us to work around \ForgetName|}\\ +% |\let\OldFormat\NamesFormat|{\color{nared}|%|\hfill|save the format|}\\ % |\let\OldFrontFormat\FrontNamesFormat|\\ -% |\makeatletter%|\hfill|access internals|\\ +% |\makeatletter|{\color{nared}|%|\hfill|access internals|}\\ % |\renewcommand*\NamesFormat[1]{\begingroup%|\\ % | \protected@edef\temp{\endgroup\textbf{#1}%|\\ % | \unless\ifNoTag|\\ @@ -3020,9 +3040,9 @@ Running "make install" installs the files in the local TeX tree. % % Now we begin with the first example, where both the name and the dates are in boldface because we use a naming macro: % \begin{quote}\small\setstretch{1.1} -% |\ForgetThis\Wash held office 1789--97. No tags here: \Wash.|\\ +% |\ForgetThis\Wash held office 1789--97. No tags: \Wash.|\\ % |First use, dates suppressed: \NoTagtrue\ForgetThis\Wash.|\\[1ex] -% \ForgetThis\Wash\ held office 1789--97. No tags here: \Wash. +% \ForgetThis\Wash\ held office 1789--97. No tags: \Wash. % First use, dates suppressed: \NoTagtrue\ForgetThis\Wash. % \end{quote} % @@ -3054,7 +3074,7 @@ Running "make install" installs the files in the local TeX tree. % \let\NamesFormat\OldFormat % \let\FrontNamesFormat\OldFrontFormat % -% See Section~\ref{sec:internal} and page~\pageref{page:parser} for the decision paths and the logic used by the package. Presently, writing hook macros is much simpler. +% See Section~\ref{sec:internal} and page~\pageref{page:parser} for the decision paths and the logic used by the package. Presently, writing hook macros should be much simpler than in earlier versions of this package. % % {\medskip\noindent\hbox{}\hfill\large Back to Section~\ref{sec:RefTables} \hfill\hbox{}} % \clearpage @@ -3093,7 +3113,7 @@ Running "make install" installs the files in the local TeX tree. % \begin{quote}\small\setstretch{1.1} % |\newcommand*\AltCaps[1]{%|\\ % | \if@nameauth@InHook|\\ -% | \if@nameauth@DoCaps\uppercase{#1}\else#1\fi|\\ +% | \if@nameauth@DoCaps\MakeUppercase{#1}\else#1\fi|\\ % | \else#1\fi|\\ % |}| % \end{quote} @@ -3145,10 +3165,10 @@ Running "make install" installs the files in the local TeX tree. % \end{center} % % \begin{itemize}\small -% \item Punctuation detection works: \LSDJR. Then we have \SDJR. -% \item \cmd{\DropAffix}\cmd{\LSDJR} gives \DropAffix\LSDJR. +% \item Punctuation detection works: \ForceName\LSDJR. Also \LSDJR. Then \ForceName\SDJR. Now \SDJR. (We used \cmd{\ForceName} for formatting.) +% \item \cmd{\ForceName}\cmd{\DropAffix}\cmd{\LSDJR} gives \ForceName\DropAffix\LSDJR. Otherwise, using just \cmd{\DropAffix}\cmd{\LSDJR} gives \DropAffix\LSDJR. % \item \cmd{\RevComma}\cmd{\LAdams} yields \RevComma\LAdams. All the reversing macros work. -% \item \cmd{\ForceName}\cmd{\ForceFN}\cmd{\SHAR} produces \ForceName\ForceFN\SHAR. If we add \cmd{\CapThis} we get \CapThis\ForceName\ForceFN\SHAR. The way that Continental resources treat certain affixes relates to similar issues in [\hyperlink{Mulvany}{Mulvany}, 168--73].\footnote{Handling non-Western names in Western sources can be a gray area. One ought take care to be culturally sensitive in these matters.} +% \item \cmd{\ForceName}\cmd{\ForceFN}\cmd{\SHAR} produces \ForceName\ForceFN\SHAR. \cmd{\ForceFN}\cmd{\SHAR} produces \ForceFN\SHAR. If we add \cmd{\CapThis} we get \CapThis\ForceName\ForceFN\SHAR\ and \CapThis\ForceFN\SHAR. The way that Continental resources treat certain affixes relates to similar issues in [\hyperlink{Mulvany}{Mulvany}, 168--73].\footnote{Handling non-Western names in Western sources can be a gray area. One ought take care to be culturally sensitive in these matters.} % \item One must include the extra control sequences in all the macro arguments that use these names. % \end{itemize} % @@ -3165,7 +3185,7 @@ Running "make install" installs the files in the local TeX tree. % % When\marginpar{\small\raggedleft\dbend} redesigning formatting hooks, you should use \cmd{\AltFormatActive} or the \texttt{altformat} option to enable alternate formatting and prevent \cmd{\CapThis} from breaking your formatting macros. % -% We recommend using the internal package flag \cmd{\@nameauth@DoAlt}, which activates alternate formatting, \cmd{\@nameauth@DoCaps}, which handles capitalization, and \cmd{\@nameauth@InHook}, which is true when the formatting hooks are called. See page~\pageref{page:hooks} and following for examples of how the ready-made formatting macros are designed. If you create your own macros, they will look similar:\footnote{A similar version of this example is in \texttt{examples.tex}, collocated with this manual.} +% We recommend using the internal package flag \cmd{\@nameauth@DoAlt}, which activates alternate formatting, \cmd{\@nameauth@DoCaps}, which handles capitalization, and \cmd{\@nameauth@InHook}, which is true when the formatting hooks are called. See page~\pageref{page:hooks} and following. If you create your own macros, they will look similar:\footnote{A similar version of this example is in \texttt{examples.tex}, collocated with this manual.} % \begin{quote}\small\setstretch{1.1} % |\makeatletter%|\\ % |\newcommand*\Fbox[1]{%|\\ @@ -3207,7 +3227,7 @@ Running "make install" installs the files in the local TeX tree. % Also, remember to restore the macro hooks if they should not persist for the entire document, or else you will get unwanted results. % % \begin{center}\bfseries Rolling Your Own: Old Style\end{center} -% The idea of ``old style'' conveys the meaning that these approaches have something of an independent design that goes beyond what the package offers. Since older \textsf{nameauth} versions had less integration of Continental formatting, we use this parlance. Here we start to use more of our own solutions for dealing with name formatting. We begin that journey by looking at \cmd{\NameParser}. +% ``Old style'' refers to the way hooks were designed before recent package changes. Sometimes one might want to achieve more customized results. We begin that journey by looking at \cmd{\NameParser}. % % \DescribeMacro{\NameParser} % This user-accessible parser\marginpar{\large\raggedleft\textsf{\bfseries 3.1}} (page~\pageref{page:parser}) builds a name from the internal macros \cmd{\FNN}, \cmd{\SNN}, \cmd{\rootb} and \cmd{\suffb}. Reversing and commas are still usable; capitalization depends on the context. The general form is: @@ -3226,8 +3246,8 @@ Running "make install" installs the files in the local TeX tree. % |\renewcommand*|\meta{Hook}|[1]{|\texttt{\dots}\cmd{\AltOn}\cmd{\NameParser}\texttt{\dots}|}| % \end{quote} % -% We have shown\marginpar{\small\raggedleft\dbend} already that you do not really need \cmd{\NameParser} to use these switching macros in the hooks. Yet the user-level parser does have some handy uses, especially as we go further toward designing custom macros. For example, we demonstrate an extreme case based on Section~\ref{sec:Hooksa} where we modify some internal flags to have \cmd{\NameParser} to produce different syntactic forms than the normal output (index entries suppressed):\footnote{A similar version of this example is in \texttt{examples.tex}, collocated with this manual.} -% \begin{quote}\IndexInactive\small\setstretch{1.1}\makeatletter +% We have shown\marginpar{\small\raggedleft\dbend} already that you do not really need \cmd{\NameParser} to use these switching macros in the hooks. Yet the user-level parser does have some handy uses, especially as we go further toward designing custom macros. For example, we demonstrate an extreme case based on Section~\ref{sec:Hooksa} where we modify some internal flags to have \cmd{\NameParser} to produce different syntactic forms than the normal output:\footnote{A similar version of this example is in \texttt{examples.tex}, collocated with this manual.} +% \begin{quote}\small\setstretch{1.1}\makeatletter % \renewcommand*\NamesFormat[1]{#1\unless\ifinner\marginpar{\small\raggedleft\@nameauth@FullNametrue\@nameauth@FirstNamefalse\@nameauth@EastFNfalse\NameParser}\fi} % \renewcommand*\MainNameHook[1]{\AltOff#1\unless\ifinner\marginpar{\small\raggedleft\@nameauth@FullNamefalse\@nameauth@FirstNamefalse\@nameauth@EastFNfalse\NameParser}\fi} % |\makeatletter|\\ @@ -3271,14 +3291,14 @@ Running "make install" installs the files in the local TeX tree. % \begin{itemize}\small % \item We do not use the internal package macros. % \item We best use \cmd{\NameParser} to generate the name in the hooks. It may be possible not to do so, but as we get more customized the user-level parser is a handy way to get reasonably predictable results. -% \item We still recommend using \cmd{\AltFormatActive} if you want to disable the normal effects of \cmd{\CapThis}. Otherwise redefine \cmd{\CapThis} (which is what we do below).\footnote{A similar version of this example is in \texttt{examples.tex}, collocated with this manual.} +% \item We still recommend using \cmd{\AltFormatActive} if you want to disable the normal effects of \cmd{\CapThis}. Otherwise redefine \cmd{\CapThis} (which is what we do below). % \end{itemize} % %\newif\ifFbox %\newif\ifFirstCap %\newif\ifInHook %\Fboxtrue -% We define three Boolean flags and set one of them true by default. The \texttt{\textbackslash ifFbox} flag takes over the internal function of \texttt{\textbackslash @nameauth@DoAlt}, which is enabled by \cmd{\AltFormatActive}. The \texttt{\textbackslash ifFirstCap} flag takes over the internal function of \texttt{\textbackslash @nameauth@DoCaps}, which is enabled by \cmd{\CapThis}. The \texttt{\textbackslash ifInHook} flag replaces the internal function of \texttt{\textbackslash @nameauth@InHook}, which is enabled by the internal format hook dispatcher. +% We define three Boolean flags and set one of them true by default. The \texttt{\textbackslash ifFbox} flag takes over the internal function of \texttt{\textbackslash @nameauth@DoAlt}, which is enabled by \cmd{\AltFormatActive}. The \texttt{\textbackslash ifFirstCap} flag takes over the internal function of \texttt{\textbackslash @nameauth@DoCaps}, which is enabled by \cmd{\CapThis}. The \texttt{\textbackslash ifInHook} flag replaces the internal function of \texttt{\textbackslash @nameauth@InHook}, which is enabled by the internal format hook dispatcher.\footnote{A similar version of this example is in \texttt{examples.tex}, collocated with this manual.} %\begin{quote}\small\setstretch{1.1} % |\newif\ifFbox|\\ % |\newif\ifFirstCap|\\ @@ -3295,14 +3315,14 @@ Running "make install" installs the files in the local TeX tree. %\end{quote} % %\renewcommand*\AltCaps[1]{\ifInHook -% \ifFirstCap\uppercase{#1}\else#1\fi +% \ifFirstCap\MakeUppercase{#1}\else#1\fi % \else % #1\fi} % Our new \cmd{\AltCaps} works like the built-in version, except it does not use the internal macros and flags: %\begin{quote}\small\setstretch{1.1} % |\renewcommand*\AltCaps[1]{%|\\ % | \ifInHook|\\ -% | \ifFirstCap\uppercase{#1}\else#1\fi|\\ +% | \ifFirstCap\MakeUppercase{#1}\else#1\fi|\\ % | \else|\\ % | #1%|\\ % | \fi|\\ @@ -3338,14 +3358,15 @@ Running "make install" installs the files in the local TeX tree. % | \global\FirstCapfalse\Fboxtrue%|\\ % |}| %\end{quote} +%\clearpage % -% We let the front-matter hooks be like the main-matter hooks to avoid spurious index entries. +% We avoid spurious index entries in the front matter by using the same hooks. %\begin{quote}\small\setstretch{1.1} % |\let\FrontNamesFormat\Namesformat|\\ % |\let\FrontNameHook\MainNameHook| %\end{quote} % -% Because we uses \cmd{\noexpand}, our ``old-style'' macros will index the name below under the same entry as the ``new-style'' macros. +% Because we use \cmd{\noexpand}, our ``old-style'' macros will index the name below under the same entry as the ``new-style'' macros. % \begin{center}\footnotesize % \begin{tabular}{llll}\toprule % First & Next & Long & Short \\\midrule @@ -3354,11 +3375,47 @@ Running "make install" installs the files in the local TeX tree. % \end{tabular} % \end{center} % -% The capitalized version |\CapThis\deSmet| is \CapThis\deSmet. This also works for a formatted use via \cmd{\ForceName}: \ForceName\CapThis\deSmet. +% The capitalized version |\CapThis\deSmet| is \CapThis\deSmet. This also works for a formatted use via \cmd{\ForceName}: \ForceName\CapThis\deSmet.\medskip +% +% We can reuse\marginpar{\raggedleft\dbend} new-style names with old-style macros when needed. We show this here in abbreviated fashion. We keep the Boolean flags \texttt{\textbackslash ifFirstCap} and \texttt{\textbackslash ifInHook} from earlier. We also keep the redefined \cmd{\AltCaps}, \cmd{\CapThis}, and \cmd{\NamesFormat}. One might have to make modifications as needed.\footnote{A fuller version of this example is in \texttt{examples.tex}, collocated with this manual.} +%\newif\ifCaps +%\Capstrue +%\renewcommand*\textSC[1]{\ifCaps\textsc{#1}\else#1\fi} +%\renewcommand*\MainNameHook[1] +%{\Capsfalse\InHooktrue\NameParser\InHookfalse\global\FirstCapfalse\Capstrue} +%\let\FrontNameHook\MainNameHook +%\begin{quote}\small\setstretch{1.1} +% |\newif\ifCaps|\\ +% |\Capstrue|\\ +% |\renewcommand*\textSC[1]{%|\\ +% | \ifCaps\textsc{#1}\else#1\fi|\\ +% |}|\\ +% |\renewcommand*\MainNameHook[1]|\\ +% |{%|\\ +% | \Capsfalse\InHooktrue\NameParser\InHookfalse%|\\ +% | \global\FirstCapfalse\Capstrue%|\\ +% |}|\\ +% |\let\FrontNameHook\MainNameHook| +%\end{quote} % -% Be sure not to use names with alternate formatting outside of those sections, or else you will get spurious index entries. We now resume normal formatting with \cmd{\AltFormatInactive}.% \AltFormatInactive\endgroup +% The names below have the same declarations and index entries as they did above. They look and work the same but use different macros. +% \begin{center} +% \small\noindent\begin{tabular}{llll}\toprule +% First & Next & Long & Short \\\midrule +% \ForgetThis\Adams & \Adams & \LAdams & \SAdams\\ +% \ForgetThis\SDJR & \SDJR & \LSDJR & \SSDJR\\ +% \ForgetThis\HAR & \HAR & \LHAR & \SHAR\\ +% \ForgetThis\Mencius & \Mencius & \LMencius & \SMencius\\\bottomrule +% \end{tabular} +% \end{center} +% +% As earlier, punctuation detection works: \ForceName\LSDJR. Also \LSDJR. Then \ForceName\SDJR. Now \SDJR. \cmd{\ForceName}\cmd{\DropAffix}\cmd{\LSDJR} gives \ForceName\DropAffix\LSDJR. \cmd{\DropAffix}\cmd{\LSDJR} gives \DropAffix\LSDJR. \cmd{\RevComma}\cmd{\LAdams} yields \RevComma\LAdams. \cmd{\ForceName}\cmd{\ForceFN}\cmd{\SHAR} produces \ForceName\ForceFN\SHAR. \cmd{\ForceFN}\cmd{\SHAR} produces \ForceFN\SHAR. If we add \cmd{\CapThis} we get \CapThis\ForceName\ForceFN\SHAR\ and \CapThis\ForceFN\SHAR. +% +% Use names with alternate formatting only when it is active to avoid spurious index entries. We resume normal formatting with \cmd{\AltFormatInactive}. +% \AltFormatInactive\endgroup % % {\medskip\noindent\hbox{}\hfill\large Back to Section~\ref{sec:RefTables} \hfill\hbox{}} +% \clearpage % % \subsubsection{Full Redesign} % \label{sec:NewEngine} @@ -3404,6 +3461,8 @@ Running "make install" installs the files in the local TeX tree. % Like\marginpar{\small\raggedleft\cmd{\global}} \cmd{\NamesFormat}, the other hook macros, and many of the state-changing and triggering macros in this package, these naming macros can be redefined or used locally within a scope without making global changes to the document unless you specifically use \cmd{\global}. % % Here we show that \cmd{\NameauthName}, \cmd{\NameauthLName}, and \cmd{\NameauthFName} have reverted back to their original forms. Now |\Name[No Particular]{Name}| and \cmd{\Silly} produce {\IndexInactive\Name[No Particular]{Name} and \Silly.} +% \vfil +% \begin{center}\large \emph{This space intentionally left blank.}\end{center} % \clearpage % % \subsection{Technical Notes} @@ -3475,11 +3534,11 @@ Running "make install" installs the files in the local TeX tree. % \item Using \cmd{\ExcludeName} with cross-references. Nothing will happen. % \item Using \cmd{\ExcludeName} to exclude a name that has already been excluded. Likewise, it will do nothing. % \end{itemize} -% \clearpage % % \StopEventually{^^A -% \clearpage\PrintChanges -% \clearpage\PrintIndex +% \clearpage +% \newgeometry{textwidth=147mm,textheight=237mm,right=25mm} +% \PrintChanges\clearpage\PrintIndex % } % % \section{Implementation} @@ -3706,7 +3765,8 @@ Running "make install" installs the files in the local TeX tree. \DeclareOption{boldface}{\renewcommand*\NamesFormat{\bfseries}} \DeclareOption{noformat}{\renewcommand*\NamesFormat{}} \DeclareOption{verbose}{\@nameauth@Verbosetrue} -\DeclareOption{altformat}{\@nameauth@AltFormattrue\@nameauth@DoAlttrue} +\DeclareOption{altformat}{% + \@nameauth@AltFormattrue\@nameauth@DoAlttrue} \ExecuteOptions% {nocomma,mainmatter,index,pretag,% normalcaps,notreversed,noformat} @@ -3734,39 +3794,42 @@ Running "make install" installs the files in the local TeX tree. {\expandafter\zap@space\detokenize{#1} \@empty} % \end{macrocode} % \end{macro}\medskip +% \clearpage % % \noindent{\large\bfseries Parsing: Root and Suffix} % \begin{macro}{\@nameauth@Root} % \changes{1.4}{2012/07/24}{More robust} % The following two macros return everything before a comma in \meta{SNN}. % \begin{macrocode} -\newcommand*\@nameauth@Root[1]{\@nameauth@TrimRoot#1,\\} +\newcommand*\@nameauth@Root[1]{\@nameauth@@Root#1,\\} % \end{macrocode} % \end{macro} % -% \begin{macro}{\@nameauth@TrimRoot} -% \changes{0.9}{2012/02/10}{Expandable} +% \begin{macro}{\@nameauth@@Root} +% \changes{0.9}{2012/02/10}{Expands} % \changes{2.0}{2015/11/11}{Trim spaces} % \changes{3.0}{2016/10/26}{Redesigned} +% \changes{3.2}{2017/03/22}{Renamed} % Throw out the comma and suffix, return the radix. % \begin{macrocode} -\def\@nameauth@TrimRoot#1,#2\\{\trim@spaces{#1}} +\def\@nameauth@@Root#1,#2\\{\trim@spaces{#1}} % \end{macrocode} % \end{macro} % -% \begin{macro}{\@nameauth@TagRoot} +% \begin{macro}{\@nameauth@TrimTag} % \changes{3.0}{2016/10/26}{Added} +% \changes{3.2}{2017/03/22}{Renamed} % The following two macros return everything before a vertical bar (\verb+|+) in an index tag. % \begin{macrocode} -\newcommand*\@nameauth@TagRoot[1]{\@nameauth@TrimTag#1|\\} +\newcommand*\@nameauth@TrimTag[1]{\@nameauth@@TrimTag#1|\\} % \end{macrocode} % \end{macro} % -% \begin{macro}{\@nameauth@TrimTag} +% \begin{macro}{\@nameauth@@TrimTag} % \changes{3.0}{2016/10/26}{Added} % Throw out the bar and suffix, return the radix. % \begin{macrocode} -\def\@nameauth@TrimTag#1|#2\\{#1} +\def\@nameauth@@TrimTag#1|#2\\{#1} % \end{macrocode} % \end{macro} % @@ -3774,30 +3837,65 @@ Running "make install" installs the files in the local TeX tree. % \changes{0.9}{2012/02/10}{Added} % The following two macros parse \meta{SNN} into a radix and a comma-delimited suffix, returning only the suffix after a comma in the argument, or nothing. % \begin{macrocode} -\newcommand*\@nameauth@Suffix[1]{\@nameauth@TrimSuffix#1,,\\} +\newcommand*\@nameauth@Suffix[1]{\@nameauth@@Suffix#1,,\\} % \end{macrocode} % \end{macro} % -% \begin{macro}{\@nameauth@TrimSuffix} +% \begin{macro}{\@nameauth@@Suffix} % \changes{0.9}{2012/02/10}{Added} % \changes{1.5}{2013/02/22}{Trim spaces} % \changes{3.0}{2016/10/26}{New test} -% Throw out the radix; return the suffix with no leading spaces. +% \changes{3.2}{2017/03/22}{Renamed} +% Throw out the radix; return the suffix with no leading spaces. We use this when printing the suffix. % \begin{macrocode} -\def\@nameauth@TrimSuffix#1,#2,#3\\% +\def\@nameauth@@Suffix#1,#2,#3\\% {\ifx\\#2\\\@empty\else\trim@spaces{#2}\fi} % \end{macrocode} % \end{macro} % +% \begin{macro}{\@nameauth@GetSuff} +% \changes{3.2}{2017/03/22}{Added} +% The following two macros just grab the suffix for testing if the first non-space character is an active character from \textsf{inputenc}. +% \begin{macrocode} +\newcommand*\@nameauth@GetSuff[1]{\@nameauth@@GetSuff#1,,\\} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@nameauth@@GetSuff} +% \changes{3.2}{2017/03/22}{Added} +% Throw out the radix; return the suffix. +% \begin{macrocode} +\def\@nameauth@@GetSuff#1,#2,#3\\{#2} +% \end{macrocode} +% \end{macro} +% % \noindent{\large\bfseries Parsing: Capitalization} +% \begin{macro}{\@nameauth@TestToks} +% \phantomsection\label{page:CapSystem} +% \changes{3.2}{2017/03/22}{Added} +% Test if the leading token is the same as the leading token of an active Unicode character, using an \emph{Esszett} (\texttt{ß}) as the control. We only run this macro if we are in the \textsf{inputenc} regime. +% \begin{macrocode} +\newcommand*\@nameauth@TestToks[1] +{% + \toks@\expandafter{\@car#1\@nil}% + \edef\one{\the\toks@}% + \toks@\expandafter{\@carß\@nil}% + \edef\two{\the\toks@}% + \ifx\one\two\@nameauth@UTFtrue\else\@nameauth@UTFfalse\fi +} +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\@nameauth@UTFtest} -% \phantomsection\label{page:CapRoot} +% \phantomsection\label{page:CapSystem} % \changes{3.0}{2016/10/26}{Added} -% \changes{3.1}{2017/01/13}{The override bypasses the test} -% Before we attempt at capitalizing anything, we need to determine if we are running under \texttt{xelatex} or \texttt{lualatex} by testing for \cmd{\Umathchar}. Then we see if we are in the UTF-8 regime of NFSS. Then we can test if the leading token of our text is the same as the leading token of an active Unicode character. We run this test when we enter \cmd{\@nameauth@Name} and \cmd{\AKA}. +% \changes{3.1}{2017/01/13}{Override bypasses test} +% \changes{3.2}{2017/03/22}{Non-suffix only} +% Before we attempt at capitalizing anything, we need to determine if we are running under \texttt{xelatex} or \texttt{lualatex} by testing for \cmd{\Umathchar}. Then we see if \textsf{inputenc} is loaded. We set up the comparison and pass off to \cmd{@nameauth@TestToks}. % \begin{macrocode} \newcommand*\@nameauth@UTFtest[1] {% + \def\testarg{#1}% \ifdefined\Umathchar \@nameauth@UTFfalse% \else @@ -3805,11 +3903,7 @@ Running "make install" installs the files in the local TeX tree. \if@nameauth@Accent \@nameauth@UTFtrue\@nameauth@Accentfalse% \else - \toks@\expandafter{\@car#1\@nil}% - \edef\one{\the\toks@}% - \toks@\expandafter{\@carß\@nil}% - \edef\two{\the\toks@}% - \ifx\one\two\@nameauth@UTFtrue\else\@nameauth@UTFfalse\fi + \expandafter\@nameauth@TestToks\expandafter{\testarg}% \fi \else \@nameauth@UTFfalse% @@ -3819,36 +3913,69 @@ Running "make install" installs the files in the local TeX tree. % \end{macrocode} % \end{macro} % -% \begin{macro}{\@nameauth@Cap} -% \changes{3.1}{2017/01/13}{Added; old caps obsolete} -% Use the NFSS Unicode version if the test is true, else use the regular version. +% \begin{macro}{\@nameauth@UTFtestS} +% \changes{3.2}{2017/03/22}{Added} +% This test is like the one above, but a special case when we have a suffix. We have to do a bit more in the way of expansion to get the comparison to work properly. Moreover, we only use this when the regular suffix macro is not \cmd{\@empty}. % \begin{macrocode} -\newcommand*\@nameauth@Cap[1] +\newcommand*\@nameauth@UTFtestS[1] {% - \if@nameauth@UTF \@nameauth@Ciii#1\\% - \else \@nameauth@Cii#1\\% + \let\ex\expandafter% + \ex\def\ex\testarg\ex{\@nameauth@GetSuff{#1}}% + \ex\toks@\ex\ex\ex{\testarg}% + \ex\def\ex\test@rg\ex{\the\toks@}% + \ifdefined\Umathchar + \@nameauth@UTFfalse% + \else + \ifdefined\UTFviii@two@octets + \if@nameauth@Accent + \@nameauth@UTFtrue\@nameauth@Accentfalse% + \else + \expandafter\@nameauth@TestToks\expandafter{\test@rg}% + \fi + \else + \@nameauth@UTFfalse% + \fi \fi } % \end{macrocode} % \end{macro} % -% \begin{macro}{\@nameauth@Cii} +% \begin{macro}{\@nameauth@Cap} +% \changes{3.1}{2017/01/13}{Added; old caps gone} +% \changes{3.2}{2017/03/22}{Non-UTF} +% The following two macros cap the first letter of the argument. +% \begin{macrocode} +\newcommand*\@nameauth@Cap[1]{\@nameauth@C@p#1\\} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@nameauth@C@p} % \changes{3.1}{2017/01/13}{Added} -% Cap the first letter of the argument. +% \changes{3.2}{2017/03/22}{Renamed} +% Helper macro for the one above. % \begin{macrocode} -\def\@nameauth@Cii#1#2\\% - {\expandafter\trim@spaces\expandafter{\uppercase{#1}#2}} +\def\@nameauth@C@p#1#2\\% + {\expandafter\trim@spaces\expandafter{\MakeUppercase{#1}#2}} % \end{macrocode} % \end{macro} % -% \begin{macro}{\@nameauth@Ciii} +% \begin{macro}{\@nameauth@CapUTF} +% \changes{3.2}{2017/03/22}{Added} +% The following two macros cap the first active Unicode letter under \textsf{inputenc}. +% \begin{macrocode} +\newcommand*\@nameauth@CapUTF[1]{\@nameauth@C@pUTF#1\\} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@nameauth@C@pUTF} % \changes{3.1}{2017/01/13}{Added} -% Cap the first letter of the argument. This is called in \texttt{pdflatex} under \textsf{inputenc}/Unicode. +% Helper macro for the one above. % \begin{macrocode} -\def\@nameauth@Ciii#1#2#3\\% - {\expandafter\trim@spaces\expandafter{\uppercase{#1#2}#3}} +\def\@nameauth@C@pUTF#1#2#3\\% + {\expandafter\trim@spaces\expandafter{\MakeUppercase{#1#2}#3}} % \end{macrocode} % \end{macro} +% \clearpage % % \noindent{\large\bfseries Parsing: Punctuation Detection} % \begin{macro}{\@nameauth@TestDot} @@ -3909,20 +4036,19 @@ Running "make install" installs the files in the local TeX tree. } % \end{macrocode} % \end{macro} -% \clearpage % % \noindent{\large\bfseries Core Name Engine} % % \begin{macro}{\@nameauth@Name} -% \changes{0.85}{2012/02/05}{Comma suppression} +% \changes{0.85}{2012/02/05}{Hide commas} % \changes{1.5}{2013/02/22}{Reversing/caps} % \changes{2.0}{2015/11/11}{Trim spaces; redesign tagging} -% \changes{2.1}{2015/11/24}{Isolate Unicode issues} +% \changes{2.1}{2015/11/24}{Fix Unicode} % \changes{2.3}{2016/01/05}{Now internal} -% \changes{2.4}{2016/03/15}{Add token regs for hooks} -% \changes{2.41}{2016/03/17}{No local \cmd{\newtoks}} -% \changes{2.5}{2016/04/06}{Hooks query internal values} -% \changes{2.6}{2016/09/19}{Improve indexing} +% \changes{2.4}{2016/03/15}{Set token regs} +% \changes{2.41}{2016/03/17}{Fix token regs} +% \changes{2.5}{2016/04/06}{Current parsing approach} +% \changes{2.6}{2016/09/19}{Better indexing} % \changes{3.0}{2016/10/26}{Redesigned} % \changes{3.1}{2017/01/13}{Enhanced workflow control} % Here is the heart of the package. \Name*[Marc van]{Dongen} provided the original basic structure. Parsing, indexing, and formatting are more discrete than in earlier versions. @@ -4001,6 +4127,7 @@ Running "make install" installs the files in the local TeX tree. % \begin{macro}{\@nameauth@Parse} % \changes{3.0}{2016/10/26}{Added} % \changes{3.1}{2017/01/13}{Enhanced, integrated caps} +% \changes{3.2}{2017/03/22}{Fix alt. format and Western affixes} % Parse and print a name in the text. The final required argument is a ``mode designator'' that can be ``!MN'' (main name); ``!NF'' (was ``non-formatted,'' now ``name in front matter''); and ``!PN'' (pseudonym/cross-reference). Both \cmd{\@nameauth@Name} and \cmd{\AKA} call this parser. % \begin{macrocode} \newcommandx*\@nameauth@Parse[4][1=\@empty, 3=\@empty] @@ -4036,37 +4163,71 @@ Running "make install" installs the files in the local TeX tree. % Implement capitalization on demand in the body text if not in Continental mode. % \begin{macrocode} \if@nameauth@DoCaps + \let\carga\arga% + \let\crootb\rootb% \let\csuffb\suffb% \let\cargc\argc% \unless\if@nameauth@AltFormat % \end{macrocode} +% We test the first optarg for active Unicode characters. Then we capitalize the first letter. +% \begin{macrocode} + \unless\ifx\arga\@empty + \def\test{#1}% + \ex\@nameauth@UTFtest\ex{\test}% + \if@nameauth@UTF + \ex\def\ex\carga\ex{\ex\@nameauth@CapUTF\ex{\test}}% + \else + \ex\def\ex\carga\ex{\ex\@nameauth@Cap\ex{\test}}% + \fi + \fi +% \end{macrocode} % We test the root surname for active Unicode characters. Then we capitalize the first letter. % \begin{macrocode} - \ex\@nameauth@UTFtest\ex{\rootb}% - \edef\crootb{\noexpand\@nameauth@Cap{\rootb}}% + \def\test{#2}% + \ex\@nameauth@UTFtest\ex{\test}% + \if@nameauth@UTF + \ex\def\ex\crootb\ex{\ex\@nameauth@CapUTF\ex{\rootb}}% + \else + \ex\def\ex\crootb\ex{\ex\@nameauth@Cap\ex{\rootb}}% + \fi % \end{macrocode} % We test the suffix for active Unicode characters. Then we capitalize the first letter. % \begin{macrocode} \unless\ifx\suffb\@empty - \ex\@nameauth@UTFtest\ex{\suffb}% - \edef\csuffb{\noexpand\@nameauth@Cap{\suffb}}% + \def\test{#2}% + \ex\@nameauth@UTFtestS\ex{\test}% + \protected@edef\test{\@nameauth@GetSuff{#2}}% + \if@nameauth@UTF + \protected@edef\test{\@nameauth@Suffix{#2}}% + \ex\def\ex\csuffb\ex{\ex\@nameauth@CapUTF\ex{\test}}% + \else + \edef\test{\@nameauth@Suffix{#2}}% + \ex\def\ex\csuffb\ex{\ex\@nameauth@Cap\ex{\test}}% + \fi \fi % \end{macrocode} % We test the final optarg for active Unicode characters. Then we capitalize the first letter. % \begin{macrocode} \unless\ifx\argc\@empty - \ex\@nameauth@UTFtest\ex{\argc}% - \edef\cargc{\noexpand\@nameauth@Cap{\argc}}% + \def\test{#3}% + \ex\@nameauth@UTFtest\ex{\test}% + \if@nameauth@UTF + \ex\def\ex\cargc\ex{\ex\@nameauth@CapUTF\ex{\test}}% + \else + \ex\def\ex\cargc\ex{\ex\@nameauth@Cap\ex{\test}}% + \fi \fi - \let\rootb\crootb% \fi - \else + \let\arga\carga% + \let\rootb\crootb% + \let\suffb\csuffb% + \let\argc\cargc% + \fi % \end{macrocode} % We capitalize the entire surname when desired; different from above. % \begin{macrocode} - \if@nameauth@AllThis - \protected@edef\rootb{\uppercase{\@nameauth@Root{#2}}}% - \fi + \if@nameauth@AllThis + \protected@edef\rootb{\MakeUppercase{\@nameauth@Root{#2}}}% \fi % \end{macrocode} % Use non-breaking spaces and commas as desired. @@ -4099,9 +4260,6 @@ Running "make install" installs the files in the local TeX tree. % When \cmd{\arga}, \cmd{\argc}, and \cmd{\suffb} are empty, we have a mononym. When \cmd{\suffb} is not empty, we have a native Eastern name or non-Western name. % \begin{macrocode} \let\FNN\suffb% - \unless\ifx\suffb\@empty - \if@nameauth@DoCaps\let\FNN\csuffb\fi - \fi \let\SNN\rootb% \@nameauth@NonWest{\csb#4}% \else @@ -4109,11 +4267,11 @@ Running "make install" installs the files in the local TeX tree. % When \cmd{\arga} and \cmd{\suffb} are empty, but \cmd{\argc} is not, we have the older syntax. When \cmd{\arga} is empty, but \cmd{\argc} and \cmd{\suffb} are not, we have alternate names for non-Western names. % \begin{macrocode} \ifx\suffb\@empty - \if@nameauth@DoCaps\let\FNN\cargc\else\let\FNN\argc\fi + \let\FNN\argc% \let\SNN\rootb% \@nameauth@NonWest{\csbc#4}% \else - \if@nameauth@DoCaps\let\FNN\cargc\else\let\FNN\argc\fi + \let\FNN\argc% \let\SNN\rootb% \@nameauth@NonWest{\csb#4}% \fi @@ -4128,7 +4286,7 @@ Running "make install" installs the files in the local TeX tree. \let\FNN\argc% \fi \unless\ifx\suffb\@empty - \protected@edef\SNN{\rootb\Space\suffb}% + \def\SNN{\rootb\Space\suffb}% \if@nameauth@ShortSNN\let\SNN\rootb\fi \fi \@nameauth@West{\csab#4}% @@ -4255,11 +4413,9 @@ Running "make install" installs the files in the local TeX tree. % % \noindent{\large\bfseries Format Hook Dispatcher} % \begin{macro}{\@nameauth@Hook} -% \changes{0.94}{2012/02/15}{Particle caps} -% \changes{0.95}{2012/02/17}{Works with \textsf{microtype}} -% \changes{2.4}{2016/03/15}{Add hooks} +% \changes{2.4}{2016/03/15}{Current form} % \changes{2.5}{2016/04/06}{Improve hooks} -% \changes{3.0}{2016/10/26}{Better punctuation detection} +% \changes{3.0}{2016/10/26}{Fix punct. detection} % Flags help the dispatcher invoke the correct formatting hooks. The flags control which hook is called (first/subsequent use, name type). The first set of tests handles formatting within \cmd{\AKA}. The second set of tests handles regular name formatting. % \begin{macrocode} \newcommand*\@nameauth@Hook[1] @@ -4325,7 +4481,7 @@ Running "make install" installs the files in the local TeX tree. \let\ex\expandafter% \ifcsname\cseq!TAG\endcsname \protected@edef\Tag{\csname#1!TAG\endcsname}% - \ex\def\ex\ShortTag\ex{\ex\@nameauth@TagRoot\ex{\Tag}}% + \ex\def\ex\ShortTag\ex{\ex\@nameauth@TrimTag\ex{\Tag}}% \fi \if@nameauth@DoIndex \ifcsname\cseq!TAG\endcsname @@ -4467,7 +4623,6 @@ Running "make install" installs the files in the local TeX tree. {\@nameauth@RevAllCommatrue} % \end{macrocode} % \end{macro} -% \clearpage % % \noindent{\large\bfseries Alternate Syntactic Formatting} % \phantomsection\label{page:hooks} @@ -4534,7 +4689,7 @@ Running "make install" installs the files in the local TeX tree. % \begin{macrocode} \newcommand*\AltCaps[1]{% \if@nameauth@InHook - \if@nameauth@DoCaps\uppercase{#1}\else#1\fi + \if@nameauth@DoCaps\MakeUppercase{#1}\else#1\fi \else#1% \fi } @@ -4555,7 +4710,7 @@ Running "make install" installs the files in the local TeX tree. % Alternate formatting macro: uppercase when active. % \begin{macrocode} \newcommand*\textUC[1]{% - \if@nameauth@DoAlt\uppercase{#1}\else#1\fi} + \if@nameauth@DoAlt\MakeUppercase{#1}\else#1\fi} % \end{macrocode} % \end{macro} % @@ -4661,7 +4816,7 @@ Running "make install" installs the files in the local TeX tree. % \noindent{\large\bfseries Name Occurrence Tweaks} % \begin{macro}{\LocalNames} % \changes{2.3}{2016/01/05}{Added} -% \changes{2.4}{2016/03/15}{Ensured to be global} +% \changes{2.4}{2016/03/15}{Ensure global} % \cmd{\LocalNames} sets |@nameauth@LocalNames| true so \cmd{\ForgetName} and \cmd{\SubvertName} do not affect both formatted and unformatted naming systems. % \begin{macrocode} \newcommand*\LocalNames{\global\@nameauth@LocalNamestrue} @@ -4670,8 +4825,8 @@ Running "make install" installs the files in the local TeX tree. % % \begin{macro}{\GlobalNames} % \changes{2.3}{2016/01/05}{Added} -% \changes{2.4}{2016/03/15}{Ensured to be global} -% \cmd{\GlobalNames} sets |@nameauth@LocalNames| false, restoring \cmd{\ForgetName} and \cmd{\SubvertName} to the default behavior. +% \changes{2.4}{2016/03/15}{Ensure global} +% \cmd{\GlobalNames} sets |@nameauth@LocalNames| false. This restores the default behavior of \cmd{\ForgetName} and \cmd{\SubvertName}. % \begin{macrocode} \newcommand*\GlobalNames{\global\@nameauth@LocalNamesfalse} % \end{macrocode} @@ -4733,6 +4888,7 @@ Running "make install" installs the files in the local TeX tree. % \changes{3.0}{2016/10/26}{Added} % \changes{3.03}{2016/11/01}{First name only with ``short'' macros} % \changes{3.1}{2017/01/13}{Older syntax fixed; NBSP added} +% \changes{3.2}{2017/03/22}{Fix alt. format and Western affixes} % Generate a name form based on the current state of the \textsf{nameauth} macros in the locked path. Available for use only in the hook macros. % \begin{macrocode} \newcommand*\NameParser @@ -4750,7 +4906,7 @@ Running "make install" installs the files in the local TeX tree. \fi \ifx\suffb\@empty % \end{macrocode} -% mononym +% Mononym case % \begin{macrocode} \ifx\FNN\@empty \SNN% @@ -4808,7 +4964,7 @@ Running "make install" installs the files in the local TeX tree. \let\FNN\argc% \fi \unless\ifx\suffb\@empty - \protected@edef\SNN{\rootb\Space\suffb}% + \def\SNN{\rootb\Space\suffb}% \if@nameauth@ShortSNN\let\SNN\rootb\fi% \fi \if@nameauth@FullName @@ -4825,7 +4981,7 @@ Running "make install" installs the files in the local TeX tree. \if@nameauth@FirstName \FNN% \else - \protected@edef\SNN{\rootb}% + \let\SNN\rootb% \SNN% \fi \fi @@ -4873,10 +5029,10 @@ Running "make install" installs the files in the local TeX tree. % % \noindent{\large\bfseries Index Operations} % \begin{macro}{\IndexName} -% \changes{0.75}{2012/01/19}{Current arguments} -% \changes{0.85}{2012/02/05}{Comma suppression} -% \changes{1.26}{2012/04/24}{Fix name suffix sorting} -% \changes{2.0}{2015/11/11}{Trim spaces; redesign tagging} +% \changes{0.75}{2012/01/19}{Has current args} +% \changes{0.85}{2012/02/05}{Hide commas} +% \changes{1.26}{2012/04/24}{Affixes now correct} +% \changes{2.0}{2015/11/11}{Fix spaces, tagging} % \changes{2.6}{2016/09/19}{Fix commas} % \changes{3.0}{2016/10/26}{Redesigned} % \changes{3.1}{2017/01/13}{Better tests} @@ -5094,7 +5250,7 @@ Running "make install" installs the files in the local TeX tree. % % \begin{macro}{\ExcludeName} % \changes{0.94}{2012/02/15}{Added} -% \changes{2.3}{2016/01/05}{Make special xref type} +% \changes{2.3}{2016/01/05}{New xref test} % \changes{3.0}{2016/10/26}{Redesigned} % This macro prevents a name from being indexed. % \begin{macrocode} @@ -5530,6 +5686,7 @@ Running "make install" installs the files in the local TeX tree. } % \end{macrocode} % \end{macro} +% \clearpage % % \noindent{\large\bfseries Name Decisions} % \begin{macro}{\IfMainName} @@ -5600,7 +5757,7 @@ Running "make install" installs the files in the local TeX tree. % % \begin{macro}{\IfAKA} % \changes{2.3}{2016/01/05}{Added} -% \changes{2.4}{2016/03/15}{New exclusion test} +% \changes{2.4}{2016/03/15}{Test for excluded} % \changes{3.0}{2016/10/26}{Redesigned} % This macro expands one path if a cross-reference exists, another if it does not exist, and a third if it is excluded. % \begin{macrocode} @@ -5647,7 +5804,7 @@ Running "make install" installs the files in the local TeX tree. % % \noindent{\large\bfseries Changing Name Decisions} % \begin{macro}{\ForgetName} -% \changes{0.75}{2012/01/19}{New argument added} +% \changes{0.75}{2012/01/19}{Add new argument} % \changes{1.9}{2015/07/09}{Ensure global undef} % \changes{2.3}{2016/01/05}{Global or local} % This undefines a control sequence to force a ``first use.'' @@ -5662,6 +5819,7 @@ Running "make install" installs the files in the local TeX tree. \def\csab{\@nameauth@Clean{#1!#2}}% \@nameauth@Error{#2}{macro \string\ForgetName}% % \end{macrocode} +% \clearpage\noindent % Now we parse the arguments, undefining the control sequences either by current name type (via |@nameauth@MainFormat|) or completely (toggled by |@nameauth@LocalNames|). % \begin{macrocode} \ifx\arga\@empty @@ -5716,6 +5874,7 @@ Running "make install" installs the files in the local TeX tree. } % \end{macrocode} % \end{macro} +% \clearpage % % \begin{macro}{\SubvertName} % \changes{0.9}{2012/02/10}{Added} @@ -5793,14 +5952,13 @@ Running "make install" installs the files in the local TeX tree. % % \noindent{\large\bfseries Alternate Names} % \begin{macro}{\AKA} -% \changes{0.85}{2012/02/05}{Comma suppression} +% \changes{0.85}{2012/02/05}{Hide commas} % \changes{1.26}{2012/04/24}{Fix name suffixes} % \changes{1.5}{2013/02/22}{Reversing and caps} % \changes{2.0}{2015/11/11}{Trim spaces; fix tagging} -% \changes{2.1}{2015/11/24}{Fix Unicode issues} +% \changes{2.1}{2015/11/24}{Fix Unicode} % \changes{2.3}{2016/01/05}{Expand starred mode} -% \changes{2.4}{2016/03/15}{Fix formatting; add token regs} -% \changes{2.41}{2016/03/17}{No local \cmd{\newtoks}} +% \changes{2.41}{2016/03/17}{Fix token regs} % \changes{2.6}{2016/09/19}{Fix index commas} % \changes{3.0}{2016/10/26}{Redesigned} % \changes{3.1}{2017/01/13}{Can skip index} @@ -5912,7 +6070,7 @@ Running "make install" installs the files in the local TeX tree. % \begin{environment}{nameauth} % \changes{1.6}{2013/03/10}{Environment added} % \changes{1.9}{2015/07/09}{Bugfix} -% \changes{2.0}{2015/11/11}{Redesigned argument handling} +% \changes{2.0}{2015/11/11}{Better arg handling} % \changes{2.11}{2015/11/29}{Bugfix} % \changes{2.41}{2016/03/17}{No local \cmd{\newtoks}} % The \texttt{nameauth} environment creares macro shorthands. First we define a control sequence \cmd{\<} that takes four parameters, delimited by three ampersands and \texttt{>}. diff --git a/Master/texmf-dist/source/latex/nameauth/nameauth.ins b/Master/texmf-dist/source/latex/nameauth/nameauth.ins index 98f2106819e..4ad059ffcb3 100644 --- a/Master/texmf-dist/source/latex/nameauth/nameauth.ins +++ b/Master/texmf-dist/source/latex/nameauth/nameauth.ins @@ -7,7 +7,7 @@ %% nameauth.dtx (with options: `install') %% %% --------:| ---------------------------------------------------------------- -%% nameauth:| Name authority management for consistency in text and index +%% nameauth:| Name authority mechanism for consistency in text and index %% Author:| Charles P. Schaum %% E-mail:| charles dot schaum at comcast dot net %% License:| Released under the LaTeX Project Public License 1.3c or later @@ -19,7 +19,7 @@ \preamble --------:| ---------------------------------------------------------------- -nameauth:| Name authority management for consistency in text and index +nameauth:| Name authority mechanism for consistency in text and index Author:| Charles P. Schaum E-mail:| charles dot schaum at comcast dot net License:| Released under the LaTeX Project Public License 1.3c or later diff --git a/Master/texmf-dist/tex/latex/nameauth/nameauth.sty b/Master/texmf-dist/tex/latex/nameauth/nameauth.sty index b34d23a7912..f91f56ccb3a 100644 --- a/Master/texmf-dist/tex/latex/nameauth/nameauth.sty +++ b/Master/texmf-dist/tex/latex/nameauth/nameauth.sty @@ -7,7 +7,7 @@ %% nameauth.dtx (with options: `package') %% %% --------:| ---------------------------------------------------------------- -%% nameauth:| Name authority management for consistency in text and index +%% nameauth:| Name authority mechanism for consistency in text and index %% Author:| Charles P. Schaum %% E-mail:| charles dot schaum at comcast dot net %% License:| Released under the LaTeX Project Public License 1.3c or later @@ -15,7 +15,7 @@ %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{nameauth} - [2017/01/13 3.1 Name authority management for consistency in text and index] + [2017/03/22 3.2 Name authority mechanism for consistency in text and index] \newif\if@nameauth@InAKA \newif\if@nameauth@InName \newif\if@nameauth@Xref @@ -94,7 +94,8 @@ \DeclareOption{boldface}{\renewcommand*\NamesFormat{\bfseries}} \DeclareOption{noformat}{\renewcommand*\NamesFormat{}} \DeclareOption{verbose}{\@nameauth@Verbosetrue} -\DeclareOption{altformat}{\@nameauth@AltFormattrue\@nameauth@DoAlttrue} +\DeclareOption{altformat}{% + \@nameauth@AltFormattrue\@nameauth@DoAlttrue} \ExecuteOptions% {nocomma,mainmatter,index,pretag,% normalcaps,notreversed,noformat} @@ -105,15 +106,26 @@ \RequirePackage{xargs} \newcommand*\@nameauth@Clean[1] {\expandafter\zap@space\detokenize{#1} \@empty} -\newcommand*\@nameauth@Root[1]{\@nameauth@TrimRoot#1,\\} -\def\@nameauth@TrimRoot#1,#2\\{\trim@spaces{#1}} -\newcommand*\@nameauth@TagRoot[1]{\@nameauth@TrimTag#1|\\} -\def\@nameauth@TrimTag#1|#2\\{#1} -\newcommand*\@nameauth@Suffix[1]{\@nameauth@TrimSuffix#1,,\\} -\def\@nameauth@TrimSuffix#1,#2,#3\\% +\newcommand*\@nameauth@Root[1]{\@nameauth@@Root#1,\\} +\def\@nameauth@@Root#1,#2\\{\trim@spaces{#1}} +\newcommand*\@nameauth@TrimTag[1]{\@nameauth@@TrimTag#1|\\} +\def\@nameauth@@TrimTag#1|#2\\{#1} +\newcommand*\@nameauth@Suffix[1]{\@nameauth@@Suffix#1,,\\} +\def\@nameauth@@Suffix#1,#2,#3\\% {\ifx\\#2\\\@empty\else\trim@spaces{#2}\fi} +\newcommand*\@nameauth@GetSuff[1]{\@nameauth@@GetSuff#1,,\\} +\def\@nameauth@@GetSuff#1,#2,#3\\{#2} +\newcommand*\@nameauth@TestToks[1] +{% + \toks@\expandafter{\@car#1\@nil}% + \edef\one{\the\toks@}% + \toks@\expandafter{\@carß\@nil}% + \edef\two{\the\toks@}% + \ifx\one\two\@nameauth@UTFtrue\else\@nameauth@UTFfalse\fi +} \newcommand*\@nameauth@UTFtest[1] {% + \def\testarg{#1}% \ifdefined\Umathchar \@nameauth@UTFfalse% \else @@ -121,27 +133,39 @@ \if@nameauth@Accent \@nameauth@UTFtrue\@nameauth@Accentfalse% \else - \toks@\expandafter{\@car#1\@nil}% - \edef\one{\the\toks@}% - \toks@\expandafter{\@carß\@nil}% - \edef\two{\the\toks@}% - \ifx\one\two\@nameauth@UTFtrue\else\@nameauth@UTFfalse\fi + \expandafter\@nameauth@TestToks\expandafter{\testarg}% \fi \else \@nameauth@UTFfalse% \fi \fi } -\newcommand*\@nameauth@Cap[1] +\newcommand*\@nameauth@UTFtestS[1] {% - \if@nameauth@UTF \@nameauth@Ciii#1\\% - \else \@nameauth@Cii#1\\% + \let\ex\expandafter% + \ex\def\ex\testarg\ex{\@nameauth@GetSuff{#1}}% + \ex\toks@\ex\ex\ex{\testarg}% + \ex\def\ex\test@rg\ex{\the\toks@}% + \ifdefined\Umathchar + \@nameauth@UTFfalse% + \else + \ifdefined\UTFviii@two@octets + \if@nameauth@Accent + \@nameauth@UTFtrue\@nameauth@Accentfalse% + \else + \expandafter\@nameauth@TestToks\expandafter{\test@rg}% + \fi + \else + \@nameauth@UTFfalse% + \fi \fi } -\def\@nameauth@Cii#1#2\\% - {\expandafter\trim@spaces\expandafter{\uppercase{#1}#2}} -\def\@nameauth@Ciii#1#2#3\\% - {\expandafter\trim@spaces\expandafter{\uppercase{#1#2}#3}} +\newcommand*\@nameauth@Cap[1]{\@nameauth@C@p#1\\} +\def\@nameauth@C@p#1#2\\% + {\expandafter\trim@spaces\expandafter{\MakeUppercase{#1}#2}} +\newcommand*\@nameauth@CapUTF[1]{\@nameauth@C@pUTF#1\\} +\def\@nameauth@C@pUTF#1#2#3\\% + {\expandafter\trim@spaces\expandafter{\MakeUppercase{#1#2}#3}} \newcommand*\@nameauth@TestDot[1] {% \def\TestDot##1.\TestEnd##2\\{\TestPunct{##2}}% @@ -239,25 +263,56 @@ \@nameauth@toksb\expandafter{#2}% \@nameauth@toksc\expandafter{#3}% \if@nameauth@DoCaps + \let\carga\arga% + \let\crootb\rootb% \let\csuffb\suffb% \let\cargc\argc% \unless\if@nameauth@AltFormat - \ex\@nameauth@UTFtest\ex{\rootb}% - \edef\crootb{\noexpand\@nameauth@Cap{\rootb}}% + \unless\ifx\arga\@empty + \def\test{#1}% + \ex\@nameauth@UTFtest\ex{\test}% + \if@nameauth@UTF + \ex\def\ex\carga\ex{\ex\@nameauth@CapUTF\ex{\test}}% + \else + \ex\def\ex\carga\ex{\ex\@nameauth@Cap\ex{\test}}% + \fi + \fi + \def\test{#2}% + \ex\@nameauth@UTFtest\ex{\test}% + \if@nameauth@UTF + \ex\def\ex\crootb\ex{\ex\@nameauth@CapUTF\ex{\rootb}}% + \else + \ex\def\ex\crootb\ex{\ex\@nameauth@Cap\ex{\rootb}}% + \fi \unless\ifx\suffb\@empty - \ex\@nameauth@UTFtest\ex{\suffb}% - \edef\csuffb{\noexpand\@nameauth@Cap{\suffb}}% + \def\test{#2}% + \ex\@nameauth@UTFtestS\ex{\test}% + \protected@edef\test{\@nameauth@GetSuff{#2}}% + \if@nameauth@UTF + \protected@edef\test{\@nameauth@Suffix{#2}}% + \ex\def\ex\csuffb\ex{\ex\@nameauth@CapUTF\ex{\test}}% + \else + \edef\test{\@nameauth@Suffix{#2}}% + \ex\def\ex\csuffb\ex{\ex\@nameauth@Cap\ex{\test}}% + \fi \fi \unless\ifx\argc\@empty - \ex\@nameauth@UTFtest\ex{\argc}% - \edef\cargc{\noexpand\@nameauth@Cap{\argc}}% + \def\test{#3}% + \ex\@nameauth@UTFtest\ex{\test}% + \if@nameauth@UTF + \ex\def\ex\cargc\ex{\ex\@nameauth@CapUTF\ex{\test}}% + \else + \ex\def\ex\cargc\ex{\ex\@nameauth@Cap\ex{\test}}% + \fi \fi - \let\rootb\crootb% - \fi - \else - \if@nameauth@AllThis - \protected@edef\rootb{\uppercase{\@nameauth@Root{#2}}}% \fi + \let\arga\carga% + \let\rootb\crootb% + \let\suffb\csuffb% + \let\argc\cargc% + \fi + \if@nameauth@AllThis + \protected@edef\rootb{\MakeUppercase{\@nameauth@Root{#2}}}% \fi \edef\Space{\space}% \edef\SpaceX{\space}% @@ -281,18 +336,15 @@ \ifx\arga\@empty \ifx\argc\@empty \let\FNN\suffb% - \unless\ifx\suffb\@empty - \if@nameauth@DoCaps\let\FNN\csuffb\fi - \fi \let\SNN\rootb% \@nameauth@NonWest{\csb#4}% \else \ifx\suffb\@empty - \if@nameauth@DoCaps\let\FNN\cargc\else\let\FNN\argc\fi + \let\FNN\argc% \let\SNN\rootb% \@nameauth@NonWest{\csbc#4}% \else - \if@nameauth@DoCaps\let\FNN\cargc\else\let\FNN\argc\fi + \let\FNN\argc% \let\SNN\rootb% \@nameauth@NonWest{\csb#4}% \fi @@ -304,7 +356,7 @@ \let\FNN\argc% \fi \unless\ifx\suffb\@empty - \protected@edef\SNN{\rootb\Space\suffb}% + \def\SNN{\rootb\Space\suffb}% \if@nameauth@ShortSNN\let\SNN\rootb\fi \fi \@nameauth@West{\csab#4}% @@ -465,7 +517,7 @@ \let\ex\expandafter% \ifcsname\cseq!TAG\endcsname \protected@edef\Tag{\csname#1!TAG\endcsname}% - \ex\def\ex\ShortTag\ex{\ex\@nameauth@TagRoot\ex{\Tag}}% + \ex\def\ex\ShortTag\ex{\ex\@nameauth@TrimTag\ex{\Tag}}% \fi \if@nameauth@DoIndex \ifcsname\cseq!TAG\endcsname @@ -534,14 +586,14 @@ } \newcommand*\AltCaps[1]{% \if@nameauth@InHook - \if@nameauth@DoCaps\uppercase{#1}\else#1\fi + \if@nameauth@DoCaps\MakeUppercase{#1}\else#1\fi \else#1% \fi } \newcommand*\textSC[1]{% \if@nameauth@DoAlt\textsc{#1}\else#1\fi} \newcommand*\textUC[1]{% - \if@nameauth@DoAlt\uppercase{#1}\else#1\fi} + \if@nameauth@DoAlt\MakeUppercase{#1}\else#1\fi} \newcommand*\textIT[1]{% \if@nameauth@DoAlt\textit{#1}\else#1\fi} \newcommand*\textBF[1]{% @@ -623,7 +675,7 @@ \let\FNN\argc% \fi \unless\ifx\suffb\@empty - \protected@edef\SNN{\rootb\Space\suffb}% + \def\SNN{\rootb\Space\suffb}% \if@nameauth@ShortSNN\let\SNN\rootb\fi% \fi \if@nameauth@FullName @@ -640,7 +692,7 @@ \if@nameauth@FirstName \FNN% \else - \protected@edef\SNN{\rootb}% + \let\SNN\rootb% \SNN% \fi \fi |