summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/nameauth/nameauth.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/nameauth/nameauth.dtx')
-rw-r--r--macros/latex/contrib/nameauth/nameauth.dtx6735
1 files changed, 3912 insertions, 2823 deletions
diff --git a/macros/latex/contrib/nameauth/nameauth.dtx b/macros/latex/contrib/nameauth/nameauth.dtx
index 448c9f9a28..6c7589aa3e 100644
--- a/macros/latex/contrib/nameauth/nameauth.dtx
+++ b/macros/latex/contrib/nameauth/nameauth.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2023 by Charles P. Schaum <charles[dot]schaum@comcast.net>
+% Copyright (C) 2024 by Charles P. Schaum <charles[dot]schaum@comcast.net>
% -------------------------------------------------------
%
% This file may be distributed and/or modified under the
@@ -20,7 +20,7 @@
%<<readmevb
# 1. Short Description
-The `nameauth` package automates the correct formatting and indexing of names for professional writing. This aids the use of a name authority and the editing process without needing to retype name references.
+The `nameauth` package automates the correct formatting and indexing of names for professional writing. This aids the use of a name authority and the editing process without needing to retype name instances.
# 2. Files in Zip Archive
@@ -55,7 +55,7 @@ If not using the tools above, one can download `nameauth.zip` from [CTAN](https:
**Please inspect the included `Makefile` before using it.**
-`Makefile` has an extensive comment on usage, as well as many other comments. This file lists all the programs that must be installed in order to use GNU make file, helping one to check for prerequisites and dependencies. This method is designed for a POSIX-compliant environment, such as GNU/Linux, various BSDs, MacOS, and WSL or Cygwin on Windows.
+`Makefile` has an extensive comment on usage, as well as many other comments. This file lists all the programs that must be installed in order to use the GNU make file, helping one to check for prerequisites and dependencies. This method is designed for a POSIX-compliant environment, such as GNU/Linux, various BSDs, MacOS, and WSL or Cygwin on Windows.
### 4.2.2 Prepare to Install, No Building
@@ -63,7 +63,7 @@ One does not need to build `nameauth` completely from source (although it may be
make unpack
-This target only unpack the supplied generated files from `nameauth.dtx`. It does not try to create the documentation. One will have the following files now:
+This target only unpacks the supplied generated files from `nameauth.dtx`. It does not try to create the documentation. One will have the following files now:
| Filename | Description | TDS-where to |
| :------------- | :------------------------- | :----------- |
@@ -87,11 +87,11 @@ Take a look at **4.2.3 Specific Build Cases** and, depending on the use case, sk
### 4.2.3 Specific Build Cases: Program Extensions
-Windows presents some interesting cases. Both Cygwin and WSL provide POSIX environments that include respective TeX distros of their own. Yet they also will operate with native Windows-based TeX distros like MiokTeX and TeXlive.
+Windows presents some interesting cases. Both Cygwin and WSL provide POSIX environments that include respective TeX distros of their own. Yet they also will operate with native Windows-based TeX distros like MikTeX and TeXlive.
When using the TeX distros built in to Cygwin and WSL exclusively, one can treat it basically as a POSIX-compliant environment.
-Even when using Cygwin and a Windows-based TeX distro, one can treat package building as being mostly the same as a POSIX environment if all the preqequisite programs are installed. Installation, however, must be manual.
+Even when using Cygwin and a Windows-based TeX distro, one can treat package building as being mostly the same as a POSIX environment if all the prerequisite programs are installed. Installation, however, must be manual.
When one uses WSL with a Windows-based TeX distro, the `Makefile` will test whether an ".exe" extension is needed by the programs used in the building process.
@@ -107,19 +107,19 @@ With both Cygwin and WSL, tests will determine if the standard POSIX method is c
Here is a table showing the feasibility of a few scenarios:
-| Platform | TeX Distro Platform | Build package and zip with make | Install package with make |
-| :------- | :------------------------ | :------------------------------ | :------------------------------ |
-| POSIX | POSIX | Yes<sup>1</sup> | Yes |
-| Cygwin | Cygwin (distro packages) | Not tested; likely<sup>1</sup> | Not tested; likely <sup>2</sup> |
-| Cygwin | MikTeX (Windows) | Yes<sup>1, 3</sup> | No;<sup>4</sup> do manually |
-| Cygwin | TeXlive (Windows) | Not tested; likely<sup>1</sup> | Not tested; do manually |
-| Cygwin | Both Cygwin and Windows | Not tested; not recommended | Not tested; not recommended |
-| WSL | WSL Linux distro packages | Yes<sup>1</sup> | Yes<sup>5</sup> |
-| WSL | MikTeX (Windows) | Yes<sup>1, 3</sup> | No;<sup>4</sup> do manually |
-| WSL | TeXlive (Windows) | Not tested; likely<sup>1</sup> | Not tested; do manually |
-| WSL | Both WSL and Windows | Not tested; not recommended | Not tested; not recommended |
-| WSL/Cyg | Both WSL and Cygwin | Not tested; not recommended | Not tested; not recommended |
-| GNUWin | any (Windows) | Not tested; not recommended | Not tested; not recommended |
+| Platform | TeX Distro Platform | Make builds pkg/zip | Make installs package |
+| :------- | :------------------ | :----------------------------- | :------------------------------ |
+| POSIX | POSIX | Yes<sup>1</sup> | Yes |
+| Cygwin | Cygwin (packages) | Not tested; likely<sup>1</sup> | Not tested; likely <sup>2</sup> |
+| Cygwin | MikTeX (Windows) | Yes<sup>1, 3</sup> | No;<sup>4</sup> do manually |
+| Cygwin | TeXlive (Windows) | Not tested; likely<sup>1</sup> | Not tested; do manually |
+| Cygwin | Cygwin and Windows | Not tested; not recommended | Not tested; not recommended |
+| WSL | WSL Linux packages | Yes<sup>1</sup> | Yes<sup>5</sup> |
+| WSL | MikTeX (Windows) | Yes<sup>1, 3</sup> | No;<sup>4</sup> do manually |
+| WSL | TeXlive (Windows) | Not tested; likely<sup>1</sup> | Not tested; do manually |
+| WSL | WSL and Windows | Not tested; not recommended | Not tested; not recommended |
+| WSL/Cyg | WSL and Cygwin | Not tested; not recommended | Not tested; not recommended |
+| GNUWin | any (Windows) | Not tested; not recommended | Not tested; not recommended |
<sup>1</sup> All dependencies must be met. Bear in mind MacOS quirks.
@@ -147,7 +147,7 @@ Assuming that one has a use case where one can use GNU make, one can choose the
If, for some reason, this fails, do a manual install (below).
-Note that these make targets depend on `package`, which does not do a clean build. To ensure a clean build, use `make release inst` or `make release install`.
+Note that these make targets depend on `package`, which does not do a clean build. If one desires a clean build that is followed by an install, use `make release inst` or `make release install`.
### 4.2.6 Removal
@@ -201,22 +201,22 @@ One may skip past building to **4.3.3 Installation Prerequisites** below.
Now we should have the following files:
-| Filename | Description |
-| :------------- | :--------------------------- |
-| `Makefile` | for use with GNU make |
-| `cat01.pdf` | manual illustration, ch. 7 |
-| `beamer01.pdf` | manual illustration, ch. 9 |
-| `beamer02.pdf` | manual illustration, ch. 9 |
-| `beamer03.pdf` | manual illustration, ch. 9 |
-| `nameauth.dtx` | commented style file |
-| | |
-| `compat.tex` | compatibility module |
-| `examples.tex` | example file |
-| `nameauth.pdf` | package documentation |
-| `README.md` | this file |
-| | |
-| `nameauth.ins` | installation driver |
-| `nameauth.sty` | style file |
+| Filename | Description |
+| :------------- | :------------------------- |
+| `Makefile` | for use with GNU make |
+| `cat01.pdf` | manual illustration, ch. 7 |
+| `beamer01.pdf` | manual illustration, ch. 9 |
+| `beamer02.pdf` | manual illustration, ch. 9 |
+| `beamer03.pdf` | manual illustration, ch. 9 |
+| `nameauth.dtx` | commented style file |
+| | |
+| `compat.tex` | compatibility module |
+| `examples.tex` | example file |
+| `nameauth.pdf` | package documentation |
+| `README.md` | this file |
+| | |
+| `nameauth.ins` | installation driver |
+| `nameauth.sty` | style file |
In addition, we have the following temporary files:
@@ -324,17 +324,17 @@ Create the directories in the left-hand column, or whatever one needs to do in o
* The documentation now builds only with `pdflatex`, but the examples and tests can use any LaTeX engine. This is because several typesetting decisions that are quite helpful for the manual work only with `pdflatex`.
-* This release was tested on Linux (Pop! OS; vanilla TL 2022 and 2017) and Windows 10 (MikTeX with both Cygwin and WSL). The tests using TL 2017 include my published book manuscript, *Breath of God, Yet Work of Man: Scripture, Philosophy, Dialogue, and Conflict*, with Dr. Albert B. Collver III.
+* This release was tested on Linux (Pop! OS; vanilla TL 2023 and 2017) and Windows 10 (MikTeX using shells from both Cygwin and WSL). The tests using TL 2017 include my published book manuscript, *Breath of God, Yet Work of Man: Scripture, Philosophy, Dialogue, and Conflict*, with Dr. Albert B. Collver III.
-* The CTAN release was created with vanilla TL 2022 on Pop! OS. The most recent `equivs` file was used to meet package equivalencies. See also [this page](https://tug.org/texlive/debian.html).
+* The CTAN release was created with vanilla TL 2023 on Pop! OS. The most recent `equivs` file was used to meet package equivalences. See also [this page](https://tug.org/texlive/debian.html).
-* TeXlive 2022 and TL 2017 are managed on Pop! OS using [tl-switch](https://github.com/ServusCarolus/tl-switch).
+* TeXlive 2023 and TL 2017 are managed on Pop! OS using [tl-switch](https://github.com/ServusCarolus/tl-switch).
* Four pdf files (`cat01.pdf` and `beamer*.pdf`) used in graphic illustrations are created from the output of test files associated with this manual (see below). Normally, the user need not generate them; they are supplied as source files.
# 6. Examples / Testing
-The file `examples.tex`, which also uses `compat.tex`, usually should be enough to illustrate various non-trivial features of this package. It includes most of the longer examples in the manual, edited to fit together in a single document.
+The file `examples.tex`, also includes `compat.tex`; they should be in the same directory when compiled. The examples document should be enough to illustrate various non-trivial features of this package. It includes most of the longer examples in the manual, edited to fit together in a single document. It also includes other material and tests.
In addition to this file, a special run of `nameauth.dtx` that defines the macro `\NameauthDoTestFiles` will generate many separate test files. Normally they are written out to `nameauth.tmp` and read in again as verbatim text. They are not included in the package archive by default in order to minimize clutter.
@@ -344,6 +344,8 @@ To test `nameauth`, either test the files right after installing, or create a ne
* Use the default: `make examples`.
+* If one wants to change engines and re-test the file, type `make exclean`.
+
* To create `examples.pdf` with other LaTeX engines, one can do the following:
make examples ENGINE=xelatex
@@ -351,19 +353,19 @@ To test `nameauth`, either test the files right after installing, or create a ne
make examples ENGINE=dvilualatex
make examples ENGINE=latex
-* If one wants to change engines and re-test the file, type `make exclean`.
-
* To generate additional test files, type `make tests`.
- This will produce many test files numbered by chapter and example within that chapter from the `nameauth.dtx` file. It will compile all of the test files using `pdflatex`. One can add the value of ENGINE:
+ This will produce many test files numbered by chapter and example within that chapter from the `nameauth.dtx` file. By default it will compile all of the test files using `pdflatex`.
+
+* If one wants to change engines and re-test the files, type `make testclean`.
+
+* One can add the value of ENGINE:
make tests ENGINE=xelatex
make tests ENGINE=lualatex
make tests ENGINE=dvilualatex
make tests ENGINE=latex
-* If one wants to change engines and re-test the files, type `make testclean`.
-
* If, for some reason, one wanted to make the manual illustrations (usually not required), one would type `make images`.
## 6.2 Manual Method
@@ -389,7 +391,7 @@ Another step is used only with `latex` and `dvilualatex`. We default to `dvipdfm
dvipdfmx examples
-If one changes LaTeX engines, one must remove all of the auxiliary files.
+If one changes LaTeX engines, one first must remove all of the auxiliary files.
### 6.2.2 Tests
@@ -416,7 +418,7 @@ This step is used only when using `latex` and `dvilualatex`.
dvipdfmx test01-01
-If one changes LaTeX engines, one must remove all of the auxiliary files.
+If one changes LaTeX engines, one first must remove all of the auxiliary files.
### 6.2.3 Images
@@ -447,27 +449,35 @@ Compile the test files:
# 7. Additional Notes
-In version 3.7 I spent over seven months analyzing and optimizing both code and documentation. Stepping away from this package for a bit gave me the perspective and clarity to improve it greatly.
+Version 4.0 switches from `xargs` and `suffix` to `xparse`. Should any modifications still require `xargs` and `suffix`, one can use the `oldargs` package option.
+
+Improvements in version 4.0 include:
-* I cast aside a number of stale presuppositions that had built up over time. I explored all the ways that one could use certain features and fixed the bugs that appeared by using a better general approach.
+* Change to `xparse`, which increases power and flexibility going forward.
-* I brought back some thorough tests reminiscent of early package versions, but moved to the examples file.
+* Further changes to the manual that make it more readable and consistent.
-* I rewrote the documentation to remove a lot of idiosyncratic formatting. It looks much cleaner, both as source code and as typeset documentation.
+Version 3.7 remains here: [style](https://www.tug.org/svn/texlive/branches/branch2022.final/Master/texmf-dist/tex/latex/nameauth/), [docs](https://www.tug.org/svn/texlive/branches/branch2022.final/Master/texmf-dist/doc/latex/nameauth/), and [source](https://www.tug.org/svn/texlive/branches/branch2022.final/Master/texmf-dist/source/latex/nameauth/).
-* Extensive rewriting has led to the TOC becoming the principal expression of scope and sequence. The goal was greater rigor in keeping the easy stuff easy and the complex stuff more accessible.
+Improvements in version 3.7 include:
-* The package itself has been reorganized to follow the same sequence as the documentation, letting the rhythm of repetition aid learning. One sees this right away in the TOC.
+* Rejection of stale assumptions that had built up over time, based either on initial ignorance or on features that have since changed in LaTeX.
-* Several macros have been optimized, leading to simpler and cleaner designs that are easier to debug.
+* The examples file contains some tests that used to be in the documentation.
-* A few bugs that could result from directly changing internal package flags have been fixed, allowing the user-accessible parser to work in all cases as intended.
+* Major rewrite of documentation.
-* Any name arguments shown in warnings are detokenized in order to prevent potential errors. Regressions caused by a reverted edit in an earlier version that I failed to catch caused several package warnings to halt with errors. These "lameauth" errors are fixed.
+* The table of contents better frflects scope and sequence.
+
+* The package itself has been reorganized to follow the same scope and sequence as the documentation.
+
+* Several macros have been optimized, leading to simpler and cleaner designs that are easier to debug. Additional bug fixes ensure stability,
+
+* Name arguments shown in package warnings are detokenized in order to prevent potential errors.
# 8. Copyright
-Copyright (C) 2023 by Charles P. Schaum <charles[dot]schaum@comcast.net>
+Copyright (C) 2024 by Charles P. Schaum <charles[dot]schaum@comcast.net>
This file may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
@@ -497,7 +507,7 @@ version 2005/12/01 or later.
This is a generated file.
-Copyright (C) 2023 by Charles P. Schaum <charles[dot]schaum@comcast.net>
+Copyright (C) 2024 by Charles P. Schaum <charles[dot]schaum@comcast.net>
This file may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3 of this license
@@ -549,7 +559,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<package>\ProvidesPackage{nameauth}
%<*package>
- [2023/02/03 3.7 Name authority mechanism for consistency in text and index]
+ [2024/02/09 4.0 Name authority mechanism for consistency in text and index]
%</package>
%
%<*driver>
@@ -557,61 +567,82 @@ and version 1.3 or later is part of all distributions of LaTeX version
\documentclass[11pt]{ltxdoc}
-%^^A Below we check if our TL distribution has the iftex package and load it.
-\IfFileExists{iftex.sty}{\usepackage{iftex}}{}
+%^^A %%%%% General layout %%%%%
-%^^A Only versions of iftex since 2019 have the macro \RequireTUTeX.
-%^^A If the package is not loaded or if it is not new,
-%^^A we load the older, transitional packages.
-\unless\ifdefined\RequireTUTeX
- \usepackage{ifxetex}
- \usepackage{ifluatex}
- \usepackage{ifpdf}
-\fi
+%^^A Set up page layout to fit both letter and DIN A4.
+\usepackage[paperheight=279.4mm,paperwidth=210mm,
+ textheight=239.4mm,textwidth=140mm,
+ right=20mm,marginparwidth=40mm,nohead]{geometry}
+
+%^^A Permit horizontal boxes to be overfull.
+\hfuzz=3pt
+
+%^^A Define negative skip values if needed.
+\newcommand\negsmallskip{\vspace{-\smallskipamount}}
+\newcommand\negmedskip{\vspace{-\medskipamount}}
+\newcommand\negbigskip{\vspace{-\bigskipamount}}
+
+%^^A Redefine emphasis in the body text because italic has dedicated uses.
+\let\oldemph\emph
+\let\emph\textbf
+
+%^^A %%%%% Detecting LaTeX engine used %%%%%
+
+%^^A Since we only use pdflatex to make the documentation,
+%^^A this section is not as much of a big deal as it used to be.
+%^^A We still use these macros for some detection examples.
-%^^A We only use pdflatex to make the documentation.
+%^^A We need etoolbox for this functionality.
+\usepackage{etoolbox}
+
+%^^A Provide a macro to check against latex versions and set a flag.
+%^^A This must be done in the document preamble.
+%^^A We use the date 2018/10/05 because that is when unicode
+%^^A processing changed for the better.
+%^^A We use the date 2018/04/30 because that is when xparse
+%^^A added the ! modifier.
+\makeatletter
+ \@ifl@t@r\fmtversion{2018/10/05}{\def\nameauthltx{}}{}
+ \@ifl@t@r\fmtversion{2018/04/30}{\def\nameauthxp{}}{}
+\makeatother
+
+%^^A %%%%% Set up fonts and typography %%%%%
+
+%^^A Again, this is specific to our use of pdflatex.
+%^^A We do not load inputenc unless we are using an old distro.
\IfFileExists{utf8-2018.def}{}{\usepackage[utf8]{inputenc}}
-\usepackage[TS1,T1]{fontenc}
-\usepackage{textcomp} %^^A For backward compatibility
-\usepackage[ngerman,american]{babel}
+
+\usepackage[LGR,TS1,T1]{fontenc}
+
+%^^A We load textcomp for backward compatibility.
+\usepackage{textcomp}
+
+%^^A We demonstrate hyphenation only with English and German.
+%^^A Otherwise we don't hyphenate any other languages.
+\usepackage[ngerman,latin,polutonikogreek,american]{babel}
\newcommand\de[1]{\foreignlanguage{ngerman}{#1}}
+\newcommand{\la}[1]{\foreignlanguage{latin}{#1}}
+\newcommand{\el}[1]{\foreignlanguage{polutonikogreek}{#1}}
+
+%^^A The Latin Modern font gives us the glyphs that we need.
\usepackage{lmodern}
+
+%^^A This bit is for an example that involves accents and names.
\usepackage{newunicodechar}
\DeclareTextSymbolDefault{\textlongs}{TS1}
\DeclareTextSymbol{\textlongs}{TS1}{115}
\newunicodechar{ſ}{\textlongs}
-%^^A Finish with fonts and micro-typography.
+%^^A Load the dangerous bend symbol and microtypography..
\usepackage{manfnt}
\usepackage{microtype}
-%^^A This helps track down any stray or unintended changes to font sizes.
-\let\savegraf\everypar
-\makeatletter
-\newcommand\FontDebugStart
-{%^^A
- \let\oldep\everypar%^^A
- \newtoks\everypar%^^A
- \oldep{\the\everypar \llap{\f@size pt\hspace{4em plus 1fil minus 1em}}}%^^A
-}
-\newcommand\FontDebugStop
-{%^^A
- \let\oldep\savegraf%^^A
- \oldep{\the\everypar}%^^A
-}
-\makeatother
-
-%^^A Add fancy graphical features
-\usepackage{tikz}
-\usepackage{tcolorbox}
+%^^A Do not automatically put extra space after a full stop.
+\frenchspacing
-%^^A Set basic format for boxes drawn by TikZ.
-\tcbset{fonttitle=\bfseries\sffamily,box align=top,lower separated=false}
+%^^A %%%%% Set up specific document elements %%%%%
-%^^A Set up page layout to fit both letter and DIN A4.
-\usepackage[paperheight=279.4mm,paperwidth=210mm,
- textheight=239.4mm,textwidth=140mm,
- right=20mm,marginparwidth=40mm,nohead]{geometry}
+%^^A ----- TOC and index -----
%^^A Two-column TOC
\usepackage[toc]{multitoc}
@@ -621,28 +652,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
%^^A These options allow the index to focus on names in the index more
%^^A like one might see in a normal document.
-%^^A \DisableCrossrefs
+%^^A We do not use \DisableCrossrefs
\CodelineIndex
\RecordChanges
-\frenchspacing
-
-%^^A Include specifically the current version of the package.
-\usepackage{\jobname}[2023/02/03]
-
-%^^A Set up the ``actual'' character
-\IndexActual{=}
-
-%^^A Set up all tabular packages. Booktabs makes them pretty,
-%^^A colortabl shades rows.
-\usepackage{booktabs}
-\usepackage{colortbl}
-
-%^^A Set up lists.
-\usepackage[inline]{enumitem}
-\setlist{rightmargin=\leftmargin,itemsep=0pt}
-%^^A Use underlining in certain contexts.
-\usepackage{soulutf8}
+%^^A ----- Color and graphical diagram elements -----
%^^A Color helps categorize information.
\usepackage{xcolor}
@@ -653,33 +667,20 @@ and version 1.3 or later is part of all distributions of LaTeX version
\colorlet{naslate}{cyan!45!black}
\colorlet{nagrey}{black!7!white}
-%^^A Use color indicators in a couple of tables.
+%^^A Use color for yes/no indicators in tables.
\newcommand\NO{\bgroup
\color{black!20!white}\lower 0.075ex\hbox{\rule{1.5ex}{1.5ex}}\egroup}
\newcommand\YES{\bgroup
\color{black!80!white}\lower 0.075ex\hbox{\rule{1.5ex}{1.5ex}}\egroup}
-%^^A Let verbatim environments be fancy.
-\usepackage{fancyvrb}
-
-%^^A Define fancyvrb defaults.
-\fvset{gobble=2,numbers=left,fontsize=\small}
-
-%^^A Tweak spacing as needed
-\usepackage{setspace}
+%^^A Diagrams
+\usepackage{tikz}
+\usepackage{tcolorbox}
-%^^A Define some stretch if needed
-\newcommand\smallstretch{\setstretch{1.05}}
-\newcommand\medstretch{\setstretch{1.1}}
-\newcommand\bigstretch{\setstretch{1.2}}
+%^^A Set basic format for tcolorboxes drawn by TikZ.
+\tcbset{fonttitle=\bfseries\sffamily,box align=top,lower separated=false}
-%^^A Permit horizontal boxes to be overfull.
-\hfuzz=3pt
-
-%^^A Define negative skip values if needed.
-\newcommand\negsmallskip{\vspace{-\smallskipamount}}
-\newcommand\negmedskip{\vspace{-\medskipamount}}
-\newcommand\negbigskip{\vspace{-\bigskipamount}}
+%^^A ----- Hyperlinks and URLs -----
%^^A Have documentation with hyperlinks
\usepackage[numbered]{hypdoc}
@@ -687,15 +688,46 @@ and version 1.3 or later is part of all distributions of LaTeX version
%^^A Change URL color
\hypersetup{urlcolor=violet}
-%^^A Redefine emphasis in the body text because italic has dedicated uses.
-\let\oldemph\emph
-\let\emph\textbf
+%^^A ----- Tables, lists, quotes, center -----
-%^^A Redefine name formatting for this manual.
-\renewcommand*\FrontNamesFormat[1]{\color{red}\sffamily #1}
-\renewcommand*\FrontNameHook[1]{\color{darkgray}\sffamily #1}
-\renewcommand*\NamesFormat[1]{\color{blue}\sffamily #1}
-\renewcommand*\MainNameHook[1]{\sffamily #1}
+\usepackage{booktabs}
+\usepackage{colortbl}
+
+\usepackage[inline]{enumitem}
+\setlist{rightmargin=\leftmargin,itemsep=0pt}
+
+%^^A Make default font small for quote and center environments
+\apptocmd{\quote}{\small}{}{}
+\apptocmd{\center}{\small}{}{}
+
+%^^A ----- Verbatim environments -----
+
+%^^A Let verbatim environments be fancy.
+\usepackage{fancyvrb}
+
+%^^A Define fancyvrb defaults.
+\fvset{gobble=2,numbers=left,fontsize=\small}
+
+%^^A ----- Font debugging; only for dev use -----
+
+%^^A These two macros help track down any unintended changes to font sizes.
+%^^A One can use these only once each.
+\let\savegraf\everypar
+\makeatletter
+\newcommand\FontDebugStart
+{%^^A
+ \let\oldep\everypar%^^A
+ \newtoks\everypar%^^A
+ \oldep{\the\everypar \llap{\color{red}\hbox to \marginparwidth {\f@size\hfill}}}%^^A
+}
+\newcommand\FontDebugStop
+{%^^A
+ \let\oldep\savegraf%^^A
+ \oldep{\the\everypar}%^^A
+}
+\makeatother
+
+%^^A ----- Various text elements -----
%^^A Show a ``dangerous bend'' in the margin.
\newcommand*\Warn
@@ -745,7 +777,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
{%^^A
\marginpar{%^^A
\raggedleft\footnotesize Name Pattern(s):\hfill\break%^^A
- {\ttfamily#1}\smallskip\break%^^A
+ {\ttfamily#1}\break%^^A
\raggedleft\footnotesize Basic Index:\hfill\break#2%^^A
}%^^A
}%^^A
@@ -796,15 +828,15 @@ and version 1.3 or later is part of all distributions of LaTeX version
{%^^A
\def\titulus{#1}%^^A
\ifx\titulus\empty
- \smallskip\begin{tcolorbox}[colback=white,colframe=darkgray]%^^A
+ \begin{tcolorbox}[colback=white,colframe=darkgray]%^^A
\begingroup\begin{tabular}{@{}ll@{}}
\else
- \smallskip\begin{tcolorbox}[colback=white,colframe=darkgray,
+ \begin{tcolorbox}[colback=white,colframe=darkgray,
adjusted title={\bfseries\hfil #1}]%^^A
\begingroup\begin{tabular}{@{}ll@{}}
\fi
}
-{\end{tabular}\endgroup\end{tcolorbox}\smallskip}
+{\end{tabular}\endgroup\end{tcolorbox}\medskip}
%^^A Print a quote and the source.
@@ -812,13 +844,16 @@ and version 1.3 or later is part of all distributions of LaTeX version
\leavevmode\leaders\hrule height 1.5pt\hfill\kern0pt }
\newenvironment{Quote}[1]
-{\def\QuoteName{#1}\begin{quote}\small\vfill\hrulefill\medskip\\}
-{\\[1ex]\hbox{}\hfill---\normalsize\QuoteName\end{quote}}
+{%^^A
+ \def\QuoteName{#1}%^^A
+ \vfill\noindent\hfil\hbox to 0.9\textwidth{\hrulefill}
+ \begin{quote}}
+{\negmedskip\end{quote}\begin{quote}\hfill---\QuoteName\end{quote}}
%^^A Used for one or more examples
\newenvironment{Block}
{%^^A
- \begin{quote}\small
+ \begin{quote}
\setlist{rightmargin=0pt,leftmargin=0pt,topsep=0ex,itemsep=0pt}%^^A
\begin{itemize}\item[]
}
@@ -828,10 +863,9 @@ and version 1.3 or later is part of all distributions of LaTeX version
\newcommand\NameArgWarning
{%^^A
\begin{InfoBox}%^^A
- When a macro occurs in a name argument and the argument will be
- displayed in the text and in the index, if there are any concerns
- about macro expansion, one should put \cmd{\noexpand} before that
- macro.
+ When a macro occurs in a name argument appearing in both text
+ and index, fix any concerns about macro expansion by using
+ \cmd{\noexpand} before that macro.
\end{InfoBox}%^^A
}
@@ -856,6 +890,21 @@ and version 1.3 or later is part of all distributions of LaTeX version
%^^A Used when introducing name forms
\newcommand\FUse{\leavevmode\hbox to 5em{First use:\hfill}}
\newcommand\LUse{\leavevmode\hbox to 5em{Later use:\hfill}}
+\newcommand\UseB{\leavevmode\hbox to 5em{\hfill}}
+
+%^^A ----- Names, the reason for it all -----
+
+%^^A Include specifically the current version of the package.
+\usepackage{\jobname}[2024/02/09]
+
+%^^A Set up the ``actual'' character
+\IndexActual{=}
+
+%^^A Redefine name formatting for this manual.
+\renewcommand*\FrontNamesFormat[1]{\color{red}\sffamily #1}
+\renewcommand*\FrontNameHook[1]{\color{darkgray}\sffamily #1}
+\renewcommand*\NamesFormat[1]{\color{blue}\sffamily #1}
+\renewcommand*\MainNameHook[1]{\sffamily #1}
%^^A Use this example in the body text. It is defined here due
%^^A to the vertical bars, which are redefined in the body text.
@@ -947,6 +996,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\PretagName[Pierre-Jean]{\noexpand\Fbox{\noexpand\AltCaps{d}e~Smet}}
{deSmet, Pierre-Jean}
\PretagName[Hernando]{de~Soto}{Desoto, Hernando}
+\PretagName{\textit{Doctor angelicus}}{Doctor angelicus}
\PretagName{\textit{Doctor mellifluus}}{Doctor mellifluus}
\PretagName[W.E.B.]{Du~Bois}{DuBois, William}
\PretagName{du~Cange}{Ducange}
@@ -1042,6 +1092,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\TagName[Albert]{Einstein}{|hyperpage}
\TagName[Dwight D.]{Eisenhower}{, pres.|hyperpage}
\TagName{Elizabeth, I}{, queen|hyperpage}
+\TagName[Leif]{Erikson}{|hyperpage}
\TagName[Robin]{Fairbairns}{|hyperpage}
\TagName{\noexpand\textUC{Fukuyama}}[Takeshi]{\ddag|hyperpage}
@@ -1053,7 +1104,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\TagName[J.W. von]{Goethe}{|hyperpage}
\TagName[Ulysses S.]{Grant}{, pres.|hyperpage}
\TagName[Enrico]{Gregorio}{|hyperpage}
-\TagName{Gregory, I}{, pope|hyperpage}
+\TagName{Gregory, I}{ the Great, pope|hyperpage}
\TagName[Oskar]{Hammerstein, II}{|hyperpage}
\TagName[Adolf]{Harnack}{|hyperpage}
@@ -1076,7 +1127,9 @@ and version 1.3 or later is part of all distributions of LaTeX version
\TagName{Lao-tzu}{|hyperpage}
\TagName[Clive Staples]{Lewis}{|hyperpage}
\TagName[Abraham]{Lincoln}{, pres.|hyperpage}
+\TagName[Frenec]{Liszt}{\dag|hyperpage}
\TagName[Titus]{Livius}{|hyperpage}
+\TagName{Llywelyn, ap Gruffudd}{, prince|hyperpage}
\TagName{Louis, XIV}{, king|hyperpage}
\TagName[Ada]{\noexpand\textIT{Lovelace}}{|hyperpage}
\TagName[Uwe]{Lueck}{|hyperpage}
@@ -1170,7 +1223,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
%^^A %%%%%%%%%%%%%%%%%%%%%%% Error Correction %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
-% \CheckSum{3451}
+% \CheckSum{3388}
%
% \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
@@ -1203,35 +1256,32 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{3.6}{2021/02/27}
% {Update \texttt{Readme.md}, \texttt{Makefile}}
% \changes{3.7}{2023/02/03}{Major updates to all files}
+% \changes{4.0}{2024/02/09}{Improve manual, \texttt{Readme.md}, \texttt{compat.tex}}
%
% \GetFileInfo{\jobname.dtx}
%
-% \DoNotIndex{\@empty, \@gobble, \@period, \@token, \trim@spaces,
-% \zap@space}
+% \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,
-% \textbackslash,
-% \uppercase}
+% \DeclareOption, \def, \detokenize, \edef,
+% \egroup, \else, \endcsname, \endgroup, \endinput,
+% \ExecuteOptions, \expandafter, \fi, \futurelet,
+% \global, \hbox, \if, \ifcsname, \ifx, \ignorespaces,
+% \index, \itshape, \leavevmode, \let, \newcommand,
+% \NewDocumentCommand, \newenvironment, \newif,
+% \nobreakspace, \PackageError, \PackageWarning,
+% \ProcessOptions, \relax, \renewcommand,
+% \RequirePackage, \scshape, \textbackslash, \uppercase}
%
%^^A %%%%%%%%%%%%%%% Macros That Must Be Defined Here %%%%%%%%%%%%%%%%%%%%
%
-%^^A Conditional set if we have an old TeXLive version
+%^^A Lengths to size tcboxes
%
-% \newif\ifOldTeX
-% \IfFileExists{utf8-2018.def}{}{\OldTeXtrue}
+% \newlength{\nameboxi}
+% \newlength{\nameboxii}
+% \newlength{\nameboxiii}
%
%^^A Global definitions of conditionals used for examples
%^^A must be included here because \newif statements cannot
@@ -1350,7 +1400,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \vspace{-16.67pt}
%
% \begin{abstract}
-% \noindent The \textsf{nameauth} package automates the correct formatting and indexing of names for professional writing. This aids the use of a \emph{name authority} and the editing process without needing to retype name references.
+% \noindent The \textsf{nameauth} package automates the correct formatting and indexing of names for professional writing. This aids the use of a \emph{name authority} and the editing process without needing to retype name instances.
% \end{abstract}
%
%^^A %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TOC %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1361,21 +1411,28 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \tableofcontents
% \endgroup
%
-% \bigskip
-%
% \begin{InfoBox}[Disclaimer]
-% Names are about real people; examples should be too. This manual mentions notable figures both living and deceased. All names herein are meant to be used respectfully, for teaching purposes only. At no time is any disrespect or bias intended or implied by the author.
+% This manual mentions names of historical figures both living and deceased. We intend to use all names herein with respect, for teaching purposes only, and never express or imply any disrespect or bias.
% \end{InfoBox}
%
-% \bigskip
+% \begin{InfoBox}[Compatibility]
+% Starting with version 4.0, \textsf{nameauth} uses \textsf{xparse} for starred macros and name arguments. Benefits include better macro design, more control over arguments, less code duplication, and better customization.
+% \begin{itemize}
+% \item Use with a pre-2017 \TeX\ distribution might cause occasional errors. See also Sections~\ref{sec:FinalOptargs}, \ref{sec:ChangeParse} and~\ref{sec:CompatON}.
+% \item Older user customizations using \textsf{xargs} may still work with the \texttt{oldargs} option. See Sections~\ref{sec:OptionCompat} and~\ref{sec:ChangeParse}.
+% \end{itemize}
+% If one should require version 3.7, see section 7 of \texttt{README.md}.
+% \end{InfoBox}
%
-% \begin{InfoBox}
-% All direct quotes contained herein are in the public domain or copyrighted works cited in small excerpts under the terms of fair use, to which the present author claims no copyright. Such quotes are used to stimulate the mind and promote the concept that names have value, can take different forms, and can represent sharply different viewpoints. Some quotes are a kind of ``running gag'' about Shakespearian names and roses. That illustrates the transformative aspect of fair use as well as the ratio of work quoted to its total size.
+% \begin{InfoBox}[Fair Use]
+% Other works quoted herein either are in the public domain or they are copyrighted works cited under the terms of fair use, to which the present author claims no copyright. The purpose is to show the power of words and names.
% \end{InfoBox}
%
-% \begin{Quote}{\Name[Theodore]{Roosevelt}\break\hbox{}\hfill
-% Introduction, \textit{The Papers and Writings of Abraham Lincoln} (1905)}
-% It is a very poor thing, whether for nations or individuals, to advance the history of great deeds done in the past as an excuse for doing poorly in the present; but it is an excellent thing to study the history of the great deeds of the past, and of the great men who did them, with an earnest desire to profit thereby so as to render better service in the present. In their essentials, the men of the present day are much like the men of the past, and the live issues of the present can be faced to better advantage by men who have in good faith studied how the leaders of the nation faced the dead issues of the past.
+% \begin{Quote}{\Name[Leonard]{Bernstein}\break
+% \hbox{}\hfill ``What Makes Opera Grand?'', \textit{Vogue}
+% (December 1958)}
+% \textls[-15]{Any great work of art \dots revives and readapts time and space, and the measure of its success is the extent to which it makes you an inhabitant of that world\,---\,the extent to which it invites you in and lets you breathe its strange, special air.}^^A
+% \index{creatives, quotes of\noexpand\string|hyperpage}
% \end{Quote}
%
% \newpage
@@ -1385,7 +1442,22 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \section{Quick Start}
% \label{sec:QuickStart}
%
-% A \emph{name authority} is a canonical, scholarly list of names to which variant name forms and aliases refer. This package helps one easily work with a name authority to manage, format, and index names, especially in larger publications.
+% A \emph{name authority} is a canonical, scholarly list of names to which variant name forms and aliases refer. Books can contain hundreds of names and index entries. The \textsf{nameauth} package assists academic and business writing to minimize the work of managing many names:
+%
+% \begin{itemize}
+% \item Automate the display and formatting of names.
+% \item Manage and display information that is associated with names.
+% \item Make decisions relating to names (name control sequence patterns).
+% \item Sort name index entries properly.
+% \item Automatically add information to index entries.
+% \item Ensure correct indexing of names that span page breaks.
+% \item Change name forms in the text while retaining consistent index entries.
+% \item Adopt name forms in the text and index that are culturally appropriate.
+% \item Do not force the user to adopt any one culture's naming conventions.
+% \item Permit European academic conventions (``Continental'' formatting).
+% \end{itemize}
+%
+% Indexing rules implemented by \textsf{nameauth} are based on \Name[Nancy C.]{Mulvany}, \textit{Indexing Books} (Chicago: University of Chicago Press, 1994). All references [\hypertarget{Mulvany}{Mulvany}] refer to this edition. See also similar information in \textit{The Chicago Manual of Style} (15\textsuperscript{th} ed., Chicago: Chicago UP, 2003, 309f., 755f.) or newer editions; referenced as [\hypertarget{Chicago}{Chicago}].
%
% \subsection{Simple Example}
% \label{sec:QuickExample}
@@ -1394,21 +1466,23 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \renewcommand{\MainNameHook}{}
%
% We begin with an excerpt from a biography written by \Name[Charles W.]{Chesnutt}[Charles Waddell], a prominent African-American author at the turn of the twentieth century.\footnote{\Name[Charles W.]{Chesnutt}, \textit{Frederick Douglass} (Boston: Small, Maynard, 1899). See also \href{https://docsouth.unc.edu/neh/chesnutt/summary.html} {\bfseries this web page}.}
-% We create a new document and use only the default \textsf{nameauth} package options. We do not create any formatting for names (Section~\ref{sec:Formatting}).
+% We create a new document, use only the default \textsf{nameauth} options, and create no extra formatting for names (cf. Section~\ref{sec:Formatting}).
%
-% The \texttt{nameauth} environment (Section~\ref{sec:QuickUIStart}) is in the preamble. It resembles a \texttt{tabular} with four columns. In column one we define the naming macros. In columns two and three we define the names that the macros will display. We leave column four empty. After the first group, we use \cmd{\Forgetname} (Section~\ref{sec:NameControl}) to ``forget'' that the names appeared, making the conditions of the second group the same as the first for illustrative purposes.
+% The \texttt{nameauth} environment (Section~\ref{sec:QuickUIStart}) in the preamble resembles a \texttt{tabular} with four columns. In column one we define the naming macros. In columns two and three we define the names that the macros will display. We leave column four empty.
+%
+% We use \cmd{\Forgetname} (Section~\ref{sec:NameControl}) in Group 2 to ``forget'' about the names in Group 1. When we reorder the statements, the names change form automatically.
%
% \ifdefined\NameauthDoTestFiles \edef\NameauthTestFile{test01_01.tex}\else
% \edef\NameauthTestFile{\jobname.tmp}\fi
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage{makeidx}
% \usepackage{nameauth}
-% \makeindex
% \usepackage[inline]{enumitem}
+% \makeindex
%
% \begin{nameauth}
% % Col. 1 Col. 2 Col. 3 Col. 4
@@ -1418,6 +1492,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{document}
%
+% \textbf{Group 1}\\
% \begin{enumerate*}
% \item[\textbf{1.}] \Doug\ rose to eminence by sheer force
% of character and talents that neither slavery nor caste
@@ -1430,6 +1505,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% grandmother, \Bailey.
% \end{enumerate*}
%
+% \textbf{Group 2}\\
% \ForgetName[Frederick]{Douglass}
% \ForgetName[Betsey]{Bailey}
% \begin{enumerate*}
@@ -1448,11 +1524,10 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{document}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\NameauthTestFile}
-% \end{quote}
%
-% \begin{quote}\small
+% \textbf{Group 1}\\
% \begin{enumerate*}
% \item[\textbf{1.}] \Doug\ rose to eminence by sheer force
% of character and talents that neither slavery nor caste
@@ -1465,6 +1540,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% grandmother, \Bailey.
% \end{enumerate*}
%
+% \textbf{Group 2}\\
% \ForgetName[Frederick]{Douglass}
% \ForgetName[Betsey]{Bailey}
% \begin{enumerate*}
@@ -1480,28 +1556,14 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{enumerate*}
% \end{quote}
%
-% If we reorder the statements, the names change form automatically. In a book-length project, one might manage hundreds of names, associated information, and index entries. The \textsf{nameauth} package automates aspects of academic and business writing to minimize the work of such management:
-%
-% \begin{itemize}
-% \item Automate the display and formatting of names.
-% \item Manage and display information that is associated with names.
-% \item Make decisions relating to names (name control sequence patterns).
-% \item Sort name index entries properly.
-% \item Automatically add information to index entries.
-% \item Ensure correct indexing of names that span page breaks.
-% \item Change name forms in the text while retaining consistent index entries.
-% \item Adopt name forms in the text and index that are culturally appropriate.
-% \item Do not force the user to adopt any one culture's naming conventions.
-% \item Permit European academic conventions (``Continental'' formatting).
-% \end{itemize}
-%
-% Indexing rules implemented by \textsf{nameauth} are based on \Name[Nancy C.]{Mulvany}, \textit{Indexing Books} (Chicago: University of Chicago Press, 1994). All references [\hypertarget{Mulvany}{Mulvany}] refer to this edition. See also \textit{The Chicago Manual of Style} by the same publisher.
% \endgroup
%
% \begin{Quote}{\ForgetThis\Doug\break
% \hbox{}\hfill motto, \textit{The North Star} (Rochester, NY, 1847)}
% Right Is of No Sex\,---\,Truth Is of No Color\,---\,God Is the Father
-% of Us All, and All We Are Brethren.\vspace{-1ex}
+% of Us All, and All We Are Brethren.\negmedskip^^A
+% \index{north star, concept of\noexpand\string|hyperpage}^^A
+% \index{civil rights leaders, quotes of\noexpand\string|hyperpage}
% \end{Quote}
%
% \newpage
@@ -1511,7 +1573,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% This manual tries to support various learning styles by using layout, colors, shapes, and similar ordering of both document sections and package code.
%
-% \subsubsection*{Macro Argument Types}
+% \subsubsection*{\hfil Macro Argument Types}
% \vspace{-4ex}
%
% \begin{multicols}{2}
@@ -1526,15 +1588,15 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{tcolorbox}
% \end{multicols}
%
-% \subsubsection*{Scope and Sequence}
+% \subsubsection*{\hfil Scope and Sequence}
%
-% The table of contents has become detailed in order to indicate more clearly what topics are covered, from frequent and simple to infrequent and complex. Later topics require knowledge from multiple sections. The end of each major section includes a return link to the table of contents.
+% The table of contents indicates what topics are covered, the simpler and frequent to the complex and infrequent. Later topics require knowledge from multiple sections. The end of each major section includes a return link to the table of contents.
%
-% \subsubsection*{Key Concepts}
+% \subsubsection*{\hfil Key Concepts}
%
-% Throughout much of this manual, starting in Section~\ref{sec:BasicStart}, we use debugging macros (Section~\ref{sec:Debugging}) to show \emph{name control patterns} in the margins (cf. Section~\ref{sec:NamePatterns}). These patterns are the key to how names work in \textsf{nameauth}. Through Section~\ref{sec:NameMedieval} we show \emph{basic index entries} in the margins. These macros and the \texttt{idx} file can aid greatly with complex use cases and subtle issues.
+% Starting in Section~\ref{sec:BasicStart}, we use debugging macros to show \emph{name control patterns} in the margins (Section~\ref{sec:NamePatterns}). These patterns are the key to how names work in \textsf{nameauth}. Through Section~\ref{sec:NameMedieval} we show \emph{basic index entries} in the margins in order to illustrate the things for which one should look when debugging.
%
-% \subsubsection*{Special Signs}
+% \subsubsection*{\hfil Special Signs}
%
% \noindent This manual uses signs and illustrative typesetting that are not built-in defaults of \textsf{nameauth}, but in some cases are implemented using it:
%
@@ -1551,9 +1613,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
% is needed.
% \end{itemize}
%
-% \subsubsection*{Example Files}
+% \subsubsection*{\hfil Example Files}
+%
+% The files \texttt{examples.tex} and \texttt{compat.tex} are located with this manual. For generating package testing files, see \texttt{README.md}, also located with this manual.
%
-% The files \texttt{examples.tex} and \texttt{compat.tex} located with this manual. For generating package testing files, see \texttt{README.md}, also located with this manual.
+% \vfill
%
% \begin{InfoBox}[Thanks]\small
% For assistance at various times, thanks to \Name[Marc van]{Dongen}, \Name[Enrico]{Gregorio}, \Name[Philipp]{Stephani}, \Name[Heiko]{Oberdiek}, \Name[Uwe]{Lueck}, \Name[Dan]{Luecking}, \Name[Robert]{Schlicht}, and others.\\[1ex]
@@ -1566,223 +1630,239 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \subsection{Basic Concepts}
%
% This section introduces fundamental concepts needed by package users.
-%
-% \subsubsection{Name Ambiguity}
-% \negmedskip
-%
-% Apart from cultural context, the elements of a name are ambiguous. The \textsf{nameauth} macros embrace the ambiguity of culture, context, and publishing markets as they create consistent name forms and index entries Let us consider three names from history. Many Western readers will tend to interpret them in this manner:
-%
-% \begin{center}\small\medstretch
-% \begin{tabular}{lll}\toprule
-% & Forename(s) & Surname\\
-% \rowcolor{nagrey}\Name[M.T.]{Cicero}[Marcus Tullius] &
-% \FName[M.T.]{Cicero}[Marcus Tullius] &
-% \Name[M.T.]{Cicero}\\
-% \Name{Jesus, Christ} &
-% \Name{Jesus, Christ} &
-% \ForceFN\FName{Jesus, Christ}\\
-% \rowcolor{nagrey}\Name{Pontius, Pilate} &
-% \Name{Pontius, Pilate} &
-% \ForceFN\FName{Pontius, Pilate}\\\bottomrule
-% \end{tabular}
-% \end{center}
-%
-% The problem is that all these interpretations technically are wrong! Yet popular books tend to permit error for the sake of readability. To illustrate that, we encode \Name[M.T.]{Cicero} as a Western name. Yet this approach would be quite incorrect in a scholarly publication or reference work (Section~\ref{sec:Romani}).
-%
-% As a Roman \textit{praenomen}, \FName[M.T.]{Cicero}[Marcus] did not have the same importance or meaning as a modern Western forename.\footnote{\url{https://en.wikipedia.org/wiki/Praenomen}}
-% Moreover, \Name[M.T.]{Cicero} is not the surname of the great Roman orator. His \textit{nomen}, the name of his clan or \textit{gens}, is \FName[M.T.]{Cicero}[Tullius]. For quite some time in English he was known as \IndexRef{Tully}{Cicero, M.T.}\Name{Tully}. The name \Name[M.T.]{Cicero} is a \textit{cognomen}, a name tied to a personal attribute or later, a branch family in a clan.
-%
-% The case of \Name*{Jesus, Christ} becomes clearer when we consider \Name*{Jesus, Christ}[of Nazareth] (John 19:19) and \Name*{Jesus, Christ} [son of David] (Mark~10:47; cf. Matthew~1:20). The personal name is \Name{Jesus, Christ} (Greek for Joshua). Adding \ForceFN \FName*{Jesus, Christ}[of Nazareth] and \ForceFN\FName*{Jesus, Christ} [Son of David] shows, respectively, the place of notable origin and family descent. \ForceFN\FName*{Jesus, Christ} is a religious title (Anointed One), a Greek loan-word from Hebrew \textit{mashiach} (Messiah).
-%
-% The name \Name*{Pontius, Pilate} is interesting because his \textit{praenomen} has been lost to history. This fits with Roman naming trends at the time. \Name{Pontius, Pilate} is a clan name. Most references, including his own inscriptions, favor his \textit{cognomen} \ForceFN\FName{Pontius, Pilate}[Pilatus], which is due likely to its connection to skill with the \textit{pilum} and martial prowess.
-%
-% Thus, in this manual, we make the following name encoding choices, targeted for a ``semi-scholarly'' book that popularizes history for a general Western readership:
-%
-% \begin{center}\small\medstretch
-% \begin{tabular}{lll}\toprule
-% Macro & Type & Index\\
-% \rowcolor{nagrey}|\Name[M.T.]{Cicero}| &
-% Western name &
-% \ShowIdxPageref*[M.T.]{Cicero}\\
-% |\Name{Jesus, Christ}| &
-% ancient name &
-% \ShowIdxPageref*{Jesus, Christ}\\
-% \rowcolor{nagrey}|\Name{Pontius, Pilate}| &
-% ancient name &
-% \ShowIdxPageref*{Pontius, Pilate}\\\bottomrule
-% \end{tabular}
-% \end{center}
-%
-% \begin{Quote}{\ForgetThis\Name[M.T.]{Cicero}[Marcus Tullius]\break
-% \hbox{}\hfill\textit{De oratore} B II; C IX, \S 36}
-% By what other voice, too, than that of the orator, is history, the evidence of time, the light of truth, the life of memory, the directress of life, the herald of antiquity, committed to immortality?\vspace{-1ex}
-% \end{Quote}
+% The rest of the manual requires these to be understood.
%
% \subsubsection{Name Arguments}
% \label{sec:NameArgs}
%
-% Below are the forms of name arguments, as defined by the current syntax. Compare [\hyperlink{Mulvany}{Mulvany}, 152--82] and the \textit{Chicago Manual of Style}. \Name[Nancy C.]{Mulvany} offers some excellent advice on names, cross-references, and name variants that can guide one well when using this package. The forms below are an adaptation of these sources to \LaTeX.
+% Below we show how familiar categories of names map to name arguments in the appropriate macros, as defined by the current syntax. We use the excellent advice in [\hyperlink{Mulvany}{Mulvany}, 152--82] and [\hyperlink{Chicago}{Chicago}], adapting them for use in \LaTeX.
+% \medskip
+%
+% \begingroup\small
+% \setbox0\hbox{Family / clan name\ }
+% \global\setlength{\nameboxi}{\wd0}
+% \setbox0\hbox{nomen / cognomen\ }
+% \global\setlength{\nameboxii}{\wd0}
+% \setbox0\hbox{notable attribute\ }
+% \global\setlength{\nameboxiii}{\wd0}
+% \endgroup
%
% \noindent\begin{tcolorbox}[colframe=naslate,
-% adjusted title={Western Name:
+% adjusted title={\large Western Name:
% \oarg{FNN}\marg{SNN, Affix}\oarg{Alternate}}]
-% \centering\small\smallskip
+% \centering\small^^A
%^^A
% \tcbox[equal height group=A,on line,tikznode,colback=white,
-% adjusted title={\bfseries\sffamily Forename(s):\\ \meta{FNN}}]
-% {Personal name(s):\\
+% adjusted title={\centering\bfseries\sffamily Forename(s):\meta{FNN}}]
+% {\hbox to \nameboxi {\hfil Personal name(s):\hfil}\\
% \textit{baptismal name}\\
% \textit{Christian name}\\
% \textit{multiple names}\\
-% \textit{praenomen}\footnotemark\\
-% \phantom{Family\,/\,clan name}}\hfill^^A
+% \textit{praenomen}\footnotemark}\hfill^^A
%^^A
% \tcbox[equal height group=A,on line,tikznode,colback=white,
-% adjusted title={\bfseries\sffamily Surname(s):\\ \meta{SNN}}]
-% {Family name:\\
+% adjusted title={\bfseries\sffamily Surname(s):\meta{SNN}}]
+% {\hbox to \nameboxii {\hfil Family name:\hfil}\\
% \textit{of father, mother}\\
% \textit{ancestor, vocation}\\
% \textit{origin, region}\\
% \textit{nomen\,/\,cognomen}\\
-% \textit{patronym}\\\vspace{-3ex}
-% \phantom{\textit{nomen\,/\,cognomen}}}\hfill^^A
+% \textit{patronym}}\hfill^^A
%^^A
-% \tcbox[equal height group=A,on line,tikznode,
-% colback=white,colframe=nared,
-% adjusted title={\bfseries\sffamily Qualifier:\\ \meta{Affix}}]
-% {Sobriquet/title:\\
+% \tcbox[equal height group=A,on line,tikznode,colback=white,colframe=nared,
+% adjusted title={\bfseries\sffamily Qualifier:\meta{Affix}}]
+% {\hbox to \nameboxiii {\hfil Sobriquet\,/\,title:\hfil}\\
% \textit{Sr., Jr., III\dots}\\
% \textit{notable attribute}\\
-% \textit{origin, region}\\
-% \phantom{\textit{notable attribute}}}\medskip
+% \textit{origin, region}}
%
% \begin{tcolorbox}[colback=white,colframe=nared,
-% adjusted title={\bfseries\sffamily Alternate Name(s):
-% \meta{Alternate}}]
+% adjusted title={\bfseries\sffamily Alias:\meta{Alternate}}]
% \centering Replaces \meta{FNN} only in the text.
-% \end{tcolorbox}\negsmallskip
+% \end{tcolorbox}
%
% \end{tcolorbox}
% \footnotetext{There are several ways of handling the Roman \textit{tria
% nomina}. See Section~\ref{sec:Romani}.}
%
% \begin{tcolorbox}[colframe=naslate,
-% adjusted title={``Native'' Eastern Name}:
+% adjusted title={\large ``Native'' Eastern Name}:
% \marg{SNN, Affix}\oarg{Alternate}]
-% \centering\small\smallskip
-%
-% \tcbox[equal height group=B,on line,tikznode,
-% colback=white,
-% adjusted title={\bfseries\sffamily Family name:\\ \meta{SNN}}]
-% {Family\,/\,clan name}\hfill^^A
+% \centering\small^^A
+%^^A
+% \tcbox[equal height group=B,on line,tikznode,colback=white,
+% adjusted title={\bfseries\sffamily Family:\meta{SNN}}]
+% {\hbox to \nameboxi {\hfil Family\,/\,clan name\hfil}}\hfill^^A
%^^A
-% \tcbox[equal height group=B,on line,
-% tikznode,colback=white,
-% adjusted title={\bfseries\sffamily Personal name:\\ \meta{Affix}}]
-% {Few multiple\\
-% names; multi-\\
-% character okay.\\\vspace{-3ex}
-% \phantom{\textit{nomen\,/\,cognomen}}}\hfill^^A
+% \tcbox[equal height group=B,on line,tikznode,colback=white,
+% adjusted title={\bfseries\sffamily Personal:\meta{Affix}}]
+% {\hbox to \nameboxii {\hfil Usually one name\hfil}}\hfill^^A
%^^A
-% \tcbox[equal height group=B,on line,tikznode,
-% colback=white,colframe=nared,
-% adjusted title={\bfseries\sffamily Alt. name:\\ \meta{Alternate}}]
-% {Replaces \meta{Affix}\\
-% only in text.\footnotemark\\
-% \phantom{\textit{notable attribute}}}\smallskip
+% \tcbox[equal height group=B,on line,tikznode,colback=white,colframe=nared,
+% adjusted title={\bfseries\sffamily Alias:\meta{Alternate}}]
+% {\hbox to \nameboxiii {\hfil Replaces \meta{Affix}\hfil}\\
+% only in text.\footnotemark}
% \end{tcolorbox}
% \footnotetext{The obsolete syntax uses \meta{Alternate} instead of
% \meta{Affix} for a personal name (Section~\ref{sec:Obsolete}).}
%
% \begin{tcolorbox}[colframe=naslate,
-% adjusted title={Royal/Medieval/Ancient Name}:
+% adjusted title={\large Royal/Medieval/Ancient Name}:
% \marg{SNN, Affix}\oarg{Alternate}]
-% \centering\small\smallskip
-%
+% \centering\small^^A
+%^^A
% \tcbox[equal height group=C,on line,tikznode,colback=white,
-% adjusted title={\bfseries\sffamily Personal name:\\ \meta{SNN}}]
-% {\small Given name(s)\\
+% adjusted title={\bfseries\sffamily Personal:\meta{SNN}}]
+% {\hbox to \nameboxi {\hfil Given name(s)\hfil}\\
% \phantom{Family\,/\,clan name}}\hfill^^A
%^^A
-% \tcbox[equal height group=C,on line,tikznode,
-% colback=white,colframe=nared,
-% adjusted title={\bfseries\sffamily Qualifier:\\ \meta{Affix}}]
-% {Sobriquet/title:\\
+% \tcbox[equal height group=C,on line,tikznode,colback=white,colframe=nared,
+% adjusted title={\bfseries\sffamily Qualifier:\meta{Affix}}]
+% {\hbox to \nameboxii {\hfil Sobriquet\,/\,title:\hfil}\\
% \textit{Sr., Jr., III\dots}\\
% \textit{notable attribute}\\
% \textit{origin, region}\\
-% \textit{patronym}\\\vspace{-3ex}
-% \phantom{\textit{nomen\,/\,cognomen}}}\hfill^^A
+% \textit{patronym}}\hfill^^A
%^^A
-% \tcbox[equal height group=C,on line,tikznode,
-% colback=white,colframe=nared,
-% adjusted title={\bfseries\sffamily Alt. name:\\ \meta{Alternate}}]
-% {Replaces \meta{Affix}\\
-% only in text.\footnotemark\\
-% \phantom{\textit{notable attribute}}}\smallskip
+% \tcbox[equal height group=C,on line,tikznode,colback=white,colframe=nared,
+% adjusted title={\bfseries\sffamily Alias:\meta{Alternate}}]
+% {\hbox to \nameboxiii {\hfil Replaces \meta{Affix}\hfil}\\
+% only in text.\footnotemark}
% \end{tcolorbox}
% \footnotetext{The obsolete syntax uses \meta{Alternate} instead of
% \meta{Affix} for a qualifier (Section~\ref{sec:Obsolete}).}
%
% \newpage
%
-% \subsubsection[Final Optargs]{Final Optional Arguments}
-% \label{sec:FinalOptargs}
+% \subsubsection{Name Ambiguity}
%
-% Macros that take name arguments (Sections~\ref{sec:NameArgs} and~\ref{sec:NameArgMacros}) have the potential to contain a final optional argument. Their trailing arguments look like:
+% \begin{itemize}
+% \item \textbf{Name forms are ambiguous.}
%
-% \begin{tcolorbox}[colframe=naslate]\centering
-% \begin{tabular}{c@{ }c}
-% \small Required & \small Optional\\
-% \tcbox[equal height group=E,colback=white,
-% tikznode,left=1mm,right=1mm,valign=center]
-% {\bfseries\dots\marg{SNN\color{nared}, Affix}} &
-% \tcbox[equal height group=E,colback=white,
-% tikznode,left=1mm,right=1mm,valign=center]
-% {\bfseries\oarg{\color{nared}Alternate}}
+% In Western culture, one often sees forenames followed by a surname. Patronyms, as in \Name[Leif]{Erikson} and \Name{Llywelyn, ap Gruffudd}, and other exceptions exist.\footnote{Indexed here under \Name[Leif]{Erikson} and \Name{Llywelyn, ap Gruffudd}. See also \href{https://www.theindexer.org/wp-content/uploads/2020/07/welsh-personal-names.pdf} {\bfseries this document} on indexing Welsh names.}
+% Some readers might assume the following:
+%
+% \begin{center}
+% \renewcommand\NamesFormat{\color{blue}\sffamily}
+% \renewcommand\MainNameHook{\color{blue}\sffamily}
+% \begin{tabular}{lll}\toprule
+% \rowcolor{nagrey}\bfseries Forename & \bfseries Forename & \bfseries Surname\\
+% \SubvertThis\FName[M.T.]{Cicero}[Marcus] &
+% \FName[M.T.]{Cicero}[Tullius] &
+% \Name[M.T.]{Cicero}\\\midrule
+% \rowcolor{nagrey}\bfseries Forename & & \bfseries Surname\\
+% \SubvertThis\Name{Pontius, Pilate} & &
+% \ForceFN\FName{Pontius, Pilate}\\
+% \SubvertThis\Name{Jesus, Christ} & &
+% \ForceFN\FName{Jesus, Christ}\\\bottomrule
% \end{tabular}
-% \end{tcolorbox}\smallskip
+% \end{center}
%
-% Usually these arguments have no side effects, except in the case where we want to follow a name with an editorial insertion enclosed in square brackets. Since this does occur in academic and journalistic writing, we show how to handle this below and on the next page, where we suppress formatting to focus on syntax:
+% Even though all these initial assumptions are false, Western naming conventions tend to dominate the general readership market and, \textit{mutatis mutandis}, they affect the use and indexing of names.
%
-% \begin{VerbatimOut}{\jobname.tmp}
-% \begin{itemize}
-% \item We are looking for ``Albert Einstein [said]'' and
-% ``Miyazaki Hayao [said]''; also ``Einstein [said]''
-% and ``Miyazaki [said]''.
-% \item We get ``\Name[Albert]{Einstein} [said]'' and
-% ``\Name{Miyazaki, Hayao} [said]''.
-% The personal names got replaced with alternate
-% name arguments in the long name forms.
-% \item Repeating does not help: ``\Name[Albert]{Einstein}
-% [said]'' and ``\Name{Miyazaki, Hayao} [said]''.
-% The text \texttt{[said]} was not displayed due to
-% shorter name forms being shown by default in
-% subsequent name uses.
-% \item[] \textbf{We fix the situation thus:}
-% \item Add explicit spaces: ``\Name[Albert]{Einstein}\
-% [said]'' and ``\Name {Miyazaki, Hayao}\ [said]''.
-% \item Add curly braces: ``\Name[Albert]{Einstein}{}
-% [said]'' and ``\Name{Miyazaki, Hayao}{} [said]''.
-% \end{itemize}
-% \end{VerbatimOut}
+% \item \textbf{Cultural context resolves ambiguity.}
%
-% \begin{quote}\small
-% \VerbatimInput[gobble=0]{\jobname.tmp}
+% Here we see how the names above have meaning in their proper context. The words themselves \textit{as signs} do not offer the as many clues about their meaning until the signs become part of a cultural landscape.
+%
+% \begin{center}
+% \renewcommand\NamesFormat{\sffamily}
+% \renewcommand\MainNameHook{\sffamily}
+% \begin{tabular}{lll}\toprule
+% \rowcolor{nagrey}\bfseries Personal Name &
+% \bfseries Clan Name & \bfseries Branch Family or Nickname\\
+% \SubvertThis\FName[M.T.]{Cicero}[Marcus] &
+% \FName[M.T.]{Cicero}[Tullius] &
+% \Name[M.T.]{Cicero}\\
+% & \SubvertThis\Name{Pontius, Pilate} &
+% \ForceFN\FName{Pontius, Pilate}\\\midrule
+% \rowcolor{nagrey}\bfseries Personal Name & & \bfseries Sobriquet\\
+% \SubvertThis\Name{Jesus, Christ} & &
+% \ForceFN\FName{Jesus, Christ}\\\bottomrule
+% \end{tabular}
+% \end{center}
+%
+% \item \textbf{This package embraces such ambiguities.}
+%
+% Roman \textit{praenomina} did not have the same significance as Western forenames.\footnote{See \href{https://en.wikipedia.org/wiki/Praenomen}{Wikipedia}. Roman names in particular are sensitive to the historical and political development of Rome and its empire, the history of Roman families and culture, as well as other factors.}
+% Yet the family name (\textit{nomen}) of the man we call \Name[M.T.]{Cicero} is \FName[M.T.]{Cicero}[Tullius]. In English, he used to be known as \IndexRef{Tully}{Cicero, M.T.}\Name{Tully}. In this manual we choose the popular case for the \textit{cognomen} \Name[M.T.]{Cicero} as a Western surname. Scholarly publications can take at least two different approaches (see Section~\ref{sec:Romani}).
+%
+% The name \Name*{Pontius, Pilate} has no personal name, which fits with Roman naming trends. \Name{Pontius, Pilate} is a clan name. Most texts and inscriptions favor the \textit{cognomen} \ForceFN\FName{Pontius, Pilate}[Pilatus], denoting martial prowess.
+%
+% \Name*{Jesus, Christ} is a name derived from Greek \el{Ἰησοῦς Χριστός}, from \textit{Y'shua ha-Mashiach}, Joshua the Anointed One. The personal name is \Name{Jesus, Christ}. Other added names are titles or descriptors.
+%
+% \item \textbf{Macros can modify names in the text to fit cultural norms.}
+%
+% Name forms in the text are independent of their index entries. This is necessary for special cases like Hungarian names. Thus, a text oriented to Hungarian readers can talk about \RevName\Name[Frenec]{Liszt}\dag\ (\IndexRef[Franz]{Liszt}{Liszt, Frenec}\Name[Franz]{Liszt}) in the body text, but he can be indexed as \ShowIdxPageref*[Frenec]{Liszt}. One can do something similar with East Asian names, if Western index entries are required.
+%
+% \item \textbf{Name arguments determine index entry forms.}
+%
+% The way that one puts names into macro name arguments absolutely determines the entry form in the index:\medskip
+%
+% \begingroup\IndexInactive\footnotesize
% \renewcommand\NamesFormat{}
% \renewcommand\MainNameHook{}
+% \begin{tabular}{l@{\ }l@{\ }l}\toprule
+% \rowcolor{nagrey}\bfseries Printed Name &
+% \bfseries Macro and Arguments & \bfseries Western Index Entry\\
+% \Name[Person]{Family, Affix} & |\Name[Person]{Family, Affix}| &
+% \ShowIdxPageref*[Person]{Family, Affix}\\
+% \Name[Person]{Family} & |\Name[Person]{Family}| &
+% \ShowIdxPageref*[Person]{Family}\\
+% \RevName\Name*[Person]{Family} & |\RevName%| &
+% \ShowIdxPageref*[Person]{Family}\\
+% & |\Name[Person]{Family}|\\\midrule
+% \rowcolor{nagrey}\bfseries Printed Name &
+% \bfseries Macro and Arguments & \bfseries Nonwestern Index Entry\\
+% \Name{Family, Person} & |\Name{Family, Person}| &
+% \ShowIdxPageref*{Family, Person}\\
+% \RevName\Name*{Family, Person} & |\RevName%| &
+% \ShowIdxPageref*{Family, Person}\\
+% & |\Name{Family, Person}|\\
+% \Name{Person, Affix} & |\Name{Person, Affix}| &
+% \ShowIdxPageref*{Person, Affix}\\
+% \Name{Person} & |\Name{Person}| &
+% \ShowIdxPageref*{Person}\\\bottomrule
+% \end{tabular}\IndexActive
+% \endgroup\bigskip
+%
+% The following choices reflect non-scholarly English-language books. Later sections will show different ways to encode name arguments for scholarly works or non-English books.
%
-% \input{\jobname.tmp}
-% \end{quote}
+% \begin{center}\footnotesize
+% \renewcommand\NamesFormat{\sffamily}
+% \renewcommand\MainNameHook{\sffamily}
+% \begin{tabular}{lll}\toprule
+% \rowcolor{nagrey}\bfseries Printed Name &
+% \bfseries Macro and Arguments & \bfseries Western Index Entry\\
+% \ForgetThis\Name[M.T.]{Cicero} & \cmd{\Name[M.T.]\{Cicero\}} &
+% \ShowIdxPageref*[M.T.]{Cicero}\\\midrule
+% \rowcolor{nagrey}\bfseries Printed Name &
+% \bfseries Macro and Arguments & \bfseries Nonwestern Index Entry\\
+% \ForgetThis\Name{Pontius, Pilate} & \cmd{\Name\{Pontius, Pilate\}} &
+% \ShowIdxPageref*{Pontius, Pilate}\\
+% \ForgetThis\Name{Jesus, Christ} & \cmd{\Name\{Jesus, Christ\}} &
+% \ShowIdxPageref*{Jesus, Christ}\\\bottomrule
+% \end{tabular}
+% \end{center}
%
-% The same situation and resolution happens also when name shorthands have been defined. For example, ``\cmd{\Einstein\textbackslash\ [said]}'' produces ``\Einstein\ [said]'' and ``\cmd{\Miyazaki\textbackslash\ [said]}'' produces ``\Miyazaki\ [said]''. This situation does not arise with great frequency, but it can crop up occasionally and may leave one scratching one's head over something odd in the text.
+% \item \textbf{Name complexity creates \textsf{nameauth} complexity.}
+%
+% We might take names for granted until we have to consider them, use them in multicultural contexts, index them, and so on. Even if one does not use the \textsf{nameauth} package, one cannot escape this complexity.
+%
+% Indeed, it is only through the process of making \textsf{nameauth} that the present author became aware of the many intricate and fascinating complexities of names. The hope is that this package might facilitate accurate and respectful cross-cultural use of names in quality publications.
+% \end{itemize}
+%
+% \begin{Quote}{\Name[Theodore]{Roosevelt}\break\hbox{}\hfill
+% Introduction, \textit{The Papers and Writings of Abraham Lincoln} (1905)}
+% It is a very poor thing, whether for nations or individuals, to advance the history of great deeds done in the past as an excuse for doing poorly in the present; but it is an excellent thing to study the history of the great deeds of the past, and of the great men who did them, with an earnest desire to profit thereby so as to render better service in the present. In their essentials, the men of the present day are much like the men of the past, and the live issues of the present can be faced to better advantage by men who have in good faith studied how the leaders of the nation faced the dead issues of the past.\negmedskip^^A
+% \index{politicians, quotes of\noexpand\string|hyperpage}
+% \end{Quote}
%
% \newpage
%
% \subsection{Basic Interface}
% \label{sec:BasicStart}
%
-% The description of macro arguments in this section applies to all \textsf{nameauth} macros that take name arguments (Sections~\ref{sec:NameArgs} and~\ref{sec:NameArgMacros}). Thus, this section and its subsection are the most critical to understanding and mastering the use of \textsf{nameauth}.
+% The description of macro arguments in this section applies to all \textsf{nameauth} macros that take name arguments (Sections~\ref{sec:NameArgs} and~\ref{sec:NameArgMacros}), making this section critical to using and mastering \textsf{nameauth}.
%
% \begin{itemize}
% \item If the required argument \meta{SNN} is empty, \textsf{nameauth}
@@ -1796,9 +1876,8 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{itemize}
%
% \subsubsection{Western Names}
-% \negsmallskip
%
-% \begin{tcolorbox}[colframe=naslate]\centering\small
+% \begin{tcolorbox}[colframe=naslate]\centering
% \begin{tabular}{l@{ }c@{ }c@{ }c}
% & Required & Required \meta{SNN} & Optional\\
% & \meta{FNN} & optional \meta{Affix} & (text only)\\[1ex]
@@ -1837,7 +1916,8 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \subsubsection*{\hfil Full, Last, and First Names}
%
-% \cmd{\Name} prints first uses of names long, then short thereafter. \cmd{\Name*} ensures a long form. \cmd{\FName} prints long in first uses, then just a forename in later uses. \cmd{\FName*} does the same thing as \cmd{\FName} (just add an \texttt{F}\dots). The affix in a surname only appears in long name references.
+% \cmd{\Name} prints first uses of names long, then short thereafter. \cmd{\Name*} ensures a long form. Both \cmd{\FName} and \cmd{\FName*} print long names in first uses, then just a forename in later uses.\footnote{The intent is that one can just add an \texttt{F} to either \cmd{\Name} or \cmd{\Name*}.}
+% The affix in a surname only appears in long name instances.
%
% \begin{Block}
% \vspace{3.5ex}
@@ -1846,79 +1926,92 @@ and version 1.3 or later is part of all distributions of LaTeX version
% {\ShowIdxPageref*[George]{Washington}\break
% \ShowIdxPageref*[George S.]{Patton, Jr.}}
% \vspace{-3.5ex}
-% \FUse |\Name [George]{Washington}|\dotfill \Name [George]{Washington}\\
-% \LUse |\Name*[George]{Washington}|\dotfill \Name*[George]{Washington}\\
-% \LUse |\Name [George]{Washington}|\dotfill \Name [George]{Washington}\\
-% \LUse |\FName[George]{Washington}|\dotfill \FName[George]{Washington}
-% \end{Block}\negmedskip
+% \ForgetName[George]{Washington}
+% \FUse \Name [George]{Washington}\dotfill^^A
+% |\Name [George]{Washington}|\break
+% \LUse \Name*[George]{Washington}\dotfill^^A
+% |\Name*[George]{Washington}|\break
+% \LUse \Name [George]{Washington}\dotfill^^A
+% |\Name [George]{Washington}|\break
+% \LUse \FName[George]{Washington}\dotfill^^A
+% |\FName[George]{Washington}|
+% \end{Block}
%
% \begin{Block}
-% \FUse |\Name [George S.]{Patton, Jr.}|\dotfill
-% \Name [George S.]{Patton, Jr.}\\
-% \LUse |\Name*[George S.]{Patton, Jr.}|\dotfill
-% \Name*[George S.]{Patton, Jr.}\\
-% \LUse |\Name [George S.]{Patton, Jr.}|\dotfill
-% \Name [George S.]{Patton, Jr.}\\
-% \LUse |\FName[George S.]{Patton, Jr.}|\dotfill
-% \FName[George S.]{Patton, Jr.}
+% \FUse \Name [George S.]{Patton, Jr.}\dotfill^^A
+% |\Name [George S.]{Patton, Jr.}|\break
+% \LUse \Name*[George S.]{Patton, Jr.}\dotfill^^A
+% |\Name*[George S.]{Patton, Jr.}|\break
+% \LUse \Name [George S.]{Patton, Jr.}\dotfill^^A
+% |\Name [George S.]{Patton, Jr.}|\break
+% \LUse \FName[George S.]{Patton, Jr.}\dotfill^^A
+% |\FName[George S.]{Patton, Jr.}|
% \end{Block}
%
% \subsubsection*{\hfil Affixes and Alternate Forms}
%
-% In a long name reference, \cmd{\DropAffix} drops a name affix from a Western name. The \meta{Alternate} argument permits changes in the text only for long references and forename-only references. Otherwise, the automatic shortening of names will display only a short surname.
+% In a long name instance, \cmd{\DropAffix} drops the affix from a Western surname. The \meta{Alternate} argument appears only in long names or forename-only names in the text. Otherwise, the automatic shortening of names will display only a short surname.
%
% \begin{itemize}
-% \vspace{5ex}
+% \item Drop the affix in a long name instance (forced by \cmd{\Name*}):
% \BothInfo{\ShowPattern[George S.]{Patton, Jr.}\break
% \ShowPattern[J.D.]{Rockefeller, IV}\break
% \ShowPattern[Clive Staples]{Lewis}}
% {\ShowIdxPageref*[George S.]{Patton, Jr.}\break
% \ShowIdxPageref*[J.D.]{Rockefeller, IV}\break
% \ShowIdxPageref*[Clive Staples]{Lewis}}
-% \vspace{-5ex}
-% \item Drop the affix in a long name reference:\\[1ex]
-% \FUse |\DropAffix\Name*[George S.]{Patton, Jr.}|\dotfill\hbox{}\\
-% \hbox{}\dotfill \ForgetThis\DropAffix\Name*[George S.]{Patton, Jr.}\\
-% \LUse |\DropAffix\Name*[George S.]{Patton, Jr.}|\dotfill\hbox{}\\
-% \hbox{}\dotfill \DropAffix\Name*[George S.]{Patton, Jr.}
-% \item Use an alternate forename in a long name or forename
-% reference:\\[1ex]
-% \FUse \cmd{\Name[J.D.]\{Rockefeller, IV\}[John Davison]}\dotfill
-% \hbox{}\\
-% \hbox{}\dotfill\Name[J.D.]{Rockefeller, IV}[John Davison]\\
-% \LUse |\FName[George S.]{Patton, Jr.}[George]|\dotfill
-% \FName[George S.]{Patton, Jr.}[George]
-% \item Drop the affix and alter the forenames:\\[1ex]
-% \FUse |\DropAffix\Name*[J.D.]{Rockefeller, IV}[Jay]|\dotfill\hbox{}\\
-% \hbox{}\dotfill\ForgetThis\DropAffix\Name*[J.D.]{Rockefeller, IV}[Jay]
-% \LUse |\DropAffix\Name*[J.D.]{Rockefeller, IV}[Jay]|\dotfill\hbox{}\\
-% \hbox{}\dotfill\DropAffix\Name*[J.D.]{Rockefeller, IV}[Jay]
-% \item Use multiple alternate forenames for the same person:\\[1ex]
-% \FUse |\Name [Clive Staples]{Lewis}|\dotfill \Name [Clive Staples]{Lewis}\\
-% \LUse |\Name*[Clive Staples]{Lewis}[C.S.]|\dotfill
-% \Name*[Clive Staples]{Lewis}[C.S.]\\
-% \LUse |\FName[Clive Staples]{Lewis}[Jack]|\dotfill
-% \FName[Clive Staples]{Lewis}[Jack]
-% \end{itemize}
-% \negmedskip
+% \begin{Block}
+% \FUse \ForgetThis\DropAffix\Name*[George S.]{Patton, Jr.}\\
+% \UseB |\DropAffix\Name*[George S.]{Patton, Jr.}|\\
+% \LUse \DropAffix\Name*[George S.]{Patton, Jr.}\\
+% \UseB |\DropAffix\Name*[George S.]{Patton, Jr.}|
+% \end{Block}
%
-% To sort the index consistently and properly, all names should be sorted by their longest unique name forms and by the Arabic equivalents of Roman numerals. See Section~\ref{sec:NameMedieval}, \ref{sec:IndexSort}, \ref{sec:IndexInitials}, \ref{sec:VarNames}. and all of Section~\ref{sec:AdvancedFormat}.
+% \item Use an alternate forename in a long- or forename instance:
+% \begin{Block}
+% \FUse \Name[J.D.]{Rockefeller, IV}[John Davison]\\
+% \UseB |\Name[J.D.]{Rockefeller, IV}[John Davison]|\\
+% \LUse \FName[George S.]{Patton, Jr.}[George]\\
+% \UseB |\FName[George S.]{Patton, Jr.}[George]|
+% \end{Block}
%
-% \begin{itemize}
-% \item[] For example, with the name \LJRIV:
-% \item The initials \texttt{J.D.} become \texttt{John D} in the sort tag.
-% \item The affix \texttt{IV} becomes \texttt{4}.
-% \item |\PretagName[J.D.]{Rockefeller, IV}{Rockefeller, John D 4}|
+% \item Drop the affix and alter the forenames:
+% \begin{Block}
+% \FUse \ForgetThis\DropAffix\Name*[J.D.]{Rockefeller, IV}[Jay]\\
+% \UseB |\DropAffix\Name*[J.D.]{Rockefeller, IV}[Jay]|\\
+% \LUse \DropAffix\Name*[J.D.]{Rockefeller, IV}[Jay]\\
+% \UseB |\DropAffix\Name*[J.D.]{Rockefeller, IV}[Jay]|
+% \end{Block}
+%
+% \item Use multiple alternate forenames for the same person:
+% \begin{Block}
+% \FUse \Name [Clive Staples]{Lewis}\\
+% \UseB |\Name [Clive Staples]{Lewis}|\\
+% \LUse \Name*[Clive Staples]{Lewis}[C.S.]\\
+% \UseB |\Name*[Clive Staples]{Lewis}[C.S.]|\\
+% \LUse \FName[Clive Staples]{Lewis}[Jack]\\
+% \UseB |\FName[Clive Staples]{Lewis}[Jack]|
+% \end{Block}
% \end{itemize}
%
+% \begin{InfoBox}
+% To sort the index consistently and properly, all names should be sorted by their longest unique name forms and by the Arabic equivalents of Roman numerals. See Section~\ref{sec:NameMedieval}, \ref{sec:IndexSort}, \ref{sec:IndexInitials}, \ref{sec:VarNames}. and all of Section~\ref{sec:AdvancedFormat}. For example:
+%
+% \begin{center}
+% |\PretagName[J.D.]{Rockefeller, IV}{Rockefeller, John D 4}|
+% \end{center}
+% \end{InfoBox}
+%
% \begin{Quote}{\ForgetThis\Wash, Farewell Address (1796)}
-% The alternate domination of one faction over another, sharpened by the spirit of revenge, \dots is itself a frightful despotism. But this leads at length to a more formal and permanent despotism. The disorders and miseries, which result, gradually incline the minds of men to seek security and repose in the absolute power of an individual; and sooner or later the chief of some prevailing faction, more able or more fortunate than his competitors, turns this disposition to the purposes of his own elevation, on the ruins of Public Liberty.
+% The alternate domination of one faction over another, sharpened by the spirit of revenge, \dots is itself a frightful despotism. But this leads at length to a more formal and permanent despotism. The disorders and miseries, which result, gradually incline the minds of men to seek security and repose in the absolute power of an individual; and sooner or later the chief of some prevailing faction, more able or more fortunate than his competitors, turns this disposition to the purposes of his own elevation, on the ruins of Public Liberty.^^A
+% \index{politicians, quotes of\noexpand\string|hyperpage}
% \end{Quote}
%
+% \newpage
+%
% \subsubsection[Reversed Western]{Reversed Western Names}
-% \negsmallskip
%
-% \begin{tcolorbox}[colframe=naslate]\centering\small
+% \begin{tcolorbox}[colframe=naslate]\centering
% \begin{tabular}{l@{ }c@{ }c@{ }c}
% & Required & Required \meta{SNN} & Optional\\
% & \meta{FNN} & no \meta{Affix} & (text only)\\[1ex]
@@ -1955,41 +2048,40 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \subsubsection*{\hfil Starting with Western Name Forms}
%
-% \leavevmode^^A
+% These reversed Western forms are used optimally in a context where Hungarian names and similar cases of name order appear in a document because their index entries take a Western form [\hyperlink{Mulvany}{Mulvany}, 166].\footnote{Regarding the margin note that shows name control sequences, with \texttt{pdflatex} and \texttt{latex}, in \texttt{\ShowPattern[Frenec]{Molnár}} the glyphs \texttt{Ãą} correspond to \cmd{\IeC\{\textbackslash\textquotesingle a\}}.}
+%
+% \begin{Block}
% \BothInfo{\ShowPattern[Frenec]{Molnár}\break
% \ShowPattern[Hideyo]{Noguchi}}
% {\ShowIdxPageref*[Hideyo]{Noguchi}\break
% \ShowIdxPageref*[Frenec]{Molnár}}
-% These reversed Western forms are used optimally in a context where Hungarian names and similar cases of name order appear in a document because their index entries take a Western form [\hyperlink{Mulvany}{Mulvany}, 166].\footnote{Regarding the margin note that shows name control sequences, with \texttt{pdflatex} and \texttt{latex}, in \texttt{\ShowPattern[Frenec]{Molnár}} the glyphs \texttt{Ãą} correspond to \cmd{\IeC\{\textbackslash\textquotesingle a\}}.}
-%
-% \begin{Block}
-% \FUse |\Name [Frenec]{Molnár}|\dotfill \Name [Frenec]{Molnár}\\
-% \FUse |\Name [Hideyo]{Noguchi}|\dotfill \Name [Hideyo]{Noguchi}\\
-% \LUse |\Name*[Hideyo]{Noguchi}[Doctor]|\dotfill \Name*[Hideyo]{Noguchi}[Doctor]
+% \FUse \Name [Frenec]{Molnár}\dotfill |\Name [Frenec]{Molnár}|\\
+% \FUse \Name [Hideyo]{Noguchi}\dotfill |\Name [Hideyo]{Noguchi}|\\
+% \LUse \Name*[Hideyo]{Noguchi}[Doctor]\dotfill |\Name*[Hideyo]{Noguchi}[Doctor]|
% \end{Block}
%
% \subsubsection*{\hfil Using the Reversing Macros}
%
-% \noindent We use the prefix macros \cmd{\RevName} and optionally \cmd{\CapName} (Section~\ref{sec:SelectOver}) to print a Hungarian or ``non-native'' Eastern name in the text while keeping Western forms in the index. These macros, as is the case with many \textsf{nameauth} macros, work properly in context, not arbitrarily:
+% \noindent We use the prefix macros \cmd{\RevName} and optionally \cmd{\CapName} (Section~\ref{sec:SelectOver}) to print either a Hungarian or ``non-native'' Eastern name in the text while keeping Western forms in the index:
%
% \begin{Block}
-% \LUse |\RevName\Name*[Frenec]{Molnár}\dag|\Same\dotfill
-% \RevName\Name*[Frenec]{Molnár}\dag\\
-% \LUse |\RevName\Name [Frenec]{Molnár}\dag|\dotfill
-% \RevName\Name [Frenec]{Molnár}\dag\\
-% \LUse |\CapName\RevName\Name*[Hideyo]{Noguchi}[Sensei]\dag|\dotfill\\
-% \hbox{}\dotfill \CapName\RevName\Name*[Hideyo]{Noguchi}[Sensei]\dag\\
-% \LUse |\CapName\RevName\Name [Hideyo]{Noguchi}[Sensei]\dag|\dotfill\\
-% \hbox{}\dotfill \CapName\RevName\Name [Hideyo]{Noguchi}[Sensei]\dag
+% \LUse\Same \RevName\Name*[Frenec]{Molnár}\dag\\
+% \UseB |\RevName\Name*[Frenec]{Molnár}\dag|\\
+% \LUse \RevName\Name [Frenec]{Molnár}\dag\\
+% \UseB |\RevName\Name [Frenec]{Molnár}\dag|\\
+% \LUse \CapName\RevName\Name*[Hideyo]{Noguchi}[Sensei]\dag\\
+% \UseB |\CapName\RevName\Name*[Hideyo]{Noguchi}[Sensei]\dag|\\
+% \LUse \CapName\RevName\Name [Hideyo]{Noguchi}[Sensei]\dag\\
+% \UseB |\CapName\RevName\Name [Hideyo]{Noguchi}[Sensei]\dag|
% \end{Block}
%
-% If Western names are reversed to have Eastern order, they will have Eastern name order in the text, but \emph{they will retain Western-form index entries.} The reversing macros help when a publication uses only Western name entries in the index, or when printing and indexing names with requirements like Hungarian names.
+% These macros, as is the case with many \textsf{nameauth} macros, work properly in context, not arbitrarily. \emph{They always have Western index entries,} regardless of how they appear in the text.
%
% \subsubsection{Eastern Names}
%
-% All non-Western name forms in \textsf{nameauth} have the syntax: \meta{SNN,Affix}. In Eastern names, \meta{SNN} refers to a family name and \meta{Affix} to a personal name. Otherwise, \meta{SNN} refers to a person's name and \meta{Affix} to added information. Knowing this difference helps one avoid nonsense names.\medskip
+% All nonwestern name forms in \textsf{nameauth} have the syntax: \meta{SNN,Affix}. In Eastern names, \meta{SNN} refers to a family name and \meta{Affix} to a personal name. Otherwise, \meta{SNN} refers to a person's name and \meta{Affix} to added information. Knowing this difference helps one avoid nonsense names.\medskip
%
-% \negsmallskip\begin{tcolorbox}[colframe=naslate]\centering\small
+% \begin{tcolorbox}[colframe=naslate]\centering
% \begin{tabular}{l@{ }c@{ }c}
% & Required \meta{SNN} & Optional\\
% & required \meta{Affix} & (text only)\\[1ex]
@@ -2013,10 +2105,10 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \begin{itemize}
% \item They must \emph{leave empty} the \meta{FNN} argument.
% \item They use instead the \meta{SNN, Affix} arguments.
-% \item Their index entries take the non-Western form: \meta{SNN Affix}.
+% \item Their index entries take the nonwestern form: \meta{SNN Affix}.
% \item Names with the form \meta{SNN, Affix} can use the \meta{Alternate}
% argument to swap \meta{Affix} with \meta{Alternate}.
-% \item They have non-Western name patterns and index entry forms.
+% \item They have nonwestern name patterns and index entry forms.
% \end{itemize}
%
% \subsubsection*{\hfil ``Native'', Reversible Eastern Name Forms}
@@ -2028,39 +2120,33 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \BothInfo{\ShowPattern{Miyazaki, Hayao}}
% {\ShowIdxPageref*{Miyazaki, Hayao}}
% \vspace{-3.5ex}
-% \FUse |\Name {Miyazaki, Hayao}|\dotfill
-% \ForgetThis\Name {Miyazaki, Hayao}\\
-% \LUse |\Name {Miyazaki, Hayao}|\dotfill \Name {Miyazaki, Hayao}\\
-% \LUse |\Name*{Miyazaki, Hayao}[Sensei]|\dotfill
-% \Name*{Miyazaki, Hayao}[Sensei]\\
-% \LUse |\FName{Miyazaki, Hayao}|\dotfill \FName{Miyazaki, Hayao}
+% \ForgetName {Miyazaki, Hayao}
+% \FUse \Name {Miyazaki, Hayao}\dotfill |\Name {Miyazaki, Hayao}|\\
+% \LUse \Name {Miyazaki, Hayao}\dotfill |\Name {Miyazaki, Hayao}|\\
+% \LUse \Name*{Miyazaki, Hayao}[Sensei]\dotfill |\Name*{Miyazaki, Hayao}[Sensei]|\\
+% \LUse \FName{Miyazaki, Hayao}\dotfill |\FName{Miyazaki, Hayao}|
% \end{Block}
%
% One must use \cmd{\ForceFN} with \cmd{\FName} (Section~\ref{sec:FName}) to get a personal name. \meta{Alternate} swaps with \meta{FNN} (in both long forms and in short forms) in the text only. \meta{Alternate} does not work with the obsolete syntax (Section~\ref{sec:Obsolete}):
%
% \begin{Block}
-% \LUse |\ForceFN\FName{Miyazaki, Hayao}|\Same\dotfill
-% \ForceFN\FName{Miyazaki, Hayao}\\
-% \LUse |\CapName\Name*{Miyazaki, Hayao}[Sensei]|\dotfill
-% \CapName\Name*{Miyazaki, Hayao}[Sensei]\\
-% \LUse |\ForceFN\FName{Miyazaki, Hayao}[Sensei]|\dotfill
-% \ForceFN\FName{Miyazaki, Hayao}[Sensei]\\
-% \LUse |\RevName\Name*{Miyazaki, Hayao}[Mr.]|\dotfill
-% \RevName\Name*{Miyazaki, Hayao}[Mr.]
+% \LUse\Same \ForceFN\FName{Miyazaki, Hayao}\dotfill^^A
+% |\ForceFN\FName{Miyazaki, Hayao}|\\
+% \LUse \CapName\Name*{Miyazaki, Hayao}[Sensei]\dotfill^^A
+% |\CapName\Name*{Miyazaki, Hayao}[Sensei]|\\
+% \LUse \ForceFN\FName{Miyazaki, Hayao}[Sensei]\dotfill^^A
+% |\ForceFN\FName{Miyazaki, Hayao}[Sensei]|\\
+% \LUse \RevName\Name*{Miyazaki, Hayao}[Mr.]\dotfill^^A
+% |\RevName\Name*{Miyazaki, Hayao}[Mr.]|
% \end{Block}
%
% If ``native'' Eastern names are reversed, they will have Western name order in the text, but \emph{they will retain Eastern-form index entries.}
%
-% \begin{Quote}{\Name[Harold]{Urey} (1961)}
-% The space program is not only scientific in purpose but also is an expression of man's insistent determination to do the nearly impossible\,---\,to explore the unknown, even at great risk.\vspace{-1ex}
-% \end{Quote}
-%
% \newpage
%
% \subsubsection[Ancient Names]{Royal, Medieval, and Ancient Names}
-% \negsmallskip
%
-% \begin{tcolorbox}[colframe=naslate]\centering\small
+% \begin{tcolorbox}[colframe=naslate]\centering
% \begin{tabular}{l@{ }c@{ }c}
% & Required \meta{SNN} & Optional,\\
% & optional \meta{Affix} & special\\[1ex]
@@ -2079,61 +2165,66 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{tcolorbox}\medskip
%
% \noindent
-% These features denote royal, medieval, and ancient names in \textsf{nameauth}, grouped under the general rubric of ``non-Western'' name forms:
+% These features denote royal, medieval, and ancient names in \textsf{nameauth}, grouped under the general rubric of ``nonwestern'' name forms:
%
% \begin{itemize}
% \item They must \emph{leave empty} the \meta{FNN} argument.
% \item They use either the \meta{SNN, Affix} arguments or just \meta{SNN}.
-% \item Their index entries take the non-Western forms: \meta{SNN Affix}
+% \item Their index entries take the nonwestern forms: \meta{SNN Affix}
% or \meta{SNN}.
% \item Names with the form \meta{SNN, Affix} can use the \meta{Alternate}
% argument to swap \meta{Affix} with \meta{Alternate}.
% \item Names with the form \meta{SNN} should not use \meta{Alternate}
% (cf. Section~\ref{sec:Obsolete}).
-% \item They have non-Western name patterns and index entry forms.
+% \item They have nonwestern name patterns and index entry forms.
% \item One generally does not reverse these names (Section~\ref{sec:RevNames}).
% \end{itemize}
%
% \subsubsection*{\hfil No School Like the Old School}
%
% \begin{itemize}
-% \vspace{3ex}
+% \item \cmd{\FName} normally prints \meta{SNN} to avoid nonsense names
+% in the text.
% \BothInfo{\ShowPattern{Elizabeth, I}\break
% \ShowPattern{John, Eriugena}\break
% \ShowPattern{Aristotle}}
% {\ShowIdxPageref*{Elizabeth, I}\break
% \ShowIdxPageref*{John, Eriugena}\break
% \ShowIdxPageref*{Aristotle}}
-% \vspace{-3ex}
-% \item \cmd{\FName} normally prints \meta{SNN} to avoid nonsense names
-% in the text.\\[1ex]
-% \FUse |\Name {Elizabeth, I}|\dotfill \Name {Elizabeth, I}\\
-% \LUse |\Name {Elizabeth, I}|\dotfill \Name {Elizabeth, I}\\
-% \LUse |\FName{Elizabeth, I}|\dotfill \FName{Elizabeth, I}
-%
-% \item Here we work with titles and sobriquets:\\[1ex]
-% \FUse |\ForgetThis\Name{Elizabeth, I}[I ``Gloriana'']|\dotfill\hbox{}\\
-% \hbox{}\dotfill \ForgetThis\Name{Elizabeth, I}[I ``Gloriana'']
-% \LUse |\ForceFN\FName{Elizabeth, I}[Gloriana]|\dotfill
-% \ForceFN\FName{Elizabeth, I}[Gloriana]
-%
-% \item Here we show a non-royal:\\[1ex]
-% \FUse |\Name {John, Eriugena}[Scotus Eriugena]|\dotfill\hbox{}\\
-% \hbox{}\dotfill \Name {John, Eriugena}[Scotus Eriugena]\\
-% \LUse |\Name*{John, Eriugena}|\dotfill \Name*{John, Eriugena}\\
-% \LUse |\Name {John, Eriugena}|\dotfill \Name {John, Eriugena}\\
-% \LUse |\ForceFN\FName{John, Eriugena}|\dotfill
-% \ForceFN\FName{John, Eriugena}
-%
-% \item These are nonsense names:\\[1ex]
-% \LUse |\ForceFN\FName{Elizabeth, I}|\dotfill
-% \ForceFN\FName{Elizabeth, I}\\
-% \LUse |\RevName\Name*{John, Eriugena}|\dotfill
-% \RevName\Name*{John, Eriugena}
-%
-% \item The trivial case:\\[1ex]
-% \FUse |\Name{Aristotle}|\dotfill \Name{Aristotle}\\
-% \LUse |\Name{Aristotle}|\dotfill \Name{Aristotle}
+% \begin{Block}
+% \FUse \Name {Elizabeth, I}\dotfill |\Name {Elizabeth, I}|\\
+% \LUse \Name {Elizabeth, I}\dotfill |\Name {Elizabeth, I}|\\
+% \LUse \FName{Elizabeth, I}\dotfill |\FName{Elizabeth, I}|
+% \end{Block}
+%
+% \item Here we work with titles and sobriquets:
+% \begin{Block}
+% \FUse \ForgetThis\Name{Elizabeth, I}[I ``Gloriana'']\\
+% \UseB |\ForgetThis\Name{Elizabeth, I}[I ``Gloriana'']|\\
+% \LUse \ForceFN\FName{Elizabeth, I}[Gloriana]\\
+% \UseB |\ForceFN\FName{Elizabeth, I}[Gloriana]|
+% \end{Block}
+%
+% \item Here we show a non-royal:
+% \begin{Block}
+% \FUse \Name {John, Eriugena}[Scotus Eriugena]\\
+% \UseB |\Name {John, Eriugena}[Scotus Eriugena]|\\
+% \LUse \Name*{John, Eriugena}\dotfill |\Name*{John, Eriugena}|\\
+% \LUse \Name {John, Eriugena}\dotfill |\Name {John, Eriugena}|\\
+% \LUse \ForceFN\FName{John, Eriugena}\dotfill |\ForceFN\FName{John, Eriugena}|
+% \end{Block}
+%
+% \item These are nonsensical name forms:
+% \begin{Block}
+% \LUse \ForceFN\FName{Elizabeth, I}\dotfill |\ForceFN\FName{Elizabeth, I}|\\
+% \LUse \RevName\Name*{John, Eriugena}\dotfill |\RevName\Name*{John, Eriugena}|
+% \end{Block}
+%
+% \item The trivial case:
+% \begin{Block}
+% \FUse \Name{Aristotle}\dotfill |\Name{Aristotle}|\\
+% \LUse \Name{Aristotle}\dotfill |\Name{Aristotle}|
+% \end{Block}
% \end{itemize}
%
% \newpage
@@ -2155,8 +2246,9 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \cmd{\end\{nameauth\}}
% \end{SyntaxBox}
%
-% In this context, \meta{arg1} becomes the root of three new macros per name:\medskip
+% In this context, \meta{arg1} becomes the root of three new macros per name:
%
+% \begin{quote}
% \begin{tabular}{@{\quad}l@{\ same as: }ll}
% \texttt{\textbackslash}\meta{arg1} &
% \cmd{\Name\ }\oarg{arg2}\marg{arg3}\oarg{arg4} \\
@@ -2166,7 +2258,8 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \texttt{\textbackslash S}\meta{arg1} &
% \cmd{\FName}\oarg{arg2}\marg{arg3}\oarg{arg4} &
% {\color{nared} |%| S for \textit{short}} \\
-% \end{tabular}\medskip
+% \end{tabular}
+% \end{quote}
%
% Usually we leave \meta{arg4} empty, apart from specific contexts. That field permanently displays only alternate names, or is used with the obsolete syntax (Section~\ref{sec:Obsolete}). Here is another way of thinking about arguments in the \texttt{nameauth} environment that relates back to what we have seen:
%
@@ -2179,11 +2272,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \cmd{\end\{nameauth\}}
% \end{SyntaxBox}
%
-% By seeing the mandatory arguments in black and the optional ones in red, it helps us to see that, if either \meta{arg1} or \meta{arg3} are empty, or \meta{SNN} is empty, \textsf{nameauth} will generate a package error. Forgetting the backslash, any ampersand, or angle bracket will cause fatal errors. See Section~\ref{sec:FinalOptargs} on final optional arguments.\medskip
+% By seeing the mandatory arguments in black and the optional ones in red, it helps us to see that, if either \meta{arg1} or \meta{arg3} are empty, or \meta{SNN} is empty, \textsf{nameauth} will generate a package error. Forgetting the backslash, any ampersand, or angle bracket will cause fatal errors. See Section~\ref{sec:FinalOptargs} on final optional arguments.
%
% Package warnings\Warn\ result when one redefines name shorthands using the \texttt{nameauth} environment. For example, we use \texttt{White} in two different rows to populate \meta{Arg1}. That causes \cmd{\White}, \cmd{\LWhite}, and \cmd{\SWhite} to be redefined:
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \begin{nameauth}
% \< White & E.B. & White & > % version 1
@@ -2204,7 +2297,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% The comments below are merely explanatory and in no wise required to use the environment. Likewise, extra spaces that are added for clarity are stripped.
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \begin{nameauth}
% % Western Name Forms
@@ -2236,212 +2329,227 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{quote}
%
% Here is an example of how much typing one can save with the quick interface, not to mention the prevention of error by not retyping arguments:
-% \begin{center}\small\medstretch
+%
+% \begin{center}
% \begin{tabular}{rll}\toprule
-% Output & & Macro\\
-% \rowcolor{nagrey}\Wash & Quick: & \cmd{\Wash}\\
-% \rowcolor{nagrey} & Basic: &
-% \cmd{\Name}\texttt{[George]\{Washington\}}\\
-% \LWash & Quick: & \cmd{\LWash}\\
-% & Basic: &
-% \cmd{\Name*}\texttt{[George]\{Washington\}}\\
-% \rowcolor{nagrey}\SWash & Quick: & \cmd{\SWash}\\
-% \rowcolor{nagrey} & Basic: &
-% \cmd{\FName}\texttt{[George]\{Washington\}}\\
-% \ForgetThis\Wash & Quick: & \cmd{\ForgetThis}\cmd{\Wash}\\
-% & Basic: &
-% \cmd{\ForgetName}\texttt{[George]\{Washington\}}\\
-% & &
-% \cmd{\Name}\texttt{[George]\{Washington\}}\\
-% \rowcolor{nagrey}\ForgetThis\Wash & Quick: & \cmd{\ForgetThis}\cmd{\Wash}\\
-% \rowcolor{nagrey} & Basic: &
-% \cmd{\ForgetThis}\cmd{\Name}\texttt{[George]\{Washington\}}\\
-% \SubvertThis\Wash & Quick: & \cmd{\SubvertThis}\cmd{\Wash}\\
-% & Basic: &
-% \cmd{\SubvertName}\texttt{[George]\{Washington\}}\\
-% & &
-% \cmd{\Name}\texttt{[George]\{Washington\}}\\
-% \rowcolor{nagrey}\SubvertThis\Wash & Quick: & \cmd{\SubvertThis}\cmd{\Wash}\\
-% \rowcolor{nagrey} & Basic: &
-% \cmd{\SubvertThis}\cmd{\Name}\texttt{[George]\{Washington\}}\\
-% \JustIndex\Wash(unseen in text) & Quick: & \cmd{\JustIndex}\cmd{\Wash}\\
-% & Basic: &
-% \cmd{\IndexName}\texttt{[George]\{Washington\}}\\\bottomrule
+% \rowcolor{nagrey}^^A
+% \bfseries Output & & \bfseries Macro\\
+%
+% \Wash & Quick: & \cmd{\Wash}\\
+% & Basic: &
+% \cmd{\Name}\texttt{[George]\{Washington\}}\\
+%
+% \rowcolor{nagrey}^^A
+% \LWash & Quick: & \cmd{\LWash}\\
+% \rowcolor{nagrey}^^A
+% & Basic: &
+% \cmd{\Name*}\texttt{[George]\{Washington\}}\\
+%
+% \SWash & Quick: & \cmd{\SWash}\\
+% & Basic: &
+% \cmd{\FName}\texttt{[George]\{Washington\}}\\
+%
+% \rowcolor{nagrey}^^A
+% \ForgetThis\Wash & Quick: & \cmd{\ForgetThis}\cmd{\Wash}\\
+% \rowcolor{nagrey}^^A
+% & Basic: &
+% \cmd{\ForgetName}\texttt{[George]\{Washington\}}\\
+% \rowcolor{nagrey}^^A
+% & &
+% \cmd{\Name}\texttt{[George]\{Washington\}}\\
+%
+% \ForgetThis\Wash & Quick: & \cmd{\ForgetThis}\cmd{\Wash}\\
+% & Basic: &
+% \cmd{\ForgetThis}^^A
+% \cmd{\Name}\texttt{[George]\{Washington\}}\\
+%
+% \rowcolor{nagrey}^^A
+% \SubvertThis\Wash & Quick: & \cmd{\SubvertThis}\cmd{\Wash}\\
+% \rowcolor{nagrey}^^A
+% & Basic: &
+% \cmd{\SubvertName}\texttt{[George]\{Washington\}}\\
+% \rowcolor{nagrey}^^A
+% & &
+% \cmd{\Name}\texttt{[George]\{Washington\}}\\
+%
+% \SubvertThis\Wash & Quick: & \cmd{\SubvertThis}\cmd{\Wash}\\
+% & Basic: &
+% \cmd{\SubvertThis}\cmd{\Name}\texttt{[George]\{Washington\}}\\
+%
+% \rowcolor{nagrey}^^A
+% \JustIndex\Wash(unseen in text) & Quick: & \cmd{\JustIndex}\cmd{\Wash}\\
+% \rowcolor{nagrey}^^A
+% & Basic: &
+% \cmd{\IndexName}\texttt{[George]\{Washington\}}\\\bottomrule
% \end{tabular}
% \end{center}
%
+% \newpage
+%
% \subsubsection[Name Variants]{Quick Name Variant Overview}
%
-% After setting up the previous environment, we can use the resulting name shorthands. Below we introduce more ``prefix macros'' that affect syntactic forms of names. For the sake of clarity we use but do not show the prefix macro \cmd{\ForgetThis} (Section~\ref{sec:NameControl}), which produces a first use of a name.
+% After setting up the previous \texttt{nameauth} environment, we use the resulting name shorthands. Below we show more ``prefix macros'' that affect name forms in the text. We hide the use of \cmd{\ForgetThis} (Section~\ref{sec:NameControl}), which creates first instances.
%
-% \vspace{4ex}
+% \begin{itemize}
+% \item Western Names: \hfill Sections~\ref{sec:Naming},
+% \ref{sec:FName}
% \BothInfo{\ShowPattern[George]{Washington}\break
-% \ShowPattern[Hernando]{de~Soto}\break
% \ShowPattern[George S.]{Patton, Jr.}\break
% \ShowPattern[J.D.]{Rockefeller, IV}\break
% \ShowPattern[Clive Staples]{Lewis}\break
-% \ShowPattern{Aristotle}\break
-% \ShowPattern{Æthelred, II}\break
-% \ShowPattern{John, Eriugena}\break
% \ShowPattern[Hideyo]{Noguchi}\break
% \ShowPattern{Miyazaki, Hayao}}
% {\ShowIdxPageref*[George]{Washington}\break
-% \ShowIdxPageref*[Hernando]{de~Soto}\break
% \ShowIdxPageref*[George S.]{Patton, Jr.}\break
% \ShowIdxPageref*[J.D.]{Rockefeller, IV}\break
% \ShowIdxPageref*[Clive Staples]{Lewis}\break
-% \ShowIdxPageref*{Aristotle}\break
-% \ShowIdxPageref*{Æthelred, II}\break
-% \ShowIdxPageref*{John, Eriugena}\break
% \ShowIdxPageref*[Hideyo]{Noguchi}\break
% \ShowIdxPageref*{Miyazaki, Hayao}}
-% \vspace{-4ex}
% \begin{Block}
-% \textsc{Western:} \hfill (Sections~\ref{sec:Naming},
-% \ref{sec:FName}\\
-% \FUse \cmd{\Wash}\dotfill \ForgetThis\Wash\\
-% \LUse \cmd{\LWash}\dotfill \LWash\\
-% \LUse \cmd{\Wash}\dotfill \Wash\\
-% \LUse \cmd{\SWash}\dotfill \SWash
+% \FUse \ForgetThis\Wash \dotfill \cmd{\Wash}\\
+% \LUse \LWash \dotfill \cmd{\LWash}\\
+% \LUse \Wash \dotfill \cmd{\Wash}\\
+% \LUse \SWash \dotfill \cmd{\SWash}
% \end{Block}
%
+% \item Nicknames and Affixes: \hfill Sections~\ref{sec:FName},
+% \ref{sec:Affix}
% \begin{Block}
-% \textsc{Nicknames and Affixes:} \hfill
-% (Sections~\ref{sec:FName}, \ref{sec:Affix})\\
-% \FUse \cmd{\DropAffix}\cmd{\Patton}\hfill
-% \ForgetThis\DropAffix\Patton\\
-% \LUse \cmd{\LPatton}\dotfill \LPatton\\
-% \LUse \cmd{\DropAffix}\cmd{\LPatton}\dotfill \DropAffix\LPatton\\
-% \LUse \cmd{\Patton}\dotfill \Patton\medskip
-%
-% \FUse \cmd{\Patton}\dotfill \ForgetThis\Patton\\
-% \LUse \cmd{\DropAffix}\cmd{\LPatton}\dotfill
-% \DropAffix\LPatton\\
-% \LUse \cmd{\DropAffix}\cmd{\LPatton[George]}\dotfill
-% \DropAffix\LPatton[George]\\
-% \LUse \cmd{\SPatton[George]}\dotfill \SPatton[George]\medskip
-%
-% \FUse \cmd{\JRIV[John Davison]}\dotfill
-% \ForgetThis\JRIV[John Davison]\\
-% \LUse \cmd{\LJRIV}\dotfill \LJRIV\\
-% \LUse \cmd{\DropAffix}\cmd{\LJRIV[Jay]}\dotfill
-% \DropAffix\LJRIV[Jay]\medskip
-%
-% \FUse \cmd{\Lewis}\dotfill \ForgetThis\Lewis\\
-% \LUse \cmd{\LLewis[C.S.]}\dotfill \LLewis[C.S.]\\
-% \LUse \cmd{\LLewis[Jack]}\dotfill \LLewis[Jack]\\
-% \LUse \cmd{\SLewis}\dotfill \SLewis\\
-% \LUse \cmd{\SLewis[Jack]}\dotfill \SLewis[Jack]\\
-% \LUse \cmd{\LCSL}\dotfill \LCSL\\
-% \LUse \cmd{\SCSL}\dotfill \SCSL
+% \FUse \ForgetThis\DropAffix\Patton \dotfill \cmd{\DropAffix}\cmd{\Patton}\\
+% \LUse \LPatton \dotfill \cmd{\LPatton}\\
+% \LUse \Patton \dotfill \cmd{\Patton}\\
+% \LUse \DropAffix\LPatton \dotfill \cmd{\DropAffix}\cmd{\LPatton}\\
+% \LUse \DropAffix\LPatton[George]\dotfill^^A
+% \cmd{\DropAffix}\cmd{\LPatton[George]}\\
+% \LUse \SPatton\dotfill \cmd{\SPatton}\\
+% \LUse \SPatton[George]\dotfill \cmd{\SPatton[George]}
% \end{Block}
%
% \begin{Block}
-% \textsc{``Native'' Eastern:} \hfill (Section~\ref{sec:Eastern})\\
-% \FUse \cmd{\CapName}\cmd{\Miyazaki}\dotfill
-% \ForgetThis\CapName\Miyazaki\\
-% \LUse \cmd{\CapName}\cmd{\LMiyazaki}\dotfill
-% \CapName\LMiyazaki\\
-% \LUse \cmd{\CapName}\cmd{\Miyazaki}\dotfill
-% \CapName\Miyazaki\\
-% \LUse \cmd{\RevName}\cmd{\LMiyazaki}\dotfill
-% \RevName\LMiyazaki\\
-% \LUse \cmd{\RevName}\cmd{\LMiyazaki[Mr.]}\dotfill
-% \RevName\LMiyazaki[Mr.]\\
-% \LUse \cmd{\SMiyazaki}\dotfill \SMiyazaki\\
-% \LUse \cmd{\ForceFN}\cmd{\SMiyazaki}\dotfill
-% \ForceFN\SMiyazaki
+% \FUse \ForgetThis\JRIV[John Davison]\dotfill^^A
+% \cmd{\JRIV[John Davison]}\\
+% \LUse \LJRIV \dotfill \cmd{\LJRIV}\\
+% \LUse \DropAffix\LJRIV[Jay]\dotfill \cmd{\DropAffix}\cmd{\LJRIV[Jay]}
% \end{Block}
%
% \begin{Block}
-% \textsc{Reversed Western:} \hfill (Section~\ref{sec:RevNames})\\
-% \FUse \cmd{\Noguchi}\dotfill \ForgetThis\Noguchi\\
-% \LUse \cmd{\LNoguchi}\dotfill \LNoguchi\\
-% \LUse \cmd{\LNoguchi[Doctor]}\dotfill \LNoguchi[Doctor]\\
-% \LUse \cmd{\SNoguchi}\dotfill \SNoguchi\\
-% \LUse \cmd{\RevName}\cmd{\LNoguchi}\cmd{\dag}\dotfill
-% \RevName\LNoguchi\dag\\
-% \LUse \cmd{\CapName}\cmd{\RevName}\cmd{\LNoguchi}\cmd{\dag}\dotfill
-% \CapName\RevName\LNoguchi\dag\\
-% \LUse \cmd{\CapName}\cmd{\Noguchi}\cmd{\dag}\dotfill
-% \CapName\Noguchi\dag
+% \FUse \ForgetThis\Lewis\dotfill \cmd{\Lewis}\\
+% \LUse \LLewis[C.S.]\dotfill \cmd{\LLewis[C.S.]}\\
+% \LUse \LLewis[Jack]\dotfill \cmd{\LLewis[Jack]}\\
+% \LUse \SLewis\dotfill \cmd{\SLewis}\\
+% \LUse \SLewis[Jack]\dotfill \cmd{\SLewis[Jack]}\\
+% \LUse \LCSL\dotfill \cmd{\LCSL}\\
+% \LUse \SCSL\dotfill \cmd{\SCSL}
% \end{Block}
%
+% \item ``Native'' Eastern Names: \hfill Section~\ref{sec:Eastern}
% \begin{Block}
-% \textsc{Western, Reversed by Surname:} \hfill
-% (Section \ref{sec:LastFirst})\\
-% \FUse \cmd{\RevComma}\cmd{\LWash}\dotfill
-% \ForgetThis\RevComma\LWash\\
-% \LUse \cmd{\RevComma}\cmd{\LWash}\dotfill \RevComma\LWash
+% \FUse \ForgetThis\CapName\Miyazaki\dotfill \cmd{\CapName}\cmd{\Miyazaki}\\
+% \LUse \CapName\LMiyazaki\dotfill \cmd{\CapName}\cmd{\LMiyazaki}\\
+% \LUse \CapName\Miyazaki\dotfill \cmd{\CapName}\cmd{\Miyazaki}\\
+% \LUse \RevName\LMiyazaki\dotfill \cmd{\RevName}\cmd{\LMiyazaki}\\
+% \LUse \RevName\LMiyazaki[Mr.]\dotfill \cmd{\RevName}\cmd{\LMiyazaki[Mr.]}\\
+% \LUse \SMiyazaki\dotfill \cmd{\SMiyazaki}\\
+% \LUse \ForceFN\SMiyazaki\dotfill \cmd{\ForceFN}\cmd{\SMiyazaki}
% \end{Block}
%
-% \newpage
+% \item Reversed Western Names: \hfill Section~\ref{sec:RevNames}
+% \begin{Block}
+% \FUse \ForgetThis\Noguchi\dotfill \cmd{\Noguchi}\\
+% \LUse \LNoguchi\dotfill \cmd{\LNoguchi}\\
+% \LUse \LNoguchi[Doctor]\dotfill \cmd{\LNoguchi[Doctor]}\\
+% \LUse \SNoguchi\dotfill \cmd{\SNoguchi}\\
+% \LUse \RevName\LNoguchi\dag\dotfill \cmd{\RevName}\cmd{\LNoguchi}\cmd{\dag}\\
+% \LUse \CapName\RevName\LNoguchi\dag\dotfill^^A
+% \cmd{\CapName}\cmd{\RevName}\cmd{\LNoguchi}\cmd{\dag}\\
+% \LUse \CapName\Noguchi\dag\dotfill \cmd{\CapName}\cmd{\Noguchi}\cmd{\dag}
+% \end{Block}
%
+% \item Western Names Reversed by Surname: \hfill Section \ref{sec:LastFirst}
% \begin{Block}
-% \textsc{Particles:} \hfill (Section~\ref{sec:NameParticles})\\
-% \LUse \cmd{\Soto}\dotfill \ForgetThis\Soto\\
-% \LUse \cmd{\Soto}\dotfill \Soto\\
-% \LUse \cmd{\CapThis}\cmd{\Soto}\dotfill \CapThis\Soto
+% \FUse \ForgetThis\RevComma\LWash\dotfill \cmd{\RevComma}\cmd{\LWash}\\
+% \LUse \RevComma\LWash\dotfill \cmd{\RevComma}\cmd{\LWash}
% \end{Block}
%
+% \item Particles: \hfill Section~\ref{sec:NameParticles}
+% \BothInfo{\ShowPattern[Hernando]{de~Soto}\break
+% \ShowPattern{Aristotle}\break
+% \ShowPattern{Æthelred, II}\break
+% \ShowPattern{John, Eriugena}}
+% {\ShowIdxPageref*[Hernando]{de~Soto}\break
+% \ShowIdxPageref*{Aristotle}\break
+% \ShowIdxPageref*{Æthelred, II}\break
+% \ShowIdxPageref*{John, Eriugena}}
% \begin{Block}
-% \textsc{Royal and Medieval:} \hfill
-% (Section~\ref{sec:NameMedieval})\\
-% \LUse \cmd{\Aeth}\dotfill \ForgetThis\Aeth\footnote
+% \FUse \ForgetThis\Soto\dotfill \cmd{\Soto}\\
+% \LUse \Soto\dotfill \cmd{\Soto}\\
+% \LUse \CapThis\Soto\dotfill \cmd{\CapThis}\cmd{\Soto}
+% \end{Block}
+%
+% \item Royal and Medieval Names: \hfill Section~\ref{sec:NameMedieval}
+% \begin{Block}
+% \FUse \ForgetThis\Aeth\footnote
% {Regarding the margin note that shows name control sequences,
% with \texttt{pdflatex} and \texttt{latex}, in
% \texttt{\ShowPattern{Æthelred, II}} the glyphs \texttt{ÃĘ}
-% correspond to \cmd{\IeC\{}\cmd{\AE\}}.}\\
-% \LUse \cmd{\Aeth}\dotfill \Aeth\\
-% \LUse |\LAeth[II, ``Unræd'']|\dotfill
-% \LAeth[II, ``Unræd'']\\[1ex]
-% \LUse \cmd{\Eriugena[Scotus Eriugena]}\dotfill
-% \ForgetThis\Eriugena[Scotus Eriugena]\\
-% \LUse \cmd{\LEriugena}\dotfill \LEriugena\\
-% \LUse \cmd{\Eriugena}\dotfill \Eriugena
+% correspond to \cmd{\IeC\{}\cmd{\AE\}}.}\dotfill \cmd{\Aeth}\\
+% \LUse \Aeth\dotfill \cmd{\Aeth}\\
+% \LUse \LAeth[II, ``Unræd'']\dotfill |\LAeth[II, ``Unræd'']|
% \end{Block}
%
% \begin{Block}
-% \textsc{Ancient Mononym} \hfill (trivial case)\\
-% \LUse \cmd{\Aris}\dotfill \ForgetThis\Aris\\
-% \LUse \cmd{\Aris}\dotfill \Aris
+% \FUse \ForgetThis\Eriugena[Scotus Eriugena]\dotfill^^A
+% \cmd{\Eriugena[Scotus Eriugena]}\\
+% \LUse \LEriugena\dotfill \cmd{\LEriugena}\\
+% \LUse \Eriugena\dotfill \cmd{\Eriugena}
% \end{Block}
%
+% \begin{Block}
+% \FUse \ForgetThis\Aris\dotfill \cmd{\Aris}\\
+% \LUse \Aris\dotfill \cmd{\Aris}
+% \end{Block}
+% \end{itemize}
+%
% \subsubsection[\protect\textit{Alternate} Field]
% {\protect\meta{Alternate} Name Field Tips}
% \label{sec:ArgIV}
%
-% \vspace{3ex}
-% \BothInfo{\ShowPattern[Clive Staples]{Lewis}\break
-% \ShowPattern{Miyazaki, Hayao}}
-% {\ShowIdxPageref*[Clive Staples]{Lewis}\break
-% \ShowIdxPageref*{Miyazaki, Hayao}}
-% \vspace{-3ex}
% Two shorthands above use \meta{arg4}, the final field in each row of the \texttt{nameauth} environment. These are \cmd{\CSL} and \cmd{\MSens}. They correspond to similar name shorthands \cmd{\Lewis} and \cmd{\Miyazaki}, which leave \meta{arg4} empty. Here is how they are related:
%
% \begin{itemize}
% \item They share identical name control patterns
-% (Section~\ref{sec:NamePatterns}).\\[1ex]
+% (Section~\ref{sec:NamePatterns}).
+% \BothInfo{\ShowPattern[Clive Staples]{Lewis}\break
+% \ShowPattern{Miyazaki, Hayao}}
+% {\ShowIdxPageref*[Clive Staples]{Lewis}\break
+% \ShowIdxPageref*{Miyazaki, Hayao}}
+% \begin{Block}
% \ForgetName{Miyazaki, Hayao}\ForgetName[Clive Staples]{Lewis}
-% First: \cmd{\MSens} \MSens; subsequent: \cmd{\Miyazaki} \Miyazaki.\\
-% First: \cmd{\CSL\ \ } \CSL;\hspace{2.2em}
-% subsequent: \cmd{\Lewis \ \ \ } \Lewis.
+% \FUse \MSens\dotfill \cmd{\MSens}\\
+% \LUse \Miyazaki\dotfill \cmd{\Miyazaki}\\
+% \FUse \CSL\dotfill \cmd{\CSL}\\
+% \LUse \Lewis\dotfill \cmd{\Lewis}
+% \end{Block}
+%
% \item Usually, one leaves \meta{arg4} empty and adds alternate names in
-% brackets as needed: \cmd{\LLewis[C.S.]} \LLewis[C.S.]
+% brackets as needed: \LLewis[C.S.] \cmd{\LLewis[C.S.]}
+%
% \item By using \meta{arg4}, one trades less work for more ambiguity: Can
% one add an alternate name or not? To answer that, one should keep track
% of all name shorthands that use \meta{arg4}.
-% \item Failure to keep track of such macros creates output like
-% \cmd{\LCSL[Jack]} \LCSL[Jack] and \cmd{\LMSens[Sensei]} \LMSens[Sensei].
+%
+% \item Failure to keep track of such macros creates output like \LCSL[Jack]
+% \cmd{\LCSL[Jack]} and \LMSens[Sensei] \cmd{\LMSens[Sensei]}.
% The reason why these macro versions produce undesired output is because
% \meta{arg4} permanently populates \meta{Alternate}.
-% \item Bear also in mind that \meta{arg4} can be used for the obsolete
+%
+% \item Remember that \meta{arg4} can be used for the obsolete
% syntax, as mentioned previously, but we do not cover that here.
% \end{itemize}
%
-% \begin{Quote}{\ForgetThis\Miyazaki\break
-% \hbox{}\hfill Proposal for \textit{Princess Mononoke}}
-% We depict hatred, but it is to depict that there are more important things. We depict a curse, to depict the joy of liberation.
+% \begin{Quote}{\Name[Harold]{Urey} (1961)}
+% The space program is not only scientific in purpose but also is an expression of man's insistent determination to do the nearly impossible\,---\,to explore the unknown, even at great risk.\negmedskip^^A
+% \index{scientists, quotes of\noexpand\string|hyperpage}
% \end{Quote}
%
% \newpage
@@ -2452,57 +2560,95 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \subsubsection[With Name Args]{Macros with Name Arguments}
% \label{sec:NameArgMacros}
%
-% All macros that take name arguments (Section~\ref{sec:NameArgs}) will update \cmd{\NameauthPattern} (used in Section~\ref{sec:DataTemp}) and can have final optional arguments (Section~\ref{sec:FinalOptargs}). Those with additional starred forms are shown followed by a \texttt{*}. Optional prefix macros are shown in the next subsection.
-%
-% \begin{center}\medstretch
+% All macros that take name arguments (Section~\ref{sec:NameArgs}) can have final optional arguments (Section~\ref{sec:FinalOptargs}) and update \cmd{\NameauthPattern} (Section~\ref{sec:DataTemp}). The \meta{xref args} are the same as \meta{name args} for a cross-reference to a \meta{target} (Section~\ref{sec:IndexRef}).
+% \begin{center}
% \begin{tabular}{lrcll}\toprule
-% Optional Prefix & Macro & & Arguments & \\
-% \rowcolor{nagrey}\llap{Naming\qquad}\meta{prefix macros} &
+% \rowcolor{nagrey}^^A
+% \llap{\colorbox{nagrey}{\hbox to 2.65cm{\strut\hfill}}\qquad\qquad}^^A
+% Optional Prefix & Macro & Star & Arguments & \\
+%
+% \llap{\colorbox{white}{\hbox to 2.65cm{\strut\hfill Naming}}\qquad\qquad}^^A
+% \meta{prefix macros} &
% \cmd{\Name} & \texttt{*} & \meta{name args} & \\
-% \rowcolor{nagrey}\llap{\ul{\ \ \ \ \ \ \ \ \ \ \ \ }\qquad}^^A
+% \llap{\colorbox{white}{\hbox to 2.65cm{\strut\hfill}}\qquad\qquad}^^A
% \meta{prefix macros} &
% \cmd{\FName} & \texttt{*} & \meta{name args} & \\
-% \llap{Page ref\qquad}\cmd{\SeeAlso} & \cmd{\IndexName} & &
+%
+% \rowcolor{nagrey}^^A
+% \llap{\colorbox{nagrey}{\hbox to 2.65cm{\strut\hfill Page entry}}\qquad\qquad}^^A
+% \cmd{\SeeAlso} & \cmd{\IndexName} & &
% \meta{name args} & \\
-% \llap{\ul{Only cross-ref}\qquad}\cmd{\SeeAlso} & \cmd{\IndexRef} & &
+% \rowcolor{nagrey}^^A
+% \llap{\colorbox{nagrey}{\hbox to 2.65cm{\strut\hfill Only cross-ref}}\qquad\qquad}^^A
+% \cmd{\SeeAlso} & \cmd{\IndexRef} & &
% \meta{xref args} & \meta{target}\\
-% \rowcolor{nagrey}\llap{Prevent page ref\qquad} & \cmd{\ExcludeName} & &
+%
+% \llap{\colorbox{white}{\hbox to 2.65cm{\strut\hfill Stop page entry}}\qquad\qquad}^^A
+% & \cmd{\ExcludeName} & &
% \meta{name args} & \\
-% \rowcolor{nagrey}\llap{\ul{Enable page ref}\qquad} & \cmd{\IncludeName} &
+% \llap{\colorbox{white}{\hbox to 2.65cm{\strut\hfill Allow page entry}}\qquad\qquad}^^A
+% & \cmd{\IncludeName} &
% \texttt{*} & \meta{name args} & \\
-% \llap{Sort index\qquad} & \cmd{\PretagName} & & \meta{name args} &
+%
+% \rowcolor{nagrey}^^A
+% \llap{\colorbox{nagrey}{\hbox to 2.65cm{\strut\hfill Sort index}}\qquad\qquad}^^A
+% & \cmd{\PretagName} & & \meta{name args} &
% \meta{sort key} \\
-% \llap{Append idx tag\qquad} & \cmd{\TagName} & & \meta{name args} &
+% \rowcolor{nagrey}^^A
+% \llap{\colorbox{nagrey}{\hbox to 2.65cm{\strut\hfill Make index tag}}\qquad\qquad}^^A
+% & \cmd{\TagName} & & \meta{name args} &
% \meta{tag} \\
-% \llap{\ul{Delete idx tag}\qquad}& \cmd{\UntagName} & & \meta{name args} & \\
-% \rowcolor{nagrey}\llap{Make data tag\qquad} & \cmd{\NameAddInfo} & &
+% \rowcolor{nagrey}^^A
+% \llap{\colorbox{nagrey}{\hbox to 2.65cm{\strut\hfill Delete index tag}}\qquad\qquad}^^A
+% & \cmd{\UntagName} & & \meta{name args} & \\
+%
+% \llap{\colorbox{white}{\hbox to 2.65cm{\strut\hfill Make name tag}}\qquad\qquad}^^A
+% & \cmd{\NameAddInfo} & &
% \meta{name args} & \meta{tag} \\
-% \rowcolor{nagrey}\llap{Show data tag\qquad} & \cmd{\NameQueryInfo} & &
+% \llap{\colorbox{white}{\hbox to 2.65cm{\strut\hfill Show name tag}}\qquad\qquad}^^A
+% & \cmd{\NameQueryInfo} & &
% \meta{name args} & \\
-% \rowcolor{nagrey}\llap{\ul{Delete data tag}\qquad} & \cmd{\NameClearInfo} & &
+% \llap{\colorbox{white}{\hbox to 2.65cm{\strut\hfill Delete name tag}}\qquad\qquad}^^A
+% & \cmd{\NameClearInfo} & &
% \meta{name args} & \\
-% \llap{Delete name cs\qquad} & \cmd{\ForgetName} & & \meta{name args} & \\
-% \llap{\ul{Create name cs}\qquad} & \cmd{\SubvertName} & &
+%
+% \rowcolor{nagrey}^^A
+% \llap{\colorbox{nagrey}{\hbox to 2.65cm{\strut\hfill Delete name cs}}\qquad\qquad}^^A
+% & \cmd{\ForgetName} & & \meta{name args} & \\
+% \rowcolor{nagrey}^^A
+% \llap{\colorbox{nagrey}{\hbox to 2.65cm{\strut\hfill Create name cs}}\qquad\qquad}^^A
+% & \cmd{\SubvertName} & &
% \meta{name args} & \\
-% \rowcolor{nagrey}\llap{Name cs tests\qquad} & \cmd{\IfMainName} & &
+%
+% \llap{\colorbox{white}{\hbox to 2.65cm{\strut\hfill Name cs tests}}\qquad\qquad}^^A
+% & \cmd{\IfMainName} & &
% \meta{name args} & \marg{y}\marg{n}\\
-% \rowcolor{nagrey}& \cmd{\IfFrontName} & & \meta{name args} &
+% \llap{\colorbox{white}{\hbox to 2.65cm{\strut\hfill}}\qquad\qquad}^^A
+% & \cmd{\IfFrontName} & & \meta{name args} &
% \marg{y}\marg{n}\\
-% \rowcolor{nagrey}\llap{\ul{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\qquad} &
-% \cmd{\IfAKA} & & \meta{name args} & \marg{y}\marg{n}\marg{x}\\
-% \llap{Debugging\qquad} & \cmd{\ShowPattern} & & \meta{name args} & \\
-% & \cmd{\ShowIdxPageref} & \texttt{*} & \meta{name args} & \\
-% & \cmd{\ShowNameInfo} & & \meta{name args} & \\
-% & \cmd{\ShowNameState} & & \meta{name args} &\\\bottomrule
+% \llap{\colorbox{white}{\hbox to 2.65cm{\strut\hfill}}\qquad\qquad}^^A
+% & \cmd{\IfAKA} & & \meta{name args} & \marg{y}\marg{n}\marg{x}\\
+%
+% \rowcolor{nagrey}^^A
+% \llap{\colorbox{nagrey}{\hbox to 2.65cm{\strut\hfill Debugging}}\qquad\qquad}^^A
+% & \cmd{\ShowPattern} & & \meta{name args} & \\
+% \rowcolor{nagrey}^^A
+% \llap{\colorbox{nagrey}{\hbox to 2.65cm{\strut\hfill}}\qquad\qquad}^^A
+% & \cmd{\ShowIdxPageref} & \texttt{*} & \meta{name args} & \\
+% \rowcolor{nagrey}^^A
+% \llap{\colorbox{nagrey}{\hbox to 2.65cm{\strut\hfill}}\qquad\qquad}^^A
+% & \cmd{\ShowNameInfo} & & \meta{name args} & \\
+% \rowcolor{nagrey}^^A
+% \llap{\colorbox{nagrey}{\hbox to 2.65cm{\strut\hfill}}\qquad\qquad}^^A
+% & \cmd{\ShowNameState} & & \meta{name args} &\\\bottomrule
% \end{tabular}
% \end{center}
%
-% The \meta{xref args} are the same as \meta{name args} for a cross-reference to a \meta{target} (Section~\ref{sec:IndexRef}). Not shown are \cmd{\AKA}, \cmd{\AKA*}, \cmd{\PName}, and \cmd{\PName*} (Section~\ref{sec:AKA}). Here we do not describe in detail what the arguments mean.
+% Optional prefix macros are shown in the next subsection. Not shown above are \cmd{\AKA}, \cmd{\AKA*}, \cmd{\PName}, and \cmd{\PName*} (Section~\ref{sec:AKA}).
%
-% \begin{Quote}{\ForgetThis\MLK[Dr. Martin Luther]\break
-% \hbox{}\hfill \textit{Stride Towards Freedom} (1958)}
-% \IndexName{Jesus, Christ}^^A
-% We believe firmly in the revelation of God in Jesus Christ. I can see no conflict between our devotion to Jesus Christ and our present action. In fact, I can see a necessary relationship. If one is truly devoted to the religion of Jesus he will seek to rid the earth of social evils. The gospel is social as well as personal.
+% \begin{Quote}{\Name[John F.]{Kennedy}, Inaugural Address (1961)}
+% The world is very different now. For man holds in his mortal hands the power to abolish all forms of human poverty and all forms of human life. And yet the same revolutionary beliefs for which our forebears fought are still at issue around the globe\,---\,the belief that the rights of man come not from the generosity of the state, but from the hand of God.^^A
+% \index{politicians, quotes of\noexpand\string|hyperpage}
% \end{Quote}
%
% \newpage
@@ -2511,94 +2657,108 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% Similar to the package options (Section~\ref{sec:PkgOptions}), many prefix macros alter the values of the Boolean flags that reflect the state of names and name processing. The naming and indexing macros reset the Boolean flags after they are invoked.
%
-% \begin{center}\small\medstretch
-% \begin{tabular}{rp{0.72\textwidth}}\toprule
-% & \bfseries Capitalization in the Text\\
-% \cmd{\CapName} &
-% Cap entire \meta{SNN} in body text. Overrides \cmd{\CapThis}.\\
-% \cmd{\CapThis} &
-% Capitalize first letter of all name components in body text.\\
-% \cmd{\AccentCapThis} & Fallback when Unicode detection cannot be done.\\
-% \rowcolor{nagrey} & \bfseries Reversing in the Text\\
-% \rowcolor{nagrey}\cmd{\RevName} &
-% Reverse order of any name in body text. Overrides \cmd{\RevComma}\\
-% \rowcolor{nagrey}\cmd{\RevComma} &
-% Reverse only Western names to \meta{SNN}, \meta{FNN}.\\
-% & \bfseries Commas in the Text\\
-% \cmd{\ShowComma} & Add comma between \meta{SNN} and \meta{Affix}.\\
-% \cmd{\NoComma} &
-% No comma between \meta{SNN} and \meta{Affix}. Overrides \cmd{\ShowComma}.\\
-% \rowcolor{nagrey} & \bfseries Name Breaks in the Text\\
-% \rowcolor{nagrey}\cmd{\DropAffix} &
-% Drop affix only for a long Western name reference.\\
-% \rowcolor{nagrey}\cmd{\KeepAffix} &
-% Insert non-breaking space (NBSP) between \meta{SNN}, \meta{FNN/Affix}.\\
-% \rowcolor{nagrey}\cmd{\KeepName} &
-% Insert NBSP between all name elements. Overrides \cmd{\KeepAffix}.\\
-% & \bfseries Forcing Name Forms via Control Sequence\\
-% \cmd{\ForgetThis} & Force a first-time name use. Negates \cmd{\SubvertThis}.\\
-% \cmd{\SubvertThis} & Force a subsequent use.\\
-% \rowcolor{nagrey} & \bfseries Forcing Name Forms via Boolean Flags\\
-% \rowcolor{nagrey}\cmd{\ForceName} & Force first-use formatting hooks.\\
-% \rowcolor{nagrey}\cmd{\ForceFN} &
-% Force printing of \meta{Affix}/\meta{Alternate} in non-Western
-% short forms.\\
-% & \bfseries Indexing\\
-% \cmd{\SeeAlso} &
-% For \cmd{\IndexName}, \cmd{\AKA}, and \cmd{\PName}; make a
-% \textit{see also} xref.\\
-% \cmd{\SkipIndex} & For naming macros; do not create an index entry.\\
-% \cmd{\JustIndex} &
-% For naming macros; index only (once); negated by \cmd{\AKA},
-% \cmd{\PName}.\\\bottomrule
-% \end{tabular}
-% \end{center}
+% \begin{itemize}[rightmargin=0em]
+% \item Capitalization in the Text\negmedskip
+% \begin{itemize}[leftmargin=6.5em]\small
+% \item[\cmd{\CapName}] Capitalize entire \meta{SNN}. Overrides \cmd{\CapThis}.
+% \item[\cmd{\CapThis}] Capitalize first letter of all name components.
+% \item[\cmd{\AccentCapThis}] Fallback when Unicode detection cannot be done.
+% \end{itemize}
+%
+% \item Reversing in the Text\negmedskip
+% \begin{itemize}[leftmargin=6.5em]\small
+% \item[\cmd{\RevName}] Reverse order of any name. Overrides \cmd{\RevComma}
+% \item[\cmd{\RevComma}] Reverse only Western names to \meta{SNN}, \meta{FNN}.
+% \end{itemize}
+%
+% \item Commas in the Text\negmedskip
+% \begin{itemize}[leftmargin=6.5em]\small
+% \item[\cmd{\ShowComma}] Add comma between \meta{SNN} and \meta{Affix}.
+% \item[\cmd{\NoComma}] No comma between \meta{SNN} and \meta{Affix}. Overrides \cmd{\ShowComma}.
+% \end{itemize}
+%
+% \item Name Breaks in the Text\negmedskip
+% \begin{itemize}[leftmargin=6.5em]\small
+% \item[\cmd{\DropAffix}] Drop affix only for a long Western name instance.
+% \item[\cmd{\KeepAffix}] Insert non-breaking space (NBSP) between \meta{SNN}, \meta{FNN/Affix}.
+% \item[\cmd{\KeepName}] Insert NBSP between all name elements. Overrides \cmd{\KeepAffix}.
+% \end{itemize}
+%
+% \item Forcing Name Forms via Control Sequence\negmedskip
+% \begin{itemize}[leftmargin=6.5em]\small
+% \item[\cmd{\ForgetThis}] Force first name instance. Negates \cmd{\SubvertThis}.
+% \item[\cmd{\SubvertThis}] Force subsequent name instance.
+% \end{itemize}
+%
+% \item Forcing Name Forms via Boolean Flags\negmedskip
+% \begin{itemize}[leftmargin=6.5em]\small
+% \item[\cmd{\ForceName}] Force first-use formatting hooks.
+% \item[\cmd{\ForceFN}] Print \meta{Affix}/\meta{Alternate} in nonwestern short forms.
+% \end{itemize}
+%
+% \item Indexing\negmedskip
+% \begin{itemize}[leftmargin=6.5em]\small
+% \item[\cmd{\SeeAlso}] For \cmd{\IndexName}, \cmd{\AKA}, and \cmd{\PName}; make a \textit{see also} xref.
+% \item[\cmd{\SkipIndex}] For naming macros; do not create index entry (once).
+% \item[\cmd{\JustIndex}] For naming macros; index only (once); negated by \cmd{\AKA}, \cmd{\PName}.
+% \end{itemize}
+% \end{itemize}
%
% \noindent Some important notes include:
%
% \begin{itemize}
% \item Prefix macros stack:\\[0.4ex]
-% |\CapThis\RevName\SkipIndex\Name[bar]{foo}|\dotfill
-% \CapThis\RevName\SkipIndex\Name[bar]{foo}
+% \CapThis\RevName\SkipIndex\Name[bar]{foo}\dotfill^^A
+% |\CapThis\RevName\SkipIndex\Name[bar]{foo}|
% \item The Boolean flags governed by the prefix macros are reverted after
% the appropriate macros produce output in the text (or index) unless the
-% output of the naming macros is suppressed.
+% output of the naming macros is suppressed via \cmd{\JustIndex}.
+% \item Even after using \cmd{\JustIndex}, several name form modifiers are reset.
+% This prevents errors when handling the next name.
% \item Except for \cmd{\SeeAlso}, use prefix macros only before a naming
% macro that is designed to print output in the text.
% \item Use \cmd{\SeeAlso} only with \cmd{\IndexRef}, \cmd{\AKA}, and
% \cmd{\PName}. Otherwise it will be ignored and reset by \cmd{\IndexName}
% and the naming macros.
-% \item Using \cmd{\JustIndex} will cause name form modifiers to be reset.
% \end{itemize}
%
-% \noindent Macros that do not take name arguments include:
+% \noindent Macros that do not take name arguments include prefix macros (Section~\ref{sec:PrefixMacs}), helper macros (Section~\ref{sec:Helpers}), most internal package macros, and formatting macros (Sections~\ref{sec:Formatting} and~\ref{sec:AdvancedFormat}).
%
-% \begin{itemize}
-% \item Prefix macros (Section~\ref{sec:PrefixMacs}).
-% \item Helper macros (Section~\ref{sec:Helpers}).
-% \item Most internal package macros.
-% \item Formatting macros.
-% \end{itemize}
+% \newpage
%
% \subsection{Names and Complexity}
% \label{sec:Complexity}
%
% The \textsf{nameauth} package allows levels of complexity when representing names. Already, we have seen this example above:
%
-% \begin{Block}\small
-% |\LEliz[I ``Gloriana'']|\dotfill \LEliz[I ``Gloriana'']
+% \begin{Block}
+% \LEliz[I ``Gloriana'']\dotfill |\LEliz[I ``Gloriana'']|
% \end{Block}
%
-% We can so the same thing with different macros, but they do not offer more features, only more complexity:
+% We can display the same thing with different macros. This next example does not offer more features; it only offers more complexity:
%
% \begin{Block}
-% |\LEliz\ ``\ForceFN\SEliz[Gloriana]''|\dotfill
-% \LEliz\ ``\ForceFN\SEliz[Gloriana]''
+% \LEliz\ ``\ForceFN\SEliz[Gloriana]''\dotfill^^A
+% |\LEliz\ ``\ForceFN\SEliz[Gloriana]''|
% \end{Block}
%
-% In Section~\ref{sec:NameAncient} we will learn how to add a one-time increase in complexity by using ``name info tags'' with modified formatting hooks to do the following that \emph{does} offer potentially more features:
+% The next example offers more features and better automation. Based on Section~\ref{sec:NameAncient} we use name tags and change the formatting hooks to match this manual's conventions. The key here is that \emph{we make a few key changes once,} which then govern many appearances of names:
%
% \begingroup
+% \begin{quote}
+% \begin{Verbatim}
+% \NameAddInfo{Elizabeth, I}{ ``Gloriana''}
+% \renewcommand*\NamesFormat[1]
+% {
+% \color{blue}\sffamily #1
+% \ifcsname\NameauthPattern!DB\endcsname
+% \expandafter\csname\NameauthPattern!DB\endcsname
+% \fi
+% }
+% \renewcommand*\MainNameHook{\sffamily}
+% \end{Verbatim}
+% \end{quote}
+%
% \NameAddInfo{Elizabeth, I}{ ``Gloriana''}
% \renewcommand*\NamesFormat[1]
% {^^A
@@ -2608,31 +2768,25 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \fi
% }
% \renewcommand*\MainNameHook{\sffamily}
-% \begin{Block}\small
-% \FUse |\ForgetThis\LEliz|\dotfill \ForgetThis\LEliz\\
-% \LUse |\LEliz|\dotfill \LEliz\\
-% \LUse |\Eliz|\dotfill \Eliz
+% \begin{Block}
+% \FUse \ForgetThis\LEliz\dotfill |\ForgetThis\LEliz|\\
+% \LUse \LEliz\dotfill |\LEliz|\\
+% \LUse \Eliz\dotfill |\Eliz|
% \end{Block}
% \endgroup
%
-% There can be needless complexity, and there can be helpful complexity. For example, if \LaTeX\ is used as the back end for an \texttt{xslt} transform, it can be useful to have well-defined macro states that map systematically to the input without needing human intervention.
-%
-% Section~\ref{sec:NameParticles} shows a similar trade-off between a simple example and a formatted example using the name of poet \Name[e.e.]{cummings}. Moving on to Section~\ref{sec:Romani}, complexity increases, yet the state of any given name remains well-defined.
+% Section~\ref{sec:NameParticles} shows a similar trade-off between simplicity and automation with an example using the name of poet \Name[e.e.]{cummings}. Moving on to Section~\ref{sec:Romani}, complexity increases, yet the state of any given name remains well-defined.
%
% \begin{InfoBox}[Avoid the Rabbit Hole]
% \begin{itemize}[leftmargin=1em]
-% \item There are trade-offs between ease of use and automation.
-% \item Examples that are easy to implement often are not easily automated.
-% \item Examples that are more complex lend themselves to automation using
-% package features as building blocks.
% \item In \textsf{nameauth}, names are nouns that have state and modifiers.
-% \item In \textsf{nameauth}, names are verbs capable of changing their
-% environment.
+% \item In \textsf{nameauth}, names are verbs capable of changing their environment.
+% \item There are trade-offs between ease of use and automation.
+% \item Simple examples often are not easy to automate.
+% \item Automation works best with a few key changes.
+% \item Most use-cases can be as simple as Section~\ref{sec:QuickExample}.
+% \item Use the simple approach unless a complex approach is needed.
% \end{itemize}
-%
-% The example in Section~\ref{sec:QuickExample} was quite simple, yet there are many use cases that need not be much more complex than that. Thus, one must discern useful complexity from useless complexity.\medskip
-%
-% Unless one has a use case that demands automation and complexity, hopefully illustrated by examples in this manual, one should tend toward simplicity and the macros seen in the earlier pages of this manual.
% \end{InfoBox}
%
% \ReturnLink
@@ -2641,7 +2795,8 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \section{Package Options}
% \label{sec:PkgOptions}
-% \negmedskip
+%
+% There are many options for use in \textsf{nameauth}, which can be divided into specific areas of functionality. These range from defaults that make conforming to certain standards easier to backward compatibility with old versions. The expected syntax follows:
%
% \begin{SyntaxBox}
% \cmd{\usepackage[}\meta{\(option_1\)}\texttt{,}\meta{\(option_2\)}^^A
@@ -2656,59 +2811,55 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \subsubsection[Affix Commas]{Show/Hide Affix Commas}
%
-% \bgroup\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
+% \begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
% \quad\bfseries\texttt{nocomma} &
% \bfseries Modern standards: Suppress commas between surnames and
% affixes.\smallskip\\
% \leavevmode\color{nared}\quad\texttt{comma} &
% \leavevmode\color{nared}Older standards: Retain commas between surnames
% and affixes.\medskip\\
-% \end{tabular}\egroup
+% \end{tabular}
%
% \noindent These options do not affect the index. They permit different standards for name affixes. The default \texttt{nocomma} option gives, e.g., \Name[J.E.]{Carter, Jr.}[James Earl]. The \texttt{comma} option produces \ShowComma\Name*[J.E.]{Carter, Jr.}[James Earl]. Macros that allow finer control of commas and affixes are shown in Section~\ref{sec:Affix}.
%
% \subsubsection[Surname in Caps]{Capitalize Entire Surnames}
%
-% \bgroup\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
+% \begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
% \quad\bfseries\texttt{normalcaps} &
% \bfseries Do not perform any special capitalization.\smallskip\\
% \leavevmode\color{nared}\quad\texttt{allcaps} &
-% \leavevmode\color{nared}Capitalize entire surnames, e.g., romanized
-% Eastern names, throughout the document.\medskip\\
-% \end{tabular}\egroup
+% \leavevmode\color{nared}\textls[-5]{Capitalize entire surnames, e.g., Romanized
+% Eastern names, throughout the document.}\medskip\\
+% \end{tabular}
%
% \noindent These options do not affect the index. See Section~\ref{sec:Eastern} for finer control. To capitalize names in the index, use caps as desired or alternate formatting (Section~\ref{sec:AltFormat}).
%
% \subsubsection{Reverse Name Order}
%
-% \bgroup\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
+% \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.\smallskip\\
% \leavevmode\color{nared}\quad\texttt{allreversed} &
% \leavevmode\color{nared}Print all name forms in ``smart'' reverse order;
-% Western as non-Western, and vice versa.\smallskip\\
+% Western as nonwestern, and vice versa.\smallskip\\
% \leavevmode\color{nared}\quad\texttt{allrevcomma} &
% \leavevmode\color{nared}Print all names in ``Surname, Forenames'' order,
% meant for Western names.\medskip\\
-% \end{tabular}\egroup
+% \end{tabular}
%
% \noindent These options do not affect the index and are mutually exclusive (Sections~\ref{sec:RevNames} and~\ref{sec:LastFirst}). Use \texttt{allrevcomma} option only for listing Western names by surname.
%
-% \begin{Quote}{\Name[Mark]{Twain}, \textit{The Innocents Abroad} (1869)}
-% Virtue never has been as respectable as money.
-% \end{Quote}
-%
% \subsection{Indexing}
%
% \subsubsection{Toggle Indexing}
%
-% \bgroup\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
+% \begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
% \quad\bfseries\texttt{index} &
% \bfseries Create index entries in place with names.\smallskip\\
% \leavevmode\color{nared}\quad\texttt{noindex} &
% \leavevmode\color{nared}Suppress indexing of names.\medskip\\
-% \end{tabular}\egroup
+% \end{tabular}
%
%^^A Starting with the text below, any errors will force one to remove all
%^^A auxiliary files before compiling this file. There is no clear indication
@@ -2719,21 +2870,21 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \subsubsection{Toggle Index Sorting}
%
-% \bgroup\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
+% \begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
% \quad\bfseries\texttt{pretag} &
% \bfseries Create sort keys used with \texttt{makeindex}.\smallskip\\
% \leavevmode\color{nared}\quad\texttt{nopretag} &
% \leavevmode\color{nared}Do not create sort keys.\medskip\\
-% \end{tabular}\egroup
+% \end{tabular}
%
-% \noindent The default allows \cmd{\PretagName} to create sort keys used with \texttt{makeindex}. The \texttt{nopretag} option disables the sorting mechanism and causes \cmd{\PretagName} only to emit warnings, as may be needed with, e.g., \texttt{xindy}. See Section~\ref{sec:IndexSort}.
+% \noindent The default allows \cmd{\PretagName} to create sort keys used with \texttt{makeindex}. The \texttt{nopretag} option disables the sorting mechanism and causes \cmd{\PretagName} only to emit warnings, as might be needed with, e.g., \texttt{xindy}. See Section~\ref{sec:IndexSort}.
%
% \subsubsection{Verbose Warnings}
%
-% \bgroup\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
+% \begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
% \leavevmode\color{nared}\quad\texttt{verbose} &
% \leavevmode\color{nared}Show more diagnostic warnings.\medskip\\
-% \end{tabular}\egroup
+% \end{tabular}
%
% \noindent The default suppresses all but the most essential package warnings. Increasing the warnings may help to debug index page entries, cross-references, and exclusions. Section~\ref{sec:GeneralIndex} shows macros that can enable and disable verbose warnings.
%
@@ -2745,7 +2896,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \subsubsection[Choose System]{Choose Formatting System}
%
-% \bgroup\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
+% \begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
% \bfseries\quad\texttt{mainmatter} &
% \bfseries Start with ``main-matter names'' and formatting hooks \normalfont
% (Section~\ref{sec:PostProcess}).\smallskip\\
@@ -2758,7 +2909,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \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}.\medskip\\
-% \end{tabular}\egroup
+% \end{tabular}
%
% \noindent The \texttt{mainmatter} and \texttt{frontmatter} options enable two respectively independent systems of name use and formatting. Even when no extra formatting occurs, the formatting hooks are defined. Changes require \cmd{\renewcommand}. See Section~\ref{sec:Formatting}.
%
@@ -2769,7 +2920,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \subsubsection[Predefined Hooks]{Predefined Formatting Hooks}
% \label{sec:PostProcess}
%
-% \bgroup\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
+% \begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
% \quad\bfseries\texttt{noformat} &
% \bfseries Pass the displayed name through the formatting hooks
% unchanged.\smallskip\\
@@ -2782,7 +2933,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \leavevmode\color{nared}\quad\texttt{boldface} &
% \leavevmode\color{nared}First use of a main-matter name in
% boldface.\medskip\\
-% \end{tabular}\egroup
+% \end{tabular}
%
% \noindent The options above are ``quick'' definitions of \cmd{\NamesFormat} based on English typography. The default is no formatting.\footnote{For the old default, use the \texttt{smallcaps} option. User feedback dictated this change.}
% See also Robert Bringhurst, \textit{The Elements of Typographic Style}, version 3.2 (Point Roberts, Washington: Hartley \& Marks, 2008), 53--60. All references [\hypertarget{Bringhurst}{Bringhurst}] refer to this edition.
@@ -2801,12 +2952,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \subsection{Alternate Formatting}
%
-% \bgroup\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
+% \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 alternate formatting by
% default.\medskip\\
-% \end{tabular}\egroup
+% \end{tabular}
%
% \noindent A built-in framework provides an alternate formatting mechanism that can be used for ``Continental'' formatting that one sees in German, French, and so on. Continental standards often format surnames only, both in the text and in the index. Section~\ref{sec:AltFormat} introduces the topic and should be sufficient for most users, while Section~\ref{sec:AdvCustomize} goes into greater detail for customization.
%
@@ -2814,19 +2965,18 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \subsection[Scope of Decisions]{Change Scope of Name Decision Macros}
%
-% \bgroup\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
+% \begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
% \leavevmode\color{nared}\quad\texttt{globaltest} &
% \leavevmode\color{nared}Do not put name decision paths in a local
% scope.\medskip\\
-% \end{tabular}\egroup
+% \end{tabular}
%
% \noindent The default puts the decision paths of \cmd{\IfMainName}, etc., into groups with local scope (Section~\ref{sec:NameTests}). This option removes that scoping.
%
% \subsection{Version Compatibility}
+% \label{sec:OptionCompat}
%
-% \emph{Using these options will increase the chance of undocumented behavior.} They are included only for the sake of backward compatibility with older versions of \textsf{nameauth}. The goal is to preserve the behavior of this package at the point it was used in a document, especially if local fixes were employed.\medskip
-%
-% \bgroup\begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
+% \begin{tabular}{p{0.22\textwidth}p{0.6\textwidth}}
% \leavevmode\color{nared}\quad\texttt{oldAKA} &
% \leavevmode\color{nared}Force \cmd{\AKA*} to act like it did before version
% 3.0, instead of like \cmd{\FName}.\smallskip\\
@@ -2844,61 +2994,90 @@ and version 1.3 or later is part of all distributions of LaTeX version
% last-used name are set locally, as before version 3.5.\smallskip\\
% \leavevmode\color{nared}\quad\texttt{oldsee} &
% \leavevmode\color{nared}Allow lax handling of \textit{see} references that
-% are extant names, as before version 3.5.\medskip\\
-% \end{tabular}\egroup
+% are extant names, as before version 3.5.\smallskip\\
+% \leavevmode\color{nared}\quad\texttt{oldargs} &
+% \leavevmode\color{nared}Load the \textsf{xargs} and \textsf{suffix}
+% packages in order to permit user-supplied modifications to work as
+% in version 3.7 and before. The package macros will still use
+% \textsf{xparse} because of its advantages.\medskip\\
+% \end{tabular}
%
-% \noindent Previously, local scope for Boolean flags related to the prefix macros and long/short name forms could produce unexpected results. Those results, in turn, could mask problems caused by some flags not being reset by \cmd{\AKA}, \cmd{\AKA*}, and \cmd{\JustIndex}. The result was undocumented behavior.
+% Using these options may increase the chance of undocumented behavior.\footnote{Previously, the prefix macros and mechanisms for long and short names used Boolean flags locally. With continued use of this package, it became clear that such local scope could produce unexpected results. Those results, in turn, could mask problems caused by some flags not being reset by \cmd{\AKA}, \cmd{\AKA*}, and \cmd{\JustIndex}. The result was undocumented behavior.}
+% They are included for the sake of approximate backward compatibility with older documents, illustrated by the following table:
%
-% \begin{itemize}
-% \item Version 2.6 approximate compatibility\\
-% \texttt{oldAKA,oldpass,oldreset,oldtoks,oldsee}
-% \item Versions 3.0--3.2 compatibility\\
-% \texttt{oldpass,oldreset,oldtoks,oldsee}
-% \item Versions 3.3--3.4 compatibility\\
-% \texttt{oldreset,oldtoks,oldsee}
-% \end{itemize}
-% \negbigskip
+% \begin{center}
+% \begin{tabular}{lll}\toprule
+% \rowcolor{nagrey}^^A
+% \bfseries Version & \bfseries Needed Options & \bfseries Possible Options \\
+%
+% 2.6 & \ttfamily oldreset,oldtoks,oldsee, & \ttfamily oldargs \\
+% & \ttfamily oldAKA,oldpass & \\
+%
+% \rowcolor{nagrey}^^A
+% 3.0--3.2 & \ttfamily oldreset,oldtoks,oldsee, & \ttfamily oldargs \\
+% \rowcolor{nagrey}^^A
+% & \ttfamily oldpass & \\
+%
+% 3.3--3.4 & \ttfamily oldreset,oldtoks,oldsee & \ttfamily oldargs \\
+%
+% \rowcolor{nagrey}^^A
+% 3.5--3.7 & \ttfamily & \ttfamily oldargs \\\bottomrule
+% \end{tabular}
+% \end{center}
%
% \ReturnLink
%
-% \begin{Quote}{\Name[John F.]{Kennedy}, Inaugural Address (1961)}
-% The world is very different now. For man holds in his mortal hands the power to abolish all forms of human poverty and all forms of human life. And yet the same revolutionary beliefs for which our forebears fought are still at issue around the globe\,---\,the belief that the rights of man come not from the generosity of the state, but from the hand of God.
+% \begin{Quote}{\ForgetThis\MLK[Dr. Martin Luther], \textit{Stride Towards Freedom} (1958)}
+% \IndexName{Jesus, Christ}^^A
+% We believe firmly in the revelation of God in Jesus Christ. I can see no conflict between our devotion to Jesus Christ and our present action. In fact, I can see a necessary relationship. If one is truly devoted to the religion of Jesus he will seek to rid the earth of social evils. The gospel is social as well as personal.^^A
+% \index{civil rights leaders, quotes of\noexpand\string|hyperpage}^^A
+% \index{theologians, quotes of\noexpand\string|hyperpage}
% \end{Quote}
%
+% \newpage
+%
% \section{Feature Priority}
% \label{sec:Priorities}
%
-% \begin{center}\small\medstretch
+% \begin{center}
% \begin{tabular}{llll}\toprule
% \bfseries Indexing & \bfseries Capitalization &
-% \bfseries Reversing & \bfseries Name Forms, \\
+% \bfseries Reversing & \bfseries Name Forms,\\
% & & & \bfseries Commas, Breaks\\\midrule
+%
% \ttfamily\bfseries index & \ttfamily\bfseries normalcaps &
-% \ttfamily\bfseries notreversed & \cmd{\ForgetThis} \\
+% \ttfamily\bfseries notreversed & \cmd{\ForgetThis}\\
% \ttfamily\bfseries noindex & \ttfamily\bfseries allcaps &
-% \ttfamily\bfseries allreversed & \cmd{\DropAffix} \\
-% \cmd{\IndexActive} & \cmd{\AllCapsInactive} & \cmd{\ReverseActive} \\
-% \cmd{\IndexInactive} & \cmd{\AllCapsActive} & \cmd{\ReverseInactive} \\
+% \ttfamily\bfseries allreversed & \cmd{\DropAffix}\\
+% \cmd{\IndexActive} & \cmd{\AllCapsInactive} & \cmd{\ReverseActive}\\
+% \cmd{\IndexInactive} & \cmd{\AllCapsActive} & \cmd{\ReverseInactive}\\[1ex]
+%
% \rowcolor{black!6!white}
-% \cmd{\JustIndex} & \cmd{\CapName} & \cmd{\RevName} & \cmd{\SubvertThis}\\
-% \rowcolor{black!6!white} & & & \cmd{\ForceName}\\
-% \rowcolor{black!6!white} & & & \cmd{\NoComma}\\
+% \cmd{\JustIndex} & \cmd{\CapName} & \cmd{\RevName} & \cmd{\SubvertThis}\\
+% \rowcolor{black!6!white}
+% & & & \cmd{\ForceName}\\
+% \rowcolor{black!6!white}
+% & & & \cmd{\NoComma}\\[1ex]
+%
% \rowcolor{black!12!white}
-% \cmd{\SkipIndex} & \cmd{\AccentCapThis} &
+% \cmd{\SkipIndex} & \cmd{\AccentCapThis} &
% \ttfamily\bfseries allrevcomma & \cmd{\KeepName}\\
-% \rowcolor{black!12!white} & & \cmd{\RevCommaActive} & \cmd{\ForceFN}\\
-% \rowcolor{black!12!white} & & \cmd{\RevCommaInactive} & \cmd{\ShowComma}\\
+% \rowcolor{black!12!white}
+% & & \cmd{\RevCommaActive} & \cmd{\ForceFN}\\
+% \rowcolor{black!12!white}
+% & & \cmd{\RevCommaInactive} & \cmd{\ShowComma}\\[1ex]
+%
% \rowcolor{black!18!white}
-% \cmd{\SeeAlso} & \cmd{\CapThis} & \cmd{\RevComma} &
+% \cmd{\SeeAlso} & \cmd{\CapThis} & \cmd{\RevComma} &
% \cmd{\KeepAffix}\\\bottomrule
% \end{tabular}
% \end{center}
%
-% Above we see the relative priority of package options and macros. Package options are shown in boldface.
+% Above we see the relative priority of package options and their related macros. Package options are shown in boldface.
%
% \begin{itemize}
% \item Lighter-colored rows show higher priority. Darker-colored rows show
-% lower priority. Higher-priority options and macros can override
+% lower priority. Higher-priority options and macros have the ability to override
% lower-priority ones.
% \item All options and macros in a given row have equal priority and are
% able to countermand each other within a given column.
@@ -2906,10 +3085,9 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \cmd{\IndexInactive} overrides \cmd{\JustIndex}, which overrides
% \cmd{\SkipIndex}. If \cmd{\IndexInactive} is invoked, \cmd{\JustIndex}
% will have no effect.
-% \item Section~\ref{sec:IdxPrefix} shows the interaction between
-% \cmd{\SkipIndex} and \cmd{\JustIndex} to be complex and non-intuitive.
-% It explains why it is best to use only \cmd{\SkipIndex} or
-% \cmd{\JustIndex} before a naming macro.
+% \item Section~\ref{sec:IdxPrefix} shows the complex interaction between
+% \cmd{\SkipIndex} and \cmd{\JustIndex}. It it is best to use \cmd{\SkipIndex}
+% and \cmd{\JustIndex} only before a naming macro that can print to the text.
% \item Priority usually does not affect macros and options in different
% columns. Yet the macros themselves can have specific effects that change
% the expected behavior of macros in other columns.
@@ -2951,7 +3129,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% In the body text, not the index, the \meta{Alternate} argument replaces either \meta{FNN} or, if \meta{FNN} is absent, \meta{Affix}. If both \meta{FNN} and \meta{Affix} are absent when \meta{Alternate} is present, then the obsolete syntax is used (Section~\ref{sec:Obsolete}, not shown below).
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \begin{nameauth}
% \< Einstein & Albert & Einstein & >
@@ -2964,7 +3142,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{quote}
%
% \ForgetName[Albert]{Einstein}\ForgetName[J.E.]{Carter, Jr.}
-% \begin{center}\small
+% \begin{center}
% \vspace{3ex}
% \BothInfo{\ShowPattern[Albert]{Einstein}\break
% \ShowPattern[J.E.]{Carter, Jr.}\break
@@ -2976,32 +3154,42 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \ShowIdxPageref*{Confucius}\break
% \ShowIdxPageref*{Miyazaki, Hayao}\break
% \ShowIdxPageref*{Elizabeth, I}}
-% \vspace{-3ex}\medstretch
+% \vspace{-3ex}
% \begin{tabular}{ll}\toprule
-% |\Name [Albert]{Einstein}| or |\Einstein| & \Name [Albert]{Einstein}\\
-% |\Name*[Albert]{Einstein}| or |\LEinstein| & \LEinstein\\
-% |\Name [Albert]{Einstein}| or |\Einstein| & \Einstein\\
-% \rowcolor{nagrey}|\Name [J.E.]{Carter, Jr.}| or |\Carter| &
-% \Name [J.E.]{Carter, Jr.}\\
-% \rowcolor{nagrey}|\Name*[J.E.]{Carter, Jr.}[James Earl]| &
-% \LCarter[James Earl]\\
-% \rowcolor{nagrey} or |\LCarter[James Earl]|& \\
-% \rowcolor{nagrey}|\Name [J.E.]{Carter, Jr.}| or |\Carter| & \Carter\\
-% |\Name {Confucius}|, |\Confucius| & \Confucius\\
-% |\Name {Confucius}|, |\Confucius| & \Confucius\\
-% \rowcolor{nagrey}|\Name {Miyazaki, Hayao}| or |\Miyazaki| &
-% \ForgetThis\Name {Miyazaki, Hayao}\\
-% \rowcolor{nagrey}|\Name*{Miyazaki, Hayao}[Sensei]| &
-% \Name*{Miyazaki, Hayao}[Sensei]\\
-% \rowcolor{nagrey}|\Name {Miyazaki, Hayao}| or |\Miyazaki| &
-% \Name {Miyazaki, Hayao}\\
-% |\Name {Elizabeth, I}| or |\Eliz| & \ForgetThis\Eliz\\
-% |\Name*{Elizabeth, I}| or |\LEliz| & \Name*{Elizabeth, I}\\
-% |\Name {Elizabeth, I}| or |\Eliz| & \Name {Elizabeth, I}\\\bottomrule
+% \rowcolor{nagrey}^^A
+% \Name [Albert]{Einstein} & |\Name [Albert]{Einstein}| or |\Einstein|\\
+% \rowcolor{nagrey}^^A
+% \LEinstein & |\Name*[Albert]{Einstein}| or |\LEinstein|\\
+% \rowcolor{nagrey}^^A
+% \Einstein & |\Name [Albert]{Einstein}| or |\Einstein|\\
+%
+% \Name [J.E.]{Carter, Jr.} & |\Name [J.E.]{Carter, Jr.}| or |\Carter|\\
+% \LCarter[James Earl] & |\Name*[J.E.]{Carter, Jr.}[James Earl]|\\
+% & or |\LCarter[James Earl]|\\
+% \Carter & |\Name [J.E.]{Carter, Jr.}| or |\Carter|\\
+%
+% \rowcolor{nagrey}^^A
+% \Confucius & |\Name {Confucius}| or |\Confucius|\\
+% \rowcolor{nagrey}^^A
+% \Confucius & |\Name {Confucius}| or |\Confucius|\\
+%
+% \ForgetThis\Name {Miyazaki, Hayao} &
+% |\Name {Miyazaki, Hayao}| or |\Miyazaki|\\
+% \Name*{Miyazaki, Hayao}[Sensei] & |\Name*{Miyazaki, Hayao}[Sensei]|\\
+% \Name {Miyazaki, Hayao} & |\Name {Miyazaki, Hayao}| or |\Miyazaki|\\
+%
+% \rowcolor{nagrey}^^A
+% \ForgetThis\Eliz & |\Name {Elizabeth, I}| or |\Eliz|\\
+% \rowcolor{nagrey}^^A
+% \Name*{Elizabeth, I} & |\Name*{Elizabeth, I}| or |\LEliz|\\
+% \rowcolor{nagrey}^^A
+% \Name {Elizabeth, I} & |\Name {Elizabeth, I}| or |\Eliz|\\\bottomrule
% \end{tabular}
% \end{center}
%
-% When using the quick interface, the preferred way to get alternate names is |``\LCarter[James Earl]''| ``\LCarter[James Earl]'' and |``\LMiyazaki[Sensei]''| ``\LMiyazaki[Sensei]''. The alternate forename is not shown in subsequent short name references e.g., |``\Carter[James Earl]''| is just ``\Carter[James Earl]''. Thus, one must use either long-name references or forename references to see the alternate names.
+% With the quick interface, the best way to get alternate names follows patterns like ``\LCarter[James Earl]'' |\LCarter[James Earl]| and ``\LMiyazaki[Sensei]'' |\LMiyazaki[Sensei]|. The alternate forename is not shown in subsequent short name instances e.g., ``\Carter[James Earl]'' |\Carter[James Earl]|. Thus, one must use either long-name instances or forename instances to see the alternate names.
+%
+% \newpage
%
% \subsection{Forenames: \texttt{\textbackslash FName}}
% \label{sec:FName}
@@ -3018,35 +3206,44 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \cmd{\FName*}\oarg{FNN}\marg{SNN|,| Affix}\oarg{Alternate}
% \end{SyntaxBox}
%
-% These forename reference macros will permit all name types, but the normal behavior prints forenames only with Western names. With non-Western names only \meta{SNN} is printed. This is designed to prevent Western writers from causing undue offense in Eastern contexts. It also prevents the display of nonsense names in the context of royal names.\medskip
+% These forename instance macros will permit all name types, but the normal behavior prints forenames only with Western names. With nonwestern names only \meta{SNN} is printed. This is designed to prevent Western writers from causing unintended offense in Eastern contexts. It also prevents the display of nonsense names in the context of ancient and royal names.
%
% \DescribeMacro{\ForceFN}
% To get an Eastern personal name or any affixed components of an ancient name, or to get \meta{Alternate} to display in their place, one must precede these macros with \cmd{\ForceFN}. See also Section~\ref{sec:NameMedieval} for more uses of \cmd{\ForceFN}.
%
-% \begin{center}\small
+% \begin{center}
% \vspace{3ex}
% \PatInfo{\ShowPattern[Albert]{Einstein}\break
% \ShowPattern[J.E.]{Carter, Jr.}\break
% \ShowPattern{Confucius}\break
% \ShowPattern{Miyazaki, Hayao}\break
% \ShowPattern{Elizabeth, I}}
-% \vspace{-3ex}\medstretch
+% \vspace{-3ex}
% \begin{tabular}{ll}\toprule
-% |\FName[Albert]{Einstein}| or |\SEinstein| & \SEinstein\\
-% \rowcolor{nagrey}|\FName[J.E.]{Carter, Jr.}[James Earl]| &
-% \SCarter[James Earl]\\
-% \rowcolor{nagrey}or |\SCarter[James Earl]| & \\
-% |\FName{Confucius}| or |\SConfucius |& \FName{Confucius}\\
-% \rowcolor{nagrey}|\FName{Miyazaki, Hayao}| or |\SMiyazaki| &
-% \FName{Miyazaki, Hayao}\\
-% |\ForceFN\FName{Miyazaki, Hayao}| & \ForceFN\FName{Miyazaki, Hayao}\\
-% or |\ForceFN\SMiyazaki| & \\
-% \rowcolor{nagrey}|\ForceFN\FName{Miyazaki, Hayao}[Sensei]| &
-% \ForceFN\FName{Miyazaki, Hayao}[Sensei]\\
-% \rowcolor{nagrey}or |\ForceFN\SMiyazaki[Sensei]| & \\
-% |\FName{Elizabeth, I}| or |\SEliz| & \SEliz\\
-% \rowcolor{nagrey}|\ForceFN\SEliz[Good Queen Bess]| &
-% \ForceFN\SEliz[Good Queen Bess]\\\bottomrule
+% \rowcolor{nagrey}^^A
+% \SEinstein & |\FName[Albert]{Einstein}| or |\SEinstein|\\
+%
+% \SCarter[Jimmy] & |\FName[J.E.]{Carter, Jr.}[Jimmy]|\\
+% & or |\SCarter[Jimmy]|\\
+%
+% \rowcolor{nagrey}^^A
+% \FName{Confucius} & |\FName{Confucius}| or |\SConfucius |\\
+%
+% \FName{Miyazaki, Hayao} & |\FName{Miyazaki, Hayao}| or |\SMiyazaki|\\
+%
+% \rowcolor{nagrey}^^A
+% \ForceFN\FName{Miyazaki, Hayao} & |\ForceFN\FName{Miyazaki, Hayao}|\\
+% \rowcolor{nagrey}^^A
+% & or |\ForceFN\SMiyazaki|\\
+%
+% \ForceFN\FName{Miyazaki, Hayao}[Sensei] &
+% |\ForceFN\FName{Miyazaki, Hayao}[Sensei]|\\
+% & or |\ForceFN\SMiyazaki[Sensei]|\\
+%
+% \rowcolor{nagrey}^^A
+% \SEliz & |\FName{Elizabeth, I}| or |\SEliz|\\
+% \ForceFN\SEliz[Good Queen Bess] &
+% |\ForceFN\SEliz[Good Queen Bess]|\\\bottomrule
% \end{tabular}
% \end{center}
%
@@ -3054,82 +3251,235 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{Quote}{\Name[Dwight D.]{Eisenhower}\break
% \hbox{}\hfill Associated Press luncheon (24 April 1950)}
-% Censorship, in my opinion, is a stupid and shallow way of approaching the solution to any problem. Though sometimes necessary, as witness a professional and technical secret that may have a bearing upon the welfare and very safety of this country, we should be very careful in the way we apply it, because in censorship always lurks the very great danger of working to the disadvantage of the American nation.
+% Censorship, in my opinion, is a stupid and shallow way of approaching the solution to any problem. Though sometimes necessary, as witness a professional and technical secret that may have a bearing upon the welfare and very safety of this country, we should be very careful in the way we apply it, because in censorship always lurks the very great danger of working to the disadvantage of the American nation.\negmedskip^^A
+% \index{politicians, quotes of\noexpand\string|hyperpage}
% \end{Quote}
%
% \subsection{Technical Details}
% \label{sec:TechDetails}
%
-% \subsubsection{Spaces in Arguments}
+% \subsubsection[Final Optargs]{Final Optional Arguments}
+% \label{sec:FinalOptargs}
%
-% To get consistent index entries (where spaces are significant), all \textsf{nameauth} macros that take name arguments trim extra spaces around each name argument. We shade those areas below, after which we provide an example with suppressed formatting:\medskip
+% Macros that take name arguments (see also Section~\ref{sec:NameArgMacros}) sometimes use a final optional argument. Using these arguments with the current syntax gives:
%
-% \begin{tcolorbox}[colframe=naslate,
-% valign=center,top=0mm,bottom=0mm]\centering
-% \begin{tabular}{c@{\qquad}c@{\qquad}c@{\qquad}c@{\qquad}c}
-% \tcbox[equal height group=F,colback=white,tikznode,
-% left=1mm,right=1mm,valign=center]
-% {\bfseries\meta{\color{nared}FNN}} &
-% \tcbox[equal height group=F,colback=white,tikznode,
-% left=1mm,right=1mm,valign=center]
-% {\bfseries\meta{SNN}} &
-% \tcbox[equal height group=F,colback=white,tikznode,
-% left=1mm,right=1mm,valign=center]
-% {\bfseries\ttfamily\strut\color{nared},} &
-% \tcbox[equal height group=F,colback=white,tikznode,
-% left=1mm,right=1mm,valign=center]
-% {\bfseries\meta{\color{nared}Affix}} &
-% \tcbox[equal height group=F,colback=white,tikznode,
-% left=1mm,right=1mm,valign=center]
-% {\bfseries\meta{\color{nared}Alternate}}
-% \end{tabular}
-% \end{tcolorbox}\smallskip
+% \begin{center}\IndexInactive\footnotesize
+% \renewcommand\NamesFormat{}
+% \renewcommand\MainNameHook{}
+% \begin{tabular}{l@{\ }l@{\ }l}\toprule
+% \rowcolor{nagrey}\bfseries Printed Name &
+% \bfseries Macro and Arguments & \bfseries Western Index Entry\\
+% \ForgetThis\Name[Person]{Family, Affix}[Alias] & |\Name[Person]{Family, Affix}[Alias]| &
+% \ShowIdxPageref*[Person]{Family, Affix}\\
+% \ForgetThis\Name[Person]{Family}[Alias] & |\Name[Person]{Family}[Alias]| &
+% \ShowIdxPageref*[Person]{Family}\\
+% \RevName\Name*[Person]{Family}[Alias] & |\RevName%| &
+% \ShowIdxPageref*[Person]{Family}\\
+% & |\Name[Person]{Family}[Alias]|\\\midrule
+% \rowcolor{nagrey}\bfseries Printed Name &
+% \bfseries Macro and Arguments & \bfseries Nonwestern Index Entry\\
+% \ForgetThis\Name{Family, Person}[Alias] & |\Name{Family, Person}[Alias]| &
+% \ShowIdxPageref*{Family, Person}\\
+% \RevName\Name*{Family, Person}[Alias] & |\RevName%| &
+% \ShowIdxPageref*{Family, Person}\\
+% & |\Name{Family, Person}[Alias]|\\
+% \ForgetThis\Name{Person, Affix}[Alias] & |\Name{Person, Affix}[Alias]| &
+% \ShowIdxPageref*{Person, Affix}\\\bottomrule
+% \end{tabular}\IndexActive
+% \end{center}
+%
+% Since May 2018, \textsf{xparse} offers two approaches that have their own pros and cons. Below \cmd{\Namei} works the same as \textsf{nameauth}. \cmd{\Nameii} takes the alternate route. If one builds this package with a \LaTeX\ distro from before 2018, \cmd{\Nameii} will not appear, and \cmd{\Namei} will work like \cmd{\Nameii} in newer versions. It was for the sake of stability and consistency that \textsf{nameauth} used \textsf{xargs} and \textsf{suffix} in its early days. Now that all the issues with \textsf{xparse} have been addressed, the latter is the best choice going forward.
+%
+% \begin{quote}
+% \begin{Verbatim}
+% \NewDocumentCommand {\Namei}{O{} m O{}}
+% {\def\Opt{#3}\ifx\Opt\empty #1\ #2\else \Opt\ #2\fi}
+% % Cannot use this definition before May 2018.
+% \NewDocumentCommand{\Nameii}{O{} m !O{}}
+% {\def\Opt{#3}\ifx\Opt\empty #1\ #2\else \Opt\ #2\fi}
+%
+% |\Namei: | \Namei[Person1]{Family1} [something1]\\[1ex]
+% |\Nameii:| \Nameii[Person2]{Family2} [something2]
+% \end{Verbatim}
+%
+% \ifdefined\nameauthxp%^^A
+% \NewDocumentCommand {\Namei}{O{} m O{}}
+% {\def\Opt{#3}\ifx\Opt\empty #1\ #2\else \Opt\ #2\fi}
+% \NewDocumentCommand{\Nameii}{O{} m !O{}}
+% {\def\Opt{#3}\ifx\Opt\empty #1\ #2\else \Opt\ #2\fi}
+% |\Namei: | \Namei[Person1]{Family1} [something1]\\[1ex]
+% |\Nameii:| \Nameii[Person2]{Family2} [something2]%^^A
+% \else
+% \NewDocumentCommand {\Namei}{O{} m O{}}
+% {\def\Opt{#3}\ifx\Opt\empty #1\ #2\else \Opt\ #2\fi}
+% |\Namei: | \Namei[Person1]{Family1} [something1]\\[1ex]
+% |\Nameii:| (\LaTeX\ too old)%^^A
+% \fi
+% \end{quote}
+%
+% \begin{itemize}
+% \item \cmd{\Namei} ignores spaces between the mandatory argument and the final optional argument.
+% \begin{itemize}
+% \item Subsequent text in brackets will be interpreted as a name argument, even if unintended.
+% \item Yet we avoid errors from unintended spaces when using alternate names and the obsolete syntax.
+% \end{itemize}
+%
+% \item \cmd{\Nameii} treats spaces between the mandatory argument and the final optional argument as significant.
+% \begin{itemize}
+% \item Subsequent text in brackets will be seen as a name argument only if no spaces occur between the mandatory argument and final optional argument.
+% \item Yet when using alternate names and the obsolete syntax, with unintended spaces we could ``lose'' names from the arguments and see unwanted results in the text.
+% \end{itemize}
+% \end{itemize}
+%
+% In the next example we show the default approach of \textsf{nameauth} in practice using the basic name interface. \cmd{\ForgetName} (Section~\ref{sec:NameControl}) lets us simulate first instances of names, even if they have appeared already.
+%
+% \begin{quote}
+% \ForgetName[Albert]{Einstein} \ForgetName{Miyazaki, Hayao}
+% \renewcommand\NamesFormat{}
+% \renewcommand\MainNameHook{}
+%
+% \begin{itemize}
+% \item[We want:] ``Albert Einstein [then] said'';
+% ``Miyazaki Hayao [apparently] said''.
+% \item[Also:] ``Einstein [then] said'';
+% ``Miyazaki [apparently] said''.
+% \item[Macros:] |``\Name[Albert]{Einstein} [then] said'';|\\
+% |``\Name{Miyazaki, Hayao} [apparently] said''.|
+% \item[We get:] ``\Name[Albert]{Einstein} [then] said'';
+% ``\Name{Miyazaki, Hayao} [apparently] said''.
+% \item[Repeat:] ``\Name[Albert]{Einstein} [then] said'';
+% ``\Name{Miyazaki, Hayao} [apparently] said''.
+% \end{itemize}
+%
+% \ForgetName[Albert]{Einstein} \ForgetName{Miyazaki, Hayao}
+% \begin{itemize}
+% \item Add explicit spaces:\\
+% ``\Name[Albert]{Einstein}\ [then] said'';
+% ``\Name {Miyazaki, Hayao}\ [apparently] said''.\\
+% |``\Name[Albert]{Einstein}\ [then] said'';|\\
+% |``\Name {Miyazaki, Hayao}\ [apparently] said''.|
+% \item Add curly braces:\\
+% ``\Name[Albert]{Einstein}{} [then] said'';
+% ``\Name{Miyazaki, Hayao}{} [apparently] said''.\\
+% |``\Name[Albert]{Einstein}{} [then] said'' and|\\
+% |``\Name{Miyazaki, Hayao}{} [apparently] said''.|
+% \end{itemize}
+% \end{quote}
+%
+% Now we show how the \textsf{nameauth} default argument handling works with the quick naming interface:
+%
+% \begin{quote}
+% \begin{Verbatim}
+% \begin{nameauth}
+% \< Einstein & Albert & Einstein & >
+% \< Miyazaki & & Miyazaki, Hayao & >
+% \end{nameauth}
+% \end{Verbatim}
+% \end{quote}
+%
+% \begin{quote}
+% \renewcommand\NamesFormat{}
+% \renewcommand\MainNameHook{}
+%
+% \ForgetName[Albert]{Einstein} \ForgetName{Miyazaki, Hayao}
+% \begin{itemize}
+% \item[We want:] ``Albert Einstein [then] said'';
+% ``Miyazaki Hayao [apparently] said''.
+% \item[Also:] ``Einstein [then] said'';
+% ``Miyazaki [apparently] said''.
+% \item[Macros:] |``\Einstein [then] said'';|\\
+% |``\Miyazaki [apparently] said''.|
+% \item[We get:] ``\Einstein [then] said'';
+% ``\Miyazaki [apparently] said''.
+% \item[Repeat:] ``\Einstein [then] said'';
+% ``\Miyazaki [apparently] said''.
+% \end{itemize}
+%
+% \ForgetName[Albert]{Einstein} \ForgetName{Miyazaki, Hayao}
+% \begin{itemize}
+% \item Add explicit spaces:\\
+% ``\Einstein\ [then] said'';
+% ``\Miyazaki\ [apparently] said''.\\
+% |``\Einstein\ [then] said'' and|\\
+% |``\Miyazaki\ [apparently] said''.|
+% \item Add curly braces:\\
+% ``\Einstein{} [then] said'';
+% ``\Miyazaki{} [apparently] said''.\\
+% |``\Einstein{} [then] said'' and|\\
+% |``\Miyazaki{} [apparently] said''.|
+% \end{itemize}
+% \end{quote}
+%
+% Section~\ref{sec:ChangeParse} shows how one can customize and change argument handling, addressing some of the same issues and caveats illustrated above.
+%
+% \begin{Quote}{\ForgetThis\Miyazaki\break
+% \hbox{}\hfill Proposal for \textit{Princess Mononoke}}
+% We depict hatred, but it is to depict that there are more important things. We depict a curse, to depict the joy of liberation.\negmedskip^^A
+% \index{creatives, quotes of\noexpand\string|hyperpage}
+% \end{Quote}
+%
+% \newpage
+%
+% \subsubsection[Name Arg Caveats]{Name Argument Caveats}
+%
+% To get consistent index entries, all \textsf{nameauth} macros that take name arguments trim extra spaces around each name argument, shown in gray below:
+% \begin{quote}
+% \def\gbox{\colorbox{nagrey}{\strut\quad\strut}}
+% \cmd{\Name}\texttt{[}\gbox\meta{\color{nared}FNN}\gbox\texttt{]}^^A
+% \texttt{\{}\gbox\meta{SNN}\gbox\texttt{\color{nared},}\gbox^^A
+% \meta{\color{nared}Affix}\gbox\texttt{\}}^^A
+% \texttt{[}\gbox\meta{\color{nared}Alternate}\gbox\texttt{]}
+% \end{quote}
+% We show this in practice while suppressing name formatting:
%
% \begin{VerbatimOut}{\jobname.tmp}
-% No spaces:
+% No spaces:\\
% \fbox{\strut\Name*[Martin Luther]{King,Jr.}}
% \fbox{\strut\Name [Martin Luther]{King,Jr.}}
% \fbox{\strut\FName[Martin Luther]{King,Jr.}}
%
-% Spaces:\hspace{1.4em}
+% Spaces:\\
% \fbox{\strut\Name*[ Martin Luther ]{ King , Jr. }}
% \fbox{\strut\Name [ Martin Luther ]{ King , Jr. }}
% \fbox{\strut\FName[ Martin Luther ]{ King , Jr. }}
% \end{VerbatimOut}
%
-% \begin{quote}\small
-% \vspace{3.5ex}
-% \BothInfo{\ShowPattern[Martin Luther]{King, Jr.}\break
-% \ShowPattern[ Martin Luther ]{ King , Jr. }}
-% {\ShowIdxPageref*[Martin Luther]{King, Jr.}\break
-% \ShowIdxPageref*[ Martin Luther ]{ King , Jr. }}
-% \vspace{-3.5ex}
-%
+% \begin{quote}
% \VerbatimInput[gobble=0]{\jobname.tmp}
% \renewcommand*\NamesFormat{}
% \renewcommand*\MainNameHook{}
%
+% \vspace{3ex}
+% \BothInfo{\ShowPattern[Martin Luther]{King, Jr.}\break
+% \ShowPattern[ Martin Luther ]{ King , Jr. }}
+% {\ShowIdxPageref*[Martin Luther]{King, Jr.}\break
+% \ShowIdxPageref*[ Martin Luther ]{ King , Jr. }}
+% \vspace{-3ex}
% \input{\jobname.tmp}
% \end{quote}
%
-% Now we resume this manual's formatting to help show that the names below are different, even though they appear similar.
+% We resume name formatting to show names that look the same, but are different. Non-breaking spaces, explicit spaces, thin spaces, and macros that expand to spaces \emph{are not trimmed}. They produce different name patterns, shown below:
+%
+% \begin{center}\IndexInactive
+% \begin{tabular}{lll}\toprule
+% \rowcolor{nagrey}^^A
+% \bfseries Output & \bfseries Macro & \bfseries Name Pattern\\
%
-% Non-breaking spaces, explicit spaces, thin spaces, and macros that expand to spaces \emph{are not trimmed} by either \LaTeX\ or \textsf{nameauth}. They produce different name patterns and, if used in macro arguments, must be used consistently (Section~\ref{sec:NameParticles}). Below we suppress indexing and show three different names:
+% \Name{foo~bar} & |\Name{foo~bar}| & \ttfamily\ShowPattern{foo~bar} \\
%
-% \begin{center}\IndexInactive\small\medstretch
-% \begin{tabular}{lcl}\toprule
-% Macro\,/\,Char: & Appearance: & Name Pattern:\\
-% \rowcolor{nagrey}|\Name{foo~bar}| & \Name{foo~bar} &
-% \ttfamily\ShowPattern{foo~bar} \\
-% |\Name{foo\ bar}| & \Name{foo\ bar} & \ttfamily\ShowPattern{foo\ bar} \\
-% \rowcolor{nagrey}|\Name{foo\space bar}| &
-% \Name{foo\space bar} & \ttfamily\ShowPattern{foo\space bar} \\\bottomrule
+% \rowcolor{nagrey}^^A
+% \Name{foo\ bar} & |\Name{foo\ bar}| & \ttfamily\ShowPattern{foo\ bar} \\
+%
+% \Name{foo\space bar} & |\Name{foo\space bar}| &
+% \ttfamily\ShowPattern{foo\space bar} \\\bottomrule
% \end{tabular}\IndexActive
% \end{center}
%
+% Name patterns, not name appearance, determine if names are the same (Section~\ref{sec:NamePatterns}). There may be cases where one might leverage that point.
+%
% \subsubsection{Full Stop Detection}
%
-% Western names tend to use full stops in these cases:
+% Western names tend to use full stops in various cases, including the following:
%
% \begin{itemize}
% \item After the initial letter abbreviation of forenames.
@@ -3140,90 +3490,152 @@ and version 1.3 or later is part of all distributions of LaTeX version
% (\textit{Philosophiae Doctor}), etc.
% \end{itemize}
%
-% The naming macros and some others (Section~\ref{sec:AKA}) check if the printed name ends with a full stop. They also check the lookahead token for a full stop and gobble the lookahead. In the following example we ``forget'' the existence of a name pattern via \cmd{\ForgetName} below (Section~\ref{sec:NameControl}) to simulate not having seen it before:
+% If name contains a full stop at the end, followed by a full stop in the text. the \textsf{nameauth} macros try to prevent two adjacent full stops. All macros that take name arguments and print names in the text check if the printed name ends with a full stop. They also check the lookahead token for a full stop. If both cases are true, they gobble the lookahead token.
%
-% \begin{VerbatimOut}{\jobname.tmp}
-% Full stop on lookahead gobbled\dotfill
-% \Name[Martin Luther]{King, Jr.}[Rev. Dr. Martin Luther].
+% \newpage
%
-% Full stop remains (affix auto-drops)\dotfill
-% Rev. Dr. \Name[Martin Luther]{King, Jr.}.
+% We show this behavior in the example below. \cmd{\ForgetName} (Section~\ref{sec:NameControl}) lets us simulate the first instances of names. The table tells us whether or not the full stop on the lookahead token is gobbled, why that is the case, as well as the output of the name in the text and its correlating source.
%
-% Full stop gobbled (force long name form)\dotfill
-% \Name*[Martin Luther]{King, Jr.}.
+% \begin{quote}
+% \begin{Verbatim}
+% \begin{nameauth}
+% \< MLK & Martin Luther & King, Jr. & >
+% \end{nameauth}
+% \end{Verbatim}
+% \end{quote}
%
-% Full stop remains (force affix to drop)\dotfill
-% \DropAffix\Name*[Martin Luther]{King, Jr.}.
+% \ForgetName[Martin Luther]{King, Jr.}
%
-% Full stop gobbled (alternate using initials)\dotfill
-% \FName[Martin Luther]{King, Jr.}[M.L.].
-% \end{VerbatimOut}
+% \begin{center}
+% \begin{tabular}{ll}\toprule
+% \rowcolor{nagrey}^^A
+% \bfseries Full Stop Gobbled & \bfseries Long Name Form, First Use\\
+% Dr. \Name[Martin Luther]{King, Jr.}. &
+% |Dr. \Name[Martin Luther]{King, Jr.}.| \\
%
-% \begin{quote}\small
-% \VerbatimInput[gobble=0]{\jobname.tmp}
-% \ForgetName[Martin Luther]{King, Jr.}
+% \rowcolor{nagrey}^^A
+% \bfseries Full Stop Gobbled & \bfseries Force Long Name Form \\
+% Dr. \Name*[Martin Luther]{King, Jr.}. &
+% |Dr. \Name*[Martin Luther]{King, Jr.}.| \\
+% Dr. \LMLK. &
+% |Dr. \LMLK.| \\
%
-% \input{\jobname.tmp}
-% \end{quote}
+% \rowcolor{nagrey}^^A
+% \bfseries Full Stop Gobbled & \bfseries Alternate FNN with Initials \\
+% \FName[Martin Luther]{King, Jr.}[M.L.]. &
+% |\FName[Martin Luther]{King, Jr.}[M.L.].| \\
+% \SMLK[M.L.]. &
+% |\SMLK[M.L.].| \\
+%
+% \rowcolor{nagrey}^^A
+% \bfseries Full Stop Remains & \bfseries Affix Auto-Drops \\
+% Dr. \Name[Martin Luther]{King, Jr.}. &
+% |Dr. \Name[Martin Luther]{King, Jr.}.| \\
+%
+% \rowcolor{nagrey}^^A
+% \bfseries Full Stop Remains & \bfseries Force Affix to Drop \\
+% \DropAffix\Name*[Martin Luther]{King, Jr.}. &
+% |\DropAffix\Name*[Martin Luther]{King, Jr.}.| \\
+% \DropAffix \LMLK. &
+% |\DropAffix \LMLK.| \\\bottomrule
+% \end{tabular}
+% \end{center}
%
-% \subsubsection{Braces and Spaces}
+% \subsubsection[Grouping, Spaces]{Grouping and Spaces}
+% \label{sec:GroupSpace}
%
% We disable indexing for the examples below so that we do not generate unwanted entries. Take care when using curly braces \texttt{\bfseries\{\,\}} in naming macro arguments. They will produce different names, as the formatting shows:
%
% \IndexInactive
-% \begin{center}\small\medstretch
-% \begin{tabular}{llll}\toprule
-% & Macro: & Result: & Name Pattern:\\
-% \rowcolor{nagrey} 1 & |\Name[one]{two}| & \Name[one]{two} &
-% \ttfamily\ShowPattern[one]{two} \\
+% \begin{center}
+% \begin{tabular}{lllll}\toprule
+% \rowcolor{nagrey}^^A
+% & \bfseries Macro & \bfseries Result & \bfseries Name Pattern & \bfseries Type\\
+%
+% 1 & |\Name[one]{two}| & \Name[one]{two} &
+% \ttfamily\ShowPattern[one]{two} & Western\\
+%
+% \rowcolor{nagrey}^^A
% 2 & |\Name[{one}]{{t}w{o}}| & \Name[{one}]{{t}w{o}} &
-% \ttfamily\ShowPattern[{one}]{{t}w{o}} \\
-% \rowcolor{nagrey} 3 & |\Name{one, two}| & \Name{one, two} &
-% \ttfamily\ShowPattern{one, two} \\
-% 4 & |\Name{{one}, two}| & \Name{{one}, two} &
-% \ttfamily\ShowPattern{{one}, two} \\
-% \rowcolor{nagrey} 5 & |\Name{{one, two}}| & \Name{{one, two}} &
-% \ttfamily\ShowPattern{{one, two}} \\\bottomrule
+% \ttfamily\ShowPattern[{one}]{{t}w{o}} & Western\\
+%
+% 3 & |\Name{{one}, two}| & \Name{{one}, two} &
+% \ttfamily\ShowPattern{{one}, two} & nonwestern\\
+%
+% \rowcolor{nagrey}^^A
+% 4 & |\Name{{one}, {two}}| & \Name{{one}, {two}} &
+% \ttfamily\ShowPattern{{one}, {two}} & nonwestern\\
+%
+% 5 & |\Name{{one, two}}| & \Name{{one, two}} &
+% \ttfamily\ShowPattern{{one, two}} & abnormal\\\bottomrule
% \end{tabular}
% \end{center}
%
-% Names one and two are Western; names three and four are non-Western. All names have different patterns and different index entries, even if they look similar in the text (Sections~\ref{sec:NamePatterns}, \ref{sec:IndexSort}). Name~5 is very tricky. The parts of |\Name{{one, two}}| are: \ShowNameInfo{{one, two}}. Compare that with the parts of |\Name{one, two}|: \ShowNameInfo{one, two}. This can affect alternate formatting (Section~\ref{sec:AltFormat}).
+% These names have different patterns and different index entries, even if they look similar in the text (Sections~\ref{sec:NamePatterns}, \ref{sec:IndexSort}). Similar issues pertain to grouping used with alternate formatting (Section~\ref{sec:AltFormat}). Consistency is key.
+%
+% The grouping used in name~5 creates an abnormality . Here we illustrate that with the output of \cmd{\ShowNameInfo} (Section~\ref{sec:DebuggingMacros}). Normally, the comma should delimit or segment the argument into two names:
+%
+% \begin{quote}
+% |\Name{one, two} | \ShowNameInfo{one, two}\\
+% |\Name{{one, two}}| \ShowNameInfo{{one, two}}
+% \end{quote}
% \IndexActive
%
-% Curly braces can change the lookahead token and defeat punctuation detection (as well as create a unique name). Using spaces between a name and a full stop can have a similar effect:
+% Curly braces can change the lookahead token and defeat punctuation detection (as well as create a new, unique name). Using spaces between a name and a full stop can have a similar effect. The next table shows us several actions that allow or inhibit full stop detection. We se ethe results of each action, the action taken, and both output and source related to that action.
%
-% \begin{VerbatimOut}{\jobname.tmp}
-% Full stop remains (not in group)\dotfill
-% Dr. {\Name*[Martin Luther]{King, Jr.}}.
-%
-% Full stop is gobbled (in containing group)\dotfill
-% Dr. {\Name*[Martin Luther]{King, Jr.}.}
+% \begin{center}
+% \begin{tabular}{ll}\toprule
+% \rowcolor{nagrey}^^A
+% \bfseries Full Stop Remains & \bfseries Not Contained in Group \\
+% Dr. {\Name*[Martin Luther]{King, Jr.}}. &
+% |Dr. {\Name*[Martin Luther]{King, Jr.}}.| \\
+% Dr. {\LMLK}. &
+% |Dr. {\LMLK}.| \\
%
-% Full stop remains (affix in own group)\dotfill
-% Dr. \SkipIndex\Name*[Martin Luther]{King, {Jr.}}.
+% \rowcolor{nagrey}^^A
+% \bfseries Full Stop Gobbled & \bfseries Contained in Group \\
+% Dr. {\Name*[Martin Luther]{King, Jr.}.} &
+% |Dr. {\Name*[Martin Luther]{King, Jr.}.}| \\
+% Dr. {\LMLK.} &
+% |Dr. {\LMLK.}| \\
%
-% Full stop is gobbled (outside affix group)\dotfill
-% Dr. \SkipIndex\Name*[Martin Luther]{King, {Jr}.}.
+% \rowcolor{nagrey}^^A
+% \bfseries Full Stop Remains & \bfseries Grouped in Affix; New Name \\
+% Dr. \SkipIndex\Name*[Martin Luther]{King, {Jr.}}. &
+% |Dr. \Name*[Martin Luther]{King, {Jr.}}.| \\
%
-% Full stop remains (intervening space)\dotfill
-% Dr. \Name*[Martin Luther]{King, Jr.} .
+% \rowcolor{nagrey}^^A
+% \bfseries Full Stop Gobbled & \bfseries Not Grouped in Affix; New Name \\
+% Dr. \SkipIndex\Name*[Martin Luther]{King, {Jr}.}. &
+% |Dr. \Name*[Martin Luther]{King, {Jr}.}.| \\
%
-% Full stop gobbled (follows macro cs)\dotfill \LPatton .
+% \rowcolor{nagrey}^^A
+% \bfseries Full Stop Remains & \bfseries Intervening Space \\
+% Dr. \Name*[Martin Luther]{King, Jr.} . &
+% |Dr. \Name*[Martin Luther]{King, Jr.} .| \\
%
-% Full stop remains (follows optarg)\dotfill \LPatton[George] .
-% \end{VerbatimOut}
+% \rowcolor{nagrey}^^A
+% \bfseries Full Stop Gobbled & \bfseries After Shorthand \\
+% Dr. \LMLK . &
+% |Dr. \LMLK .| \\
%
-% \begin{quote}\small
-% \VerbatimInput[gobble=0]{\jobname.tmp}
+% \rowcolor{nagrey}^^A
+% \bfseries Full Stop Remains & \bfseries After Shorthand with Optional Argument \\
+% Dr. \LMLK[M.L.] . &
+% |Dr. \LMLK[M.L.] .| \\
%
-% \input{\jobname.tmp}
-% \end{quote}
+% \rowcolor{nagrey}^^A
+% \bfseries Fixed; Space Removed & \\
+% Dr. \LMLK[M.L.]. &
+% |Dr. \LMLK[M.L.].| \\\bottomrule
+% \end{tabular}
+% \end{center}
%
% \subsubsection{Formatting Initials}
%
-% This is a thorny topic. Some publishers are dead-set on having a space between initials. Many designers find that practice to be inelegant at best. [\hyperlink{Bringhurst}{Bringhurst}] wisely advises one to omit spaces between initials.
+% This can be a thorny topic. Some publishers are dead-set on having a space between initials. Many designers find that practice to be inelegant at best. [\hyperlink{Bringhurst}{Bringhurst}] wisely advises one to omit spaces between initials.
%
-% Yet fighting with one's editor will be a lost cause unless one already has sufficient \textit{gravitas}. If a style guide requires spaces, try thin spaces. The quick interface reduces the likelihood that one will produce names that look the same, but whose arguments and name patterns differ. Below we use no formatting:
+% Fighting with one's editor does little good. If a style guide requires spaces, try thin spaces. The quick interface simplifies the task. Below we use no formatting:
%
% \begin{quote}^^A Normal size to show the spacing better.
% \begin{minipage}[c]{0.45\textwidth}
@@ -3248,116 +3660,124 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{minipage}
% \end{quote}
%
-% One might notice that we used \cmd{\PretagName} to sort this name by something other than its initials: ``White, Elwyn''. sorting only by initials (and with embedded macros like a thin space) will produce unexpected orderings of entries (Section~\ref{sec:IndexInitials}).
+% One might notice that we used \cmd{\PretagName} to sort this name by something other than its initials: ``White, Elwyn''. Sorting only by initials (and with embedded macros like a thin space) will produce unexpected entry order (Section~\ref{sec:IndexInitials}).
%
% \ReturnLink
%
-% \begin{Quote}{\Name[Leonard]{Bernstein}\break
-% \hbox{}\hfill ``What Makes Opera Grand?'', \textit{Vogue}
-% (December 1958)}
-% \textls[-15]{Any great work of art \dots revives and readapts time and space, and the measure of its success is the extent to which it makes you an inhabitant of that world\,---\,the extent to which it invites you in and lets you breathe its strange, special air.}
-% \end{Quote}
-%
-% \newpage
-%
% \section{Language Topics}
% \label{sec:Lang}
%
-% Here we cover technical issues related to various languages and cultures.
+% Here we cover technical issues related to the use of names in various languages and cultures. Specifically, we show how they should be represented in English, but this material can apply to other language standards as well.
%
% \subsection[Active Characters]{Caveats with Active Characters}
%
-% Active characters affect name patterns and index sorting, depending on the \LaTeX\ engine being used. We pay more attention to \cmd{\PretagName} (Section~\ref{sec:IndexSort}; cf.~\ref{sec:Unicode}):\footnote{Regarding the margin note that shows name control sequences, with \texttt{pdflatex} and \texttt{latex}, in \texttt{\ShowPattern{Æthelred, II}} the glyphs \texttt{ÃĘ} correspond to \cmd{\IeC\{}\cmd{\AE\}}. Likewise in \texttt{\ShowPattern{Boëthius}} the glyphs \texttt{Ãń} correspond to \cmd{\IeC\{}\cmd{\"e\}}.}
+% Active characters affect name patterns and index sorting, depending on the \LaTeX\ engine being used. We use \cmd{\PretagName} (Section~\ref{sec:IndexSort}; cf.~\ref{sec:Unicode}) to get correct sorting and \cmd{\SkipIndex} (Section~\ref{sec:IdxPrefix}) to suppress bogus index entries:
+%
+% \newpage
%
% \begin{enumerate}\small
-% \vspace{4ex}
+% \item \Name*{Æthelred, II}\dotfill |\Name*{Æthelred, II}|
% \PatInfo{\ShowPattern{Æthelred, II} \textrm{(1)}\break
% \ShowPattern{\AE thelred, II} \textrm{(2)}\break
% \ShowPattern{Bo\"ethius} \textrm{(3)}\break
% \ShowPattern{Boëthius} \textrm{(4)}\break
% \ShowPattern{Bo{\"e}thius} \textrm{(5)}}
-% \vspace{-4ex}
-% \item |\Name*{Æthelred, II}|\dotfill \Name*{Æthelred, II}
-% \item[] We have seen this name earlier, as the formatting shows.
+% \item[] We have seen this name earlier, as the formatting shows.\footnote{Regarding the margin note that shows name control sequences, with \texttt{pdflatex} and \texttt{latex}, in \texttt{\ShowPattern{Æthelred, II}} the glyphs \texttt{ÃĘ} correspond to \cmd{\IeC\{}\cmd{\AE\}}. Likewise in \texttt{\ShowPattern{Boëthius}} the glyphs \texttt{Ãń} correspond to \cmd{\IeC\{}\cmd{\"e\}}.}
% \item[] We sort this with |\PretagName{Æthelred, II}{Aethelred, 2}|
-% \item |\SkipIndex\Name{\AE thelred, II}|\dotfill
-% \SkipIndex\Name{\AE thelred, II}
+% \item \SkipIndex\Name{\AE thelred, II}\dotfill |\SkipIndex\Name{\AE thelred, II}|
% \item[] This name is new, as the formatting shows us. It looks like the
% name above, but its control pattern differs by the macro \cmd{\AE}.
% \item[] We get a different index entry, regardless of how we sort it.
-% \item |\Name{Bo\"ethius}|\dotfill \Name{Bo\"ethius}
+% \item \Name{Bo\"ethius}\dotfill |\Name{Bo\"ethius}|
% \item[] This new name uses |\"e| to display a lowercase e with a diaeresis.
% \item[] We sort it with |\PretagName{Bo\"ethius}{Boethius}|.
-% \item |\SkipIndex\Name{Boëthius}|\dotfill \SkipIndex\Name{Boëthius}
-% \item[] This name differs by the character ë.
-% \item |\SkipIndex\Name{Bo{\"e}thius}|\dotfill \SkipIndex\Name{Bo{\"e}thius}
-% \item[] Yet another different name differs by grouping tokens. These are
-% significant with regard to name patterns and indexing.
+% \item \SkipIndex\Name{Boëthius}\dotfill |\SkipIndex\Name{Boëthius}|
+% \item[] This name differs by the character ë. It cannot have the same index entry as \Name{Bo\"ethius} above.
+% \item \SkipIndex\Name{Bo{\"e}thius}\dotfill |\SkipIndex\Name{Bo{\"e}thius}|
+% \item[] Yet another different name by virtue of grouping tokens (Section~\ref{sec:GroupSpace}). The index entry for this one is again different.
% \end{enumerate}
%
% \subsection{Hyphenation}
-% \negmedskip
-% \NameArgWarning
%
-% In modern English, names can be hyphenated to reflect their cultural origins. With \textsf{nameauth}, one can handle such names by using optional hyphens, the \textsf{babel} package, or the \textsf{polyglossia} package. Below we offer an example using a mancro that does not expand differently throughout the document.\footnote{Using macros in name arguments does introduce potential problems that we discuss in Sections~\ref{sec:NameParticles}, \ref{sec:AltFormat}, and elsewhere, showing how to prevent errors.}
+% In modern English, names can be hyphenated to reflect their cultural origins. With \textsf{nameauth}, one can handle such names by using default hyphenation, optional hyphens, or packages like \textsf{babel} and \textsf{polyglossia}.
% \IndexName[John]{\noexpand\de{Strietelmeier}}
%
-% \begin{quote}\small
-% \begin{Verbatim}
-% \newcommand\de[1]{\foreignlanguage{ngerman}{#1}}
-% % or polyglossia: \newcommand\de[1]{\textgerman{#1}}
+% \subsubsection*{\hfil Default Hyphenation}
%
-% \begin{nameauth}
-% \< Striet & John & \noexpand\de{Strietelmeier} & >
-% \end{nameauth}
+% Here\PatInfo{\ShowPattern[John]{Strietelmeier}} we use the default hyphenation. Using \cmd{\textls} from \textsf{microtype} we get the name to break badly. We use \cmd{\SkipIndex} to omit this version from the index.
%
-% \PretagName[John]{\noexpand\de{Strietelmeier}}
-% {Strietelmeier, John}
-% \end{Verbatim}
+% \begin{VerbatimOut}{\jobname.tmp}
+% \textls[20]{In English, some names come from other cultures.
+% Names like \SkipIndex\Name[John]{Strietelmeier}
+% can break badly in some cases.}
+% \end{VerbatimOut}
+%
+% \begin{quote}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+%
+% \input{\jobname.tmp}
% \end{quote}
%
-% \begin{itemize}
-% \item \textbf{Example 1: Default Hyphenation}
+% \subsubsection*{\hfil Discretionary Hyphens}
+%
+% We\PatInfo{\ShowPattern[John]{Strie\-tel\-meier}} create a different name from that above. One must use the discretionary hyphens consistently in the macro arguments. We use \cmd{\Name[John]\{Strie\textbackslash-tel\textbackslash-meier\}} to omit this version from the index. We see that it breaks properly.
+%
+% \begin{VerbatimOut}{\jobname.tmp}
+% \textls[20]{In English, some names come from other cultures.
+% Names like \SkipIndex\Name[John]{Strie\-tel\-meier}
+% can break badly in some cases.}
+% \end{VerbatimOut}
+%
+% \begin{quote}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+%
+% \input{\jobname.tmp}
+% \end{quote}
%
-% \item[] Here\PatInfo{\ShowPattern[John]{Strietelmeier}} we use the default hyphenation. Using \cmd{\textls} from \textsf{microtype} we get the name to break badly. We omit this version from the index. One might think that the name were pronounced ``stre-et-el-mei-er''.\smallskip
+% \subsubsection*{\hfil Language Packages}
%
-% \item[] \textls[5]{In English, some names come from other cultures. Names
-% like \SkipIndex\Name[John]{Strietelmeier}
-% \cmd{\SkipIndex}\cmd{\Name[John]\{Strietelmeier\}} can break badly.}\medskip
+% Here\PatInfo{\textls[-5]{\ShowPattern[John]{\de{Strietelmeier}}}} we use an approach with macros in name arguments that can be applied to \textsf{babel} and \textsf{polyglossia}. This approach has issues that we discuss in Sections~\ref{sec:NameParticles}, \ref{sec:AltFormat}, and elsewhere, showing how to prevent errors.
%
-% \item \textbf{Example 2: Discretionary Hyphens}
+% \NameArgWarning
%
-% Here\PatInfo{\ShowPattern[John]{Strie\-tel\-meier}} we create a different name from the one above. One must use the discretionary hyphens consistently in the macro arguments. We also omit this version from the index. We see that it breaks properly.\smallskip
+% Since the leading element of \meta{SNN} is a macro, using \cmd{\CapThis} would halt \LaTeX\ with errors unless we used alternate formatting (Section~\ref{sec:AltFormat}):
%
-% \item[] \textls[9]{In English, some names come from other cultures. Names
-% like \SkipIndex\Name[John]{Strie\-tel\-meier}}
-% \textls[10]{\cmd{\SkipIndex}^^A
-% \cmd{\Name[John]\{Strie\textbackslash-tel\textbackslash-meier\}}
-% break badly in some cases.}\medskip
+% \begin{VerbatimOut}{\jobname.tmp}
+% \textls[20]{In English, some names come from other cultures.
+% Names like \Striet\ or \Name[John]{\noexpand\de{Strietelmeier}}
+% break badly in some cases.}
+% \end{VerbatimOut}
%
-% \item \textbf{Example 3: Language Packages}
+% \begin{quote}
+% \begin{Verbatim}
+% \newcommand\de[1]{\foreignlanguage{ngerman}{#1}}
+% % or polyglossia: \newcommand\de[1]{\textgerman{#1}}
%
-% Finally\PatInfo{\textls[-5]{\ShowPattern[John]{\de{Strietelmeier}}}} we use the general solution shown above with \textsf{babel} or \textsf{polyglossia}. Since the leading element of \meta{SNN} is a macro, using \cmd{\CapThis} would halt \LaTeX\ with errors unless we used alternate formatting that does not segment the argument (Section~\ref{sec:AltFormat}):\smallskip
+% \begin{nameauth}
+% \< Striet & John & \noexpand\de{Strietelmeier} & >
+% \end{nameauth}
%
-% \item[] \textls[7]{In English, some names come from other cultures. Names
-% like} \Striet, \textls[20]{\cmd{\Striet} or
-% \cmd{\Name[John]\{}\cmd{\noexpand}\cmd{\de\{Strietelmeier\}\}}}\break
-% break badly in some cases.
-% \end{itemize}
+% \PretagName[John]{\noexpand\de{Strietelmeier}}
+% {Strietelmeier, John}
+% \end{Verbatim}
+% \VerbatimInput[gobble=0,firstnumber=10]{\jobname.tmp}
+%
+% \input{\jobname.tmp}
+% \end{quote}
%
% \subsection{Affixes Need Commas}
% \label{sec:Affix}
+% \negmedskip
%
-% \negmedskip\begin{InfoBox}
-% Regarding an \meta{SNN, Affix} pair, the key to avoiding error is to apply macros to \meta{SNN} and \meta{Affix} as if they were independent arguments.\end{InfoBox}
+% \begin{InfoBox}
+% Regarding an \meta{SNN, Affix} pair, the key to avoiding error is to apply macros to \meta{SNN} and \meta{Affix} as if they were independent arguments.^^A
+% \end{InfoBox}
%
% A comma is not a required name element unless used in an \meta{SNN, Affix} pair. When thus used it delimits a Western surname from its affix, an Eastern family name from a personal name, and an ancient name from an affix.
%
-% When a comma appears in a required name argument, each member of the \meta{SNN, Affix} pair is treated as a separate argument. Thus, we say that the comma segments the macro argument.
+% When a comma appears in a required name argument, each member of the \meta{SNN, Affix} pair is treated as a separate argument. Thus, we say that the comma delimits or segments the name argument. Spaces around the comma are ignored. See Section~\ref{sec:Noexpand} for more information when using macros in name arguments. Below we see the basics of commas in name arguments.
%
-% If one encapsulates an \meta{SNN, Affix} pair within a macro, \LaTeX\ may halt with errors. We have seen above that spaces around the comma are ignored.
-%
-% \begin{center}\small
+% \begin{center}
% \vspace{1ex}
% \BothInfo{\ShowPattern[Oskar]{Hammerstein, II}\break
% \ShowPattern{Louis, XIV}\break
@@ -3365,25 +3785,29 @@ and version 1.3 or later is part of all distributions of LaTeX version
% {\ShowIdxPageref*[Oskar]{Hammerstein, II}\break
% \ShowIdxPageref*{Louis, XIV}\break
% \ShowIdxPageref*{Sun, Yat-sen}}
-% \vspace{-1ex}\medstretch
+% \vspace{-1ex}
% \ForgetName{Sun, Yat-sen}
% \begin{tabular}{ll}\toprule
-% |\Name[Oskar]{Hammerstein, II}| & \KeepAffix\Name[Oskar]{Hammerstein, II}\\
-% |\Name[Oskar]{Hammerstein, II}| & \Name[Oskar]{Hammerstein, II}\\
-% \rowcolor{nagrey}|\Name{Louis, XIV}| & \KeepAffix\Name{Louis, XIV}\\
-% \rowcolor{nagrey}|\Name{Louis, XIV}| & \Name{Louis, XIV}\\
-% |\Name{Sun, Yat-sen}| & \KeepAffix\Name{Sun, Yat-sen}\\
-% |\Name{Sun, Yat-sen}| & \Name{Sun, Yat-sen}\\\bottomrule
+% \rowcolor{nagrey}^^A
+% \Name[Oskar]{Hammerstein, II} & |\Name[Oskar]{Hammerstein, II}|\\
+% \rowcolor{nagrey}^^A
+% \Name[Oskar]{Hammerstein, II} & |\Name[Oskar]{Hammerstein, II}|\\
+%
+% \Name{Louis, XIV} & |\Name{Louis, XIV}|\\
+% \Name{Louis, XIV} & |\Name{Louis, XIV}|\\
+%
+% \rowcolor{nagrey}^^A
+% \Name{Sun, Yat-sen} & |\Name{Sun, Yat-sen}|\\
+% \rowcolor{nagrey}^^A
+% \Name{Sun, Yat-sen} & |\Name{Sun, Yat-sen}|\\\bottomrule
% \end{tabular}
% \end{center}
%
-% \newpage
-%
% Western names with affixes must use \meta{SNN,Affix},^^A
-% \PatInfo{\ShowPattern[Oskar]{Hammerstein}[II]} never the obsolete syntax, which is meant for non-Western names and is discouraged. We get \SkipIndex\Name[Oskar]{Hammerstein}[II] and a bad index entry from, e.g., \cmd{\SkipIndex}\cmd{\Name[Oskar]\{Hammerstein\}[II]}.\medskip
+% \PatInfo{\ShowPattern[Oskar]{Hammerstein}[II]} never the obsolete syntax, which is meant for nonwestern names and is discouraged. We get \SkipIndex\Name[Oskar]{Hammerstein}[II] and a bad index entry from, e.g., \cmd{\SkipIndex}\cmd{\Name[Oskar]\{Hammerstein\}[II]}.
%
% \DescribeMacro{\KeepAffix}
-% If the name displayed in the text shows both \meta{SNN} and \meta{Affix}, then \cmd{\KeepAffix} turns the space \emph{between} \meta{SNN} and \meta{Affix} into a non-breaking space. \cmd{\KeepAffix}\cmd{\Name\{Louis, XIV\}} will not break between \Name{Louis, XIV} and \ForceFN\FName{Louis, XIV}. All name types that use \meta{Affix} are supported. \medskip
+% If the name displayed in the text shows both \meta{SNN} and \meta{Affix}, then \cmd{\KeepAffix} turns the space \emph{between} \meta{SNN} and \meta{Affix} into a non-breaking space. \cmd{\KeepAffix}\cmd{\Name\{Louis, XIV\}} will not break between \Name{Louis, XIV} and \ForceFN\FName{Louis, XIV}. All name types that use \meta{Affix} are supported.
%
% \DescribeMacro{\KeepName}
% In longer name forms, \cmd{\KeepName} turns spaces \emph{between} all visible name elements into non-breaking spaces.
@@ -3398,22 +3822,23 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \FName[Sandra Day]{O'Connor}[Sandra].
% \end{itemize}
%
-% This macro does not alter spaces \emph{within} name elements composed of multiple names, like French or German forenames and Spanish surnames. \cmd{\KeepName} works with all name types.\medskip
+% This macro does not alter spaces \emph{within} name elements with multiple names, such as French and German forenames, as well as Spanish surnames. \cmd{\KeepName} works with all name types.
%
% \DescribeMacro{\DropAffix}
-% If \cmd{\DropAffix} precedes only a Western name, it will suppress the affix after the surname in a first or long reference. We get ``\DropAffix\Name*[Oskar]{Hammerstein, II}'' From |\DropAffix\Name*[Oskar]{Hammerstein, II}|.
+% If \cmd{\DropAffix} precedes only a Western name, it will suppress the affix after the surname in a first or long instance. We get ``\DropAffix\Name*[Oskar]{Hammerstein, II}'' From |\DropAffix\Name*[Oskar]{Hammerstein, II}|.
%
-% With non-Western names, the \meta{Affix} in the \meta{SNN, Affix} pair drops automatically in the text for subsequent uses, making \cmd{\DropAffix} redundant. We see that above in the case of \Name*{Louis,XIV}, who becomes \Name{Louis,XIV}.\medskip
+% With nonwestern names, the \meta{Affix} in the \meta{SNN, Affix} pair drops automatically in the text for subsequent uses, making \cmd{\DropAffix} redundant. We see that above in the case of \Name*{Louis,XIV}, who becomes \Name{Louis,XIV}.
%
% \DescribeMacro{\ShowComma}
% In a long name form, \cmd{\ShowComma} forces the display of a comma between a Western name and its affix.
% \DescribeMacro{\NoComma}
% It works like the \texttt{comma} option on a per-name basis, and only in the text. One uses \cmd{\ShowComma} with older publication styles that separate a Western name and affix with a comma. \cmd{\NoComma} works like the \texttt{nocomma} option in the body text on a per-name basis.
%
-% \begin{center}\small\medstretch
+% \begin{center}
% \begin{tabular}{ll}\toprule
-% |\ShowComma\LPatton| & \ShowComma\LPatton\\
-% \rowcolor{nagrey}|\NoComma\LPatton| & \NoComma\LPatton\\\bottomrule
+% \rowcolor{nagrey}^^A
+% \ShowComma\LPatton & |\ShowComma\LPatton|\\
+% \NoComma\LPatton & |\NoComma\LPatton|\\\bottomrule
% \end{tabular}
% \end{center}
%
@@ -3423,98 +3848,110 @@ and version 1.3 or later is part of all distributions of LaTeX version
% {Eastern Names and Family Names in All Caps}
% \label{sec:Eastern}
%
-% Proper Eastern names, included with ancient and medieval forms in the broader group of non-Western names, are encoded using comma-delimited syntax (compare the obsolete syntax in Section~\ref{sec:Obsolete}). They have non-Western index entries: \meta{SNN} \meta{Affix} (no comma between name elements). The current syntax permits alternate names; the obsolete does not.
+% Proper Eastern names, included with ancient and medieval forms in the broader group of nonwestern names, are encoded using comma-delimited syntax (compare the obsolete syntax in Section~\ref{sec:Obsolete}). They have nonwestern index entries: \meta{SNN} \meta{Affix} (no comma between name elements). The current syntax permits alternate names; the obsolete does not.
%
% \begin{SyntaxBox}
% \cmd{\Name}\marg{SNN, Affix}\oarg{Alternate}
% \end{SyntaxBox}
%
-% Even in some academic texts, one sees non-Western names encoded with Western forms.\footnote{\textls[-5]{Jaroslav Pelikan, \textit{The Christian Tradition}, 5 vols. (Chicago: Chicago UP, 1971–1989); Immanuel Geiss, \textit{Personen: Die biographische Dimension der Weltgeschichte}, Geschichte Griffbereit vol. 2 (Munich: Wissen Media Verlag, 2002).} At this time, \href{https://www.nndb.com/}{\bfseries NNDB} sorts \Name{Kim, Jong Un} under U, not K.}
-% The \textsf{nameauth} package seeks to remedy that issue, which has more to do with outsourcing indexes to non-expert providers than with scholars. For example, the macro |\Name*{Sun, Yat-sen}| \Name*{Sun, Yat-sen} ensures correct forms in the text and the index. We get cross-cultural sensitivity and scholarly accuracy.\medskip
+% Even in some academic texts, one sees nonwestern names encoded with Western forms.\footnote{\textls[-5]{Jaroslav Pelikan, \textit{The Christian Tradition}, 5 vols. (Chicago: Chicago UP, 1971–1989); Immanuel Geiss, \textit{Personen: Die biographische Dimension der Weltgeschichte}, Geschichte Griffbereit vol. 2 (Munich: Wissen Media Verlag, 2002).} At this time, \href{https://www.nndb.com/}{\bfseries NNDB} sorts \Name{Kim, Jong Un} under U, not K.}
+% The \textsf{nameauth} package seeks to remedy that issue, which has more to do with outsourcing indexes to non-expert providers than with scholars. For example, the macro |\Name*{Sun, Yat-sen}| \Name*{Sun, Yat-sen} ensures correct forms in the text and the index. We get cross-cultural sensitivity and scholarly accuracy.
%
% \DescribeMacro{\AllCapsActive}
% Certain contexts call for one's entire family name to be capitalized. This differs
% \DescribeMacro{\AllCapsInactive}
% from the way in which initial letter capitalization is handled (Section~\ref{sec:NameParticles}). In addition to the \texttt{allcaps} package option
% \DescribeMacro{\CapName}
-% (Section~\ref{sec:PkgOptions}), \cmd{\AllCapsActive} and \cmd{\AllCapsInactive} work for blocks of text. All have priority over \cmd{\CapName}, which works once per name. These capitalize \meta{SNN} in the body text only. They also work with \cmd{\AKA} and friends. For capitalization in both the text and index (beyond doing it manually) see Sections~\ref{sec:AltFormat} and~\ref{sec:AdvCustomize}.\medskip
+% (Section~\ref{sec:PkgOptions}), \cmd{\AllCapsActive} and \cmd{\AllCapsInactive} work for blocks of text. All have priority over \cmd{\CapName}, which works once per name. These capitalize \meta{SNN} in the body text only. They also work with \cmd{\AKA} and friends. For capitalization in both the text and index (beyond doing it manually) see Sections~\ref{sec:AltFormat} and~\ref{sec:AdvCustomize}.
%
% Both\Info{\cmd{\global}} \cmd{\AllCapsActive} and \cmd{\AllCapsInactive} can be used either as a pair or singly within an explicitly local scope. Use \cmd{\global} to force a global effect.
+% \medskip
%
-% \vspace{2ex}
+% \begin{center}
+% \begin{tabular}{ll}\toprule
+% \rowcolor{nagrey}^^A
+% \LNoguchi & |\LNoguchi| \\
+%
+% \CapName\LNoguchi & |\CapName\LNoguchi}|\\
+%
+% \rowcolor{nagrey}^^A
+% \LMiyazaki & |\LMiyazaki| \\
+%
+% \CapName\LMiyazaki & |\CapName\LMiyazaki|\\\bottomrule
+% \end{tabular}
+% \end{center}
+% \vspace{-14ex}
% \BothInfo{\ShowPattern[Hideyo]{Noguchi}\break
% \ShowPattern{Miyazaki, Hayao}}
% {\ShowIdxPageref*[Hideyo]{Noguchi}\break
% \ShowIdxPageref*{Miyazaki, Hayao}}
-% \vspace{-2ex}
-% \begin{center}\small\medstretch
-% \begin{tabular}{ll}\toprule
-% |\LNoguchi| & \LNoguchi \\
-% \rowcolor{nagrey}|\CapName\LNoguchi}| & \CapName\LNoguchi\\
-% |\LMiyazaki| & \LMiyazaki \\
-% \rowcolor{nagrey}|\CapName\LMiyazaki| & \CapName\LMiyazaki\\\bottomrule
-% \end{tabular}
-% \end{center}
+% \vspace{14ex}
%
% \subsection{Reversed Names}
% \label{sec:RevNames}
%
-% Sometimes the name form in the text differs from its expected index entry, as we saw with Hungarian names. In another example, a publisher might expect Western-style name forms in the index. In \textsf{nameauth} we can use the reversing option and macros to change the form in the text while not disturbing the index entries.\medskip
+% Sometimes a publisher expects Western-style index entries. Sometimes certain names have specific forms in the index, The reversing option and macros can adapt forms in the text to the index entries required in such cases.
%
% \DescribeMacro{\ReverseActive}
% In addition to the \texttt{allreversed} option for reversing name order (Section~\ref{sec:PkgOptions}), \cmd{\ReverseActive} and \cmd{\ReverseInactive} do the same for blocks of text.
% \DescribeMacro{\ReverseInactive}
% These all have priority over the use of \cmd{\RevName}, used once per name.
% \DescribeMacro{\RevName}
-% These macros do not affect the index. They work also with \cmd{\AKA} and friends. Reversing only affects long name forms. In this manual, reversed Western forms are shown with a dagger (\dag).\medskip
+% These macros do not affect the index. They work also with \cmd{\AKA} and friends. \emph{Reversing only affects long name forms,} which is why we show only long names below. In this manual, reversed Western forms are shown with a dagger (\dag).
%
% Both\Info{\cmd{\global}} \cmd{\ReverseActive} and \cmd{\ReverseInactive} can be used either as a pair or singly within an explicitly local scope. Use \cmd{\global} to force a global effect.
%
-% \vspace{4ex}
+% \begin{center}
+% \vspace{3ex}
% \BothInfo{\ShowPattern[Hideyo]{Noguchi}\break \ShowPattern{Miyazaki, Hayao}}
% {\ShowIdxPageref*[Hideyo]{Noguchi}\break \ShowIdxPageref*{Miyazaki, Hayao}}
-% \vspace{-4ex}
-% \begin{center}\small\medstretch
-% \begin{tabular}{rll}\toprule
-% & unchanged & |\RevName|\\
-% \rowcolor{nagrey}|\LNoguchi| & \LNoguchi & \RevName\LNoguchi\dag\\
-% \rowcolor{nagrey}|\LNoguchi[Doctor]| & \LNoguchi[Doctor] &
-% \raise0.5ex\hbox to 5em{\hfil\rule{3em}{0.6pt}} \\
-% \rowcolor{nagrey}|\LNoguchi[Sensei]| &
-% \raise0.5ex\hbox to 5em{\hfil\rule{3em}{0.6pt}} &
-% \RevName\LNoguchi[Sensei]\dag\\
-% \rowcolor{nagrey}|\Noguchi| & \Noguchi & \RevName\Noguchi\dag\\
-% \rowcolor{nagrey}|\SNoguchi| & \SNoguchi & \RevName\SNoguchi\dag\\
-% |\LMiyazaki| & \LMiyazaki & \RevName\LMiyazaki\\
-% |\LMiyazaki[Mr.]| & \raise0.5ex\hbox to 5em{\hfil\rule{3em}{0.6pt}} &
-% \RevName\LMiyazaki[Mr.]\\
-% |\LMiyazaki[Sensei]| & \LMiyazaki[Sensei] &
-% \raise0.5ex\hbox to 5em{\hfil\rule{3em}{0.6pt}}\\
-% |\Miyazaki| & \Miyazaki & \RevName\Miyazaki\\
-% |\SMiyazaki| & \SMiyazaki & \RevName\SMiyazaki\\
-% |\ForceFN\SMiyazaki| & \ForceFN\SMiyazaki &
-% \ForceFN\RevName\SMiyazaki\\\bottomrule
+% \vspace{-3ex}
+% \begin{tabular}{ll}\toprule
+% \rowcolor{nagrey}^^A
+% \bfseries Output & \bfseries Macro \\
+%
+% \LNoguchi & |\LNoguchi| \\
+% \LNoguchi[Doctor] & |\LNoguchi[Doctor]| \\
+% \strut Bad result: \fbox{\LNoguchi[Sensei]} & |\LNoguchi[Sensei]| \\
+%
+% \rowcolor{nagrey}^^A
+% \RevName\LNoguchi\dag & |\RevName\LNoguchi\dag| \\
+% \rowcolor{nagrey}^^A
+% \strut Bad result: \fbox{\RevName\LNoguchi[Doctor]} & |\RevName\LNoguchi[Doctor]| \\
+% \rowcolor{nagrey}^^A
+% \RevName\LNoguchi[Sensei]\dag & |\RevName\LNoguchi[Sensei]| \\
+%
+% \LMiyazaki & |\LMiyazaki| \\
+% \LMiyazaki[Sensei] & |\LMiyazaki[Sensei]| \\
+% \strut Bad result: \fbox{\LMiyazaki[Mr.]} & |\LMiyazaki[Mr.]| \\
+%
+% \rowcolor{nagrey}^^A
+% \RevName\LMiyazaki & |\RevName\LMiyazaki| \\
+% \rowcolor{nagrey}^^A
+% \RevName\LMiyazaki[Mr.] & |\RevName\LMiyazaki[Mr.]| \\
+% \rowcolor{nagrey}^^A
+% \strut Bad result: \fbox{\RevName\LMiyazaki[Sensei]} &
+% |\RevName\LMiyazaki[Sensei]| \\\bottomrule
% \end{tabular}
% \end{center}
+% \negmedskip
%
% \begin{SyntaxBox}[Reversing Western Names]
% \cmd{\RevName}\cmd{\Name}\oarg{FNN}\marg{SNN}\oarg{Alternate}
% \end{SyntaxBox}
%
-% As we see from the syntax, one should avoid using \meta{Affix} with such names. For example, |\RevName\LPatton\dag| produces ``\RevName\LPatton\dag''. The name looks wrong unless one uses either \cmd{\RevComma} or \cmd{\DropAffix}.
-%
-% The index entry of this name form looks like \meta{SNN}, \meta{FNN} (including the comma). This is a Western index entry. This form is used also for Hungarian names, e.g.: |\RevName\Name[Frenec]{Molnár}\dag| \ForgetThis\RevName\Name[Frenec]{Molnár}\dag, \RevName\Name[Frenec]{Molnár}\dag.
+% Avoid using \meta{Affix} with such names. For example, |\RevName\LPatton\dag| produces ``\RevName\LPatton\dag''. The name looks wrong unless one uses either \cmd{\RevComma} or \cmd{\DropAffix}. This name has a Western index entry.
%
% \begin{SyntaxBox}[Reversing Eastern Names]
% \cmd{\RevName}\cmd{\Name}\marg{SNN, Affix}\oarg{Alternate}
% \end{SyntaxBox}
%
-% The index entry of this name form looks like \meta{SNN} \meta{FNN} (no comma). This is and remains a non-Western index entry.
+% The index entry of this name form looks like \meta{SNN} \meta{FNN} (no comma). This name has a nonwestern index entry.
%
-% \begin{InfoBox}[Reversing Ancient Names]
-% The syntax would be the same for reversing Eastern names, but this
-% usually results in producing nonsense names. We do not recommend it.
+% \begin{InfoBox}
+% Reversing ancient names works the same as reversing Eastern names. The problem is that, in most cases, one produces a nonsense name.
% \end{InfoBox}
+% \negmedskip
%
% \subsection[Listing by Surname]{Listing Western names by Surname}
% \label{sec:LastFirst}
@@ -3522,17 +3959,20 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \DescribeMacro{\ReverseCommaActive}
% To make lists of ``last comma first'' names, in addition to the \texttt{allrevcomma} option (Section~\ref{sec:PkgOptions}),
% \DescribeMacro{\ReverseCommaInactive}
-% the macros \cmd{\ReverseCommaActive} and \cmd{\ReverseCommaInactive} function the same way with blocks of text.\DescribeMacro{\RevComma} They both have priority over \cmd{\RevComma}. These all affect only long Western name forms. The first two are broad toggles, while the third is used once per name.\medskip
+% the macros \cmd{\ReverseCommaActive} and \cmd{\ReverseCommaInactive} function the same way with blocks of text.\DescribeMacro{\RevComma} They both have priority over \cmd{\RevComma}. These all affect only long Western name forms. The first two are broad toggles, while the third is used once per name.
%
% Both\Info{\cmd{\global}} \cmd{\ReverseCommaActive} and \cmd{\ReverseCommaInactive} can be used either as a pair or singly within a local scope. Use \cmd{\global} to force a global effect.
%
-% \begin{center}\small\medstretch
+% \begin{center}
% \begin{tabular}{lll}\toprule
+% \rowcolor{nagrey}^^A
% \Name*[Oskar]{Hammerstein, II} &
% \RevComma\Name*[Oskar]{Hammerstein, II} & change\\
+% \rowcolor{nagrey}^^A
% \LNoguchi & \RevComma\LNoguchi & change\\
-% \rowcolor{nagrey}\LAeth & \RevComma\LAeth & no change\\
-% \rowcolor{nagrey}\Name*{Sun, Yat-sen} &
+%
+% \LAeth & \RevComma\LAeth & no change\\
+% \Name*{Sun, Yat-sen} &
% \RevComma\Name*{Sun, Yat-sen} & no change\\\bottomrule
% \end{tabular}
% \end{center}^^A
@@ -3543,13 +3983,6 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \ShowPattern{Sun, Yat-sen}}
% \vspace{12ex}
%
-% \begin{Quote}{\small\Name[W.H.]{Auden}\break
-% \hbox{}\hfill \textit{Paris Review} interview (1972) p. 206}
-% I don't think the mystical experience can be verbalized. When the ego disappears, so does power over language.
-% \end{Quote}
-%
-% \newpage
-%
% \subsection{Particles in Names}
% \label{sec:NameParticles}
%
@@ -3557,23 +3990,21 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \subsubsection{Standard Rules}
%
-% Modern standards tend to treat particles in the following way:
+% According to [\hyperlink{Mulvany}{Mulvany}, 152–82], one may treat name particles in the following way:
%
% \begin{itemize}
% \item English use of \textit{de}, \textit{de\ la}, \textit{d'},
% \textit{von}, \textit{van}, and \textit{ten} often keeps them with the
-% surname with varied capitalization.
+% surname. Capitalization may vary.
% \item \textit{Le}, \textit{La}, and \textit{L'} always are capitalized
-% unless preceded by \textit{de}.\footnote{According to
-% [\hyperlink{Mulvany}{Mulvany}, 152–82] and the \textit{Chicago Manual
-% of Style}.}
+% unless preceded by \textit{de}.
% \item Modern Romance languages keep particles with the surname.
% \item German and medieval Romance languages keep particles with forenames.
-% \item Welsh, Irish, and Scots names often merge particles with surnames:
-% FitzRoy or Fitzroy; O'Leary; McDonald, MacLeish.
+% \item Modern Welsh, Irish, and Scots names often merge particles with
+% surnames: FitzRoy or Fitzroy; O'Leary; McDonald, MacLeish.
% \end{itemize}
%
-% \begin{center}\small
+% \begin{center}
% \vspace{2ex}
% \BothInfo{\ShowPattern[Martin]{Van Buren}\break
% \ShowPattern[Hernando]{de~Soto}\break
@@ -3581,19 +4012,26 @@ and version 1.3 or later is part of all distributions of LaTeX version
% {\ShowIdxPageref*[Martin]{Van Buren}\break
% \ShowIdxPageref*[Hernando]{de~Soto}\break
% \ShowIdxPageref*[J.W. von]{Goethe}}
-% \vspace{-2ex}\medstretch
-% \begin{tabular}{rll}\toprule
-% \bfseries Macro & \bfseries Body Text & \bfseries Index \\
-% \rowcolor{nagrey}\cmd{\ForgetThis}\cmd{\VBuren} &
-% \ForgetThis\VBuren & \ShowIdxPageref*[Martin]{Van Buren}\\
-% \cmd{\VBuren} & \VBuren & \ShowIdxPageref*[Martin]{Van Buren}\\
-% \rowcolor{nagrey}\cmd{\ForgetThis}\cmd{\Soto} &
-% \ForgetThis\Soto & \ShowIdxPageref*[Hernando]{de~Soto}\\
-% \cmd{\CapThis}\cmd{\Soto} & \CapThis\Soto &
-% \ShowIdxPageref*[Hernando]{de~Soto}\\
-% \rowcolor{nagrey}\cmd{\ForgetThis}\cmd{\JWG} & \ForgetThis\JWG &
-% \ShowIdxPageref*[J.W. von]{Goethe}\\
-% \cmd{\JWG} & \JWG & \ShowIdxPageref*[J.W. von]{Goethe}\\\bottomrule
+% \vspace{-2ex}
+% \begin{tabular}{lll}\toprule
+% \rowcolor{nagrey}^^A
+% \bfseries Body Text & \bfseries Index & \bfseries Macro \\
+%
+% \ForgetThis\VBuren & \ShowIdxPageref*[Martin]{Van Buren} &
+% \cmd{\ForgetThis}\cmd{\VBuren} \\
+% \VBuren & \ShowIdxPageref*[Martin]{Van Buren} & \cmd{\VBuren} \\
+%
+% \rowcolor{nagrey}^^A
+% \ForgetThis\Soto & \ShowIdxPageref*[Hernando]{de~Soto} &
+% \cmd{\ForgetThis}\cmd{\Soto} \\
+% \rowcolor{nagrey}^^A
+% \CapThis\Soto & \ShowIdxPageref*[Hernando]{de~Soto} &
+% \cmd{\CapThis}\cmd{\Soto} \\
+%
+% \ForgetThis\JWG & \ShowIdxPageref*[J.W. von]{Goethe} &
+% \cmd{\ForgetThis}\cmd{\JWG}\\
+%
+% \JWG & \ShowIdxPageref*[J.W. von]{Goethe} & \cmd{\JWG}\\\bottomrule
% \end{tabular}
% \end{center}
%
@@ -3605,34 +4043,40 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% There are characters that look similar, but in fact are different. For example, \textit{L'} (L+apostrophe) and \textit{d'} (d+apostrophe) are two separate glyphs each. In contrast, \textit{Ľ} (L+caron) and \textit{ď} (d+caron) are one Unicode glyph each (Section~\ref{sec:Unicode}). If one confuses these similar characters, spurious results can occur.
%
-% \subsubsection{Capitalizing Particles}
+% \subsubsection[Capitalizing]{Capitalizing Particles}
%
% \DescribeMacro{\CapThis}
-% In English and modern Romance languages, names like \LSoto\ have their particles in the \meta{SNN} argument: \Soto. When the particle appears at the beginning of a sentence, one must capitalize it, e.g.,: ``\CapThis\Soto\ |\CapThis\Soto\| was a famous Spanish explorer in North America.''
+% In English and modern Romance languages, names like \LSoto\ have their particles in the \meta{SNN} argument: \Soto. When the particle appears at the beginning of a sentence, one must capitalize it, e.g.,:
%
% \begin{itemize}
+% \item[] \CapThis\Soto\ was a famous Spanish explorer.
+% \item[] |\CapThis\Soto\ was a famous Spanish explorer.|\medskip
+%
% \item With \texttt{latex} and \texttt{pdflatex}, using \cmd{\CapThis}
% should work with all of the Unicode characters available in the T1
% encoding. For a broader set of characters, consider using \texttt{xelatex}
% and \texttt{lualatex}.
+%
% \item Section~\ref{sec:NonstandardCaps} applies \cmd{\CapThis}
% to nonstandard names and indexing.
+%
% \item Sections~\ref{sec:AltFormat} and~\ref{sec:Unicode} explain
% potential problems of \cmd{\CapThis}. That is a trade-off
% for using a natural language approach.
+%
% \item \cmd{\CapName} overrides the \meta{SNN} created by \cmd{\CapThis}.
% It is unlikely that the two would be used in the same context.
% \end{itemize}
%
% \DescribeMacro{\AccentCapThis}
-% Before \textsf{nameauth} used automatic Unicode detection, \cmd{\AccentCapThis} placed before \cmd{\CapThis} handled Unicode characters. It remains for backward compatibility. Otherwise it is seldom used
+% Before \textsf{nameauth} used automatic Unicode detection, \cmd{\AccentCapThis} placed before \cmd{\CapThis} handled Unicode characters. It remains for backward compatibility. Otherwise it is seldom used and not needed.
%
% \subsection{Medieval Names}
% \label{sec:NameMedieval}
%
% Medieval names present some interesting difficulties, often based on the expected standards of the context in which they are used. Some publications use them like Western names while others do not. In the following preamble snippet we have:\footnote{Regarding the margin note that shows name control sequences, with \texttt{pdflatex} and \texttt{latex}, in \texttt{\ShowPattern{Thomas, à~Kempis}} the glyphs \texttt{Ãă} correspond to \cmd{\IeC\{}\texttt{\textbackslash\textquotesingle a\}}.}
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \PretagName{Thomas, à~Kempis}{Thomas Akempis} % medieval
% \PretagName[Thomas]{à~Kempis}{Akempis, Thomas} % Western
@@ -3674,6 +4118,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% name under \texttt{Thomas}, followed by \texttt{Akempis}, not
% \texttt{A kempis} (cf. 10 below).
% \end{enumerate}
+%
% \item Alternate medieval form: |\Name{Thomas,\`a~Kempis}|
% \begin{enumerate}\addtocounter{enumi}{4}
% \item \Name{Thomas,\`a~Kempis} is a different name.
@@ -3684,8 +4129,6 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \JustIndex\KempMed|\JustIndex\KempMed|.
% \end{enumerate}
%
-% \newpage
-%
% \item Western form: \cmd{\KempW}
% \begin{enumerate}\addtocounter{enumi}{7}
% \item \KempW\ is a Western name form with the index entry:
@@ -3703,135 +4146,168 @@ and version 1.3 or later is part of all distributions of LaTeX version
% |\PretagName[Thomas]{à~Kempis}{Akempis, Thomas}|
% \end{enumerate}
% \end{itemize}
-% \negmedskip
%
% \ReturnLink
%
+% \newpage
+%
% \addtocontents{toc}{\protect\goodbreak}
% \section{Debugging}
% \label{sec:Debugging}
%
-% As we move forward in this manual, many concepts will mesh together in complex ways. Indexing is the first topic to do that. Name patterns govern those interactions, and debugging macros illustrate what is going on. First, we explain what the debugging macros are trying to communicate. Next, we describe the macros.
-%
-% Previously, we have seen simple name patterns displayed in the margin, which look like the examples shown below:
+% From this point onward, concepts that we introduced earlier will mesh together in complex ways, starting with indexing. Name patterns govern those interactions, illustrated by debugging macros. We explain what the debugging macros communicate, then we describe the macros.
%
-% \begin{quote}\small\ttfamily
-% \begin{tabular}{@{\qquad}l}
-% \ShowPattern[George]{Washington}\\
-% \ShowPattern{Miyazaki, Hayao}
-% \end{tabular}
-% \end{quote}
-%
-% Now we switch to full name patterns, which indicate the ``system'' or data set to which a control sequence representing a name belongs. Name patterns usually expand to empty, except for exclusions.\footnote{To fit the information in the margin, we display them by taking the output of \cmd{\ShowPattern} and manually adding the system to correspond to the package internals.}
-% The patterns look like this:
+% \leavevmode^^A
+% \PatInfo{\ShowPattern[George]{Washington}\\
+% \ShowPattern{Miyazaki, Hayao}}
+% Previously, we have seen simple name patterns displayed in the margin, which look like the examples to the left of this paragraph. Now we show full name patterns, which indicate the ``system'' or data set to which they belong. Name patterns are control sequences that usually expand to the empty string.
+% They look like this:\footnote{To fit the information in the margin, we display them by taking the output of \cmd{\ShowPattern} and manually adding the system to correspond to the package internals.}
%
-% \begin{quote}\small
+% \begin{quote}
% \ttfamily\begin{tabular}{@{\qquad}l@{\quad \% }l}
% \ShowPattern[George]{Washington}!MN & name, main matter\\
% \ShowPattern{Miyazaki, Hayao}!NF & name, front matter\\
% \ShowPattern[Jay]{Rockefeller}!PN & index cross-reference\\
% \ShowPattern[W.E.B.]{Du~Bois}!PRE & index sort tag\\
-% \ShowPattern{Gregory, I}!TAG & index data tag\\
-% \ShowPattern[Schuyler]{Colfax}!DB & name data tag\\
+% \ShowPattern{Gregory, I}!TAG & index tag\\
+% \ShowPattern[Schuyler]{Colfax}!DB & name tag\\
% \end{tabular}
% \end{quote}
+% \negmedskip
%
-% No longer will we show index entries in the margin because they shall become too large and complex to fit there. We will show index entries in the body text.
+% \begin{InfoBox}
+% From this point onward, we show index entries in the body text instead of the margin due to their increasing complexity.
+% \end{InfoBox}
+% \negmedskip
%
% \subsection[Name Patterns]{Name Pattern Overview}
% \label{sec:NamePatterns}
%
-% The next table shows how macro arguments generate name patterns. The \meta{Alternate} argument only affects patterns when using the obsolete syntax (Section~\ref{sec:Obsolete}). The patterns govern names in both the text and the index. The colon at the beginning of each pattern was added to prevent any collisions with extant macros:
+% Below we show how macro arguments generate name patterns. The \meta{Alternate} argument only affects patterns when using the obsolete syntax (Section~\ref{sec:Obsolete}). The patterns govern names in both the text and the index. The colon at the beginning of each pattern prevents any collisions with extant macros:
%
-% \begin{center}\small\medstretch
+% \begin{center}
% \begin{tabular}{lll}\toprule
-% Macro Arguments & Patterns & Name Type\\
-% \rowcolor{nagrey}\oarg{FNN}\marg{SNN} &
+% \rowcolor{nagrey}^^A
+% \bfseries Macro Arguments & \bfseries Patterns & \bfseries Name Type\\
+%
+% \oarg{FNN}\marg{SNN} &
% :\meta{FNN}!\meta{SNN} & Western\\
% \oarg{FNN}\marg{SNN}\oarg{Alt} &
% :\meta{FNN}!\meta{SNN} & Western\\
-% \rowcolor{nagrey}\oarg{FNN}\marg{SNN, Affix} &
+% \oarg{FNN}\marg{SNN, Affix} &
% :\meta{FNN}!\meta{SNN},\meta{Affix} & Western\\
% \oarg{FNN}\marg{SNN, Affix}\oarg{Alt} &
% :\meta{FNN}!\meta{SNN},\meta{Affix} & Western\\
-% \rowcolor{nagrey}\hphantom{\oarg{FNN}}\marg{SNN, Affix} &
-% :\meta{SNN},\meta{Affix} & non-Western\\
+%
+% \rowcolor{nagrey}^^A
+% \hphantom{\oarg{FNN}}\marg{SNN, Affix} &
+% :\meta{SNN},\meta{Affix} & nonwestern\\
+% \rowcolor{nagrey}^^A
% \hphantom{\oarg{FNN}}\marg{SNN, Affix}\oarg{Alt} &
-% :\meta{SNN},\meta{Affix} & non-Western\\
-% \rowcolor{nagrey}\hphantom{\oarg{FNN}}\marg{SNN}\oarg{Alt} &
+% :\meta{SNN},\meta{Affix} & nonwestern\\
+%
+% \hphantom{\oarg{FNN}}\marg{SNN}\oarg{Alt} &
% :\meta{SNN},\meta{Alt} & old syntax\\
+%
+% \rowcolor{nagrey}^^A
% \hphantom{\oarg{FNN}}\marg{SNN} &
-% :\meta{SNN} & non-Western\\\bottomrule
+% :\meta{SNN} & nonwestern\\\bottomrule
% \end{tabular}
-% \end{center}\medskip
+% \end{center}
%
% \DescribeMacro{\NameauthPattern}
% Every time a macro that takes name arguments is called (Section~\ref{sec:NameArgMacros}), the internal name category logic will \cmd{\let} the current name pattern to \cmd{\NameauthPattern}, making it available to formatting hooks (cf. Section~\ref{sec:DataTagHooks}).
%
-% The name category logic is provided by \cmd{\@nameauth@Choice}, which determines the type of name (Western or non-Western) by its arguments. Various \textsf{nameauth} macros append the appropriate ``system'' or name data set indicator to the pattern. We use this concept starting here, but mostly in Section~\ref{sec:AdvancedFormat}.
-%
-% First we show name patterns generated from name elements and the type of name. Reversed Western names are marked by a dagger (\dag); names that use the obsolete syntax are marked by a double dagger (\ddag). We use two versions of each name, plus variations in formatting, to show that the patterns depend on the arguments, not the appearance of the name. Note also that the obsolete non-Western syntax and the current one still share the same patterns.
-%
-% \begin{center}\small\medstretch
-% \begin{tabular}{rll}\toprule
-% Macro & Body Text & \cmd{\ShowPattern}\\
-% \rowcolor{nagrey}\cmd{\Harnack[Adolf von]} & \Harnack[Adolf von] &
-% \texttt{\ShowPattern[Adolf]{Harnack}}\\
-% \rowcolor{nagrey}\cmd{\LHarnack} & \LHarnack &
-% \texttt{\ShowPattern[Adolf]{Harnack}}\\
-% \cmd{\ForgetThis}\cmd{\Patton} & \ForgetThis\Patton &
-% \texttt{\ShowPattern[George S.]{Patton, Jr.}}\\
-% \cmd{\DropAffix}\cmd{\LPatton} & \DropAffix\LPatton &
-% \texttt{\ShowPattern[George S.]{Patton, Jr.}}\\
-% \rowcolor{nagrey}\cmd{\ForgetThis}\cmd{\Noguchi} & \ForgetThis\Noguchi &
-% \texttt{\ShowPattern[Hideyo]{Noguchi}}\\
-% \rowcolor{nagrey}\cmd{\RevName}\cmd{\LNoguchi}\cmd{\dag} &
-% \RevName\LNoguchi\dag & \texttt{\ShowPattern[Hideyo]{Noguchi}}\\
-% \cmd{\ForgetThis}\cmd{\Yamt} & \ForgetThis\Yamt &
-% \texttt{\ShowPattern{Yamamoto,Isoroku}}\\
-% \cmd{\RevName}\cmd{\LYamt} & \RevName\LYamt &
-% \texttt{\ShowPattern{Yamamoto,Isoroku}}\\
-% \rowcolor{nagrey}\cmd{\Name\{Henry,VIII\}} & \Name{Henry,VIII} &
-% \texttt{\ShowPattern{Henry,VIII}}\\
-% \rowcolor{nagrey}\cmd{\Name*\{Henry\}[VIII]}\cmd{\ddag} &
-% \Name*{Henry}[VIII]\ddag & \texttt{\ShowPattern{Henry,VIII}}\\
-% \cmd{\Dem[I Soter]} & \Dem[I Soter] & \texttt{\ShowPattern{Demetrius,I}}\\
-% \cmd{\LDem} & \LDem & \texttt{\ShowPattern{Demetrius,I}}\\
-% \rowcolor{nagrey}\cmd{\ForgetThis}\cmd{\Aris} & \ForgetThis\Aris &
-% \texttt{\ShowPattern{Aristotle}}\\
-% \rowcolor{nagrey}\cmd{\Aris} & \Aris &
-% \texttt{\ShowPattern{Aristotle}}\\\bottomrule
+% The name category logic is provided by \cmd{\@nameauth@Choice}, which determines the type of name (Western or nonwestern) by its arguments. Various \textsf{nameauth} macros append the appropriate ``system'' or name data set indicator to the pattern. We use this concept starting here, but mostly in Section~\ref{sec:AdvancedFormat}.
+%
+% Below are name patterns generated from name elements. We mark reversed Western names with a dagger (\dag) and names using the obsolete syntax with a double dagger (\ddag). We show that name patterns depend on name arguments, not on the appearance of a name. The obsolete nonwestern syntax and the current syntax share the same patterns.
+%
+% \begin{center}
+% \begin{tabular}{lll}\toprule
+% \rowcolor{nagrey}^^A
+% \bfseries Body Text & \bfseries \cmd{\ShowPattern} & \bfseries Macro\\
+%
+% \Harnack[Adolf von] & \texttt{\ShowPattern[Adolf]{Harnack}} &
+% \cmd{\Harnack[Adolf von]}\\
+% \LHarnack & \texttt{\ShowPattern[Adolf]{Harnack}} &
+% \cmd{\LHarnack}\\
+%
+% \rowcolor{nagrey}^^A
+% \ForgetThis\Patton & \texttt{\ShowPattern[George S.]{Patton, Jr.}} &
+% \cmd{\ForgetThis}\cmd{\Patton}\\
+% \rowcolor{nagrey}^^A
+% \DropAffix\LPatton & \texttt{\ShowPattern[George S.]{Patton, Jr.}} &
+% \cmd{\DropAffix}\cmd{\LPatton}\\
+%
+% \ForgetThis\Noguchi & \texttt{\ShowPattern[Hideyo]{Noguchi}} &
+% \cmd{\ForgetThis}\cmd{\Noguchi}\\
+% \RevName\LNoguchi\dag & \texttt{\ShowPattern[Hideyo]{Noguchi}} &
+% \cmd{\RevName}\cmd{\LNoguchi}\cmd{\dag}\\
+%
+% \rowcolor{nagrey}^^A
+% \ForgetThis\Yamt & \texttt{\ShowPattern{Yamamoto,Isoroku}} &
+% \cmd{\ForgetThis}\cmd{\Yamt}\\
+% \rowcolor{nagrey}^^A
+% \RevName\LYamt & \texttt{\ShowPattern{Yamamoto,Isoroku}} &
+% \cmd{\RevName}\cmd{\LYamt}\\
+%
+% \Name{Henry,VIII} & \texttt{\ShowPattern{Henry,VIII}} &
+% \cmd{\Name\{Henry,VIII\}}\\
+% \Name*{Henry}[VIII]\ddag & \texttt{\ShowPattern{Henry,VIII}} &
+% \cmd{\Name*\{Henry\}[VIII]}\cmd{\ddag}\\
+%
+% \rowcolor{nagrey}^^A
+% \Dem[I Soter] & \texttt{\ShowPattern{Demetrius,I}} & \cmd{\Dem[I Soter]}\\
+% \rowcolor{nagrey}^^A
+% \LDem & \texttt{\ShowPattern{Demetrius,I}} & \cmd{\LDem}\\
+%
+% \ForgetThis\Aris & \texttt{\ShowPattern{Aristotle}} &
+% \cmd{\ForgetThis}\cmd{\Aris}\\
+% \Aris & \texttt{\ShowPattern{Aristotle}} &
+% \cmd{\Aris}\\\bottomrule
% \end{tabular}
-% \end{center}\medskip
+% \end{center}
%
-% Six suffixes are appended to these patterns to create six ``systems'' or data sets. The \meta{pattern} element in the next table is the output of \cmd{\ShowPattern}. Within that \meta{pattern} is a leading colon, name elements with spaces removed, and delimiters that separate those elements. Western names use an exclamation point and a comma. Non-Western names only use a comma. For the use of ID, see \cmd{\ShowNameState} on page~\pageref{page:NameState}. For the way that exclusions use the cross-reference system as a special case for preventing index interaction, see Section~\ref{sec:IdxFine}.
+% Six suffixes are appended to these patterns to create six ``systems'' or data sets. The \meta{pattern} element in the next table is the output of \cmd{\ShowPattern}. Within that \meta{pattern} is a leading colon, name elements with spaces removed, and delimiters that separate those elements. Western names use an exclamation point and a comma. Nonwestern names only use a comma. For the use of ID, see \cmd{\ShowNameState} on page~\pageref{page:NameState}. For the way that exclusions use the cross-reference system as a special case for preventing index interaction, see Section~\ref{sec:IdxFine}.
%
-% \begin{center}\small\medstretch
+% \begin{center}
% \begin{tabular}{llll}\toprule
-% Description & Pattern & ID & Example\\
-% \rowcolor{nagrey}Front-matter names & \meta{pattern}\texttt{!NF} &
+% \rowcolor{nagrey}^^A
+% \bfseries Description & \bfseries Pattern & \bfseries ID & \bfseries Example\\
+%
+% Front-matter names & \meta{pattern}\texttt{!NF} &
% front & \texttt{\ShowPattern[Adolf]{Harnack}{!NF}}\\
+%
+% \rowcolor{nagrey}^^A
% Main-matter names & \meta{pattern}\texttt{!MN} & main &
% \texttt{\ShowPattern[Hideyo]{Noguchi}{!MN}}\\
-% \rowcolor{nagrey}Index cross-refs & \meta{pattern}\texttt{!PN} &
+%
+% Index cross-refs & \meta{pattern}\texttt{!PN} &
% xref & \texttt{\ShowPattern{Yamamoto, Isoroku}{!PN}}\\
+%
+% \rowcolor{nagrey}^^A
% Exclusions & \meta{pattern}\texttt{!PN} &
% excl & (like xref, special value)\\
-% \rowcolor{nagrey}Index sort tags & \meta{pattern}\texttt{!PRE} & pretag &
+%
+% Index sort tags & \meta{pattern}\texttt{!PRE} & pretag &
% \texttt{\ShowPattern{Henry, VIII}{!PRE}}\\
+%
+% \rowcolor{nagrey}^^A
% Index data tags & \meta{pattern}\texttt{!TAG} &
% idxtag & \texttt{\ShowPattern{Demetrius, I}{!TAG}}\\
-% \rowcolor{nagrey}Name data tags & \meta{pattern}\texttt{!DB} & namedb &
+%
+% Name data tags & \meta{pattern}\texttt{!DB} & namedb &
% \texttt{\ShowPattern{Aristotle}{!DB}}\\\bottomrule
% \end{tabular}
% \end{center}
%
-% The following macros write the patterns that they generate to certain systems or data sets. \cmd{\IndexName} does not generate a name pattern, even though it writes index entries. This lets the index control logic be keyed to cross-references.
+% Next we see what macros write patterns to what systems. \cmd{\IndexName} does not generate a name pattern. This lets cross-references determine the index control logic.
%
-% \begin{center}\small\medstretch
+% \begin{center}
% \begin{tabular}{lcccccc}\toprule[1pt]
-% Macros & \ttfamily \,!NF\, & \ttfamily \,!MN\, & \ttfamily \,!PN\, &
-% \ttfamily !PRE & \ttfamily !TAG & \ttfamily \,!DB\,\\\midrule
+% \bfseries Macros & \bfseries \ttfamily \,!NF\, & \bfseries \ttfamily \,!MN\, &
+% \bfseries \ttfamily \,!PN\, & \bfseries \ttfamily !PRE &
+% \bfseries \ttfamily !TAG & \bfseries \ttfamily \,!DB\,\\\midrule
% \cmd{\Name} \cmd{\Name*} \cmd{\FName} \cmd{\FName*} & \YES & \YES & \NO &
% \NO & \NO & \NO\\
% \cmd{\ForgetName} \cmd{\SubvertName} & \YES & \YES & \NO &
@@ -3853,7 +4329,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \subsection{Indexing: States}
% \label{sec:RuleStates}
%
-% Six distinct ``states'' describe any name pattern with respect to the index. They are derived using \cmd{\ShowNameState}. Below we show these states and what they mean.
+% Six distinct ``states'' describe any name pattern with respect to the index. They are derived using \cmd{\ShowNameState}. Below we show these states and what they mean.\medskip
%
% \begin{tcolorbox}
% [colback=white,colframe=darkgray,
@@ -3907,6 +4383,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{itemize}
% \end{tcolorbox}
%
+% \begin{Quote}{\Name[Mark]{Twain}, \textit{The Innocents Abroad} (1869)}
+% Virtue never has been as respectable as money.^^A
+% \index{creatives, quotes of\noexpand\string|hyperpage}
+% \end{Quote}
+%
% \begin{tcolorbox}
% [colback=white,colframe=darkgray,
% adjusted title={\bfseries\hfil State 3: Only an Xref Pattern Exists}]
@@ -3971,6 +4452,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{itemize}
% \end{tcolorbox}
%
+% \begin{Quote}{\Name[W.H.]{Auden}, \textit{Paris Review} interview (1972) p. 206}
+% I don't think the mystical experience can be verbalized. When the ego disappears, so does power over language.^^A
+% \index{creatives, quotes of\noexpand\string|hyperpage}
+% \end{Quote}
+%
% \begin{tcolorbox}
% [colback=white,colframe=darkgray,
% adjusted title={\bfseries\hfil State 6: Both Name Pattern and
@@ -4001,30 +4487,28 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \cmd{\ShowPattern}\oarg{FNN}\marg{SNN|,| Affix}\oarg{Alternate}
% \end{SyntaxBox}
%
-% Thus, |\texttt{\ShowPattern[Hernando]{de~Soto}}| will produce the output \JustIndex\Soto\texttt{\ShowPattern[Hernando]{de~Soto}}. As we have seen before, using \textsf{inputenc}/\textsf{fontenc} will cause names like |\texttt{\ShowPattern{Boëthius}}| to produce \texttt{\ShowPattern{Boëthius}}\JustIndex\Name{Bo\"ethius}.\medskip
+% Thus, |\texttt{\ShowPattern[Hernando]{de~Soto}}| will produce the output \JustIndex\Soto\texttt{\ShowPattern[Hernando]{de~Soto}}. As we have seen before, using \textsf{inputenc}/\textsf{fontenc} will cause names like |\texttt{\ShowPattern{Boëthius}}| to produce \texttt{\ShowPattern{Boëthius}}\JustIndex\Name{Bo\"ethius}.
%
% \DescribeMacro{\ShowIdxPageref}
-% \cmd{\ShowIdxPageref} displays a full index entry in the text as if it were only a page reference, not a cross-reference.
+% \cmd{\ShowIdxPageref} displays a full index entry in the text as if it were only a page entry, not a cross-reference.
%
% \begin{SyntaxBox}
% \cmd{\ShowIdxPageref\ }\oarg{FNN}\marg{SNN|,| Affix}\oarg{Alternate}
% \end{SyntaxBox}
%
-% Index styles, \cmd{\PretagName}, and \cmd{\TagName} affect the output of \cmd{\ShowIdxPageref}. Active characters and macros appear as printed, not as in \texttt{idx} files. In a normal \LaTeX\ document, for example, if we mention \LSoto\ after setting up the following sort tag (Section~\ref{sec:IndexSort}), we get:
+% Index styles, \cmd{\PretagName}, and \cmd{\TagName} affect the output of \cmd{\ShowIdxPageref}. Active characters and macros appear as printed, not as in \texttt{idx} files. In a normal \LaTeX\ document, for example, if we mention \LSoto\ after setting up a sort tag (Section~\ref{sec:IndexSort}), we get the following:
%
-% \begin{quote}\small
+% \begin{quote}
% |\PretagName[Hernando]{de~Soto}{Desoto, Hernando}|
%
% \IndexActual{@}\UntagName[Hernando]{de~Soto}
% |\ShowIdxPageref[Hernando]{de~Soto}|\\
-% \ShowIdxPageref[Hernando]{de~Soto}\footnote{We cannot generate any index
-% entries in this quote because we changed \cmd{\IndexActual}.}
+% \ShowIdxPageref[Hernando]{de~Soto}
% \end{quote}
%
-% In this \texttt{dtx} file, however, due to extra setup needed in the
-% ``commented'' part of the file (Section~\ref{sec:IndexTag}), we get:
+% We could not create index entries within the quote above in this \texttt{dtx} file because we changed \cmd{\IndexActual}. A \texttt{dtx} file uses a different default for \cmd{\IndexActual} (see Section~\ref{sec:IndexTag}). Here we get instead:
%
-% \begin{quote}\small
+% \begin{quote}
% |\PretagName[Hernando]{de~Soto}{Desoto, Hernando}|\\
% \verb+\TagName[Hernando]{de~Soto}{\string|hyperpage}+
%
@@ -4043,7 +4527,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% Regardless of whether we have a normal \LaTeX\ document or a \texttt{dtx} file, we get:\JustIndex\Soto
%
-% \begin{quote}\small
+% \begin{quote}
% |\ShowIdxPageref*[Hernando]{de~Soto}|\\
% \ShowIdxPageref*[Hernando]{de~Soto}
% \end{quote}
@@ -4055,73 +4539,74 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \cmd{\ShowNameInfo}\oarg{FNN}\marg{SNN|,| Affix}\oarg{Alternate}
% \end{SyntaxBox}
%
-% Below we show several name forms. This macro shows detokenized name arguments to prevent potential errors and to disclose any macros in the name arguments, which are designated according to Section~\ref{sec:NameArgs}. Below are names that (mostly) appear elsewhere in the manual:
+% Below we show several name forms. This macro shows detokenized name arguments to prevent potential errors and to disclose any macros in the name arguments, which are designated according to Section~\ref{sec:NameArgs}.
%
% \begin{itemize}\small
-% \item |\ShowNameInfo[J.E.]{Carter, Jr.}[James Earl]|
-% \item[] \ShowNameInfo[J.E.]{Carter, Jr.}[James Earl]
-% \item[] |\Name*[J.E.]{Carter, Jr.}[James Earl]|\dotfill
-% \Name*[J.E.]{Carter, Jr.}[James Earl]
-% \item |\ShowNameInfo{Miyazaki, Hayao}[Sensei]|
-% \item[] \ShowNameInfo{Miyazaki, Hayao}[Sensei]
-% \item[] |\Name*{Miyazaki, Hayao}[Sensei]|\dotfill
-% \Name*{Miyazaki, Hayao}[Sensei]
-% \item |\ShowNameInfo{Elizabeth, I}[I, ``Gloriana'']|
-% \item[] \ShowNameInfo{Elizabeth, I}[I, ``Gloriana'']
-% \item[] |\Name*{Elizabeth, I}[I, ``Gloriana'']|\dotfill
-% \Name*{Elizabeth, I}[I, ``Gloriana'']
-%
-% \newpage
-%
-% \item |\ShowNameInfo{Henry}[VIII]| (obsolete syntax)
-% \item[] \ShowNameInfo{Henry}[VIII]
-% \item[] |\Name*{Henry}[VIII]\ddag|\dotfill
-% \Name*{Henry}[VIII]\ddag
-% \item |\ShowNameInfo{Confucius}|
-% \item[]\ShowNameInfo{Confucius}
-% \item[] |\Name*{Confucius}|\dotfill\Name*{Confucius}
+% \item \Name*[J.E.]{Carter, Jr.}[James Earl]\dotfill^^A
+% |\Name*[J.E.]{Carter, Jr.}[James Earl]|
+% \item[] |\ShowNameInfo[J.E.]{Carter, Jr.}[James Earl]|:\\
+% \ShowNameInfo[J.E.]{Carter, Jr.}[James Earl]
+%
+% \item \Name*{Miyazaki, Hayao}[Sensei]\dotfill^^A
+% |\Name*{Miyazaki, Hayao}[Sensei]|
+% \item[] |\ShowNameInfo{Miyazaki, Hayao}[Sensei]|:\\
+% \ShowNameInfo{Miyazaki, Hayao}[Sensei]
+%
+% \item \Name*{Elizabeth, I}[I, ``Gloriana'']\dotfill^^A
+% |\Name*{Elizabeth, I}[I, ``Gloriana'']|
+% \item[] |\ShowNameInfo{Elizabeth, I}[I, ``Gloriana'']|:\\
+% \ShowNameInfo{Elizabeth, I}[I, ``Gloriana'']
+%
+% \item \Name*{Henry}[VIII]\ddag\dotfill |\Name*{Henry}[VIII]\ddag|
+% \item[] |\ShowNameInfo{Henry}[VIII]| (obsolete syntax):\\
+% \ShowNameInfo{Henry}[VIII]
+%
+% \item \Name*{Confucius}\dotfill |\Name*{Confucius}|
+% \item[] |\ShowNameInfo{Confucius}|:\\
+% \ShowNameInfo{Confucius}
% \end{itemize}
%
% For the following examples we activate alternate formatting
-% (Section~\ref{sec:AltFormat}).
+% (Section~\ref{sec:AltFormat}), which permits typesetting more complex name forms seen in European academic writing. This use of small caps may generate harmless font substitution warnings.
%
% \AltFormatActive
% \begin{itemize}\small
-% \item |\ShowNameInfo[John]{\noexpand\de{Strietelmeier}}|
-% \item[]\ShowNameInfo[John]{\noexpand\de{Strietelmeier}}
-% \item[]|\Name* [John]{\noexpand\de{Strietelmeier}|\dotfill\LStriet
-% \item |\ShowNameInfo[Catherine \noexpand\AltCaps{d}e']|\\
-% |{\noexpand\textSC{Medici}}|
-% \item[]\ShowNameInfo[Catherine \noexpand\AltCaps{d}e']
-% {\noexpand\textSC{Medici}}
-% \item[]|\Name [Catherine \noexpand\AltCaps{d}e']|\\
-% |{\noexpand\textSC{Medici}}|\dotfill\Cath
-% \item |\ShowNameInfo[Martin]{\noexpand\textSC{Luther}}|\footnote{In
-% several cases (e.g., here) when one uses small caps, harmless
-% font substitution warnings result.}
-% \item[]\ShowNameInfo[Martin]{\noexpand\textSC{Luther}}
-% \item[]|\Name* [Martin]{\noexpand\textSC{Luther}}|\dotfill\Luth
-% \item Using \cmd{\noexpand} before macros in name arguments
-% ``fixates'' them.
+% \item \ForgetThis\LStriet\\
+% |\ForgetThis\Name[John]{\noexpand\de{Strietelmeier}|
+% \item[] |\ShowNameInfo[John]{\noexpand\de{Strietelmeier}}|:\\
+% \ShowNameInfo[John]{\noexpand\de{Strietelmeier}}
+%
+% \item \Cath\\
+% |\Name[Catherine \noexpand\AltCaps{d}e']{\noexpand\textSC{Medici}}|
+% \item[] |\ShowNameInfo[Catherine \noexpand\AltCaps{d}e']|\\
+% |{\noexpand\textSC{Medici}}|:\\
+% \ShowNameInfo[Catherine \noexpand\AltCaps{d}e']{\noexpand\textSC{Medici}}
+%
+% \item \Luth\\
+% |\Name[Martin]{\noexpand\textSC{Luther}}|
+% \item[] |\ShowNameInfo[Martin]{\noexpand\textSC{Luther}}|:\\
+% \ShowNameInfo[Martin]{\noexpand\textSC{Luther}}
+%
+% \item Using \cmd{\noexpand} before macros in name arguments ``fixates'' them, ensuring consistency (important for name patterns and the index):
% \begin{itemize}
-% \item|\ShowNameInfo[John]{\noexpand\de{Strietelmeier}}|
-% \item[]\ShowNameInfo[John]{\noexpand\de{Strietelmeier}}
-% \item|\ShowNameInfo[John]{\de{Strietelmeier}}|
-% \item[]\footnotesize\ShowNameInfo [John]{\de{Strietelmeier}}
+% \item |\ShowNameInfo[John]{\noexpand\de{Strietelmeier}}|
+% \item[] \ShowNameInfo[John]{\noexpand\de{Strietelmeier}}
+% \item |\ShowNameInfo[John]{\de{Strietelmeier}}|
+% \item[] \footnotesize\ShowNameInfo [John]{\de{Strietelmeier}}
% \end{itemize}
+%
% \item If one uses an undefined macro in the arguments,
% but precedes it with \cmd{\noexpand}, \cmd{\ShowNameInfo}
% will not generate an error.
% \begin{itemize}
-% \item|\ShowNameInfo{\noexpand\SomeUndefinedMacro}|
-% \item\ShowNameInfo{\noexpand\SomeUndefinedMacro}
+% \item |\ShowNameInfo{\noexpand\SomeUndefinedMacro}|
+% \item[] \ShowNameInfo{\noexpand\SomeUndefinedMacro}
% \end{itemize}
% \end{itemize}
% \AltFormatInactive
+% \negbigskip
%
-% \negmedskip
% \NameArgWarning
-% \medskip
%
% \phantomsection
% \label{page:NameState}
@@ -4132,30 +4617,26 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \cmd{\ShowNameState}\oarg{FNN}\marg{SNN|,| Affix}\oarg{Alternate}
% \end{SyntaxBox}
%
-% For example: |\ShowNameState[George]{Washington}| outputs a line of plain text regarding \LWash, which we can typeset any way we like:
-%
-% \begin{quote}\small
-% \hfil\ShowNameState[George]{Washington}.\IndexName[George]{Washington}
-% \end{quote}
-%
-% \newpage
-%
-% The information given includes:
+% \cmd{\ShowNameState} produces a line of text with the following information:
%
% \begin{itemize}
% \item Base name pattern, the base control pattern that
-% \textsf{nameauth} sees.
+% \textsf{nameauth} sees. This would be the output of \cmd{\ShowPattern}.
% \item Type of name, referring to how the name in the argument was parsed.
+%
% \begin{itemize}[leftmargin=3.7em]
% \item[w :] Western (regardless of whether it is reversed)
-% \item[nw :] non-Western (regardless of whether it is reversed)
-% \item[nw,os :] non-Western name, obsolete syntax (Section~\ref{sec:Obsolete})
+% \item[nw :] nonwestern (regardless of whether it is reversed)\\
+% current syntax
+% \item[nw,os :] nonwestern name, obsolete syntax (Section~\ref{sec:Obsolete})
% \end{itemize}
+%
% \item Index state (Section~\ref{sec:RuleStates}) shows what index-related
% options are permissible and how the indexing macros will behave.
% \begin{itemize}[leftmargin=3.7em]
% \item[states :] 1, 2, 3, 4, 5, and 6
% \end{itemize}
+%
% \item All the control systems (Section~\ref{sec:NamePatterns}) that
% the name pattern inhabits.
% \begin{itemize}[leftmargin=4.5em]
@@ -4163,35 +4644,60 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{itemize}
% \end{itemize}
%
-% In the next table we show examples that have indexing states in order from one to six, and we illustrate all name types and control systems. All extant names have index tags because, in a \texttt{dtx} file using the \textsf{ltxdoc} class with \textsf{hypdoc}, one must add a hyperlink to all names in the index (Section~\ref{sec:SpecialTag}). Otherwise, names need not always have a control pattern in the \texttt{idxtag} system.
-%
-% \begin{center}\small\medstretch
-% \begin{tabular}{p{0.4\textwidth}p{0.5\textwidth}}\toprule
-% Name & \cmd{\ShowNameState}\\
-% \rowcolor{nagrey}(\textit{unused in naming macro})\par
-% |\ShowNameState{Not Seen, Yet}| & \ShowNameState{Not Seen, Yet} \\
-% \Name*[Rudolph]{Carnap}\par |\Name*[Rudolph]{Carnap}| &
-% \ShowNameState[Rudolph]{Carnap}\\
-% \rowcolor{nagrey}\Name*{Henry, VIII}\par
-% |\Name*{Henry, VIII}| & \ShowNameState{Henry, VIII}\\
-% \Name*{Henry}[VIII]\ddag\par |\Name*{Henry}[VIII]\ddag| &
-% \ShowNameState{Henry}[VIII]\\
-% \rowcolor{nagrey}\Name*{Thomas, à~Kempis}\par
-% |\Name*{Thomas, à~Kempis}| & \ShowNameState{Thomas, à~Kempis}\\
-% (\textit{unused in naming macro})\par
-% |\IndexRef{Sun King}{Louis XIV}|\IndexRef{Sun King}{Louis XIV}\par
-% |\ShowNameState{Sun King}| & \hbox{}\par \ShowNameState{Sun King}\\
-% \rowcolor{nagrey}\Name*{Sun King}\par
-% |\Name*{Sun King}| & \ShowNameState{Sun King}\\
-% (\textit{unused in naming macro})\ExcludeName{Santa, Claus}\par
-% |\ExcludeName{Santa, Claus}| & \ShowNameState{Santa, Claus}\\
-% \rowcolor{nagrey}\Name*{Thomas,\`a~Kempis}\par
-% |\Name*{Thomas,\`a~Kempis}| & \ShowNameState{Thomas,\`a~Kempis}\\
-% \bottomrule
-% \end{tabular}
-% \end{center}
+% In the next example we show names in indexing states from one to six, and we illustrate all name types and many of the control systems. All extant names have index tags due to being used in a \texttt{dtx} file with the \textsf{ltxdoc} class and the \textsf{hypdoc} package (Section~\ref{sec:SpecialTag}). Otherwise, names need not always have a control pattern in the \texttt{idxtag} system.
%
-% \ReturnLink
+% \begin{itemize}
+% \item Some yet unused name:\dotfill |\ShowNameState{Not Seen, Yet}|\\
+% \ShowNameState{Not Seen, Yet}
+%
+% \item New and extant names:
+% \begin{itemize}
+% \item \Name*[Rudolph]{Carnap}\dotfill |\Name*[Rudolph]{Carnap}|\\
+% \ShowNameState[Rudolph]{Carnap}
+%
+% \item \Name*{Henry, VIII}\dotfill |\Name*{Henry, VIII}|\\
+% \ShowNameState{Henry, VIII}
+%
+% \item \Name*{Henry}[VIII]\ddag\dotfill |\Name*{Henry}[VIII]\ddag|\\
+% \ShowNameState{Henry}[VIII]
+%
+% \item \Name*{Thomas, à~Kempis}\dotfill |\Name*{Thomas, à~Kempis}|\\
+% \ShowNameState{Thomas, à~Kempis}
+% \end{itemize}
+%
+% \item Name used only in xref:\dotfill^^A
+% |\IndexRef{Sun King}{Louis XIV}|\IndexRef{Sun King}{Louis XIV}\\
+% \ShowNameState{Sun King}
+%
+% \item Name used after xref exists:\\
+% \Name*{Sun King}\dotfill |\Name*{Sun King}|\\
+% \ShowNameState{Sun King}
+%
+% \item Unused name excluded from index:\dotfill^^A
+% \ExcludeName{Santa, Claus}|\ExcludeName{Santa, Claus}|\\
+% \ShowNameState{Santa, Claus}
+%
+% \item Previously excluded name gets used:\\
+% \Name*{Thomas,\`a~Kempis}\dotfill |\Name*{Thomas,\`a~Kempis}|\\
+% \ShowNameState{Thomas,\`a~Kempis}
+% \end{itemize}
+% \negbigskip
+%
+% \ReturnLink\smallskip
+%
+% \AltFormatActive
+% \begin{Quote}{\ForgetThis\Luth\break
+% \hbox{}\hfill \textit{\de{Von der Freiheit eines Christenmenschen}} (1520)}
+% \de{Eyn Chriſten menſch iſt eyn freyer herr /
+% u\raise 0.2ex\hbox{\kern -1.1ex\textsuperscript{e}\kern 1pt}ber alle
+% ding / und niemande unterthan. Eyn Chriſten menſch iſt eyn dienſtpar
+% knecht aller ding und yderman unterthan.}
+%
+% (A Christian person is a free lord, above all things, and subject to no one. A Christian person is a willing servant of all things and is subject to
+% everyone.)^^A
+% \index{theologians, quotes of\noexpand\string|hyperpage}
+% \end{Quote}
+% \AltFormatInactive
%
% \newpage
%
@@ -4199,7 +4705,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \label{sec:Indexing}
% \IndexWarnVerbose
%
-% We discuss indexing here because it pulls together all the concepts from the previous sections and applies them to the index instead of the body text.
+% Indexing pulls together all the concepts from the previous sections, yet applies them to the index. In this section we enable (and trigger) verbose index warnings.
%
% \subsection[General Control]{General Indexing Control}
% \label{sec:GeneralIndex}
@@ -4211,13 +4717,6 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \DescribeMacro{\IndexActive}
% \cmd{\IndexActive} enables indexing. These can be used throughout the document. They do not affect indexing apart from \textsf{nameauth}.
%
-% \vspace{2ex}
-% \Info{Test indexing rules:\break
-% \Name{Yamaha, Torakusu}\label{page:Idx1}\break
-% create index entry:\break
-% \cmd{\IndexName}\break
-% \texttt{\{Nippon Gakki\}}\IndexName{Nippon Gakki}}
-% \vspace{-2ex}
% \begin{itemize}
% \item \cmd{\IndexInactive} broadly suppresses \cmd{\IndexName},
% \cmd{\IndexRef}, and the indexing components of the naming macros,
@@ -4232,14 +4731,23 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \DescribeMacro{\NameauthIndex}
% \LaTeX\ has various ways to produce multiple indexes; see \href{https://www.texfaq.org/FAQ-multind}{\bfseries this page}. \cmd{\NameauthIndex} is the indexing hook defined by default as \cmd{\index}. Users can redefined this hook for use with multiple indexes. Below we use the \textsf{index} package to do this.
+% \vspace{3ex}
+% \Info{\hrule\strut Test indexing rules:\break
+% \Name{Yamaha, Torakusu}\label{page:Idx1}\break
+% create index entry:\break
+% \cmd{\IndexName}\break
+% \texttt{\{Nippon Gakki\}}\IndexName{Nippon Gakki}\strut\hrule}
+% \vspace{-3ex}
%
% \ifdefined\NameauthDoTestFiles \edef\NameauthTestFile{test07_01.tex}\else
% \edef\NameauthTestFile{\jobname.tmp}\fi
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
+%
+% \usepackage{makeidx} % Must have for defining \seealso macro.
% \usepackage{index}
% \usepackage{nameauth}
%
@@ -4258,7 +4766,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{document}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\NameauthTestFile}
% \end{quote}
%
@@ -4267,10 +4775,8 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \DescribeMacro{\IndexWarnVerbose}
% As with many of the other options in \textsf{nameauth}, we have added two macros that toggle verbose index warnings like the \texttt{verbose} option (default is terse).
% \DescribeMacro{\IndexWarnTerse}
-% To disable verbose warnings, use \cmd{\IndexWarnTerse}. To enable verbose warnings, use the \texttt{verbose} option or \cmd{\IndexWarnVerbose}. Throughout Section~\ref{sec:Indexing} we enable verbose warnings.\footnote{We both enable verbose warnings, and we deliberately trigger many of them. This helps to test if they are working as expected.}
+% To disable verbose warnings, use \cmd{\IndexWarnTerse}. To enable verbose warnings, use the \texttt{verbose} option or \cmd{\IndexWarnVerbose}. Throughout Section~\ref{sec:Indexing} we enable verbose warnings.
%
-% \newpage
-%
% \cmd{\IndexWarnVerbose}\Info{\cmd{\global}} and \cmd{\IndexWarnTerse} can be used as a pair or singly within a group. They have the same priority as the \texttt{verbose} option, but they do not affect what is displayed in the document. Use \cmd{\global} to force a global effect.
%
% \subsubsection{Index Protection}
@@ -4278,12 +4784,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \DescribeMacro{\IndexProtect}
% This macro prevents naming macros from producing output, both in the text and in the index. It is local in scope. Its primary use is to prevent errors in the index, in case the naming macros get passed as arguments to themselves or passed into index entries by mistake. The core naming engine uses internal locks to protect against this problem in the text.
%
-% \vspace{3ex}
-% \Info{Test indexing rules:\break
-% \Name{Yamaha, Torakusu}\label{page:Idx2}}
-% \vspace{-3ex}
% One can use \cmd{\IndexProtect} right before \cmd{\printindex} to protect the index against bogus output. For example:
%
+% \vspace{4ex}
+% \Info{\hrule\strut Test indexing rules:\break
+% \Name{Yamaha, Torakusu}\label{page:Idx2}\strut\hrule}
+% \vspace{-4ex}
% \begin{itemize}
% \item |\Name{foo\Name{bar}}| in the text generates \Name{foo\Name{bar}}.
% Notice that the internal locks prevent |\Name{bar}| from producing
@@ -4314,7 +4820,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \cmd{\IndexName}\oarg{FNN}\marg{SNN|,| Affix}\oarg{Alternate}
% \end{SyntaxBox}
%
-% If \meta{FNN} is present, it ignores \meta{Alternate} for Western and ``native'' Eastern name forms. If \meta{FNN} is absent, \cmd{\IndexName} can use either the current or the obsolete non-Western syntax (Section~\ref{sec:Obsolete}). Indexing follows [\hyperlink{Mulvany}{Mulvany}, 152--82]. The points below deal with macros explained in Section~\ref{sec:IdxPrefix}.
+% If \meta{FNN} is present, it ignores \meta{Alternate} for Western and ``native'' Eastern name forms. If \meta{FNN} is absent, \cmd{\IndexName} can use either the current or the obsolete nonwestern syntax (Section~\ref{sec:Obsolete}). Indexing follows [\hyperlink{Mulvany}{Mulvany}, 152--82]. The points below deal with macros explained in Section~\ref{sec:IdxPrefix}.
%
% \begin{itemize}
% \item \cmd{\IndexName} obeys both \cmd{\IndexInactive} and
@@ -4335,7 +4841,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \subsection{Cross-References}
% \label{sec:IndexRef}
%
-% Index cross-references have two kinds. \textit{See} references only point from a name to other name entries containing page references. \textit{See also} references occur at the end of an entry with page references or subentries.
+% Index cross-references have two kinds. \textit{See} references only point from a name to other name entries containing page entries. \textit{See also} references occur at the end of an entry with page entries or sub-entries.
%
% \subsubsection[Basic Macro]{Basic Macros for Both Kinds of Xrefs}
%
@@ -4349,21 +4855,21 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Affix}\oarg{Alternate}\marg{Target}
% \end{SyntaxBox}
%
-% Although it might be redundant to point this out, in practice, when using \cmd{\IndexName} and \cmd{\IndexRef}, one can forget that the latter has four arguments, at least two of which are required. Missing text and bad xrefs can result.
+% Although it might be redundant to point this out, in practice, when using \cmd{\IndexName} and \cmd{\IndexRef}, one might forget that the latter has four arguments, at least two of which are required. Missing text and bad xrefs can result.
%
% \begin{itemize}
% \item Define \textit{see} references \emph{before} making any
-% \cmd{\Name} references to them.
+% \cmd{\Name} entries for them.
% \vspace{-1ex}
-% \Info{Test indexing rules:\break
+% \Info{\hrule\strut Test indexing rules:\break
% Creating \textit{see also} xref\break\footnotesize
% \cmd{\SeeAlso}\cmd{\IndexRef}\break\ttfamily
% \{Yamaha, Torakusu\}\break
% \{Nippon Gakki\}\SeeAlso\IndexRef{Yamaha, Torakusu}{Nippon Gakki}^^A
-% \label{page:Idx3}}
+% \label{page:Idx3}\strut\hrule}
% \vspace{1ex}
% \item Define \textit{see also} references \emph{after} all
-% \cmd{\Name} references to the respective names have been created.
+% \cmd{\Name} instances to the respective names have been created.
% \item \cmd{\IndexRef} will not alter or repeat extant cross-references.
% \item \cmd{\IndexRef} will not cross-reference names excluded
% by \cmd{\ExcludeName}.
@@ -4382,7 +4888,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \cmd{\IndexRef} prints nothing in the text. The name parsing is like \cmd{\IndexName}. The final argument is not checked in any way. For example:
%
-% \begin{quote}\small
+% \begin{quote}
% \vspace{3ex}
% \Info{\strut\footnotesize Name Pattern(s):\hfill
% \break\ttfamily\ShowPattern{Sun King}!PN}
@@ -4396,7 +4902,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \cmd{\IndexRef} will not merge multiple cross-references and it will not allow more than one cross-reference. For multiple cross-references one must use something like the following example, or create manual index entries:
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{tabular}{ll}
% source: & |\IndexRef{bar}{baz; foo}|\\[0.5ex]
% index: & bar, \textit{see} baz; foo\\
@@ -4408,7 +4914,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \subsubsection[Fine Control]{Fine Control of Xref Logic}
% \label{sec:IdxFine}
%
-% Here we show how the index control logic pertinent to cross-references can be extended to establish fine-grained control that can exclude or include names.\medskip
+% Here we show how the index control logic pertinent to cross-references can be extended to establish fine-grained control that can exclude or include names.
%
% \DescribeMacro{\ExcludeName}
% We can prevent a name from being used as either an index entry or as an index cross-reference. This macro will not exclude extant cross-references:
@@ -4417,16 +4923,16 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \cmd{\ExcludeName}\oarg{FNN}\marg{SNN|,| Affix}\oarg{Alternate}
% \end{SyntaxBox}
%
-% Unlike \cmd{\IndexInactive} and \cmd{\IndexActive}, which globally prevent and permit indexing, \cmd{\ExcludeName} only excludes a specific name from being printed as a page reference or cross-reference in the index. See the following example, as well as examples in Sections~\ref{sec:NameParticles} and \ref{sec:VarNames}. Indexing remains active:
+% Unlike \cmd{\IndexInactive} and \cmd{\IndexActive}, which prevent and permit all indexing, \cmd{\ExcludeName} only excludes a specific name from being printed as a page entry or cross-reference in the index. See the following example, as well as examples in Sections~\ref{sec:NameParticles} and \ref{sec:VarNames}. Indexing remains active:
%
% \begin{VerbatimOut}{\jobname.tmp}
% \ExcludeName{Mr. Baseball}
-% In this example we cannot get page references for
+% In this example we cannot get page entries for
% \Name{Mr. Baseball}, the nickname of
% \Name[Bob]{Uecker}, because it was excluded.
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \vspace{3ex}
% \PatInfo{\ShowPattern{Mr. Baseball}!PN\break
% \ShowPattern[Bob]{Uecker}!MN}
@@ -4437,7 +4943,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{quote}
%
% \DescribeMacro{\IncludeName}
-% Use these macros to break a few indexing rules. They remove the protections used for exclusion and cross-referencing.
+% Use the following macros to break a few indexing rules. They remove protections used for exclusion and cross-referencing.
% \DescribeMacro{\IncludeName*}
% They have the same syntax as \cmd{\ExcludeName}:
%
@@ -4446,146 +4952,156 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \cmd{\IncludeName*}\oarg{FNN}\marg{SNN|,| Affix}\oarg{Alternate}
% \end{SyntaxBox}
%
-% \cmd{\IncludeName} removes an exclusion attached to a name by \cmd{\ExcludeName}. \cmd{\IncludeName*} completely erases both exclusion and cross-reference information. Once that protection is removed, one can create page references to a name in the index that had been used as a cross-reference.
+% \cmd{\IncludeName} removes an exclusion attached to a name by \cmd{\ExcludeName}. \cmd{\IncludeName*} completely erases both exclusion and cross-reference information. Once that protection is removed, one can create page entries to a name in the index that had been used as a cross-reference.
%
+% Analogously, \cmd{\ForgetName} (Section~\ref{sec:NameControl}) removes name control patterns, allowing one to create a cross-reference. Section~\ref{sec:RuleStates} explains this behavior as a set of states. Below we run some tests (cf. Section~\ref{sec:NameTests}) and produce a few warnings because verbose warnings are active here.
% \vspace{3ex}
-% \Info{Test indexing rules:\break \Name{Yamaha, Torakusu}\label{page:Idx4}}
+% \Info{\hrule\strut Test indexing rules:\break
+% \Name{Yamaha, Torakusu}\label{page:Idx4}\strut\hrule}
% \vspace{-3ex}
-% Analogously, \cmd{\ForgetName} (Section~\ref{sec:NameControl}) removes name control patterns, allowing one to create a cross-reference. Section~\ref{sec:RuleStates} explains this behavior as a set of states. Below we run some tests (cf. Section~\ref{sec:NameTests}) and produce a few warnings because verbose warnings are active here.
%
+% \begin{VerbatimOut}{\jobname.tmp}
% \begin{itemize}
% \item \Name*{Mr. Baseball} is
-% \IfAKA{Mr. Baseball}{\meta{an xref}}{\meta{a name}}{\meta{excluded}}.
-% The test used was:
-% \item[] |\IfAKA{Mr. Baseball}{|\meta{an xref}|}{|\meta{a name}^^A
-% |}{|\meta{excluded}|}|
-% \item We now try |\IndexRef{Mr. Baseball}{Uecker, Bob}|^^A
-% \IndexRef{Mr. Baseball}{Uecker, Bob}.
+% \IfAKA{Mr. Baseball}
+% {\meta{an xref}}{\meta{a name}}{\meta{excluded}}.
+%
+% \item Making an xref fails.\IndexRef{Mr. Baseball}{Uecker, Bob}
% \Name*{Mr. Baseball} is still
-% \IfAKA{Mr. Baseball}{\meta{an xref}}{\meta{a name}}{\meta{excluded}}.
-% No cross-reference was created.
-% \item Using |\IncludeName{Mr. Baseball}|\IncludeName{Mr. Baseball}
-% makes it
-% \IfAKA{Mr. Baseball}{\meta{an xref}}{\meta{a name}}{\meta{excluded}}.
-% Now we could create page entries with a naming macro, but we
-% do not do so.
-% \item Instead, we use
-% |\ForgetName{Mr. Baseball}|\ForgetName{Mr. Baseball} to destroy
-% the name pattern, the control sequence that governs the name.
-% It is now
% \IfAKA{Mr. Baseball}
-% {\meta{an xref}}
-% {\IfMainName{Mr. Baseball}{\meta{extant}}
-% {\IfFrontName{Mr. Baseball}
-% {\meta{extant}}{\meta{destroyed}}^^A
-% }^^A
-% }
-% {\meta{excluded}}.
-% \item |\IndexRef{Mr. Baseball}{Uecker, Bob}|^^A
-% \IndexRef{Mr. Baseball}{Uecker, Bob} creates
-% \IfAKA{Mr. Baseball}{\meta{an xref}}{\meta{a name}}{\meta{excluded}}.
-% \end{itemize}
+% {\meta{an xref}}{\meta{a name}}{\meta{excluded}}.
%
-% \newpage
+% \item The inclusion macro\IncludeName{Mr. Baseball} makes it
+% \IfAKA{Mr. Baseball}
+% {\meta{an xref}}{\meta{a name}}{\meta{excluded}}.
+% Now we could create page entries with a naming macro.
+%
+% \item Instead, we forget the name\ForgetName{Mr. Baseball}
+% to destroy the name pattern that governs the name. It is now
+% \IfAKA{Mr. Baseball}
+% {\meta{an xref}}
+% {\IfMainName{Mr. Baseball}{\meta{extant}}
+% {\IfFrontName{Mr. Baseball}{\meta{extant}}
+% {\meta{destroyed}}}}
+% {\meta{excluded}}.
%
-% Cross-references get more protection. We have seen
-% \DropAffix\LJRIV[Jay] indexed under
-% ``\ShowIdxPageref*[J.D.]{Rockefeller, IV}'' with
-% |\DropAffix\LJRIV[Jay]|.
-% We create the following cross-reference:
-% \IndexRef[Jay]{Rockefeller}{Rockefeller, J.D., IV}^^A
-% |\IndexRef[Jay]{Rockefeller}{Rockefeller, J.D., IV}|.
-% \vspace{-6ex}
+% \item Making another xref\IndexRef{Mr. Baseball}{Uecker, Bob} creates
+% \IfAKA{Mr. Baseball}
+% {\meta{an xref}}{\meta{a name}}{\meta{excluded}}.
+% \end{itemize}
+% \end{VerbatimOut}
+%
+% \begin{quote}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+%
+% \input{\jobname.tmp}
+% \end{quote}
+%
+% Cross-references get more protection than exclusions:
+% \vspace{-1ex}
% \PatInfo{\ShowPattern[J.D.]{Rockefeller, IV}!MN\break
% \ShowPattern[Jay]{Rockefeller}!PN\break
% \ShowPattern[Jay]{Rockefeller}!MN}
-% \vspace{6ex}
+% \vspace{1ex}
+% \begin{VerbatimOut}{\jobname.tmp}
% \begin{itemize}
-% \item
-% \cmd{\IfAKA[Jay]\{Rockefeller\}}|{|\meta{xref}|}{|\meta{name}|}{}|
-% calls \SJRIV[Jay] an
+% \item \DropAffix\LJRIV[Jay] was indexed as
+% ``\ShowIdxPageref*[J.D.]{Rockefeller, IV}.
+%
+% \item We create the
+% xref\IndexRef[Jay]{Rockefeller}{Rockefeller, J.D., IV}.
+%
+% \item The test calls \SJRIV[Jay] an
% \IfAKA[Jay]{Rockefeller}{\meta{xref}}{\meta{name}}{}.
-% \item After
-% |\IncludeName[Jay]{Rockefeller}|\IncludeName[Jay]{Rockefeller}
+%
+% \item After being ``included''\IncludeName[Jay]{Rockefeller}
% he still is an
% \IfAKA[Jay]{Rockefeller}{\meta{xref}}{\meta{name}}{}.
-% \item After
-% |\IncludeName*[Jay]{Rockefeller}|\IncludeName*[Jay]{Rockefeller}
-% he may be a \IfAKA[Jay]{Rockefeller}{\meta{xref}}{\meta{name}}{}.
-% \item Now \cmd{\Name[Jay]\{Rockefeller\}} can create page entries.
+%
+% \item After ``forced inclusion''\IncludeName*[Jay]{Rockefeller}
+% he can be a \IfAKA[Jay]{Rockefeller}{\meta{xref}}{\meta{name}}{}
+% and create page entries.
% \end{itemize}
+% \end{VerbatimOut}
+%
+% \begin{quote}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+%
+% \input{\jobname.tmp}
+% \end{quote}
%
-% \negmedskip
% \begin{InfoBox}
-% Using \cmd{\IncludeName*} is necessary when creating index sub-entries for a name using \cmd{\IndexTag}. If one creates a cross-reference in any sub-entry of a name, \cmd{\IncludeName*} will permit additional page references to be made for the other sub-entries of that name or for the name itself. See Section~\ref{sec:CatSub}.
+% Using \cmd{\IncludeName*} is necessary when creating index sub-entries for a name using \cmd{\IndexTag}. If one creates a cross-reference in any sub-entry of a name, \cmd{\IncludeName*} will permit additional page entries to be made for the other sub-entries of that name or for the name itself. See Section~\ref{sec:CatSub}.
% \end{InfoBox}
%
% \subsection[Prefix Macros]{Prefix Macros Used for Indexing}
% \label{sec:IdxPrefix}
%
-% Indexing macros ignore Boolean flags meant for naming macros. Yet there are three prefix macros that affect indexing: \cmd{\SeeAlso}, \cmd{\SkipIndex}, and \cmd{\JustIndex}.\medskip
+% Indexing macros ignore Boolean flags meant for naming macros. Yet there are three prefix macros that affect indexing: \cmd{\SeeAlso}, \cmd{\SkipIndex}, and \cmd{\JustIndex}.
%
% \DescribeMacro{\SeeAlso}
% Put \cmd{\SeeAlso} before \cmd{\IndexRef}, \cmd{\AKA}, and \cmd{\PName} (Section~\ref{sec:AKA}) to make a \textit{see also} reference for a name that has appeared already in the index. If enabled before invoking \cmd{\PName}, \cmd{\SeeAlso} will be disabled when the regular name is generated, then enabled when the cross-reference is generated.
+% \vspace{3ex}
+% \Info{\hrule\strut Test indexing rules:\break
+% \Name{Nippon Gakki}\label{page:Idx5}\strut\hrule}
+% \vspace{-3ex}
%
% \begin{VerbatimOut}{\jobname.tmp}
% One can refer to \Name[the]{Rat Pack} as a group of entertainers
% including \Name[Sammy]{Davis, Jr.}, \Name[Dean]{Martin}, and
-% \Name[Frank]{Sinatra}. No more page references to
+% \Name[Frank]{Sinatra}. No more page entries for
% \Name*[the]{Rat Pack} will occur after this line, and a
% \textit{see also} xref will exist.
% \SeeAlso\IndexRef[the]{Rat Pack}
% {Davis, Sammy, Jr.; Martin, Dean; Sinatra, Frank}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\jobname.tmp}
%
% \input{\jobname.tmp}
% \end{quote}
%
-% \leavevmode\Info{Test indexing rules:\break
-% \Name{Nippon Gakki}\label{page:Idx5}}
-% Currently \cmd{\IndexName} and other \textsf{nameauth} macros that create index entries will reset the Boolean flag governed by \cmd{\SeeAlso} unless one uses the \texttt{oldreset} option. preventing a stray use of the macro from affecting the index.\medskip
+% Currently \cmd{\IndexName} and other \textsf{nameauth} macros that create index entries will reset the Boolean flag governed by \cmd{\SeeAlso} unless one uses the \texttt{oldreset} option. preventing a stray use of the macro from affecting the index.
%
% \DescribeMacro{\SkipIndex}
% The prefix macro \cmd{\SkipIndex} will suppress indexing for just one instance of a name displayed by a naming macro. |\SkipIndex\Name[Monty]{Python}| produces \SkipIndex\Name[Monty]{Python} in the text, but with no index entry. \cmd{\SkipIndex} works with the naming macros. Side effects include:
%
% \begin{itemize}
% \item Unless the \texttt{oldreset} option is used, both \cmd{\IndexName}
-% and \cmd{\IndexRef} issue warnings if \cmd{\SkipIndex} precedes them,
-% ignore \cmd{\SkipIndex}, and reset its flag.
-% \item Only when the \texttt{oldreset} option is used, both \cmd{\PName}
-% and \cmd{\PName*} issue warnings when {\ttfamily
-% \string \if@nameauth@SkipIndex} is true on exit.
+% and \cmd{\IndexRef} issue warnings if \cmd{\SkipIndex} precedes them.
+% Then, both \cmd{\IndexName} and \cmd{\IndexRef} ignore \cmd{\SkipIndex}
+% and reset its flag.
+%
+% \item When the \texttt{oldreset} option is used, both \cmd{\PName}
+% and \cmd{\PName*} issue warnings when
+% {\ttfamily \string \if@nameauth@SkipIndex} is true on exit.
% \end{itemize}
%
% \DescribeMacro{\JustIndex}
% This prefix macro makes \cmd{\Name}, \cmd{\Name*}, \cmd{\FName}, and the quick interface shorthand macros act similar to \cmd{\IndexName}. \cmd{\JustIndex} suppresses name output in the text, but flags for long and first name forms are reset as if the naming macro had produced output. Using the \texttt{oldreset} option prevents these flags from being reset, completely mimicking a call to \cmd{\IndexName}.
%
-% \begin{center}\small\medstretch
+% \begin{center}
% \begin{tabular}{lll}\toprule
-% Option & Source & Output\\
-% \rowcolor{nagrey}default & |\JustIndex\SWash \Wash| &
-% \JustIndex\SWash \Wash \hphantom{ George}\\
-% default & |\JustIndex\LWash \Wash| & \JustIndex\LWash \Wash\\
-% \rowcolor{nagrey}\ttfamily oldpass & |\JustIndex\SWash \Wash| &
-% \JustIndex\SWash \Wash\\
-% \ttfamily oldpass & |\JustIndex\LWash \Wash| &
-% \JustIndex\LWash \Wash\\\bottomrule
+% \rowcolor{nagrey}^^A
+% \bfseries Option & \bfseries Output & \bfseries Source\\
+%
+% default & \JustIndex\SWash \Wash & |\JustIndex\SWash \Wash|\\
+%
+% default & \JustIndex\LWash \Wash & |\JustIndex\LWash \Wash|\\
+%
+% \rowcolor{nagrey}^^A
+% \makeatletter\global\@nameauth@OldPasstrue\makeatother^^A
+% \ttfamily oldpass & \JustIndex\SWash \Wash &
+% |\JustIndex\SWash \Wash|\\
+% \rowcolor{nagrey}^^A
+% \ttfamily oldpass & \JustIndex\LWash \Wash &
+% |\JustIndex\LWash \Wash|\\\bottomrule
+% \makeatletter\global\@nameauth@OldPassfalse\makeatother^^A
% \end{tabular}
-% \vspace{-15ex}\PatInfo{\ShowPattern[George]{Washington}!MN}\vspace{15ex}
+% \vspace{-16ex}\PatInfo{\ShowPattern[George]{Washington}!MN}\vspace{14ex}
% \end{center}
%
-% \phantomsection
-% \vspace{1ex}
-% \Info{Test indexing rules:\break
-% Creating \textit{see} xref\break\footnotesize
-% \cmd{\IndexRef}\ttfamily \{Nippon Gakki\}\break
-% \{Yamaha Corp.\}^^A
-% \IndexRef{Nippon Gakki}{Yamaha Corp.}^^A
-% \label{page:Idx6}}
-% \vspace{-1ex}
% There are potential side effects related to \cmd{\JustIndex}:
%
% \begin{itemize}
@@ -4594,19 +5110,26 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \cmd{\@nameauth@JustIndexfalse}.
% \item \cmd{\JustIndex} resets the flags set by \cmd{\ForgetThis}
% and \cmd{\SubvertThis}, preventing them from passing through.
-% \item The following three lines are equivalent. According to
-% Section~\ref{sec:Priorities}, \cmd{\JustIndex} takes priority
-% with \cmd{\Name\{A\}} and passes \cmd{\SkipIndex} to
-% \cmd{\Name\{B\}}.
-%
-% \begin{quote}\small
-% \cmd{\JustIndex} \cmd{\SkipIndex} \cmd{\Name\{A\}} \cmd{\Name\{B\}}\\
-% \cmd{\SkipIndex} \cmd{\JustIndex} \cmd{\Name\{A\}} \cmd{\Name\{B\}}\\
-% \cmd{\JustIndex} \cmd{\Name\{A\}} \cmd{\SkipIndex} \cmd{\Name\{B\}}
-% \end{quote}
-%
-% \item One cannot use \cmd{\JustIndex} and the naming macros in place
-% of \cmd{\IndexRef}.
+% \item The following three lines are equivalent:
+% \begin{itemize}
+% \phantomsection
+% \Info{\hrule\strut Test indexing rules:\break
+% Creating \textit{see} xref\break\footnotesize
+% \cmd{\IndexRef}\ttfamily \{Nippon Gakki\}\break
+% \{Yamaha Corp.\}^^A
+% \IndexRef{Nippon Gakki}{Yamaha Corp.}^^A
+% \label{page:Idx6}\strut\hrule}
+% \item\cmd{\JustIndex} \cmd{\SkipIndex}
+% \cmd{\Name\{A\}} \cmd{\Name\{B\}}
+% \item\cmd{\SkipIndex} \cmd{\JustIndex}
+% \cmd{\Name\{A\}} \cmd{\Name\{B\}}
+% \item\cmd{\JustIndex} \cmd{\Name\{A\}}
+% \cmd{\SkipIndex} \cmd{\Name\{B\}}
+% \end{itemize}
+% \cmd{\JustIndex} takes priority with \cmd{\Name\{A\}} and passes
+% \cmd{\SkipIndex} to \cmd{\Name\{B\}}
+% (see also Section~\ref{sec:Priorities}).
+% \item \cmd{\JustIndex} and the naming macros do not replace \cmd{\IndexRef}.
% \end{itemize}
%
% \subsection{Automatic Rules}
@@ -4614,36 +5137,46 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% Below we indicate what to expect regarding index rules in any given state. Here we do not attempt to concatenate page ranges. Above, we put a series of names and cross-references in margin notes, Here is the result:
%
-% \begin{center}\footnotesize\smallstretch
+% \begin{center}\footnotesize
% \begin{tabular}{rp{0.3\textwidth}p{0.5\textwidth}}\toprule
-% Page & Macro & Index Result\\
-% \rowcolor{nagrey}\pageref{page:Idx1} &
+% \rowcolor{nagrey}^^A
+% \bfseries Page & \bfseries Macro & \bfseries Index Result\\
+%
+% \pageref{page:Idx1} &
% \cmd{\Name\{Yamaha, Torakusu\}}\par
% \cmd{\IndexName\{Nippon Gakki\}} &
% \ShowIdxPageref*{Yamaha, Torakusu}, \pageref{page:Idx1}\par
% \ShowIdxPageref*{Nippon Gakki}, \pageref{page:Idx1}\\
-% \pageref{page:Idx2} &
+%
+% \rowcolor{nagrey}^^A
+% \pageref{page:Idx2} &
% \cmd{\Name\{Yamaha, Torakusu\}} &
% \ShowIdxPageref*{Yamaha, Torakusu}, \pageref{page:Idx1},
% \pageref{page:Idx2}\par
% \ShowIdxPageref*{Nippon Gakki}, \pageref{page:Idx1}\\
-% \rowcolor{nagrey}\pageref{page:Idx3} &
+%
+% \pageref{page:Idx3} &
% \cmd{\SeeAlso}\cmd{\IndexRef\{Yamaha,}\par
% \texttt{Torakusu\}\{Nippon Gakki\}} &
% \ShowIdxPageref*{Yamaha, Torakusu}, \pageref{page:Idx1},
% \pageref{page:Idx2} \textit{see also} Nippon Gakki\par
% \ShowIdxPageref*{Nippon Gakki}, \pageref{page:Idx1}\\
-% \pageref{page:Idx4} &
+%
+% \rowcolor{nagrey}^^A
+% \pageref{page:Idx4} &
% \cmd{\Name\{Yamaha, Torakusu\}} &
% \ShowIdxPageref*{Yamaha, Torakusu}, \pageref{page:Idx1},
% \pageref{page:Idx2} \textit{see also} Nippon Gakki\par
% \ShowIdxPageref*{Nippon Gakki}, \pageref{page:Idx1}\\
-% \rowcolor{nagrey}\pageref{page:Idx5} &
+%
+% \pageref{page:Idx5} &
% \cmd{\Name\{Nippon Gakki\}} &
% \ShowIdxPageref*{Yamaha, Torakusu}, \pageref{page:Idx1},
% \pageref{page:Idx2} \textit{see also} Nippon Gakki\par
% \ShowIdxPageref*{Nippon Gakki}, \pageref{page:Idx1}, \pageref{page:Idx5}\\
-% \pageref{page:Idx6} &
+%
+% \rowcolor{nagrey}^^A
+% \pageref{page:Idx6} &
% \cmd{\IndexRef\{Nippon Gakki\}}\par \texttt{\{Yamaha Corp.\}} &
% \ShowIdxPageref*{Yamaha, Torakusu}, \pageref{page:Idx1},
% \pageref{page:Idx2} \textit{see also} Nippon Gakki\par
@@ -4669,7 +5202,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% are generated.
% \item On page \pageref{page:Idx3}^^A
% \PatInfo{\ShowPattern{Yamaha,Torakusu}!PN}
-% we create a \textit{see also} cross reference from
+% we create a \textit{see also} cross-reference from
% \Name*{Yamaha, Torakusu} to the name \Name{Nippon Gakki}. Now a
% cross-reference pattern exists for Mr. \Name{Yamaha, Torakusu}.
% We can no longer create index page entries for him.
@@ -4683,7 +5216,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% that does not restrict the ability to make page entries for it.
% \item On page \pageref{page:Idx6}^^A
% \PatInfo{\ShowPattern{Yamaha Corp.}!MN}
-% we attempt to create a \textit{see} cross reference from
+% we attempt to create a \textit{see} cross-reference from
% \Name{Nippon Gakki} to the name \Name{Yamaha Corp.}. (Notice that
% the extra full stop in the text gets gobbled.) That fails because,
% unlike a \textit{see also} reference, a \textit{see} reference
@@ -4702,11 +5235,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \DescribeMacro{\IndexActual}
% Using \cmd{\index\{}\meta{sort key}\texttt{@}\meta{actual}\texttt{\}} works with both \texttt{makeindex} and \texttt{texindy}. The general practice for sorting with \texttt{makeindex -s} involves creating an \texttt{ist} file (pages 659--65 in \textit{The Latex Companion}).
%
-% By default, the ``actual'' character is |@|. If one needs to change the ``actual'' character, such as when using \texttt{gind.ist} with \texttt{dtx} files, one would put |\IndexActual{=}| in the preamble (or driver section) before creating index entries with the naming macros. \cmd{\PretagName} does not care about the ``actual'' character, but it provides the information that is automatically added after that character. \medskip
+% By default, the ``actual'' character is |@|. If one needs to change the ``actual'' character, such as when using \texttt{gind.ist} with \texttt{dtx} files, one would put |\IndexActual{=}| in the preamble (or driver section) before creating index entries with the naming macros. \cmd{\PretagName} does not care about the ``actual'' character, but it provides the information that is automatically added after that character.
%
% Effects of \cmd{\IndexActual}\Info{\cmd{\global}} are local in scope. Use \cmd{\global} to make it otherwise, but that will affect every use of \cmd{\PretagName} thereafter. We demonstrate this scoping below as it pertains to \texttt{gind.ist} in a \texttt{dtx} file:
%
-% \begin{quote}\small
+% \begin{quote}
% \vspace{4ex}
% \PatInfo{\ShowPattern{Ægidius}!PRE}
% \vspace{-4ex}
@@ -4748,7 +5281,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \vspace{-2ex}
% One can ``pretag'' any name, any cross-reference, and even excluded names. Once made, sorting tags cannot be unmade. If one uses \cmd{\PretagName} in the preamble, those names will be sorted automatically throughout the document. For example:
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \PretagName{Æthelred, II}{Aethelred 2}
% \PretagName[W.E.B.]{Du~Bois}{Dubois, William}
@@ -4768,7 +5301,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \Name{\textit{Doctor angelicus}}.
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% {\ttfamily\ShowPattern{\textit{Doctor angelicus}}!PRE\\
% \ShowPattern{\textit{Doctor angelicus}}!PN\\
% \ShowPattern{Thomas, Aquinas}!MN\\
@@ -4776,45 +5309,68 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \VerbatimInput[gobble=0]{\jobname.tmp}
%
-% \input{\jobname.tmp}
+% \IndexRef{\textit{Doctor angelicus}}{Thomas Aquinas}
+%
+% Perhaps the greatest medieval theologian was
+% \Name{Thomas, Aquinas}, later known as
+% \Name{\textit{Doctor angelicus}}.
% \end{quote}
%
-% If we had wanted \Name{\textit{Doctor angelicus}} to have page entries and a \textit{see also} reference, we would have omitted line~2 above, waited until the end of the body text, after both names were fully indexed, and then used the following:
+% To give \Name{\textit{Doctor angelicus}} page entries and a \textit{see also} reference, we omit line~2 above, wait until the end of the body text, after both names are fully indexed, and then use:
+% \fbox{\cmd{\SeeAlso}\cmd{\IndexRef\{}\cmd{\textit\{Doctor angelicus\}\}\{Thomas Aquinas\}}}.
%
-% \begin{quote}\small
-% |\SeeAlso\IndexRef{\textit{Doctor angelicus}}{Thomas Aquinas}|
-% \end{quote}
+% \subsubsection*{\hfil Name Particles}
%
-% Spaces change sorting. For example, the\Info{Particles} sort tag \texttt{De\textvisiblespace Soto} precedes \texttt{deal} due to the space therein. The sort tag \texttt{DeSoto} falls as expected between \texttt{derp} and \texttt{determinism}.
+% Spaces change sorting. For example, the sort tag \texttt{De\textvisiblespace Soto} precedes \texttt{deal} due to the space therein. The sort tag \texttt{DeSoto} falls as expected between \texttt{derp} and \texttt{determinism}.
%
-% \newpage
+% \subsubsection*{\hfil Collating Sequences}
+%
+% German \textsf{ä ö ü ß} map to English \textsf{ae oe ue ss}. Yet Norwegian \textsf{æ ø å} follow \textsf{z} in that order. Check a style guide regarding collating sequences, spaces, and sorting. This is where using \texttt{xindy} can be very helpful. See also Section~\ref{sec:NameParticles}.
+%
+% \subsubsection*{\hfil Alternate Formatting}
+%
+% Additional examples starting with Section~\ref{sec:RealAltEx} deal with index sorting as it relates to alternate formatting, ``Continental'' practice, and macros in name arguments. Please ensure that such macros expand to the form desired in the index in order to get proper sorting with \cmd{\PretagName}.
%
-% German\Info{Collating\break sequences} \textsf{ä ö ü ß} map to English \textsf{ae oe ue ss}. Yet Norwegian \textsf{æ ø å} follow \textsf{z} in that order. Check a style guide regarding collating sequences, spaces, and sorting. This is where using \texttt{xindy} can be very helpful. See also Section~\ref{sec:NameParticles}.
+% \begin{Quote}{\Name[Publius]{Vegetius Renatus}, \textit{De re militari} (c. 390)}
+% Igitur qui desiderat pacem, praeparet bellum.
%
-% Additional examples\Info{Alternate\break formatting} starting with Section~\ref{sec:RealAltEx} deal with index sorting as it relates to alternate formatting and ``Continental'' practice. When sorting names that use alternate formatting or macros in name arguments, please ensure that the macros expand to the form desired in the index. If one is not using built-in macros related to alternate formatting, additional steps might be required when using \cmd{\PretagName} with names containing macros.
+% (Accordingly, the person who would desire peace prepares for war.)^^A
+% \index{Romans, quotes of\noexpand\string|hyperpage}
+% \end{Quote}
%
% \subsubsection{Sorting Initials}
% \label{sec:IndexInitials}
-%
-% Sorting \Name*[J.D.]{Rockefeller, IV} |\Name*[J.D.]{Rockefeller, IV}| presents a problem that does not occur with \Name*[Clive Staples]{Lewis} |\Name*[Clive Staples]{Lewis}|. In the case of \Name*[J.D.]{Rockefeller, IV}[Jay], the initials will appear in the index, while with \Name*[Clive Staples]{Lewis}[C.S.], the longer names will appear in the index.
+% \negbigskip
%
% \begin{InfoBox}
% In order to sort the index consistently and properly, all names
% should be sorted by their longer name forms, not their initials.
% \end{InfoBox}
%
+% Sorting \Name*[J.D.]{Rockefeller, IV} |\Name*[J.D.]{Rockefeller, IV}| presents a problem that does not occur with \Name*[Clive Staples]{Lewis} |\Name*[Clive Staples]{Lewis}|. In the case of \Name*[J.D.]{Rockefeller, IV}[Jay], the initials will appear in the index, while with \Name*[Clive Staples]{Lewis}[C.S.], the longer names will appear in the index.
+%
% In \textsf{nameauth} we have a specific way to do that once per name, and all the remaining names will be sorted as expected. Before we use a name like \Name[J.D.]{Rockefeller, IV}, preferably in the preamble, we use the following macro:
%
-% \begin{quote}\small
+% \begin{quote}
% |\PretagName[J.D.]{Rockefeller, IV}{Rockefeller, John D 4}|
+%
+% \begin{itemize}
+% \item The index entry is ``\ShowIdxPageref*[J.D.]{Rockefeller, IV}''.
+%
+% \item In the ``pretag'' we spell out the first forename
+% and add enough of the second to get a unique sorting key.
+%
+% \item We turn the Roman numeral affix into an Arabic numeral
+% so that it does not sort like letters.
+% \end{itemize}
% \end{quote}
%
-% Notice that we follow the form of the index entry, which will be ``\ShowIdxPageref*[J.D.]{Rockefeller, IV}''. We spell out the first forename, leave enough of the second forename for sorting, and turn the Roman numeral affix into an Arabic numeral so that it does not sort like alphabetic letters. For more examples of handling alternate forms of surnames see Sections~\ref{sec:NameMedieval}, \ref{sec:VarNames}, all subsections of Section~\ref{sec:AdvancedFormat}, and~\ref{sec:AdvCustomize}.
+% For more examples of handling alternate forms of surnames see Sections~\ref{sec:NameMedieval}, \ref{sec:VarNames}, all subsections of Section~\ref{sec:AdvancedFormat}, and~\ref{sec:AdvCustomize}.
%
% \subsection{Index Tags}
% \label{sec:IndexTag}
%
-% Index info tags (``index tags'') are information added automatically to index page entries for names used with \textsf{nameauth} macros.
+% Index data tags are information added automatically to index page entries for names used with \textsf{nameauth} macros.
%
% \subsubsection{General Approach}
%
@@ -4830,7 +5386,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% All the indexing macros are keyed to the name patterns. \cmd{\PretagName} generates the leading sort key. \cmd{\TagName} and \cmd{\UntagName} affect the trailing content. The following graphic illustrates the ``segments'' of an index entry and the \textsf{nameauth} macros that affect the respective segments:
%
-% \begin{center}\small\smallstretch
+% \begin{center}
% \begin{tabular}{r|l|l|l}\toprule
% & & Naming macros\\
% & \cmd{\PretagName} & \cmd{\IndexName}\\
@@ -4841,29 +5397,27 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{tabular}
% \end{center}
%
-% Tags created by \cmd{\TagName} can be \Info{Scholarly texts}helpful in the indexes of academic texts by adding dates, titles, etc. \cmd{\TagName} causes the \textsf{nameauth} indexing macros to append ``\texttt{,\textvisiblespace pope}'' to the index entries created below:
+% Tags created by \cmd{\TagName} can be helpful in the indexes of academic texts by adding dates, titles, etc. \cmd{\TagName} causes the \textsf{nameauth} indexing macros to append
+% {\ttfamily\fbox{\textvisiblespace the Great, pope}}
+% to the index entries created in the next example:
%
-% \begin{VerbatimOut}{\jobname.tmp}
-% \TagName{Gregory, I}{, pope}
-% Pope \Name*{Gregory, I} was known as \Name{Gregory, I}
-% ``the Great''.\IndexRef{Gregory, the Great}{Gregory I}
-% \end{VerbatimOut}
-%
-% \begin{quote}\small
+% \begin{quote}
% \vspace{3.5ex}
% \PatInfo{\ShowPattern{Gregory, I}!TAG\break
-% \ShowPattern{Gregory, I}!MN\break
-% \ShowPattern{Gregory, the Great}!PN}
+% \ShowPattern{Gregory, I}!MN}
% \vspace{-3.5ex}
-% \VerbatimInput[gobble=0]{\jobname.tmp}
+% \begin{Verbatim}
+% \TagName{Gregory, I}{ the Great, pope}
+% Pope \Name*{Gregory, I} was known as \Name*{Gregory, I}
+% [the Great].
+% \end{Verbatim}
%
-% Pope \Name*{Gregory, I} was known as \Name{Gregory, I}
-% ``the Great''.\IndexRef{Gregory, the Great}{Gregory I}
+% Pope \Name*{Gregory, I} was known as \Name*{Gregory, I}
+% [the Great].
% \end{quote}
%
-% \cmd{\TagName} works with all names that produce index page entries. It does not work with with cross-references that are produced by \cmd{\IndexRef}, \cmd{\AKA}, etc.
-%
-% Tags can hold different kinds of information, but they should not be overly verbose. They can include daggers, asterisks, and so on. For example, all fictional names in the index of this manual are tagged with \S. One must add any desired spaces to the start of the tag.
+% See Section~\ref{sec:NameAncient} for more ways to deal with ancient names. \cmd{\TagName} works with all names that produce index page entries. It does not work with with cross-references produced by \cmd{\IndexRef}, \cmd{\AKA}, etc.
+% Tags can hold different kinds of information, but they should not be verbose. They can include daggers, asterisks, and so on. For example, all fictional names in the index of this manual are tagged with \S. One must add any desired spaces to the start of the tag.
%
% \subsubsection[Identical Names]{Disambiguating Identical Names}
%
@@ -4879,7 +5433,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \ForgetThis\Name[E.]{Humperdinck}[Engelbert].
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \vspace{4ex}
% \PatInfo{\ShowPattern[E.]{Humperdinck}!TAG\break
% \ShowPattern[E.]{Humperdinck}!MN}
@@ -4906,24 +5460,25 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \cmd{\TagName}\meta{name args}\texttt{\{\textbar}\meta{macro}\texttt{\}}
% \end{SyntaxBox}
%
-% When \Warn\ using the \textsf{ltxdoc} class with \textsf{hypdoc}, as in this manual, \textsf{nameauth} does not create hyperlinked page entries. If one puts index tags in the |<driver>| section of the \texttt{dtx} file, which will read the ``commented''part of the \texttt{dtx} file into a \texttt{document} environment, then one can use the following:
+% When \Warn\ using the \textsf{ltxdoc} class with \textsf{hypdoc}, as in this manual, neither \textsf{nameauth} nor regular use of \cmd{\index} creates hyperlinked page entries. Index data tags in the |<driver>| section of the \texttt{dtx} file, which reads the ``commented'' part of the \texttt{dtx} file into a \texttt{document} environment, take the form:
%
-% \begin{quote}\small
+% \begin{quote}
% \cmd{\TagName}\meta{name args}\texttt{\{\textbar hyperpage\}}
% \end{quote}
%
-% Things get more complicated in the ``commented'' part of the package documentation in this \texttt{dtx} file. There, thanks to \textsf{ltxdoc}, the vertical bar is active. Index tags in the documentation part must use the form:
+% Within the ``commented'' part of the package documentation in this \texttt{dtx} file, the vertical bar is active. Hence, we use:
%
-% \begin{quote}\small
-% \cmd{\TagName}\meta{name args}\texttt{\{}\cmd{\string}\texttt{\textbar
-% hyperpage\}}
+% \begin{quote}
+% \cmd{\TagName}\meta{name args}\texttt{\{}\cmd{\noexpand}\cmd{\string\textbar hyperpage\}}\\[0.5ex]
+% or\\[0.5ex]
+% \cmd{\index\{}\meta{entry argument}\cmd{\noexpand}\cmd{\string \textbar hyperpage\}}
% \end{quote}
%
% Internally, in \cmd{\@nameauth@IdxFormat}, when a cross-reference is being created, a tag of the form \meta{some text}\texttt{\textbar}\meta{some macro} is reduced to \meta{some text}, allowing the macros \texttt{\textbar see} and \texttt{\textbar seealso} internally to be appended to the index entry even if a tag with a vertical bar exists.
%
% Next we create a special tag. Since we used lines~1–2 in this \texttt{dtx} file\Warn, we put them in the driver section to avoid both errors with the redefinition of the vertical bar and any possible confusion when using \cmd{\string}.
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \newcommand\Orphan[2]{#1(\hyperpage{#2})}
% \TagName[Lost]{Name}{\,\S|Orphan{perdit}}
@@ -4938,56 +5493,62 @@ and version 1.3 or later is part of all distributions of LaTeX version
% |\item Name, Lost\,\S \pfill \Orphan{perdit}{|\meta{page}|}|
% \end{quote}
%
-% The \textsf{microtype}\Info{Manual breaks\break and entries} package and its \texttt{Spacing} environment may be the best solution to fix index entries and sub-entries that break badly across columns or pages. Yet we could add manual breaks after editing is complete.
+% \subsubsection*{\hfil Manual Breaks and Entries}
%
-% We must create a helper macro that takes an argument and adds a break after that argument. That is how macros like \cmd{\textbf} use implied page references in the index page entries, e.g.: \cmd{\index\{Doe, John\string|textbf\}}.
+% The \textsf{microtype} package and its \texttt{Spacing} environment may be the best solution to fix index entries and sub-entries that break badly across columns or pages. Yet we could add manual breaks after editing is complete.
+%
+% We must create a helper macro that takes an argument and adds a break after that argument. That is how macros like \cmd{\textbf} use implied page entries in the index, e.g.: \cmd{\index\{Doe, John\string|textbf\}}.
%
% Below we use \cmd{\newpage} to jump to a new column. See also the \textsf{multicol} and \textsf{idxlayout} packages, as well as classes like \textsf{memoir}. On line~1 we define the \cmd{\Endbreak} macro that will break the column after the end of an index entry.
%
-% \begin{quote}\small
+% \begin{quote}
% |\newcommand*{\EndBreak}[1]{#1\newpage}|
% \end{quote}
%
% We use \cmd{\EndBreak} after the last page in a given entry. This method works for both manual index entries and for the \textsf{nameauth} macros. If all instances of \cmd{\Name\{Some, Name\}} on the same page have that same index tag, there will be no duplicate page entries, hyperlinks will work, and the index will break as indicated:
%
-% \begin{quote}\footnotesize\smallstretch
-% \begin{tabular}{p{0.055\textwidth}@{\ }p{0.4\textwidth}@{\ }l}\toprule
-% Page & Macro & Index Result\\
-% \rowcolor{nagrey}10 & \cmd{\Name\{Some, Name\}}\dotfill \hbox{} &
-% Some Name, 10\\
-% \rowcolor{nagrey} & \cmd{\index\{Topic\}}\dotfill \hbox{} &
-% Topic, 10\\
-% 15 & \cmd{\Name\{Some, Name\}}\dotfill \hbox{} & Some Name, 10, 15\\
-% & \cmd{\index\{Topic\}}\dotfill \hbox{} & Topic, 10, 15\\
-% \rowcolor{nagrey}18 & \cmd{\TagName\{Some, Name\textbar EndBreak\}\%} & \\
-% \rowcolor{nagrey} & \cmd{\Name\{Some, Name\}}\dotfill \hbox{} &
-% Some Name, 10, 15, 18\meta{break}\\
-% \rowcolor{nagrey} &
-% \cmd{\index\{Topic\textbar EndBreak\}}\dotfill \hbox{} &
-% Topic, 10, 15, 18\meta{break}\\\bottomrule
+% \begin{center}
+% \begin{tabular}{rll}\toprule
+% \rowcolor{nagrey}^^A
+% \bfseries Page & \bfseries Macro & \bfseries Index Result\\
+%
+% 10 & \cmd{\Name\{Some, Name\}} & Some Name, 10\\
+% & \cmd{\index\{Topic\}} & Topic, 10\\
+%
+% \rowcolor{nagrey}^^A
+% 15 & \cmd{\Name\{Some, Name\}} & Some Name, 10, 15\\
+% \rowcolor{nagrey}^^A
+% & \cmd{\index\{Topic\}} & Topic, 10, 15\\
+%
+% 18 & \cmd{\TagName\{Some, Name\textbar EndBreak\}\%} & \\
+% & \cmd{\Name\{Some, Name\}} &
+% Some Name, 10, 15, 18\meta{break}\\
+% &
+% \cmd{\index\{Topic\textbar EndBreak\}} &
+% Topic, 10, 15, 18\meta{break}\\\bottomrule
% \end{tabular}
-% \end{quote}
+% \end{center}
%
-% We do not have to supply an argument to \cmd{\EndBreak} because, as with the font switching example above, the page reference is implied.
+% We do not have to supply an argument to \cmd{\EndBreak} because, as with the font switching example above, the page entry is implied.
%
% We can intermix \textsf{nameauth} macros with manual index entries. We may need to look at the \texttt{idx} or \texttt{ind} files to craft matching entries on the page where the break occurs. Instead of using \cmd{\TagName}, we also can do this:
%
-% \begin{quote}\footnotesize\smallstretch
-% \begin{tabular}{p{0.055\textwidth}@{\ }p{0.4\textwidth}@{\ }l}\toprule
-% Page & Macro & Index Result\\
-% \rowcolor{nagrey} 18 &
-% \cmd{\SkipIndex}\cmd{\Name\{Some, Name\}\%}\hfill\hbox{} & \\
-% \rowcolor{nagrey} &
-% \cmd{\index\{Some Name\textbar EndBreak\}}\dotfill \hbox{} &
-% Some Name, 10, 15, 18\meta{break}\\\bottomrule
+% \begin{center}
+% \begin{tabular}{rll}\toprule
+% \rowcolor{nagrey}^^A
+% \bfseries Page & \bfseries Macro & \bfseries Index Result\\
+%
+% 18 & \cmd{\SkipIndex}\cmd{\Name\{Some, Name\}\%}\hfill\hbox{} & \\
+% & \cmd{\index\{Some Name\textbar EndBreak\}}\dotfill \hbox{} &
+% Some Name, 10, 15, 18\meta{break}\\\bottomrule
% \end{tabular}
-% \end{quote}
+% \end{center}
%
% Results for manual entries may vary, depending on what distribution of \LaTeX\ is being used and how old it is. Any name with active characters needs to be handled differently before 2018 than after 2018. All instances of \cmd{\index\{Some Name\textbar EndBreak\}} must fall on the same page.
%
-% We do not\Warn\ recommend breaking an index entry in the middle. There are several web pages that discuss the topic of gobbling the commas that are generated when one wants to use macros to manipulate index entries. \href{https://tex.stackexchange.com/questions/86646/indexing-subentries-and-see-also}{\bfseries This page} and \href{https://tex.stackexchange.com/questions/231840/what-is-the-proper-use-of-several-seealso-in-the-same-index-entry-with-makeinde}{\bfseries this one} also share a number of viewpoints. A ``quick and dirty'' version corresponding to the \cmd{\EndBreak} macro above would be the one that follows:
+% We do not\Warn\ recommend breaking an index entry in the middle. There are several discussions, such as \href{https://tex.stackexchange.com/questions/86646/indexing-subentries-and-see-also}{\bfseries this page} and \href{https://tex.stackexchange.com/questions/231840/what-is-the-proper-use-of-several-seealso-in-the-same-index-entry-with-makeinde}{\bfseries that page}. A ``quick and dirty'' version corresponding to the \cmd{\EndBreak} macro follows:
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \makeatletter
% \newcommand*{\MidBreak}[1]{#1\newpage\@gobble}
@@ -5000,7 +5561,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \subsection[Categories/Sub-entries]{Categories and Sub-entries}
% \label{sec:CatSub}
%
-% It is possible for indexes to have a structure of categories and sub-entries similar to the example outline below:
+% Indexes can have categories and sub-entries such as the following:
%
% \begin{itemize}
% \item[] \meta{category 1}
@@ -5015,24 +5576,30 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \item[] \meta{category 2}\dots
% \end{itemize}
%
-% In order to get names in \textsf{nameauth} to work with this structure, one must make use of both \cmd{\PretagName} and \cmd{\TagName}. For example, to sort a name under \meta{category}, one must use, e.g.:
+% To get \textsf{nameauth} to work with this structure, one must use both \cmd{\PretagName} and \cmd{\TagName}. For example, to sort a name under \meta{category}, use something like:
%
% \begin{SyntaxBox}
-% \cmd{\PretagName[}\meta{FNN}\texttt{]\{}\meta{SNN}\texttt
-% {\}\{}\meta{category 1}\texttt{!}\meta{SNN}\texttt
-% {, }\meta{FNN}\texttt{\}}
+% \cmd{\PretagName}\oarg{FNN}\marg{SNN}\texttt
+% {\{}\meta{category 1}\texttt{!}\meta{SNN}\texttt
+% {, }\meta{FNN}\texttt{\}}\\
+% \cmd{\PretagName}\marg{SNN, Affix}\texttt
+% {\{}\meta{category 1}\texttt{!}\meta{SNN} \meta{Affix}\texttt{\}}
% \end{SyntaxBox}
%
-% Whenever one wants to generate a sub-entry for a name, one can use \cmd{\TagName} to create that sub-entry when needed via, e.g.:
+% Whenever one wants to generate a sub-entry for a name, one can use \cmd{\TagName} to create that sub-entry when needed via something like:
%
% \begin{SyntaxBox}
-% \cmd{\TagName[}\meta{FNN}\texttt{]\{}\meta{SNN}\texttt
-% {\}\{!}\meta{name sub-entry 1}\texttt{\}}
+% \cmd{\TagName}\oarg{FNN}\marg{SNN}\texttt
+% {\{!}\meta{name sub-entry}\texttt{\}}\\
+% \cmd{\TagName}\marg{SNN, Affix}\texttt
+% {\{!}\meta{name sub-entry}\texttt{\}}
% \end{SyntaxBox}
%
-% One is not restricted to Western or non-Western name arguments; the boxes above are meant just to show the basic tag formats.
+% One is not restricted to Western or nonwestern name arguments; the boxes above are meant just to show the basic tag formats.
+%
+% \newpage
%
-% One could use \Warn\cmd{\TagName} to change to another sub-entry or the default tag as needed, or use \cmd{\UntagName} to remove the tag. If a sub-entry contains a cross-reference via \cmd{\IndexRef}, it is necessary to follow that with \cmd{\IncludeName*} to permit any further page references in other sub-entries or the main name entry. Below we demonstrate how one would implement sub-entries using index tags in a normal \LaTeX\ document. We cannot show categories when using \texttt{gind.ist}.
+% One could use \Warn\cmd{\TagName} to change to another sub-entry or the default tag as needed, or use \cmd{\UntagName} to remove the tag. If a sub-entry contains a cross-reference via \cmd{\IndexRef}, it is necessary to follow that with \cmd{\IncludeName*} to permit any further page entries in other sub-entries or the main name entry. Below we demonstrate how one would implement sub-entries using index tags in a normal \LaTeX\ document. We cannot show categories when using \texttt{gind.ist}.
%
% Categories higher than names are handled by \cmd{\PretagName}. Categories lower in the hierarchy are handled by \cmd{\TagName}. It is best practice to have three or less levels of categories in an index. Two levels are more common. Using such levels also depends on the index style and formatting files.
% \JustIndex\Wash \JustIndex\Ike
@@ -5042,12 +5609,13 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
+% \usepackage[a6paper,landscape,left=1cm,right=1cm]{geometry}
% \usepackage{makeidx}
% \usepackage{nameauth}
+%
% \makeindex
-% \usepackage[a6paper,landscape,left=1cm,right=1cm]{geometry}
%
% \newcommand*{\EndBreak}[1]{#1\newpage}
%
@@ -5141,23 +5709,25 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{document}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\NameauthTestFile}
% \end{quote}
%
-% Below we show only the index, which is page three of the document.
+% \newpage
+%
+% Below we show only the index from this example.
% A few notable features include:
%
% \begin{itemize}
% \item \Patton\ uses a regular index tag instead of a subcategory.
-% If one cannot use a subcategory due to layout constraints, regular
-% index tags are a good substitute.
+% That is a way to `cheat'' and get more groupings of entries
+% than allowed categories.
% \item \Ike\ illustrates multiple subcategories for a name. A
% cross-reference from a sub-entry of US presidents points to him.
% \item \Wash\ illustrates having both a super-category and a subcategory.
% \item \Ike, \Patton, and \Sun\ are not sorted under categories. The
% other names are sorted under categories.
-% \end{itemize}\smallskip
+% \end{itemize}
% \JustIndex\MLK \JustIndex\Doug \JustIndex\Aeth \JustIndex\Soto
% \JustIndex\Aris \JustIndex\Plato \JustIndex\Linc
%
@@ -5166,24 +5736,22 @@ and version 1.3 or later is part of all distributions of LaTeX version
% {\hbox{\vbox to 8cm{\hbox{\hfill}}}}
% \end{tcolorbox}
% \JustIndex\Wash \JustIndex\Ike
-% \medskip
-%
% \IndexWarnTerse
%
% \ReturnLink
%
-% \begin{Quote}{\Name[Publius]{Vegetius Renatus}, \textit{De re militari}}
-% Igitur qui desiderat pacem, praeparet bellum.\\
-% (Accordingly, the person who would desire peace prepares for war.)
+% \begin{Quote}{\Linc, \textit{Gettysburg Address} (19 November 1863)}
+% Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal. \dots It is for us the living, rather, to be dedicated here to the unfinished work which they who fought here have thus far so nobly advanced. It is rather for us to be here dedicated to the great task remaining before us\,---\,that from these honored dead we take increased devotion to that cause for which they gave the last full measure of devotion\,---\,that we here highly resolve that these dead shall not have died in vain\,---\,that this nation, under God, shall have a new birth of freedom\,---\,and that government of the people, by the people, for the people, shall not perish from the earth.^^A
+% \index{politicians, quotes of\noexpand\string|hyperpage}
% \end{Quote}
%
% \newpage
%
-% \section{Name Data Tags}
+% \section{Name Tags}
% \label{sec:DataTags}
%
% \DescribeMacro{\NameAddInfo}
-% All valid names in \textsf{nameauth} can have data tags; no restrictions exist. Unlike index tags, name data tags are not printed automatically with every name managed by \textsf{nameauth}. Sections~\ref{sec:NameTests} and~\ref{sec:DataTagHooks} have more examples. The macro is \cmd{\long}, allowing for some complexity in the \meta{tag} argument:
+% All valid names in \textsf{nameauth} can have name tags; no restrictions exist. Unlike index tags, name tags are not printed automatically with every name managed by \textsf{nameauth}. Sections~\ref{sec:NameTests} and~\ref{sec:DataTagHooks} have more examples. The macro is \cmd{\long}, allowing for some complexity in the \meta{tag} argument:
%
% \begin{SyntaxBox}
% \cmd{\NameAddInfo}\oarg{FNN}\marg{SNN|,| Affix}\oarg{Alternate}\marg{tag}
@@ -5193,39 +5761,40 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \PatInfo{\ShowPattern[George]{Washington}!DB\break
% \ShowPattern[George]{Washington}!MN}
% \vspace{-2ex}
-% For example, |\NameAddInfo[George]{Washington}{(1732--99)}| \NameAddInfo[George]{Washington}{(1732--99)} makes a data tag but does not print whenever \Wash\ \cmd{\Wash} is used. The data tag is a hidden macro that needs to be displayed using another helper macro keyed to that name, which we discuss below.\medskip
+% For example, |\NameAddInfo[George]{Washington}{(1732--99)}|\NameAddInfo[George]{Washington}{(1732--99)} makes a name tag but does not print whenever \Wash\ \cmd{\Wash} is used. The name tag needs to be displayed using the helper macro below.
%
% \DescribeMacro{\NameQueryInfo}
-% To print the data tag macro associated with a name, we use \cmd{\NameQueryInfo}, a helper macro that uses the name arguments to display the hidden macro associated with that name in the name info data set:
+% To print a name tag for a given name, we use \cmd{\NameQueryInfo}, a helper macro that prints a name tag in the name info data set:
%
% \begin{SyntaxBox}
% \cmd{\NameQueryInfo}\oarg{FNN}\marg{SNN|,| Affix}\oarg{Alternate}
% \end{SyntaxBox}
%
-% Since we already created a data tag for \LWash, we will retrieve that data now: \cmd{\NameQueryInfo[George]\{Washington\}} expands to \NameQueryInfo[George]{Washington}. Of course, it may seem tedious to retrieve this information by hand. In Section~\ref{sec:DataTagHooks} and thereafter we show how one can automate the retrieval of data tags using formatting hooks, Yet therein also lies a caution:
+% \cmd{\NameQueryInfo[George]\{Washington\}} prints the name tag for \LWash:
+% \NameQueryInfo[George]{Washington}. In Section~\ref{sec:DataTagHooks} and thereafter we show how one can automate the retrieval of name tags using formatting hooks, Yet therein also lies a caution:
%
-% \begin{InfoBox}[Caution for Using \cmd{\noexpand}]
-% When using a formatting hook definition based on the recommended template (Section~\ref{sec:DataTemp}), one can use \cmd{\noexpand} in arguments for \cmd{\NameAddInfo}, \cmd{\NameQueryInfo}, and \cmd{\NameClearInfo} without restriction.\medskip
+% \begin{itemize}
+% \item When using the recommended template for a formatting hook (Section~\ref{sec:DataTemp}), one can use \cmd{\noexpand} in arguments for \cmd{\NameAddInfo}, \cmd{\NameQueryInfo}, and \cmd{\NameClearInfo} without restriction.
%
-% When using designs based on older templates, using \cmd{\noexpand} may cause \cmd{\NameQueryInfo} to print nothing if one uses the basic interface. Using the quick interface will work as expected.
-% \end{InfoBox}
+% \item When using designs based on older templates, using \cmd{\noexpand} may cause \cmd{\NameQueryInfo} to print nothing if one uses the basic interface. Using the quick interface will work as expected.
+% \end{itemize}
%
-% One can insert a space at the start of a data tag; use signs like asterisks, daggers, and the like; and even create footnotes, such as the source for footnote \addtocounter{footnote}{1}\arabic{footnote}\addtocounter{footnote}{-1} on the following page:
+% One can insert a space at the start of a name tag; use signs like asterisks, daggers, and the like; and even create footnotes, such as footnote \addtocounter{footnote}{1}\arabic{footnote}\addtocounter{footnote}{-1} (below):
%
% \begin{VerbatimOut}{\jobname.tmp}
% \NameAddInfo[Ulysses S.]{Grant}
% {eighteenth US president (1869--1877)}
% \NameAddInfo[Schuyler]{Colfax}
% {\footnote{\Name[Schuyler]{Colfax} was the seventeenth US
-% vice-president during the first term (1869--73) of
-% \Name*[Ulysses S.]{Grant}, \NameQueryInfo[Ulysses S.]{Grant}.}}
+% vice-president during the first term (1869--73) of
+% \Name*[Ulysses S.]{Grant}, \NameQueryInfo[Ulysses S.]{Grant}.}}
%
% Remember \Name[Schuyler]{Colfax}?\NameQueryInfo[Schuyler]{Colfax}
% Derived from the same origin as ``scholar'', this name can occur
% as ``Skylar'' for girls and ``Skyler'' for boys.
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \vspace{3.5ex}
% \PatInfo{\ShowPattern[George]{Washington}!DB\break
% \ShowPattern[Ulysses S.]{Grant}!DB\break
@@ -5238,9 +5807,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \input{\jobname.tmp}
% \end{quote}
%
-% The previous\Warn{} example cannot be used in a formatting hook (Section~\ref{sec:DataTagHooks}). Within the formatting hooks, one is in a ``locked path'' that will not permit the ``re-entrant'' call to a naming macro. This is necessary to prevent a stack overflow. Were this example called in a formatting hook, \Name*[Ulysses S.]{Grant} would not print, although the data tag for \Name[Ulysses S.]{Grant} would print because it is called separately.
+% \newpage
+%
+% The previous\Warn{} example cannot be used in a formatting hook (Section~\ref{sec:DataTagHooks}). Within the formatting hooks, one is in a ``locked path'' that prevents calling a naming macro. This prevents a stack overflow. |\Name*[Ulysses S.]{Grant}| would not print inside a formatting hook, although |\NameQueryInfo[Ulysses S.]{Grant}| would print.
%
-% One can\Warn{} nest data tags and have them call each other. Therefore, one must protect against a stack overflow by using Boolean flags and conditional statements. In the minimal working example below, \cmd{\NameQueryInfo} calls a tag that sets a Boolean flag true, which causes the \emph{other} tag called later to stop the potential for recursion and exit.
+% Name\Warn{} tags can call each other. To protect against a stack overflow, use Boolean flags and conditional statements. Below, \cmd{\NameQueryInfo} calls a tag that sets a Boolean flag true, which causes the \emph{other} tag to stop any recursion and exit.
%
% \begin{VerbatimOut}{\jobname.tmp}
% \newif\ifA
@@ -5250,47 +5821,50 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \NameAddInfo{B}
% {\Btrue B \ifA Stop \else \NameQueryInfo{A} \fi \Bfalse}
% \begin{itemize}
-% \item \NameQueryInfo{A}
-% \item \NameQueryInfo{B}
+% \item \NameQueryInfo{A}
+% \item \NameQueryInfo{B}
% \end{itemize}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\jobname.tmp}
%
% \input{\jobname.tmp}
% \end{quote}
%
% \DescribeMacro{\NameClearInfo}
-% \cmd{\NameAddInfo} will replace one data tag with another data tag, but it does not delete a data tag. That is the role of \cmd{\NameClearInfo}. The syntax is:
+% \cmd{\NameAddInfo} will replace one name tag with another name tag, but it does not delete a tag. That is the role of \cmd{\NameClearInfo}. The syntax is:
%
% \begin{SyntaxBox}
% \cmd{\NameClearInfo}\oarg{FNN}\marg{SNN|,| Affix}\oarg{Alternate}
% \end{SyntaxBox}
%
-% We now revisit \LWash\ and his associated data tag. \PatInfo{\ShowPattern[George]{Washington}!DB}
+% We now revisit \LWash\ and his associated name tag. \PatInfo{\ShowPattern[George]{Washington}!DB}
%
% \begin{VerbatimOut}{\jobname.tmp}
-% The data tag is: \fbox{\NameQueryInfo[George]{Washington}}\quad
+% The name tag is: \fbox{\NameQueryInfo[George]{Washington}}\quad
% Clearing data.\NameClearInfo[George]{Washington}\quad
-% The data tag is empty: \fbox{\NameQueryInfo[George]{Washington}}
+% The name tag is empty: \fbox{\NameQueryInfo[George]{Washington}}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\jobname.tmp}
%
% \input{\jobname.tmp}
% \end{quote}
-%
% \ReturnLink
%
+% \begin{Quote}{\ForgetThis\Name{Confucius}, \textit{The Analects}, C II (475–221 \textsc{bc})}
+% He who exercises government by means of his virtue may be compared to the north polar star, which keeps its place and all the stars turn towards it.^^A
+% \index{north star, concept of\noexpand\string|hyperpage}^^A
+% \index{philosophers, quotes of\noexpand\string|hyperpage}
+% \end{Quote}
+%
% \newpage
%
% \section[Formatting and Decisions]{Basic Formatting and Name Decisions}
% \label{sec:FormatChoice}
%
-% Since both syntactic name forms and formatting interact heavily with the presence and absence of name patterns, we include them together in one section.
-%
% \subsection{Basic Formatting}
% \label{sec:Formatting}
%
@@ -5302,18 +5876,16 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \renewcommand\FrontNamesFormat{}
% \renewcommand\FrontNameHook{}
% \begin{tcolorbox}[colframe=naslate,colback=white,
-% adjusted title={\hfil Syntactic Changes;^^A
+% adjusted title={\large\hfil Syntactic Changes;
% No Formatting/Post-Processing}]\centering
% \begin{tabular}{llll}\toprule
-% First & Later & First name & Later name\\\midrule
-% \cmd{\Patton} & \cmd{\Patton} & \ForgetThis\Patton & \Patton\\
-% \cmd{\LPatton} & \cmd{\LPatton} & \ForgetThis\LPatton &
-% \LPatton\\
-% \cmd{\SPatton} & \cmd{\SPatton} & \ForgetThis\SPatton &
-% \SPatton\\\midrule
-% \cmd{\Yamt} & \cmd{\Yamt} & \ForgetThis\Yamt & \Yamt\\
-% \cmd{\LYamt} & \cmd{\LYamt} & \ForgetThis\LYamt & \LYamt\\
-% \cmd{\SYamt} & \cmd{\SYamt} & \ForgetThis\SYamt & \SYamt\\\bottomrule
+% \bfseries First Instance & \bfseries Macro & \bfseries Later Instance & \bfseries Macro\\\midrule
+% \ForgetThis\Patton & \cmd{\Patton} & \Patton & \cmd{\Patton}\\
+% \ForgetThis\LPatton & \cmd{\LPatton} & \LPatton & \cmd{\LPatton}\\
+% \ForgetThis\SPatton & \cmd{\SPatton} & \SPatton & \cmd{\SPatton}\\\midrule
+% \ForgetThis\Yamt & \cmd{\Yamt} & \Yamt & \cmd{\Yamt}\\
+% \ForgetThis\LYamt & \cmd{\LYamt} & \LYamt & \cmd{\LYamt}\\
+% \ForgetThis\SYamt & \cmd{\SYamt} & \SYamt & \cmd{\SYamt}\\\bottomrule
% \end{tabular}
% \end{tcolorbox}
% \endgroup
@@ -5323,14 +5895,14 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Many books are structured with front matter that includes a table of contents, foreword, introductory material or survey material, and other instructive content that is not part of the main matter. The \textsf{nameauth} package has separate syntax and formatting system for front matter (\texttt{!NF}) and main matter (\texttt{!MN}). These formatting systems are linked to the existence of a name control pattern.
%
% \begin{itemize}
-% \item Name first use
+% \item First instance of a name
% \begin{itemize}
% \item No name control sequence exists.
% \item A name is printed with its long form (default).
% \item The ``first-use'' formatting hook is used (default).
% \item After the name is printed, a name control sequence is created.
% \end{itemize}
-% \item Name subsequent use
+% \item Subsequent instance of a name
% \begin{itemize}
% \item A name control sequence already exists.
% \item A name is printed using a shorter form (default).
@@ -5338,16 +5910,16 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{itemize}
% \end{itemize}
%
-% The parser and related macros create name forms and formats only in the text. Macros in name arguments affect both text and index (Section~\ref{sec:AltFormat}).\medskip
+% The parser and related macros create name forms and formats only in the text. Macros in name arguments affect both text and index (Section~\ref{sec:AltFormat}).
%
% \DescribeMacro{\NamesActive}
% Independent ``main-matter'' and ``front-matter'' systems are used to format first and subsequent name uses.
% \DescribeMacro{\NamesInactive}
% \cmd{\NamesInactive} and the \texttt{frontmatter} option enable the front-matter system. \cmd{\NamesActive} switches names to the main-matter system. The \texttt{mainmatter} option is the default setting for names.
%
-% Especially with the macros that deal with formatting, the naming scheme is unfortunate because it involved some groping in the dark regarding the concepts.\medskip
+% These\Info{\cmd{\global}} two macros can be used explicitly as a pair or singly within an explicit local scope. Use \cmd{\global} to force a global effect.
%
-% These\Info{\cmd{\global}} two macros can be used explicitly as a pair or singly within an explicit local scope. Use \cmd{\global} to force a global effect.\medskip
+% \newpage
%
% \DescribeMacro{\NamesFormat}
% The main-matter system uses \cmd{\NamesFormat} to post-process first occurrences of names and
@@ -5356,9 +5928,10 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \DescribeMacro{\FrontNamesFormat}
% for first uses and \cmd{\FrontNameHook} for subsequent uses. The \texttt{alwaysformat}
% \DescribeMacro{\FrontNameHook}
-% option causes only \cmd{\NamesFormat} and \cmd{\FrontNamesFormat} to be used. Since the formatting hooks always are defined when using \textsf{nameauth}, one must use \cmd{\renewcommand} when changing their definitions.\footnote{The names of these macros grew from \cmd{\NamesFormat}, originally the only formatting hook.}
-% Section~\ref{sec:NamePatterns} shows how name control sequences are keyed either to the main-matter system or to the front-matter system. The two formatting systems are distinct, useful for separate document elements. We color-code them and ``forget'' any previous name uses: \medskip
+% option causes only \cmd{\NamesFormat} and \cmd{\FrontNamesFormat} to be used. Since the formatting hooks always are defined when using \textsf{nameauth}, one must use \cmd{\renewcommand} when changing their definitions.\footnote{The names of these macros grew from \cmd{\NamesFormat}, originally the only formatting hook. Especially with the macros in this section, the naming scheme is unfortunate because package development involved some groping in the dark regarding the concepts.}
+% Section~\ref{sec:NamePatterns} shows how name control sequences are keyed either to the main-matter system or to the front-matter system. The two formatting systems are distinct, useful for separate document elements. We color-code them and ``forget'' any previous name uses:
%
+% \begin{quote}
% \ForgetName[Rudolph]{Carnap}
% \vspace{4ex}
% \PatInfo{\textrm{front-matter}\hfill\break
@@ -5369,31 +5942,30 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \ShowPattern[Nicolas]{Malebranche}!MN}
% \vspace{-4ex}
% \begin{tcolorbox}[colframe=red,colback=white,
-% adjusted title={\hfil Front-matter system: \cmd{\NamesInactive}}]
+% adjusted title={\large\hfil Front-matter system: \cmd{\NamesInactive}}]
% \NamesInactive
% \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}\\
+% \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{tcolorbox}
-% \medskip
%
% \begin{tcolorbox}[colframe=blue,colback=white,
-% adjusted title={\hfil Main-matter system: \cmd{\NamesActive}}]
+% adjusted title={\large\hfil Main-matter system: \cmd{\NamesActive}}]
% \NamesActive
% \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}\\
+% \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{tcolorbox}
-% \medskip
+% \end{quote}
%
% We used the \textsf{xcolor} package with the following macros:
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \renewcommand*\FrontNamesFormat[1]{\color{red}\sffamily #1}
% \renewcommand*\FrontNameHook[1]{\color{darkgray}\sffamily #1}
@@ -5405,15 +5977,15 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \DescribeMacro{\ForceName}
% We show examples of \cmd{\ForceName} in Sections~\ref{sec:NameControl}, \ref{sec:DataTagHooks}, and~\ref{sec:AKA}. Use this prefix macro to force ``first use'' formatting for the next \cmd{\Name}, etc., but without deleting any name control sequences. Thus:
%
-% \begin{quote}\small
-% \hphantom{\cmd{\ForceName}}^^A
-% \PatInfo{\ShowPattern[Rudolph]{Carnap}!MN}^^A
-% \cmd{\Name[Rudolph]\{Carnap\}} \Name[Rudolph]{Carnap}\\
-% \cmd{\ForceName}\cmd{\Name[Rudolph]\{Carnap\}}
+% \begin{quote}
+% \Name[Rudolph]{Carnap}^^A
+% \PatInfo{\ShowPattern[Rudolph]{Carnap}!MN}
+% \cmd{\Name[Rudolph]\{Carnap\}} \\[1ex]
% \ForceName\Name[Rudolph]{Carnap}
+% \cmd{\ForceName}\cmd{\Name[Rudolph]\{Carnap\}}
% \end{quote}
%
-% Below\Info{\texttt{alwaysformat}} we simulate \texttt{alwaysformat} via package internals:
+% Below\Info{\texttt{alwaysformat}} we simulate \texttt{alwaysformat} via package internals. Only the ``first use'' formatting hooks are used:
%
% \makeatletter\@nameauth@AlwaysFormattrue\makeatother%
% \ForgetName[M.T.]{Cicero}\ForgetName{Elizabeth, I}%
@@ -5431,22 +6003,24 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \newpage
%
-% The internal name parser\Info{Hook caveats} determines what syntactic name elements exist and how they are constituted. It passes that information to macros that determine the form of non-Western or Western names to be displayed. They in turn call the format hook dispatcher for post-processing, which calls the formatting hooks using the pattern:
+% \subsubsection*{\hfil Hook caveats}
+%
+% The internal name parser determines what syntactic name elements exist and how they are constituted. It passes that information to macros that determine the form of nonwestern or Western names to be displayed. They in turn call the format hook dispatcher for post-processing, which calls the formatting hooks using the pattern:
%
-% \begin{quote}\small
+% \begin{quote}
% \cmd{\bgroup}\meta{Hook}\texttt{\{\#1\}}\cmd{\egroup}.
% \end{quote}
%
% One can create formatting hooks that take either no argument or one argument. Since the formatting hooks are already defined, one must not use \cmd{\newcommand} to create new hooks. Instead, use \cmd{\renewcommand} e.g.:
%
-% \begin{quote}\small
+% \begin{quote}
% \cmd{\renewcommand*}\cmd{\NamesFormat\{}\meta{content}\texttt{\}}\\
% \cmd{\renewcommand*}\cmd{\NamesFormat[1]\{}\meta{content}\texttt{\}}
% \end{quote}
%
% A hook that takes one argument can use, change, or discard it and invoke \cmd{\NameParser} (Section~\ref{sec:SpecialUses}). Due to package design using local scope, both the following achieve exactly the same effect:
%
-% \begin{quote}\small
+% \begin{quote}
% \cmd{\renewcommand*}\cmd{\NamesFormat\{}\cmd{\itshape}\texttt{\}}\\
% \cmd{\renewcommand*}\cmd{\NamesFormat\{}\cmd{\textit}\texttt{\}}
% \end{quote}
@@ -5463,7 +6037,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \makeatother
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \vspace{4ex}
% \PatInfo{\ShowPattern[Adolf]{Harnack}!MN\break
% \ShowPattern[Adolf]{Harnack}!NF}
@@ -5481,13 +6055,14 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \makeatother
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\jobname.tmp}
% \end{quote}
% \input{\jobname.tmp}
%
-% \begin{Quote}{\Name[Hubert H.]{Humphrey}, speech (26 March 1966)}
-% In real life, unlike in Shakespeare, the sweetness of the rose depends upon the name it bears. Things are not only what they are. They are, in very important respects, what they seem to be.
+% \begin{Quote}{\ForgetThis\Name[M.T.]{Cicero}[Marcus Tullius], \textit{De oratore} B II; C IX, \S 36 (55 \textsc{BC})}
+% By what other voice, too, than that of the orator, is history, the evidence of time, the light of truth, the life of memory, the directress of life, the herald of antiquity, committed to immortality?^^A
+% \index{Romans, quotes of\noexpand\string|hyperpage}
% \end{Quote}
%
% \newpage
@@ -5495,19 +6070,19 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \subsection{Making Name Decisions}
% \label{sec:NameControl}
%
-% By default, the macros below produce global effects. They change both the \texttt{!MN} and \texttt{!NF} data sets (Section~\ref{sec:NamePatterns}). Those changes implicitly affect syntactic name forms, name formatting, index protection with respect to creating cross-references (Section~\ref{sec:IndexRef}), and the name testing macros (Section~\ref{sec:NameTests}).\medskip
+% By default, the macros below produce global effects. They change both the \texttt{!MN} and \texttt{!NF} data sets (Section~\ref{sec:NamePatterns}). Those changes implicitly affect syntactic name forms, name formatting, index protection with respect to creating cross-references (Section~\ref{sec:IndexRef}), and the name testing macros (Section~\ref{sec:NameTests}).
%
% \DescribeMacro{\ForgetName}
-% This macro takes the same arguments as \cmd{\Name}, but it prints no output. It ``forgets'' a name, forcing a ``pre-first use'' state. The next time a naming macro makes reference to the name, it will display as if the name did not yet exist:
+% This macro takes the same arguments as \cmd{\Name}, but it prints no output. It ``forgets'' a name, forcing a ``pre-first use'' state. The next instance of that name will display as if the name did not yet exist:
%
% \begin{SyntaxBox}
% \cmd{\ForgetName}\oarg{FNN}\marg{SNN|,| Affix}\oarg{Alternate}
% \end{SyntaxBox}
%
-% \cmd{\ForgetName} ``unprotects'' names like \cmd{\IncludeName*} ``unprotects'' xrefs. This allows one to make both \textit{see} and \textit{see also} cross-references to a name, even if that name already has index page references.\medskip
+% \cmd{\ForgetName} ``unprotects'' names like \cmd{\IncludeName*} ``unprotects'' xrefs. This allows one to make both \textit{see} and \textit{see also} cross-references to a name, even if that name already has index page entries.
%
% \DescribeMacro{\ForgetThis}
-% This prefix macro causes the next instance of a naming macro or shorthand to ``forget'' a name before printing it. After knowing |\Einstein| ``\Einstein'' we forget him and again have a first reference: |\ForgetThis\Einstein| ``\ForgetThis\Einstein''. \cmd{\ForgetThis} no longer affects the index unless one uses the \texttt{oldreset} option.\medskip
+% This prefix macro causes the next instance of a naming macro or shorthand to ``forget'' a name before printing it. After knowing \Einstein, we forget him and again have a first instance via |\ForgetThis\Einstein|: \ForgetThis\Einstein. \cmd{\ForgetThis} no longer affects the index unless one uses the \texttt{oldreset} option.
%
% \DescribeMacro{\SubvertName}
% This macro takes the same arguments as \cmd{\Name}, but it produces no output in the text. It ``subverts'' a name by creating a name pattern control sequence, forcing a ``subsequent use'', and ``protecting'' a name from being used as a \textit{see} reference (analogous to \cmd{\ExcludeName} and \cmd{\IndexRef}:
@@ -5536,7 +6111,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% {\IfMainName[Charlie]{Chaplin}{main}{none}}}}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\jobname.tmp}
% \end{quote}
% \input{\jobname.tmp}
@@ -5558,7 +6133,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \item Switch to the ``front-matter'' system and create a name.
% \PatInfo{\ShowPattern[Charlie]{Chaplin}!NF}
-% Ifone is within a group or local scope, one may have to add
+% If one is within a group or local scope, one may have to add
% \cmd{\global} to \cmd{\NamesInactive}:
% \begin{itemize}[rightmargin=2\leftmargin]
% \item[] |\global\NamesInactive|\global\NamesInactive
@@ -5584,7 +6159,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \item Next ``subvert'' the front-matter name to ``remember'' it again.
% Then switch to main matter:
% \begin{itemize}[rightmargin=2\leftmargin]
-% \item[] |\Subvert\Name[Charlie]{Chaplin}|\SubvertName[Charlie]{Chaplin}
+% \item[] |\SubvertName[Charlie]{Chaplin}|\SubvertName[Charlie]{Chaplin}
% \item[] |\CheckChuck|\dotfill \CheckChuck
% \item[] |\global\NamesActive|\global\NamesActive
% \end{itemize}
@@ -5615,69 +6190,59 @@ and version 1.3 or later is part of all distributions of LaTeX version
% We pull together information on name forms and formatting, focusing on what happens in one naming system only, since the two systems are independent.
%
% \begin{itemize}[leftmargin=3cm]\small
-% \item[First Use:] \cmd{\Bailey} \dotfill \ForgetThis\Bailey\\
-% \cmd{\LBailey} \dotfill \ForgetThis\LBailey\\
-% \cmd{\SBailey} \dotfill \ForgetThis\SBailey\\
+% \item[First Instance:] \ForgetThis\Bailey \dotfill \cmd{\Bailey}\\
+% \ForgetThis\LBailey \dotfill \cmd{\LBailey}\\
+% \ForgetThis\SBailey \dotfill \cmd{\SBailey}\\
% Name control pattern created with text output.
% Index state 2, 4, or 6 (Section~\ref{sec:RuleStates}).
% Name form: long. First-use hooks.
%
-% \item[Later Use:] \cmd{\Bailey} \dotfill \Bailey\\
-% \cmd{\LBailey} \dotfill \LBailey\\
-% \cmd{\SBailey} \dotfill \SBailey\\
+% \item[Later Instance:] \Bailey \dotfill \cmd{\Bailey}\\
+% \LBailey \dotfill \cmd{\LBailey}\\
+% \SBailey \dotfill \cmd{\SBailey}\\
% No change to name pattern. Index state 2, 4, or 6.
% Name form: short. Subsequent-use hooks.
%
-% \item[Forgotten:] \cmd{\ForgetName[Betsey]\{Bailey\}} \dotfill
-% (no output)\ForgetName[Betsey]{Bailey}\\
+% \item[Forgotten:] (no output)\ForgetName[Betsey]{Bailey} \dotfill^^A
+% \cmd{\ForgetName[Betsey]\{Bailey\}}\\
% Name pattern deleted. Index state 1, 3, or 5
% (Section~\ref{sec:RuleStates}).
-% Next use usually will be a first use, e.g.: \Bailey.
+% next instance usually will be a first use, e.g.: \Bailey.
%
-% \item[Subverted:] \cmd{\SubvertName[Betsey]\{Bailey\}} \dotfill
-% (no output)\SubvertName[Betsey]{Bailey}\\
+% \item[Subverted:] (no output)\SubvertName[Betsey]{Bailey} \dotfill^^A
+% \cmd{\SubvertName[Betsey]\{Bailey\}}\\
% Name pattern created. Index state 2, 4, or 6.
-% Next use usually will be a later use, e.g.: \Bailey, \LBailey, \SBailey.
+% next instance usually will be a later use, e.g.: \Bailey, \LBailey, \SBailey.
%
% \item[\cmd{\ForgetThis}:]
-% \cmd{\ForgetThis}\cmd{\Bailey} \dotfill \ForgetThis\Bailey\\
-% \cmd{\ForgetThis}\cmd{\LBailey} \dotfill \ForgetThis\LBailey\\
-% \cmd{\ForgetThis}\cmd{\SBailey} \dotfill \ForgetThis\SBailey\\
+% \ForgetThis\Bailey \dotfill \cmd{\ForgetThis}\cmd{\Bailey}\\
+% \ForgetThis\LBailey \dotfill \cmd{\ForgetThis}\cmd{\LBailey}\\
+% \ForgetThis\SBailey \dotfill \cmd{\ForgetThis}\cmd{\SBailey}\\
% Name pattern deleted, then created again. Index state 2, 4, or 6.
-% Name form and format: same as first use above. Next use usually
+% Name form and format: same as first use above. next instance usually
% will be a later use, e.g.: \Bailey, \LBailey, \SBailey.
%
% \item[\cmd{\SubvertThis}:]
-% \cmd{\SubvertThis}\cmd{\Bailey} \dotfill \SubvertThis\Bailey\\
-% \cmd{\SubvertThis}\cmd{\LBailey} \dotfill \SubvertThis\LBailey\\
-% \cmd{\SubvertThis}\cmd{\SBailey} \dotfill \SubvertThis\SBailey\\
+% \SubvertThis\Bailey \dotfill \cmd{\SubvertThis}\cmd{\Bailey}\\
+% \SubvertThis\LBailey \dotfill \cmd{\SubvertThis}\cmd{\LBailey}\\
+% \SubvertThis\SBailey \dotfill \cmd{\SubvertThis}\cmd{\SBailey}\\
% Name pattern created. Index state 2, 4, or 6.
-% Name form and format: same as later use above. Next use usually
+% Name form and format: same as later use above. next instance usually
% will be a later use, e.g.: \Bailey, \LBailey, \SBailey.
%
-% \item[Format First:]
-% \cmd{\ForceName}\cmd{\Bailey} \dotfill \ForceName\Bailey\\
-% \cmd{\ForceName}\cmd{\LBailey} \dotfill \ForceName\LBailey\\
-% \cmd{\ForceName}\cmd{\SBailey} \dotfill \ForceName\SBailey\\
+% \item[Format as First:]
+% \ForceName\Bailey \dotfill \cmd{\ForceName}\cmd{\Bailey}\\
+% \ForceName\LBailey \dotfill \cmd{\ForceName}\cmd{\LBailey}\\
+% \ForceName\SBailey \dotfill \cmd{\ForceName}\cmd{\SBailey}\\
% No change to name pattern. Index state 2, 4, or 6.
% Name form: short or long. Name format: First-use hooks.
% \end{itemize}
%
-% \AltFormatActive
-% \begin{Quote}{\ForgetThis\Luth\break
-% \hbox{}\hfill \textit{Von der Freiheit eines Christenmenschen}
-% (1520)\footnote{In several cases (e.g., here) when one uses small
-% caps, harmless font substitution warnings result.}}
-% Eyn Chriſten menſch iſt eyn freyer herr /
-% u\raise 0.2ex\hbox{\kern -1.1ex\textsuperscript{e}\kern 1pt}ber alle
-% ding / und niemande unterthan. Eyn Chriſten menſch iſt eyn dienſtpar
-% knecht aller ding und yderman unterthan.
-%
-% (A Christian is a free lord, above all things, and subject to no one.
-% A Christian is a willing servant of all things and is subject to
-% everyone.)
+% \begin{Quote}{\Name[Hubert H.]{Humphrey}, speech (26 March 1966)}
+% In real life, unlike in Shakespeare, the sweetness of the rose depends upon the name it bears. Things are not only what they are. They are, in very important respects, what they seem to be.^^A
+% \index{politicians, quotes of\noexpand\string|hyperpage}^^A
+% \index{Shakespearian rose, references to\noexpand\string|hyperpage}
% \end{Quote}
-% \AltFormatInactive
%
% \newpage
%
@@ -5688,12 +6253,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \subsubsection{Testing Macros}
%
-% The macros in this section test for the presence or absence of a name, then expand to a result based on the outcome of the test.\medskip
+% The macros in this section test for the presence or absence of a name, then expand to a result based on the outcome of the test.
%
% \DescribeMacro{\GlobalNameTest}
% The default behavior encapsulates the decision paths in a local scope, insulating any changes therein.
% \DescribeMacro{\LocalNameTest}
-% If this is not desired, use the \texttt{globaltest} option or \cmd{\GlobalNameTest}. \cmd{\LocalNameTest} will re-enable the default. These commands affect assignment statements in test paths. By default, one must explicitly use \cmd{\global} when desired. See also the examples below.\medskip
+% If this is not desired, use the \texttt{globaltest} option or \cmd{\GlobalNameTest}. \cmd{\LocalNameTest} will re-enable the default. These commands affect assignment statements in test paths. By default, one must explicitly use \cmd{\global} when desired. See also the examples below.
%
% \DescribeMacro{\IfMainName}
% In order to test whether or not a ``main matter'' name control sequence exists, use this long macro that can accommodate paragraph breaks:
@@ -5711,7 +6276,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% {No Bob here.}\IndexName[Bob]{Hope}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\jobname.tmp}
%
% \input{\jobname.tmp}
@@ -5739,7 +6304,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \parbox{0.4\textwidth}{\msg} (\cmd{\LocalNameTest}).
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\jobname.tmp}
%
% \input{\jobname.tmp}
@@ -5767,7 +6332,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% {\Name[Rudolph]{Carnap} has not been mentioned.}}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\jobname.tmp}
%
% \input{\jobname.tmp}
@@ -5801,7 +6366,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \item In\PatInfo{\ShowPattern[Jesse]{Ventura}!MN\break
% \ShowPattern[James]{Janos}!PN\break
% \ShowPattern[James]{Janos}!MN}
-% the text we first create a reference to former pro-wrestler and
+% the text we first create an instance of former pro-wrestler and
% Minnesota governor \Name[Jesse]{Ventura}, |\Name[Jesse]{Ventura}|.
% \item We establish his lesser-known legal name as an alias:
% ``\IndexRef[James]{Janos}{Ventura, Jesse}\Name[James]{Janos}'',\\
@@ -5815,7 +6380,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \meta{excl} branch empty:
% \end{enumerate}
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \IfAKA[James]{Janos}
% {\Name*[Jesse]{Ventura} is a stage name}
@@ -5828,7 +6393,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% We can combine all these macros to create a complete, unified test:
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \IfAKA[FNN]{SNN, Affix}[Alternate]
% {%
@@ -5870,7 +6435,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{quote}
% \begin{Verbatim}
-% \ifMainName[Ferris}{Bueller}
+% \ifMainName[Ferris]{Bueller}
% {\Name[Cameron]{Frye} is gloomy and introspective.}
% {\Name[Cameron]{Frye} is developing positive traits.}
% \end{Verbatim}
@@ -5881,23 +6446,23 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \begin{quote}
% \JustIndex\JWG^^A
% \begin{Verbatim}
-% \ifMainName[J.W. von}{Goethe}
-% {\Name[J.W. von}{Goethe}}
-% {\Name[J.W. von}{Goethe}[Johann Wolfgang von]}
+% \ifMainName[J.W. von]{Goethe}
+% {\Name[J.W. von]{Goethe}}
+% {\Name[J.W. von]{Goethe}[Johann Wolfgang von]}
% \end{Verbatim}
% \end{quote}
%
% In Sections~\ref{sec:NameAncient} and~\ref{sec:SpecialUses} we explore ways that one could automate something like what we have above. Section~\ref{sec:SpecialUses} applies better to Western names.
%
-% In addition to using the name decision testing macros by themselves, one can use them with name data tags to ensure that the information associated with a given name is not anachronistic.
+% In addition to using the name decision testing macros by themselves, one can use them with name tags to ensure that the information associated with a given name is not anachronistic.
%
-% For example, we know that certain people are associated with chronological events. We associate those people and events to the information presented in a name data tag via name testing macros:
+% For example, we know that certain people are associated with chronological events. We associate those people and events to the information presented in a name tag via name testing macros:
%
% \begin{VerbatimOut}{\jobname.tmp}
% \NameAddInfo{Saul, of Tarsus}
% {\IfMainName{Jesus, Christ}
% {\IfMainName[Lucius]{Sergius Paulus}
-% {finally renamed himself \Name{Paul}, in
+% {renamed himself \Name{Paul}, in
% honor of his patron}
% {next became a preacher to the Gentiles}}
% {wrote first that he persecuted Christians}}
@@ -5911,16 +6476,16 @@ and version 1.3 or later is part of all distributions of LaTeX version
% on the road to Damascus.
%
% \Name{Saul, of Tarsus} \NameQueryInfo{Saul, of Tarsus}.
-% He undertook three great missionary trips before being
-% sent to Rome to face trial in an appeal to Caesar. On one
-% journey, while in Cyprus, \Name{Saul, of Tarsus} converted
+% He undertook three missionary journeys before being
+% sent to Rome for trial in an appeal to Caesar.
+% While in Cyprus, \Name{Saul, of Tarsus} converted
% \Name[Lucius]{Sergius Paulus}, who became a patron.
%
% \Name{Saul, of Tarsus} \NameQueryInfo{Saul, of Tarsus}.
% Under the name \Name{Paul} he wrote his letters.
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \vspace{3ex}
% \PatInfo{\ShowPattern{Paul}!PN\break
% \ShowPattern{Saul, of Tarsus}!DB\break
@@ -5934,7 +6499,9 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \input{\jobname.tmp}
% \end{quote}
%
-% Using these tests\Info{Caveats} inside other macros or passing control sequences to them may create false results (see \textit{The \TeX book}, 212--15). This was especially the case before 2018 with names using diacritical marks and other letters outside the basic Latin characters. That is why \textsf{nameauth} uses token registers to save name arguments.
+% \subsubsection*{\hfil Caveats}
+%
+% Using these tests inside other macros or passing control sequences to them may create false results (see \textit{The \TeX book}, 212--15). This was especially the case before 2018 with names using diacritical marks and other letters outside the basic Latin characters. That is why \textsf{nameauth} uses token registers to save name arguments.
%
% We have stressed and will continue to stress using \cmd{\noexpand} in macros passed as name arguments to stabilize what happens. See also Section~\ref{sec:Unicode} regarding how one might engage possible Unicode issues in certain \LaTeX\ engines.
%
@@ -5951,9 +6518,10 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{beamer}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage[noindex]{nameauth}
+%
% \mode<presentation>
% \beamerdefaultoverlayspecification{<+->}
%
@@ -5996,7 +6564,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{document}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\NameauthTestFile}
% \IndexName[George]{Washington}
% \IndexName[Ulysses S.]{Grant}
@@ -6014,7 +6582,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{tcolorbox}
% \IndexName[George]{Washington}
% \IndexName[Ulysses S.]{Grant}
-% \medskip
+%
%
% The second overlay uses \cmd{\ForgetName} forcing specific name forms respective to each overlay, instead of respective to the overall sequence of overlays. We also observe the use of name conditionals in text elements that one might reorder.
%
@@ -6025,6 +6593,8 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \IndexName[George]{Washington}
% \IndexName[Ulysses S.]{Grant}
%
+% \newpage
+%
% Overlay three fully illustrates how all these features integrate. This could allow a presenter to maintain information used in different presentations, making each element or slide a ``drop-in'' unit that can figure out how to present names, name forms, and related information without extensive retyping.
%
% \begin{tcolorbox}\centering
@@ -6038,7 +6608,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \AltFormatActive
% \begin{Quote}{\ForgetThis\Shak\break
-% \hbox{}\hfill ``Romeo and Juliet'', Act II, Scene II}
+% \hbox{}\hfill ``Romeo and Juliet'', Act II, Scene II (published 1597)}
% 'Tis but thy name that is my enemy;\dots\\
% What's in a name? That which we call a rose\\
% By any other name would smell as sweet;\\
@@ -6046,7 +6616,9 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Retain that dear perfection which he owes\\
% Without that title. Romeo, doff thy name,\\
% And for that name which is no part of thee\\
-% Take all myself.
+% Take all myself.\negmedskip^^A
+% \index{creatives, quotes of\noexpand\string|hyperpage}^^A
+% \index{Shakespearian rose, references to\noexpand\string|hyperpage}
% \end{Quote}
% \AltFormatInactive
%
@@ -6063,12 +6635,14 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \item Use \meta{Alternate} to create variant forms, yet retain consistent
% index entries. This is the default function of \textsf{nameauth} that
% readers already have seen.
+%
% \item Create several names. Index one or more occurrences of these names
% as ``standard'' variants that refer to each other via \textit{see also}
% references. In relation to the ``standard'' variants, any other variants
% would be indexed only with a \textit{see} reference. The macros
% \cmd{\JustIndex}, \cmd{\IndexName}, and \cmd{\IndexRef} play a big role
% here (Sections~\ref{sec:IndexPageno} and~\ref{sec:IndexRef}).
+%
% \item Use alternate formatting, \cmd{\noexpand}, and macros in the name
% arguments that expand differently under specific conditions in the
% formatting hooks, but expand consistently when indexed.
@@ -6080,9 +6654,9 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \subsubsection[Alternate Argument]{Variants and the Alternate Argument}
%
-% We begin with the first kind of variant names listed above. We decide that the canonical name to be used is \Tyson. We set up both the canonical name and a alternate name in the \texttt{nameauth} environment:
+% We begin with the first kind of variant names listed above. We decide that the canonical name to be used is \Tyson. We set up both the canonical name and an alternate name in the \texttt{nameauth} environment:
%
-% \begin{quote}\small
+% \begin{quote}
% \vspace{4ex}
% \PatInfo{\ShowPattern[Mike]{Tyson}!MN}
% \vspace{-4ex}
@@ -6091,19 +6665,26 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \< Tyson & Mike & Tyson & >
% \< Iron & Mike & Tyson & Iron Mike >
% \end{nameauth}
+%
+% \IndexRef{Iron Mike}{Tyson, Mike}
% \end{Verbatim}
% \end{quote}
%
-% When one takes advantage of \meta{Alternate}, all index page entries for the name variants occur under the canonical entry. The only additional step that one needs to include is a cross-reference: \cmd{\IndexRef\{Iron Mike\}\{Tyson, Mike\}}\IndexRef{Iron Mike}{Tyson, Mike} which will produce ``Iron Mike \textit{see} Tyson, Mike'' in the index.
+% Because \cmd{\Iron} uses the \meta{Alternate} column, all index page entries are the same as those for \cmd{\Tyson}, the canonical name. Adding the cross-reference via \cmd{\IndexRef} produces ``Iron Mike \textit{see} Tyson, Mike'' in the index.
%
-% \begin{quote}\small\medstretch
+% \begin{quote}
% \begin{tabular}{rlrl}\toprule
-% Macro & Output & Macro & Output\\
-% \rowcolor{nagrey}\cmd{\LIron} \qquad & \LIron &
-% \cmd{\LTyson[Iron Mike]} & \LTyson[Iron Mike]\\
-% \cmd{\Iron} & \Iron & \cmd{\Tyson} & \Tyson\\
-% \rowcolor{nagrey}\cmd{\SIron} & \SIron & \cmd{\STyson} &
-% \STyson\\\bottomrule
+% \rowcolor{nagrey}^^A
+% \bfseries Output & \bfseries Macro &
+% \bfseries Output & \bfseries Macro\\
+%
+% \LIron \qquad & \cmd{\LIron} &
+% \LTyson[Iron Mike] & \cmd{\LTyson[Iron Mike]}\\
+%
+% \rowcolor{nagrey}^^A
+% \Iron & \cmd{\Iron} & \Tyson & \cmd{\Tyson}\\
+%
+% \SIron & \cmd{\SIron} & \STyson & \cmd{\STyson}\\\bottomrule
% \end{tabular}
% \end{quote}
%
@@ -6111,7 +6692,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% We will engage this topic more, beginning with Section~\ref{sec:NameAncient}, Here we give a basic illustration of how one can start to manage these names. For instance:
%
-% \begin{quote}\small
+% \begin{quote}
% \vspace{4ex}
% \PatInfo{\ShowPattern{Elizabeth, I}!MN}
% \vspace{-4ex}
@@ -6120,10 +6701,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \< Eliz & & Elizabeth, I & >
% \end{nameauth}
%
-% \LEliz[I, ``Gloriana''] was known also as
-% \ForceFN\SEliz[``Good Queen Bess''].
% \IndexRef{Gloriana}{Elizabeth I}
% \IndexRef[Good Queen]{Bess}{Elizabeth I}
+%
+% \LEliz[I, ``Gloriana''] was known also as
+% \ForceFN\SEliz[``Good Queen Bess''].
% \end{Verbatim}
%
% \LEliz[I, ``Gloriana''] was known also as
@@ -6139,10 +6721,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
% endings, or vary in other ways. See Sections~\ref{sec:NameParticles},
% \ref{sec:NameMedieval}, \ref{sec:NameAncient}, \ref{sec:RealAltEx}ff.,
% and~\ref{sec:Romani}, for increasingly complex examples.
+%
% \item Names having separate index entries that are linked together with
% cross-references. Sections~\ref{sec:IndexPageno} and~\ref{sec:IndexRef}
% give many examples, which we will not repeat here because most of the
% work is done with indexing macros.
+%
% \item Names that the author wants to treat as different, yet which the
% \textsf{nameauth} internals might see as the same. One can use the
% naming macros, index tagging macros, and formatting macros to simulate
@@ -6152,7 +6736,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% The following method avoids using macros in name arguments and it is easier to set up. The trade-off is that, while macros in name arguments are harder to set up, they benefit from automation. Below we establish two names and a sort key for the main name under which both names are indexed:
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \begin{nameauth}
% \< DuBois & W.E.B. & Du~Bois & >
@@ -6164,9 +6748,10 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{itemize}
% \item Based on\PatInfo{\ShowPattern[W.E.B.]{Du~Bois}!MN\break
-% \ShowPattern[W.E.B.]{DuBois}!MN} historical research and what we can
-% tell from some name authorities, we decide that the the canonical
-% name will be: \cmd{\DuBois} \ForgetThis\DuBois.
+% \ShowPattern[W.E.B.]{DuBois}!MN} historical research and
+% some name authorities, we decide that the the canonical
+% name will be: \ForgetThis\DuBois\ \cmd{\DuBois}.
+%
% \item We use the non-breaking space (the tilde active character) because
% internally, \textsf{nameauth} removes all regular spaces from
% name patterns. Both \cmd{\Name[W.E.B.]\{Du Bois\}} and
@@ -6174,19 +6759,23 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \texttt{\ShowPattern[W.E.B.]{DuBois}} (Section~\ref{sec:NamePatterns}).
% The name pattern \texttt{\ShowPattern[W.E.B.]{Du~Bois}} differs from
% both of the other names.
+%
% \item Another reason to use the non-breaking space is that it prevents
% a line break between the particle \textit{Du} and the name \textit{Bois}.
+%
% \item The sort key that could be applicable to both names is
% \texttt{\{DuBois, William\}}. Had we used the sort key
% \texttt{\{Du Bois, William\}}, the name would be sorted before
% \texttt{dual}, which is not in order (Section~\ref{sec:IndexInitials}).
+%
% \item Instead of using \cmd{\SkipIndex}\cmd{\AltDuBois} many times, we
% create a cross-reference before the alternate name is used to prevent
% index page entries from being created for the alternate form:
-% \IndexRef[W.E.B.]{DuBois}{Du Bois, W.E.B.}\smallskip\\
+% \IndexRef[W.E.B.]{DuBois}{Du Bois, W.E.B.}\\[1ex]
% | \IndexRef[W.E.B.]{DuBois}{Du Bois, W.E.B.}|
-% \item We can keep full stop detection, modify name forms, and check
-% if the name straddles a page break in order to append
+%
+% \item With the following setup we keep full stop detection, modify name
+% forms, and check if the name straddles a page break in order to append
% |\JustIndex\DuBois| if needed:
%
% \begin{VerbatimOut}{\jobname.tmp}
@@ -6198,7 +6787,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Speaking of \SVarDuBois[William E.B.].
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\jobname.tmp}
%
% \input{\jobname.tmp}
@@ -6208,7 +6797,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% automatically handle the name spanning a page break, just like the
% regular naming macros. Yet it is rather inelegant.
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \newcommand\NewDuBois[2]{%
% \def\Test{#1}%
@@ -6223,7 +6812,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \NewDuBois{L}{}\\
% \NewDuBois{S}{William}
% \end{Verbatim}
-% \medskip
+%
% \newcommand\NewDuBois[2]{^^A
% \def\Test{#1}^^A
% \def\Long{L}^^A
@@ -6241,7 +6830,8 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{Quote}{\ForgetThis\DuBois\break
% \hbox{}\hfill \textit{Darkwater} (1920), C II: The Souls of White Folk}
-% The cause of war is preparation for war.\vspace{-1ex}
+% The cause of war is preparation for war.\negmedskip^^A
+% \index{civil rights leaders, quotes of\noexpand\string|hyperpage}
% \end{Quote}
%
% \newpage
@@ -6254,10 +6844,10 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \begin{VerbatimOut}{\jobname.tmp}
% \SubvertThis\CapThis\Name[e.e.]{cummings}'s motif of the
% goat-footed balloon man has underlying sexual themes that
-% nevertheless have a childish facade.
+% nevertheless present a childish facade.
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \vspace{4ex}
% \BothInfo{\ShowPattern[e.e.]{cummings}!MN}
% {\ShowIdxPageref*[e.e.]{cummings}}
@@ -6272,13 +6862,14 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Suppose, however, that we want both some kind of name formatting and still use capitalization. We can use the indexing macros discussed in Section~\ref{sec:GeneralIndex}:
%
% \begin{VerbatimOut}{\jobname.tmp}
-% \ExcludeName[e.e.]{cummings's}\IndexName[e.e.]{cummings}
-% \SubvertThis\CapThis\Name[e.e.]{cummings's} motif of the
-% goat-footed balloon man has underlying sexual themes that
-% nevertheless have a childish facade.
+% \ExcludeName[e.e.]{cummings's}
+% We consider the work of \ForgetThis\Name[e.e.]{cummings}.
+% \SubvertThis\CapThis\Name[e.e.]{cummings's}
+% motif of the goat-footed balloon man has underlying
+% sexual themes that nevertheless present a childish facade.
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \vspace{4.5ex}
% \PatInfo{\ShowPattern[e.e.]{cummings's}}
% \vspace{-4.5ex}
@@ -6289,7 +6880,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% In both examples above, we\Warn{} use \cmd{\SubvertThis} to force a subsequent use in order to prevent a first use that looks like ``\ForgetThis\CapThis\Name[e.e.]{cummings's}''. The macro \cmd{\CapThis} will capitalize the first letter in all name elements. Using \cmd{\ExcludeName} keeps one from having to use \cmd{\SkipIndex} every time.
%
-% Section~\ref{sec:AltFormat} explains how to use \cmd{\CapThis} with alternate formatting when using macros in name arguments. Section~\ref{sec:InflNames} describes how automation lends itself to grammatical inflections of names.\medskip
+% Section~\ref{sec:AltFormat} explains how to use \cmd{\CapThis} with alternate formatting when using macros in name arguments. Section~\ref{sec:InflNames} describes how automation lends itself to grammatical inflections of names.
%
% \subsubsection[Variants and Xrefs]{Variant Names and Index Cross-References}
% \label{sec:IdxVariants}
@@ -6297,73 +6888,91 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Here we show differences among variants and cross-references. We can choose to index variants under the canonical name or we can set up cross-references with variants. The order in which we do that is significant:
%
% \begin{enumerate}
-% \item We use\PatInfo{\ShowPattern[J.E.]{Carter, Jr.}!MN\hfill
+% \vspace{5ex}
+% \PatInfo{\ShowPattern[J.E.]{Carter, Jr.}!MN\hfill
% \textrm{(1--2)}\break
% \ShowPattern[Jimmy]{Carter}!PN\hfill \textrm{(3, 6)}\break
% \ShowPattern[Jimmy]{Carter}!MN\hfill \textrm{(4)}\break
% \ShowPattern[J.E.]{Carter, Jr.}!PN\hfill
% \textrm{(5)}}
-% the canonical name to create page references:\smallskip\\
-% \hbox{}\quad|\Name*[J.E.]{Carter, Jr.}|\dotfill
-% \Name*[J.E.]{Carter, Jr.}
-% \item Variants that use \meta{Alternate} in the text create page
-% entries under the canonical form, not the variant form:\smallskip\\
-% \hbox{}\quad|\DropAffix\Name*[J.E.]{Carter, Jr.}[Jimmy]|\dotfill
-% \DropAffix\Name*[J.E.]{Carter, Jr.}[Jimmy]\\
-% \hbox{}\quad|\ShowIdxPageref*[J.E.]{Carter, Jr.}[Jimmy]|\dotfill
+% \vspace{-5ex}
+% \item We use the canonical name to create page entries:
+% \item[] \Name*[J.E.]{Carter, Jr.}\dotfill |\Name*[J.E.]{Carter, Jr.}|
+%
+% \item Variants that use \meta{Alternate} in the text create page
+% entries under the canonical form, not the variant form:
+% \item[] \DropAffix\Name*[J.E.]{Carter, Jr.}[Jimmy]\dotfill^^A
+% |\DropAffix\Name*[J.E.]{Carter, Jr.}[Jimmy]|
+% \item[] |\ShowIdxPageref*[J.E.]{Carter, Jr.}[Jimmy]|\dotfill^^A
% \ShowIdxPageref*[J.E.]{Carter, Jr.}[Jimmy]
+%
% \item We must create a \textit{see} reference from an alternate form
% to a canonical form \emph{before} using the alternate form in a naming
-% macro, or it will be ignored and a warning will result:\smallskip\\
-% \hbox{}\quad|\IndexRef[Jimmy]{Carter}{Carter, J.E., Jr.}|
+% macro, or it will be ignored and a warning will result:
+% \item[] |\IndexRef[Jimmy]{Carter}{Carter, J.E., Jr.}|^^A
% \IndexRef[Jimmy]{Carter}{Carter, J.E., Jr.}
-% \item No page references will occur below because we made the
+%
+% \newpage
+%
+% \item No page entries will occur below because we made the
% \textit{see} reference first. Note how the alternate form is an
-% independent name:\smallskip\\
-% \hbox{}\quad|\Name[Jimmy]{Carter}|\dotfill \Name[Jimmy]{Carter}
+% independent name:
+% \item[] \Name[Jimmy]{Carter}\dotfill |\Name[Jimmy]{Carter}|
+%
% \item If we want to index the alternate name, we have to use the
-% canonical name instead of the alternate name:\smallskip\\
-% \hbox{}\quad|\IndexName[J.E.]{Carter, Jr.}|
+% canonical name instead of the alternate name:
+% \item[] |\IndexName[J.E.]{Carter, Jr.}|
+%
% \item If instead we wanted to make a \textit{see also} reference, we
% would use both the canonical name and the alternate name, then create
% the cross-reference \emph{after} all uses of the alternate name
-% (at the end of the document), e.g.:\smallskip\\
-% \hbox{}\quad|\SeeAlso\IndexRef[Jimmy]{Carter}{Carter, J.E., Jr.}|
+% (at the end of the document), e.g.:
+% \item[] |\SeeAlso\IndexRef[Jimmy]{Carter}{Carter, J.E., Jr.}|
% \end{enumerate}
%
-% Below,\Info{Multiple\break connections} two names are indexed with page numbers. They have \textit{see also} cross-references to each other. One of those names also has a \textit{see} reference to it:
+% \subsubsection*{\hfil Multiple Connections}
+%
+% Below, two names are indexed with page numbers. They have \textit{see also} cross-references to each other. One of those names also has a \textit{see} reference to it:
%
% \begin{enumerate}
-% \item We use\PatInfo{\ShowPattern{Maimonides}!MN \textrm{(1)}\break
+% \vspace{5ex}
+% \PatInfo{\ShowPattern{Maimonides}!MN \textrm{(1)}\break
% \ShowPattern{Moses, ben-Maimon}!PN \textrm{(2)}\break
% \ShowPattern{Moses, ben-Maimon}!MN \textrm{(3)}\break
% \ShowPattern{Rambam}!MN \textrm{(4)}\break
% \ShowPattern{Rambam}!PN \textrm{(5)}}
-% the canonical name to set up page references:\smallskip\\
-% \hbox{}\qquad|\Name{Maimonides}|\dotfill \Name{Maimonides}
+% \vspace{-5ex}
+% \item We use the canonical name to set up page entries:
+% \item[] \Name{Maimonides}\dotfill |\Name{Maimonides}|
+%
% \item \Name{Maimonides} has two other names, one more used than the
% other. We set up his least-used name as the \textit{see}
-% reference:\smallskip\\
-% \hbox{}\qquad|\IndexRef{Moses, ben-Maimon}{Maimonides}|
+% reference:
+% \item[] |\IndexRef{Moses, ben-Maimon}{Maimonides}|^^A
% \IndexRef{Moses, ben-Maimon}{Maimonides}
+%
% \item We have a main name with a page entry and a ``\textit{see}
-% reference'' to that name. No page references will occur below because
-% we made the xref first:\smallskip\\
-% \hbox{}\qquad|\Name{Moses, ben-Maimon}|\dotfill \Name{Moses, ben-Maimon}
+% reference'' to that name. No page entries will occur below because
+% we made the xref first:
+% \item[] \Name{Moses, ben-Maimon}\dotfill |\Name{Moses, ben-Maimon}|
+%
% \item Before creating \textit{see also} cross-references, we use the other
% alias so that all the page entries precede the
-% cross-references:\smallskip\\
-% \hbox{}\qquad|\Name{Rambam}|\dotfill \Name{Rambam}
-% \item All \textit{see also} references must come after all page references.
+% cross-references:
+% \item[] \Name{Rambam}\dotfill |\Name{Rambam}|
+%
+% \item All \textit{see also} references must come after all page entries.
% For example, one could put both of these macros at the end of the
-% document:\smallskip\\
-% \hbox{}\qquad|\SeeAlso\IndexRef{Maimonides}{Rambam}|
-% \SeeAlso\IndexRef{Maimonides}{Rambam}\\
-% \hbox{}\qquad|\SeeAlso\IndexRef{Rambam}{Maimonides}|
+% document:
+% \item[] |\SeeAlso\IndexRef{Maimonides}{Rambam}|\\
+% \SeeAlso\IndexRef{Maimonides}{Rambam}^^A
+% |\SeeAlso\IndexRef{Rambam}{Maimonides}|^^A
% \SeeAlso\IndexRef{Rambam}{Maimonides}
% \end{enumerate}
%
-% There\Info{Multiple targets} is a case where one cross-reference can point to multiple targets, such as demonstrated in the example below:
+% \subsubsection*{\hfil Multiple Targets}
+%
+% There is a case where one cross-reference can point to multiple targets, such as demonstrated in the example below:
%
% \begin{VerbatimOut}{\jobname.tmp}
% \PretagName{\textit{Snellius}}{Snellius}
@@ -6374,7 +6983,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% by the Latin moniker \Name{\textit{Snellius}}.
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \vspace{5ex}
% \PatInfo{\ShowPattern{\textit{Snellius}}!PRE\break
% \ShowPattern{\textit{Snellius}}!PN\break
@@ -6388,16 +6997,9 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% One must plan the location of xrefs or use \cmd{\IncludeName*}. Above, we have no page entry for |\Name{\textit{Snellius}}| because \cmd{\IndexRef} comes first.
%
-% \begin{Quote}{\ForgetThis\Name{Maimonides},
-% \textit{Guide for the Perplexed} (1190)}
-% For a truth, once established by proof, does neither gain force nor certainty by the consent of all scholars, nor lose by the general dissent.
-% \end{Quote}
-%
-% \newpage
-%
% \subsection{Using a Name Authority}
%
-% Below are a couple of names from a name authority created for a translation of \textit{De Diaconis et Diaconissis Veteris Ecclesiae Liber Commentarius} by \Name[Caspar]{Ziegler}, of which the present author was the editor.\footnote{The book, \textit{The Diaconate of the Ancient and Medieval Church} was typeset using \LaTeX, but had to be converted to a different format.}
+% Below are a couple of names from a name authority created for a translation of \textit{De Diaconis et Diaconissis Veteris Ecclesiae Liber Commentarius} by \Name[Caspar]{Ziegler}, of which the present author was the editor.\footnote{The book, \textit{The Diaconate of the Ancient and Medieval Church} had been typeset using \LaTeX, but then had to be converted to a different format.}
%
% Constructing that name authority of over 500 names was a challenge. The deceased translator left names in abbreviated Latin. He left many place-names in Latin and incorrectly translated some others. To get valid names that one can research, the present author recommends:
%
@@ -6419,13 +7021,13 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \item If Latin names are only cross-references, use
% \cmd{\IndexRef}\meta{name args} to generate cross-references
% before referring to any names (Section~\ref{sec:IndexRef}).
-% \item If Latin names have page references, then place
+% \item If Latin names have page entries, then place
% \cmd{\SeeAlso}\cmd{\IndexRef}\meta{name args} as needed
% at the end of the document, before \cmd{\printindex}.
% \item Use \cmd{\CapThis} (Section~\ref{sec:NameParticles}).
% \end{enumerate*}
%
-% \begin{quote}\small
+% \begin{quote}
% \vspace{3.5ex}
% \BothInfo{\ShowPattern[Jacques]{De~Pamele}!MN\break
% \ShowPattern[Jacobus]{Pamelius}!MN\break
@@ -6448,7 +7050,6 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \Name[Ioannes]{Andreae}
% \end{Verbatim}
% \end{quote}
-% \negmedskip
%
% \IndexRef[Jacobus]{Pamelius}{De~Pamele, Jacques}
% \IndexRef[Ioannes]{Andreae}{d'Andrea, Giovanni}
@@ -6463,7 +7064,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \Name[Ioannes]{Andreae}
% \end{itemize}
%
-% \CapThis\Name[Giovanni]{d'Andrea} |\CapThis\Name[Giovanni]{d'Andrea}| can be used at the beginning of a sentence. |\Name[Jacques]{De~Pamele}| gives \Name[Jacques]{De~Pamele}.\negmedskip
+% \CapThis\Name[Giovanni]{d'Andrea} |\CapThis\Name[Giovanni]{d'Andrea}| can be used at the beginning of a sentence. |\Name[Jacques]{De~Pamele}| gives \Name[Jacques]{De~Pamele}.
%
% \ReturnLink
%
@@ -6478,7 +7079,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% We thus merge the two concepts of syntax and formatting to create more complex examples that are able to do more complicated things with names. We thus can meet a few specific, real-world cultural expectations and scholarly conventions.
%
-% Before we delve into this section, below we see a general scheme of how the core name engine processes a name:\bigskip
+% Before we delve into this section, below we see a general scheme of how the core name engine processes a name:
%
% \begin{tcolorbox}[colback=white,
% adjusted title={\bfseries Naming Macro Layer}]
@@ -6542,10 +7143,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage{makeidx}
% \usepackage{nameauth}
+%
% \makeindex
%
% % First save main- and front-matter hooks. Then change
@@ -6572,7 +7174,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \SubvertThis\Name*{Vlad, {\c T}epe{\c s}}
% (\Name*{Vlad, {\c T}epe{\c s}}[the Impaler])
% after his death, was the son of \Name{Vlad, II}[II Dracul],
-% a member of the Order of the Dragon. Later references to
+% a member of the Order of the Dragon. Later instances of
% ``\Name*{Vlad, III}'' and ``\Name{Vlad, III}'' appear thus.
%
% The new format (main matter):\NamesActive
@@ -6582,7 +7184,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \SubvertThis\Name*{Vlad, {\c T}epe{\c s}}
% (\Name*{Vlad, {\c T}epe{\c s}}[the Impaler])
% after his death, was the son of \Name{Vlad, II}[II Dracul],
-% a member of the Order of the Dragon. Later references to
+% a member of the Order of the Dragon. Later instances of
% ``\Name*{Vlad, III}'' and ``\Name{Vlad, III}'' appear thus.
%
% \let\NamesFormat\OldFormat
@@ -6602,7 +7204,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{document}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\NameauthTestFile}
%
% \let\OldFormat\NamesFormat
@@ -6620,7 +7222,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \SubvertThis\Name*{Vlad, {\c T}epe{\c s}}
% (\Name*{Vlad, {\c T}epe{\c s}}[the Impaler])
% after his death, was the son of \Name{Vlad, II}[II Dracul],
-% a member of the Order of the Dragon. Later references to
+% a member of the Order of the Dragon. Later instances of
% ``\Name*{Vlad, III}'' and ``\Name{Vlad, III}'' appear thus.
%
% The new format (main matter):\NamesActive
@@ -6630,7 +7232,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \SubvertThis\Name*{Vlad, {\c T}epe{\c s}}
% (\Name*{Vlad, {\c T}epe{\c s}}[the Impaler])
% after his death, was the son of \Name{Vlad, II}[II Dracul],
-% a member of the Order of the Dragon. Later references to
+% a member of the Order of the Dragon. Later instances of
% ``\Name*{Vlad, III}'' and ``\Name{Vlad, III}'' appear thus.
%
% \let\NamesFormat\OldFormat
@@ -6649,10 +7251,10 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% The reason why we redefine \cmd{\NamesFormat} is because it is more common to add extra information with the first mention of a name. Yet one similarly could redefine \cmd{\MainNameHook} or \cmd{\FrontNameHook} for subsequent uses of names.
%
-% \subsection{Data tags in Hooks}
+% \subsection{Name Tags in Hooks}
% \label{sec:DataTagHooks}
%
-% By recalling name data tags (Section~\ref{sec:DataTags}) in formatting hooks, one can automate how they either appear with a name or not. This package is all about automation and the associated trade-offs.
+% By recalling name tags (Section~\ref{sec:DataTags}) in formatting hooks, one can automate how they either appear with a name or not. This package is all about automation and the associated trade-offs.
%
% Formatting hooks are called within a local scope. They take zero or one argument (Section~\ref{sec:Formatting}). When they take one argument, they have the option to print that argument, add information to the argument, or discard the argument. Yet macros used in formatting hooks can present challenges that we show how to manage:
%
@@ -6672,7 +7274,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \DescribeMacro{\@nameauth@toksc}
% Historically, these registers have been necessary for names that contain accents and diacritics. In Section~\ref{sec:AKA}, these registers correspond to the \emph{last} three name arguments. They can be used, if needed, in formatting hooks by \textsf{nameauth} macros that take name arguments.
%
-% Their chief use, historically speaking, was to facilitate retrieving name data tags via \cmd{\NameQueryInfo}. That use has been superseded by \cmd{\NameauthPattern}, which is described in Section~\ref{sec:NamePatterns}.
+% Their chief use, historically speaking, was to facilitate retrieving name tags via \cmd{\NameQueryInfo}. That use has been superseded by \cmd{\NameauthPattern}, which is described in Section~\ref{sec:NamePatterns}.
%
% \newpage
%
@@ -6683,7 +7285,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \subsubsection*{\hfil Recommended Template}
%
-% The hook below prints the name data tag with the first use of a name in the main-matter system, if such a tag exists. It is simple, it avoids the \cmd{\NameQueryInfo} problem, and it is easy to debug.
+% The hook below prints the name tag with the first use of a name in the main-matter system, if such a tag exists. It is simple, it avoids the \cmd{\NameQueryInfo} problem, and it is easy to debug.
%
% \begin{quote}
% \begin{Verbatim}
@@ -6699,7 +7301,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \subsubsection*{\hfil Older Templates}
%
-% Two other hook designs were used in the past to display name data tags. They are included here only for the sake of illustration. After showing the templates, we test all three of them to show why we recommend the template above.
+% Two other hook designs were used in the past to display name tags. They are included here only for the sake of illustration. After showing the templates, we test all three of them to show why we recommend the template above.
%
% We use \(\epsilon\)-\TeX\ features next. See \href{https://tex.stackexchange.com/questions/140785/how-is-unexpanded-defined}{\bfseries this page} on the use of \cmd{\unexpanded} and \href{https://tex.stackexchange.com/questions/61223/explanations-about-begingroup-edef-x-endgroup}{\bfseries another page} pertinent to the structure of this hook. We print the name, expand the arguments of \cmd{\NameQueryInfo}, and use those arguments to print the tag.
%
@@ -6764,7 +7366,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{quote}
% The macro \cmd{\testname} contains the first part of our test output.
-% The name data tag contains the second part. We will use both name
+% The name tag contains the second part. We will use both name
% interfaces with all three templates.
%
% \VerbatimInput[gobble=0]{\jobname.tmp}
@@ -6884,7 +7486,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \cmd{\Dem}\dotfill \Dem
% \end{Block}
%
-% As discussed in Section~\ref{sec:Complexity}, simple examples do not lend themselves to automation. Below we trade automation, where we do not need to add information manually to the \meta{Alternate} argument, for a complex initial setup that uses name data tags and the recommended template:
+% As discussed in Section~\ref{sec:Complexity}, simple examples do not lend themselves to automation. Below we trade automation, where we do not need to add information manually to the \meta{Alternate} argument, for a complex initial setup that uses name tags and the recommended template:
%
% \begin{quote}
% \vspace{3ex}
@@ -6927,16 +7529,16 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \TagName{Demetrius, I}{ Soter, king\string|hyperpage}
% \endgroup
%
-% The first use of a name, or one after the use of \cmd{\ForgetName} or \cmd{\ForgetThis}, shows the most information. A long reference to an extant name shows a little less info, and a short reference shows the least. Every difference in name form corresponds with a macro in a known state.
+% The first use of a name, or one after the use of \cmd{\ForgetName} or \cmd{\ForgetThis}, shows the most information. A long instance of an extant name shows a little less info, and a short instance shows the least. Every difference in name form corresponds with a macro in a known state.
% \endgroup^^A Local format hook redefinition
%
% \subsubsection[Life Dates]{Application: Life Dates}
%
% \begingroup^^A Local format hook redefinition
%
-% History texts tend to use life dates, regnal dates, and dates when certain figures flourished. As we used more information with ancient names via name data tags, we can do something similar here.
+% History texts tend to use life dates, regnal dates, and dates when certain figures flourished. As we used more information with ancient names via name tags, we can do something similar here.
%
-% First we must create any data tags that might be used. Whether it is in the preamble or in the body text, the main point is that the tag can only be used if it exists. The tags have a leading space because they are printed conditionally.
+% First we must create any name tags that might be used. Whether it is in the preamble or in the body text, the main point is that the tag can only be used if it exists. The tags have a leading space because they are printed conditionally.
%
% We also define a cross-reference ``Atat\"urk,'' yet we use naming macros with that name, printing formatted names in the text but making no index page entries. We add a Boolean flag to the formatting hook that lets us suppress dates in first uses as needed, while normally displaying dates in first uses by default. Below we suppress the usual formatting of this manual.
%
@@ -6945,13 +7547,14 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage{makeidx}
% \usepackage{nameauth}
+%
% \makeindex
%
-% % Add data tags to names.
+% % Add name tags to names.
% \NameAddInfo[George]{Washington}{ (1732--99)}
% \NameAddInfo[Mustafa]{Kemal}{ (1881--1938)}
% \NameAddInfo{Atat\"urk}{ (in 1934, a special surname)}
@@ -6960,11 +7563,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
% % has no page entries in the index.
% \IndexRef{Atat\"urk}{Kemal, Mustafa}
%
-% % Manually suppress data tag in ``first'' reference
+% % Manually suppress name tag in ``first'' instance
% \newif\ifNoTag
%
% % Redesign formatting hook to usually print a tag
-% % only in ``first'' reference. On exit, It resets
+% % only in ``first'' instance. On exit, It resets
% % the flag that suppresses tags, making that flag
% % work only once per name use.
%
@@ -6985,7 +7588,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% president from 1789 to 1797. \Name[George]{Washington} was the only
% president whose term in office was completely in the eighteenth
% century. If we need to trigger the first use hook at some point,
-% we can suppress dates and get an automatic long reference via:
+% we can suppress dates and get an automatic long instance via:
% \NoTagtrue\ForgetThis\Name[George]{Washington}. Or we can trigger
% the first-use hook in a subsequent name use and still have dates:
% \ForceName\Name[George]{Washington}.
@@ -6994,7 +7597,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% references. For example, \Name[Mustafa]{Kemal} was granted
% the name \Name{Atat\"urk}. We mention \Name[Mustafa]{Kemal}
% and \Name{Atat\"urk} again. Likewise, we can trigger a
-% first use, but with no data tag tag:
+% first use, but with no name tag tag:
% \NoTagtrue\ForgetThis\Name{Atat\"urk}.
%
% \printindex
@@ -7017,35 +7620,35 @@ and version 1.3 or later is part of all distributions of LaTeX version
% }
% \renewcommand*\MainNameHook{}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0,lastline=34]{\NameauthTestFile}
% \end{quote}
%
% Up to this point it seems as if there has been a lot of setup. The payoff, however, comes in the main body text where the use of the naming macros does not look much different than normal.
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0,firstline=35,lastline=45]{\NameauthTestFile}
%
% \ForgetThis\Name[George]{Washington} held office as the first US
% president from 1789 to 1797. \Name[George]{Washington} was the only
% president whose term in office was completely in the eighteenth
% century. If we need to trigger the first use hook at some point,
-% we can suppress dates and get an automatic long reference via:
+% we can suppress dates and get an automatic long instance via:
% \NoTagtrue\ForgetThis\Name[George]{Washington}. Or we can trigger
% the first-use hook in a subsequent name use and still have dates:
% \ForceName\Name[George]{Washington}.
% \end{quote}
%
-% Since we already set up a cross-reference with \cmd{\IndexRef}, we can use just the the naming macros with ``Atat\"urk'' and get the desired formatting without any page references in the index:
+% Since we already set up a cross-reference with \cmd{\IndexRef}, we can use just the the naming macros with ``Atat\"urk'' and get the desired formatting without any page entries in the index:
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0,firstline=46]{\NameauthTestFile}
%
% We can add name info tags to names used only as cross-
% references. For example, \Name[Mustafa]{Kemal} was granted
% the name \Name{Atat\"urk}. We mention \Name[Mustafa]{Kemal}
% and \Name{Atat\"urk} again. Likewise, we can trigger a
-% first use, but with no data tag tag:
+% first use, but with no name tag tag:
% \NoTagtrue\ForgetThis\Name{Atat\"urk}.
% \end{quote}
%
@@ -7060,7 +7663,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% The first thing we need to know is how to enable and disable alternate formatting:
%
-% \begin{center}\small\medstretch
+% \begin{center}
% \begin{tabular}{lcc}\toprule
% Macro & Enabled & Activated\\\midrule
% \cmd{\AltFormatActive} & \YES & \YES\\
@@ -7081,17 +7684,17 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{itemize}
%
% \DescribeMacro{\AltFormatActive}
-% Both the \texttt{altformat} option and \cmd{\AltFormatActive} enable and activate alternate formatting. Both cause \cmd{\CapThis} to work via \cmd{\AltCaps} instead of the normal way. \cmd{\AltFormatActive} countermands \cmd{\AltFormatActive*}.\medskip
+% Both the \texttt{altformat} option and \cmd{\AltFormatActive} enable and activate alternate formatting. Both cause \cmd{\CapThis} to work via \cmd{\AltCaps} instead of the normal way. \cmd{\AltFormatActive} countermands \cmd{\AltFormatActive*}.
%
% \DescribeMacro{\AltFormatActive*}
-% The starred form \cmd{\AltFormatActive*} enables alternate formatting but deactivates the built-in alternate formatting macros, preventing them from changing their arguments. It countermands both the \texttt{altformat} option and \cmd{\AltFormatActive}. It causes \cmd{\CapThis} only to work via \cmd{\AltCaps}.\medskip
+% The starred form \cmd{\AltFormatActive*} enables alternate formatting but deactivates the built-in alternate formatting macros, preventing them from changing their arguments. It countermands both the \texttt{altformat} option and \cmd{\AltFormatActive}. It causes \cmd{\CapThis} only to work via \cmd{\AltCaps}.
%
% \newpage
%
% \DescribeMacro{\AltFormatInactive}
-% This macro both disables and deactivates alternate formatting. This reverts globally to standard formatting and the normal function of \cmd{\CapThis}. \medskip
+% This macro both disables and deactivates alternate formatting. This reverts globally to standard formatting and the normal function of \cmd{\CapThis}.
%
-% Most \textsf{nameauth}\Info{Global scope} macros that turn things on and off have a local scope unless one uses \cmd{\global}. These alternate formatting macros have global scope to eliminate implied scope becoming a point of failure, creating spurious index entries.
+% Most \textsf{nameauth} macros that turn things on and off have a local scope unless one uses \cmd{\global}. These alternate formatting macros have global scope to eliminate implied scope becoming a point of failure, creating spurious index entries.\medskip
%
% \begin{InfoBox}
% The macros above \emph{always} make global changes. Using names designed for alternate formatting in a document section that uses regular formatting will produce an inconsistent appearance in the text and spurious index entries.
@@ -7099,16 +7702,17 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \negmedskip
%
% \subsubsection{Using \texttt{\textbackslash noexpand}}
+% \label{sec:Noexpand}
%
% As we get into advanced formatting, we will encounter \cmd{\noexpand} with greater frequency. Even before we consider that discussion, we need to touch on a few ways that macros can break \textsf{nameauth} when used in name arguments.
%
% In order to handle the inherent ambiguity of name forms, macros that take name arguments trade a certain ``fragility'' for the ability to be as close to natural language as possible. In versions of \textsf{nameauth} before 3.5, enclosing an \meta{SNN},\meta{Affix} argument within a robust macro like \cmd{\textsc} would halt \LaTeX\ with errors. That seems to be no longer the case. Nevertheless, depending on the macros used, it may be helpful to apply macros separately to \meta{SNN} and \meta{Affix} like this:
%
% \begin{quote}
-% |\Name{\noexpand\MyMacro{|\meta{SNN}|},\noexpand\MyMacro{|\meta{Affix}|}}|.
+% |\Name{\noexpand\MyMacro{|\meta{SNN}|},\noexpand\MyMacro{|\meta{Affix}|}}|
% \end{quote}
%
-% Using \cmd{\CapThis} with a name whose leading element is a macro may fail, depending on the particular macro. Use alternate formatting to have \cmd{\CapThis} activate the alternate capitalization mechanism.
+% Using \cmd{\CapThis} with a name whose leading element is a macro may fail, depending on the particular macro. Use alternate formatting to have \cmd{\CapThis} activate the alternate capitalization mechanism.\medskip
%
% \NameArgWarning
%
@@ -7133,7 +7737,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \subsubsection[Capitalization]{Alternate Capitalization}
% \AltFormatActive
%
-% Above we referred to potential problems using \cmd{\CapThis}. When alternate formatting is enabled, \cmd{\CapThis} changes its mechanism to avoid such problems.\medskip
+% Above we referred to potential problems using \cmd{\CapThis}. When alternate formatting is enabled, \cmd{\CapThis} changes its mechanism to avoid such problems.
%
% \DescribeMacro{\AltCaps}
% Using the aid of the helper macro \cmd{\AltCaps}, \cmd{\CapThis} will cause \cmd{\AltCaps} to capitalize its argument only in a formatting hook. \cmd{\AltCaps} is enabled whenever alternate formatting is enabled, but it works independently of both \cmd{\AltOn} and \cmd{\AltOff}, which are covered in the next section. We describe the syntax:
@@ -7152,10 +7756,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \Name*[\noexpand\AltCaps{a}]{Name}.
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\jobname.tmp}
%
-% \input{\jobname.tmp}
+% \input{\jobname.tmp}^^A
+% \index{Shakespearian rose, references to\noexpand\string|hyperpage}
% \end{quote}
%
% \cmd{\AltCaps} does not partition its argument, so it will not have the same issues as the normal use of \cmd{\CapThis}, adding to stability and robustness at the expense of doing a little more work.
@@ -7189,7 +7794,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \Name{\noexpand\textUC{Kanade}, Takeo}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\jobname.tmp}
%
% \input{\jobname.tmp}
@@ -7197,13 +7802,13 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% Font substitutions might occur with these macros, depending on the font used. \cmd{\CapName}, \cmd{\RevComma}, and \cmd{\RevName} can modify the names, but only in the text.
%
-% The alternate formatting macros shown above become more interesting when we automate how they turn on and off. Using \cmd{\noexpand} is necessary here. Both macros below are used in formatting hooks. They hide some complexity from authors.\medskip
+% The alternate formatting macros shown above become more interesting when we automate how they turn on and off. Using \cmd{\noexpand} is necessary here. Both macros below are used in formatting hooks. They hide some complexity from authors.
%
-% Vaguely reminiscent of depressing\DescribeMacro{\AltOff}\ an automobile's manual clutch lever, \cmd{\AltOff} deactivates \cmd{\textSC}, \cmd{\textBF}, \cmd{\textIT}, and \cmd{\textUC} only in a formatting hook. The alternate formatting mechanism is still ``running'', but it is not transferring ``power'' to the formatting macros. They display their arguments unmodified.\medskip
+% Vaguely reminiscent of depressing\DescribeMacro{\AltOff}\ an automobile's manual clutch lever, \cmd{\AltOff} deactivates \cmd{\textSC}, \cmd{\textBF}, \cmd{\textIT}, and \cmd{\textUC} only in a formatting hook. The alternate formatting mechanism is still ``running'', but it is not transferring ``power'' to the formatting macros. They display their arguments unmodified.
%
-% Likewise, \cmd{\AltOn}\DescribeMacro{\AltOn}\ activates \cmd{\textSC}, \cmd{\textBF}, \cmd{\textIT}, and \cmd{\textUC} only in a formatting hook, as if one let out the clutch pedal, causing ``power'' to transfer through the gearbox to the formatting macros. They now modify their arguments.\medskip
+% Likewise, \cmd{\AltOn}\DescribeMacro{\AltOn}\ activates \cmd{\textSC}, \cmd{\textBF}, \cmd{\textIT}, and \cmd{\textUC} only in a formatting hook, as if one let out the clutch pedal, causing ``power'' to transfer through the gearbox to the formatting macros. They now modify their arguments.
%
-% If one uses the \texttt{altformat} option or \cmd{\AltFormatActive}, the formatting ``power'' goes to the formatting macros by default in order to have formatted names in the index. Otherwise, the normal formatting regime isolates formatting in the text, as the Anglosphere is wont to do.
+% If one uses the \texttt{altformat} option or \cmd{\AltFormatActive}, the formatting ``power'' goes to the formatting macros by default in order to have formatted names in the index. Otherwise, the normal formatting regime isolates formatting in the text, as the Anglosphere seems wont to do.
%
% We use \cmd{\noexpand} as discussed and add a formatting hook to get changes in the text, not in the index. We also suspend this manual's formatting conventions:
%
@@ -7212,10 +7817,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage{makeidx}
% \usepackage[altformat]{nameauth}
+%
% \makeindex
%
% \PretagName[Konrad]{\noexpand\textSC{Zuse}}{Zuse, Konrad}
@@ -7241,7 +7847,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{document}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\NameauthTestFile}
%
% \renewcommand*\NamesFormat{}
@@ -7273,10 +7879,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage{makeidx}
% \usepackage[altformat]{nameauth}
+%
% \makeindex
%
% \begin{nameauth}
@@ -7308,7 +7915,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{VerbatimOut}
%
% \renewcommand*\MainNameHook{\sffamily\AltOff}
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\NameauthTestFile}
%
% \ForgetThis\Luth\ was a leading figure in the Protestant
@@ -7326,9 +7933,9 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Comparing the example above to Section~\ref{sec:NameParticles} shows us some differences. Medieval Italian, similar to modern German, keeps the particle(s) with the forename(s). Modern Italian groups particles and surnames together. Thus, we must use here:
%
% \begin{itemize}
-% \item \parbox{0.3\textwidth}{\LCath[\noexpand\AltCaps{d}e']}
+% \item \parbox{0.2\textwidth}{\LCath[\noexpand\AltCaps{d}e']}
% |\LCath[\noexpand\AltCaps{d}e']|
-% \item \parbox{0.3\textwidth}{\CapThis\LCath[\noexpand\AltCaps{d}e']}
+% \item \parbox{0.2\textwidth}{\CapThis\LCath[\noexpand\AltCaps{d}e']}
% |\CapThis\LCath[\noexpand\AltCaps{d}e']|
% \end{itemize}
% \endgroup^^A Local format hook redefinition
@@ -7350,10 +7957,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage{makeidx}
% \usepackage[altformat]{nameauth}
+%
% \makeindex
%
% \newif\ifGenitive
@@ -7379,16 +7987,16 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \begin{document}
%
% Consider \Genitivetrue\Jeff\ legacy as the author of the
-% colonies' Declaration of Independence and his impact as third
-% president of the United States. \Jeff\ was a complex historical
-% figure whose actions defy a consistent moral compass both in
-% public policy and in personal affairs.
+% colonies' \textit{Declaration of Independence} and his impact
+% as third president of the United States. \Jeff\ was a complex
+% historical figure whose actions defy a consistent moral compass
+% both in public policy and in personal affairs.
%
% \printindex
% \end{document}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\NameauthTestFile}
%
% \renewcommand*\NamesFormat[1]
@@ -7397,10 +8005,10 @@ and version 1.3 or later is part of all distributions of LaTeX version
% {\ifGenitive\DoGenitivetrue\fi\AltOff#1\global\Genitivefalse}
%
% Consider \Genitivetrue\Jeff\ legacy as the author of the
-% colonies' Declaration of Independence and his impact as third
-% president of the United States. \Jeff\ was a complex historical
-% figure whose actions defy a consistent moral compass both in
-% public policy and in personal affairs.
+% colonies' \textit{Declaration of Independence} and his impact
+% as third president of the United States. \Jeff\ was a complex
+% historical figure whose actions defy a consistent moral compass
+% both in public policy and in personal affairs.
% \end{quote}
% \endgroup^^A Local format hook redefinition
%
@@ -7411,12 +8019,16 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{itemize}
% \item Sort all names that use alternate formatting.
+%
% \item Match index entry forms to article head-words. Name variants
% are cross-referenced to the name form in the head-word.
+%
% \item Ensure that the first appearance of a name displays only the
% active alternate formatting. Any additional formatting comes from
-% the macro that formats entries.
-% \item Deactivate alternate formatting in subsequent name references.
+% the macro that formats entries.
+%
+% \item Deactivate alternate formatting in subsequent name instances.
+%
% \item Since some \LaTeX\ fonts do not combine small caps and boldface,
% we instead use slanted text to set the head-words off from the articles.
% That font switch is done in the macro that formats the articles
@@ -7428,10 +8040,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage{makeidx}
% \usepackage[altformat]{nameauth}
+%
% \makeindex
%
% % Sort any names with macros in the arguments.
@@ -7494,7 +8107,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{document}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\NameauthTestFile}
%
% \IndexRef[Heinrich Wilhelm]{\noexpand\textSC{R\"uhmann}}
@@ -7540,8 +8153,10 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \AltFormatInactive
%
% \begin{Quote}{\Name[L.M.]{Montgomery},
-% \textit{Anne of Green Gables}, C 5}
-% I read in a book once that a rose by any other name would smell as sweet, but I've never been able to believe it. I don't believe a rose \textsc{would} be as nice if it was called a thistle or a skunk cabbage.
+% \textit{Anne of Green Gables}, C 5 (1908)}
+% I read in a book once that a rose by any other name would smell as sweet, but I've never been able to believe it. I don't believe a rose \textsc{would} be as nice if it was called a thistle or a skunk cabbage.^^A
+% \index{creatives, quotes of\noexpand\string|hyperpage}^^A
+% \index{Shakespearian rose, references to\noexpand\string|hyperpage}
% \end{Quote}
%
% \newpage
@@ -7559,7 +8174,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% surname and the rest forenames:\footnote{Philip J. Adler, \textit{World
% Civilizations}, 3rd ed. (Belmont, Calif.: Thomson/Wadsworth, 2003).}
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \TagName[Julius]{Caesar}{, imperator} % for index
% \Name[Julius]{Caesar}[Gaius Julius]\\
@@ -7578,7 +8193,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Historian Looks at Christmas, Easter, and the Early Church}, revised ed.
% (San Francisco: Harper, 1991).}
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \ForgetThis\Name[Lucius]{Sergius Paulus}\\
% \Name[Lucius]{Sergius Paulus}
@@ -7591,26 +8206,28 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \item Treat as ancient names, especially those with no \textit{praenomen}:
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \ForgetThis\Name{Pontius, Pilate}[Pilatus]\\
% \Name*{Pontius, Pilate}\\
-% \Name{Pontius, Pilate}\\
+% \ForceFN\FName{Pontius, Pilate}
% \end{Verbatim}
% \ForgetThis\Name{Pontius, Pilate}[Pilatus]^^A
% \PatInfo{\ShowPattern{Pontius, Pilate}[Pilatus]!MN}\\
% \Name*{Pontius, Pilate}\\
-% \Name{Pontius, Pilate}\\[1ex]
-% Index: \ShowIdxPageref*{Pontius, Pilate}^^A
+% \ForceFN\FName{Pontius, Pilate}\\[1ex]
+% Index: \ShowIdxPageref*{Pontius, Pilate}
% \end{quote}
% \end{itemize}
%
% There is also a method where Roman names are indexed as mononyms using the most recognizable of their names.\footnote{Justo L. González, \textit{The Story of Christianity}, 2 vols. (San Francisco: Harper, 1984).} That method is ill-suited for \textsf{nameauth}.
%
% \begin{Quote}{\ForgetThis\Name[Julius]{Caesar},
-% \textit{De bello gallico} 3.16.6}
-% Fere libenter homines, id quod volunt, credunt.\\
-% (In general, people willingly believe what they want [to believe].)
+% \textit{\la{De bello gallico}} 3.16.6 (58–49 \textsc{bc})}
+% \la{Fere libenter homines, id quod volunt, credunt.}
+%
+% (In general, people willingly believe what they want [to believe].)^^A
+% \index{Romans, quotes of\noexpand\string|hyperpage}
% \end{Quote}
%
% \newpage
@@ -7632,8 +8249,8 @@ and version 1.3 or later is part of all distributions of LaTeX version
% (\textit{agnomina})
% \end{itemize}
%
-% In ancient Rome, the family name (\textit{nomen}) was important, helping also to structure society.\footnote{\url{https://en.wikipedia.org/wiki/Patrician_(ancient_Rome)}}
-% The exact roles of names changed over time.\footnote{\url{https://en.wikipedia.org/wiki/Roman_naming_conventions}}
+% In ancient Rome, the family name (\textit{nomen}) was important, helping also to structure society. \href{https://en.wikipedia.org/wiki/Patrician_(ancient_Rome)}{This page} offers a good overview.
+% The exact roles of names changed over time. \href{https://en.wikipedia.org/wiki/Roman_naming_conventions}{Another page} gives an overview of Roman naming conventions.
% A very \href{https://www.youtube.com/watch?v=RMLb1jVl_Uo}{helpful video} can be found on the YouTube channel PolýMATHY by \Name[Luke]{Ranieri}.
%
% Some reference works treat the \textit{cognomen} as if it were a Western surname.\footnote{See Geiss, \textit{Geschichte Griffbereit}; Kinder and Hilgemann, \textit{dtv-Atlas zur Weltgeschichte}, 2 vols., 29th printing (1964; Munich: Deutscher Taschenbuch Verlag, 1993). See also \href{https://books.infotoday.com/books/Indexing-names.shtml}{\bfseries this page}.}
@@ -7669,16 +8286,17 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \item If the macros in the name arguments will be ``segmented'' in some
% way, as \cmd{\CapThis} does, then use alternate formatting
% (Sections~\ref{sec:AltFormat}).
+%
% \item When using Boolean flags (\texttt{\textbackslash if}\meta{flag}) in
% the macros that represent name elements, ensure that those flags only change
% their value within the local scope of the name formatting hooks
% (Section~\ref{sec:Formatting}).
+%
% \item Two Boolean flags are needed for each automated variant in the name. One
% flag reflects the global state and the name form in the index. The other
% reflects the local state of the formatting hooks.
% \end{itemize}
%
-% \negmedskip
% \NameArgWarning
%
% Since we have four name components, we need at most eight Boolean flags. Our two examples each use six flags, with four in common and one separate pair each. In the preamble we define all macros and conditionals used in naming macro arguments. Instead of \texttt{\textbackslash ifNoNomen} we use \texttt{\textbackslash ifNoGens} for readability.
@@ -7692,10 +8310,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage{makeidx}
% \usepackage[altformat]{nameauth}
+%
% \makeindex
%
% % Global Boolean flags need to be defined only once.
@@ -7747,7 +8366,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \< TGrac & \noexpand\TSemp & Gracchus & >
% \end{nameauth}
%
-% % We add the name data tag.
+% % We add the name tag.
% \NameAddInfo[\noexpand\TSemp]{Gracchus}
% { (consul, 177 \textsc{bc})}
%
@@ -7792,8 +8411,8 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \global\NoAgnomenfalse%
% }
%
-% \Scipio\ was born around 236 \textsc{bc} into the
-% Scipiones branch of the Cornelii clan.
+% \NoAgnomentrue\Scipio\ was born around 236 \textsc{bc}
+% into the Scipiones branch of the Cornelii clan.
% \NoAgnomentrue\Scipio\ rose to military fame during the
% Second Punic War. Thereafter he was known as \Scipio.
% He flourished during the Egyptian reigns of
@@ -7804,7 +8423,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% % We make no change to \MainNameHook, but we do
% % change \NamesFormat to display any extant
-% % name data tags.
+% % name tags.
%
% \renewcommand*\NamesFormat[1]
% {%
@@ -7824,7 +8443,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \TGrac\ served as tribune of the plebs in 184 \textsc{bc}.
% \NoGenstrue\STGrac\ was elected praetor for 180 \textsc{bc},
-% after which he was appointed governor of Hispania Citerior.
+% after which he was appointed governor of Hispania Citerior,
% serving with the rank of proconsul. In 177 \textsc{bc},
% he was elected consul, again in 163 \textsc{bc}.
%
@@ -7863,15 +8482,15 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \global\NoCognomenfalse^^A
% \global\NoAgnomenfalse^^A
% }
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0, firstline=75, lastline=87]{\NameauthTestFile}
%
% \newpage
%
% \VerbatimInput[gobble=0, firstline=88, lastline=110]{\NameauthTestFile}
%
-% \Scipio\ was born around 236 \textsc{bc} into the
-% Scipiones branch of the Cornelii clan.
+% \NoAgnomentrue\Scipio\ was born around 236 \textsc{bc}
+% into the Scipiones branch of the Cornelii clan.
% \NoAgnomentrue\Scipio\ rose to military fame during the
% Second Punic War. Thereafter he was known as \Scipio.
% He flourished during the Egyptian reigns of
@@ -7884,20 +8503,20 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Below we show more name name variations than were shown above. In addition, we use those same formatting hooks to display non-Roman names:
%
% \begin{Block}
-% |\ForgetThis\Scipio|\dotfill\ForgetThis\Scipio\\
-% |\LScipio|\dotfill\LScipio\\
-% |\Scipio|\dotfill\Scipio\\
-% |\SScipio|\dotfill\SScipio\\[2ex]
-% |\NoAgnomentrue\LScipio|\dotfill\NoAgnomentrue\LScipio\\
-% |\NoAgnomentrue\Scipio|\dotfill\NoAgnomentrue\Scipio\\
-% |\NoGenstrue\SScipio|\dotfill\NoGenstrue\SScipio\\
-% |\NoPraenomentrue\SScipio|\dotfill\NoPraenomentrue\SScipio\\[2ex]
-% |\Name*{Ptolemy, IV}[IV Philopator]|\dotfill\Name*{Ptolemy, IV}[IV Philopator]\\
-% |\Name*{Ptolemy, IV}|\dotfill\Name*{Ptolemy, IV}\\
-% |\Name{Ptolemy, IV}|\dotfill\Name{Ptolemy, IV}
+% \ForgetThis\Scipio \dotfill |\ForgetThis\Scipio|\\
+% \LScipio \dotfill |\LScipio|\\
+% \Scipio \dotfill |\Scipio|\\
+% \SScipio \dotfill |\SScipio|\\[2ex]
+% \NoAgnomentrue\LScipio \dotfill |\NoAgnomentrue\LScipio|\\
+% \NoAgnomentrue\Scipio \dotfill |\NoAgnomentrue\Scipio|\\
+% \NoGenstrue\SScipio \dotfill |\NoGenstrue\SScipio|\\
+% \NoPraenomentrue\SScipio \dotfill |\NoPraenomentrue\SScipio|\\[2ex]
+% \Name*{Ptolemy, IV}[IV Philopator]\dotfill |\Name*{Ptolemy, IV}[IV Philopator]|\\
+% \Name*{Ptolemy, IV}\dotfill |\Name*{Ptolemy, IV}|\\
+% \Name{Ptolemy, IV}\dotfill |\Name{Ptolemy, IV}|
% \end{Block}
%
-% In Section~\ref{sec:NameAncient}, we used name data tags instead of \meta{Alternate} in the first-use formatting hook. Here we show the changes needed to add name data tags to the first-use formatting hook. Even though we are changing the formatting hooks throughout the document, none of the changes cause different index entries and will be unnoticed in the finished document.
+% In Section~\ref{sec:NameAncient}, we used name tags instead of \meta{Alternate} in the first-use formatting hook. Here we show the changes needed to add name tags to the first-use formatting hook. Even though we are changing the formatting hooks throughout the document, none of the changes cause different index entries and will be unnoticed in the finished document.
%
% \NameAddInfo[\noexpand\TSemp]{Gracchus}
% { (consul, 177 \textsc{bc})}
@@ -7916,12 +8535,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \global\NoCognomenfalse^^A
% \global\NoAgnomenfalse^^A
% }
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0,firstline=111]{\NameauthTestFile}
%
% \TGrac\ served as tribune of the plebs in 184 \textsc{bc}.
-% \NoGenstrue\STGrac\ was elected praetor for 180 \textsc{bc},
-% after which he was appointed governor of Hispania Citerior.
+% \TGrac\ was elected praetor for 180 \textsc{bc},
+% after which he was appointed governor of Hispania Citerior,
% serving with the rank of proconsul. In 177 \textsc{bc},
% he was elected consul, again in 163 \textsc{bc}.
% \end{quote}
@@ -7929,24 +8548,30 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Below we show both a Roman name and a different name type working the same way with the formatting hook:
%
% \begin{Block}
-% |\ForgetThis\TGrac|\dotfill\ForgetThis\TGrac\\
-% |\LTGrac|\dotfill\LTGrac\\
-% |\NoGenstrue\LTGrac|\dotfill\NoGenstrue\LTGrac\\
-% |\TGrac|\dotfill\TGrac\\
-% |\STGrac|\dotfill\STGrac\\
-% |\NoGenstrue\STGrac|\dotfill\NoGenstrue\STGrac\\
-% |\NoPraenomentrue\STGrac|\dotfill\NoPraenomentrue\STGrac\\[2ex]
-% |\ForgetThis\Dem|\dotfill\ForgetThis\Dem\\
-% |\LDem|\dotfill\LDem\\
-% |\Dem|\dotfill\Dem
+% \ForgetThis\TGrac \dotfill |\ForgetThis\TGrac|\\
+% \LTGrac \dotfill |\LTGrac|\\
+% \NoGenstrue\LTGrac \dotfill |\NoGenstrue\LTGrac|\\
+% \TGrac \dotfill |\TGrac|\\
+% \STGrac \dotfill |\STGrac|\\
+% \NoGenstrue\STGrac \dotfill |\NoGenstrue\STGrac|\\
+% \NoPraenomentrue\STGrac \dotfill |\NoPraenomentrue\STGrac|\\[2ex]
+% \ForgetThis\Dem \dotfill |\ForgetThis\Dem|\\
+% \LDem \dotfill |\LDem|\\
+% \Dem \dotfill |\Dem|
% \end{Block}
%
+% \begingroup
+% \renewcommand*\NamesFormat[1]{\color{blue}\sffamily #1}
+% \renewcommand*\MainNameHook[1]{\sffamily #1}
% \begin{Quote}{\ForgetThis\Scipio\break
% \hbox{}\hfill attributed by \Name[Titus]{Livius} in
-% \textit{Ab urbe condita} B 30}
-% Bellum parate, quoniam pacem pati non potuistis.\\
-% (Prepare for war, for it seems that you are unable to tolerate peace.)
+% \textit{\la{Ab urbe condita}} B 30 (27–9 \textsc{bc})}
+% \la{Bellum parate, quoniam pacem pati non potuistis.}
+%
+% (Prepare for war, for it seems that you are unable to tolerate peace.)\footnote{Here we enclosed this quote in a group and redefined the formatting hooks locally.}^^A
+% \index{Romans, quotes of\noexpand\string|hyperpage}
% \end{Quote}
+% \endgroup
%
% \newpage
%
@@ -7980,10 +8605,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage{makeidx}
% \usepackage[altformat]{nameauth}
+%
% \makeindex
%
% % Global Boolean flags need to be defined only once.
@@ -8052,7 +8678,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{document}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\NameauthTestFile}
%
% \OScipio\ was born around 337 \textsc{bc} into the
@@ -8065,14 +8691,14 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Instead of relying on some \textsf{nameauth} features that drop some names automatically, in all but \meta{FNN} we have to state explicitly what we want:
%
% \begin{Block}
-% |\ForgetThis\OScipio|\dotfill\ForgetThis\OScipio\\
-% |\LOScipio|\dotfill\LOScipio\\
-% |\OScipio|\dotfill\OScipio\\
-% |\SOScipio|\dotfill\SOScipio\\[2ex]
-% |\NoCognomentrue\OScipio|\dotfill\NoCognomentrue\OScipio\\
-% |\NoAgnomentrue\OScipio|\dotfill\NoAgnomentrue\OScipio\\
-% |\NoGenstrue\OScipio|\dotfill\NoGenstrue\OScipio\\
-% |\NoGenstrue\NoAgnomentrue\OScipio|\dotfill\NoGenstrue\NoAgnomentrue\OScipio
+% \ForgetThis\OScipio \dotfill |\ForgetThis\OScipio|\\
+% \LOScipio \dotfill |\LOScipio|\\
+% \OScipio \dotfill |\OScipio|\\
+% \SOScipio \dotfill |\SOScipio|\\[2ex]
+% \NoCognomentrue\OScipio \dotfill |\NoCognomentrue\OScipio|\\
+% \NoAgnomentrue\OScipio \dotfill |\NoAgnomentrue\OScipio|\\
+% \NoGenstrue\OScipio \dotfill |\NoGenstrue\OScipio|\\
+% \NoGenstrue\NoAgnomentrue\OScipio \dotfill |\NoGenstrue\NoAgnomentrue\OScipio|
% \end{Block}
%
% One may create convenience macros instead of using the Boolean flags. Yet this might make things less clear at first glance, for example:
@@ -8080,13 +8706,13 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \begin{Block}
% \newcommand*\LucScipio{\NoGenstrue\NoAgnomentrue\OScipio}
% |\newcommand*\LucScipio{\NoGenstrue\NoAgnomentrue\OScipio}|\\
-% |\ForgetThis\LucScipio|\dotfill\ForgetThis\LucScipio\\
-% |\LucScipio|\dotfill\LucScipio
+% \ForgetThis\LucScipio \dotfill |\ForgetThis\LucScipio|\\
+% \LucScipio \dotfill |\LucScipio|
% \end{Block}
%
-% The student and scholarly forms of Roman names are incompatible. Yet we show what the index entries would be in a normal \LaTeX document without hyperlinks:
+% The student and scholarly forms of Roman names are incompatible. Yet we show what the index entries would be in a normal \LaTeX\ document without hyperlinks:
%
-% \begin{quote}\small
+% \begin{quote}
% \IndexActual{@}
% \UntagName[\noexpand\SCIPi]{\noexpand\SCIPii}
% \TagName[\noexpand\TSemp]{Gracchus}{, consul}
@@ -8111,7 +8737,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \AltFormatActive
% \begingroup^^A Local format hook redefinition
-% Previously, formatting hooks either changed typefaces or mutated their arguments. Now we move beyond parsing the argument as we have received it.\medskip
+% Previously, formatting hooks either changed typefaces or mutated their arguments. Now we move beyond parsing the argument as we have received it.
%
% \DescribeMacro{\NameParser}
% The user-accessible parser (Section~\ref{sec:NameParser}) builds a printed name from internal, locally-scoped macros. Its output is affected by a subset of the Boolean flags, namely, those flags that affect long and short forms, as well as name reversal. Within the hooks we can use the user-accessible parser as often as we want.
@@ -8126,25 +8752,76 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Using |\if@nameauth@RevThis|, reversing without commas,
% overrides |\if@nameauth@RevThisComma| if both are true.
% \item |\if@nameauth@RevThisComma| creates the form
-% \meta{SNN}, \meta{FNN}.
+% \meta{SNN}, \meta{FNN}.
% \end{itemize}
%
-% Two Boolean\Info{\texttt{\textbackslash ifNameauthWestern}\break \texttt{\textbackslash ifNameauthObsolete}} flags are available to users so that they can know quickly what type of name was processed most recently by \cmd{\@nameauth@Choice}, which is called by all macros that take name arguments. These allow hook designers to vary the hook behavior based on the name type. They also persist after the macro that uses name arguments exits, unlike many other flags.
-%
-% \begin{center}\small\medstretch
-% \begin{tabular}{lccl}\toprule
-% Boolean flag & True & False & Name Type\\
-% \midrule
-% \texttt{\textbackslash ifNameauthWestern} & \YES & \NO & Western\\
-% \texttt{\textbackslash ifNameauthObsolete} & \NO & \NO\\\midrule
-% \texttt{\textbackslash ifNameauthWestern} & \NO & \YES & Non-Western\\
-% \texttt{\textbackslash ifNameauthObsolete} & \NO & \NO & current syntax\\
-% \midrule
-% \texttt{\textbackslash ifNameauthWestern} & \NO & \YES & Non-Western\\
-% \texttt{\textbackslash ifNameauthObsolete} & \NO & \YES & obsolete syntax\\
-% \bottomrule
-% \end{tabular}
-% \end{center}
+% Two Boolean\Info{\texttt{\textbackslash ifNameauthWestern}\break \texttt{\textbackslash ifNameauthObsolete}} flags are available to users so that they can know quickly what type of name was processed most recently by \cmd{\@nameauth@Choice}, which is called by all macros that take name arguments. These allow hook designers to vary the hook behavior based on the name type.
+%
+% These flags also persist after the macro that uses name arguments exits, unlike many other flags. This allows one to poll the last macro that took naming arguments, which may or may not be the last name printed in the text.
+%
+% To illustrate how one might poll these flags, either in a formatting hook or after a macro that takes name arguments exits, we set up the following macros and show how the flags are set. Notice that the name type is a function solely of the name arguments used, not how the name eventually ends up printed in the text, and not based on the name control sequence.
+%
+% \begin{VerbatimOut}{\jobname.tmp}
+% \newcommand\ShowType
+% {%
+% \ifNameauthWestern Western name\else
+% \ifNameauthObsolete nonwestern name using obsolete syntax\else
+% nonwestern name using current syntax\fi
+% \fi
+% }
+%
+% First, we begin with a Western name:
+%
+% \Name*[Albert]{Einstein} is a \ShowType.
+%
+% Even though this name is reversed in the text, it is still Western:
+%
+% \RevName\Name*[Frenec]{Liszt}\dag\ is a \ShowType.
+%
+% Here we present the same name twice, but using the two different
+% syntax versions for nonwestern names:
+%
+% \Name*{Henry, VIII} is a \ShowType.
+%
+% \Name*{Henry}[VIII]\ddag\ is a \ShowType.
+%
+% Finally, even though we do not print the name,
+% \IndexName{Elizabeth, I} we get a \ShowType.
+% \end{VerbatimOut}
+%
+% \begin{quote}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+%
+% \newcommand\ShowType
+% {%^^A
+% \ifNameauthWestern Western name\else
+% \ifNameauthObsolete nonwestern name using obsolete syntax\else
+% nonwestern name using current syntax\fi
+% \fi
+% }
+%
+% First, we begin with a Western name:
+%
+% \Name*[Albert]{Einstein} is a \ShowType.
+%
+% Even though this name is reversed in the text, it is still Western:
+%
+% \RevName\Name*[Frenec]{Liszt}\dag\ is a \ShowType.
+%
+% Here we present the same name twice, but using the two different
+% syntax versions for nonwestern names:
+%
+% \Name*{Henry, VIII} is a \ShowType.
+%
+% \Name*{Henry}[VIII]\ddag\ is a \ShowType.
+%
+% Finally, even though we do not print the name,
+% \IndexName{Elizabeth, I} we get a \ShowType.
+% \end{quote}
+%
+% \subsubsection{Reference Work II}
+%
+% Below we revisit the idea of a reference work, leveraging the formatting hooks to format headwords, add information from name info tags:
%
% Since we are using the \texttt{altformat} option or \cmd{\AltFormatActive}, we can expect that formatting is activated by default. We design a subsequent-use hook that deactivates alternate formatting inside of it:
%
@@ -8153,31 +8830,29 @@ and version 1.3 or later is part of all distributions of LaTeX version
% {\AltOff}\cmd{\NameParser}\texttt{\dots\}}
% \end{SyntaxBox}
%
-% If we used \cmd{\AltFormatActive*}, where the formatting macros are enabled, but deactivated by default, then we might want a hook that activates the macros:
+% \newpage
+%
+% If we had used \cmd{\AltFormatActive*}, where the formatting macros are enabled, but \emph{deactivated} by default, then we might want instead a first-use hook that activates the macros:
%
% \begin{SyntaxBox}
-% \cmd{\renewcommand*}\meta{Hook}\texttt{[1]\{\dots}\cmd{\AltOn}\cmd
+% \cmd{\renewcommand*}\meta{FirstHook}\texttt{[1]\{\dots}\cmd{\AltOn}\cmd
% {\NameParser}\texttt{\dots\}}
% \end{SyntaxBox}
-% \negmedskip
-%
-% \subsubsection{Reference Work II}
-%
-% Below we revisit the idea of a reference work, leveraging the formatting hooks to format headwords, add information from name info tags:
-%
+%
% \ifdefined\NameauthDoTestFiles \edef\NameauthTestFile{test11_09.tex}\else
% \edef\NameauthTestFile{\jobname.tmp}\fi
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage{makeidx}
% \usepackage[altformat]{nameauth}
+%
% \makeindex
%
% % Boolean flags; the first sets up headwords and the second
-% % indicates that a non-Western form should not be reversed.
+% % indicates that a nonwestern form should not be reversed.
% \newif\ifHeadword
% \newif\ifAncientName
%
@@ -8233,7 +8908,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \newcommand{\RefArticle}[2]
% {%
% \noindent\Headword #1 #2%
-% \medskip
+%
% }
%
% \begin{document}
@@ -8260,7 +8935,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{document}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\NameauthTestFile}
%
% \NameAddInfo{Aristotle}{ (384--322 \textsc{bc})}
@@ -8307,7 +8982,6 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \newcommand{\RefArticle}[2]
% {^^A
% \noindent\Headword #1 #2^^A
-% \medskip
% }
%
% \RefArticle{\AncientNametrue\Name{Aristotle}}{was the first to offer
@@ -8329,6 +9003,8 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Engine. \Name[Ada]{\noexpand\textIT{Lovelace}}\dots}
% \end{quote}
%
+% \newpage
+%
% \subsubsection{Marginalia}
%
% \ifdefined\NameauthDoTestFiles \edef\NameauthTestFile{test11_10.tex}\else
@@ -8336,10 +9012,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage{makeidx}
% \usepackage[altformat]{nameauth}
+%
% \makeindex
%
% % Global Boolean flags need to be defined only once.
@@ -8446,12 +9123,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Starting where we left off with Roman names, we begin in the document preamble by defining Boolean flags and macros. As with Roman names, their default values produce the name form in the index entry. The default name form aligns with the default Boolean flag setting: false. All non-default values and expansions of these macros occur only in the formatting hooks. We use \cmd{\PretagName} to sort the names. \cmd{\Revert} is used to print a last name without a margin note.
%
% \begin{quote}
-% \VerbatimInput[gobble=0,lastline=39]{\NameauthTestFile}
+% \VerbatimInput[gobble=0,lastline=54]{\NameauthTestFile}
% \end{quote}
%
% Next we define the two formatting hooks that structure the ways in which these macros can expand when printed in the text. We force \cmd{\NamesFormat} to print only allows only the default name via \cmd{\RevertSNfalse}, \cmd{\SpecialFNfalse}, and \cmd{\SpecialSNfalse}. \cmd{\MainNameHook} disables alternate formatting with \cmd{\AltOff}, but it allows variant name forms.
%
-% We print the default name in the body text. If allowed, we print a margin paragraph with an alternate full name using \cmd{\NameParser}. Both hooks set \cmd{\RevertSNfalse} on exit, so that \cmd{\Revert} works on a per-name basis.
+% In the hooks we print the default name in the body text. If allowed, we print a margin paragraph with an alternate full name using \cmd{\NameParser}. Both hooks set \cmd{\RevertSNfalse} on exit, so that \cmd{\Revert} works on a per-name basis.
%
% \makeatletter
% \renewcommand*\NamesFormat[1]
@@ -8485,8 +9162,14 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \global\RevertSNfalse^^A
% }
% \makeatother
-% \begin{quote}\small
-% \VerbatimInput[gobble=0,firstline=40]{\NameauthTestFile}
+% \begin{quote}
+% \VerbatimInput[gobble=0,firstline=55,lastline=96]{\NameauthTestFile}
+% \end{quote}
+%
+% Finally, we put all these macros to work in the text:
+%
+% \begin{quote}
+% \VerbatimInput[gobble=0,firstline=97]{\NameauthTestFile}
%
% \ForgetThis\Shak\ is the national poet of England
% in much the same way that \Name[Robert]{\textSC{Burns}}
@@ -8496,13 +9179,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \endgroup^^A Local format hook redefinition
% \AltFormatInactive
-% \negmedskip
%
% \ReturnLink
%
% \AltFormatActive
% \begin{Quote}{\ForgetThis\Shak\break
-% \hbox{}\hfill ``Julius Caesar'', Act III, Scene II}
+% \hbox{}\hfill ``Julius Caesar'', Act III, Scene II (first performed 1599)}
% \textbf{Antony:} Friends, Romans, countrymen, lend me your ears;\\
% I come to bury Caesar, not to praise him.\\
% The evil that men do lives after them;\\
@@ -8517,7 +9199,8 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Come I to speak in Caesar's funeral.\\
% He was my friend, faithful and just to me:\\
% But Brutus says he was ambitious;\\
-% And Brutus is an honourable man.
+% And Brutus is an honourable man.\negmedskip^^A
+% \index{creatives, quotes of\noexpand\string|hyperpage}
% \end{Quote}
% \AltFormatInactive
%
@@ -8538,7 +9221,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Target Name & Cross-Reference Name\\\midrule
% \oarg{FNN}\marg{SAFX} & \oarg{xref FNN}\marg
% {xref SAFX}\oarg{xref Alternate}\\
-% \end{SyntaxBoxii}\negmedskip
+% \end{SyntaxBoxii}
%
% \begin{itemize}
% \item The target name comes first, which is the opposite of
@@ -8554,7 +9237,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \item One cannot use \cmd{\TagName} with a cross-reference, but one can
% sort a cross-reference with \cmd{\PretagName}
% (Section~\ref{sec:IndexSort}):
-% \end{itemize}\negmedskip
+% \end{itemize}
%
% \subsubsection{The Macros}
%
@@ -8568,7 +9251,8 @@ and version 1.3 or later is part of all distributions of LaTeX version
% {xref SAFX}\oarg{xref Alternate}\\
% \cmd{\AKA*}\oarg{FNN}\marg{SAFX}\oarg{xref FNN}\marg
% {xref SAFX}\oarg{xref Alternate}\\
-% \end{SyntaxBox}\negmedskip
+% \end{SyntaxBox}
+% \negmedskip
%
% \begin{itemize}
% \item Both macros create a cross-reference in the index to the
@@ -8579,7 +9263,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \item If \meta{xref Alternate} is present in a Western name form, then
% instead of \meta{xref FNN}, \meta{xref Alternate} will be printed
% in the text.
-% \item If \meta{xref Alternate} is present in a non-Western name form,
+% \item If \meta{xref Alternate} is present in a nonwestern name form,
% then instead of \meta{xref Affix} (if present), \meta{xref Alternate}
% will be printed in the text.
% \item If \meta{xref Alternate} is present without either \meta{xref FNN}
@@ -8593,44 +9277,51 @@ and version 1.3 or later is part of all distributions of LaTeX version
% this.
% \end{itemize}
%
-% Below we make cross-references to \cmd{\Name[Bob]\{Hope\}} \Name[Bob]{Hope}; all of the forms listed create the cross-reference ``\ShowIdxPageref*[Leslie Townes]{Hope} \textit{see} \ShowIdxPageref*[Bob]{Hope}''.
+% Below we make cross-references to \Name[Bob]{Hope} \cmd{\Name[Bob]\{Hope\}}; all of the forms listed create the cross-reference ``\ShowIdxPageref*[Leslie Townes]{Hope} \textit{see} \ShowIdxPageref*[Bob]{Hope}''.
%
-% \begin{center}\footnotesize
+% \begin{center}\small
% \vspace{2ex}
% \Info{\strut\footnotesize Name Pattern(s):\hfill \break
% \ttfamily \ShowPattern[Bob]{Hope}!MN\break
% \ShowPattern[Leslie Townes]{Hope}!PN}
-% \vspace{-2ex}\smallstretch
-% \begin{tabular}{p{0.6\textwidth}l}\toprule
-% |\AKA[Bob]{Hope}[Leslie Townes]{Hope}| &
-% \AKA[Bob]{Hope}[Leslie Townes]{Hope}\\
-% \rowcolor{nagrey}|\RevComma\AKA[Bob]{Hope}[Leslie Townes]{Hope}| &
-% \RevComma\AKA[Bob]{Hope}[Leslie Townes]{Hope}\\
-% |\AKA[Bob]{Hope}[Leslie Townes]{Hope}[Lester T.]| &
-% \AKA[Bob]{Hope}[Leslie Townes]{Hope}[Lester T.]\\
-% \rowcolor{nagrey}|\AKA*[Bob]{Hope}[Leslie Townes]{Hope}| &
-% \AKA*[Bob]{Hope}[Leslie Townes]{Hope}\\
-% |\AKA*[Bob]{Hope}[Leslie Townes]{Hope}[Lester]| &
-% \AKA*[Bob]{Hope}[Leslie Townes]{Hope}[Lester]\\\bottomrule
+% \vspace{-2ex}
+% \begin{tabular}{ll}\toprule
+% \rowcolor{nagrey}^^A
+% \AKA[Bob]{Hope}[Leslie Townes]{Hope}&
+% |\AKA[Bob]{Hope}[Leslie Townes]{Hope}|\\
+%
+% \RevComma\AKA[Bob]{Hope}[Leslie Townes]{Hope}&
+% |\RevComma\AKA[Bob]{Hope}[Leslie Townes]{Hope}|\\
+%
+% \rowcolor{nagrey}^^A
+% \AKA[Bob]{Hope}[Leslie Townes]{Hope}[Lester T.]&
+% |\AKA[Bob]{Hope}[Leslie Townes]{Hope}[Lester T.]|\\
+%
+% \AKA*[Bob]{Hope}[Leslie Townes]{Hope}&
+% |\AKA*[Bob]{Hope}[Leslie Townes]{Hope}|\\
+%
+% \rowcolor{nagrey}^^A
+% \AKA*[Bob]{Hope}[Leslie Townes]{Hope}[Lester]&
+% |\AKA*[Bob]{Hope}[Leslie Townes]{Hope}[Lester]|\\\bottomrule
% \end{tabular}
% \end{center}
%
-% We display other name forms after referring to some names to ensure that they have sensible page references:
+% We display other name forms after referring to some names to ensure that they have sensible page entries:
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{tabular}{ll}
-% \cmd{\ForgetThis}\cmd{\Name\{Louis, XIV\}} &
-% \ForgetThis\Name{Louis, XIV}\\
-% \cmd{\Name\{Lao-tzu\}} & \Name{Lao-tzu}\\
-% \cmd{\Name[Lafcadio]\{Hearn\}} & \Name[Lafcadio]{Hearn}\\
-% \cmd{\Name[Charles]\{du\string~Fresne\}} &
-% \Name[Charles]{du~Fresne}\\
+% \ForgetThis\Name{Louis, XIV}&
+% |\ForgetThis\Name{Louis, XIV}|\\
+% \Name{Lao-tzu} & |\Name{Lao-tzu}|\\
+% \Name[Lafcadio]{Hearn} & |\Name[Lafcadio]{Hearn}|\\
+% \Name[Charles]{du~Fresne}&
+% |\Name[Charles]{du~Fresne}|\\
% \end{tabular}
% \end{quote}
% Caps and reversing macros work on the arguments that are printed
% in the text.
%
-% \begin{center}\small
+% \begin{center}
% \vspace{2ex}
% \PatInfo{\ShowPattern{Louis, XIV}!MN\break
% \ShowPattern{Lao-tzu}!MN\break
@@ -8640,24 +9331,30 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \ShowPattern{Li, Er}!PN\break
% \ShowPattern{du~Cange}!PN\break
% \ShowPattern{Koizumi, Yakumo}!PN}
-% \vspace{-2ex}\medstretch
-% \begin{tabular}{p{0.65\textwidth}l}\toprule
-% |\AKA{Louis, XIV}{Sun King}| & \AKA{Louis, XIV}{Sun King}\\
-% \rowcolor{nagrey}|\AKA*{Louis, XIV}{Sun King}| &
-% \AKA{Louis, XIV}{Sun King}\\
-% |\AKA{Lao-tzu}{Li, Er}| & \AKA{Lao-tzu}{Li, Er}\\
-% \rowcolor{nagrey}|\AKA*{Lao-tzu}{Li, Er}| & \AKA*{Lao-tzu}{Li, Er}\\
-% |\AKA[Charles]{du~Fresne}{du~Cange}| &
-% \AKA[Charles]{du~Fresne}{du~Cange}\\
-% \rowcolor{nagrey}|\CapThis\AKA[Charles]{du~Fresne}{du~Cange}| &
-% \CapThis\AKA[Charles]{du~Fresne}{du~Cange}\\
-% |\CapName\AKA[Lafcadio]{Hearn}{Koizumi, Yakumo}| &
-% \CapName\AKA[Lafcadio]{Hearn}{Koizumi, Yakumo}\\
-% \rowcolor{nagrey}|\RevName\AKA[Lafcadio]{Hearn}{Koizumi, Yakumo}| &
-% \RevName\AKA[Lafcadio]{Hearn}{Koizumi, Yakumo}\\\bottomrule
+% \vspace{-2ex}
+% \begin{tabular}{ll}\toprule
+% \rowcolor{nagrey}^^A
+% \AKA{Louis, XIV}{Sun King} & |\AKA{Louis, XIV}{Sun King}|\\
+% \rowcolor{nagrey}^^A
+% \AKA{Louis, XIV}{Sun King} & |\AKA*{Louis, XIV}{Sun King}|\\
+%
+% \AKA{Lao-tzu}{Li, Er} & |\AKA{Lao-tzu}{Li, Er}|\\
+% \AKA*{Lao-tzu}{Li, Er} & |\AKA*{Lao-tzu}{Li, Er}|\\
+%
+% \rowcolor{nagrey}^^A
+% \AKA[Charles]{du~Fresne}{du~Cange}&
+% |\AKA[Charles]{du~Fresne}{du~Cange}|\\
+% \rowcolor{nagrey}^^A
+% \CapThis\AKA[Charles]{du~Fresne}{du~Cange}&
+% |\CapThis\AKA[Charles]{du~Fresne}{du~Cange}|\\
+%
+% \CapName\AKA[Lafcadio]{Hearn}{Koizumi, Yakumo}&
+% |\CapName\AKA[Lafcadio]{Hearn}{Koizumi, Yakumo}|\\
+% \RevName\AKA[Lafcadio]{Hearn}{Koizumi, Yakumo}&
+% |\RevName\AKA[Lafcadio]{Hearn}{Koizumi, Yakumo}|\\\bottomrule
% \end{tabular}
% \end{center}
-% \medskip
+%
%
% \DescribeMacro{\PName}
% These convenience macros were an early feature of \textsf{nameauth}. They print a main name followed by a cross-reference in parentheses.
@@ -8695,23 +9392,23 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \item[Macro:] \cmd{\PName*[Mark]\{Twain\}[Samuel L.]\{Clemens\}}
% \item[Text:] \PName*[Mark]{Twain}[Samuel L.]{Clemens}
% \item[Index:] \ShowIdxPageref*[Samuel L.]{Clemens} \textit{see}
-% \ShowIdxPageref*[Mark]{Twain}\medskip
+% \ShowIdxPageref*[Mark]{Twain}
% \item[Macro:] \cmd{\PName\{Voltaire\}[François-Marie]\{Arouet\}}
% \item[Text:] \PName{Voltaire}[François-Marie]{Arouet}
% \item[Index:] \ShowIdxPageref*[François-Marie]{Arouet} \textit{see}
-% \ShowIdxPageref*{Voltaire}\medskip
+% \ShowIdxPageref*{Voltaire}
% \item[Macro:] \cmd{\PName\{William, I\}\{William, the Conqueror\}}
% \item[Text:] \PName{William, I}{William, the Conqueror}\\
% \PName{William, I}{William, the Conqueror}
% \item[Index:] \ShowIdxPageref*{William, the Conqueror} \textit{see}
-% \ShowIdxPageref*{William, I}\medskip
+% \ShowIdxPageref*{William, I}
% \item[Macro:] \cmd{\PretagName\{}\cmd{\textit\{Doctor mellifluus\}\}^^A
% \{Doctor mellifluus\}}\\
% \cmd{\PName\{Bernard, of Clairvaux\}\{}\cmd{\textit\{Doctor mellifluus\}}
% \item[Text:] \PName{Bernard, of Clairvaux}{\textit{Doctor mellifluus}}\\
% \PName{Bernard, of Clairvaux}{\textit{Doctor mellifluus}}
% \item[Index:] \ShowIdxPageref*{\textit{Doctor mellifluus}} \textit{see}
-% \ShowIdxPageref*{Bernard, of Clairvaux}\medskip
+% \ShowIdxPageref*{Bernard, of Clairvaux}
% \item[Macro:] \cmd{\ForgetThis}\cmd{\PName\{Lao-tzu\}\{Li, Er\}}
% \item[Text:] \ForgetThis\PName{Lao-tzu}{Li, Er}
% \item[Index:] \ShowIdxPageref*{Li, Er} \textit{see}
@@ -8723,37 +9420,39 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \subsubsection[Workarounds]{Formatting Workarounds}
%
-% By default, the macros in this section use only the formatting hooks for subsequent instances of names (Section~\ref{sec:Formatting}).\medskip
+% By default, the macros in this section use only the formatting hooks for subsequent instances of names (Section~\ref{sec:Formatting}).
%
% First, the \texttt{formatAKA}\Info{\texttt{formatAKA}} option will permit \cmd{\ForceName} to force the ``first-use'' formatting hooks to be employed, but under different conditions. The name patterns that control these uses (Section~\ref{sec:NamePatterns}) apply only to cross-references; they are a distinct system of patterns that differs from normal names and ignores the difference between main-matter and front-matter name formatting.
%
-% \begin{center}\small\medstretch
-% \makeatletter\@nameauth@AKAFormattrue\makeatother\global\NamesInactive
-% \begin{tabular}{rll}\toprule
+% \begin{center}
+% \makeatletter\@nameauth@AKAFormattrue\makeatother
+% \global\NamesInactive
+% \begin{tabular}{>{\columncolor{nagrey}}rll}
+% \rowcolor{nagrey}^^A
% & |\ForgetThis\Eliz| & |\AKA{Elizabeth,I}%|\\
-% & & |[Good Queen]{Bess}|\\
% \rowcolor{nagrey}^^A
+% & & |[Good Queen]{Bess}|\\[0.5ex]
+%
% Front Matter: & \ForgetThis\Eliz &
-% \AKA{Elizabeth,I}[Good Queen]{Bess}\\
+% \AKA{Elizabeth,I}[Good Queen]{Bess}\\[0.5ex]
% \global\NamesActive^^A
-% Main Matter: & \ForgetThis\Eliz &
-% \AKA{Elizabeth, I}[Good Queen]{Bess}\\
-% \rowcolor{nagrey}^^A
+% \strut Main Matter: & \ForgetThis\Eliz &
+% \AKA{Elizabeth, I}[Good Queen]{Bess}\\[0.5ex]
% With \cmd{\ForceName}: & &
-% \ForceName\AKA{Elizabeth, I}[Good Queen]{Bess}\\\bottomrule
+% \ForceName\AKA{Elizabeth, I}[Good Queen]{Bess}\\
% \end{tabular}
% \vspace{-14ex}
-% \small\PatInfo{\ShowPattern{Elizabeth, I}!NF\break
+% \PatInfo{\ShowPattern{Elizabeth, I}!NF\break
% \ShowPattern[Good Queen]{Bess}!PN\break
% \ShowPattern{Elizabeth, I}!MN}
% \vspace{14ex}
-% \end{center}\medskip
+% \end{center}
%
-% The first appearance of \AKA{Elizabeth,I}[Good Queen]{Bess} above uses \cmd{\FrontNamesFormat} as its formatting hook because it is the first occurrence of the alternate name in the front matter. After that, even though \AKA{Elizabeth,I}[Good Queen]{Bess} occurs for the first time in the main matter, it uses the subsequent-use \cmd{\MainNameHook} because we are not using the regular name patterns. We need to use \cmd{\ForceName}, which triggers the expected use of \cmd{\NamesFormat}, the first-use main-matter hook.\medskip
+% The first appearance of \AKA{Elizabeth,I}[Good Queen]{Bess} above uses \cmd{\FrontNamesFormat} as its formatting hook because it is the first occurrence of the alternate name in the front matter. After that, even though \AKA{Elizabeth,I}[Good Queen]{Bess} occurs for the first time in the main matter, it uses the subsequent-use \cmd{\MainNameHook} because we are not using the regular name patterns. We need to use \cmd{\ForceName}, which triggers the expected use of \cmd{\NamesFormat}, the first-use main-matter hook.
%
% Second,\Info{\texttt{alwaysformat}} we can use the \texttt{alwaysformat} option to force only the use of \cmd{\NamesFormat} and \cmd{\FrontNamesFormat}. Of course, this can look like rubbish in certain circumstances.
%
-% \begin{quote}\small
+% \begin{quote}
% \makeatletter\@nameauth@AlwaysFormattrue\makeatother
% \ForgetThis\LEliz\ was known as ``\AKA{Elizabeth,I}[Good Queen]{Bess}''.
% Again we mention Queen \Eliz, ``\AKA{Elizabeth, I}[Good Queen]{Bess}''.
@@ -8763,13 +9462,13 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \subsection{Obsolete Syntax}
% \label{sec:Obsolete}
%
-% This non-Western syntax limits alternate names and cross-references, prevents the use of comma-delimited names, and complicates indexing. It is a ``ghost of \textsf{nameauth} past'' that remains for the sake of backward compatibility and to prevent ``holes'' where naming macro arguments are discarded without apparent reason.
+% This nonwestern syntax limits alternate names and cross-references, prevents the use of comma-delimited names, and complicates indexing. It is a ``ghost of \textsf{nameauth} past'' that remains for the sake of backward compatibility and to prevent ``holes'' where naming macro arguments are discarded without apparent reason.
%
% \begin{SyntaxBox}
% \cmd{\Name}\marg{SNN}\oarg{Alternate}
% \end{SyntaxBox}
%
-% The genesis of this syntax was the use of the \meta{Alternate} field for variant forenames in Western names, personal names in Eastern names, and sobriquets, titles, and so on in ancient names. Yet this prevented using alternate names for non-Western names and it limited those names to an unacceptable second-tier status. Developing the comma delimiter in \meta{SNN, Affix} presented significant challenges, but it was worth overcoming them to put all name forms on equal footing.
+% The genesis of this syntax was the use of the \meta{Alternate} field for variant forenames in Western names, personal names in Eastern names, and sobriquets, titles, and so on in ancient names. Yet this prevented using alternate names for nonwestern names and it limited those names to an unacceptable second-tier status. Developing the comma delimiter in \meta{SNN, Affix} presented significant challenges, but it was worth overcoming them to put all name forms on equal footing.
%
% We show this syntax for the sake of completeness, but we strongly encourage using the comma-delimited syntax instead.
%
@@ -8783,7 +9482,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \item In this manual we designate these names with a double dagger (\ddag).
% \end{itemize}
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \Name{Henry}[VIII] % Ancient
% \Name{Chiang}[Kai-shek] % Eastern
@@ -8798,68 +9497,81 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \AltFormatActive
% After studying in the US during the 1930s, in 1954 Rev.
-% \cmd{\Fukuyama}\cmd{\ddag} \Fukuyama\ddag\ published
+% \Fukuyama\ddag\ \cmd{\Fukuyama}\cmd{\ddag} published
% \textit{Nihon Fukuin R\=uteru Ky\=okai Shi} (History
% of the Evangelical Lutheran Church in Japan).
% \AltFormatInactive
%
% \newpage
%
-% \begin{center}\small\medstretch
+% \begin{center}
% \begin{tabular}{ll}\toprule
-% |\ForgetThis\Name{Henry}[VIII]\ddag| &
-% \ForgetThis\Name{Henry}[VIII]\ddag\\
-% |\Name{Henry}[VIII]\ddag| &
-% \Name{Henry}[VIII]\ddag\\
-% \rowcolor{nagrey}|\ForgetThis\Name{Chiang}[Kai-shek]\ddag| &
-% \ForgetThis\Name{Chiang}[Kai-shek]\ddag\\
-% \rowcolor{nagrey}|\Name{Chiang}[Kai-shek]\ddag| &
-% \Name{Chiang}[Kai-shek]\ddag\\
-% |\Dagb\ddag| & \Dagb\ddag\\
-% |\Dagb\ddag| & \Dagb\ddag\\
-% \rowcolor{nagrey}|\CapName\Yosh\ddag| & \CapName\Yosh\ddag\\
-% \rowcolor{nagrey}|\CapName\RevName\LYosh\ddag| & \CapName\RevName\LYosh\ddag\\
-% |\AltFormatActive| \AltFormatActive\\
-% |\ForgetThis\Fukuyama\ddag| & \ForgetThis\Fukuyama\ddag\\
-% |\Fukuyama\ddag| & \Fukuyama\ddag\\
-% |\AltFormatInactive| \AltFormatInactive\\\bottomrule
+% \rowcolor{nagrey}^^A
+% \ForgetThis\Name{Henry}[VIII]\ddag &
+% |\ForgetThis\Name{Henry}[VIII]\ddag|\\
+% \rowcolor{nagrey}^^A
+% \Name{Henry}[VIII]\ddag &
+% |\Name{Henry}[VIII]\ddag|\\
+%
+% \ForgetThis\Name{Chiang}[Kai-shek]\ddag &
+% |\ForgetThis\Name{Chiang}[Kai-shek]\ddag|\\
+% \Name{Chiang}[Kai-shek]\ddag &
+% |\Name{Chiang}[Kai-shek]\ddag|\\
+%
+% \rowcolor{nagrey}^^A
+% \Dagb\ddag & |\Dagb\ddag|\\
+% \rowcolor{nagrey}^^A
+% \Dagb\ddag & |\Dagb\ddag|\\
+%
+% \CapName\Yosh\ddag & |\CapName\Yosh\ddag|\\
+% \CapName\RevName\LYosh\ddag & |\CapName\RevName\LYosh\ddag|\\
+%
+% \rowcolor{nagrey}^^A
+% & |\AltFormatActive| \AltFormatActive\\
+% \rowcolor{nagrey}^^A
+% \ForgetThis\Fukuyama\ddag & |\ForgetThis\Fukuyama\ddag|\\
+% \rowcolor{nagrey}^^A
+% \Fukuyama\ddag & |\Fukuyama\ddag|\\
+% \rowcolor{nagrey}^^A
+% & |\AltFormatInactive| \AltFormatInactive\\\bottomrule
% \end{tabular}
% \end{center}
%
-% Regardless of its flaws, the obsolete syntax shares name patterns, index tags, data tags, and index entries with the current syntax:
+% Regardless of its flaws, the obsolete syntax shares name patterns, index tags, name tags, and index entries with the current syntax:
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{tabular}{@{}lll}
-% Obsolete syntax: & \cmd{\ForgetThis}\cmd{\Name\{Henry\}[VIII]}\cmd{\ddag} &
-% \ForgetThis\Name{Henry}[VIII]\ddag\\
-% & \cmd{\ShowPattern\{Henry\}[VIII]} & \ShowPattern{Henry}[VIII]\\[1ex]
-% Current syntax: & \cmd{\Name\{Henry, VIII\}} & \Name{Henry, VIII}\\
-% & \cmd{\ShowPattern\{Henry, VIII\}} & \ShowPattern{Henry, VIII}\\
+% Obsolete syntax: & \ForgetThis\Name{Henry}[VIII]\ddag &
+% \cmd{\ForgetThis}\cmd{\Name\{Henry\}[VIII]}\cmd{\ddag}\\[1ex]
+% & \ShowPattern{Henry}[VIII] & \cmd{\ShowPattern\{Henry\}[VIII]}\\[1ex]
+% Current syntax: & \Name{Henry, VIII} & \cmd{\Name\{Henry, VIII\}}\\[1ex]
+% & \ShowPattern{Henry, VIII} & \cmd{\ShowPattern\{Henry, VIII\}}\\
% \end{tabular}
% \end{quote}
%
% We do not expect people to use the obsolete syntax much anymore. Here we list more advantages to using the current syntax and avoiding the old.
%
% \begin{itemize}
-% \item Only the newer syntax permits variants:\\
-% \cmd{\Name*\{Henry, VIII\}[Tudor]} \Name*{Henry, VIII}[Tudor].
-% \item The proper form for the old syntax is, e.g.:\\
-% \cmd{\Name*\{Henry\}[VIII]}: \Name*{Henry}[VIII].
+% \item Only the newer syntax permits such variants:
+% \item[] \Name*{Henry, VIII}[Tudor]\dotfill \cmd{\Name*\{Henry, VIII\}[Tudor]}
+% \item The proper form for the old syntax is, e.g.:
+% \item[] \Name*{Henry}[VIII]\dotfill \cmd{\Name*\{Henry\}[VIII]}
% \IndexInactive
-% \item \cmd{\Name[Henry]\{VIII\}} is a malformed Western name:\\
-% ``\Name*[Henry]{VIII}'' and ``\Name[Henry]{VIII}''.
-% \item \cmd{\Name[Henry]\{VIII\}[Tudor]} also is malformed:\\
-% ``\Name*[Henry]{VIII}[Tudor]'' and ``\Name[Henry]{VIII}[Tudor]''
-% \item Both incorrect name forms have the same index entry:\\
-% ``\ShowIdxPageref*[Henry]{VIII}''
+% \item Next we see malformed Western names:
+% \item[] \Name[Henry]{VIII}\dotfill \cmd{\Name[Henry]\{VIII\}}\\
+% \Name[Henry]{VIII}\dotfill \cmd{\Name[Henry]\{VIII\}}\\
+% \Name*[Henry]{VIII}[Tudor]\dotfill \cmd{\Name*[Henry]\{VIII\}[Tudor]}\\
+% \Name[Henry]{VIII}[Tudor]\dotfill \cmd{\Name[Henry]\{VIII\}[Tudor]}
+% \item These malformed names have the same index entry\dotfill^^A
+% \ShowIdxPageref*[Henry]{VIII}
% \IndexActive
% \end{itemize}
-% \negmedskip
%
% \ReturnLink
%
% \begin{Quote}{\Name[Salman]{Rushdie}, \textit{The Satanic Verses} (1988)}
-% Names, once they are in common use, quickly become mere sounds, their etymology being buried, like so many of the earth's marvels, beneath the dust of habit.
+% Names, once they are in common use, quickly become mere sounds, their etymology being buried, like so many of the earth's marvels, beneath the dust of habit.\negmedskip^^A
+% \index{creatives, quotes of\noexpand\string|hyperpage}
% \end{Quote}
%
% \newpage
@@ -8868,7 +9580,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \section{Advanced Customization}
% \label{sec:AdvCustomize}
%
-% This section is meant to help those who want to access package internals as they add features, as well as those who want to design their own constructs and mesh them with \textsf{nameauth}. Here we set the formatting hooks to the package default, setting aside the common usage in this manual. We also use alternate formatting for much of this section. We set up the following hooks:
+% Here we discuss package internals to help users customize and add features. We set aside the common formatting in this manual and reset the formatting hooks to the default settings. We use alternate formatting for much of this section:
%
% \begin{VerbatimOut}{\jobname.tmp}
% \renewcommand*\NamesFormat{}
@@ -8877,7 +9589,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \renewcommand*\FrontNameHook{\AltOff}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\jobname.tmp}
% \end{quote}
% \input{\jobname.tmp}
@@ -8887,17 +9599,19 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \subsection{Using Package Internals}
%
-% We move toward custom formatting by starting with the established paradigm of alternate formatting (Section~\ref{sec:AltFormat}). We will change the ``back-end'' macros to a degree, so that we get a substantially similar experience with custom code.
+% We start with alternate formatting (Section~\ref{sec:AltFormat}), changing the ``back-end'' macros to our custom code. Here, we need only check \texttt{\textbackslash if@nameauth@DoAlt}, which is toggled by \cmd{\AltOn} and \cmd{\AltOff}.
+% Instead of using \cmd{\textSC} and friends, we define a new macro that works in similar fashion. \cmd{\Fbox} draws a frame around the name:
%
% \ifdefined\NameauthDoTestFiles \edef\NameauthTestFile{test13_01.tex}\else
% \edef\NameauthTestFile{\jobname.tmp}\fi
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage{makeidx}
% \usepackage[altformat]{nameauth}
+%
% \makeindex
%
% % Alternate formatting macro definition
@@ -8933,17 +9647,13 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{document}
% \end{VerbatimOut}
%
-% When designing macros that work with alternate formatting hooks, the Boolean flags that one must know are \texttt{\textbackslash if@nameauth@DoAlt}, which is toggled by \cmd{\AltOn} and \cmd{\AltOff}; \texttt{\textbackslash if@nameauth@DoCaps}, which handles capitalization via \cmd{\AltCaps}, and \texttt{\textbackslash if@nameauth@InHook}, which is true when the formatting hooks are called.
-%
-% Next, instead of using \cmd{\textSC} and friends, we define a new macro that works in similar fashion. \cmd{\Fbox} draws a frame around the name:
-%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0,lastline=13]{\NameauthTestFile}
% \end{quote}
%
% Since \cmd{\AltCaps} is part of \textsf{nameauth}, one need not reinvent that wheel. Just use it in the name arguments and sorting macros:
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0,firstline=14,lastline=24]{\NameauthTestFile}
% \end{quote}
%
@@ -8953,11 +9663,22 @@ and version 1.3 or later is part of all distributions of LaTeX version
% }^^A
% \makeatother
%
+% \begingroup
+% \renewcommand*\NamesFormat[1]{\color{blue}\sffamily #1}
+% \renewcommand*\MainNameHook[1]{\sffamily #1}
+% \begin{Quote}{\ForgetThis\Name{Maimonides},
+% \textit{Guide for the Perplexed} (1190)}
+% For a truth, once established by proof, does neither gain force nor certainty by the consent of all scholars, nor lose by the general dissent.\footnote{Here we enclosed this quote in a group and redefined the formatting hooks locally.}^^A
+% \index{theologians, quotes of\noexpand\string|hyperpage}
+% \index{philosophers, quotes of\noexpand\string|hyperpage}
+% \end{Quote}
+% \endgroup
+%
% \newpage
%
% The final step is redefining the hooks, which can be quite simple:
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0,firstline=25]{\NameauthTestFile}
%
% \deSmet\ was a Jesuit missionary who arrived in North
@@ -8977,9 +9698,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \subsection{Using Separate Macros}
%
% \ForgetName[Pierre-Jean]{\noexpand\Fbox{\noexpand\AltCaps{d}e~Smet}}
-% One is not tied to the internal mechanisms of \textsf{nameauth} in order to design alternate formatting, but this approach is more labor-intensive and requires one to keep track of more details.
-%
-% We still recommend using \cmd{\AltFormatActive} to mitigate errors. The following example tries to show how far one might go afield, yet remain compatible with standard names.
+% Alternate formatting can work with greater customization, but that is more labor-intensive and requires one to keep track of more details. We still recommend using \cmd{\AltFormatActive} to mitigate errors. The following example shows greater customization that remains compatible with package internals.
%
% Three Boolean flags replace package internals. The flag \texttt{\textbackslash ifFbox} activates formatting, \cmd{\CapThis} sets \texttt{\textbackslash ifFirstCap} true, and \texttt{\textbackslash ifInHook} is set manually, instead of being set by the hook dispatcher.
%
@@ -8988,16 +9707,17 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage{makeidx}
% \usepackage[altformat]{nameauth}
+%
% \makeindex
%
-% \newif\ifFbox % Replaces \if@nameauth@DoAlt
-% \newif\ifFirstCap % Replaces \if@nameauth@DoCaps
-% \newif\ifInHook % Replaces \if@nameauth@InHook
-% \Fboxtrue % Replaces \AltFormatActive
+% \newif\ifFbox % Replaces \if@nameauth@DoAlt \AltOn \AltOff
+% \newif\ifFirstCap % Replaces \if@nameauth@DoCaps \AltCaps
+% \newif\ifInHook % Replaces \if@nameauth@InHook hook dispatcher
+% \Fboxtrue % Replaces \AltFormatActive
%
% % Alternate formatting macro definition
% \newcommand*\Fbox[1]{%
@@ -9046,7 +9766,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{document}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0,lastline=11]{\NameauthTestFile}
% \end{quote}
%
@@ -9056,7 +9776,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \VerbatimInput[gobble=0,firstline=12,lastline=16]{\NameauthTestFile}
% \end{quote}
%
-% Our new \cmd{\AltCaps} works like the built-in version, except it does not use the internal macros and flags. We also redefine \cmd{\CapThis} to use our flag instead of the internal flag:
+% Our \cmd{\AltCaps} works like the built-in version, except it does not use the internal macros and flags. We redefine \cmd{\CapThis} to use our flag instead of the internal flag:
%
% \begin{quote}
% \VerbatimInput[gobble=0,firstline=17,lastline=26]{\NameauthTestFile}
@@ -9070,7 +9790,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \VerbatimInput[gobble=0,firstline=27,lastline=32]{\NameauthTestFile}
% \end{quote}
%
-% By using the same hook logic and \cmd{\noexpand}, the new ``back-end'' meshes with the ``front-end'' macros used before without creating spurious index entries.
+% By using the same hook logic and \cmd{\noexpand}, the same macros used before now use a different ``back end'' without creating spurious index entries.
%
% \newcommand*\Fbox[1]{^^A
% \ifFbox\protect\fbox{#1}\else#1\fi
@@ -9090,7 +9810,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \let\FrontNamesFormat\Namesformat
% \let\FrontNameHook\MainNameHook
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0,firstline=33]{\NameauthTestFile}
%
% \deSmet\ was a Jesuit missionary who arrived in North
@@ -9105,10 +9825,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage{makeidx}
% \usepackage[altformat]{nameauth}
+%
% \makeindex
%
% \newif\ifCaps % Replaces \if@nameauth@DoAlt
@@ -9181,9 +9902,9 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \let\FrontNamesFormat\Namesformat
% \let\FrontNameHook\MainNameHook
%
-% We can go one step further and use our own macros with names designed for the built-in macros, as the next example shows:
+% We can go one step further and use our own ``back-end'' macros with other documents that were designed for the built-in macros used in alternate formatting, as the next example shows:
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\NameauthTestFile}
%
% \ForgetThis\Luth\ was a leading figure in the Protestant
@@ -9211,26 +9932,30 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \DescribeMacro{\NameauthLName}
% \cmd{\Name}, or an unmodified shorthand, calls \cmd{\NameauthName}. \cmd{\Name*}, or an L-shorthand, sets \cmd{\@nameauth@FullNametrue}, then calls \cmd{\NameauthLName}.
% \DescribeMacro{\NameauthFName}
-% \cmd{\FName}, or an S-shorthand, sets \cmd{\@nameauth@FirstNametrue}, then calls \cmd{\NameauthFName}. One should not modify \cmd{\Name} and \cmd{\FName} directly. Since \textsf{nameauth} uses \textsf{xargs}, the next example uses it also.
+% \cmd{\FName}, or an S-shorthand, sets \cmd{\@nameauth@FirstNametrue}, then calls \cmd{\NameauthFName}. One should not modify \cmd{\Name} and \cmd{\FName} directly.
+%
+% \subsubsection{Names In Boxes}
%
+% Since \textsf{nameauth} uses \textsf{xparse}, the next examples use it also. Here we look at decorationin the sense of putting a name into something around it. This could be useful if, in certain parts of a document, one wanted to turn names into hyperlinks or some other kind of feature. Here we simply put names into colored boxes.
+%
% \ifdefined\NameauthDoTestFiles \edef\NameauthTestFile{test13_04.tex}\else
% \edef\NameauthTestFile{\jobname.tmp}\fi
%
% \begin{VerbatimOut}{\NameauthTestFile}
% \documentclass{article}
-% \input{compat.tex} % Included with nameauth; needed only if
-% % compiling on multiple TeX distros or LaTeX engines.
+% \input{compat.tex} % Included with nameauth; example file aids
+% % compatibility across different LaTeX versions and engines.
% \usepackage{makeidx}
% \usepackage[altformat]{nameauth}
-% \makeindex
% \usepackage{xcolor}
%
-% \makeatletter
+% \makeindex
%
+% \makeatletter
% % Change the general-case name macro to show
% % a name in a framed, colored box.
%
-% \newcommandx*\MyName[3][1=\@empty, 3=\@empty]{%
+% \NewDocumentCommand{\MyName}{O{} m O{}}{%
% \global\@nameauth@toksa\expandafter{#1}%
% \global\@nameauth@toksb\expandafter{#2}%
% \global\@nameauth@toksc\expandafter{#3}%
@@ -9238,7 +9963,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% }
%
% % Likewise change the macro for when names are forced long.
-% \newcommandx*\MyLName[3][1=\@empty, 3=\@empty]{%
+% \NewDocumentCommand{\MyLName}{O{} m O{}}{%
% \global\@nameauth@toksa\expandafter{#1}%
% \global\@nameauth@toksb\expandafter{#2}%
% \global\@nameauth@toksc\expandafter{#3}%
@@ -9246,7 +9971,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% }
%
% % Likewise change the macro when personal names are desired.
-% \newcommandx*\MyFName[3][1=\@empty, 3=\@empty]{%
+% \NewDocumentCommand{\MyFName}{O{} m O{}}{%
% \global\@nameauth@toksa\expandafter{#1}%
% \global\@nameauth@toksb\expandafter{#2}%
% \global\@nameauth@toksc\expandafter{#3}%
@@ -9269,32 +9994,31 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \ForgetThis\Name[Adolf]{Harnack} was a theologian who stressed
% the Fatherhood of God and the brotherhood of man.
% \Name[Adolf]{Harnack} flourished in the early twentieth
-% century. We also produce \Name*[Adolf]{Harnack} and
-% \FName[Adolf]{Harnack}.
+% century; \Name*[Adolf]{Harnack}[Adolf von]; \FName[Adolf]{Harnack}.
%
% \printindex
% \end{document}
% \end{VerbatimOut}
%
-% \begin{quote}\small
+% \begin{quote}
% \VerbatimInput[gobble=0]{\NameauthTestFile}
%
% \makeatletter
-% \newcommandx*\MyName[3][1=\@empty, 3=\@empty]{^^A
+% \NewDocumentCommand{\MyName}{O{} m O{}}{^^A
% \global\@nameauth@toksa\expandafter{#1}^^A
% \global\@nameauth@toksb\expandafter{#2}^^A
% \global\@nameauth@toksc\expandafter{#3}^^A
% \fcolorbox{black}{gray!25!white}{\@nameauth@Name[#1]{#2}[#3]}^^A
% }
%
-% \newcommandx*\MyLName[3][1=\@empty, 3=\@empty]{^^A
+% \NewDocumentCommand{\MyLName}{O{} m O{}}{^^A
% \global\@nameauth@toksa\expandafter{#1}^^A
% \global\@nameauth@toksb\expandafter{#2}^^A
% \global\@nameauth@toksc\expandafter{#3}^^A
% \fcolorbox{black}{green!25!white}{\@nameauth@Name[#1]{#2}[#3]}^^A
% }
%
-% \newcommandx*\MyFName[3][1=\@empty, 3=\@empty]{^^A
+% \NewDocumentCommand{\MyFName}{O{} m O{}}{^^A
% \global\@nameauth@toksa\expandafter{#1}^^A
% \global\@nameauth@toksb\expandafter{#2}^^A
% \global\@nameauth@toksc\expandafter{#3}^^A
@@ -9311,22 +10035,105 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \ForgetThis\Name[Adolf]{Harnack} was a theologian who stressed
% the Fatherhood of God and the brotherhood of man.
% \Name[Adolf]{Harnack} flourished in the early twentieth
-% century. We also produce \Name*[Adolf]{Harnack} and
-% \FName[Adolf]{Harnack}.
+% century; \Name*[Adolf]{Harnack}[Adolf von]; \FName[Adolf]{Harnack}.
% \end{quote}
%
-% After the name is printed in the body text, the internal macros \emph{globally} set \cmd{\@nameauth@FullNamefalse} and \cmd{\@nameauth@FirstNamefalse}, as well as other flags related to the prefix macros. This prevents certain cases of undocumented behavior in versions of \textsf{nameauth} before 3.3, where resetting flags locally could cause unexpected name forms. If an existing document leverages the local resetting of flags, one can use the \texttt{oldreset} option.\medskip
+% After the name is printed in the body text, the internal macros \emph{globally} set \cmd{\@nameauth@FullNamefalse} and \cmd{\@nameauth@FirstNamefalse}, as well as other flags related to the prefix macros. This prevents certain cases of undocumented behavior in versions of \textsf{nameauth} before 3.3, where resetting flags locally could cause unexpected name forms. If an existing document leverages the local resetting of flags, one can use the \texttt{oldreset} option.
%
% Like\Info{\cmd{\global}} many of the macros in this package, these macros can be redefined or used locally within a scope without making global changes to the document unless you specifically use \cmd{\global}.
+%
+% \newpage
+%
+% \subsubsection{Change Parsing}
+% \label{sec:ChangeParse}
+%
+% In Section~\ref{sec:FinalOptargs} we saw reasons why \textsf{nameauth} ignores spaces before final optional arguments. Here we show how to change that. With \textsf{xparse} since May 2018, the \texttt{!O\{\}} specifier makes spaces significant before an optional argument. Before then, the example below got the same result through undocumented behavior, now fixed.
+%
+% \begin{VerbatimOut}{\jobname.tmp}
+% \makeatletter
+% \@ifl@t@r\fmtversion{2018/04/30}{\def\nameauthxp{}}{}
+% \makeatother
+%
+% \makeatletter
+% \ifdefined\nameauthxp
+% \NewDocumentCommand{\MyName}{O{} m !O{}}{%
+% \global\@nameauth@toksa\expandafter{#1}%
+% \global\@nameauth@toksb\expandafter{#2}%
+% \global\@nameauth@toksc\expandafter{#3}%
+% \@nameauth@Name[#1]{#2}[#3]%
+% }
+% \else
+% \NewDocumentCommand{\MyName}{O{} m O{}}{%
+% \global\@nameauth@toksa\expandafter{#1}%
+% \global\@nameauth@toksb\expandafter{#2}%
+% \global\@nameauth@toksc\expandafter{#3}%
+% \@nameauth@Name[#1]{#2}[#3]%
+% }
+% \fi
+% \makeatother
+%
+% \let\NameauthName\MyName
+% \let\NameauthLName\MyName
+% \let\NameauthFName\MyName
+%
+% \ForgetName[Albert]{Einstein}
+% \ForgetName{Miyazaki, Hayao}
+%
+% We want ``Albert Einstein [reportedly] said'',
+% ``Miyazaki Hayao [supposedly] said'',
+% ``Einstein [reportedly] said'', and
+% ``Miyazaki [supposedly] said''.
+%
+% We get ``\Name[Albert]{Einstein} [reportedly] said'',
+% ``\Name{Miyazaki, Hayao} [supposedly] said'',
+% ``\Name[Albert]{Einstein} [reportedly] said'', and
+% ``\Name{Miyazaki, Hayao} [supposedly] said''.
+% \end{VerbatimOut}
+%
+% \begin{quote}
+%^^A Display the appropriate verbatim text above.
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+%^^A Redefine formatting macros.
+% \renewcommand\NamesFormat{}
+% \renewcommand\MainNameHook{}
+%
+% \makeatletter
+% \ifdefined\nameauthxp
+% \NewDocumentCommand{\MyName}{O{} m !O{}}{%^^A
+% \global\@nameauth@toksa\expandafter{#1}%^^A
+% \global\@nameauth@toksb\expandafter{#2}%^^A
+% \global\@nameauth@toksc\expandafter{#3}%^^A
+% \@nameauth@Name[#1]{#2}[#3]}
+% \else
+% \NewDocumentCommand{\MyName}{O{} m O{}}{%^^A
+% \global\@nameauth@toksa\expandafter{#1}%^^A
+% \global\@nameauth@toksb\expandafter{#2}%^^A
+% \global\@nameauth@toksc\expandafter{#3}%^^A
+% \@nameauth@Name[#1]{#2}[#3]}
+% \fi
+% \makeatother
+%
+% \let\NameauthName\MyName
+% \let\NameauthLName\MyName
+% \let\NameauthFName\MyName
+%
+% \ForgetName[Albert]{Einstein}
+% \ForgetName{Miyazaki, Hayao}
+%
+% We want ``Albert Einstein [reportedly] said'',
+% ``Miyazaki Hayao [supposedly] said'',
+% ``Einstein [reportedly] said'', and
+% ``Miyazaki [supposedly] said''.
+%
+% We get ``\Name[Albert]{Einstein} [reportedly] said'',
+% ``\Name{Miyazaki, Hayao} [supposedly] said'',
+% ``\Name[Albert]{Einstein} [reportedly] said'', and
+% ``\Name{Miyazaki, Hayao} [supposedly] said''.
+% \end{quote}
% \endgroup^^A General format hook redefinition
-% \negmedskip
%
% \ReturnLink
%
-% \begin{Quote}{\ForgetThis\Name{Confucius}, \textit{The Analects}, C II}
-% He who exercises government by means of his virtue may be compared to the north polar star, which keeps its place and all the stars turn towards it.
-% \end{Quote}
-%
% \newpage
%
% \section{Technical Notes and Tips}
@@ -9335,65 +10142,20 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \subsection{Tips: General}
%
% \begin{itemize}
-% \item A missing square bracket or curly brace can cause errors like
-% ``\texttt{Paragraph ended}'' and ``\texttt{Missing} \meta{grouping token}
-% \texttt{inserted.}''
-% \item Ensure that macros and conditionals used in name arguments are
-% defined in the preamble or outermost scope.
-% \item Because \cmd{\CapThis} segments a name argument, using it with
-% macros in name arguments can cause errors if not used with alternate
-% formatting (Section~\ref{sec:AltFormat}).
-% \item Something like |\edef\foo{\CapThis\Name{bar}}| will fail. Yet
-% one can use |\CapThis\Name{bar}| as an argument to |\edef\foo#1{#1}|.
-% \item In \texttt{dtx} files, put the \texttt{nameauth} environment and
-% tags in the \texttt{<driver>} section preamble. Do not, however put
-% any \cmd{\newif} statements there because they cannot be placed between
-% \texttt{\textbackslash iffalse} and \texttt{\textbackslash fi}. Save the
-% \cmd{\newif} statements for the ``commented'' part.
+% \item Technical details about package development and testing are in \texttt{README.md}.
+% \item Both \texttt{compat.tex} and \texttt{examples.tex} contain useful information.
+% \item Do not put naming macros withing a macro defined by \cmd{\edef}.
+% Yet naming macros can be passed as arguments to such a macro.
+% \item In \texttt{dtx} files, the \texttt{nameauth} environment and initial tagging
+% macros work easiest in the \texttt{<driver>} section preamble. Yet if any of these
+% contains one or more \cmd{\newif} statements, they must go in the ``commented part''
+% since the preamble falls between \texttt{\textbackslash iffalse} and
+% \texttt{\textbackslash fi}.
% \end{itemize}
%
% \subsection[Tips: Indexing]{Tips: Indexing and Sorting}
% \label{sec:DebugSort}
%
-% The following warnings are always active. These warnings are issued when the following actions are attempted, but are \emph{not allowed} unless certain package options are used:
-%
-% \begin{itemize}
-% \item Use \cmd{\SeeAlso} before \cmd{\IndexName} or a naming macro.
-% \item Use \cmd{\PretagName} with the \texttt{nopretag} option.
-% \item Use \cmd{\IndexRef} with an extant name.
-% The \texttt{oldsee} option permits this.
-% \item Put \cmd{\SkipIndex} before \cmd{\IndexName} and \cmd{\IndexRef}.
-% The \texttt{oldsee} option permits this.
-% \item Prevent \cmd{\SkipIndex} from remaining active after being done
-% with \cmd{\PName} and \cmd{\PName*}. Only when the \texttt{oldreset}
-% option is used, do not reset \cmd{\SkipIndex} and warn if is effects
-% remain active.
-% \end{itemize}
-%
-% Many warnings occur only when the \texttt{verbose} package option is used. These are less likely to indicate a serious problem, but might be helpful:
-%
-% \begin{itemize}
-% \item When the following actions are attempted, they are \emph{not allowed}
-% unless certain package options are used:
-% \begin{itemize}
-% \item Use \cmd{\IndexName} or a naming macro with a cross-reference
-% or exclusion.
-% \item Use \cmd{\IndexRef} with a cross-reference or exclusion.
-% \item Use \cmd{\ExcludeName}, \cmd{\IncludeName}, \cmd{\TagName},
-% or \cmd{\UntagName} with a cross-reference.
-% \item Only if the \texttt{oldsee} option is used, instead of preventing
-% \cmd{\IndexRef} to create an xref on top of an extant name, just warn
-% if a name exists and creates a \textit{see} reference, which
-% prevents further page entries for that name.
-% \end{itemize}
-% \item When the following actions are attempted, they are \emph{permitted.}
-% \begin{itemize}
-% \item Use \cmd{\ExcludeName} with an extant name.
-% \item Use \cmd{\IncludeName*} with a cross-reference.
-% \item Use \cmd{\PretagName} to sort a cross-reference.
-% \end{itemize}
-% \end{itemize}
-%
% \begin{itemize}
% \item Two names may look alike on the page, but their name patterns can
% differ, creating spurious index entries. Check the \texttt{idx} file
@@ -9412,18 +10174,18 @@ and version 1.3 or later is part of all distributions of LaTeX version
% could be of assistance.
% \item If an entry is sorted incorrectly in the index, check the following:
% \begin{itemize}
-% \item Are there any ac tive characters, spaces, or control sequences
+% \item Are there any active characters, spaces, or control sequences
% in the name arguments? Use \cmd{\PretagName}.
-% \item Is alternate formatting used consistently? Are any names used
-% within sections of alternate formatting ever used outside of them?
+% \item Is alternate formatting used consistently? Are names used
+% within sections of alternate formatting used outside of them?
% \item Are macros in the name arguments that can expand differently
% under different conditions preceded by \cmd{\noexpand}?
% \end{itemize}
% \end{itemize}
%
-% Extra spaces are significant when sorting index entries, yet usually are not significant in the body text. Macros that use \cmd{\protected@edef} can add spaces to index entries. Because \textsf{nameauth} must work with classes that write index entries to \texttt{aux} files, its macros must use \cmd{\protected@edef}. The only way to verify this is to inspect the \texttt{idx} file. We show this below:
+% Using \cmd{\protected@edef} in macros can add spaces to index entries. The \textsf{nameauth} macros must use \cmd{\protected@edef} to work with classes that write index entries to \texttt{aux} files. One must check this in the \texttt{idx} file. We show this below:
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \makeatletter
% \newcommand\Idx[1]{\protected@edef\arg{#1}\index{\arg}}
@@ -9442,11 +10204,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \subsection[Tips: Name Args]{Tips: Macros in Name Arguments}
%
% \begin{itemize}
+% \item A missing square bracket or curly brace in name arguments can cause errors like
+% ``\texttt{Paragraph ended}'' and ``\texttt{Missing} \meta{grouping token}
+% \texttt{inserted.}''
% \item Use alternate formatting to avoid potential problems, especially
-% when using \cmd{\CapThis} (Sections~\ref{sec:AltFormat},
+% when using \cmd{\CapThis}, which segments arguments (Sections~\ref{sec:AltFormat},
% \ref{sec:AdvCustomize}).
-% \item |\SkipIndex\Name{\noexpand\empty}| will not trigger a package error,
-% while |\SkipIndex\Name{\empty}| will trigger an error.
% \item Use \cmd{\noexpand}\meta{macro} in name macro arguments as
% a best practice.
% \item Macros used in name arguments must be defined either in the
@@ -9461,10 +10224,9 @@ and version 1.3 or later is part of all distributions of LaTeX version
% and cannot do. See more about this issue and \cmd{\newcommand} on
% \href{https://tex.stackexchange.com/questions/51733/global-renewcommand-equivalent-of-global-def}
% {\bfseries this page}.
+% \item Below we show general aspects of scoping to apply them to this package:
% \end{itemize}
%
-% Below we demonstrate how scoping rules work:
-%
% \begin{VerbatimOut}{\jobname.tmp}
% \newif\ifCondA
% \newcommand\MacroA{}
@@ -9476,59 +10238,51 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \global\MacroC
% \global\CondAtrue
% \endgroup
-% \end{VerbatimOut}
-%
-% \begin{quote}\small
-% \VerbatimInput[gobble=0]{\jobname.tmp}
-% \end{quote}
-% \input{\jobname.tmp}
%
% \begin{itemize}
% \item \ifdefined\CondAtrue \texttt{\textbackslash ifCondA} is defined
% \else \texttt{\textbackslash ifCondA} is not defined \fi
% in the outer scope (outer definition).
+%
% \item \ifdefined\MacroA \cmd{\MacroA} is defined
% \else \cmd{\MacroA} is not defined \fi
% in the outer scope (outer definition).
+%
% \item \ifdefined\CondBtrue \texttt{\textbackslash ifCondB} is defined
% \else \texttt{\textbackslash ifCondB} is not defined \fi
% in the outer scope (local definition).
+%
% \item \ifdefined\CondCtrue \texttt{\textbackslash ifCondC} is defined
% \else \texttt{\textbackslash ifCondC} is not defined \fi
% in the outer scope (no \cmd{\global}\cmd{\newif}).
+%
% \item \ifdefined\MacroB \cmd{\MacroB} is defined
% \else \cmd{\MacroB} is not defined \fi
% in the outer scope (no \cmd{\global}\cmd{\newcommand}).
+%
% \item \cmd{\MacroC} \ifdefined\MacroC is defined
% \else is not defined \fi
% in the outer scope (local definition).
+%
% \item \cmd{\MacroD} \ifdefined\MacroD is defined
% \else is not defined \fi
% in the outer scope (\cmd{\global} affects \cmd{\def} in \cmd{\MacroC}).
+%
% \item \ifCondA \texttt{\textbackslash ifCondA} is true
% \else \texttt{\textbackslash ifCondA} is false \fi
% (\cmd{\global} assignment works, not instantiation).
% \end{itemize}
+% \end{VerbatimOut}
+%
+% \begin{quote}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
%
-% Any macro that is used in the argument of a naming macro must be defined in all scopes in which that name is used. Below we deactivate indexing and show this:
+% \input{\jobname.tmp}
+% \end{quote}
%
-% \begin{quote}\small
-% \IndexInactive
-% \begin{Verbatim}
-% \begin{nameauth}
-% \< Testi & & \noexpand\TESTi & >
-% \< Testii & & \noexpand\TESTii & >
-% \end{nameauth}
-% \def\TESTi{Test One}
-% \indent \hbox to 10em{(Outer 1) \Testi\hfill}
-% \begingroup
-% (Inner 1) \Testi\\
-% \def\TESTii{Test Two}
-% \hbox to 10em{(Inner 2) \Testii\hfill}
-% \ndegroup
-% (Outer 2) \unless\ifdefined\TESTii \cmd{\TESTii} undefined\fi
-% \end{Verbatim}
+% Any macro that is used in the argument of a naming macro must be defined in all scopes in which that name is used. The names themselves are global, but macros in their arguments are not guaranteed to be so:
%
+% \begin{VerbatimOut}{\jobname.tmp}
% \begin{nameauth}
% \< Testi & & \noexpand\TESTi & >
% \< Testii & & \noexpand\TESTii & >
@@ -9541,20 +10295,28 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \hbox to 10em{(Inner 2) \Testii\hfill}
% \endgroup
% (Outer 2) \unless\ifdefined\TESTii \cmd{\TESTii} undefined\fi
+% \end{VerbatimOut}
+%
+% \begin{quote}
+% \IndexInactive
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+%
+% \input{\jobname.tmp}
% \end{quote}
%
-% \newpage
%
% \subsection[Active Unicode]{Active Unicode Characters}
% \label{sec:Unicode}
%
% \subsubsection{General Information}
%
-% With |\usepackage[T1]{fontenc}|, \texttt{latex} and \texttt{pdflatex} can use many active Unicode characters automatically. Use \cmd{\PretagName} to sort names with these characters (Section~\ref{sec:IndexSort}). More Unicode characters can be made available when using fonts with TS1 glyphs (pages 455--463 in \textit{The Latex Companion}). Compare \href{https://tug.ctan.org/info/symbols/comprehensive/}{\bfseries this page} or type either \texttt{texdoc comprehensive}, \texttt{texdoc symbols-A4}, or \texttt{texdoc symbols-letter}.
+% Both \texttt{xelatex} and \texttt{lualatex} support Unicode natively. In \texttt{pdflatex}, this happens with active characters. There are features (e.g., in \textsf{microtype}) that require \texttt{pdflatex}. Both \texttt{makeindex} and \texttt{xindy} have their own design choices.
+%
+% With |\usepackage[T1]{fontenc}|, \texttt{latex} and \texttt{pdflatex} can use many active Unicode characters automatically. Use \cmd{\PretagName} to sort names with these characters (Section~\ref{sec:IndexSort}). More Unicode characters can be made available when using fonts with TS1 glyphs (pages 455--463 in \textit{The Latex Companion}). Compare \href{https://tug.ctan.org/info/symbols/comprehensive/}{\bfseries this page} or type either \texttt{texdoc comprehensive}, \texttt{texdoc symbols-A4}, or \texttt{texdoc symbols-letter} for more information.
%
% Active Unicode characters work much like macros. When using a font with TS1 glyphs and slots, the following preamble snippet is an example of how one might add more Unicode characters, such as a long s (\textit{s-medialis}):
%
-% \begin{quote}\small
+% \begin{quote}
% \begin{Verbatim}
% \usepackage[utf8]{inputenc} % For older TL releases
% \usepackage[TS1,T1]{fontenc}
@@ -9570,47 +10332,124 @@ and version 1.3 or later is part of all distributions of LaTeX version
% In Congreſs, July 4, 1776
% \end{quote}
%
-% Many Unicode characters have native support in \texttt{xelatex} and
-% \texttt{lualatex}, but not in \texttt{pdflatex}. Yet the latter has
-% features (e.g., in \textsf{microtype}) that others lack. The features of
-% \texttt{makeindex} do not always equate to those in \texttt{xindy}.
-% Those differences impact design choices.
-% Below we group characters by accents and diacritical marks:
+% Below we group characters that are supported in \texttt{pdflatex}
+% without additional modification by accents and diacritical marks:
%
-% \begin{center}\large\bigstretch
+% \begin{center}\large
% \def\Bullet#1{\setbox0\hbox{#1}\raise 0.4ex\hbox
% to\wd0{\hfil\tiny\textbullet\hfil}}
% \def\bullet#1{\setbox0\hbox{#1}\raise 0.2ex\hbox
% to\wd0{\hfil\tiny\textbullet\hfil}}
-% \begin{tabular}{lll}\toprule
-% acute & Á Ć É Ǵ \Bullet{H} Í Ĺ &
-% á ć é ǵ \bullet{h} í ĺ \strut\\
-% & Ń Ó Ŕ Ś Ú Ý Ź &
-% ń ó ŕ ś ú ý ź \strut\\
-% \rowcolor{nagrey}grave & À \Bullet{C} È \Bullet{G} \Bullet{H} Ì Ò Ù &
-% à \bullet{c} è \bullet{g} \bullet{h} ì ò ù \strut\\
-% circumflex & Â Ĉ Ê Ĝ Ĥ Î Ĵ Ô Ŝ Û Ŵ Ŷ &
-% â ĉ ê ĝ ĥ î ĵ ô ŝ û ŵ ŷ \strut\\
-% \rowcolor{nagrey}tilde &
-% Ã \Bullet{C} \Bullet{E} \Bullet{G} \Bullet{H} Ĩ Ñ Õ Ũ &
-% ã \bullet{c} \bullet{e} \bullet{g} \Bullet{h} ĩ ñ õ ũ \strut\\
-% diaeresis\footnotemark & Ä \Bullet{C} Ë \Bullet{G} \Bullet{H} Ï Ö Ü Ÿ &
-% ä \bullet{c} ë \bullet{g} \bullet{h} ï ö ü ÿ \strut\\
-% \rowcolor{nagrey}cedilla & \Bullet{A} Ç \Bullet{E} Ģ Ķ Ļ Ņ Ŗ Ş Ţ &
-% \bullet{a} ç \bullet{e} ģ ķ ļ ņ ŗ ş ţ \strut\\
-% macron & Ā \Bullet{C} Ē Ḡ \Bullet{H} Ī Ō Ū Ǣ Ȳ &
-% ā \bullet{c} ē ḡ \bullet{h} ī ō ū ǣ ȳ \strut\\
-% \rowcolor{nagrey}breve & Ă \Bullet{C} \Bullet{E} Ğ \Bullet{H} Ĭ Ŏ Ŭ &
-% ă \bullet{c} \bullet{e} ğ \bullet {h} ĭ ŏ ŭ \strut\\
-% dot/dotless & Ḃ Ċ Ė Ġ \Bullet{H} İ Ż & ḃ ċ ė ġ \bullet{h} ı ż \strut\\
-% \rowcolor{nagrey}ogonek & Ą \Bullet{C} Ę \Bullet{G} \Bullet{H} Į Ǫ Ų &
-% ą \bullet{c} ę \bullet{g} \bullet{h} į ǫ ų \strut\\
-% caron & Ǎ Č Ď Ě Ǧ Ǐ Ǩ Ľ & ǎ č ď ě ǧ ǐ ǰ ǩ ľ \strut\\
-% & Ň Ǒ Ř Š Ť Ǔ Ž & ň ǒ ř š ť ǔ ž \strut\\
-% \rowcolor{nagrey}various & Å Æ Ð (eth) Đ (stroke) IJ\ Ł &
-% å æ ð đ ij\ ł \strut\\
-% \rowcolor{nagrey} & Ŋ Ø Œ Ő Ů Ű Ș Ț Þ &
-% ŋ ø œ ő ů ű ș ß ț þ \strut\\\bottomrule
+% \begin{tabular}{ll}\toprule
+% \rowcolor{nagrey}^^A
+% \bfseries Capitals & \strut\\
+%
+% acute & Á Ć \Bullet{D} É Ǵ \Bullet{H} Í \Bullet{J} \Bullet{K} Ĺ
+% Ń Ó Ŕ Ś \Bullet{T} Ú \Bullet{W} Ý Ź \strut\\
+%
+% \rowcolor{nagrey}^^A
+% grave & À \Bullet{C} \Bullet{D} È \Bullet{G} \Bullet{H} Ì \Bullet{J}
+% \Bullet{K} \Bullet{L} \Bullet{N} Ò \Bullet{R} \Bullet{S}
+% \Bullet{T} Ù \Bullet{W} \Bullet{Y} \Bullet{Z} \strut\\
+%
+% circumflex & Â Ĉ \Bullet{D} Ê Ĝ Ĥ Î Ĵ \Bullet{K} \Bullet{L}
+% \Bullet{N} Ô \Bullet{R} Ŝ \Bullet{T} Û Ŵ Ŷ
+% \Bullet{Z} \strut\\
+%
+% \rowcolor{nagrey}^^A
+% tilde & Ã \Bullet{C} \Bullet{D} \Bullet{E} \Bullet{G} \Bullet{H}
+% Ĩ \Bullet{J} \Bullet{K} \Bullet{L} Ñ Õ \Bullet{R}
+% \Bullet{S} \Bullet{T} Ũ \Bullet{W} \Bullet{Y}
+% \Bullet{Z} \strut\\
+%
+% diaeresis\footnotemark & Ä \Bullet{C} \Bullet{D} Ë \Bullet{G} \Bullet{H}
+% Ï \Bullet{J} \Bullet{K} \Bullet{L} \Bullet{N} Ö \Bullet{R}
+% \Bullet{S} \Bullet{T} Ü \Bullet{W} Ÿ \Bullet{Z} \strut\\
+%
+% \rowcolor{nagrey}^^A
+% cedilla & \Bullet{A} Ç \Bullet{D} \Bullet{E} Ģ \Bullet{H} \Bullet{I}
+% \Bullet{J} Ķ Ļ Ņ \Bullet{O} Ŗ Ş Ţ \Bullet{U} \Bullet{W}
+% \Bullet{Y} \Bullet{Z} \strut\\
+%
+% macron & Ā \Bullet{C} \Bullet{D} Ē Ḡ \Bullet{H} Ī \Bullet{J}
+% \Bullet{K} \Bullet{L} \Bullet{N} Ō \Bullet{R} \Bullet{S}
+% \Bullet{T} Ū Ǣ Ȳ \Bullet{Z} \strut\\
+%
+% \rowcolor{nagrey}^^A
+% breve & Ă \Bullet{C} \Bullet{D} \Bullet{E} Ğ \Bullet{H} Ĭ \Bullet{J}
+% \Bullet{K} \Bullet{L} \Bullet{N} Ŏ \Bullet{R} \Bullet{S}
+% \Bullet{T} Ŭ \Bullet{W} \Bullet{Y} \Bullet{Z} \strut\\
+%
+% dot/dotless & Ḃ Ċ \Bullet{D} Ė Ġ \Bullet{H} İ \Bullet{J} \Bullet{K}
+% \Bullet{L} \Bullet{N} \Bullet{O} \Bullet{R} \Bullet{S}
+% \Bullet{T} \Bullet{U} \Bullet{W} \Bullet{Y} Ż \strut\\
+%
+% \rowcolor{nagrey}^^A
+% ogonek & Ą \Bullet{C} \Bullet{D} Ę \Bullet{G} \Bullet{H} Į \Bullet{J}
+% \Bullet{K} \Bullet{L} \Bullet{N} Ǫ \Bullet{R} \Bullet{S}
+% \Bullet{T} Ų \Bullet{W} \Bullet{Y} \Bullet{Z} \strut\\
+%
+% caron & Ǎ Č Ď Ě Ǧ \Bullet{H} Ǐ \Bullet{J} Ǩ Ľ Ň Ǒ Ř Š Ť Ǔ \Bullet{W}
+% \Bullet{Y} Ž \strut\\
+%
+% \rowcolor{nagrey}^^A
+% various & Å Æ Ð (eth) Đ (stroke) IJ\ Ł
+% Ŋ Ø Œ Ő Ů Ű Ș Ț Þ \strut\\\midrule
+%
+% \\\midrule
+%
+% \rowcolor{nagrey}^^A
+% \bfseries Lowercase & \strut\\
+%
+% acute & á ć \bullet{d} é ǵ \bullet{h} í \bullet{j} \bullet{k} ĺ
+% ń ó ŕ ś \bullet{t} ú \bullet{w} ý ź \strut\\
+%
+% \rowcolor{nagrey}^^A
+% grave & à \bullet{c} \bullet{d} è \bullet{g} \bullet{h} ì \bullet{j}
+% \bullet{k} \bullet{l} \bullet{n} ò \bullet{r} \bullet{s}
+% \bullet{t} ù \bullet{w} \bullet{y} \bullet{z} \strut\\
+%
+% circumflex & â ĉ \bullet{d} ê ĝ ĥ î ĵ \bullet{k} \bullet{l} \bullet{n}
+% ô \bullet{r} ŝ \bullet{t} û ŵ ŷ \bullet{z} \strut\\
+%
+% \rowcolor{nagrey}^^A
+% tilde & ã \bullet{c} \bullet{d} \bullet{e} \bullet{g} \Bullet{h} ĩ
+% \bullet{j} \bullet{k} \bullet{l} ñ õ \bullet{r} \bullet{s}
+% \bullet{t} ũ \bullet{w} \bullet{y} \bullet{z} \strut\\
+%
+% diaeresis & ä \bullet{c} \bullet{d} ë \bullet{g} \bullet{h} ï \bullet{j}
+% \bullet{k} \bullet{l} \bullet{n} ö \bullet{r} \bullet{s}
+% \bullet{t} ü \bullet{w} ÿ \bullet{z} \strut\\
+%
+% \rowcolor{nagrey}^^A
+% cedilla & \bullet{a} ç \bullet{d} \bullet{e} ģ \bullet{h} \bullet{i}
+% \bullet{j} ķ ļ ņ \bullet{o} ŗ ş ţ \bullet{u} \bullet{w}
+% \bullet{y} \bullet{z} \strut\\
+%
+% macron & ā \bullet{c} \bullet{d} ē ḡ \bullet{h} ī \bullet{j}
+% \bullet{k} \bullet{l} \bullet{n} ō \bullet{r}
+% \bullet{s} \bullet{t} ū ǣ ȳ \bullet{z} \strut\\
+%
+% \rowcolor{nagrey}^^A
+% breve & ă \bullet{c} \bullet{d} \bullet{e} ğ \bullet {h} ĭ
+% \bullet{j} \bullet{k} \bullet{l} \bullet{n} ŏ \bullet{r}
+% \bullet{s} \bullet{t} ŭ \bullet{w} \bullet{y}
+% \bullet{z} \strut\\
+%
+% dot/dotless & ḃ ċ \bullet{d} ė ġ \bullet{h} ı \bullet{j} \bullet{k}
+% \bullet{l} \bullet{n} \bullet{o} \bullet{r} \bullet{s}
+% \bullet{t} \bullet{u} \bullet{w} \bullet{y} ż \strut\\
+%
+% \rowcolor{nagrey}^^A
+% ogonek & ą \bullet{c} \bullet{d} ę \bullet{g} \bullet{h} į \bullet{j}
+% \bullet{k} \bullet{l} \bullet{n} ǫ \bullet{r} \bullet{s}
+% \bullet{t} ų \bullet{w} \bullet{y} \bullet{z} \strut\\
+%
+% caron & ǎ č ď ě ǧ \bullet{h} ǐ ǰ ǩ ľ ň ǒ ř š ť ǔ \bullet{w}
+% \bullet{y} ž \strut\\
+%
+% \rowcolor{nagrey}^^A
+% various & å æ ð đ ij\ ł ŋ ø œ ő ů ű ș ß ț þ \strut\\\bottomrule
% \end{tabular}
% \footnotetext{A diaeresis mark is one way to indicate a sound change
% (\textit{Umlaut}). German originally used a superscript \textsf{e} over
@@ -9622,15 +10461,21 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \newpage
%
% \subsubsection[Compatibility]{Compatibility: Old and New}
+% \label{sec:CompatON}
%
-% Since 2018, changes in the way that \texttt{pdflatex} and \texttt{latex} handle Unicode characters have made indexing simpler and more intuitive, e.g.
+% Changes in the way that \texttt{pdflatex} and \texttt{latex} handle Unicode characters since 2018 have made indexing simpler and more intuitive, e.g.
%
-% \begin{center}\small\medstretch
+% \begin{center}
% \begin{tabular}{rllrll}\toprule
-% pre-2018 text & & index & post-2018 text & & index\\
-% \rowcolor{nagrey} ä & \textrightarrow &
+% \rowcolor{nagrey}^^A
+% \bfseries Pre-2018 & & \bfseries Index &
+% \bfseries Post-2018 & & \bfseries Index\\
+%
+% ä & \textrightarrow &
% \texttt{\cmd{\IeC\textvisiblespace}\{\cmd{\"a}\}} &
% ä & \textrightarrow & \texttt{ä}\\
+%
+% \rowcolor{nagrey}^^A
% æ & \textrightarrow &
% \texttt{\cmd{\IeC\textvisiblespace}\{\cmd{\ae\textvisiblespace}\}} &
% æ & \textrightarrow & \texttt{æ}\\\bottomrule
@@ -9639,36 +10484,39 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% The \cmd{\IeC} macro plus its argument then would expand to \cmd{\T1} plus its argument, which would occur especially if accented characters were written out to a file, then read in again. This could cause a number of problems.
%
-% One can test for this change and take different approaches as needed. In making such choices, one may need to consult the entries in the \texttt{idx} and \texttt{ind} files to see how the name arguments are being indexed. The basic test is:
+% There are two ways to test if one is working with a newer or older version of \texttt{pdflatex} or \texttt{latex}. The first involves \LaTeX\ kernel macros in the document preamble to check the format date. We check if the date is later than the first use of the file \texttt{utf8-2018.def}, If that is the case, we can define macros or set Boolean flags, which we can test repeatedly. For example, in the document preamble we could have:
%
-% \begin{quote}\small
-% \cmd{\IfFileExists\{utf8-2018.def\}}\marg{new}\marg{old}
+% \begin{quote}
+% \begin{Verbatim}
+% \makeatletter
+% \@ifl@t@r\fmtversion{2018/10/05}{\def\nameauthltx{}}{}
+% \@ifl@t@r\fmtversion{2018/04/30}{\def\nameauthxp{}}{}
+% \makeatother
+% \end{Verbatim}
% \end{quote}
%
-% Now we apply the test to an example. Before 2018, some index styles like \texttt{gind.ist} could not work with characters that contained macrons:
-%
-% \begin{center}\large
-% \begin{tabular}{ll}
-% Ā Ē Ḡ Ī Ō Ū Ǣ Ȳ & ā ē ḡ ī ō ū ǣ ȳ\\
-% \end{tabular}
-% \end{center}
+% The tests above apply to two things that are pertinent to \textsf{nameauth}. The first is the presence of \texttt{utf8-2018.def}. The second involves changes in \textsf{xparse} that could impact \textsf{nameauth}, which we used silently in Section~\ref{sec:ChangeParse}.
+% Another test checks directly for the presence of \texttt{utf8-2018.def}:
%
-% Since 2018, those restrictions have been removed. In order to create a document that can work with old or new versions of \LaTeX, one can conditionally use macrons or not. In a recent version of \LaTeX, one will see a macron in the name
-% \ifPDFTeX^^A
-% \IfFileExists{utf8-2018.def}^^A
-% {\Name{Ghazāli}}{\Name{Ghazali}}^^A
-% \else\Name{Ghazāli}^^A
-% \fi.
-% Otherwise, no macron will be present. We avoid errors that could arise with control sequences like \cmd{\=a} in the index when using \texttt{makeindex} and \texttt{gind.ist} by using the following snippet:
+% \begin{quote}
+% \begin{Verbatim}
+% \IfFileExists{utf8-2018.def}
+% {do if exists}
+% {do if absent}
+% \end{Verbatim}
+% \end{quote}
%
-% \begin{quote}\small
+% Now we apply the test to an example. Before 2018, some index styles like \texttt{gind.ist} could not work with characters that contained macrons. Since 2018, those restrictions have been removed.
+% To create a document that can work with old or new versions of \texttt{pdflatex} and \texttt{latex}, one can choose to use macrons or not. In a recent version, one will see macrons in the following names, otherwise, no macron will be present.
+% \begin{quote}
% \begin{Verbatim}
-% \ifPDFTeX
-% \IfFileExists{utf8-2018.def}%
-% {\Name{Ghazāli}}{\Name{Ghazali}}%
-% \else\Name{Ghazāli}%
-% \fi
+% \ifdefined\nameauthltx \Name{Ghazāli} \else \Name{Ghazali}\fi
+%
+% \IfFileExists{utf8-2018.def}{\Name{Ghazāli}}{\Name{Ghazali}}
% \end{Verbatim}
+% \ifdefined\nameauthltx \Name{Ghazāli} \else \Name{Ghazali}\fi
+%
+% \IfFileExists{utf8-2018.def}{\Name{Ghazāli}}{\Name{Ghazali}}
% \end{quote}
%
% The challenge of compatibility arises in this manual in a few instances, which we summarize below to mention specific resources without going too far afield.
@@ -9676,35 +10524,43 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \begin{itemize}
% \item To use older distributions, one must include the \textsf{textcomp}
% package for backward compatibility. Otherwise it is not needed in
-% recent \TeX\ distributions, e.g., since 2019.
-% \item We \cmd{\input} the included snippet \texttt{compat.tex} to
-% allow \texttt{examples.tex} and the test files (see \texttt{README.md})
-% to be compatible with different \LaTeX\ engines and older \TeX\
-% distributions. The file \texttt{examples.tex} includes additional
-% examples that deal with compatibility.
+% recent \TeX\ distributions, e.g., since 2018.
% \item Use of certain text elements, such as \cmd{\dotfill} within
% tables, has become more permissive in recent \TeX\ distributions.
-% This manual avoids situations that would cause compatibility
-% problems in older distributions.
-% \end{itemize}
+% \item The file \texttt{examples.tex} (see \texttt{README.md}) includes
+% additional code snippets that deal with compatibility.
+% \item We \cmd{\input} the included snippet \texttt{compat.tex} in
+% \texttt{examples.tex} to permit use with different \LaTeX\ engines
+% and older \TeX\ distributions.
+% \end{itemize}\negbigskip
+%
+% \begin{InfoBox}
+% Users are encouraged to view and modify \texttt{compat.tex} to meet their own needs.
+% \end{InfoBox}\negbigskip
%
% \subsubsection[Fragility]{Fragility of Active Unicode}
%
% \TeX\ macros that partition their arguments can break active Unicode characters.The simple macro |\def\foo#1#2#3!{<#1#2><#3>}| takes three arguments, groups the first two, then the third, followed by a delimiter that ends the argument list:
%
-% \begin{center}\small\medstretch
+% \begin{center}
% \def\foo#1#2#3!{<#1#2><#3>}
% \begin{tabular}{llll}\toprule
-% Argument & Macro & Engine & Result\\
-% \rowcolor{nagrey}|abc| & |\foo abc!| & (any) & \foo abc!\\
-% \rowcolor{nagrey}|{æ}bc| & |\foo {æ}bc!| & (any) & \foo {æ}bc!\\
-% \rowcolor{nagrey}|\ae bc| & |\foo \ae bc!| & (any) & \foo \ae bc!\\
-% |æbc| & |\foo æbc!| & \texttt{xelatex} &
+% \rowcolor{nagrey}^^A
+% \bfseries Arg. & \bfseries Macro & \bfseries Engine & \bfseries Result\\
+%
+% |abc| & |\foo abc!| & (any) & \foo abc!\\
+% |{æ}bc| & |\foo {æ}bc!| & (any) & \foo {æ}bc!\\
+% |\ae bc| & |\foo \ae bc!| & (any) & \foo \ae bc!\\
+%
+% \rowcolor{nagrey}^^A
+% |æbc| & |\foo æbc!| & \texttt{xelatex} &
% \ifxetex\foo æbc!\else<æb><c>\fi\\
-% |æbc| & |\foo æbc!| & \texttt{lualatex} &
+% \rowcolor{nagrey}^^A
+% |æbc| & |\foo æbc!| & \texttt{lualatex} &
% \ifluatex\foo æbc!\else<æb><c>\fi\\
-% \rowcolor{nagrey}|æbc| & |\foo æbc!| & \texttt{pdflatex} & \foo æbc!\\
-% \rowcolor{nagrey}|æbc| & |\foo æbc!| & \texttt{latex} & \foo æbc!\\
+%
+% |æbc| & |\foo æbc!| & \texttt{pdflatex} & \foo æbc!\\
+% |æbc| & |\foo æbc!| & \texttt{latex} & \foo æbc!\\
% \bottomrule
% \end{tabular}
% \end{center}
@@ -9717,8 +10573,9 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \ReturnLink
%
-% \begin{Quote}{\Name{Plato}, opening statement in \textit{Cratylus}}
-% \Name{Hermogenes}: I should explain to you, \Name{Socrates}, that our friend \Name{Cratylus} has been arguing about names; he says that they are natural and not conventional; not a portion of the human voice which men agree to use; but that there is a truth or correctness in them, which is the same for Hellenes as for barbarians. Whereupon I ask him, whether his own name of \Name{Cratylus} is a true name or not, and he answers `Yes.' And \Name{Socrates}? `Yes.' Then every man's name, as I tell him, is that which he is called. To this he replies{---}`If all the world were to call you \Name{Hermogenes}, that would not be your name.' And when I am anxious to have a further explanation he is ironical and mysterious, and seems to imply that he has a notion of his own about the matter, if he would only tell, and could entirely convince me, if he chose to be intelligible.
+% \begin{Quote}{\Name{Plato}, opening statement in \textit{Cratylus} (c. 388 \textsc{bc})}
+% \Name{Hermogenes}: I should explain to you, \Name{Socrates}, that our friend \Name{Cratylus} has been arguing about names; he says that they are natural and not conventional; not a portion of the human voice which men agree to use; but that there is a truth or correctness in them, which is the same for Hellenes as for barbarians.^^A
+% \index{philosophers, quotes of\noexpand\string|hyperpage}
% \end{Quote}
%
% \newpage
@@ -9733,7 +10590,6 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \fi
%
% \section{Implementation}
-% \small
%
% This package has been reorganized so that the manual and the package
% have substantially the same ordering. This repetition should aid
@@ -9742,7 +10598,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \subsection{Boolean Flags}
%
% The \textsf{nameauth} package is a parser. The flags in this section
-% show the state of that parser.
+% show and change the state of that parser.
%
% \subsubsection{Flow Control}
%
@@ -9801,7 +10657,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \texttt{\textbackslash ifNameauthObsolete}}
% reflect the last name type evaluated by any macro that takes
% name arguments. The first shows whether or not we have a Western
-% or non-Western name. The second shows the kind of non-Western
+% or nonwestern name. The second shows the kind of nonwestern
% syntax used. These are not reset after evaluation.
%
% \begin{macrocode}
@@ -9871,7 +10727,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \texttt{\textbackslash if@nameauth@FullName} is true for a long
% name form. \texttt{\textbackslash if@nameauth@FirstName} causes only
-% Western forenames or non-Western surnames to be displayed when a shorter
+% Western forenames or nonwestern surnames to be displayed when a shorter
% form is used. The default is to reset both globally on a per-name basis.
%
% \texttt{\textbackslash if@nameauth@ShortSNN} is used with
@@ -10028,14 +10884,17 @@ and version 1.3 or later is part of all distributions of LaTeX version
\newif\if@nameauth@OldSee
% \end{macrocode}
% These three flags are used only for backward compatibility. The first
-% broadly determines how per-name flags are reset; the second affects the
-% behavior of \cmd{\JustIndex}; and the third toggles whether or not the
-% name argument token registers are set globally.
+% broadly determines how per-name flags are reset. The second affects the
+% behavior of \cmd{\JustIndex}. The third toggles whether or not the
+% name argument token registers are set globally. The fourth toggles the
+% inclusion of \textsf{xargs} and \textsf{suffix} for legacy cases where
+% user customizations were made.
%
% \begin{macrocode}
\newif\if@nameauth@OldReset
\newif\if@nameauth@OldPass
\newif\if@nameauth@OldToks
+\newif\if@nameauth@OldArgs
% \end{macrocode}
%
% \subsection[Registers, Hooks, Values]
@@ -10161,7 +11020,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \begin{macro}{\NameauthPattern}
% \changes{3.7}{2023/02/03}{Added}
% Gives access to the current name control pattern. This hook can be
-% used, e.g., in formatting hooks to recall a name data tag
+% used, e.g., in formatting hooks to recall a name tag
% (Section~\ref{sec:DataTagHooks}). We preset it to an empty value. With
% every call to a macro that takes name arguments
% (Section~\ref{sec:NameArgMacros}), this hook is updated.
@@ -10255,7 +11114,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\DeclareOption{boldface}{\renewcommand*\NamesFormat{\bfseries}}
% \end{macrocode}
%
-% \subsubsection{Alternate Formatting}
+% \subsubsection[Alternate Format]{Alternate Formatting}
%
% Enable alternate formatting.
%
@@ -10282,6 +11141,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\DeclareOption{oldpass}{\@nameauth@OldPasstrue}
\DeclareOption{oldtoks}{\@nameauth@OldTokstrue}
\DeclareOption{oldsee}{\@nameauth@OldSeetrue}
+\DeclareOption{oldargs}{\@nameauth@OldArgstrue}
% \end{macrocode}
%
% \subsection{Package Initialization}
@@ -10297,10 +11157,21 @@ and version 1.3 or later is part of all distributions of LaTeX version
\ProcessOptions\relax
\RequirePackage{etoolbox}
\RequirePackage{trimspaces}
-\RequirePackage{suffix}
-\RequirePackage{xargs}
+\RequirePackage{xparse}
% \end{macrocode}
+% Test for the OldArgs flag and include legacy packages
+% if the flag is true.
%
+% \begin{macrocode}
+\if@nameauth@OldArgs
+ \RequirePackage{xargs}
+ \RequirePackage{suffix}
+\fi
+% \end{macrocode}
+%
+% \newpage
+%
+% \addtocontents{toc}{\protect\goodbreak}
% \subsection{Internal Macros}
% \label{sec:InternalMacros}
%
@@ -10500,6 +11371,9 @@ and version 1.3 or later is part of all distributions of LaTeX version
\expandafter\def\expandafter\@nameauth@testarg%
\expandafter{\@nameauth@GetSuff{#1}}%
% \end{macrocode}
+%
+% \newpage\noindent
+%
% This following token register assignment looks weird, but it is
% how we get a test that works.
%
@@ -10772,8 +11646,6 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{macrocode}
% \end{macro}
%
-% \newpage
-%
% \subsubsection*{\hfil Parsing: Breaking, Spaces, and Commas}
%
% \begin{macro}{\@nameauth@AddPunct}
@@ -10870,11 +11742,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
\ifx\@nameauth@A\@empty
\ifx\@nameauth@C\@empty
% \end{macrocode}
-% This decision path is for non-Western names. The \texttt{\#1} argument
-% recurs below where \cmd{\@nameauth@SB} is present. Thus, for output
-% to the text, the \texttt{\#1} argument must test both \cmd{\@nameauth@C}
-% and \cmd{\@nameauth@SB}, and swap the former with the latter if
-% necessary. For output to the index or for handling control sequences,
+% This path is for nonwestern names. The \texttt{\#1} argument is
+% used both here and below when \cmd{\@nameauth@SB} is present. The
+% \texttt{\#1} path always corresponds to the present syntax.
+% Thus, when printing names in the text, the \texttt{\#1} argument
+% must test both \cmd{\@nameauth@C} and \cmd{\@nameauth@SB}, replacing
+% the latter with former ifit exists. With indexing and other macros,
% one ignores \cmd{\@nameauth@C}.
%
% \begin{macrocode}
@@ -10884,8 +11757,8 @@ and version 1.3 or later is part of all distributions of LaTeX version
\else
\ifx\@nameauth@SB\@empty
% \end{macrocode}
-% The \texttt{\#2} argument is only for non-Western names that use
-% the obsolete syntax. In the \texttt{\#2} argument \cmd{\@nameauth@SB}
+% The \texttt{\#2} argument is only for nonwestern names that use
+% the obsolete syntax. Here \cmd{\@nameauth@SB}
% never occurs. For indexing and control sequences, one cannot ignore
% the use of \cmd{\@nameauth@C} in this path.
%
@@ -10897,7 +11770,8 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{macrocode}
% But if both \cmd{\@nameauth@SB} and \cmd{\@nameauth@C} are present,
% we invoke the \texttt{\#1} argument instead and let it do any further
-% testing and processing.
+% testing and processing. That shows we are again using the current
+% syntax with a potential name swap.
%
% \begin{macrocode}
\let\NameauthPattern\@nameauth@csb%
@@ -10907,11 +11781,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
\fi
\else
% \end{macrocode}
-% This decision path is for Western names. In those cases where one
-% must work with name forms in the text, somewhere in the \texttt{\#3}
+% This decision path is for Western names. When printing
+% names in the text, somewhere in the \texttt{\#3}
% argument one must test for \cmd{\@nameauth@C} and swap it for
-% \cmd{\@nameauth@A}, as well as accounting for the presence or absence
-% of \cmd{\@nameauth@SB}. Otherwise, for indexing and control sequences,
+% \cmd{\@nameauth@A}. One also must check for and handle
+% \cmd{\@nameauth@SB}. Otherwise, for indexing and control sequences,
% one ignores \cmd{\@nameauth@C} in this path and handles
% \cmd{\@nameauth@SB} appropriately.
%
@@ -11088,13 +11962,14 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{2.6}{2016/09/19}{Better indexing}
% \changes{3.0}{2016/10/26}{Redesigned}
% \changes{3.1}{2017/01/13}{New workflow}
-% \changes{3.3}{2020/02/20}{global flag reset}
+% \changes{3.3}{2020/02/20}{Global flag reset}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% \Name*[Marc van]{Dongen} provided the original basic structure.
% Parsing, indexing, and formatting are more modularized than
% in earlier versions.
%
% \begin{macrocode}
-\newcommandx*\@nameauth@Name[3][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\@nameauth@Name}{O{} m O{}}
{%
% \end{macrocode}
% Both \cmd{\@nameauth@Name} and \cmd{\AKA} engage the lock below,
@@ -11263,7 +12138,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\let\SNN\rootb%
\@nameauth@Choice
% \end{macrocode}
-% Non-Western names, current syntax.
+% Nonwestern names, current syntax.
% We test \cmd{\argc} and \cmd{\suffb} as needed.
%
% \begin{macrocode}
@@ -11277,7 +12152,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\@nameauth@MakeCS{\@nameauth@csb#4}%
}%
% \end{macrocode}
-% Non-Western names, obsolete syntax. Here \cmd{\argc} is significant.
+% Nonwestern names, obsolete syntax. Here \cmd{\argc} is significant.
%
% \begin{macrocode}
{%
@@ -11331,7 +12206,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{3.0}{2016/10/26}{Added}
% \changes{3.02}{2016/11/01}{Restrict \cmd{\ForceFN}}
% \changes{3.3}{2020/02/20}{global flag reset}
-% Arrange forms of non-Western names. We inherit macros from
+% Arrange forms of nonwestern names. We inherit macros from
% the parser and only use this macro in the local scope of the parser.
%
% \begin{macrocode}
@@ -11581,8 +12456,6 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{macrocode}
% \end{macro}
%
-% \newpage
-%
% \subsection[User Macros: Prefixes]{For Users: Prefix Macros}
% \label{sec:PrefixMacs}
%
@@ -11931,30 +12804,23 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{macrocode}
% \end{macro}
%
-% \subsubsection{Alternate Formatting}
+% \subsubsection[Alternate Format]{Alternate Formatting}
%
% \begin{macro}{\AltFormatActive}
% \changes{3.1}{2017/01/13}{Added}
-% Turn on alternate formatting, engage the formatting macros.
+% \changes{4.0}{2024/02/09}{Combine starred, un-starred macros}
+% \begin{macro}{\AltFormatActive*}\end{macro}\vspace{-2.7ex}
+% Turn on alternate formatting and
+% disengage the formatting macros if using the starred form or
+% engage the formatting macros if using the un-starred form.
%
% \begin{macrocode}
-\newcommand*\AltFormatActive
+\NewDocumentCommand{\AltFormatActive}{s}
{%
\global\@nameauth@AltFormattrue%
- \global\@nameauth@DoAlttrue%
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\AltFormatActive*}
-% \changes{3.1}{2017/01/13}{Added}
-% Turn on alternate formatting, disengage the formatting macros.
-%
-% \begin{macrocode}
-\WithSuffix{\newcommand*}\AltFormatActive*
-{%
- \global\@nameauth@AltFormattrue%
- \global\@nameauth@DoAltfalse%
+ \IfBooleanTF{#1}
+ {\global\@nameauth@DoAltfalse}
+ {\global\@nameauth@DoAlttrue}%
}
% \end{macrocode}
% \end{macro}
@@ -12118,7 +12984,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\let\SNN\rootb%
\@nameauth@Choice
% \end{macrocode}
-% Non-Western names.
+% Nonwestern names.
% We test both \cmd{\argc} and \cmd{\suffb} as needed.
%
% \begin{macrocode}
@@ -12140,7 +13006,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\fi
}%
% \end{macrocode}
-% Non-Western names, obsolete syntax.
+% Nonwestern names, obsolete syntax.
% Using \cmd{\argc} in this path affects indexing.
%
% \begin{macrocode}
@@ -12201,42 +13067,34 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \subsubsection{Basic Interface}
%
% \begin{macro}{\Name}
-% \cmd{\Name} calls \cmd{\NameauthName}, the interface hook.
-%
-% \begin{macrocode}
-\newcommand\Name{\NameauthName}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\Name*}
-% \cmd{\Name*} sets up a long name reference and calls \cmd{\NameauthLName},
-% the interface hook.
+% \changes{4.0}{2024/02/09}{Combine starred, un-starred macros}
+% \begin{macro}{\Name*}\end{macro}\vspace{-2.7ex}
+% \cmd{\Name} calls \cmd{\NameauthName}, the interface hook, printing
+% a long name and calling \cmd{\NameauthLName} when using the starred form.
%
% \begin{macrocode}
-\WithSuffix{\newcommand*}\Name*
- {\@nameauth@FullNametrue\NameauthLName}
+\NewDocumentCommand{\Name}{s}
+{%
+ \IfBooleanTF{#1}
+ {\@nameauth@FullNametrue\NameauthLName}
+ {\NameauthName}%
+}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\FName}
% \changes{0.9}{2012/02/10}{Added}
-% \cmd{\FName} sets up a short name reference and calls \cmd{\NameauthFName},
-% the interface hook.
+% \changes{4.0}{2024/02/09}{Combine starred, un-starred macros}
+% \begin{macro}{\FName*}\end{macro}\vspace{-2.7ex}
+% \cmd{\FName} sets up a short name instance and calls \cmd{\NameauthFName},
+% the interface hook. Its starred form is identical in function.
%
% \begin{macrocode}
-\newcommand\FName
+\NewDocumentCommand{\FName}{s}
{\@nameauth@FirstNametrue\NameauthFName}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\FName*}
-% \cmd{\FName} and \cmd{\FName*} are identical in function.
-%
-% \begin{macrocode}
-\WithSuffix{\newcommand*}\FName*{\FName}
-% \end{macrocode}
-% \end{macro}
-%
% \subsubsection{Quick Interface}
%
% \begin{environment}{nameauth}
@@ -12283,7 +13141,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{macrocode}
% Set up shorthands according to name form. We use \cmd{\expandafter}
% due to \cmd{\protected@edef} in the naming macros. We begin with
-% non-Western names that use the new syntax. We use one \cmd{\ex} per
+% nonwestern names that use the new syntax. We use one \cmd{\ex} per
% token because we only have one argument to expand first.
%
% \begin{macrocode}
@@ -12384,13 +13242,14 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \begin{macro}{\ShowPattern}
% \changes{3.3}{2020/02/20}{Added}
% \changes{3.7}{2023/02/03}{Redesigned}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% This displays the pattern that the name arguments generate;
% useful for debugging. We test for bad input, then load the argument
% values into the appropriate macros. We determine the name type
% and produce the output of the appropriate name control sequence.
%
% \begin{macrocode}
-\newcommandx*\ShowPattern[3][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\ShowPattern}{O{} m O{}}
{%
\@nameauth@Error{#2}{macro: \string\ShowPattern}%
\@nameauth@LoadArgs{#1}{#2}{#3}%
@@ -12399,53 +13258,54 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{macrocode}
% \end{macro}
%
-% \newpage
-%
% \begin{macro}{\ShowIdxPageref}
% \changes{3.3}{2020/02/20}{Added}
% \changes{3.5}{2020/11/23}{Fix name space, use Boolean flags}
% \changes{3.7}{2023/02/03}{Use common back-end}
-% This displays (expanded, as printed) the index entry that will be
-% generated, but not exactly what is in the \texttt{idx} file.
+% \changes{4.0}{2024/02/09}{Combine starred, un-starred macros}
+% \begin{macro}{\ShowIdxPageref*}\end{macro}\vspace{-2.7ex}
+% Show an index page entry appearance for given name parameters.
+% \begin{macrocode}
+\NewDocumentCommand{\ShowIdxPageref}{s O{} m O{}}
+{%
+ \IfBooleanTF {#1}%
+% \end{macrocode}
+% The starred form displays a basic index entry with no tag.
% Test for bad input, load the argument values into
% the appropriate macros, then call the back-end.
%
% \begin{macrocode}
-\newcommandx*\ShowIdxPageref[3][1=\@empty, 3=\@empty]
-{%
- \@nameauth@Error{#2}{macro: \string\ShowIdxPageref}%
- \@nameauth@LoadArgs{#1}{#2}{#3}%
- \global\@nameauth@LongIdxDebugtrue%
- \@nameauth@IdxPageref{#1}{#2}{#3}%
-}
+ {%
+ \@nameauth@Error{#3}{macro: \string\ShowIdxPageref*}%
+ \@nameauth@LoadArgs{#2}{#3}{#4}%
+ \@nameauth@IdxPageref{#2}{#3}{#4}%
+ }%
% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\ShowIdxPageref*}
-% \changes{3.3}{2020/02/20}{Added}
-% \changes{3.5}{2020/11/23}{Fix name space, use Boolean flags}
-% \changes{3.7}{2023/02/03}{Use common back-end}
-% Display a basic index entry with no tag.
+% The un-starred form displays (expanded, as printed) the index
+% entry that will be generated, but not exactly what is in the
+% \texttt{idx} file.
% Test for bad input, load the argument values into
% the appropriate macros, then call the back-end.
%
% \begin{macrocode}
-\WithSuffix{\newcommandx*}\ShowIdxPageref*[3][1=\@empty, 3=\@empty]
-{%
- \@nameauth@Error{#2}{macro: \string\ShowIdxPageref*}%
- \@nameauth@LoadArgs{#1}{#2}{#3}%
- \@nameauth@IdxPageref{#1}{#2}{#3}%
+ {%
+ \@nameauth@Error{#3}{macro: \string\ShowIdxPageref}%
+ \@nameauth@LoadArgs{#2}{#3}{#4}%
+ \global\@nameauth@LongIdxDebugtrue%
+ \@nameauth@IdxPageref{#2}{#3}{#4}%
+ }%
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ShowNameInfo}
% \changes{3.7}{2023/02/03}{Added}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}, improve output}
% Show how the name arguments are being interpreted by the
% \textsf{nameauth} macros, but as detokenized text,
%
% \begin{macrocode}
-\newcommandx*\ShowNameInfo[3][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\ShowNameInfo}{O{} m O{}}
{%
% \end{macrocode}
% Test for bad input, then load the argument values into
@@ -12456,14 +13316,14 @@ and version 1.3 or later is part of all distributions of LaTeX version
\@nameauth@LoadArgs{#1}{#2}{#3}%
% \end{macrocode}
% We produce what we know about the name arguments.
-% First is non-Western names using the current syntax.
+% First is nonwestern names using the current syntax.
%
% \begin{macrocode}
\@nameauth@Choice
{%
(SNN: \expandafter\detokenize\expandafter{\@nameauth@B})%
\unless\ifx\@nameauth@SB\@empty
- \ (Affix [FNN, other]:
+ \ (Affix*:
\expandafter\detokenize\expandafter{\@nameauth@SB})%
\fi
\unless\ifx\@nameauth@C\@empty
@@ -12472,19 +13332,17 @@ and version 1.3 or later is part of all distributions of LaTeX version
\fi
}%
% \end{macrocode}
-% Next is non-Western names using the obsolete syntax.
+% Next is nonwestern names using the obsolete syntax.
%
% \begin{macrocode}
{%
(SNN: \expandafter\detokenize\expandafter{\@nameauth@B})%
\unless\ifx\@nameauth@C\@empty
- \ (Alt [FNN, other]:
+ \ (Alt*:
\expandafter\detokenize\expandafter{\@nameauth@C})%
\fi
}%
% \end{macrocode}
-%
-% \newpage \noindent
% Finally we have Western names.
%
% \begin{macrocode}
@@ -12506,11 +13364,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{macro}{\ShowNameState}
% \changes{3.7}{2023/02/03}{Added}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% This macro tells the user what control sequence patterns
% exist for any given name.
%
% \begin{macrocode}
-\newcommandx\ShowNameState[3][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\ShowNameState}{O{} m O{}}
{%
% \end{macrocode}
% Create a local scope to kill any local definitions on exit.
@@ -12627,13 +13486,14 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{3.5}{2020/11/23}{New warnings, new exclusion test,
% improve logic, fix namespace}
% \changes{3.7}{2023/02/03}{Fix warnings}
-% This creates an index entry with page references. It warns if
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
+% This creates an index entry with page entries. It warns if
% the \cmd{\SkipIndex} prefix macro was used before it was called.
% It issues additional warnings if the \texttt{verbose} option is selected.
% It prints nothing.
%
% \begin{macrocode}
-\newcommandx*\IndexName[3][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\IndexName}{O{} m O{}}
{%
% \end{macrocode}
% Process and load the arguments into the appropriate macros;
@@ -12672,7 +13532,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \begin{macrocode}
\@nameauth@Choice
% \end{macrocode}
-% Non-Western names.
+% Nonwestern names.
% We ignore \cmd{\@nameauth@C} and handle \cmd{\@nameauth@SB} appropriately.
%
% \begin{macrocode}
@@ -12700,7 +13560,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\fi
}%
% \end{macrocode}
-% Non-Western names, obsolete syntax.
+% Nonwestern names, obsolete syntax.
% Using \cmd{\@nameauth@C} in this path affects indexing.
%
% \begin{macrocode}
@@ -12764,11 +13624,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{3.5}{2020/11/23}{Strict \textit{see} refs, new warnings,
% new exclusion test, improve logic, fix namespace}
% \changes{3.7}{2023/02/03}{Fix warnings}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% Create a cross-reference that is not already an exclusion or
% a cross-reference. Print nothing.
%
% \begin{macrocode}
-\newcommandx*\IndexRef[4][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\IndexRef}{O{} m O{} m}
{%
% \end{macrocode}
% Process and load the arguments into the appropriate macros.
@@ -12784,7 +13645,6 @@ and version 1.3 or later is part of all distributions of LaTeX version
\@nameauth@Xreftrue%
% \end{macrocode}
%
-% \newpage \noindent
% Warn if \cmd{\SkipIndex} was called before \cmd{\IndexName},
% and reset it unless the \texttt{oldreset} option was used.
%
@@ -12798,7 +13658,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\fi
\@nameauth@Choice
% \end{macrocode}
-% Non-Western name, new syntax. First check if
+% Nonwestern name, new syntax. First check if
% an xref or excluded, and if so, do nothing except issue
% warnings if so desired.
%
@@ -13086,12 +13946,13 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{3.5}{2020/11/23}{New warnings, new exclusion test,
% fix bug in old syntax, new logic, fix namespace}
% \changes{3.7}{2023/02/03}{Fix warnings, optimized}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% Prevent a name from being indexed by initializing a regular
% cross-reference control sequence with the value of
% \cmd{\@nameauth@Exclude}.
%
% \begin{macrocode}
-\newcommandx*\ExcludeName[3][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\ExcludeName}{O{} m O{}}
{%
% \end{macrocode}
% Process and load the arguments into the appropriate macros.
@@ -13110,7 +13971,6 @@ and version 1.3 or later is part of all distributions of LaTeX version
{\def\@nameauth@Temp{\expandafter\detokenize\expandafter{#1 #2}}}%
% \end{macrocode}
%
-% \newpage \noindent
% Verbose warnings say that an extant name is being excluded;
% the operation is allowed.
%
@@ -13155,60 +14015,61 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{3.5}{2020/11/23}{New exclusion test, optimize logic,
% fix namespace}
% \changes{3.7}{2023/02/03}{Fix warnings, optimized}
-% This macro allows a name to be indexed once again only if
-% it had been excluded.
-%
+% \changes{4.0}{2024/02/09}{Combine starred, un-starred macros}
+% \begin{macro}{\IncludeName*}\end{macro}\vspace{-2.7ex}
+% Allow names to be included as page entries, even if they have been
+% used as cross-references.
% \begin{macrocode}
-\newcommandx*\IncludeName[3][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\IncludeName}{s O{} m O{}}
{%
+ \IfBooleanTF {#1}%
% \end{macrocode}
+% The starred form allows any name to be indexed by voiding any
+% exclusion or cross-reference.
+% Process and load the arguments into the appropriate macros.
+% Check for errors, get the current name pattern, then nuke it.
+%
+% \begin{macrocode}
+ {%
+ \@nameauth@LoadArgs{#2}{#3}{#4}%
+ \@nameauth@Error{#3}{macro \string\IncludeName*}%
+ \@nameauth@Choice{}{}{}%
+ \global\csundef{\NameauthPattern!PN}%
+ }%
+% \end{macrocode}
+% The un-starred form allows a name to be indexed once again only if
+% it had been excluded.
% Process and load the arguments into the appropriate macros.
% Get the current name type, pattern, and contents if a warning
% is needed.
%
% \begin{macrocode}
- \@nameauth@LoadArgs{#1}{#2}{#3}%
- \@nameauth@Error{#2}{macro \string\IncludeName}%
- \@nameauth@Choice
- {\def\@nameauth@Temp{\expandafter\detokenize\expandafter{#2}}}
- {\def\@nameauth@Temp{\expandafter\detokenize\expandafter{#2 #3}}}
- {\def\@nameauth@Temp{\expandafter\detokenize\expandafter{#1 #2}}}%
+ {%
+ \@nameauth@LoadArgs{#2}{#3}{#4}%
+ \@nameauth@Error{#3}{macro \string\IncludeName}%
+ \@nameauth@Choice
+ {\def\@nameauth@Temp{\expandafter\detokenize\expandafter{#3}}}
+ {\def\@nameauth@Temp{\expandafter\detokenize\expandafter{#3 #4}}}
+ {\def\@nameauth@Temp{\expandafter\detokenize\expandafter{#2 #3}}}%
% \end{macrocode}
% Test whether the name is an exclusion or a regular xref.
% If the former, delete its control sequence. If the latter,
% do nothing and issue a warning.
%
% \begin{macrocode}
- \ifcsname\NameauthPattern!PN\endcsname
- \edef\@nameauth@testex
- {\csname\NameauthPattern!PN\endcsname}%
- \ifx\@nameauth@testex\@nameauth@Exclude
- \global\csundef{\NameauthPattern!PN}%
- \else
- \if@nameauth@Verbose
- \PackageWarning{nameauth}
- {\string\IncludeName: extant xref \@nameauth@Temp}%
+ \ifcsname\NameauthPattern!PN\endcsname
+ \edef\@nameauth@testex
+ {\csname\NameauthPattern!PN\endcsname}%
+ \ifx\@nameauth@testex\@nameauth@Exclude
+ \global\csundef{\NameauthPattern!PN}%
+ \else
+ \if@nameauth@Verbose
+ \PackageWarning{nameauth}
+ {\string\IncludeName: extant xref \@nameauth@Temp}%
+ \fi
\fi
\fi
- \fi
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\IncludeName*}
-% \changes{3.0}{2016/10/26}{Added}
-% \changes{3.5}{2020/11/23}{Improve logic, fix namespace}
-% \changes{3.7}{2023/02/03}{Optimized}
-% This macro allows any name to be indexed by voiding any exclusion or
-% cross-reference.
-%
-% \begin{macrocode}
-\WithSuffix{\newcommandx*}\IncludeName*[3][1=\@empty, 3=\@empty]
-{%
- \@nameauth@LoadArgs{#1}{#2}{#3}%
- \@nameauth@Error{#2}{macro \string\IncludeName*}%
- \@nameauth@Choice{}{}{}%
- \global\csundef{\NameauthPattern!PN}%
+ }%
}
% \end{macrocode}
% \end{macro}
@@ -13218,11 +14079,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{3.5}{2020/11/23}{New warnings, new exclusion test,
% improve logic, fix namespace}
% \changes{3.7}{2023/02/03}{Fix warnings, optimized}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% This creates an index entry tag that is applied before a name
% by \cmd{\@nameauth@Index}.
%
% \begin{macrocode}
-\newcommandx*\PretagName[4][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\PretagName}{O{} m O{} m}
{%
% \end{macrocode}
% Process and load the arguments into the appropriate macros.
@@ -13273,11 +14135,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{3.5}{2020/11/23}{New warnings, new exclusion test,
% improve logic, fix namespace}
% \changes{3.7}{2023/02/03}{Optimized}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% This creates an index entry tag for a name that is not either
% an exclusion or a cross-reference.
%
% \begin{macrocode}
-\newcommandx*\TagName[4][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\TagName}{O{} m O{} m}
{%
% \end{macrocode}
% Process and load the arguments into the appropriate macros.
@@ -13316,16 +14179,19 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{macrocode}
% \end{macro}
%
+% \newpage
+%
% \begin{macro}{\UntagName}
% \changes{1.2}{2012/02/25}{Added}
% \changes{1.9}{2015/07/09}{Global undef, no cs collisions}
% \changes{2.0}{2015/11/11}{Redesign tagging}
% \changes{3.5}{2020/11/23}{Improve logic, fix namespace}
% \changes{3.7}{2023/02/03}{Optimized}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% This deletes an index tag.
%
% \begin{macrocode}
-\newcommandx*\UntagName[3][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\UntagName}{O{} m O{}}
{%
\@nameauth@LoadArgs{#1}{#2}{#3}%
\@nameauth@Error{#2}{macro \string\UntagName}%
@@ -13335,17 +14201,18 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{macrocode}
% \end{macro}
%
-% \subsubsection{Name Data Tags}
+% \subsubsection{Name Tags}
%
% \begin{macro}{\NameAddInfo}
% \changes{2.4}{2016/03/15}{Added}
% \changes{3.5}{2020/11/23}{Improve logic, fix namespace}
% \changes{3.7}{2023/02/03}{Optimized}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% This creates a macro that expands to information associated with
% a given name, similar to an index tag, but usable in the body text.
%
% \begin{macrocode}
-\newcommandx\NameAddInfo[4][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\NameAddInfo}{O{} m O{} +m}
{%
\@nameauth@LoadArgs{#1}{#2}{#3}%
\@nameauth@Error{#2}{macro \string\NameAddInfo}%
@@ -13361,10 +14228,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{3.3}{2020/02/20}{Lock added}
% \changes{3.5}{2020/11/23}{Improve logic, fix namespace}
% \changes{3.7}{2023/02/03}{Optimized}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% This prints the information created by \cmd{\NameAddInfo} if it exists.
%
% \begin{macrocode}
-\newcommandx*\NameQueryInfo[3][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\NameQueryInfo}{O{} m O{}}
{%
\unless\if@nameauth@BigLock
\@nameauth@LoadArgs{#1}{#2}{#3}%
@@ -13382,10 +14250,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{2.4}{2016/03/15}{Added}
% \changes{3.5}{2020/11/23}{Improve logic, fix namespace}
% \changes{3.7}{2023/02/03}{Optimized}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% This deletes a text tag. It has the same structure as \cmd{\UntagName}.
%
% \begin{macrocode}
-\newcommandx*\NameClearInfo[3][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\NameClearInfo}{O{} m O{}}
{%
\@nameauth@LoadArgs{#1}{#2}{#3}%
\@nameauth@Error{#2}{macro \string\NameClearInfo}%
@@ -13402,6 +14271,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{3.5}{2020/11/23}{Improve logic, fix namespace,
% local or global scope}
% \changes{3.7}{2023/02/03}{Optimized}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% This macro expands one path if a main matter name exists, or else the
% other. The state of \texttt{\textbackslash if@nameauth@GlobalScope}
% determines whether or not the paths are in a local scope. First we
@@ -13409,7 +14279,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% get the current name pattern.
%
% \begin{macrocode}
-\newcommandx\IfMainName[5][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\IfMainName}{O{} m O{} +m +m}
{%
\@nameauth@LoadArgs{#1}{#2}{#3}%
\@nameauth@Error{#2}{macro \string\IfMainName}%
@@ -13436,6 +14306,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{3.5}{2020/11/23}{Improve logic, fix namespace,
% local or global scope}
% \changes{3.7}{2023/02/03}{Optimized}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% This macro expands one path if a front matter name exists, or else the
% other. The state of \texttt{\textbackslash if@nameauth@GlobalScope}
% determines whether or not the paths are in a local scope. First we
@@ -13443,7 +14314,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% get the current name pattern.
%
% \begin{macrocode}
-\newcommandx\IfFrontName[5][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\IfFrontName}{O{} m O{} +m +m}
{%
\@nameauth@LoadArgs{#1}{#2}{#3}%
\@nameauth@Error{#2}{macro \string\IfFrontName}%
@@ -13465,8 +14336,6 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{macrocode}
% \end{macro}
%
-% \newpage
-%
% \begin{macro}{\IfAKA}
% \changes{2.3}{2016/01/05}{Added}
% \changes{2.4}{2016/03/15}{Test for excluded}
@@ -13474,6 +14343,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{3.5}{2020/11/23}{New exclusion test, optimize logic,
% fix namespace, local or global scope}
% \changes{3.7}{2023/02/03}{Optimized}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% This macro expands one path if a cross-reference exists, another if
% it does not exist, and a third if it is excluded. The state of
% \texttt{\textbackslash if@nameauth@GlobalScope} determines whether or not
@@ -13481,7 +14351,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
% the standard macros, check for error, and get the current name pattern.
%
% \begin{macrocode}
-\newcommandx\IfAKA[6][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\IfAKA}{O{} m O{} +m +m +m}
{%
\@nameauth@LoadArgs{#1}{#2}{#3}%
\@nameauth@Error{#2}{macro \string\IfAKA}%
@@ -13518,10 +14388,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{2.3}{2016/01/05}{Global or local}
% \changes{3.5}{2020/11/23}{Improve logic, fix namespace}
% \changes{3.7}{2023/02/03}{Optimized}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% This undefines a control sequence to force a ``first use''.
%
% \begin{macrocode}
-\newcommandx*\ForgetName[3][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\ForgetName}{O{} m O{}}
{%
% \end{macrocode}
% Process and load the arguments into the appropriate macros.
@@ -13557,10 +14428,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{3.1}{2017/01/13}{Fix old syntax}
% \changes{3.5}{2020/11/23}{Improve logic, fix namespace}
% \changes{3.7}{2023/02/03}{Optimized}
+% \changes{4.0}{2024/02/09}{Use \textsf{xparse}}
% This defines a control sequence to force a ``subsequent use''.
%
% \begin{macrocode}
-\newcommandx*\SubvertName[3][1=\@empty, 3=\@empty]
+\NewDocumentCommand{\SubvertName}{O{} m O{}}
{%
\@nameauth@LoadArgs{#1}{#2}{#3}%
\@nameauth@Error{#2}{macro \string\SubvertName}%
@@ -13586,6 +14458,8 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{macrocode}
% \end{macro}
%
+% \newpage
+%
% \subsubsection{Pseudonyms}
%
% \begin{macro}{\AKA}
@@ -13600,10 +14474,13 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \changes{3.1}{2017/01/13}{Can skip index}
% \changes{3.3}{2020/02/20}{Global flag reset}
% \changes{3.5}{2020/11/23}{Fix namespace}
+% \changes{4.0}{2024/02/09}{Combine starred, un-starred macros}
+% \begin{macro}{\AKA*}\end{macro}\vspace{-2.7ex}
% \cmd{\AKA} prints an alternate name and creates index cross-references.
+% The starred form displays the alternate name like \cmd{\FName}.
%
% \begin{macrocode}
-\newcommandx*\AKA[5][1=\@empty, 3=\@empty, 5=\@empty]
+\NewDocumentCommand{\AKA}{s O{} m O{} m O{}}
{%
% \end{macrocode}
% Prevent entering \cmd{\AKA} via itself or \cmd{\@nameauth@Name}.
@@ -13614,6 +14491,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\if@nameauth@BigLock
\@nameauth@Locktrue%
\fi
+ \IfBooleanTF {#1}{\@nameauth@AltAKAtrue}{}%
\unless\if@nameauth@Lock
\@nameauth@Locktrue%
\@nameauth@InAKAtrue%
@@ -13626,18 +14504,18 @@ and version 1.3 or later is part of all distributions of LaTeX version
% Test for malformed input.
%
% \begin{macrocode}
- \@nameauth@Error{#2}{macro \string\AKA}%
- \@nameauth@Error{#4}{macro \string\AKA}%
+ \@nameauth@Error{#3}{macro \string\AKA}%
+ \@nameauth@Error{#5}{macro \string\AKA}%
% \end{macrocode}
% Names occur in horizontal mode; we ensure that. Next we make copies
% of the target name arguments and we parse and print the cross-reference name.
%
% \begin{macrocode}
\leavevmode\hbox{}%
- \protected@edef\@nameauth@Ai{\trim@spaces{#1}}%
- \protected@edef\@nameauth@Bi{\@nameauth@Root{#2}}%
- \protected@edef\@nameauth@Si{\@nameauth@Suffix{#2}}%
- \@nameauth@Parse{#3}{#4}{#5}{!PN}%
+ \protected@edef\@nameauth@Ai{\trim@spaces{#2}}%
+ \protected@edef\@nameauth@Bi{\@nameauth@Root{#3}}%
+ \protected@edef\@nameauth@Si{\@nameauth@Suffix{#3}}%
+ \@nameauth@Parse{#4}{#5}{#6}{!PN}%
% \end{macrocode}
% \noindent Create an index cross-reference based on the arguments.
%
@@ -13645,17 +14523,17 @@ and version 1.3 or later is part of all distributions of LaTeX version
\unless\if@nameauth@SkipIndex
\ifx\@nameauth@Ai\@empty
\ifx\@nameauth@Si\@empty
- \IndexRef[#3]{#4}[#5]{\@nameauth@Bi}%
+ \IndexRef[#4]{#5}[#6]{\@nameauth@Bi}%
\else
- \IndexRef[#3]{#4}[#5]
+ \IndexRef[#4]{#5}[#6]
{\@nameauth@Bi\@nameauth@space\@nameauth@Si}%
\fi
\else
\ifx\@nameauth@Si\@empty
- \IndexRef[#3]{#4}[#5]
+ \IndexRef[#4]{#5}[#6]
{\@nameauth@Bi,\@nameauth@space\@nameauth@Ai}%
\else
- \IndexRef[#3]{#4}[#5]
+ \IndexRef[#4]{#5}[#6]
{\@nameauth@Bi,\@nameauth@space
\@nameauth@Ai,\@nameauth@space\@nameauth@Si}%
\fi
@@ -13679,30 +14557,24 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\AKA*}
-% \changes{0.9}{2012/02/10}{Added}
-% This starred form sets a Boolean to print only the alternate name argument,
-% if that exists, and calls \cmd{\AKA}.
-%
-% \begin{macrocode}
-\WithSuffix{\newcommand*}\AKA*{\@nameauth@AltAKAtrue \AKA}
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}{\PName}
% \changes{2.3}{2016/01/05}{Work with hooks}
% \changes{3.1}{2017/01/13}{Can skip index}
% \changes{3.5}{2020/11/23}{Warning and flag resets added}
% \changes{3.7}{2023/02/03}{Fix warnings}
-% \cmd{\PName} is a convenience macro that calls \cmd{\NameauthName}, then \cmd{\AKA}.
+% \changes{4.0}{2024/02/09}{Combine starred, un-starred macros}
+% \begin{macro}{\PName*}\end{macro}\vspace{-2.7ex}
+% \cmd{\PName} is a convenience macro that calls \cmd{\NameauthName}, then \cmd{\AKA}. Its starred form prints a long name.
%
% \begin{macrocode}
-\newcommandx*\PName[5][1=\@empty,3=\@empty,5=\@empty]
+\NewDocumentCommand{\PName}{s O{} m O{} m O{}}
{%
% \end{macrocode}
+% If we have a starred form, we will display a long name.
% If we used \cmd{\JustIndex}, we ignore and reset its flag to false.
%
% \begin{macrocode}
+ \IfBooleanTF {#1}{\@nameauth@FullNametrue}{}%
\if@nameauth@OldReset
\@nameauth@JustIndexfalse%
\else
@@ -13717,7 +14589,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\unless\if@nameauth@OldReset
\global\@nameauth@SeeAlsofalse%
\fi
- \NameauthName[#1]{#2} (\SkipIndex\AKA[#1]{#2}[#3]{#4}[#5])%
+ \NameauthName[#2]{#3} (\SkipIndex\AKA[#2]{#3}[#4]{#5}[#6])%
\else
% \end{macrocode}
% Otherwise, if we used \cmd{\SeeAlso} we set the flag of \cmd{\SeeAlso}
@@ -13726,11 +14598,11 @@ and version 1.3 or later is part of all distributions of LaTeX version
%
% \begin{macrocode}
\if@nameauth@SeeAlso
- \@nameauth@SeeAlsofalse\NameauthName[#1]{#2}
- \@nameauth@SeeAlsotrue(\AKA[#1]{#2}[#3]{#4}[#5])%
+ \@nameauth@SeeAlsofalse\NameauthName[#2]{#3}
+ \@nameauth@SeeAlsotrue(\AKA[#2]{#3}[#4]{#5}[#6])%
\else
- \NameauthName[#1]{#2}
- (\AKA[#1]{#2}[#3]{#4}[#5])%
+ \NameauthName[#2]{#3}
+ (\AKA[#2]{#3}[#4]{#5}[#6])%
\fi
\fi
% \end{macrocode}
@@ -13746,57 +14618,104 @@ and version 1.3 or later is part of all distributions of LaTeX version
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\PName*}
-% This sets up a long name reference and calls \cmd{\PName}.
-%
-% \begin{macrocode}
-\WithSuffix{\newcommand*}\PName*{\@nameauth@FullNametrue \PName}
-% \end{macrocode}
-% \end{macro}
-%
% \Finale
% \endinput
%</package>
%<*compat>
%<<compatvb
-% This snippet assists backward compatibility for older
+% This is not a standalone document.
+% Use this file only in the document preamble.
+
+\makeatletter
+
+% Do not include the rest of this file
+% unless we are in a document preamble.
+
+\ifx\@onlypreamble\@notprerr\else
+
+% Check against the latex version date. Create a macro
+% if the date is at least 2018/10/05 because that is
+% when Unicode processing changed for the better.
+
+ \@ifl@t@r\fmtversion{2018/10/05}{\def\nameauthltx{}}{}
+
+% Here we check for 2018/04/30 because that is when xparse
+% added the ! modifier.
+
+ \@ifl@t@r\fmtversion{2018/04/30}{\def\nameauthxp{}}{}
+
+% Here we assist backward compatibility for older
% distributions of LaTeX and compatibility for multiple
-% LaTeX engines. It is not a standalone document.
-%
-\IfFileExists{iftex.sty}{\usepackage{iftex}}{}
-\unless\ifdefined\RequireTUTeX
- \usepackage{ifxetex}
- \usepackage{ifluatex}
- \usepackage{ifpdf}
-\fi
+% LaTeX engines.
-\ifxetex
- \usepackage{fontspec}
- \usepackage{polyglossia}
- \setdefaultlanguage{american}
-\else
- \ifluatex
- \ifpdf
- \usepackage{fontspec}
- \usepackage{polyglossia}
- \setdefaultlanguage{american}
+% If we want to use TikZ, this flag will help us.
+
+ \newif\ifDoTikZ
+
+% If we couch this statement in a conditional, we avoid
+% potential errors in older versions.
+
+ \IfFileExists{iftex.sty}{\usepackage{iftex}}{}
+
+% The presence of \RequireTUTeX means that these older
+% packages are not needed (thanks to iftex). Otherwise
+% we are using an older version and need these packages.
+
+ \unless\ifdefined\RequireTUTeX
+ \usepackage{ifxetex}
+ \usepackage{ifluatex}
+ \usepackage{ifpdf}
+ \fi
+
+% Instead of worrying about older or newer changes, we
+% ensure consistency when the LaTeX engine changes.
+% The goal is to get the same ``lmodern'' look.
+% Users will need to change language and font options
+% for their own needs.
+
+ \ifxetex
+ \usepackage{fontspec}
+ \usepackage{polyglossia}
+ \setdefaultlanguage{american}
+ \DoTikZtrue % Loading TikZ will work (pdf)
+ \else
+ \ifluatex
+ \ifpdf
+ \usepackage{fontspec}
+ \usepackage{polyglossia}
+ \setdefaultlanguage{american}
+ \DoTikZtrue % Loading TikZ will work (pdf)
+ \else
+ \IfFileExists{utf8-2018.def}{}
+ {\usepackage[utf8]{inputenc}}
+ \usepackage[TS1,T1]{fontenc}
+ \usepackage[american]{babel}
+ \usepackage{lmodern}
+ % Using dvi-based workflows does not
+ % work well with TikZ; pstricks instead
+ \fi
\else
\IfFileExists{utf8-2018.def}{}
{\usepackage[utf8]{inputenc}}
\usepackage[TS1,T1]{fontenc}
\usepackage[american]{babel}
\usepackage{lmodern}
+ \ifpdf
+ \usepackage{tikz}
+ \DoTikZtrue % Loading TikZ will work (pdf)
+ \fi
+ % Using dvi-based workflows does not
+ % work well with TikZ; pstricks instead
\fi
- \else
- \IfFileExists{utf8-2018.def}{}
- {\usepackage[utf8]{inputenc}}
- \usepackage[TS1,T1]{fontenc}
- \usepackage[american]{babel}
- \usepackage{lmodern}
\fi
+
+% Here one would load TikZ if needed
+% \ifDoTikZ \usepackage{tikz} \fi
+
\fi
+\makeatother
%compatvb
%</compat>
%<*examples>
@@ -13809,8 +14728,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
\usepackage[textwidth=137mm,textheight=237mm,
right=40mm,marginparwidth=40mm]{geometry}
+
+\usepackage{makeidx} % Must have for defining \seealso macro.
\usepackage{index}
-\usepackage{nameauth}[2023/02/03]
+
+\usepackage[oldargs]{nameauth}[2024/02/09]
+
\usepackage[inline]{enumitem}
\usepackage{fancyvrb}
@@ -13967,9 +14890,9 @@ and version 1.3 or later is part of all distributions of LaTeX version
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
-\title{\bfseries Collected Examples}
+\title{\bfseries Some Examples}
\author{Charles P. Schaum}
-\date{2023/02/03}
+\date{2024/02/09}
\begin{document}
\maketitle
@@ -13979,8 +14902,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
\tableofcontents
\newpage
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{Minimal Example}
+\textbf{Group 1}\\
\begin{enumerate*}
\item[\textbf{1.}] \Doug\ rose to eminence by sheer force
of character and talents that neither slavery nor caste
@@ -13990,13 +14917,12 @@ and version 1.3 or later is part of all distributions of LaTeX version
the bar of public opinion.
\item[\textbf{3.}] \Doug\ was born in February, l8l7. His
earliest memories centered around the cabin of his
- grandmother, \Bailey.\\
+ grandmother, \Bailey.
\end{enumerate*}
-\index{example, minimal}
+\medskip\noindent\textbf{Group 2}\\
\ForgetName[Frederick]{Douglass}
\ForgetName[Betsey]{Bailey}
-\noindent
\begin{enumerate*}
\item[\textbf{2.}] \Doug's early life is perhaps the most
complete indictment of the slave system ever presented at
@@ -14009,12 +14935,18 @@ and version 1.3 or later is part of all distributions of LaTeX version
proscription could crush.
\end{enumerate*}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{Multiple Indexes}
The Electric Boogaloo\index{Boogaloo, Electric}\\ % main index
was created by \Name{Ollie~\& Jerry}. % name index
\index{indexes, multiple}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{Index Categories}
\subsection{Famous Black Americans}
@@ -14024,18 +14956,15 @@ force of character and talents that neither slavery nor caste
proscription could crush. Circumstances made
\Name[Frederick]{Douglass} a slave, but they could not prevent
him from becoming a freeman and a leader among mankind.\\
-
We also celebrate \MLK, then \MLK.
\subsection{Patres Patriae}
We mention President \Wash; again, \Wash.
-Family and close friends called him \SWash.\\
-
+Family and close friends called him \SWash.%
\TagName[George]{Washington}{!as general}
-We can reminisce about \LWash[General].
+We reminisce about \LWash[General].%
\UntagName[George]{Washington}
-
When speaking of \Linc, we can refer to \LLinc[Abe].
\subsection{Philosophers}
@@ -14053,16 +14982,18 @@ We note \Soto, then just \Soto.
\TagName[George]{Washington}{!as general}
\TagName[Dwight D.]{Eisenhower}{!as general}
-\LWash, \LPatton, and \LIke\ were high-ranking generals.\\
-
+\LWash, \LPatton, and \LIke\ were high-ranking generals.%
\TagName[Dwight D.]{Eisenhower}{!as president}
-\UntagName[George]{Washington}
+\UntagName[George]{Washington}%
\Wash\ and \Ike\ also were US presidents.
\small
% Instead of pre-tagging Ike we do the following:
\index[per]{US Presidents!other|see{Eisenhower, Dwight D., president}}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{More Complex Hooks}
% First save main- and front-matter hooks. Then change
@@ -14079,19 +15010,21 @@ We note \Soto, then just \Soto.
The new format (front matter):\NamesInactive
\Name{Vlad, III}[III Dracula], known as
-\IndexRef{Vlad, Ţepeş}{Vlad III}\SubvertThis\Name*{Vlad, Ţepeş}
+\IndexRef{Vlad, Ţepeş}{Vlad III}
+\SubvertThis\Name*{Vlad, Ţepeş}
(\Name*{Vlad, Ţepeş}[the Impaler])
after his death, was the son of \Name{Vlad, II}[II Dracul],
-a member of the Order of the Dragon. Later references to
+a member of the Order of the Dragon. Later instances of
``\Name*{Vlad, III}'' and ``\Name{Vlad, III}'' appear thus.
The new format (main matter):\NamesActive
\Name{Vlad, III}[III Dracula], known as
-\IndexRef{Vlad, Ţepeş}{Vlad III}\SubvertThis\Name*{Vlad, Ţepeş}
+\IndexRef{Vlad, Ţepeş}{Vlad III}
+\SubvertThis\Name*{Vlad, Ţepeş}
(\Name*{Vlad, Ţepeş}[the Impaler])
after his death, was the son of \Name{Vlad, II}[II Dracul],
-a member of the Order of the Dragon. Later references to
+a member of the Order of the Dragon. Later instances of
``\Name*{Vlad, III}'' and ``\Name{Vlad, III}'' appear thus.
\let\NamesFormat\OldFormat
@@ -14107,9 +15040,12 @@ in the main matter we see: \NamesActive
\ForgetThis\Name{Vlad, III}[III Dracula],
\Name*{Vlad, III}, and \Name{Vlad, III}.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{Life Dates in Hooks}
-% Add data tags to names.
+% Add name tags to names.
\NameAddInfo[George]{Washington}{ (1732--99)}
\NameAddInfo[Mustafa]{Kemal}{ (1881--1938)}
\NameAddInfo{Atat\"urk}{ (in 1934, a special surname)}
@@ -14118,11 +15054,11 @@ in the main matter we see: \NamesActive
% has no page entries in the index.
\IndexRef{Atat\"urk}{Kemal, Mustafa}
-% Manually suppress data tag in ``first'' reference
+% Manually suppress name tag in ``first'' instance
\newif\ifNoTag
% Redesign formatting hook to usually print a tag
-% only in ``first'' reference. On exit, It resets
+% only in ``first'' instance. On exit, It resets
% the flag that suppresses tags, making that flag
% work only once per name use.
@@ -14141,7 +15077,7 @@ in the main matter we see: \NamesActive
president from 1789 to 1797. \Name[George]{Washington} was the only
president whose term in office was completely in the eighteenth
century. If we need to trigger the first use hook at some point,
-we can suppress dates and get an automatic long reference via:
+we can suppress dates and get an automatic long instance via:
\NoTagtrue\ForgetThis\Name[George]{Washington}. Or we can trigger
the first-use hook in a subsequent name use and still have dates:
\ForceName\Name[George]{Washington}.
@@ -14151,9 +15087,12 @@ We can add name info tags to names used only as cross-
references. For example, \Name[Mustafa]{Kemal} was granted
the name \Name{Atat\"urk}. We mention \Name[Mustafa]{Kemal}
and \Name{Atat\"urk} again. Likewise, we can trigger a
-first use, but with no data tag tag:
+first use, but with no name tag tag:
\NoTagtrue\ForgetThis\Name{Atat\"urk}.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{Alternate Formatting}
\AltFormatActive
@@ -14185,6 +15124,9 @@ was blamed for the St.\ Bartholomew's Day massacre that saw the
murder of thousands of Huguenots.
\index{formatting, alternate}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{Grammatical Inflections in Names}
\newif\ifGenitive
@@ -14204,6 +15146,9 @@ figure whose actions defy a consistent moral compass both in
public policy and in personal affairs.
\index{inflections, grammatical}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{Sample Reference Work I}
% Make a cross-reference from a variant name form to the
@@ -14254,6 +15199,9 @@ public policy and in personal affairs.
in over 100 films.
\Name[Heinz]{\noexpand\textSC{R\"uhmann}}\dots}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{Roman Names: Student Reference}
% Global Boolean flags need to be defined only once.
@@ -14296,7 +15244,7 @@ public policy and in personal affairs.
\fi
}
-% We add the name data tag.
+% We add the name tag.
\NameAddInfo[\noexpand\TSemp]{Gracchus}
{ (consul, 177 \textsc{bc})}
@@ -14333,8 +15281,8 @@ public policy and in personal affairs.
}
\index{Roman names, student}
-\Scipio\ was born around 236 \textsc{bc} into the
-Scipiones branch of the Cornelii clan.
+\NoAgnomentrue\Scipio\ was born around 236 \textsc{bc}
+into the Scipiones branch of the Cornelii clan.
\NoAgnomentrue\Scipio\ rose to military fame during the
Second Punic War. Thereafter he was known as \Scipio.
He flourished during the Egyptian reigns of
@@ -14345,7 +15293,7 @@ reigns of \Name{Seleucus, III}[III Ceraunus] and
% We make no change to \MainNameHook, but we do
% change \NamesFormat to display any extant
-% name data tags.
+% name tags.
\renewcommand*\NamesFormat[1]
{%
@@ -14364,11 +15312,14 @@ reigns of \Name{Seleucus, III}[III Ceraunus] and
}
\TGrac\ served as tribune of the plebs in 184 \textsc{bc}.
-\NoGenstrue\STGrac\ was elected praetor for 180 \textsc{bc},
-after which he was appointed governor of Hispania Citerior.
+\TGrac\ was elected praetor for 180 \textsc{bc},
+after which he was appointed governor of Hispania Citerior,
serving with the rank of proconsul. In 177 \textsc{bc},
he was elected consul, again in 163 \textsc{bc}.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{Roman Names: Scholarly Work}
% Name variant macros need to be defined
@@ -14395,10 +15346,13 @@ patrician clans. \NoGenstrue\NoAgnomentrue\OScipio\ was
one of the two elected consuls in 298 \textsc{bc}
and served during the Third Samnite War.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{Reference Work II}
% Boolean flags; the first sets up headwords and the second
-% indicates that a non-Western form should not be reversed.
+% indicates that a nonwestern form should not be reversed.
\newif\ifHeadword
\newif\ifAncientName
@@ -14451,7 +15405,6 @@ and served during the Third Samnite War.
\renewcommand{\RefArticle}[2]
{%
\noindent\Headword #1 #2%
- \medskip
}
\index{reference work}
@@ -14469,11 +15422,14 @@ foremost pioneers in the field of computer vision.
\Name{\noexpand\textUC{Kanade}, Takeo}\dots}
\RefArticle{\Name[Ada]{\noexpand\textIT{Lovelace}}}{collaborated with
-\Name*[Charles]{\noexpand\textBF{Babbage}}* and wrote what some
+\Name*[Charles]{\noexpand\textBF{Babbage}}* and wrote what some
consider to be the first computer program for the Analytical
Engine. \Name[Ada]{\noexpand\textIT{Lovelace}}\dots}
\index{reference work}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{Marginalia}
% Global Boolean flags need to be defined only once.
@@ -14560,6 +15516,9 @@ in much the same way that \Name[Robert]{\textSC{Burns}}
is that of Scotland. With the latter's rise of influence
in the 1800s, \Revert\Shak\ became known as ``\Shak''.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{Customization, Easy}
\makeatletter
@@ -14580,12 +15539,15 @@ education. \CapThis\deSmet\ was ordained in 1827 and worked
among American Indian nations after 1837. We can show the forms
\LdeSmet\ and \SdeSmet.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{Customization, Complicated}
-\newif\ifFbox % Replaces \if@nameauth@DoAlt
-\newif\ifFirstCap % Replaces \if@nameauth@DoCaps
-\newif\ifInHook % Replaces \if@nameauth@InHook
-\Fboxtrue % Replaces \AltFormatActive
+\newif\ifFbox % Replaces \if@nameauth@DoAlt \AltOn \AltOff
+\newif\ifFirstCap % Replaces \if@nameauth@DoCaps \AltCaps
+\newif\ifInHook % Replaces \if@nameauth@InHook hook dispatcher
+\Fboxtrue % Replaces \AltFormatActive
% Alternate formatting macro definition
\renewcommand*\Fbox[1]{%
@@ -14659,14 +15621,76 @@ murder of thousands of Huguenots.
\renewcommand*\MainNameHook{}
\renewcommand*\FrontNameHook{}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{Customization, Complete}
+\subsection[With xparse]{With \textsf{xparse}}
+
+\makeatletter
+
+% Change the general-case name macro to show
+% a name in a framed, colored box.
+
+\NewDocumentCommand{\MyName}{O{} m O{}}{%
+ \global\@nameauth@toksa\expandafter{#1}%
+ \global\@nameauth@toksb\expandafter{#2}%
+ \global\@nameauth@toksc\expandafter{#3}%
+ \fcolorbox{black}{gray!25!white}{\@nameauth@Name[#1]{#2}[#3]}%
+}
+
+% Likewise change the macro for when names are forced long.
+\NewDocumentCommand{\MyLName}{O{} m O{}}{%
+ \global\@nameauth@toksa\expandafter{#1}%
+ \global\@nameauth@toksb\expandafter{#2}%
+ \global\@nameauth@toksc\expandafter{#3}%
+ \fcolorbox{black}{green!25!white}{\@nameauth@Name[#1]{#2}[#3]}%
+}
+
+% Likewise change the macro when personal names are desired.
+\NewDocumentCommand{\MyFName}{O{} m O{}}{%
+ \global\@nameauth@toksa\expandafter{#1}%
+ \global\@nameauth@toksb\expandafter{#2}%
+ \global\@nameauth@toksc\expandafter{#3}%
+ \fcolorbox{black}{yellow!25!white}{\@nameauth@Name[#1]{#2}[#3]}%
+}
+\makeatother
+
+% Change the formatting hooks, but do not use alternate.
+% formatting, which is separate from that above.
+\renewcommand*\NamesFormat[1]{\scshape#1}
+\renewcommand*\MainNameHook[1]{#1}
+
+% Change the naming macro hooks.
+\renewcommand*\NameauthName{\MyName}
+\renewcommand*\NameauthLName{\MyLName}
+\renewcommand*\NameauthFName{\MyFName}
+
+\index{customization, insane}
+\ForgetThis\Name[Adolf]{Harnack} was a theologian who stressed
+the Fatherhood of God and the brotherhood of man.
+\Name[Adolf]{Harnack} flourished in the early twentieth
+century; \Name*[Adolf von]{Harnack}; \FName[Adolf]{Harnack}.
+\AltFormatInactive
+
+\makeatletter
+\renewcommand*\NameauthName{\@nameauth@Name}
+\renewcommand*\NameauthLName{\@nameauth@Name}
+\renewcommand*\NameauthFName{\@nameauth@Name}
+\makeatother
+
+\renewcommand*\NamesFormat{}
+\renewcommand*\MainNameHook{}
+
+\subsection[With xargs]{With \textsf{xargs}}
+
\makeatletter
% Change the general-case name macro to show
% a name in a framed, colored box.
-\newcommandx*\MyName[3][1=\@empty, 3=\@empty]{%
+\renewcommandx\MyName[3][1=\empty, 3=\empty]{%
\global\@nameauth@toksa\expandafter{#1}%
\global\@nameauth@toksb\expandafter{#2}%
\global\@nameauth@toksc\expandafter{#3}%
@@ -14674,7 +15698,7 @@ murder of thousands of Huguenots.
}
% Likewise change the macro for when names are forced long.
-\newcommandx*\MyLName[3][1=\@empty, 3=\@empty]{%
+\renewcommandx\MyLName[3][1=\empty, 3=\empty]{%
\global\@nameauth@toksa\expandafter{#1}%
\global\@nameauth@toksb\expandafter{#2}%
\global\@nameauth@toksc\expandafter{#3}%
@@ -14682,7 +15706,7 @@ murder of thousands of Huguenots.
}
% Likewise change the macro when personal names are desired.
-\newcommandx*\MyFName[3][1=\@empty, 3=\@empty]{%
+\renewcommandx\MyFName[3][1=\empty, 3=\empty]{%
\global\@nameauth@toksa\expandafter{#1}%
\global\@nameauth@toksb\expandafter{#2}%
\global\@nameauth@toksc\expandafter{#3}%
@@ -14704,8 +15728,7 @@ murder of thousands of Huguenots.
\ForgetThis\Name[Adolf]{Harnack} was a theologian who stressed
the Fatherhood of God and the brotherhood of man.
\Name[Adolf]{Harnack} flourished in the early twentieth
-century. We also produce \Name*[Adolf]{Harnack} and
-\FName[Adolf]{Harnack}.
+century; \Name*[Adolf von]{Harnack}; \FName[Adolf]{Harnack}.
\AltFormatInactive
\makeatletter
@@ -14717,64 +15740,23 @@ century. We also produce \Name*[Adolf]{Harnack} and
\renewcommand*\NamesFormat{}
\renewcommand*\MainNameHook{}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{\protect\LaTeX\ Engines}
We use \texttt{american} for the language; one should use one's own.
-We use Latin Modern. We could load \textsf{tikz} using
+We use Latin Modern for the font; that should be changed at the user's
+discretion. We could load \textsf{tikz} using
\texttt{\textbackslash ifDoTikZ} to avoid crashing some \texttt{dvi}
-viewers in a \texttt{dvi}-only workflow.
+viewers in a \texttt{dvi}-only workflow. Below we list the salient
+points from \texttt{compat.tex}, included with \textsf{nameauth}.
\index{\protect\LaTeX\ engines}
\begin{quote}\small
-\begin{Verbatim}
- \IfFileExists{iftex.sty}{\usepackage{iftex}}{}
- \unless\ifdefined\RequireTUTeX
- \usepackage{ifxetex}
- \usepackage{ifluatex}
- \usepackage{ifpdf}
- \fi
-
- \newif\ifDoTikZ % Is loading TikZ okay?
-
- \ifxetex
- \usepackage{fontspec}
- \usepackage{polyglossia}
- \setdefaultlanguage{american} % Use own language
- \usepackage{tikz}
- \DoTikZtrue % PDF: yes TikZ okay.
- \else
- \ifluatex
- \ifpdf
- \usepackage{fontspec}
- \usepackage{polyglossia}
- \setdefaultlanguage{american} % Use own language
- \usepackage{tikz}
- \DoTikZtrue % PDF: yes TikZ okay.
- \else
- \IfFileExists{utf8-2018.def}{}
- {\usepackage[utf8]{inputenc}}
- \usepackage[TS1,T1]{fontenc}
- \usepackage[american]{babel} % Use own language
- \usepackage{lmodern}
- % Perhaps add \usepackage{tikz} with caveats.
- \fi
- \else
- \IfFileExists{utf8-2018.def}{}
- {\usepackage[utf8]{inputenc}}
- \usepackage[TS1,T1]{fontenc}
- \usepackage[american]{babel} % Use own language
- \usepackage{lmodern}
- \ifpdf
- \usepackage{tikz}
- \DoTikZtrue % PDF: yes TikZ okay.
- \fi
- \fi
- \fi
-\end{Verbatim}
+ \VerbatimInput[gobble=0, firstline=29]{compat.tex}
\end{quote}
-\newpage
-
In the body text we can use something like the test below for:\quad
\fbox{\ifxetex doing \texttt{pdf} things\else
\ifpdf doing \texttt{pdf} things\else
@@ -14813,6 +15795,8 @@ or just the body text to work under multiple engines:
\fi
\end{Verbatim}
+\newpage
+
\begin{Verbatim}
\unless\ifxetex
\unless\ifluatex
@@ -14829,267 +15813,373 @@ or just the body text to work under multiple engines:
\end{Verbatim}
\end{quote}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\section{Miscellaneous Tests: Spaces}
-Here we test to see if any unwanted spaces exist in macros that take name arguments.
-If everything is OK, two vertical bars should either immediately precede and follow
-the arguments, or have no space between them. This section also tests if all possible
-argument combinations work in most macros that take name arguments.
-We disable indexing here.\\
-\IndexInactive
-
-\hbox to 0.7\textwidth{\Verb+\Name[FNN]{SNN,Affix}[Alternate]+\dotfill
- |\Name[FNN]{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\Name*[FNN]{SNN,Affix}+\dotfill
- |\Name*[FNN]{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\DropAffix\Name*[FNN]{SNN,Affix}+\dotfill
- |\DropAffix\Name*[FNN]{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\Name[FNN]{SNN,Affix}+\dotfill
- |\Name[FNN]{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\FName[FNN]{SNN,Affix}[Alternate]+\dotfill
- |\FName[FNN]{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\FName[FNN]{SNN,Affix}+\dotfill
- |\FName[FNN]{SNN,Affix}|}\medskip
-
-\hbox to 0.7\textwidth{\Verb+\Name{SNN,Affix}[Alternate]+\dotfill
- |\Name{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\Name*{SNN,Affix}+\dotfill
- |\Name*{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\Name{SNN,Affix}+\dotfill
- |\Name{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\FName{SNN,Affix}+\dotfill
- |\FName{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\ForceFN\FName{SNN,Affix}[Alternate]+\dotfill
- |\ForceFN\FName{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\ForceFN\FName{SNN,Affix}+\dotfill
- |\ForceFN\FName{SNN,Affix}|}\medskip
+Here we test to see if any unwanted spaces exist in macros that take
+name arguments. If everything is OK, one should see two vertical bars
+\texttt{||} where no output in the text is produced, or no spaces
+between an enclosed name and the bars. This section also tests if most
+possible argument combinations work in most macros that take name arguments.
+
+\begin{quote}
+\Verb+\Name[FNNa]{SNNa,Affix}[Alternate]+\dotfill
+ |\Name[FNNa]{SNNa,Affix}[Alternate]|\\
+\Verb+\Name*[FNNa]{SNNa,Affix}+\dotfill
+ |\Name*[FNNa]{SNNa,Affix}|\\
+\Verb+\DropAffix\Name*[FNNa]{SNNa,Affix}[Alternate]+\dotfill
+ |\DropAffix\Name*[FNNa]{SNNa,Affix}[Alternate]|\\
+\Verb+\DropAffix\Name*[FNNa]{SNNa,Affix}+\dotfill
+ |\DropAffix\Name*[FNNa]{SNNa,Affix}|\\
+\Verb+\Name[FNNa]{SNNa,Affix}[Alternate]+\dotfill
+ |\Name[FNNa]{SNNa,Affix}[Alternate]|\\
+\Verb+\Name[FNNa]{SNNa,Affix}+\dotfill
+ |\Name[FNNa]{SNNa,Affix}|\\
+\Verb+\FName[FNNa]{SNNa,Affix}[Alternate]+\dotfill
+ |\FName[FNNa]{SNNa,Affix}[Alternate]|\\
+\Verb+\FName[FNNa]{SNNa,Affix}+\dotfill
+ |\FName[FNNa]{SNNa,Affix}|
+\end{quote}
-\newpage
+\begin{quote}
+\Verb+\Name[FNNb]{SNNb}[Alternate]+\dotfill
+ |\Name[FNNb]{SNNb}[Alternate]|\\
+\Verb+\Name*[FNNb]{SNNb}+\dotfill
+ |\Name*[FNNb]{SNNb}|\\
+\Verb+\Name[FNNb]{SNNb}[Alternate]+\dotfill
+ |\Name[FNNb]{SNNb}[Alternate]|\\
+\Verb+\Name[FNNb]{SNNb}+\dotfill
+ |\Name[FNNb]{SNNb}|\\
+\Verb+\FName[FNNb]{SNNb}[Alternate]+\dotfill
+ |\FName[FNNb]{SNNb}[Alternate]|\\
+\Verb+\FName[FNNb]{SNNb}+\dotfill
+ |\FName[FNNb]{SNNb}|
+\end{quote}
-\hbox to 0.7\textwidth{\Verb+\ForgetThis\Name{SNN}[Alternate]+\dotfill
- |\ForgetThis\Name{SNN}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\Name*{SNN}[Alternate]+\dotfill
- |\Name*{SNN}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\Name{SNN}[Alternate]+\dotfill
- |\Name{SNN}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\FName{SNN}[Alternate]+\dotfill
- |\FName{SNN}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\ForceFN\FName{SNN}[Alternate]+\dotfill
- |\ForceFN\FName{SNN}[Alternate]|}\medskip
-
-\hbox to 0.7\textwidth{\Verb+\IndexName[FNN]{SNN,Affix}[Alternate]+\dotfill
- |\IndexName[FNN]{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\IndexName[FNN]{SNN,Affix}+\dotfill
- |\IndexName[FNN]{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\IndexName{SNN,Affix}[Alternate]+\dotfill
- |\IndexName{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\IndexName{SNN,Affix}+\dotfill
- |\IndexName{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\IndexName{SNN}[Alternate]+\dotfill
- |\IndexName{SNN}[Alternate]|}\medskip
-
-\hbox to 0.7\textwidth{\Verb+\IndexRef[FNN]{SNN,Affix}[Alternate]{Target}+\dotfill
- |\IndexRef[FNN]{SNN,Affix}[Alternate]{Target}|}\par
-\hbox to 0.7\textwidth{\Verb+\IndexRef[FNN]{SNN,Affix}{Target}+\dotfill
- |\IndexRef[FNN]{SNN,Affix}{Target}|}\par
-\hbox to 0.7\textwidth{\Verb+\IndexRef{SNN,Affix}[Alternate]{Target}+\dotfill
- |\IndexRef{SNN,Affix}[Alternate]{Target}|}\par
-\hbox to 0.7\textwidth{\Verb+\IndexRef{SNN,Affix}{Target}+\dotfill
- |\IndexRef{SNN,Affix}{Target}|}\par
-\hbox to 0.7\textwidth{\Verb+\IndexRef{SNN}[Alternate]{Target}+\dotfill
- |\IndexRef{SNN}[Alternate]{Target}|}\medskip
-
-\hbox to 0.7\textwidth{\Verb+\ExcludeName[FNN]{SNN,Affix}[Alternate]+\dotfill
- |\ExcludeName[FNN]{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\ExcludeName[FNN]{SNN,Affix}+\dotfill
- |\ExcludeName[FNN]{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\ExcludeName{SNN,Affix}[Alternate]+\dotfill
- |\ExcludeName{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\ExcludeName{SNN,Affix}+\dotfill
- |\ExcludeName{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\ExcludeName{SNN}[Alternate]+\dotfill
- |\ExcludeName{SNN}[Alternate]|}\medskip
-
-\hbox to 0.7\textwidth{\Verb+\IncludeName[FNN]{SNN,Affix}[Alternate]+\dotfill
- |\IncludeName[FNN]{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\IncludeName[FNN]{SNN,Affix}+\dotfill
- |\IncludeName[FNN]{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\IncludeName{SNN,Affix}[Alternate]+\dotfill
- |\IncludeName{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\IncludeName{SNN,Affix}+\dotfill
- |\IncludeName{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\IncludeName{SNN}[Alternate]+\dotfill
- |\IncludeName{SNN}[Alternate]|}\medskip
-
-\hbox to 0.7\textwidth{\Verb+\IncludeName*[FNN]{SNN,Affix}[Alternate]+\dotfill
- |\IncludeName*[FNN]{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\IncludeName*[FNN]{SNN,Affix}+\dotfill
- |\IncludeName*[FNN]{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\IncludeName*{SNN,Affix}[Alternate]+\dotfill
- |\IncludeName*{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\IncludeName*{SNN,Affix}+\dotfill
- |\IncludeName*{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\IncludeName*{SNN}[Alternate]+\dotfill
- |\IncludeName*{SNN}[Alternate]|}\medskip
-
-\hbox to 0.7\textwidth{\Verb+\PretagName[FNN]{SNN,Affix}[Alternate]{Sort}+\dotfill
- |\PretagName[FNN]{SNN,Affix}[Alternate]{Sort}|}\par
-\hbox to 0.7\textwidth{\Verb+\PretagName[FNN]{SNN,Affix}{Sort}+\dotfill
- |\PretagName[FNN]{SNN,Affix}{Sort}|}\par
-\hbox to 0.7\textwidth{\Verb+\PretagName{SNN,Affix}[Alternate]{Sort}+\dotfill
- |\PretagName{SNN,Affix}[Alternate]{Sort}|}\par
-\hbox to 0.7\textwidth{\Verb+\PretagName{SNN,Affix}{Sort}+\dotfill
- |\PretagName{SNN,Affix}{Sort}|}\par
-\hbox to 0.7\textwidth{\Verb+\PretagName{SNN}[Alternate]{Sort}+\dotfill
- |\PretagName{SNN}[Alternate]{Sort}|}\medskip
-
-\hbox to 0.7\textwidth{\Verb+\TagName[FNN]{SNN,Affix}[Alternate]{Tag}+\dotfill
- |\TagName[FNN]{SNN,Affix}[Alternate]{Tag}|}\par
-\hbox to 0.7\textwidth{\Verb+\TagName[FNN]{SNN,Affix}{Tag}+\dotfill
- |\TagName[FNN]{SNN,Affix}{Tag}|}\par
-\hbox to 0.7\textwidth{\Verb+\TagName{SNN,Affix}[Alternate]{Tag}+\dotfill
- |\TagName{SNN,Affix}[Alternate]{Tag}|}\par
-\hbox to 0.7\textwidth{\Verb+\TagName{SNN,Affix}{Tag}+\dotfill
- |\TagName{SNN,Affix}{Tag}|}\par
-\hbox to 0.7\textwidth{\Verb+\TagName{SNN}[Alternate]{Tag}+\dotfill
- |\TagName{SNN}[Alternate]{Tag}|}\medskip
-
-\hbox to 0.7\textwidth{\Verb+\UntagName[FNN]{SNN,Affix}[Alternate]+\dotfill
- |\UntagName[FNN]{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\UntagName[FNN]{SNN,Affix}+\dotfill
- |\UntagName[FNN]{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\UntagName{SNN,Affix}[Alternate]+\dotfill
- |\UntagName{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\UntagName{SNN,Affix}+\dotfill
- |\UntagName{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\UntagName{SNN}[Alternate]+\dotfill
- |\UntagName{SNN}[Alternate]|}\medskip
-
-\hbox to 0.7\textwidth{\Verb+\NameAddInfo[FNN]{SNN,Affix}[Alternate]{Info}+\dotfill
- |\NameAddInfo[FNN]{SNN,Affix}[Alternate]{Info}|}\par
-\hbox to 0.7\textwidth{\Verb+\NameAddInfo[FNN]{SNN,Affix}{Info}+\dotfill
- |\NameAddInfo[FNN]{SNN,Affix}{Info}|}\par
-\hbox to 0.7\textwidth{\Verb+\NameAddInfo{SNN,Affix}[Alternate]{Info}+\dotfill
- |\NameAddInfo{SNN,Affix}[Alternate]{Info}|}\par
-\hbox to 0.7\textwidth{\Verb+\NameAddInfo{SNN,Affix}{Info}+\dotfill
- |\NameAddInfo{SNN,Affix}{Info}|}\par
-\hbox to 0.7\textwidth{\Verb+\NameAddInfo{SNN}[Alternate]{Info}+\dotfill
- |\NameAddInfo{SNN}[Alternate]{Info}|}\medskip
-
-\hbox to 0.7\textwidth{\Verb+\NameQueryInfo[FNN]{SNN,Affix}[Alternate]+\dotfill
- |\NameQueryInfo[FNN]{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\NameQueryInfo[FNN]{SNN,Affix}+\dotfill
- |\NameQueryInfo[FNN]{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\NameQueryInfo{SNN,Affix}[Alternate]+\dotfill
- |\NameQueryInfo{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\NameQueryInfo{SNN,Affix}+\dotfill
- |\NameQueryInfo{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\NameQueryInfo{SNN}[Alternate]+\dotfill
- |\NameQueryInfo{SNN}[Alternate]|}\medskip
+\begin{quote}
+\Verb+\Name{SNNc,Affix}[Alternate]+\dotfill
+ |\Name{SNNc,Affix}[Alternate]|\\
+\Verb+\Name*{SNNc,Affix}+\dotfill
+ |\Name*{SNNc,Affix}|\\
+\Verb+\Name{SNNc,Affix}[Alternate]+\dotfill
+ |\Name{SNNc,Affix}[Alternate]|\\
+\Verb+\Name{SNNc,Affix}+\dotfill
+ |\Name{SNNc,Affix}|\\
+\Verb+\FName{SNNc,Affix}[Alternate]+\dotfill
+ |\FName{SNNc,Affix}[Alternate]|\\
+\Verb+\FName{SNNc,Affix}+\dotfill
+ |\FName{SNNc,Affix}|\\
+\Verb+\ForceFN\FName{SNNc,Affix}[Alternate]+\dotfill
+ |\ForceFN\FName{SNNc,Affix}[Alternate]|\\
+\Verb+\ForceFN\FName{SNNc,Affix}+\dotfill
+ |\ForceFN\FName{SNNc,Affix}|
+\end{quote}
-\newpage
+\begin{quote}
+\Verb+\Name{SNNd}[Alternate]+\dotfill
+ |\Name{SNNd}[Alternate]|\\
+\Verb+\Name*{SNNd}[Alternate]+\dotfill
+ |\Name*{SNNd}[Alternate]|\\
+\Verb+\Name{SNNd}[Alternate]+\dotfill
+ |\Name{SNNd}[Alternate]|\\
+\Verb+\FName{SNNd}[Alternate]+\dotfill
+ |\FName{SNNd}[Alternate]|\\
+\Verb+\ForceFN\FName{SNNd}[Alternate]+\dotfill
+ |\ForceFN\FName{SNNd}[Alternate]|
+\end{quote}
+
+\begin{quote}
+\Verb+\IndexName[FNNe]{SNNe,Affix}[Alternate]+\dotfill
+ |\IndexName[FNNe]{SNNe,Affix}[Alternate]|\\
+\Verb+\IndexName[FNNe]{SNNe,Affix}+\dotfill
+ |\IndexName[FNNe]{SNNe,Affix}|\\
+\Verb+\IndexName{SNNf,Affix}[Alternate]+\dotfill
+ |\IndexName{SNNf,Affix}[Alternate]|\\
+\Verb+\IndexName{SNNf,Affix}+\dotfill
+ |\IndexName{SNNf,Affix}|\\
+\Verb+\IndexName{SNNf}[Alternate]+\dotfill
+ |\IndexName{SNNf}[Alternate]|
+\end{quote}
+
+\begin{quote}
+\Verb+\IndexRef[FNNg]{SNNg,Affix}[Alternate]{Target}+\dotfill
+ |\IndexRef[FNNg]{SNNg,Affix}[Alternate]{Target}|\\
+\Verb+\IndexRef[FNNg]{SNNg,Affix}{Target}+\dotfill
+ |\IndexRef[FNNg]{SNNg,Affix}{Target}|\\
+\Verb+\IndexRef{SNNh,Affix}[Alternate]{Target}+\dotfill
+ |\IndexRef{SNNh,Affix}[Alternate]{Target}|\\
+\Verb+\IndexRef{SNNh,Affix}{Target}+\dotfill
+ |\IndexRef{SNNh,Affix}{Target}|\\
+\Verb+\IndexRef{SNNh}[Alternate]{Target}+\dotfill
+ |\IndexRef{SNNh}[Alternate]{Target}|
+\end{quote}
+
+\begin{quote}
+\Verb+\ExcludeName[FNNi]{SNNi,Affix}[Alternate]+\dotfill
+ |\ExcludeName[FNNi]{SNNi,Affix}[Alternate]|\\
+\Verb+\ExcludeName[FNNi]{SNNi,Affix}+\dotfill
+ |\ExcludeName[FNNi]{SNNi,Affix}|\\
+\Verb+\ExcludeName{SNNj,Affix}[Alternate]+\dotfill
+ |\ExcludeName{SNNj,Affix}[Alternate]|\\
+\Verb+\ExcludeName{SNNj,Affix}+\dotfill
+ |\ExcludeName{SNNj,Affix}|\\
+\Verb+\ExcludeName{SNNj}[Alternate]+\dotfill
+ |\ExcludeName{SNNj}[Alternate]|
+\end{quote}
+
+\begin{quote}
+\Verb+\IncludeName[FNNi]{SNNi,Affix}[Alternate]+\dotfill
+ |\IncludeName[FNNi]{SNNi,Affix}[Alternate]|\\
+\Verb+\IncludeName[FNNi]{SNNi,Affix}+\dotfill
+ |\IncludeName[FNNi]{SNNi,Affix}|\\
+\Verb+\IncludeName{SNNj,Affix}[Alternate]+\dotfill
+ |\IncludeName{SNNj,Affix}[Alternate]|\\
+\Verb+\IncludeName{SNNj,Affix}+\dotfill
+ |\IncludeName{SNNj,Affix}|\\
+\Verb+\IncludeName{SNNj}[Alternate]+\dotfill
+ |\IncludeName{SNNj}[Alternate]|
+\end{quote}
+
+\begin{quote}
+\Verb+\IncludeName*[FNNi]{SNNi,Affix}[Alternate]+\dotfill
+ |\IncludeName*[FNNi]{SNNi,Affix}[Alternate]|\\
+\Verb+\IncludeName*[FNNi]{SNNi,Affix}+\dotfill
+ |\IncludeName*[FNNi]{SNNi,Affix}|\\
+\Verb+\IncludeName*{SNNj,Affix}[Alternate]+\dotfill
+ |\IncludeName*{SNNj,Affix}[Alternate]|\\
+\Verb+\IncludeName*{SNNj,Affix}+\dotfill
+ |\IncludeName*{SNNj,Affix}|\\
+\Verb+\IncludeName*{SNNj}[Alternate]+\dotfill
+ |\IncludeName*{SNNj}[Alternate]|
+\end{quote}
+
+\begin{quote}
+\Verb+\PretagName[FNNk]{SNNk,Affix}[Alternate]{Sorta}+\dotfill
+ |\PretagName[FNNk]{SNNk,Affix}[Alternate]{Sorta}|\\
+\Verb+\PretagName[FNNl]{SNNl,Affix}{Sortb}+\dotfill
+ |\PretagName[FNNl]{SNNl,Affix}{Sortb}|\\
+\Verb+\PretagName{SNNm,Affix}[Alternate]{Sortc}+\dotfill
+ |\PretagName{SNNm,Affix}[Alternate]{Sortc}|\\
+\Verb+\PretagName{SNNn,Affix}{Sortd}+\dotfill
+ |\PretagName{SNNn,Affix}{Sortd}|\\
+\Verb+\PretagName{SNNo}[Alternate]{Sorte}+\dotfill
+ |\PretagName{SNNo}[Alternate]{Sorte}|
+\end{quote}
+
+\begin{quote}
+\Verb+\TagName[FNNa]{SNNa,Affix}[Alternate]{Tag}+\dotfill
+ |\TagName[FNNa]{SNNa,Affix}[Alternate]{Tag}|\\
+\Verb+\TagName[FNNa]{SNNa,Affix}{Tag}+\dotfill
+ |\TagName[FNNa]{SNNa,Affix}{Tag}|\\
+\Verb+\TagName[FNNb]{SNNb}[Alternate]{Tag}+\dotfill
+ |\TagName[FNNb]{SNNb}[Alternate]{Tag}|\\
+\Verb+\TagName[FNNb]{SNNb}{Tag}+\dotfill
+ |\TagName[FNNb]{SNNb,Affix}{Tag}|\\
+\Verb+\TagName{SNNc,Affix}[Alternate]{Tag}+\dotfill
+ |\TagName{SNNc,Affix}[Alternate]{Tag}|\\
+\Verb+\TagName{SNNc,Affix}{Tag}+\dotfill
+ |\TagName{SNNc,Affix}{Tag}|\\
+\Verb+\TagName{SNNd}[Alternate]{Tag}+\dotfill
+ |\TagName{SNNd}[Alternate]{Tag}|
+\end{quote}
-\hbox to 0.7\textwidth{\Verb+\NameClearInfo[FNN]{SNN,Affix}[Alternate]+\dotfill
- |\NameClearInfo[FNN]{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\NameClearInfo[FNN]{SNN,Affix}+\dotfill
- |\NameClearInfo[FNN]{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\NameClearInfo{SNN,Affix}[Alternate]+\dotfill
- |\NameClearInfo{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\NameClearInfo{SNN,Affix}+\dotfill
- |\NameClearInfo{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\NameClearInfo{SNN}[Alternate]+\dotfill
- |\NameClearInfo{SNN}[Alternate]|}\medskip
-
-\hbox to 0.7\textwidth{\Verb+\ForgetName[FNN]{SNN,Affix}[Alternate]+\dotfill
- |\ForgetName[FNN]{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\ForgetName[FNN]{SNN,Affix}+\dotfill
- |\ForgetName[FNN]{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\ForgetName{SNN,Affix}[Alternate]+\dotfill
- |\ForgetName{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\ForgetName{SNN,Affix}+\dotfill
- |\ForgetName{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\ForgetName{SNN}[Alternate]+\dotfill
- |\ForgetName{SNN}[Alternate]|}\medskip
-
-\Verb+\LocalNames+\LocalNames\par
-\hbox to 0.7\textwidth{\Verb+\SubvertName[FNN]{SNN,Affix}[Alternate]+\dotfill
- |\SubvertName[FNN]{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\SubvertName[FNN]{SNN,Affix}+\dotfill
- |\SubvertName[FNN]{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\SubvertName{SNN,Affix}[Alternate]+\dotfill
- |\SubvertName{SNN,Affix}[Alternate]|}\par
-\hbox to 0.7\textwidth{\Verb+\SubvertName{SNN,Affix}+\dotfill
- |\SubvertName{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\SubvertName{SNN}[Alternate]+\dotfill
- |\SubvertName{SNN}[Alternate]|}\par
-\Verb+\GlobalNames+\GlobalNames\medskip
-
-\hbox to 0.7\textwidth{\Verb+\IfMainName[FNN]{SNN,Affix}[Alternate]{Y}{N}+\dotfill
- |\IfMainName[FNN]{SNN,Affix}[Alternate]{Y}{N}|}\par
-\hbox to 0.7\textwidth{\Verb+\IfMainName[FNN]{SNN,Affix}{Y}{N}+\dotfill
- |\IfMainName[FNN]{SNN,Affix}{Y}{N}|}\par
-\hbox to 0.7\textwidth{\Verb+\IfMainName{SNN,Affix}[Alternate]{Y}{N}+\dotfill
- |\IfMainName{SNN,Affix}[Alternate]{Y}{N}|}\par
-\hbox to 0.7\textwidth{\Verb+\IfMainName{SNN,Affix}{Y}{N}+\dotfill
- |\IfMainName{SNN,Affix}{Y}{N}|}\par
-\hbox to 0.7\textwidth{\Verb+\IfMainName{SNN}[Alternate]{Y}{N}+\dotfill
- |\IfMainName{SNN}[Alternate]{Y}{N}|}\medskip
-
-\hbox to 0.7\textwidth{\Verb+\IfFrontName[FNN]{SNN,Affix}[Alternate]{Y}{N}+\dotfill
- |\IfFrontName[FNN]{SNN,Affix}[Alternate]{Y}{N}|}\par
-\hbox to 0.7\textwidth{\Verb+\IfFrontName[FNN]{SNN,Affix}{Y}{N}+\dotfill
- |\IfFrontName[FNN]{SNN,Affix}{Y}{N}|}\par
-\hbox to 0.7\textwidth{\Verb+\IfFrontName{SNN,Affix}[Alternate]{Y}{N}+\dotfill
- |\IfFrontName{SNN,Affix}[Alternate]{Y}{N}|}\par
-\hbox to 0.7\textwidth{\Verb+\IfFrontName{SNN,Affix}{Y}{N}+\dotfill
- |\IfFrontName{SNN,Affix}{Y}{N}|}\par
-\hbox to 0.7\textwidth{\Verb+\IfFrontName{SNN}[Alternate]{Y}{N}+\dotfill
- |\IfFrontName{SNN}[Alternate]{Y}{N}|}\medskip
-
-\hbox to 0.7\textwidth{\Verb+\SeeAlso\IndexRef[FNN]{SNN,Affix}{Target}+\dotfill
- |\SeeAlso\IndexRef[FNN]{SNN,Affix}{Target}|}\par
-\hbox to 0.7\textwidth{\Verb+\ExcludeName{SNN,Affix}+\dotfill
- |\ExcludeName{SNN,Affix}|}\par
-\hbox to 0.7\textwidth{\Verb+\IfAKA[FNN]{SNN,Affix}[Alternate]{Y}{N}{X}+\dotfill
- |\IfAKA[FNN]{SNN,Affix}[Alternate]{Y}{N}{X}|}\par
-\hbox to 0.7\textwidth{\Verb+\IfAKA[FNN]{SNN,Affix}{Y}{N}{X}+\dotfill
- |\IfAKA[FNN]{SNN,Affix}{Y}{N}{X}|}\par
-\hbox to 0.7\textwidth{\Verb+\IfAKA{SNN,Affix}[Alternate]{Y}{N}{X}+\dotfill
- |\IfAKA{SNN,Affix}[Alternate]{Y}{N}{X}|}\par
-\hbox to 0.7\textwidth{\Verb+\IfAKA{SNN,Affix}{Y}{N}{X}+\dotfill
- |\IfAKA{SNN,Affix}{Y}{N}{X}|}\par
-\hbox to 0.7\textwidth{\Verb+\IfAKA{SNN}[Alternate]{Y}{N}{X}+\dotfill
- |\IfAKA{SNN}[Alternate]{Y}{N}{X}|}\medskip
-
-\hbox to \textwidth{\Verb+\AKA[FNN1]{SNN1,Affix1}[FNN2]{SNN2,Affix2}[Alternate2]+\dotfill
- |\AKA[FNN1]{SNN1,Affix1}[FNN2]{SNN2,Affix2}[Alternate2]|}\par
-\hbox to \textwidth{\Verb+\AKA[FNN1]{SNN1,Affix1}[FNN2]{SNN2,Affix2}+\dotfill
- |\AKA[FNN1]{SNN1,Affix1}[FNN2]{SNN2,Affix2}|}\par
-\hbox to \textwidth{\Verb+\DropAffix\AKA[FNN1]{SNN1,Affix1}[FNN2]{SNN2,Affix2}+\dotfill
- |\DropAffix\AKA[FNN1]{SNN1,Affix1}[FNN2]{SNN2,Affix2}|}\par
-\hbox to \textwidth{\Verb+\AKA*[FNN1]{SNN1,Affix1}[FNN2]{SNN2,Affix2}[Alternate2]+\dotfill
- |\AKA*[FNN1]{SNN1,Affix1}[FNN2]{SNN2,Affix2}[Alternate2]|}\par
-\hbox to \textwidth{\Verb+\AKA*[FNN1]{SNN1,Affix1}[FNN2]{SNN2,Affix2}+\dotfill
- |\AKA*[FNN1]{SNN1,Affix1}[FNN2]{SNN2,Affix2}|}\medskip
-
-\hbox to \textwidth{\Verb+\AKA[FNN1]{SNN1,Affix1}{SNN3,Affix3}[Alternate3]+\dotfill
- |\AKA[FNN1]{SNN1,Affix1}{SNN3,Affix3}[Alternate3]|}\par
-\hbox to \textwidth{\Verb+\AKA[FNN1]{SNN1,Affix1}{SNN3,Affix3}+\dotfill
- |\AKA[FNN1]{SNN1,Affix1}{SNN3,Affix3}|}\par
-\hbox to \textwidth{\Verb+\AKA*[FNN1]{SNN1,Affix1}{SNN3,Affix3}+\dotfill
- |\AKA*[FNN1]{SNN1,Affix1}{SNN3,Affix3}|}\par
-\hbox to \textwidth{\Verb+\ForceFN\AKA*[FNN1]{SNN1,Affix1}{SNN3,Affix3}[Alternate3]+\dotfill
- |\ForceFN\AKA*[FNN1]{SNN1,Affix1}{SNN3,Affix3}[Alternate3]|}\par
-\hbox to \textwidth{\Verb+\ForceFN\AKA*[FNN1]{SNN1,Affix1}{SNN3,Affix3}+\dotfill
- |\ForceFN\AKA*[FNN1]{SNN1,Affix1}{SNN3,Affix3}|}\medskip
-
-\hbox to \textwidth{\Verb+\AKA[FNN1]{SNN1,Affix1}{SNN4}[Alternate4]+\dotfill
- |\AKA[FNN1]{SNN1,Affix1}{SNN4}[Alternate4]|}\par
-\hbox to \textwidth{\Verb+\AKA*[FNN1]{SNN1,Affix1}{SNN4}[Alternate4]+\dotfill
- |\AKA*[FNN1]{SNN1,Affix1}{SNN4}[Alternate4]|}\par
-\hbox to \textwidth{\Verb+\ForceFN\AKA*[FNN1]{SNN1,Affix1}{SNN4}[Alternate4]+\dotfill
- |\ForceFN\AKA*[FNN1]{SNN1,Affix1}{SNN4}[Alternate4]|}\medskip
+\begin{quote}
+\Verb+\UntagName[FNNa]{SNNa,Affix}[Alternate]+\dotfill
+ |\UntagName[FNNa]{SNNa,Affix}[Alternate]|\\
+\Verb+\UntagName[FNNa]{SNNa,Affix}+\dotfill
+ |\UntagName[FNNa]{SNNa,Affix}|\\
+\Verb+\UntagName[FNNb]{SNNb}[Alternate]+\dotfill
+ |\UntagName[FNNb]{SNNb}[Alternate]|\\
+\Verb+\UntagName[FNNb]{SNNb}+\dotfill
+ |\UntagName[FNNb]{SNNb,Affix}|\\
+\Verb+\UntagName{SNNc,Affix}[Alternate]+\dotfill
+ |\UntagName{SNNc,Affix}[Alternate]|\\
+\Verb+\UntagName{SNNc,Affix}+\dotfill
+ |\UntagName{SNNc,Affix}|\\
+\Verb+\UntagName{SNNd}[Alternate]+\dotfill
+ |\UntagName{SNNd}[Alternate]|
+\end{quote}
+
+\begin{quote}
+\Verb+\NameAddInfo[FNNa]{SNNa,Affix}[Alternate]{Info1}+\dotfill
+ |\NameAddInfo[FNNa]{SNNa,Affixa}[Alternate]{Info1}|\\
+\Verb+\NameAddInfo[FNNa]{SNNa,Affix}{Info2}+\dotfill
+ |\NameAddInfo[FNNa]{SNNa,Affix}{Info2}|\\
+\Verb+\NameAddInfo[FNNb]{SNNb}[Alternate]{Info3}+\dotfill
+ |\NameAddInfo[FNNb]{SNNb}[Alternate]{Info3}|\\
+\Verb+\NameAddInfo[FNNb]{SNNb}{Info4}+\dotfill
+ |\NameAddInfo[FNNb]{SNNb}{Info4}|\\
+\Verb+\NameAddInfo{SNNc,Affix}[Alternate]{Info5}+\dotfill
+ |\NameAddInfo{SNNc,Affix}[Alternate]{Info5}|\\
+\Verb+\NameAddInfo{SNNc,Affix}{Info6}+\dotfill
+ |\NameAddInfo{SNNc,Affix}{Info6}|\\
+\Verb+\NameAddInfo{SNNd}[Alternate]{Info7}+\dotfill
+ |\NameAddInfo{SNNd}[Alternate]{Info7}|
+\end{quote}
+
+\begin{quote}
+\Verb+\NameQueryInfo[FNNa]{SNNa,Affix}[Alternate]+\dotfill
+ |\NameQueryInfo[FNNa]{SNNa,Affix}[Alternate]|\\
+\Verb+\NameQueryInfo[FNNa]{SNNa,Affix}+\dotfill
+ |\NameQueryInfo[FNNa]{SNNa,Affix}|\\
+\Verb+\NameQueryInfo[FNNb]{SNNb}[Alternate]+\dotfill
+ |\NameQueryInfo[FNNb]{SNNb}[Alternate]|\\
+\Verb+\NameQueryInfo[FNNb]{SNNb}+\dotfill
+ |\NameQueryInfo[FNNb]{SNNb}|\\
+\Verb+\NameQueryInfo{SNNc,Affix}[Alternate]+\dotfill
+ |\NameQueryInfo{SNNc,Affix}[Alternate]|\\
+\Verb+\NameQueryInfo{SNNc,Affix}+\dotfill
+ |\NameQueryInfo{SNNc,Affix}|\\
+\Verb+\NameQueryInfo{SNNd}[Alternate]+\dotfill
+ |\NameQueryInfo{SNNd}[Alternate]|
+\end{quote}
+
+\begin{quote}
+\Verb+\NameClearInfo[FNNa]{SNNa,Affix}[Alternate]+\dotfill
+ |\NameClearInfo[FNNa]{SNNa,Affix}[Alternate]|\\
+\Verb+\NameClearInfo[FNNa]{SNNa,Affix}+\dotfill
+ |\NameClearInfo[FNNa]{SNNa,Affix}|\\
+\Verb+\NameClearInfo[FNNb]{SNNb}[Alternate]+\dotfill
+ |\NameClearInfo[FNNb]{SNNb}[Alternate]|\\
+\Verb+\NameClearInfo[FNNb]{SNNb}+\dotfill
+ |\NameClearInfo[FNNb]{SNNb}|\\
+\Verb+\NameClearInfo{SNNc,Affix}[Alternate]+\dotfill
+ |\NameClearInfo{SNNc,Affix}[Alternate]|\\
+\Verb+\NameClearInfo{SNNc,Affix}+\dotfill
+ |\NameClearInfo{SNNc,Affix}|\\
+\Verb+\NameClearInfo{SNNd}[Alternate]+\dotfill
+ |\NameClearInfo{SNNd}[Alternate]|
+\end{quote}
+
+\begin{quote}
+\Verb+\ForgetName[FNNa]{SNNa,Affix}[Alternate]+\dotfill
+ |\ForgetName[FNNa]{SNNa,Affix}[Alternate]|\\
+\Verb+\ForgetName[FNNa]{SNNa,Affix}+\dotfill
+ |\ForgetName[FNNa]{SNNa,Affix}|\\
+\Verb+\ForgetName[FNNb]{SNNb}[Alternate]+\dotfill
+ |\ForgetName[FNNb]{SNNb}[Alternate]|\\
+\Verb+\ForgetName[FNNb]{SNNb}+\dotfill
+ |\ForgetName[FNNb]{SNNb}|\\
+\Verb+\ForgetName{SNNc,Affix}[Alternate]+\dotfill
+ |\ForgetName{SNNc,Affix}[Alternate]|\\
+\Verb+\ForgetName{SNNc,Affix}+\dotfill
+ |\ForgetName{SNNc,Affix}|\\
+\Verb+\ForgetName{SNNd}[Alternate]+\dotfill
+ |\ForgetName{SNNd}[Alternate]|
+\end{quote}
+
+\begin{quote}
+\Verb+\LocalNames+\LocalNames\\
+\Verb+\SubvertName[FNNa]{SNNa,Affix}[Alternate]+\dotfill
+ |\SubvertName[FNNa]{SNNa,Affix}[Alternate]|\\
+\Verb+\SubvertName[FNNb]{SNNb}[Alternate]+\dotfill
+ |\SubvertName[FNNb]{SNNb}[Alternate]|\\
+\Verb+\SubvertName{SNNc,Affix}[Alternate]+\dotfill
+ |\SubvertName{SNNc,Affix}[Alternate]|\\
+\Verb+\SubvertName{SNNd}[Alternate]+\dotfill
+ |\SubvertName{SNNd}[Alternate]|\\
+\Verb+\GlobalNames+\GlobalNames
+\end{quote}
+
+\begin{quote}
+\Verb+\IfMainName[FNNa]{SNNa,Affix}{Y}{N}+\dotfill
+ |\IfMainName[FNNa]{SNNa,Affix}{Y}{N}|\\
+\Verb+\IfMainName[FNNb]{SNNb}{Y}{N}+\dotfill
+ |\IfMainName[FNNb]{SNNb}{Y}{N}|\\
+\Verb+\IfMainName{SNNc,Affix}{Y}{N}+\dotfill
+ |\IfMainName{SNNc,Affix}{Y}{N}|\\
+\Verb+\IfMainName{SNNd}[Alternate]{Y}{N}+\dotfill
+ |\IfMainName{SNNd}[Alternate]{Y}{N}|
+\end{quote}
+
+\begin{quote}
+\Verb+\IfFrontName[FNNa]{SNNa,Affix}[Alternate]{Y}{N}+\dotfill
+ |\IfFrontName[FNNa]{SNNa,Affix}[Alternate]{Y}{N}|\\
+\Verb+\IfFrontName[FNNb]{SNNb}[Alternate]{Y}{N}+\dotfill
+ |\IfFrontName[FNNb]{SNNb}[Alternate]{Y}{N}|\\
+\Verb+\IfFrontName{SNNc,Affix}[Alternate]{Y}{N}+\dotfill
+ |\IfFrontName{SNNc,Affix}[Alternate]{Y}{N}|\\
+\Verb+\IfFrontName{SNNd}[Alternate]{Y}{N}+\dotfill
+ |\IfFrontName{SNNd}[Alternate]{Y}{N}|
+\end{quote}
+\begin{quote}
+\Verb+\SeeAlso\IndexRef[FNNp]{SNNp,Affix}{Target}+\dotfill
+ |\SeeAlso\IndexRef[FNNp]{SNNp,Affix}{Target}|\\
+\Verb+\ExcludeName{SNNq,Affix}+\dotfill
+ |\ExcludeName{SNNq,Affix}|\\
+\Verb+\IfAKA[FNNp]{SNNp,Affix}[Alternate]{Y}{N}{X}+\dotfill
+ |\IfAKA[FNNp]{SNNp,Affix}[Alternate]{Y}{N}{X}|\\
+\Verb+\IfAKA[FNNp]{SNNp,Affix}{Y}{N}{X}+\dotfill
+ |\IfAKA[FNNp]{SNNp,Affix}{Y}{N}{X}|\\
+\Verb+\IfAKA{SNNq,Affix}[Alternate]{Y}{N}{X}+\dotfill
+ |\IfAKA{SNNq,Affix}[Alternate]{Y}{N}{X}|\\
+\Verb+\IfAKA{SNNq,Affix}{Y}{N}{X}+\dotfill
+ |\IfAKA{SNNq,Affix}{Y}{N}{X}|\\
+\Verb+\IfAKA{SNNr}[Alternate]{Y}{N}{X}+\dotfill
+ |\IfAKA{SNNr}[Alternate]{Y}{N}{X}|
+\end{quote}
+
+\begin{quote}
+\Verb+\AKA[FNN1]{SNN1,Affix1}%+\\
+\Verb+ [FNN2]{SNN2,Affix2}[Alternate2]+\dotfill
+ |\AKA[FNN1]{SNN1,Affix1}[FNN2]{SNN2,Affix2}[Alternate2]|\\
+\Verb+\AKA[FNN1]{SNN1,Affix1}%+\\
+\Verb+ [FNN2]{SNN2,Affix2}+\dotfill
+ |\AKA[FNN1]{SNN1,Affix1}[FNN2]{SNN2,Affix2}|\\
+\Verb+\DropAffix\AKA[FNN1]{SNN1,Affix1}%+\\
+\Verb+ [FNN2]{SNN2,Affix2}+\dotfill
+ |\DropAffix\AKA[FNN1]{SNN1,Affix1}[FNN2]{SNN2,Affix2}|\\
+\Verb+\AKA*[FNN1]{SNN1,Affix1}%+\\
+\Verb+ [FNN2]{SNN2,Affix2}[Alternate2]+\dotfill
+ |\AKA*[FNN1]{SNN1,Affix1}[FNN2]{SNN2,Affix2}[Alternate2]|\\
+\Verb+\AKA*[FNN1]{SNN1,Affix1}%+\\
+\Verb+ [FNN2]{SNN2,Affix2}+\dotfill
+ |\AKA*[FNN1]{SNN1,Affix1}[FNN2]{SNN2,Affix2}|
+\end{quote}
+
+\begin{quote}
+\Verb+\AKA[FNN1]{SNN1,Affix1}%+\\
+\Verb+ {SNN3,Affix3}[Alternate3]+\dotfill
+ |\AKA[FNN1]{SNN1,Affix1}{SNN3,Affix3}[Alternate3]|\\
+\Verb+\AKA[FNN1]{SNN1,Affix1}%+\\
+\Verb+ {SNN3,Affix3}+\dotfill
+ |\AKA[FNN1]{SNN1,Affix1}{SNN3,Affix3}|\\
+\Verb+\AKA*[FNN1]{SNN1,Affix1}%+\\
+\Verb+ {SNN3,Affix3}+\dotfill
+ |\AKA*[FNN1]{SNN1,Affix1}{SNN3,Affix3}|\\
+\Verb+\ForceFN\AKA*[FNN1]{SNN1,Affix1}%+\\
+\Verb+ {SNN3,Affix3}[Alternate3]+\dotfill
+ |\ForceFN\AKA*[FNN1]{SNN1,Affix1}{SNN3,Affix3}[Alternate3]|\\
+\Verb+\ForceFN\AKA*[FNN1]{SNN1,Affix1}%+\\
+\Verb+ {SNN3,Affix3}+\dotfill
+ |\ForceFN\AKA*[FNN1]{SNN1,Affix1}{SNN3,Affix3}|
+\end{quote}
+
+\begin{quote}
+\Verb+\AKA[FNN1]{SNN1,Affix1}{SNN4}[Alternate4]+\dotfill
+ |\AKA[FNN1]{SNN1,Affix1}{SNN4}[Alternate4]|\\
+\Verb+\AKA*[FNN1]{SNN1,Affix1}{SNN4}[Alternate4]+\dotfill
+ |\AKA*[FNN1]{SNN1,Affix1}{SNN4}[Alternate4]|\\
+\Verb+\ForceFN\AKA*[FNN1]{SNN1,Affix1}{SNN4}[Alternate4]+\dotfill
+ |\ForceFN\AKA*[FNN1]{SNN1,Affix1}{SNN4}[Alternate4]|
+\end{quote}
+
+\begin{quote}
+\Verb+\AKA{SNN5,Affix5}%+\\
+\Verb+ [FNN6]{SNN6,Affix6}[Alternate6]+\dotfill
+ |\AKA{SNN5,Affix5}[FNN6]{SNN6,Affix6}[Alternate6]|\\
+\Verb+\AKA{SNN5,Affix5}{SNN7,Affix7}+\dotfill
+ |\AKA{SNN5,Affix5}{SNN7,Affix7}|\\
+\Verb+\AKA{SNN5,Affix5}{SNN8}[Alternate8]+\dotfill
+ |\AKA{SNN5,Affix5}{SNN8}[Alternate8]|\\
+\end{quote}
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
\phantomsection
\addcontentsline{toc}{section}{Index of Persons}
\printindex[per]
@@ -15100,7 +16190,6 @@ We disable indexing here.\\
\printindex
\end{document}
-
%examplesvb
%</examples>
\endinput