summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-02-04 21:13:12 +0000
committerKarl Berry <karl@freefriends.org>2023-02-04 21:13:12 +0000
commit7f290ee226dfa7f4d24222946b79b3ab76037076 (patch)
tree51db40a79871d52df3f135639aee73de6d51d091 /Master/texmf-dist/doc/latex
parentbc036b1a7bbed0b49ebef40170780e98435f0c71 (diff)
nameauth (4feb23)
git-svn-id: svn://tug.org/texlive/trunk@65731 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex')
-rw-r--r--Master/texmf-dist/doc/latex/nameauth/README.md490
-rw-r--r--Master/texmf-dist/doc/latex/nameauth/beamer01.pdfbin0 -> 68498 bytes
-rw-r--r--Master/texmf-dist/doc/latex/nameauth/beamer02.pdfbin0 -> 68500 bytes
-rw-r--r--Master/texmf-dist/doc/latex/nameauth/beamer03.pdfbin0 -> 68492 bytes
-rw-r--r--Master/texmf-dist/doc/latex/nameauth/cat01.pdfbin0 -> 88992 bytes
-rw-r--r--Master/texmf-dist/doc/latex/nameauth/compat.tex60
-rw-r--r--Master/texmf-dist/doc/latex/nameauth/examples.tex2310
-rw-r--r--Master/texmf-dist/doc/latex/nameauth/nameauth.pdfbin1144677 -> 1577041 bytes
8 files changed, 1518 insertions, 1342 deletions
diff --git a/Master/texmf-dist/doc/latex/nameauth/README.md b/Master/texmf-dist/doc/latex/nameauth/README.md
index 0ae72377ac8..4f7b1803642 100644
--- a/Master/texmf-dist/doc/latex/nameauth/README.md
+++ b/Master/texmf-dist/doc/latex/nameauth/README.md
@@ -1,158 +1,460 @@
-# Short Description
+# 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 references.
-# Files
+# 2. Files in Zip Archive
-|Filename |Description |
-|--------------|---------------------------------------|
-|`nameauth.dtx`|commented style file; source file |
-|`Makefile` |For use with GNU make; with source file|
-|`nameauth.ins`|installation driver (generated file) |
-|`nameauth.sty`|style file (generated file) |
-|`nameauth.pdf`|Documentation (generated file) |
-|`README.md` |This file (generated file) |
-|`examples.tex`|example macros (generated file) |
+The following files are included in the archive that is uploaded to CTAN:
-# Obtaining the Package
+| 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 macro file |
+| `compat.tex` | compatibility module |
+| `examples.tex` | example file |
+| `nameauth.pdf` | package documentation |
+| `README.md` | this file |
-1. Packaged in your current TeX distrbution: See the appropriate documentation.
+# 3. Installing a Distro Package
-2. Otherwise, download `nameauth.zip` from [CTAN](http://mirrors.ctan.org/macros/latex/contrib/nameauth.zip).
+One can find `nameauth` in one's current TeX distribution. See the appropriate documentation in TeXlive, MikTeX, MacTeX, Linux distro, BSD, etc. Use those tools to ensure that `nameauth` is installed. You are done.
-3. Unpack `nameauth.zip` in an appropriate directory.
+# 4. Installing from CTAN
-4. Change to the directory containing the `nameauth` files.
+## 4.1 Getting the Package Archive
-# File Generation
+If not using the tools above, one can download `nameauth.zip` from [CTAN](https://mirrors.ctan.org/macros/latex/contrib/nameauth.zip). After downloading, unpack `nameauth.zip` in an appropriate directory. Change to the directory containing the supplied files.
-## Automatic Installation
+## 4.2 Using GNU make
-This method requires GNU `make` on a POSIX-compliant environment, such as GNU/Linux, various BSD flavors, perhaps MacOS (e.g., with various porting systems), and even Cygwin on Windows.
+### 4.2.1 Read the File
- * We use the LaTeX installation on the host machine to build the package. When using `make`, any `dvi` files that are created will also be converted to `pdf` format.
+**Please inspect the included `Makefile` before using it.**
-1. Type `make` to generate the release files using `pdflatex`.
+`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.
-2. To use another LaTeX engine, type one of the following:
+### 4.2.2 Prepare to Install, No Building
- make ENGINE=xelatex
- make ENGINE=lualatex
- make ENGINE=dvilualatex
- make ENGINE=latex
+One does not need to build `nameauth` completely from source (although it may be a good idea to do a native build). If the provided files are sufficient, one can type:
-3. Type `make inst` to install the files in the user's personal TDS-compliant directory tree.
+ make unpack
-4. Type `sudo make install` to install the files in the system-wide, local TDS-compliant directory tree.
+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:
-5. One can include multiple make targets on the command line, but that goes beyond the scope of this document and is intended for experienced users.
+| Filename | Description | TDS-where to |
+| :------------- | :------------------------- | :----------- |
+| `Makefile` | for use with GNU make | source dir |
+| `cat01.pdf` | manual illustration, ch. 7 | source dir |
+| `beamer01.pdf` | manual illustration, ch. 9 | source dir |
+| `beamer02.pdf` | manual illustration, ch. 9 | source dir |
+| `beamer03.pdf` | manual illustration, ch. 9 | source dir |
+| `nameauth.dtx` | commented macro file | source dir |
+| | | |
+| `nameauth.ins` | installation driver | unneeded |
+| | | |
+| `compat.tex` | compatibility module | doc dir |
+| `examples.tex` | example file | doc dir |
+| `nameauth.pdf` | package documentation | doc dir |
+| `README.md` | this file | doc dir |
+| | | |
+| `nameauth.sty` | style file | package dir |
-## Manual Compilation
+Take a look at **4.2.3 Specific Build Cases** and, depending on the use case, skip either to **4.2.5 Installation** (using make) or **4.3.3 Installation Prerequisites** (manual) below.
-Otherwise, the following steps are used for manual installation. See the general information at the [TeX FAQ](https://www.texfaq.org/FAQ-installthings).
+### 4.2.3 Specific Build Cases: Program Extensions
-1. To build the package on the host system, generate the installation files and a copy of the documentation without the table of contents and cross-references. We use `pdflatex` by default:
+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.
- pdflatex --shell-escape --recorder --interaction=batchmode nameauth.dtx
+When using the TeX distros built in to Cygwin and WSL exclusively, one can treat it basically as a POSIX-compliant environment.
-2. This will generate the following files:
+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.
- nameauth.ins (complete)
- nameauth.sty (complete)
- nameauth.pdf (incomplete; do steps 3 through 5)
- README.md (complete)
- examples.tex (complete)
+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.
-3. Generate the TOC and cross-references for the documentation:
+With both Cygwin and WSL, tests will determine if the standard POSIX method is capable of installing and packaging as intended, or if manual methods are needed.
- pdflatex --recorder --interaction=nonstopmode nameauth.dtx
+* Make will test if `ltxfileinfo` exists. If not, it will produce a zip file with just the package base name to avoid problems that otherwise could arise in Windows.
-4. Generate the index files using `makeindex`:
+* Make will test if `dvipdf` from Ghostscript is installed and use that. Otherwise it will fall back to `dvipdfmx`.
- makeindex -q -s gglo.ist -o nameauth.gls nameauth.glo
- makeindex -q -s gind.ist -o nameauth.ind nameauth.idx
+* Make will test if `pdfjam` is installed, if one needs to remake the manual illustrations. Otherwise, it will advise on how to do that manually.
-5. Integrate the glossary (changes) and index into the documentation. The second run updates the TOC:
+* Make will try to see if the path to the desired install directory exists. If it does not, make will produce an error message and exit. If this happens, which is likely under Windows, please refer to installation of local packages in MikTeX [here](https://docs.miktex.org/manual/localadditions.html#id573803) and [here](https://miktex.org/kb/texmf-roots). Otherwise see the [TeX FAQ](https://www.texfaq.org/FAQ-privinst) and [this page](https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages).
- pdflatex --recorder --interaction=nonstopmode nameauth.dtx
- pdflatex --recorder --interaction=nonstopmode nameauth.dtx
+Here is a table showing the feasibility of a few scenarios:
-One can substitute, e.g., `xelatex`, `lualatex`, `dvilualatex`, and `latex`, for `pdflatex`, but the documentation may look different in some cases.
+| 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 |
-## Manual File Installation
+<sup>1</sup> All dependencies must be met. Bear in mind MacOS quirks.
-Different TeX distributions have somewhat different ways to store TDS-compliant configuration and package data. See, for example, [MikTeX](https://miktex.org/kb/texmf-roots) and the [TeX FAQ](https://www.texfaq.org/FAQ-privinst). Two approaches below conform generally to a Unix-based system:
+<sup>2</sup> Installs only to Cygwin environment; not to Windows environment.
-## User's Home Directory
+<sup>3</sup> If one attempts the `make images` target, it is unlikely that `pdfjam` will work; one must create pdf page examples included in the manual by compiling the appropriate test files and extracting the pages using a different app.
-`TEXMFHOME` is a variable that points to the root of a TDS-compliant directory tree available to a user. Use `kpsewhich --var-value TEXMFHOME` to obtain its value. Quite often it is equivalent to `$HOME/texmf`. The dollar sign in front of the variable denotes the value of the variable instead of its name. So if `$HOME` is `/home/bob`, then `$TEXMFHOME` would be `/home/bob/texmf`, and we can understand the following paths to be under that directory:
+<sup>4</sup> Neither `ltxfileinfo` nor `kpsewhich` will give useful results; do a manual install.
-|Path |Description |
-|----------------------------------|----------------------------------------|
-|`$TEXMFHOME/source/latex/nameauth`|`ins` and `dtx` files, Makefile |
-|`$TEXMFHOME/tex/latex/nameauth` |`sty` file |
-|`$TEXMFHOME/doc/latex/nameauth` |`pdf` file, `README.md`, `examples.tex` |
+<sup>5</sup> Installs only to WSL Linux distro environment; not to Windows environment.
-On older TeX distributions, run `mktexlsr` on $TEXMFHOME to complete the install process.
+### 4.2.4 Building the Package
-## System-Wide Directory
+In the directory where the files unpacked from the zip archive are located, type `make`. This will do a fresh build of the package using `pdflatex`.
-`TEXMFLOCAL` is a variable that points to the root of a TDS-compliant directory tree available to all users on a local site, system-wide installation. Use `kpsewhich --var-value TEXMFLOCAL` to obtain its value. See the [TeX FAQ](https://www.texfaq.org/FAQ-what-TDS). We can understand the following paths to be under that directory:
+### 4.2.5 Installation
-|Path |Description |
-|-----------------------------------|----------------------------------------|
-|`$TEXMFLOCAL/source/latex/nameauth`|`ins` and `dtx` files, Makefile |
-|`$TEXMFLOCAL/tex/latex/nameauth` |`sty` file |
-|`$TEXMFLOCAL/doc/latex/nameauth` |`pdf` file, `README.md`, `examples.tex` |
+The user must already have a TDS-compliant tree set up in order for installation to work. Thus, one must have created a `texmf` directory to which TEXMFHOME refers, if in a POSIX environment, or have the equivalent in another environment. Currently, `Makefile` only installs into POSIX environments.
-Run `mktexlsr` with the appropriate permissions on `$TEXMFLOCAL` to complete the install process.
+Assuming that one has a use case where one can use GNU make, one can choose the following:
-# Testing
+* Type `make inst` to install the package files in the user's personal TDS-compliant directory tree.
-## Compiling `examples.tex`
+* Type `make install` to install the package files in the system-wide, local TDS-compliant directory tree. The user will be prompted for the `sudo` password.
-1. Either go to the directory used when unpacking the `zip` file or copy the file `examples.tex` from the `doc/latex/nameauth` branch of whatever TDS-compliant tree to a directory of your choice.
+ If, for some reason, this fails, do a manual install (below).
-2. If one has access to GNU `make`, use either `Makefile` in the directory where one unpacked the `zip` file or copy `Makefile` from either `src/latex/nameauth` or `doc/latex/nameauth` in whatever TDS-compliant tree it exists.
+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`.
-When using `make`, any `dvi` files that are created will also be converted to `pdf` format.
+### 4.2.6 Removal
-3. To compile the test file using `make` and `pdflatex`, simply type `make testing`.
+The same constraints that apply to installation also apply to removal. If one can do the former, one can do the latter.
-4. For multi-format testing using `make` in addition to that above, one can do the following:
+* Type `make uninst` to remove the package files in the user's personal TDS-compliant directory tree.
- make testing ENGINE=pdflatex
- make testing ENGINE=latex
- make testing ENGINE=lualatex
- make testing ENGINE=dvilualatex
- make testing ENGINE=xelatex
+* Type `make uninstall` to remove the package files in the system-wide, local TDS-compliant directory tree. The user will be prompted for the `sudo` password.
-5. If one does not have `make`, one can use the following commands, substituting, e.g., `latex`, `xelatex`, `lualatex`, and `dvilualatex` for `pdflatex`:
+ If, for some reason, this fails, do a manual removal (opposite of steps used below).
- pdflatex --interaction=nonstopmode examples
- pdflatex --interaction=nonstopmode examples
- makeindex -o examples.ind examples.idx
- makeindex -o examples.rnd examples.rdx
- pdflatex --interaction=nonstopmode examples
- pdflatex --interaction=nonstopmode examples
+The approach of `Makefile` is not to get too aggressive with deletions from the texmf tree, just in case. One may see harmless, extra empty directories after removal.
-The use of different extensions for the index results from using the `index` package to generate a persons index separate from a subject index.
+## 4.3 Manual Method
-The manual is also a test suite.
+Unlike when using GNU make, which automates adding extensions, in the case of working with WSL together with native Windows TeX distros, in the command lines below there may be certain cases where one may have to add the ".exe" extension to the programs. Those cases should, however, be few.
-# Copyright
+### 4.3.1 Prepare to Install, No Building
-Copyright (C) 2021 by Charles P. Schaum <charles[dot]schaum@comcast.net>
--------------------------------------------------------
+One does not need to build `nameauth` completely from source (although it may be a good idea to do a native build). If the provided files are sufficient, one can type:
+
+ pdftex nameauth.dtx
+
+This 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 |
+| :------------- | :------------------------- | :----------- |
+| `Makefile` | for use with GNU make | source dir |
+| `cat01.pdf` | manual illustration, ch. 7 | source dir |
+| `beamer01.pdf` | manual illustration, ch. 9 | source dir |
+| `beamer02.pdf` | manual illustration, ch. 9 | source dir |
+| `beamer03.pdf` | manual illustration, ch. 9 | source dir |
+| `nameauth.dtx` | commented macro file | source dir |
+| | | |
+| `nameauth.ins` | installation driver | unneeded |
+| | | |
+| `compat.tex` | compatibility module | doc dir |
+| `examples.tex` | example file | doc dir |
+| `nameauth.pdf` | package documentation | doc dir |
+| `README.md` | this file | doc dir |
+| | | |
+| `nameauth.sty` | style file | package dir |
+
+One may skip past building to **4.3.3 Installation Prerequisites** below.
+
+### 4.3.2 Building the Package
+
+1. Using the unpacked files from the zip archive, we begin by creating the installation driver, unpacking additional files from `nameauth.dtx`, and generating a copy of the documentation without the table of contents and cross-references:
+
+ pdflatex --shell-escape --recorder --interaction=batchmode nameauth.dtx
+
+ 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 |
+
+ In addition, we have the following temporary files:
+
+| Filename | Description |
+| :------------- | :--------------------------- |
+| `nameauth.aux` | auxiliary file |
+| `nameauth.fls` | shows files read |
+| `nameauth.glo` | raw glossary entries |
+| `nameauth.hd ` | |
+| `nameauth.idx` | raw index entries |
+| `nameauth.log` | log file |
+| `nameauth.out` | pdf bookmark/hypertext info |
+| `nameauth.tmp` | temp file used with fancyvrb |
+| `nameauth.toc` | table of contents info |
+
+2. Generate the TOC and cross-references within the documentation:
+
+ pdflatex --recorder --interaction=nonstopmode nameauth.dtx
+
+3. Generate the index and glossary files using `makeindex`:
+
+ makeindex -q -s gglo.ist -o nameauth.gls nameauth.glo
+ makeindex -q -s gind.ist -o nameauth.ind nameauth.idx
+
+ This adds the following files:
+
+| Filename | Description |
+| :------------- | :----------------------- |
+| `nameauth.gls` | typeset glossary entries |
+| `nameauth.ilg` | `makeindex` log file |
+| `nameauth.ind` | typeset index entries |
+
+4. Integrate the glossary (list of changes) and index into the documentation. The second run updates the TOC:
+
+ pdflatex --recorder --interaction=nonstopmode nameauth.dtx
+ pdflatex --recorder --interaction=nonstopmode nameauth.dtx
+
+### 4.3.3 Installation Prerequisites
+
+In order to perform manual installation, one should be familiar with the general information at the [TeX FAQ](https://www.texfaq.org/FAQ-installthings).
+
+Different TeX distributions have somewhat different ways to store TDS-compliant configuration and package data. See, for example, for MikTeX [here](https://docs.miktex.org/manual/localadditions.html#id573803) and [here](https://miktex.org/kb/texmf-roots). Otherwise see the [TeX FAQ](https://www.texfaq.org/FAQ-privinst) and [this page](https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages).
+
+The instructions below conform generally to a Unix-based system. There are some cases under Windows where this method may not work. For other systems, please consult the appropriate documentation as needed.
+
+The user must already have a TDS-compliant tree set up in order for installation to work. We assume that one knows how to become superuser, create directories, move files, and the like.
+
+### 4.3.4 User's Home Directory
+
+`TEXMFHOME` is a variable that points to the root of a TDS-compliant directory tree available to a user. To get its value on POSIX-compliant systems, use:
+
+ kpsewhich --var-value TEXMFHOME
+
+Quite often, `$TEXMFHOME` is equivalent to `$HOME/texmf`. The dollar sign in front of the variable denotes the value of the variable instead of its name. If `$HOME` is `/home/bob`, then `$TEXMFHOME` would be `/home/bob/texmf`. We can understand the following paths to be under this home directory.
+
+| Path | Files |
+| :--------------------------------- | :------------- |
+| `$TEXMFHOME/source/latex/nameauth` | `Makefile` |
+| | `cat01.pdf` |
+| | `beamer01.pdf` |
+| | `beamer02.pdf` |
+| | `beamer03.pdf` |
+| | `nameauth.dtx` |
+| | |
+| `$TEXMFHOME/doc/latex/nameauth` | `compat.tex` |
+| | `examples.tex` |
+| | `nameauth.pdf` |
+| | `README.md` |
+| | |
+| `$TEXMFHOME/tex/latex/nameauth` | `nameauth.sty` |
+
+Create the directories in the left-hand column, or whatever one needs to do in one's own case. Move or copy the files in the right-hand column to their respective directories in the left-hand column. On older TeX distributions, run `mktexlsr` on `$TEXMFHOME` to complete the install process (current distributions may not need this).
+
+### 4.3.5 System-Wide Directory
+
+`TEXMFLOCAL` is a variable that points to the root of a TDS-compliant directory tree available to all users on a local site, system-wide installation.To get its value, use:
+
+ kpsewhich --var-value TEXMFLOCAL
+
+See the [TeX FAQ](https://www.texfaq.org/FAQ-what-TDS). We can understand the following paths to be under this local site, system-wide directory:
+
+| Path | Files |
+| :---------------------------------- | :------------- |
+| `$TEXMFLOCAL/source/latex/nameauth` | `Makefile` |
+| | `cat01.pdf` |
+| | `beamer01.pdf` |
+| | `beamer02.pdf` |
+| | `beamer03.pdf` |
+| | `nameauth.dtx` |
+| | |
+| `$TEXMFLOCAL/doc/latex/nameauth` | `compat.tex` |
+| | `examples.tex` |
+| | `nameauth.pdf` |
+| | `README.md` |
+| | |
+| `$TEXMFLOCAL/tex/latex/nameauth` | `nameauth.sty` |
+
+Create the directories in the left-hand column, or whatever one needs to do in one's own case. Move or copy the files in the right-hand column to their respective directories in the left-hand column. Change file ownership as needed (not so much on Windows). If needed, run `mktexlsr` with the appropriate permissions on `$TEXMFLOCAL` to complete the install process. See also the discussion on [this page](https://tex.stackexchange.com/questions/45231/how-to-install-system-wide-packages-without-requiring-an-ls-r-database-with-tex).
+
+# 5. More on Package Building
+
+* `Makefile` has been upgraded to handle more special cases and not to do unexpected or bad things in those cases, especially on Windows.
+
+* The package and manual build on current and older TeX distributions. In a number of examples, some Unicode characters have been replaced with control sequences in order for this compatibility to work, due to how files written out and read back in affects the expansion of active Unicode characters.
+
+* 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.
+
+* 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).
+
+* TeXlive 2022 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.
+
+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.
+
+To test `nameauth`, either test the files right after installing, or create a new testing directory. One can copy the files from the TDS-compliant source dir and optionally, the documentation directory as well, or unpack the CTAN zip file and build the package.
+
+## 6.1 GNU make: Examples, Tests, Images
+
+* Use the default: `make examples`.
+
+* To create `examples.pdf` with other LaTeX engines, one can do the following:
+
+ make examples ENGINE=xelatex
+ make examples ENGINE=lualatex
+ 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:
+
+ 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
+
+### 6.2.1 Examples
+
+Compile `examples.tex`. In the following command lines, one may substitute `latex`, `xelatex`, `lualatex`, and `dvilualatex` for `pdflatex`.
+
+ pdflatex --interaction=nonstopmode examples
+ pdflatex --interaction=nonstopmode examples
+ makeindex -o examples.ind examples.idx
+
+This next line is needed because the `index` package makes an index of persons.
+
+ makeindex -o examples.rnd examples.rdx
+
+These lines complete the indexes and TOC.
+
+ pdflatex --interaction=nonstopmode examples
+ pdflatex --interaction=nonstopmode examples
+
+Another step is used only with `latex` and `dvilualatex`. We default to `dvipdfmx` in case Ghostscript is not installed. If Ghostscript is already installed, one can use `dvipdf` instead. If a file `examples.out.ps` exists, one may delete it after creating the pdf file.
+
+ dvipdfmx examples
+
+If one changes LaTeX engines, one must remove all of the auxiliary files.
+
+### 6.2.2 Tests
+
+Generate the test files in the following manner from the `dtx`:
+
+ pdflatex "\def\NameauthDoTestFiles{}\input{nameauth.dtx}"
+
+Compile the test files. In the following command lines, one may substitute `latex`, `xelatex`, `lualatex`, and `dvilualatex` for `pdflatex`. One must change the root or base file name for each test file.
+
+ pdflatex --interaction=nonstopmode test01-01
+ pdflatex --interaction=nonstopmode test01-01
+ makeindex -o test01-01.ind test01-01.idx
+
+This next line is needed only for `test07-01.tex` because the `index` package is used for an index of persons.
+
+ makeindex -o test07-01.rnd test07-01.rdx
+
+These lines complete the indexes and TOC.
+
+ pdflatex --interaction=nonstopmode test01-01
+ pdflatex --interaction=nonstopmode test01-01
+
+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.
+
+### 6.2.3 Images
+
+If, for some reason, one wants to make the manual illustrations (usually not required), this would be the default procedure:
+
+Generate the test files in the following manner from the `dtx`:
+
+ pdflatex "\def\NameauthDoTestFiles{}\input{nameauth.dtx}"
+
+Compile the test files:
+
+ pdflatex --interaction=nonstopmode test07-02
+ pdflatex --interaction=nonstopmode test07-02
+ makeindex -o test07-02.ind test07-02.idx
+ pdflatex --interaction=nonstopmode test07-02
+ pdflatex --interaction=nonstopmode test07-02
+
+ pdflatex --interaction=nonstopmode test09-01
+ pdflatex --interaction=nonstopmode test09-01
+ makeindex -o test09-01.ind test09-01.idx
+ pdflatex --interaction=nonstopmode test09-01
+ pdflatex --interaction=nonstopmode test09-01
+
+ pdfjam --paper a6paper --landscape --quiet test07_02.pdf 3 --outfile cat01.pdf
+ pdfjam --paper a5paper --landscape --quiet test09_01.pdf 1 --outfile beamer01.pdf
+ pdfjam --paper a5paper --landscape --quiet test09_01.pdf 2 --outfile beamer02.pdf
+ pdfjam --paper a5paper --landscape --quiet test09_01.pdf 3 --outfile beamer03.pdf
+
+# 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.
+
+* 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.
+
+* I brought back some thorough tests reminiscent of early package versions, but moved to the examples file.
+
+* I rewrote the documentation to remove a lot of idiosyncratic formatting. It looks much cleaner, both as source code and as typeset documentation.
+
+* 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.
+
+* 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.
+
+* Several macros have been optimized, leading to simpler and cleaner designs that are easier to debug.
+
+* 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.
+
+* 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.
+
+# 8. Copyright
+
+Copyright (C) 2023 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 or (at your option) any later version.
The latest version of this license is in:
- [http://www.latex-project.org/lppl.txt](https://www.latex-project.org/lppl.txt)
+ [https://www.latex-project.org/lppl.txt](https://www.latex-project.org/lppl.txt)
and version 1.3 or later is part of all distributions of LaTeX
version 2005/12/01 or later.
diff --git a/Master/texmf-dist/doc/latex/nameauth/beamer01.pdf b/Master/texmf-dist/doc/latex/nameauth/beamer01.pdf
new file mode 100644
index 00000000000..52dc34c8414
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/nameauth/beamer01.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/nameauth/beamer02.pdf b/Master/texmf-dist/doc/latex/nameauth/beamer02.pdf
new file mode 100644
index 00000000000..093b6b1eaf7
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/nameauth/beamer02.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/nameauth/beamer03.pdf b/Master/texmf-dist/doc/latex/nameauth/beamer03.pdf
new file mode 100644
index 00000000000..4a337f45cc4
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/nameauth/beamer03.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/nameauth/cat01.pdf b/Master/texmf-dist/doc/latex/nameauth/cat01.pdf
new file mode 100644
index 00000000000..f4587eadb40
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/nameauth/cat01.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/nameauth/compat.tex b/Master/texmf-dist/doc/latex/nameauth/compat.tex
new file mode 100644
index 00000000000..0edc05be0bd
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/nameauth/compat.tex
@@ -0,0 +1,60 @@
+%%
+%% This is file `compat.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% nameauth.dtx (with options: `compat')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2023 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
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+
+% This snippet assists 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
+
+\ifxetex
+ \usepackage{fontspec}
+ \usepackage{polyglossia}
+ \setdefaultlanguage{american}
+\else
+ \ifluatex
+ \ifpdf
+ \usepackage{fontspec}
+ \usepackage{polyglossia}
+ \setdefaultlanguage{american}
+ \else
+ \IfFileExists{utf8-2018.def}{}
+ {\usepackage[utf8]{inputenc}}
+ \usepackage[TS1,T1]{fontenc}
+ \usepackage[american]{babel}
+ \usepackage{lmodern}
+ \fi
+ \else
+ \IfFileExists{utf8-2018.def}{}
+ {\usepackage[utf8]{inputenc}}
+ \usepackage[TS1,T1]{fontenc}
+ \usepackage[american]{babel}
+ \usepackage{lmodern}
+ \fi
+\fi
+
diff --git a/Master/texmf-dist/doc/latex/nameauth/examples.tex b/Master/texmf-dist/doc/latex/nameauth/examples.tex
index c7c6fabb868..05e1f05b0fc 100644
--- a/Master/texmf-dist/doc/latex/nameauth/examples.tex
+++ b/Master/texmf-dist/doc/latex/nameauth/examples.tex
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 2021 by Charles P. Schaum <charles[dot]schaum@comcast.net>
+%% Copyright (C) 2023 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
@@ -22,221 +22,173 @@
%%
\documentclass[oneside]{article}
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Backward compatibility for older distributions of LaTeX.
-%
-% Include the iftex package only if it exists. If the iftex
-% package is older than 2019, include additional packages
-% that aid using multiple LaTeX engines.
-%
-\IfFileExists{iftex.sty}{\usepackage{iftex}}{}
-\unless\ifdefined\RequireTUTeX
- \usepackage{ifxetex}
- \usepackage{ifluatex}
- \usepackage{ifpdf}
-\fi
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Compatibility for multiple LaTeX engines.
-%
-\ifxetex
- \usepackage{fontspec}
- \usepackage{polyglossia}
- \setdefaultlanguage{american}
-\else
- \ifluatex
- \ifpdf
- \usepackage{fontspec}
- \usepackage{polyglossia}
- \setdefaultlanguage{american}
- \else
- \IfFileExists{utf8-2018.def}{}
- {\usepackage[utf8]{inputenc}}
- \usepackage[TS1,T1]{fontenc}
- \usepackage[american]{babel}
- \usepackage{lmodern}
- \fi
- \else
- \IfFileExists{utf8-2018.def}{}
- {\usepackage[utf8]{inputenc}}
- \usepackage[TS1,T1]{fontenc}
- \usepackage[american]{babel}
- \usepackage{lmodern}
- \fi
-\fi
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Remainder of package inclusions
-%
+
+\input{compat.tex} % Included with nameauth; needed only if
+% compiling on multiple TeX distros or LaTeX engines.
+
\usepackage[textwidth=137mm,textheight=237mm,
- right=25mm,marginparwidth=39mm,nohead]{geometry}
-\usepackage{booktabs}
-\usepackage{colortbl}
+ right=40mm,marginparwidth=40mm]{geometry}
\usepackage{index}
-\usepackage{nameauth}[2021/02/27]
-\usepackage{verbatim}
+\usepackage{nameauth}[2023/02/03]
+\usepackage[inline]{enumitem}
+\usepackage{fancyvrb}
+
+% Define fancyvrb defaults.
+\fvset{gobble=2,numbers=left,fontsize=\small}
+
\usepackage{xcolor}
-\colorlet{grey}{black!7!white}
\usepackage[colorlinks=true]{hyperref}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% We set up indexing, put margin paragraphs on the left,
-% and set up the counter for line numbering in verbatim
-% environments.
+% Set up indexing and put margin paragraphs on the left.
%
\makeindex
\newindex{per}{rdx}{rnd}{Index of Persons}
\renewcommand\NameauthIndex{\index[per]}
\reversemarginpar
-\newcounter{VerbLine}
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Global definitions of conditionals for examples
-% For Scipio Africanus
-\newif\ifSkipGens
-\newif\ifNoGens
-\newif\ifSkipAgnomen
-\newif\ifNoAgnomen
-% For Thomas Jefferson
-\newif\ifGenitive
-\newif\ifDoGen
-% For George Washington/Mustafa Kemal
-\newif\ifNoTag
-% For William Shakespeare
-\newif\ifSpecialFN
-\newif\ifSpecialSN
-\newif\ifRevertSN
-% For advanced hooks
-\newif\ifFbox
-\newif\ifFirstCap
-\newif\ifInHook
-\Fboxtrue
-\newif\ifCaps
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Global definitions of macros for examples
-% For Scipio Africanus
-\newcommand*\SCIPi{\ifNoGens
- Publius\else Publius Cornelius\fi}
-\newcommand*\SCIPii{\ifNoAgnomen
- Scipio\else Scipio Africanus\fi}
-\newcommand*\ScipioOnly{\SkipAgnomentrue\Scipio}
-\newcommand*\CSA{\ifNoGens\ifNoAgnomen
- Scipio\else
- Scipio Africanus\fi
- \else\ifNoAgnomen
- Cornelius Scipio\else
- Cornelius Scipio Africanus\fi\fi}
-\ExcludeName[Publius]{\noexpand\CSA}
-% For Thomas Jefferson
-\newcommand\JEFF{\ifDoGen\textSC{Jefferson's}\else\textSC{Jefferson}\fi}
-% For William Shakespeare
-\newcommand*\WM{\ifSpecialFN Wm.\else William\fi}
-\newcommand*\SHK{\ifRevertSN \textSC{Shakespeare}\else
- \ifSpecialSN \noexpand\AltCaps{t}he Bard\else
- \textSC{Shakespeare}\fi\fi}
-\newcommand*\Revert{\RevertSNtrue}
+% Global definitions of conditionals for examples and
+% Global definitions of macros for examples could occur
+% here, but we put those instead in the sections where
+% they appear.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% We include a few macros from ltxdoc.cls and doc.sty.
-% These are copyright by the LaTeX dev team.
-%
-\makeatletter
-\DeclareRobustCommand\meta[1]{%
- \ensuremath\langle
- \ifmmode \expandafter \nfss@text \fi
- {%
- \meta@font@select
- \edef\meta@hyphen@restore
- {\hyphenchar\the\font\the\hyphenchar\font}%
- \hyphenchar\font\m@ne
- \language\l@nohyphenation
- #1\/%
- \meta@hyphen@restore
- }\ensuremath\rangle
-}
-\def\meta@font@select{\itshape}
-\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}}
-\def\cmd@to@cs#1#2{\char\number`#2\relax}
-\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
-\providecommand\marg[1]{%
- {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
-\providecommand\oarg[1]{%
- {\ttfamily[}\meta{#1}{\ttfamily]}}
-\providecommand\parg[1]{%
- {\ttfamily(}\meta{#1}{\ttfamily)}}
-\makeatother
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% We establish name shorthands. Note the heavy use of \noexpand
-% in the macro arguments below. This is intrinsic to the proper
-% function of such arguments (advanced alternate formatting).
+% Create name shorthands. Note the use of \noexpand
+% in the macro arguments below.
%
\begin{nameauth}
- \< Adams & John & \noexpand\textSC{Adams} & >
- \< SDJR & Sammy & \noexpand\textSC{Davis}, \noexpand\textSC{Jr}. & >
- \< Dem & & Demetrius, I & >
- \< deSmet & Pierre-Jean & \noexpand\Fbox{\noexpand\AltCaps{d}e~Smet} & >
- \< HAR & & Harun, \noexpand\textSC{\noexpand\AltCaps{a}l-Rashid} & >
- \< Harnack & Adolf & Harnack & >
- \< Jeff & Thomas & \noexpand\JEFF & >
- \< Mencius & & \noexpand\textSC{Mencius} & >
- \< Scipio & \noexpand\SCIPi & \noexpand\SCIPii & >
- \< OScipio & Publius & \noexpand\CSA & >
- \< Shak & \noexpand\WM & \noexpand\SHK & >
- \< Sutorius & Quintus & \noexpand\SUTOR & >
- \< Wash & George & Washington & >
+ \< Doug & Frederick & Douglass & >
+ \< Bailey & Betsey & Bailey & >
+\end{nameauth}
+
+\begin{nameauth}
+ \< Wash & George & Washington & >
+ \< Aris & & Aristotle & >
+ \< Plato & & Plato & >
+ \< Aeth & & Æthelred, II & >
+ \< Sun & & Sun, Yat-sen & >
+ \< Linc & Abraham & Lincoln & >
+ \< MLK & Martin Luther & King, Jr. & >
+ \< Soto & Hernando & de Soto & >
+ \< Goethe & J.W. von & Goethe & >
+ \< Patton & George S. & Patton, Jr. & >
+ \< Ike & Dwight D. & Eisenhower & >
+\end{nameauth}
+
+\begin{nameauth}
+ \< Luth & Martin & \noexpand\textSC{Luther} & >
+ \< Cath & Catherine \noexpand\AltCaps{d}e'
+ & \noexpand\textSC{Medici} & >
+\end{nameauth}
+
+\begin{nameauth}
+ \< Jeff & Thomas &
+ \noexpand\textSC{Jefferson}\noexpand\GEN{} & >
+\end{nameauth}
+
+\begin{nameauth}
+ \< Scipio & \noexpand\SCIPi & \noexpand\SCIPii & >
+ \< TGrac & \noexpand\TSemp & Gracchus & >
+\end{nameauth}
+
+\begin{nameauth}
+ \< OScipio & Lucius & \noexpand\CSB & > % O for Oxford
+\end{nameauth}
+
+\begin{nameauth}
+ \< Shak & \noexpand\WM & \noexpand\SHK & >
+\end{nameauth}
+
+\begin{nameauth}
+ \< deSmet & Pierre-Jean &
+ \noexpand\Fbox{\noexpand\AltCaps{d}e~Smet} & >
\end{nameauth}
+
%
% We could add name info database tags (text tags) either
% in the preamble or in the document environment. We will do
% the latter in this example file.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Below we establish sort tags for names. We also can do that
-% later on in the body text. Note again the consistent use of
-% \noexpand with alternate formatting.
+% Below we establish sort tags for names.
%
-\PretagName[John]{\noexpand\textSC{Adams}}{Adams, John}
-\PretagName[Sammy]{\noexpand\textSC{Davis}, \noexpand\textSC{Jr}.}{Davis, Sammy, Jr.}
-\PretagName{Demetrius, I}{Demetrius 1}
-\PretagName[Pierre-Jean]{\noexpand\Fbox{\noexpand\AltCaps{d}e~Smet}}{de~Smet, Pierre-Jean}
-\PretagName{Harun, \noexpand\textSC{\noexpand\AltCaps{a}l-Rashid}}{Harun al-Rashid}
-\PretagName[Thomas]{\noexpand\JEFF}{Jefferson, Thomas}
-\PretagName{\noexpand\textSC{Mencius}}{Mencius}
-\PretagName{\noexpand\textSC{Meng}, Ke}{Meng Ke}
-\PretagName[\noexpand\SCIPi]{\noexpand\SCIPii}{Scipio Africanus}
-\PretagName[Publius]{\noexpand\CSA}{Cornelius Scipio Africanus}
-\PretagName[Quintus]{\noexpand\SUTOR}{Naevius Sutorius}
-\PretagName[\noexpand\WM]{\noexpand\SHK}{Shakespeare, William}
-\PretagName{Vlad, Ţepeş}{Vlad Tepes}
-\TagName[John]{\noexpand\textSC{Adams}}{, president}
-\TagName{Demetrius, I}{ Soter, king}
-\TagName[Thomas]{\noexpand\JEFF}{, president}
-\TagName{Vlad, II}{ Dracul}
-\TagName{Vlad, III}{ Dracula}
-\TagName[Martin]{Van Buren}{, president}
-\TagName[Ulysses S.]{Grant}{, president}
-\TagName[George]{Washington}{, president}
+% Sort these names under: US Presidents.
+\PretagName[George]{Washington}{US Presidents!Washington, George}
+\PretagName[Abraham]{Lincoln}{US Presidents!Lincoln, Abraham}
+
+% Sort these names under: Philosophers.
+\PretagName{Aristotle}{Philosophers!Aristotle}
+\PretagName{Plato}{Philosophers!Plato}
+
+% Sort these names under: Black Americans, famous.
+\PretagName[Frederick]{Douglass}
+ {Black Americans, famous!Douglass, Frederick}
+\PretagName[Betsey]{Bailey}
+ {Black Americans, famous!Bailey, Betsey}
+\PretagName[Martin Luther]{King, Jr.}
+ {Black Americans, famous!King, Martin Luther, Jr.}
+
+% Sort these names under: Europeans, historical.
+\PretagName{Æthelred, II}{Europeans, historical!Aethelred 2}
+\PretagName[Hernando]{de Soto}
+ {Europeans, historical!de Soto, Hernando}
+
+\PretagName{Vlad, Ţepeş}{Vlad Tepes} % for accented names
+
+\PretagName[Konrad]{\noexpand\textSC{Zuse}}{Zuse, Konrad}
+\PretagName[Ada]{\noexpand\textIT{Lovelace}}{Lovelace, Ada}
+\PretagName[Charles]{\noexpand\textBF{Babbage}}
+ {Babbage, Charles}
+\PretagName{\noexpand\textUC{Kanade}, Takeo}{Kanade Takeo}
+
+\PretagName[Martin]{\noexpand\textSC{Luther}}{Luther, Martin}
+\PretagName[Catherine \noexpand\AltCaps{d}e']
+ {\noexpand\textSC{Medici}}{Medici, Catherine de}
+
+\PretagName[Thomas]{\noexpand\textSC{Jefferson}\noexpand\GEN{}}
+ {Jefferson, Thomas}
+
+\PretagName[Greta]{\noexpand\textSC{Garbo}}{Garbo, Greta}
+\PretagName{\noexpand\textSC{Misora}, Hibari}{Misora Hibari}
+\PretagName[Heinz]{\noexpand\textSC{R\"uhmann}}{Ruehmann, Heinz}
+\PretagName[Heinrich Wilhelm]{\noexpand\textSC{R\"uhmann}}
+ {Ruehmann, Heinrich Wilhelm}
+
+\PretagName[\noexpand\SCIPi]{\noexpand\SCIPii}
+ {Scipio Africanus}
+\PretagName[\noexpand\TSemp]{Gracchus}
+ {Gracchus, Tiberius Sempronius}
+
+\PretagName[Lucius]{\noexpand\CSB}{Cornelius Scipio Barbatus}
+
+\PretagName[\noexpand\WM]{\noexpand\SHK}
+ {Shakespeare, William}
+\PretagName[Robert]{\textSC{Burns}}{Burns, Robert}
+
+\PretagName[Pierre-Jean]%
+ {\noexpand\Fbox{\noexpand\AltCaps{d}e~Smet}}%
+ {de~Smet, Pierre-Jean}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% We set up line numbering in verbatim environments.
+% Below we establish some index tags for names.
%
-\makeatletter
-\newcommand*\ClearNum{\def\verbatim@processline{\the\verbatim@line\par}}
-\newcommand*\StartNum{\setcounter{VerbLine}{0}\def\verbatim@processline{\stepcounter{VerbLine}\leavevmode\llap{\footnotesize\normalfont\theVerbLine\quad}\the\verbatim@line\par}}
-\newcommand*\ContinueNum{\def\verbatim@processline{\stepcounter{VerbLine}\leavevmode\llap{\footnotesize\normalfont\theVerbLine\quad}\the\verbatim@line\par}}
-\makeatother
+\TagName[George S.]{Patton, Jr.}{, general}
+\TagName{Vlad, II}{ Dracul}
+\TagName{Vlad, III}{ Dracula}
+\IndexRef{Dracula}{Vlad III}
+\TagName[Thomas]{\noexpand\textSC{Jefferson}\noexpand\GEN{}}
+ {, pres.}
+\TagName[\noexpand\TSemp]{Gracchus}{, consul}
+\TagName[Lucius]{\noexpand\CSB}{, consul}
+
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% The default verbatim format is no line numbers.
-% We add title, author, and date.
%
-\ClearNum
-\title{\bfseries Longer Examples}
+
+\title{\bfseries Collected Examples}
\author{Charles P. Schaum}
-\date{2021/02/27}
+\date{2023/02/03}
\begin{document}
\maketitle
@@ -246,952 +198,620 @@
\tableofcontents
\newpage
-\section{Particles}
+\section{Minimal Example}
-First we use variants with the \meta{Alternate} argument:
-
-\NameAddInfo{Demetrius, I}{ Soter}
-\begin{quote}\small
-\StartNum
-\begin{verbatim}
-\NameAddInfo{Demetrius, I}{ Soter}
-\PretagName{Demetrius, I}{Demetrius 1}
-\TagName{Demetrius, I}{ Soter, king}
-\begin{nameauth}
-\< Dem & & Demetrius, I & >
-\end{nameauth}
-\end{verbatim}
-
- \smallskip
- \begin{tabular}{ll}\toprule
- \cmd{\Dem[I Soter]} & \Dem[I Soter]\\
- \rowcolor{grey}%
- \cmd{\LDem} & \LDem\\
- \cmd{\Dem} & \Dem\\\bottomrule
- \end{tabular}
- \end{quote}
-
-\begingroup%
-\makeatletter
-\renewcommand*\NamesFormat[1]{%
- \begingroup%
- \protected@edef\temp{\endgroup%
- {#1\noexpand\NameQueryInfo
- [\unexpanded\expandafter{\the\@nameauth@toksa}]
- {\unexpanded\expandafter{\the\@nameauth@toksb}}
- [\unexpanded\expandafter{\the\@nameauth@toksc}]%
- }%
- }%
- \temp%
-}
-\makeatother
-For a more automated approach, we use ``text tags'':
+\begin{enumerate*}
+ \item[\textbf{1.}] \Doug\ rose to eminence by sheer force
+ of character and talents that neither slavery nor caste
+ proscription could crush.
+ \item[\textbf{2.}] \Doug's early life is perhaps the most
+ complete indictment of the slave system ever presented at
+ 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.\\
+\end{enumerate*}
+\index{example, minimal}
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
-\makeatletter
-\makeatletter
-\renewcommand*\NamesFormat[1]{%
- \begingroup%
- \protected@edef\temp{\endgroup%
- {#1\noexpand\NameQueryInfo
- [\unexpanded\expandafter{\the\@nameauth@toksa}]
- {\unexpanded\expandafter{\the\@nameauth@toksb}}
- [\unexpanded\expandafter{\the\@nameauth@toksc}]%
- }%
- }%
- \temp%
-}
-\makeatother
-\end{verbatim}
-
-\smallskip
- \begin{tabular}{ll}\toprule
- \cmd{\ForgetThis}\cmd{\Dem} & \ForgetThis\Dem\\
- \rowcolor{grey}%
- \cmd{\LDem} & \LDem\\
- \cmd{\Dem} & \Dem\\\bottomrule
- \end{tabular}
-\end{quote}
-\endgroup
+\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
+ 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.
+ \item[\textbf{1.}] \Doug\ rose to eminence by sheer force
+ of character and talents that neither slavery nor caste
+ proscription could crush.
+\end{enumerate*}
-\vfil
-\noindent And now for something completely different\dots
+\section{Multiple Indexes}
- We mention the Electric Boogaloo\index{Boogaloo, Electric}
- by \Name{Ollie~\& Jerry}.\\
+The Electric Boogaloo\index{Boogaloo, Electric}\\ % main index
+was created by \Name{Ollie~\& Jerry}. % name index
+\index{indexes, multiple}
-\noindent The index references made here will put:
+\section{Index Categories}
- ``Boogaloo, Electric'' in the main index
+\subsection{Famous Black Americans}
- and ``\ShowIdxPageref*{Ollie~\& Jerry}'' in the index of names.
-\newpage
+\ForgetThis\Name[Frederick]{Douglass} rose to eminence by sheer
+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.\\
-\section{Roman Names}
+We also celebrate \MLK, then \MLK.
- We define all macros and conditionals used in naming macro arguments in the preamble. We use \cmd{\noexpand} in the naming macro arguments to prevent error. Since we do not use \cmd{\CapThis} in the examples below, we skip alternate formatting for simplicity, yet we still recommend it:
- \begin{quote}\small
- \StartNum
- \begin{verbatim}
-\newif\ifSkipGens
-\newif\ifNoGens
-\newif\ifSkipAgnomen
-\newif\ifNoAgnomen
-\newcommand*\SCIPi{\ifNoGens
- Publius\else Publius Cornelius\fi}
-\newcommand*\SCIPii{\ifNoAgnomen
- Scipio\else Scipio Africanus\fi}
-\newcommand*\ScipioOnly{\SkipAgnomentrue\Scipio}
-\begin{nameauth}
- \< Scipio & \noexpand\SCIPi & \noexpand\SCIPii & >
-\end{nameauth}
-\PretagName[\noexpand\SCIPi]{\noexpand\SCIPii}{Scipio Africanus}\end{verbatim}
- \end{quote}
+\subsection{Patres Patriae}
- We begin a new scope below, redefining the formatting hooks, which affect only names printed in the text. If the local Boolean flags are false, one gets longer name forms. If the flags are true, one gets shorter forms. This approach allows the global state of the flags to be false by default, meaning that one need not remember to set any of them true in the preamble. That results in one less thing to remember, and one less problem to fix.
-\begingroup
-\renewcommand*\NamesFormat[1]
- {\ifSkipGens\NoGenstrue\fi\ifSkipAgnomen\NoAgnomentrue\fi#1%
- \global\SkipGensfalse\global\SkipAgnomenfalse}
-\renewcommand*\MainNameHook[1]
- {\ifSkipGens\NoGenstrue\fi\ifSkipAgnomen\NoAgnomentrue\fi#1%
- \global\SkipGensfalse\global\SkipAgnomenfalse}
- \begin{quote}\small
- \ContinueNum
- \begin{verbatim}
-\renewcommand*\NamesFormat[1]
- {\ifSkipGens\NoGenstrue\fi\ifSkipAgnomen\NoAgnomentrue\fi#1%
- \global\SkipGensfalse\global\SkipAgnomenfalse}
-\renewcommand*\MainNameHook[1]
- {\ifSkipGens\NoGenstrue\fi\ifSkipAgnomen\NoAgnomentrue\fi#1%
- \global\SkipGensfalse\global\SkipAgnomenfalse}\end{verbatim}
- \end{quote}
+We mention President \Wash; again, \Wash.
+Family and close friends called him \SWash.\\
- The index always shows the name determined by the global state of \cmd{\NoGens} and \cmd{\NoAgnomen}, which we set up as false, meaning a maximally long name form. In the body text we have:
- \begin{quote}\small
- \ForgetThis\ScipioOnly\ \cmd{\ScipioOnly} was born around 236 \textsc{bc} into the Scipio branch of the Cornelius clan, one of six large patrician clans. \ScipioOnly\ \cmd{\ScipioOnly} rose to military fame during the Second Punic War. Thereafter he was known as \Scipio\ \cmd{\Scipio}.
- \end{quote}
+\TagName[George]{Washington}{!as general}
+We can reminisce about \LWash[General].
+\UntagName[George]{Washington}
- Below we show more information about popular name forms by way of comparison with scholarly name forms.\medskip
+When speaking of \Linc, we can refer to \LLinc[Abe].
- The \textit{Oxford Classical Dictionary} and other scholarly sources index according to the \textit{nomen}. That approach moves the \textit{nomen} from \meta{FNN} to \meta{SNN}.
+\subsection{Philosophers}
- The two methods do not clash \textit{per se} in the text, but they make incompatible index entries. In this case, since we have indexed \ScipioOnly\ under the popular form above, we use \cmd{\ExcludeName} to exclude the scholarly form below.
+Among philosophers we consider \Plato\ and \Aris.
- In the document preamble we define the following Boolean flags and macros. We use a nested conditional in \meta{SNN}. The default still is to show all names so that they can be indexed that way:
- \begin{quote}\small
- \StartNum
- \begin{verbatim}
-\newif\ifSkipGens % These flags remain the same as above.
-\newif\ifNoGens
-\newif\ifSkipAgnomen
-\newif\ifNoAgnomen
-\global\def\CSA{\ifNoGens\ifNoAgnomen
- Scipio\else
- Scipio Africanus\fi
- \else\ifNoAgnomen
- Cornelius Scipio\else
- Cornelius Scipio Africanus\fi\fi}
-\ExcludeName[Publius]{\noexpand\CSA}
-\begin{nameauth}
- \< OScipio & Publius & \noexpand\CSA & > % O for Oxford
-\end{nameauth}
-\PretagName[Publius]{\noexpand\CSA}{Cornelius Scipio Africanus}\end{verbatim}
- \end{quote}
-
- We keep the same formatting macros that we defined above. By the way, these formatting macros could work with regular names as well as Roman names, e.g., \LDem, because they have no side effects.
-
- The scholarly form of Roman names has a different name pattern, so it is not compatible with the popular version. Nevertheless, we show what the index entries would be in a normal \LaTeX\ document without hyperlinks:
- \begin{quote}\small\IndexActual{@}
- \textbf{Simplified Name Patterns:}\\
- Scholarly: \texttt{\ShowPattern[Publius]{\noexpand\CSA}}\\
- \setbox0\hbox{Scholarly:}\hbox to \wd0{Popular:\hfill} \texttt{\ShowPattern[\noexpand\SCIPi]{\noexpand\SCIPii}}\\
-
- \textbf{Full Index Entries:}
- \UntagName[Publius]{\noexpand\CSA}
- \UntagName[\noexpand\SCIPi]{\noexpand\SCIPii}\\
- Scholarly:\\ \hbox{}\quad\texttt{\ShowIdxPageref[Publius]{\noexpand\CSA}}\\
- Popular:\\ \hbox{}\quad\texttt{\ShowIdxPageref[\noexpand\SCIPi]{\noexpand\SCIPii}}
- \TagName[Publius]{\noexpand\CSA}{\string|hyperpage}
- \TagName[\noexpand\SCIPi]{\noexpand\SCIPii}{\string|hyperpage}\\
-
- \textbf{Basic Index Entries:}\\
- \UntagName[Publius]{\noexpand\CSA}
- Scholarly:\\ \hbox{}\quad\ShowIdxPageref*[Publius]{\noexpand\CSA}\\
- Popular:\\ \hbox{}\quad\ShowIdxPageref*[\noexpand\SCIPi]{\noexpand\SCIPii}
- \end{quote}
-
- Below we compare some differences between the scholarly and popular forms, and how to get equivalent forms in the text while understanding that they would be two separate forms in the index.
- \begin{center}\small
- \begin{tabular}{p{0.51\textwidth}@{\ \ }l}
- \multicolumn{2}{l}{\textbf{First use:}}\\
- scholarly:\dotfill \cmd{\OScipio} & \OScipio\\
- popular:\dotfill \cmd{\Scipio} & \ForgetThis\Scipio\\[2ex]
-
- \multicolumn{2}{l}{\textbf{Subsequent use:}}\\
- scholarly:\dotfill \cmd{\OScipio} & \OScipio\\
- scholarly:\dotfill \cmd{\SkipGenstrue}\cmd{\OScipio} & \SkipGenstrue\OScipio\\
- popular:\dotfill \cmd{\Scipio} & \SkipGenstrue\Scipio\\[2ex]
-
- \multicolumn{2}{l}{\textbf{Subsequent use, full, no \textit{agnomen}:}}\\
- scholarly:\dotfill \cmd{\SkipAgnomentrue}\cmd{\LOScipio} & \SkipAgnomentrue\LOScipio\\
- popular:\dotfill \cmd{\SkipAgnomentrue}\cmd{\LScipio} & \SkipAgnomentrue\LScipio\\[2ex]
-
- \multicolumn{2}{l}{\textbf{Subsequent use, shortest forms:}}\\
- scholarly:\dotfill \cmd{\SkipAgnomentrue}\cmd{\OScipio} & \SkipAgnomentrue\OScipio\\
- \hfill\cmd{\SkipGenstrue}\cmd{\SkipAgnomentrue}\cmd{\OScipio} & \SkipGenstrue\SkipAgnomentrue\OScipio\\
- popular:\dotfill \cmd{\SkipAgnomentrue}\cmd{\Scipio\ } & \SkipAgnomentrue\Scipio\\[2ex]
-
- \multicolumn{2}{l}{\textbf{Subsequent use, personal name:}}\\
- scholarly:\dotfill \cmd{\SOScipio} & \SOScipio\\
- popular:\dotfill \cmd{\SScipio} & \SScipio\\
- popular:\dotfill \cmd{\SkipGenstrue}\cmd{\SScipio} & \SkipGenstrue\SScipio
- \end{tabular}
- \end{center}
- \endgroup
-\newpage
+\subsection{Historical Figures}
-\section{Inflected Name Forms}
+We ponder about \Aeth, then \Aeth.
+We speak of \Sun, then \Sun.
+We note \Soto, then just \Soto.
+\CapThis\Soto{} starts a sentence.
-\begingroup
-Below we use alternate formatting, sort index entries, and set up a cross-reference, then redefine the hook macros locally.
-\AltFormatActive
- \renewcommand*\NamesFormat[1]{\ifGenitive\DoGentrue\fi#1\global\Genitivefalse}
- \renewcommand*\MainNameHook[1]{\ifGenitive\DoGentrue\fi\AltOff#1\global\Genitivefalse}
- \begin{quote}\small
- \StartNum
- \begin{verbatim}
-\begin{nameauth}
- \< Jeff & Thomas & \noexpand\JEFF & >
-\end{nameauth}
-\PretagName[Thomas]{\noexpand\JEFF}{Jefferson, Thomas}
-\TagName[Thomas]{\noexpand\JEFF}{, president}
-\renewcommand*\NamesFormat[1]
- {\ifGenitive\DoGentrue\fi#1\global\Genitivefalse}
-\renewcommand*\MainNameHook[1]
- {\ifGenitive\DoGentrue\fi\AltOff#1\global\Genitivefalse}
+\subsection{Further Discussion}
-Consider \Genitivetrue\Jeff\ legacy. More on \Jeff\ later.
-\Genitivetrue\Jeff\ reputation has declined in recent decades.
-\end{verbatim}
+\TagName[George]{Washington}{!as general}
+\TagName[Dwight D.]{Eisenhower}{!as general}
+\LWash, \LPatton, and \LIke\ were high-ranking generals.\\
- \smallskip
- Consider \Genitivetrue\Jeff\ legacy. More on \Jeff\ later.
- \Genitivetrue\Jeff\ reputation has declined in recent decades.
- \end{quote}
-\AltFormatInactive
-\endgroup
-\newpage
+\TagName[Dwight D.]{Eisenhower}{!as president}
+\UntagName[George]{Washington}
+\Wash\ and \Ike\ also were US presidents.
-\section{Example Reference Work}
+\small
+% Instead of pre-tagging Ike we do the following:
+\index[per]{US Presidents!other|see{Eisenhower, Dwight D., president}}
-Below we use alternate formatting, sort index entries, set up a cross-reference, and define a reference article macro:
+\section{More Complex Hooks}
-\AltFormatActive
-\PretagName[Greta]{\textSC{Garbo}}{Garbo, Greta}
-\PretagName{\textSC{Misora}, Hibari}{Misora Hibari}
-\PretagName[Heinz]{\textSC{Rühmann}}{Ruehmann, Heinz}
-\PretagName[Heinrich Wilhelm]{\textSC{Rühmann}}%
- {Ruehmann, Heinrich Wilhelm}
-\IndexRef[Heinrich Wilhelm]{\textSC{Rühmann}}%
- {\textSC{Rühmann}, Heinz}%
-\newcommand{\RefArticle}[3]{%
- \def\check{#2}%
- \ifx\check\empty
- \noindent\ForgetThis#1\ #3
- \else
- \noindent\ForgetThis#1\ #2\ #3
- \fi
-}
-\begin{quote}\small
-\StartNum
-\begin{verbatim}
-\AltFormatActive
-\PretagName[Greta]{\textSC{Garbo}}{Garbo, Greta}
-\PretagName{\textSC{Misora}, Hibari}{Misora Hibari}
-\PretagName[Heinz]{\textSC{Rühmann}}{Ruehmann, Heinz}
-\PretagName[Heinrich Wilhelm]{\textSC{Rühmann}}%
- {Ruehmann, Heinrich Wilhelm}
-\IndexRef[Heinrich Wilhelm]{\textSC{Rühmann}}%
- {\textSC{Rühmann}, Heinz}%
-\newcommand{\RefArticle}[3]{%
- \def\check{#2}%
- \ifx\check\empty
- \noindent\ForgetThis#1\ #3
- \else
- \noindent\ForgetThis#1\ #2\ #3
- \fi
-}
-\end{verbatim}
-\end{quote}
-
-\cmd{\RefArticle} prints only the first and third arguments if the second is empty, else it prints all three. We determine what those arguments mean by including specific naming macros. That includes using \cmd{\RevComma} for Western names, but not for Eastern ones.
-
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
-\RefArticle
- {\RevComma\Name[Greta]{\textSC{Garbo}}}
- {}
- {(18 September 1905\,--\,15 April 1990) was a Swedish
- film actress during the 1920s and 1930s.}
-
-\RefArticle
- {\Name{\textSC{Misora}, Hibari}}
- {}
- {(W: ``\RevName\Name*{\textSC{Misora}, Hibari}'';
- 29 May 1937\,--\,24 June 1989) was a Japanese singer
- and actress noted for her positive message.}
-
-\RefArticle
- {\RevComma\Name[Heinrich Wilhelm]{\textSC{Rühmann}}}
- {``\SubvertThis\ForceName\FName[Heinz]{\textSC{Rühmann}}''}
- {(7 March 1902\,--\,3 October 1994) was a German actor
- in over 100 films.}
-\AltFormatInactive
-\end{verbatim}
-\end{quote}
-
-\begin{quote}\small
-\RefArticle
- {\RevComma\Name[Greta]{\textSC{Garbo}}}
- {}
- {(18 September 1905\,--\,15 April 1990) was a Swedish
- film actress during the 1920s and 1930s.}
-
-\RefArticle
- {\Name{\textSC{Misora}, Hibari}}
- {}%
- {(W: ``\RevName\Name*{\textSC{Misora}, Hibari}'';
- 29 May 1937\,--\,24 June 1989) was a Japanese singer
- and actress noted for her positive message.}
-
-\RefArticle
- {\RevComma\Name[Heinrich Wilhelm]{\textSC{Rühmann}}}
- {``\SubvertThis\ForceName\FName[Heinz]{\textSC{Rühmann}}''}
- {(7 March 1902\,--\,3 October 1994) was a German actor
- in over 100 films.}
-\end{quote}
-
-\AltFormatInactive
-\newpage
-
-\section{Beamer MWE}
-One must use the macros that control and detect names, otherwise name forms will change as one advances the slides:
-\begin{quote}\small
-\StartNum
-\begin{verbatim}
-\documentclass{beamer}
-\usepackage{nameauth}
-\mode<presentation>
-\beamerdefaultoverlayspecification{<+->}
-
-\begin{document}
-
-\begin{frame}{Move Text Without Retyping Names}
- \begin{itemize}\footnotesize
- \item<1-> Original\ForgetName[George]{Washington}%
- \ForgetName[George]{Washington's}\\
- This version of \Name[Ulysses S.]{Grant} changes.
- \begin{enumerate}
- \item<2-> \IfMainName[George]{Washington's}{He}%
- {\Name[George]{Washington}}
- became the first president
- of the United States.
- \item<3-> \IfMainName[George]{Washington}{His}%
- {\SkipIndex\Name*[George]{Washington's}}
- military successes during the Seven Years War
- readied him to command the army
- of the Continental Congress.
- \end{enumerate}
- \item<1-> Reordered\ForgetName[George]{Washington}%
- \ForgetName[George]{Washington's}\\
- This version of \ForgetThis\Name[Ulysses S.]{Grant}
- does not change.
- \begin{enumerate}
- \item<3-> \IfMainName[George]{Washington}{His}%
- {\SkipIndex\Name*[George]{Washington's}}
- military successes during the Seven Years War
- readied him to command the army
- of the Continental Congress.
- \item<2-> \IfMainName[George]{Washington's}{He}%
- {\Name[George]{Washington}}
- became the first president
- of the United States.
- \end{enumerate}
- \end{itemize}
-\end{frame}
-
-\end{document}
-\end{verbatim}
-\IndexName[George]{Washington}
-\IndexName[Ulysses S.]{Grant}
-\end{quote}
-
-The overlays, numbered progressively from one to three, begin by deleting name control sequence patterns. Uncontrolled names will change. Name conditionals ensure specific, context-dependent forms based on what name has appeared. These conditionals allow the text to be order-independent.
-\newpage
-
-\section{Hooks: Intro}
-\label{sec:Hooksi}
-
-Here we show that something more complex than a font switch can occur in \cmd{\NamesFormat}. Below we put the first mention of a name in boldface, along with a marginal notation if possible.
-\begin{quote}\small
-\StartNum
-\begin{verbatim}
+% First save main- and front-matter hooks. Then change
+% first-use hooks for both main matter and front matter.
\let\OldFormat\NamesFormat
+\let\OldFrontNames\FrontNamesFormat
+
\renewcommand*\NamesFormat[1]{\textbf{#1}\unless\ifinner
\marginpar{\raggedleft\scriptsize #1}\fi}
-\PretagName{Vlad, Ţepeş}{Vlad Tepes} % for accented names
-\TagName{Vlad, II}{ Dracul} % for index information
-\TagName{Vlad, III}{ Dracula}
-\end{verbatim}
+\renewcommand*\FrontNamesFormat[1]{\textit{#1}\unless\ifinner
+ \marginpar{\raggedleft\scriptsize #1}\fi}
+\index{complex hooks, intro}
-\medskip Within the document after the preamble:
-\let\OldFormat\NamesFormat
-\renewcommand*\NamesFormat[1]{\textbf{#1}\unless\ifinner
- \marginpar{\raggedleft\scriptsize #1}\fi}
-\ContinueNum
-\begin{verbatim}\Name{Vlad, III}[III Dracula], known as
-\AKA{Vlad III}{Vlad, Ţepeş} (the Impaler)
+The new format (front matter):\NamesInactive
+
+\Name{Vlad, III}[III Dracula], known as
+\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
``\Name*{Vlad, III}'' and ``\Name{Vlad, III}'' appear thus.
-\end{verbatim}
+
+The new format (main matter):\NamesActive
\Name{Vlad, III}[III Dracula], known as
-\AKA{Vlad III}{Vlad, Ţepeş} (the Impaler)
+\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
``\Name*{Vlad, III}'' and ``\Name{Vlad, III}'' appear thus.
\let\NamesFormat\OldFormat
-\begin{verbatim}\let\NamesFormat\OldFormat\end{verbatim}
-\end{quote}
-Now we have reverted to the default \cmd{\NamesFormat} and we get:
-\begin{itemize}
- \item \cmd{\ForgetThis}\cmd{\Name\{Vlad, III\}[III Dracula]}\dotfill \ForgetThis\Name{Vlad, III}[III Dracula]
- \item \cmd{\Name*\{Vlad, III\}}\dotfill \Name*{Vlad, III}
- \item \cmd{\Name\{Vlad, III\}}\dotfill \Name{Vlad, III}
-\end{itemize}
-We also set up the cross-reference \cmd{\IndexRef\{Dracula\}\{Vlad III\}}\IndexRef{Dracula}{Vlad III}.
-\newpage
+\let\FrontNamesFormat\OldFrontNames
-\section{Hooks: Life Dates}
-\label{sec:Hooksii}
-\begingroup
-Here we add name conditionals and ``text tags'' to add information to names when desired. The example \cmd{\NamesFormat} below adds a text tag to the first occurrences of main-matter names.
+We are back in the old format.
-Below we use the three token registers available in \textsf{nameauth} to use the name conditional macros. In \cmd{\AKA} these token registers are copies of the \textbf{last} three arguments, corresponding to the pseudonym. We assume that we will not be using the \texttt{alwaysformat} option, meaning that we only call this hook once for a first use of \cmd{\AKA}. We also use a different formatting for the naming macros on the one hand and \cmd{\AKA} on the other:
+in the front matter we see: \NamesInactive
+\ForgetThis\Name{Vlad, III}[III Dracula],
+\Name*{Vlad, III}, and \Name{Vlad, III}.
-The first use of a name is in small caps. Text tags are in boldface with naming macros, and roman with \cmd{\AKA}. Just because we set up a cross-reference does not mean that we have to use \cmd{\AKA}. We use \cmd{\ForceName} as needed with \cmd{\AKA}. In the document preamble we set up the following:
-\begin{quote}\small
-\StartNum
-\begin{verbatim}
-\newif\ifNoTag
-\makeatletter
-\renewcommand*\NamesFormat[1]{\begingroup%
- \protected@edef\temp{\endgroup\textsc{#1}%
- \unless\ifNoTag
- \if@nameauth@InName
- {\bfseries\noexpand\NameQueryInfo
- [\unexpanded\expandafter{\the\@nameauth@toksa}]
- {\unexpanded\expandafter{\the\@nameauth@toksb}}
- [\unexpanded\expandafter{\the\@nameauth@toksc}]}\fi
- \if@nameauth@InAKA
- {\normalfont\noexpand\NameQueryInfo
- [\unexpanded\expandafter{\the\@nameauth@toksa}]
- {\unexpanded\expandafter{\the\@nameauth@toksb}}
- [\unexpanded\expandafter{\the\@nameauth@toksc}]}\fi
- \fi}\temp\global\NoTagfalse%
-}
-\makeatother
-\let\FrontNamesFormat\NamesFormat
-\end{verbatim}
-\end{quote}
-\makeatletter
-\renewcommand*\NamesFormat[1]{\begingroup%
- \protected@edef\temp{\endgroup\textsc{#1}%
- \unless\ifNoTag
- \if@nameauth@InName
- {\bfseries\noexpand\NameQueryInfo
- [\unexpanded\expandafter{\the\@nameauth@toksa}]
- {\unexpanded\expandafter{\the\@nameauth@toksb}}
- [\unexpanded\expandafter{\the\@nameauth@toksc}]}\fi
- \if@nameauth@InAKA
- {\normalfont\noexpand\NameQueryInfo
- [\unexpanded\expandafter{\the\@nameauth@toksa}]
- {\unexpanded\expandafter{\the\@nameauth@toksb}}
- [\unexpanded\expandafter{\the\@nameauth@toksc}]}\fi
- \fi}\temp\global\NoTagfalse}%
-\makeatother
-\let\FrontNamesFormat\NamesFormat
+in the main matter we see: \NamesActive
+\ForgetThis\Name{Vlad, III}[III Dracula],
+\Name*{Vlad, III}, and \Name{Vlad, III}.
-We print tags in the first use hooks unless \cmd{\NoTag} is set true. This method uses the two \(\epsilon\)-\TeX{} primitives \cmd{\noexpand} and \cmd{\unexpanded} to avoid repetition of \cmd{\expandafter}. Since \textsf{nameauth} depends on \textsf{etoolbox}, we assume \(\epsilon\)-\TeX.
+\section{Life Dates in Hooks}
-Before we can refer to any text tags, we must create them. Using the approach above, we include a leading space in the text tags. The leading space is needed only when a text tag appears.\footnote{Another way to add that space is to put it in the conditional path of the formatting hook and leave it out of the text tags entirely: \dots\texttt{\{ \}}\cmd{\noexpand}\cmd{\NameQueryInfo}\dots}
-We also set up a cross-reference, which we will use regardless of whether we also use \cmd{\AKA}. The cross-reference will be created only once and skipped thereafter:
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
+% Add data tags to names.
\NameAddInfo[George]{Washington}{ (1732--99)}
\NameAddInfo[Mustafa]{Kemal}{ (1881--1938)}
-\NameAddInfo{Atatürk}{ (in 1934, a special surname)}
-\IndexRef{Atatürk}{Kemal, Mustafa}
-\end{verbatim}
-\end{quote}
-\NameAddInfo[George]{Washington}{ (1732--99)}
-\NameAddInfo[Mustafa]{Kemal}{ (1881--1938)}
-\NameAddInfo{Atatürk}{ (in 1934, a special surname)}
-\IndexRef{Atatürk}{Kemal, Mustafa}
-\pagebreak
+\NameAddInfo{Atat\"urk}{ (in 1934, a special surname)}
-Now we begin with the first example, which, after all the setup, looks deceptively simple, but highly reusable without extra work:
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
-\ForgetThis\Wash held office 1789--97.
-No tags: \Wash.\\
-First use, dates suppressed: \NoTagtrue\ForgetThis\Wash.\\
-Subsequent use with format and dates: \ForceName\Wash.
-\end{verbatim}
-
-\smallskip
-\ForgetThis\Wash\ held office 1789--97.\\
-No tags: \Wash.\\
-First use, dates suppressed: \NoTagtrue\ForgetThis\Wash.\\
-Subsequent use with format and dates: \ForceName\Wash.
-\end{quote}
+% Ensure that Atat\"urk is a cross-reference that
+% has no page entries in the index.
+\IndexRef{Atat\"urk}{Kemal, Mustafa}
-Since we already set up a cross-reference with \cmd{\IndexRef}, we can use just the the naming macros with ``Atatürk'' and get the desired formatting without any page references in the index:
+% Manually suppress data tag in ``first'' reference
+\newif\ifNoTag
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
-\Name[Mustafa]{Kemal} was granted the name
-\Name{Atatürk}. We mention \Name[Mustafa]{Kemal}
-and \Name{Atatürk} again.
-
-First use, no tag:
-\NoTagtrue\ForgetThis\Name{Atatürk}.
-\end{verbatim}
-
-\smallskip
-\Name[Mustafa]{Kemal} was granted the name
-\Name{Atatürk}. We mention \Name[Mustafa]{Kemal}
-and \Name{Atatürk} again.
-
-First use, no tag:
-\NoTagtrue\ForgetThis\Name{Atatürk}.
-\end{quote}
+% Redesign formatting hook to usually print a tag
+% only in ``first'' reference. On exit, It resets
+% the flag that suppresses tags, making that flag
+% work only once per name use.
-Since we set up distinct formatting for \cmd{\AKA} (\cmd{\normalfont} instead of boldface for text tags associated with cross-references), we now simulate the \texttt{formatAKA} package option and use \cmd{\ForceName} with \cmd{\AKA}:
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
-\makeatletter\@nameauth@AKAFormattrue\makeatother
-\ForgetThis\Name[Mustafa]{Kemal} was granted the name
-\ForceName\AKA[Mustafa]{Kemal}{Atatürk}. We mention
-\Name[Mustafa]{Kemal} and \AKA[Mustafa]{Kemal}{Atatürk} again.
-
-First use, no tag:
-\NoTagtrue\ForceName\AKA[Mustafa]{Kemal}{Atatürk}.
-\end{verbatim}
-
-\smallskip
-\makeatletter\@nameauth@AKAFormattrue\makeatother
-\ForgetThis\Name[Mustafa]{Kemal} was granted the name
-\ForceName\AKA[Mustafa]{Kemal}{Atatürk}. We mention
-\Name[Mustafa]{Kemal} and \AKA[Mustafa]{Kemal}{Atatürk} again.
-
-First use, no tag:
-\NoTagtrue\ForceName\AKA[Mustafa]{Kemal}{Atatürk}.
-\end{quote}
+\renewcommand*\NamesFormat[1]
+{%
+ #1%
+ \ifcsname\NameauthPattern!DB\endcsname
+ \unless\ifNoTag
+ \expandafter\csname\NameauthPattern!DB\endcsname%
+ \fi
+ \global\NoTagfalse%
+ \fi
+}
-We show an alternate part of this example on the next page that does not appear in the manual, but works identically to that above.
-\newpage
+\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:
+\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}.
+\index{life dates}
+
+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:
+\NoTagtrue\ForgetThis\Name{Atat\"urk}.
+
+\section{Alternate Formatting}
-We change the look of the page reference just to see if it works. Since we are in a local scope, note the use of \cmd{\global}:
+\AltFormatActive
+\renewcommand*\NamesFormat{}
+\renewcommand*\MainNameHook{\AltOff}
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
-\global\def\fett#1{\textbf{\sffamily #1}}
-\TagName[Mustafa]{Kemal}{|fett}
-\end{verbatim}
-\end{quote}
-\global\def\fett#1{\textbf{\sffamily #1}}
-\TagName[Mustafa]{Kemal}{|fett}
+\noindent
+\ForgetThis\Name[Konrad]{\noexpand\textSC{Zuse}};
+\Name[Konrad]{\noexpand\textSC{Zuse}}\\
+\ForgetThis\Name[Ada]{\noexpand\textIT{Lovelace}};
+\Name[Ada]{\noexpand\textIT{Lovelace}}\\
+\ForgetThis\Name[Charles]{\noexpand\textBF{Babbage}};
+\Name[Charles]{\noexpand\textBF{Babbage}}\\
+\ForgetThis\Name{\noexpand\textUC{Kanade}, Takeo};
+\Name{\noexpand\textUC{Kanade}, Takeo}
+\index{formatting, alternate}
+
+\renewcommand*\MainNameHook{\sffamily\AltOff}
+
+\ForgetThis\Luth\ was a leading figure in the Protestant
+Reformation. \Luth\ believed that one is declared
+righteous in a forensic sense by divine grace through faith
+created by the Holy Spirit via the Gospel and the Sacraments.
+
+\ForgetThis\Cath\ was not only Queen of France in her own right,
+but she also guided the reigns of her three sons.
+\CapThis\LCath[\noexpand\AltCaps{d}e']
+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}
-This version does not use $\epsilon$-\TeX primitives. We ``forget'' names as needed and replay the text on the previous page with the new version:
+\newif\ifGenitive
+\newif\ifDoGenitive
-\makeatletter
-\renewcommand*\NamesFormat[1]{%
- \let\ex\expandafter%
- \textsc{#1}%
- \if@nameauth@InName
- \ifNoTag
- \else
- \bfseries%
- \ex\ex\ex\ex\ex\ex\ex\NameQueryInfo\ex\ex\ex\ex\ex\ex\ex[%
- \ex\ex\ex\the\ex\ex\ex\@nameauth@toksa\ex\ex\ex]%
- \ex\ex\ex{\ex\the\ex\@nameauth@toksb\ex}%
- \ex[\the\@nameauth@toksc]%
- \fi\fi
- \if@nameauth@InAKA
- \ifNoTag
- \else
- \normalfont%
- \ex\ex\ex\ex\ex\ex\ex\NameQueryInfo\ex\ex\ex\ex\ex\ex\ex[%
- \ex\ex\ex\the\ex\ex\ex\@nameauth@toksa\ex\ex\ex]%
- \ex\ex\ex{\ex\the\ex\@nameauth@toksb\ex}%
- \ex[\the\@nameauth@toksc]%
- \fi\fi
- \global\NoTagfalse}
-\makeatother
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
-\newif\ifNoTag
-\makeatletter
-\renewcommand*\NamesFormat[1]{%
- \let\ex\expandafter%
- \textsc{#1}%
- \if@nameauth@InName
- \ifNoTag
- \else
- \bfseries%
- \ex\ex\ex\ex\ex\ex\ex\NameQueryInfo\ex\ex\ex\ex\ex\ex\ex[%
- \ex\ex\ex\the\ex\ex\ex\@nameauth@toksa\ex\ex\ex]%
- \ex\ex\ex{\ex\the\ex\@nameauth@toksb\ex}%
- \ex[\the\@nameauth@toksc]%
- \fi\fi
- \if@nameauth@InAKA
- \ifNoTag
- \else
- \normalfont%
- \ex\ex\ex\ex\ex\ex\ex\NameQueryInfo\ex\ex\ex\ex\ex\ex\ex[%
- \ex\ex\ex\the\ex\ex\ex\@nameauth@toksa\ex\ex\ex]%
- \ex\ex\ex{\ex\the\ex\@nameauth@toksb\ex}%
- \ex[\the\@nameauth@toksc]%
- \fi\fi
- \global\NoTagfalse}
-\makeatother
-\end{verbatim}
+\newcommand*\GEN{\ifDoGenitive\textSC{'s}\fi}
-\smallskip
-With \cmd{\Name}:\\
-\ForgetThis\Name[Mustafa]{Kemal} was granted the name
-\ForgetThis\Name{Atatürk}. We mention \Name[Mustafa]{Kemal}
-and \Name{Atatürk} again.
+\renewcommand*\NamesFormat[1]
+ {\ifGenitive\DoGenitivetrue\fi#1\global\Genitivefalse}
+\renewcommand*\MainNameHook[1]
+ {\ifGenitive\DoGenitivetrue\fi\AltOff#1\global\Genitivefalse}
-First use, no tag: \NoTagtrue\ForgetThis\Name{Atatürk}.\bigskip
+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.
+\index{inflections, grammatical}
-With \cmd{\AKA}:\\
-\makeatletter\@nameauth@AKAFormattrue\makeatother
-\ForgetThis\Name[Mustafa]{Kemal} was granted the name
-\ForceName\AKA[Mustafa]{Kemal}{Atatürk}. We mention
-\Name[Mustafa]{Kemal} and \AKA[Mustafa]{Kemal}{Atatürk} again.
+\section{Sample Reference Work I}
-First use, no tag: \NoTagtrue\ForceName\AKA[Mustafa]{Kemal}{Atatürk}.
-\end{quote}
+% Make a cross-reference from a variant name form to the
+% form of the head-words
-Now we end the scope.
-\endgroup
-\newpage
+\IndexRef[Heinrich Wilhelm]{\noexpand\textSC{R\"uhmann}}
+ {\noexpand\textSC{R\"uhmann}, Heinz}
-\section{Hooks: Advanced}
-\label{sec:Hooksiii}
-\AltFormatActive
-In this section we invoke \cmd{\AltFormatActive} and create several scopes containing respective examples. Some macros in this section normally should be defined in a document preamble. We define them locally and ensure that names do not use them when they are undefined. This is not best practices, but it makes sense for this manual's need for multiple redefinitions.
+% Define the formatting hooks. Since we use the `altformat'
+% option, alternate formatting is turned off in later
+% name uses.
-\begin{center}\bfseries Continental Format: User-Defined\end{center}
-\phantomsection
-\begingroup
-The user must implement this final step. We use \cmd{\AltFormatActive}, then redefine \cmd{\MainNameHook} to have small caps on by default in the index and first uses in the text, then off in subsequent uses in the text:
-\begin{quote}\small
-\StartNum
-\begin{verbatim}
-\renewcommand*\MainNameHook{\AltOff}
-\let\FrontNameHook\MainNameHook
-\end{verbatim}
-\end{quote}
+\renewcommand*\NamesFormat{}
\renewcommand*\MainNameHook{\AltOff}
-\let\FrontNameHook\MainNameHook
-Usually, we set up the names and any related macros in the preamble:
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
-\begin{nameauth}
- \< Adams & John & \noexpand\textSC{Adams} & >
- \< SDJR & Sammy & \noexpand\textSC{Davis},
- \noexpand\textSC{Jr}. & >
- \< HAR & & Harun, \noexpand\textSC%
- {\noexpand\AltCaps{a}l-Rashid} & >
- \< Mencius & & \noexpand\textSC{Mencius} & >
-\end{nameauth}
-\end{verbatim}
-\end{quote}
+% Typeset head-words with a slanted font.
-Likewise in the preamble, we must ensure that these names are sorted properly in the index. When sorting names, be sure to use \cmd{\noexpand} as well:
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
-\PretagName[John]{\noexpand\textSC{Adams}}{Adams, John}
-\PretagName[Sammy]%
- {\noexpand\textSC{Davis}, \noexpand\textSC{Jr}.}%
- {Davis, Sammy, Jr.}
-\PretagName{Harun, \noexpand\textSC%
- {\noexpand\AltCaps{a}l-Rashid}}{Harun al-Rashid}
-\PretagName{\noexpand\textSC{Mencius}}{Mencius}
-\end{verbatim}
-\end{quote}
+\newcommand{\RefArticle}[3]
+{%
+ \def\check{#2}%
+ \ifx\check\empty
+ \noindent\ForgetThis\textsl{#1}\ #3
+ \else
+ \noindent\ForgetThis\textsl{#1}\ #2\ #3
+ \fi\medskip
+}
-\begin{center}
-\small\noindent\begin{tabular}{llll}\toprule
- First & Next & Long & Short \\\midrule
- \cmd{\Adams} & \cmd{\Adams} & \cmd{\LAdams} & \cmd{\SAdams}\\
- \Adams & \Adams & \LAdams & \SAdams\\
- \rowcolor{grey}\cmd{\SDJR} & \cmd{\SDJR} & \cmd{\LSDJR} & \cmd{\SSDJR}\\
- \rowcolor{grey}\SDJR & \SDJR & \LSDJR & \SSDJR\\
- \cmd{\HAR} & \cmd{\HAR} & \cmd{\LHAR} & \cmd{\SHAR}\\
- \HAR & \HAR & \LHAR & \SHAR\\
- \rowcolor{grey}\cmd{\Mencius} & \cmd{\Mencius} & \cmd{\LMencius} & \cmd{\SMencius}\\
- \rowcolor{grey}\Mencius & \Mencius & \LMencius & \SMencius\\\bottomrule
-\end{tabular}
-\end{center}
-
-\begin{itemize}\small
- \item Punctuation detection works: \ForceName\LSDJR. Also \LSDJR. Then \ForceName\SDJR. Now \SDJR. (We used \cmd{\ForceName} for formatting.)
- \item \cmd{\ForceName}\cmd{\DropAffix}\cmd{\LSDJR} gives \ForceName\DropAffix\LSDJR. Just \cmd{\DropAffix}\cmd{\LSDJR} gives \DropAffix\LSDJR.
- \item \cmd{\RevComma}\cmd{\LAdams} yields \RevComma\LAdams. All the reversing macros work.
- \item \cmd{\ForceName}\cmd{\ForceFN}\cmd{\SHAR} produces \ForceName\ForceFN\SHAR. \cmd{\ForceFN}\cmd{\SHAR} produces \ForceFN\SHAR. If we add \cmd{\CapThis} we get \CapThis\ForceName\ForceFN\SHAR\ and \CapThis\ForceFN\SHAR.
- \item One must include all the macros in the name arguments.
-\end{itemize}
-
-\makeatletter\@nameauth@AKAFormattrue\makeatother
-With the \texttt{formatAKA} option we refer to \Mencius\ as \AKA{\noexpand\textSC{Mencius}}{\noexpand\textSC{Meng}, Ke} and \AKA{\noexpand\textSC{Mencius}}{\noexpand\textSC{Meng}, Ke}:
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
-\PretagName{\noexpand\textSC{Meng}, Ke}{Meng Ke}
-\AKA{\noexpand\textSC{Mencius}}{\noexpand\textSC{Meng}, Ke}
-\end{verbatim}
-\end{quote}
-\makeatletter\@nameauth@AKAFormatfalse\makeatother
-\endgroup
+\index{reference work}
+\RefArticle
+ {\RevComma\Name[Greta]{\noexpand\textSC{Garbo}}}
+ {}
+ {(18 September 1905\,--\,15 April 1990) was a Swedish
+ film actress during the 1920s and 1930s.
+ \Name[Greta]{\noexpand\textSC{Garbo}}\dots}
-\begin{center}\bfseries Rolling Your Own: Basic\end{center}
-\phantomsection
-\begingroup
-Here we set out on the path to custom formatting by using package features that have been implemented already. When redesigning formatting hooks, we recommend using \cmd{\AltFormatActive} or the \texttt{altformat} option to enable alternate formatting and prevent \cmd{\CapThis} from breaking custom formatting macros.
+\RefArticle
+ {\Name{\noexpand\textSC{Misora}, Hibari}}
+ {(W:\,``\RevName\Name*{\noexpand\textSC{Misora}, Hibari}'';}
+ {29 May 1937\,--\,24 June 1989) was a Japanese singer
+ and actress noted for her positive message.
+ \Name{\noexpand\textSC{Misora}, Hibari}\dots}
-We recommend examining the internal package flag \cmd{\@nameauth@DoAlt}, which activates alternate formatting, \cmd{\@nameauth@DoCaps}, which handles capitalization, and finally \cmd{\@nameauth@InHook}, which is true when the formatting hooks are called. If you create your own macros, they will look similar.
+\RefArticle
+ {\RevComma\Name[Heinz]{\noexpand\textSC{R\"uhmann}}}
+ {(\SubvertThis\ForceName
+ \FName[Heinrich Wilhelm]{\noexpand\textSC{R\"uhmann}};}
+ {7 March 1902\,--\,3 October 1994) was a German actor
+ 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.
+\newif\ifNoPraenomen
+\newif\ifNoCognomen
+\newif\ifNoGens
+\newif\ifNoAgnomen
-Normally we define a macro for use in name arguments in the document preamble in order to ensure that it is always defined:
-\begin{quote}\small
-\StartNum
-\begin{verbatim}
-\makeatletter
-\newcommand*\Fbox[1]{%
- \if@nameauth@DoAlt\protect\fbox{#1}\else#1\fi
+% Local Boolean flags need to be defined only once.
+\newif\ifXPrae
+\newif\ifXCogn
+\newif\ifXGens
+\newif\ifXAgno
+
+% Name variant macros need to be defined uniquely for each
+% name. First is Scipio. Second is Gracchus.
+
+\newcommand*\SCIPi
+{%
+ \ifXGens Publius\else
+ \ifXPrae Cornelius\else
+ Publius Cornelius%
+ \fi
+ \fi
}
-\makeatother
-\end{verbatim}
-\end{quote}
-\makeatletter
-\newcommand*\Fbox[1]{%
- \if@nameauth@DoAlt\protect\fbox{#1}\else#1\fi
+
+\newcommand*\SCIPii
+{%
+ \ifXAgno Scipio\else
+ Scipio Africanus%
+ \fi
}
-\makeatother
-Since \cmd{\AltCaps} is part of \textsf{nameauth}, you need not reinvent that wheel. Just use it. The final step is redefining the hooks, which can be as simple as:
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
-\renewcommand*\MainNameHook{\AltOff}
-\let\FrontNameHook\MainNameHook
-\end{verbatim}
-\end{quote}
-\renewcommand*\MainNameHook{\AltOff}
-\let\FrontNameHook\MainNameHook
+\newcommand*\TSemp
+{%
+ \ifXGens Tiberius\else
+ \ifXPrae Sempronius\else
+ Tiberius Sempronius%
+ \fi
+ \fi
+}
-When sorting names, be sure to use \cmd{\noexpand} as shown previously:
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
-\begin{nameauth}
- \< deSmet & Pierre-Jean &
- \noexpand\Fbox{\noexpand\AltCaps{d}e~Smet} & >
-\end{nameauth}
+% We add the name data tag.
+\NameAddInfo[\noexpand\TSemp]{Gracchus}
+ { (consul, 177 \textsc{bc})}
-\PretagName[Pierre-Jean]%
- {\noexpand\Fbox{\noexpand\AltCaps{d}e~Smet}}%
- {de~Smet, Pierre-Jean}
-\end{verbatim}
-\end{quote}
+% Although it is helpful to set everything up
+% In the preamble, it is not absolutely necessary.
+% Here we define the simpler set of formatting hooks
+% for Scipio, although the complex hooks will work
+% for both equally as well.
-Now we show how the formatting hooks work in the body text. One can check the index to see that it is formatted properly and consistently.
+\renewcommand*\NamesFormat[1]
+{%
+ \ifNoPraenomen\XPraetrue\fi%
+ \ifNoGens\XGenstrue\fi%
+ \ifNoCognomen\XCogntrue\fi%
+ \ifNoAgnomen\XAgnotrue\fi%
+ #1%
+ \global\NoPraenomenfalse%
+ \global\NoGensfalse%
+ \global\NoCognomenfalse%
+ \global\NoAgnomenfalse%
+}
-\begin{center}\small
-\begin{tabular}{rll}\toprule
- First & \cmd{\deSmet} & \deSmet\\
- \rowcolor{grey}Next & \cmd{\deSmet} & \deSmet\\
- Long & \cmd{\LdeSmet} & \LdeSmet\\
- \rowcolor{grey}Short & \cmd{\SdeSmet} & \SdeSmet\\
- & \cmd{\CapThis}\cmd{\deSmet} & \CapThis\deSmet\\
- \rowcolor{grey} & \cmd{\ForceName}\cmd{\CapThis}\cmd{\deSmet} & \ForceName\CapThis\deSmet\\\bottomrule
-\end{tabular}
-\end{center}
+\renewcommand*\MainNameHook[1]
+{%
+ \ifNoPraenomen\XPraetrue\fi%
+ \ifNoGens\XGenstrue\fi%
+ \ifNoCognomen\XCogntrue\fi%
+ \ifNoAgnomen\XAgnotrue\fi%
+ #1%
+ \global\NoPraenomenfalse%
+ \global\NoGensfalse%
+ \global\NoCognomenfalse%
+ \global\NoAgnomenfalse%
+}
-With \cmd{\CapThis}\cmd{\deSmet}: \CapThis\deSmet. \cmd{\ForceName}\cmd{\CapThis}\cmd{\deSmet}: \ForceName\CapThis\deSmet.\medskip
+\index{Roman names, student}
+\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
+\Name{Ptolemy, IV}[IV Philopator] and
+\Name{Ptolemy, V}[V Epiphanes], and the Syrian
+reigns of \Name{Seleucus, III}[III Ceraunus] and
+\Name{Antiochus, III}[III the Great].
+
+% We make no change to \MainNameHook, but we do
+% change \NamesFormat to display any extant
+% name data tags.
-Some formatting, such as the use of \cmd{\textSC}, is fairly standard. Other formatting, such as \cmd{\Fbox} above, is ornamental and may be handled better with custom features, but those features appear only in the text.
-\endgroup
+\renewcommand*\NamesFormat[1]
+{%
+ \ifNoPraenomen\XPraetrue\fi%
+ \ifNoGens\XGenstrue\fi%
+ \ifNoCognomen\XCogntrue\fi%
+ \ifNoAgnomen\XAgnotrue\fi%
+ #1%
+ \ifcsname\NameauthPattern!DB\endcsname
+ \expandafter\csname\NameauthPattern!DB\endcsname%
+ \fi
+ \global\NoPraenomenfalse%
+ \global\NoGensfalse%
+ \global\NoCognomenfalse%
+ \global\NoAgnomenfalse%
+}
-\begin{center}\bfseries Rolling Your Own: Intermediate\end{center}
-\phantomsection
-\begingroup
-``Intermediate'' and ``advanced'' refer to the way that formatting hooks were designed before version 3.1. The user-accessible \cmd{\NameParser} builds a printed name from the internal, locally-scoped macros \cmd{\FNN}, \cmd{\SNN}, \cmd{\rootb} and \cmd{\suffb}.
+\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.
+serving with the rank of proconsul. In 177 \textsc{bc},
+he was elected consul, again in 163 \textsc{bc}.
-We create a hook that can ignore the output of \cmd{\@nameauth@Name}, which is the \texttt{\#1} in the hook dispatcher's code \cmd{\bgroup}\meta{Hook}\texttt{\{\#1\}}\cmd{\egroup}:
-\begin{quote}\small
- \cmd{\renewcommand*}\meta{FirstHook}\texttt{[1]\{\dots}\cmd{\NameParser}\texttt{\dots\}}
-\end{quote}
+\section{Roman Names: Scholarly Work}
-With the \texttt{altformat} option or \cmd{\AltFormatActive} we can design a subsequent-use hook that deactivates formatting inside of it:
-\begin{quote}\small
- \cmd{\renewcommand*}\meta{SubsequentHook}\texttt{[1]\{\dots}\cmd{\AltOff}\cmd{\NameParser}\texttt{\dots\}}
-\end{quote}
+% Name variant macros need to be defined
+% uniquely for each name.
-If we used \cmd{\AltFormatActive*}, where the formatting macros are enabled, but deactivated, then we might want a hook that activates the macros:
-\begin{quote}\small
- \cmd{\renewcommand*}\meta{Hook}\texttt{[1]\{\dots}\cmd{\AltOn}\cmd{\NameParser}\texttt{\dots\}}
-\end{quote}
+\newcommand*\CSB
+{%
+ \ifXGens
+ \ifXAgno Scipio\else
+ Scipio Barbatus\fi
+ \else
+ \ifXCogn Cornelius\else
+ \ifXAgno Cornelius Scipio\else
+ Cornelius Scipio Barbatus%
+ \fi
+ \fi
+ \fi
+}
+
+\index{Roman names, scholar}
+\OScipio\ was born around 337 \textsc{bc} into the
+Scipiones branch of the Cornelii clan, one of the large
+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.
+\newif\ifHeadword
+\newif\ifAncientName
+
+% Sorting and tagging the names:
+
+% Adding name information:
+\NameAddInfo{Aristotle}{ (384--322 \textsc{bc})}
+\NameAddInfo[Charles]{\noexpand\textBF{Babbage}}{ (1791--1871)}
+\NameAddInfo{\noexpand\textUC{Kanade}, Takeo}{ (1945-- )}
+\NameAddInfo[Ada]{\noexpand\textIT{Lovelace}}
+ { (Augusta Ada King, Countess of Lovelace
+ [née Byron]; 1815--52)}
+% Redefining the formatting hooks:
\makeatletter
-\renewcommand*\NamesFormat[1]{%
- \RevertSNfalse\SpecialFNfalse\SpecialSNfalse#1%
- \unless\ifinner\marginpar{%
- \footnotesize\raggedleft%
- \@nameauth@FullNametrue%
- \@nameauth@FirstNamefalse%
- \@nameauth@EastFNfalse%
- \SpecialFNtrue\SpecialSNfalse%
- \NameParser}%
- \fi\global\RevertSNfalse}
-\renewcommand*\MainNameHook[1]{%
- \AltOff\SpecialFNfalse\SpecialSNtrue#1%
- \unless\ifinner
- \unless\ifRevertSN
- \marginpar{%
- \footnotesize\raggedleft%
- \@nameauth@FullNamefalse%
- \@nameauth@FirstNamefalse%
- \@nameauth@EastFNfalse%
- \SpecialFNfalse\SpecialSNfalse%
- \NameParser}%
+\renewcommand\NamesFormat[1]
+{%
+ \ifHeadword
+ \ifNameauthWestern
+ \@nameauth@RevThisCommatrue%
+ \bfseries \NameParser%
+ \normalfont%
+ \ifcsname\NameauthPattern!DB\endcsname
+ \expandafter\csname\NameauthPattern!DB\endcsname%
+ \fi
+ \else
+ \bgroup%
+ \bfseries \NameParser%
+ \unless\ifAncientName
+ \normalfont; W:\AltOff\space
+ \@nameauth@RevThistrue \NameParser%
+ \fi
+ \normalfont%
+ \ifcsname\NameauthPattern!DB\endcsname
+ \expandafter\csname\NameauthPattern!DB\endcsname%
+ \fi
+ \egroup%
\fi
- \fi\global\RevertSNfalse}
+ \else
+ \NameParser%
+ \fi
+ \global\Headwordfalse%
+ \global\AncientNamefalse%
+}
\makeatother
-We begin in the document preamble by defining a series of conditionals and macros whose default expansion produces the index entry, yet whose other expansions occur only in the formatting hooks. Then we create a name that is composed only of macros, using \cmd{\noexpand} with \cmd{\WM} and \cmd{\SHK}. We use \cmd{\PretagName} to sort the names. \cmd{\Revert} is used to print a last name without a margin note.
-\begin{quote}\small
-\StartNum
-\begin{verbatim}
+\renewcommand\MainNameHook{\AltOff}
+
+% Define related macros:
+\newcommand\Headword{\Headwordtrue\ForgetThis}
+\renewcommand{\RefArticle}[2]
+{%
+ \noindent\Headword #1 #2%
+ \medskip
+}
+\index{reference work}
+
+\RefArticle{\AncientNametrue\Name{Aristotle}}{was the first to offer
+a system of logic, most notably syllogistic logic, that would
+become the basis for discrete states and circuitry of
+digital computers. \Name{Aristotle}\dots}
+
+\RefArticle{\Name[Charles]{\noexpand\textBF{Babbage}}}{designed and
+built the Difference Engine and began work on the Analytical
+Engine. \Name[Charles]{\noexpand\textBF{Babbage}}\dots}
+
+\RefArticle{\Name{\noexpand\textUC{Kanade}, Takeo}}{is one of the
+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
+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.
\newif\ifSpecialFN
\newif\ifSpecialSN
\newif\ifRevertSN
-\newcommand*\WM{\ifSpecialFN Wm.\else William\fi}
-\newcommand*\SHK{\ifRevertSN \textSC{Shakespeare}\else
- \ifSpecialSN \noexpand\AltCaps{t}he Bard\else
- \textSC{Shakespeare}\fi\fi}
-\newcommand*\Revert{\RevertSNtrue}
-\begin{nameauth}
- \< Shak & \noexpand\WM & \noexpand\SHK & >
-\end{nameauth}
+% Name variant macros need to be defined
+% uniquely for each name.
-\PretagName[\noexpand\WM]{\noexpand\SHK}{Shakespeare, William}
-\PretagName[Robert]{\textSC{Burns}}{Burns, Robert}
-\end{verbatim}
-\end{quote}
+% For a long name, we want to use ``William'' in the text
+% and ``Wm.'' in the margin.
+
+\newcommand*\WM
+{%
+ \ifSpecialFN Wm.\else
+ William\fi
+}
-Below we define the two formatting hooks that structure the ways in which these macros can expand when printed in the text. \cmd{\NamesFormat} allows only the canonical name via \cmd{\RevertSNfalse}, \cmd{\SpecialFNfalse}, and \cmd{\SpecialSNfalse}. We print the canonical name in the body text. If allowed, we print a margin paragraph with an alternate full name using \cmd{\NameParser} and two flags. Both hooks set \cmd{\RevertSNfalse} so that \cmd{\Revert} works on a per-name basis. The subsequent-use hook disables formatting with \cmd{\AltOff}, but it allows variant forms.
+% The first surname use will be ``Shakespeare'', but ``the
+% Bard'' thereafter. We allow for alternate caps.
+% We can get ``Shakespeare'' thereafter by toggling a flag.
+
+\newcommand*\SHK
+{%
+ \ifRevertSN
+ \textSC{Shakespeare}\else
+ \ifSpecialSN
+ \noexpand\AltCaps{t}he Bard\else
+ \textSC{Shakespeare}%
+ \fi
+ \fi
+}
+
+% Here is how we toggle that flag.
+
+\newcommand*\Revert{\RevertSNtrue}
+
+% The ``first-use'' hook prints a name, then tries
+% to insert a margin note using a different name form
+% and the user-accessible parser. Finally it resets
+% the reversion flag, which is only effective in the
+% ``subsequent-use'' hook. Note how macros in the
+% name arguments take the role of what the internal
+% Boolean flags might otherwise handle.
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
\makeatletter
-\renewcommand*\NamesFormat[1]{%
- \RevertSNfalse\SpecialFNfalse\SpecialSNfalse#1%
- \unless\ifinner\marginpar{%
- \footnotesize\raggedleft%
- \@nameauth@FullNametrue%
- \@nameauth@FirstNamefalse%
- \@nameauth@EastFNfalse%
- \SpecialFNtrue\SpecialSNfalse%
- \NameParser}%
- \fi\global\RevertSNfalse}
-\renewcommand*\MainNameHook[1]{%
- \AltOff\SpecialFNfalse\SpecialSNtrue#1%
+\renewcommand*\NamesFormat[1]
+{%
+ \RevertSNfalse\SpecialFNfalse\SpecialSNfalse%
+ #1%
\unless\ifinner
- \unless\ifRevertSN
- \marginpar{%
+ \marginpar
+ {%
\footnotesize\raggedleft%
- \@nameauth@FullNamefalse%
- \@nameauth@FirstNamefalse%
- \@nameauth@EastFNfalse%
- \SpecialFNfalse\SpecialSNfalse%
- \NameParser}%
+ \SpecialFNtrue\SpecialSNfalse%
+ \NameParser%
+ }%
+ \fi
+ \global\RevertSNfalse%
+}
+
+\renewcommand*\MainNameHook[1]
+{%
+ \AltOff\SpecialFNfalse\SpecialSNtrue%
+ #1%
+ \unless\ifinner
+ \unless\ifRevertSN
+ \marginpar
+ {%
+ \footnotesize\raggedleft%
+ \SpecialFNfalse\SpecialSNfalse%
+ \NameParser%
+ }%
\fi
- \fi\global\RevertSNfalse}
+ \fi
+ \global\RevertSNfalse%
+}
\makeatother
-\end{verbatim}
-\smallskip
-\Shak\ \cmd{\Shak} is the national poet of England in much the same way that \Name[Robert]{\textSC{Burns}} \cmd{\Name[Robert]\{}\cmd{\textSC\{Burns\}\}} is that of Scotland. With the latter's rise of influence in the 1800s, \Revert\Shak\ \cmd{\Revert}\cmd{\Shak} became known as ``\Shak'' \cmd{\Shak}.
-\end{quote}
-\endgroup
+\index{special uses}
+\ForgetThis\Shak\ is the national poet of England
+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''.
-\begin{center}\bfseries Rolling Your Own: Advanced\end{center}
-\phantomsection
-\begingroup
-Here is how formatting hooks were designed before version 3.0. Updating older hooks may be helpful, but is not necessary. We do not use the internal package macros. We only use \cmd{\NameParser} in the hooks to produce output. We still recommend using \cmd{\AltFormatActive} to mitigate errors. In the preamble, three flags replace package internals.\footnote{The internal flag \texttt{\textbackslash @nameauth@DoAlt} activates formatting, \cmd{\CapThis} sets \texttt{\textbackslash @nameauth@DoCaps} true, and \texttt{\textbackslash @nameauth@InHook} is set by the hook dispatcher.}
-Setting \texttt{\textbackslash Fboxtrue} is equivalent to using \cmd{\AltFormatActive}:
-\begin{quote}\small
-\StartNum
-\begin{verbatim}
-\newif\ifFbox% Replaces \@nameauth@DoAlt
-\newif\ifFirstCap% Replaces \@nameauth@DoCaps
-\newif\ifInHook% Replaces \@nameauth@InHook
-\Fboxtrue
-\end{verbatim}
-\end{quote}
+\section{Customization, Easy}
-\newcommand*\Fbox[1]{\ifFbox\protect\fbox{#1}\else#1\fi}
-Also in the preamble, the formatting macro is like what we have seen, except it refers to \texttt{\textbackslash ifFbox}:\footnote{We define \cmd{\Fbox} locally because it has multiple definitions, but are very careful where we use names with it.}
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
+\makeatletter
\newcommand*\Fbox[1]{%
- \ifFbox\protect\fbox{#1}\else#1\fi
+ \if@nameauth@DoAlt\protect\fbox{#1}\else#1\fi
}
-\end{verbatim}
-\end{quote}
+\makeatother
-\renewcommand*\AltCaps[1]{%
- \ifInHook
- \ifFirstCap\MakeUppercase{#1}\else#1\fi
- \else
- #1%
- \fi
+\renewcommand*\NamesFormat{}
+\renewcommand*\FrontNamesFormat{}
+\renewcommand*\MainNameHook{\AltOff}
+\renewcommand*\FrontNameHook{\AltOff}
+
+\index{customization, easy}
+\deSmet\ was a Jesuit missionary who arrived in North
+America in 1821 at the age of twenty, after a year of seminary
+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
+
+% Alternate formatting macro definition
+\renewcommand*\Fbox[1]{%
+ \ifFbox\protect\fbox{#1}\else#1\fi
}
-Our new \cmd{\AltCaps} works like the built-in version, except it does not use the internal macros and flags:
- \begin{quote}\small
- \ContinueNum
- \begin{verbatim}
+
+% Redefinition of \AltCaps and \CapThis
\renewcommand*\AltCaps[1]{%
\ifInHook
\ifFirstCap\MakeUppercase{#1}\else#1\fi
@@ -1199,303 +819,496 @@ Our new \cmd{\AltCaps} works like the built-in version, except it does not use t
#1%
\fi
}
-\end{verbatim}
-\end{quote}
-
\renewcommand*\CapThis{\FirstCaptrue}
+
\renewcommand*\NamesFormat[1]
{\InHooktrue\NameParser\global\FirstCapfalse}
+
\renewcommand*\MainNameHook[1]
{\Fboxfalse\InHooktrue\NameParser\global\FirstCapfalse}
+
\let\FrontNamesFormat\Namesformat
\let\FrontNameHook\MainNameHook
-Here we redefine \cmd{\CapThis} to use our flag instead of the internal flag:
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
+
+\index{customization, complicated}
+\ForgetThis\deSmet\ was a Jesuit missionary who arrived in North
+America in 1821 at the age of twenty, after a year of seminary
+education. \CapThis\deSmet\ was ordained in 1827 and worked
+among American Indian nations after 1837. We can show the forms
+\LdeSmet\ and \SdeSmet.
+
+\newif\ifCaps % Replaces \if@nameauth@DoAlt
+\Capstrue % Replaces \AltFormatActive
+
+% Alternate formatting macro definition
+\renewcommand*\textSC[1]{\ifCaps\textsc{#1}\else#1\fi}
+
+% Redefinition of \AltCaps and \CapThis
+\renewcommand*\AltCaps[1]{%
+ \ifInHook
+ \ifFirstCap\MakeUppercase{#1}\else#1\fi
+ \else
+ #1%
+ \fi
+}
\renewcommand*\CapThis{\FirstCaptrue}
-\end{verbatim}
-\end{quote}
-We have to reproduce the logic and macros that the package would have provided. That means defining everything, including \cmd{\NamesFormat}, from scratch:
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
\renewcommand*\NamesFormat[1]
- {\InHooktrue\NameParser\global\FirstCapfalse}
-\end{verbatim}
-\end{quote}
+ {\InHooktrue#1\global\FirstCapfalse}
-Changes to \texttt{\textbackslash ifInHook} (default false) and \texttt{\textbackslash ifFbox} (default true) are local to the scope in which the hook macros are called. \texttt{\textbackslash ifFirstCap} must be set globally. Below we reproduce the logic of \cmd{\AltOff} before \cmd{\NameParser}:
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
\renewcommand*\MainNameHook[1]
-{\Fboxfalse\InHooktrue\NameParser\global\FirstCapfalse}
-\end{verbatim}
-\end{quote}
+ {\Capsfalse\InHooktrue#1\global\FirstCapfalse}
-We avoid spurious index entries in the front matter by using the same hooks.
-\begin{quote}\small
-\ContinueNum
-\begin{verbatim}
\let\FrontNamesFormat\Namesformat
\let\FrontNameHook\MainNameHook
-\end{verbatim}
-\end{quote}
-
-Because we use \cmd{\noexpand}, our ``old-style'' macros will index the following names under the same entry as the ``new-style'' macros.
-\begin{center}\small
-\begin{tabular}{rll}\toprule
- First & \cmd{\deSmet} & \ForgetThis\deSmet\\
- \rowcolor{grey}Next & \cmd{\deSmet} & \deSmet\\
- Long & \cmd{\LdeSmet} & \LdeSmet\\
- \rowcolor{grey}Short & \cmd{\SdeSmet} & \SdeSmet\\
- & \cmd{\CapThis}\cmd{\deSmet} & \CapThis\deSmet\\
- \rowcolor{grey} & \cmd{\ForceName}\cmd{\CapThis}\cmd{\deSmet} & \ForceName\CapThis\deSmet\\\bottomrule
-\end{tabular}
-\end{center}
-
-With \cmd{\CapThis}\cmd{\deSmet}: \CapThis\deSmet. \cmd{\ForceName}\cmd{\CapThis}\cmd{\deSmet}: \ForceName\CapThis\deSmet.\medskip
-
-We can reuse new-style names with old-style macros, shown below in abbreviated fashion. We keep the flags \texttt{\textbackslash ifFirstCap} and \texttt{\textbackslash ifInHook}. We also keep the redefined \cmd{\AltCaps}, \cmd{\CapThis}, and \cmd{\NamesFormat}. We then add:
-\Capstrue
-\renewcommand*\textSC[1]{%
- \ifCaps\textsc{#1}\else#1\fi
-}
-\renewcommand*\MainNameHook[1]
-{%
- \Capsfalse\InHooktrue\NameParser%
- \global\FirstCapfalse%
-}
-\let\FrontNameHook\MainNameHook
-\begin{quote}\small
-\StartNum
-\begin{verbatim}
-\newif\ifCaps
-\Capstrue
-\renewcommand*\textSC[1]{%
- \ifCaps\textsc{#1}\else#1\fi
-}
-\renewcommand*\MainNameHook[1]
-{%
- \Capsfalse\InHooktrue\NameParser%
- \global\FirstCapfalse%
-}
-\let\FrontNameHook\MainNameHook
-\end{verbatim}
-\end{quote}
-The names below have the same declarations and index entries as they did above. They look and work the same but use different back-end macros:
-\begin{center}
-\small\noindent\begin{tabular}{llll}\toprule
- First & Next & Long & Short \\\midrule
- \ForgetThis\Adams & \Adams & \LAdams & \SAdams\\
- \rowcolor{grey}\ForgetThis\SDJR & \SDJR & \LSDJR & \SSDJR\\
- \ForgetThis\HAR & \HAR & \LHAR & \SHAR\\
- \rowcolor{grey}\ForgetThis\Mencius & \Mencius & \LMencius & \SMencius\\\bottomrule
-\end{tabular}
-\end{center}
-
-\begin{itemize}\small
- \item Punctuation detection works: \ForceName\LSDJR. Also \LSDJR. Then \ForceName\SDJR. Now \SDJR. (We used \cmd{\ForceName} for formatting.)
- \item \cmd{\ForceName}\cmd{\DropAffix}\cmd{\LSDJR} gives \ForceName\DropAffix\LSDJR. Just \cmd{\DropAffix}\cmd{\LSDJR} gives \DropAffix\LSDJR.
- \item \cmd{\RevComma}\cmd{\LAdams} yields \RevComma\LAdams. All the reversing macros work.
- \item \cmd{\ForceName}\cmd{\ForceFN}\cmd{\SHAR} produces \ForceName\ForceFN\SHAR. \cmd{\ForceFN}\cmd{\SHAR} produces \ForceFN\SHAR. If we add \cmd{\CapThis} we get \CapThis\ForceName\ForceFN\SHAR\ and \CapThis\ForceFN\SHAR.
-\end{itemize}
-
-We now close the scope of this current example and resume normal formatting.
-\endgroup
-\AltFormatInactive
-\newpage
+\ForgetThis\Luth\ was a leading figure in the Protestant
+Reformation. \Luth\ believed that one is declared
+righteous in a forensic sense by divine grace through faith
+created by the Holy Spirit via the Gospel and the Sacraments.
-\section{Customization}
+\ForgetThis\Cath\ was not only Queen of France in her own right,
+but she also guided the reigns of her three sons.
+\CapThis\LCath[\noexpand\AltCaps{d}e']
+was blamed for the St.\ Bartholomew's Day massacre that saw the
+murder of thousands of Huguenots.
-Assuming that redefining hooks and adding control sequences is insufficient, one could redesign the core name macros partially or wholly, then hook those modifications into the \textsf{nameauth} package without needing to patch the style file itself.
+\renewcommand*\NamesFormat{}
+\newcommand*\FrontNamesFormat{}
+\renewcommand*\MainNameHook{}
+\renewcommand*\FrontNameHook{}
-All these macros are set by default to \cmd{\@nameauth@Name}, the internal name parser. \cmd{\Name}, or an unmodified shorthand, calls \cmd{\NameauthName}. \cmd{\Name*}, or an L-shorthand, sets \cmd{\@nameauth@FullNametrue}, then calls \cmd{\NameauthLName}. \cmd{\FName}, or an S-shorthand, sets \cmd{\@nameauth@FirstNametrue}, then calls \cmd{\NameauthFName}. One should not modify \cmd{\Name} and \cmd{\FName} directly.
+\section{Customization, Complete}
-We use features of \textsf{xargs}. Below we introduce formatting that is additional to, inter-operative with, yet distinct from the formatting hooks:
-\begin{quote}\small
-\StartNum
-\begin{verbatim}
\makeatletter
+
+% Change the general-case name macro to show
+% a name in a framed, colored box.
+
\newcommandx*\MyName[3][1=\@empty, 3=\@empty]{%
\global\@nameauth@toksa\expandafter{#1}%
\global\@nameauth@toksb\expandafter{#2}%
\global\@nameauth@toksc\expandafter{#3}%
- \hbox to 4em{Normal: \hfill}%
\fcolorbox{black}{gray!25!white}{\@nameauth@Name[#1]{#2}[#3]}%
}
+
+% Likewise change the macro for when names are forced long.
\newcommandx*\MyLName[3][1=\@empty, 3=\@empty]{%
\global\@nameauth@toksa\expandafter{#1}%
\global\@nameauth@toksb\expandafter{#2}%
\global\@nameauth@toksc\expandafter{#3}%
- \hbox to 4em{Long: \hfill}%
\fcolorbox{black}{green!25!white}{\@nameauth@Name[#1]{#2}[#3]}%
}
+
+% Likewise change the macro when personal names are desired.
\newcommandx*\MyFName[3][1=\@empty, 3=\@empty]{%
\global\@nameauth@toksa\expandafter{#1}%
\global\@nameauth@toksb\expandafter{#2}%
\global\@nameauth@toksc\expandafter{#3}%
- \hbox to 4em{Short: \hfill}%
\fcolorbox{black}{yellow!25!white}{\@nameauth@Name[#1]{#2}[#3]}%
}
\makeatother
-\renewcommand*\NamesFormat[1]
- {\hbox to 9em{\hfil\scshape#1\hfil}}
-\renewcommand*\MainNameHook[1]{\hbox to 9em{\hfil#1\hfil}}
+
+% 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}
-\end{verbatim}
+
+\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. We also produce \Name*[Adolf]{Harnack} and
+\FName[Adolf]{Harnack}.
+\AltFormatInactive
\makeatletter
-\newcommandx*\MyName[3][1=\@empty, 3=\@empty]{%
- \global\@nameauth@toksa\expandafter{#1}%
- \global\@nameauth@toksb\expandafter{#2}%
- \global\@nameauth@toksc\expandafter{#3}%
- \hbox to 4em{Normal: \hfill}%
- \fcolorbox{black}{gray!25!white}{\@nameauth@Name[#1]{#2}[#3]}%
-}
-\newcommandx*\MyLName[3][1=\@empty, 3=\@empty]{%
- \global\@nameauth@toksa\expandafter{#1}%
- \global\@nameauth@toksb\expandafter{#2}%
- \global\@nameauth@toksc\expandafter{#3}%
- \hbox to 4em{Long: \hfill}%
- \fcolorbox{black}{green!25!white}{\@nameauth@Name[#1]{#2}[#3]}%
-}
-\newcommandx*\MyFName[3][1=\@empty, 3=\@empty]{%
- \global\@nameauth@toksa\expandafter{#1}%
- \global\@nameauth@toksb\expandafter{#2}%
- \global\@nameauth@toksc\expandafter{#3}%
- \hbox to 4em{Short: \hfill}%
- \fcolorbox{black}{yellow!25!white}{\@nameauth@Name[#1]{#2}[#3]}%
-}
+\renewcommand*\NameauthName{\@nameauth@Name}
+\renewcommand*\NameauthLName{\@nameauth@Name}
+\renewcommand*\NameauthFName{\@nameauth@Name}
\makeatother
-\renewcommand*\NamesFormat[1]{\hbox to 9em{\hfil\scshape#1\hfil}}
-\renewcommand*\MainNameHook[1]{\hbox to 9em{\hfil#1\hfil}}
-\renewcommand*\NameauthName{\MyName}%
-\renewcommand*\NameauthLName{\MyLName}%
-\renewcommand*\NameauthFName{\MyFName}
-\smallskip
-\cmd{\ForgetName[Adolf]\{Harnack\}}\ForgetName[Adolf]{Harnack}\\[1ex]
-\begin{tabular}{@{}rl}
- \cmd{\Harnack} & \Harnack\\
- \cmd{\LHarnack[Adolf von]} & \LHarnack[Adolf von]\\
- \cmd{\Harnack} & \Harnack\\
- \cmd{\SHarnack} & \SHarnack\\
-\end{tabular}
-\end{quote}
-\newpage
+\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 \texttt{\textbackslash ifDoTikZ} to avoid crashing some \texttt{dvi} viewers in a \texttt{dvi}-only workflow.
+We use \texttt{american} for the language; one should use one's own.
+We use Latin Modern. We could load \textsf{tikz} using
+\texttt{\textbackslash ifDoTikZ} to avoid crashing some \texttt{dvi}
+viewers in a \texttt{dvi}-only workflow.
+\index{\protect\LaTeX\ engines}
\begin{quote}\small
-\StartNum
-\begin{verbatim}
-\IfFileExists{iftex.sty}{\usepackage{iftex}}{}
-\unless\ifdefined\RequireTUTeX
- \usepackage{ifxetex}
- \usepackage{ifluatex}
- \usepackage{ifpdf}
-\fi
-
-\newif\ifDoTikZ % If dvi-only workflow
-\ifxetex
- \usepackage{fontspec}
- \usepackage{polyglossia}
- \setdefaultlanguage{american} % Use own language
- \usepackage{tikz}
- \DoTikZtrue % If dvi-only workflow
-\else
- \ifluatex
- \ifpdf
- \usepackage{fontspec}
- \usepackage{polyglossia}
- \setdefaultlanguage{american} % Use own language
- \usepackage{tikz}
- \DoTikZtrue % If dvi-only workflow
+\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[utf8]{inputenc}}
\usepackage[TS1,T1]{fontenc}
- \usepackage[american]{babel} % Use own language
+ \usepackage[american]{babel} % Use own language
\usepackage{lmodern}
- % Perhaps add \usepackage{tikz}
- \fi
- \else
- \IfFileExists{utf8-2018.def}{}
- {\usepackage[utf8]{inputenc}}
- \usepackage[TS1,T1]{fontenc}
- \usepackage[american]{babel} % Use own language
- \usepackage{lmodern}
- \ifpdf
- \usepackage{tikz} % If dvi-only workflow
- \DoTikZtrue % If dvi-only workflow
+ \ifpdf
+ \usepackage{tikz}
+ \DoTikZtrue % PDF: yes TikZ okay.
+ \fi
\fi
\fi
-\fi
-\end{verbatim}
+\end{Verbatim}
\end{quote}
-\newpage
-In the body text we can use something like the test below for:
+\newpage
-\begin{center}\fbox{\ifxetex doing \texttt{pdf} things\else \ifpdf doing \texttt{pdf} things\else doing \texttt{dvi} things\fi\fi}\end{center}
+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
+ doing \texttt{dvi} things\fi
+ \fi}
\begin{quote}\small
-\begin{verbatim}
-\ifxetex
- doing \texttt{pdf} things
-\else
- \ifpdf
+\begin{Verbatim}
+ \ifxetex
doing \texttt{pdf} things
\else
- doing \texttt{dvi} things
+ \ifpdf
+ doing \texttt{pdf} things
+ \else
+ doing \texttt{dvi} things
+ \fi
\fi
-\fi\end{verbatim}
+\end{Verbatim}
\end{quote}
-The following equivalent conditional statements can help a macro or just the body text to work under multiple engines:
+The following equivalent conditional statements can help a macro
+or just the body text to work under multiple engines:
\begin{quote}\small
-\StartNum
-\begin{verbatim}
-\ifxetex xelatex%
-\else
- \ifluatex
- \ifpdf lualatex (pdf)%
- \else lualatex (dvi)%
- \fi
+\begin{Verbatim}
+ \ifxetex xelatex%
\else
- \ifpdf pdflatex%
- \else latex (dvi)%
+ \ifluatex
+ \ifpdf lualatex (pdf)%
+ \else lualatex (dvi)%
+ \fi
+ \else
+ \ifpdf pdflatex%
+ \else latex (dvi)%
+ \fi
\fi
\fi
-\fi
-\end{verbatim}
-
-\StartNum
-\begin{verbatim}
-\unless\ifxetex
- \unless\ifluatex
- \ifpdf pdflatex%
- \else latex (dvi)%
- \fi
- \else
- \ifpdf lualatex (pdf)%
- \else lualatex (dvi)%
+\end{Verbatim}
+
+\begin{Verbatim}
+ \unless\ifxetex
+ \unless\ifluatex
+ \ifpdf pdflatex%
+ \else latex (dvi)%
+ \fi
+ \else
+ \ifpdf lualatex (pdf)%
+ \else lualatex (dvi)%
+ \fi
\fi
+ \else xelatex%
\fi
-\else xelatex%
-\fi
-\end{verbatim}
+\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
+
\newpage
+\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
+
+\newpage
+
+\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
+
\phantomsection
\addcontentsline{toc}{section}{Index of Persons}
\printindex[per]
@@ -1506,3 +1319,4 @@ The following equivalent conditional statements can help a macro or just the bod
\printindex
\end{document}
+
diff --git a/Master/texmf-dist/doc/latex/nameauth/nameauth.pdf b/Master/texmf-dist/doc/latex/nameauth/nameauth.pdf
index 2f290222c77..6290eb1dc33 100644
--- a/Master/texmf-dist/doc/latex/nameauth/nameauth.pdf
+++ b/Master/texmf-dist/doc/latex/nameauth/nameauth.pdf
Binary files differ