是否有一个包或命令可以自动缩写姓名(类似于 bibtex 的功能,但不专门用于作者姓名或引文)?目标是有一个命令可以生成正确格式的索引条目,例如“Einstein, A.”和文本中的名称,例如“Albert Einstein”。理想情况下,该命令只接受一个参数(全名)。对于有多个名字的人,该命令也应该有效。
编辑
我有一份包含许多姓名的长文档。我希望它们以统一的方式出现,并为它们创建索引。目前“A. Einstein”和“Albert Einstein”都可以出现。在索引中,这两个版本当然应该合并为一个条目。我可以编写一个编辑文本文件的脚本,但乳胶解决方案可以足够灵活,以便稍后更改格式,而不会丢失全名中包含的信息。
\newcommand{\myname}[1]{%
\index{\shortname{#1}}%
\longname{#1}%
}%
\myname{Albert Einstein}
应该打印“Albert Einstein”并在索引中添加元素“Einstein,A.”
答案1
这名称验证软件包正是针对这些和类似需求而设计的。2.1 版是我所说的“功能齐全”和“容错”的版本。如果您的发行版尚未升级到 2.1,我强烈建议您在本地 texmf 树中手动安装此版本。
该软件包有一个“主”界面和一个“简化”界面,具体取决于您想要如何使用它。整个想法是制作一个可塑性强并适合不同风格和工作流程的东西。此外,最新版本仍然与早期版本向后兼容。
以下是其功能的简要概述:
跟踪名称的首次使用和后续使用:
\Name[Albert]{Einstein}
在名称第一次出现时显示“Albert Einstein”,之后显示“Einstein”。处理名称的变体:
a.
\Name*[Albert]{Einstein}
无论发生什么情况,总是会产生“Albert Einstein”。b.
\Name[Albert]{Einstein}[A.]
第一次出现该名字时显示“A. Einstein”,之后显示“Einstein”。警告:其识别控制序列与 相同
\Name[Albert]{Einstein}
,两者都将创建相同的索引条目“Einstein, Albert”。如果\Name[Albert]{Einstein}
先出现,\Name[Albert]{Einstein}[A.]
则仅在文本中打印“Einstein”,而\Name*[Albert]{Einstein}[A.]
始终打印“A. Einstein”。c.
\FName[Albert]{Einstein}
如果这是对 Einstein 的后续引用,则打印“Albert”,再次共享相同的索引条目“Einstein, Albert”。正确对索引中的名称进行排序。即使没有在 中创建样式
makeindex
或在 中整理序列,您也可以在和中xindy
“预先标记”名称以获得所需的内容。例如,将在索引中将“æsc”排序为“ae”。这也有助于对罗马数字名称后缀进行排序。makeindex
texindy
\PretagName{Æthelred, II}{Aethelred 2}
此外,一旦标记,名称总是自动包含该标记!
通过 自动将信息标签或特色添加到索引条目中
\TagName
。处理看- 索引中的名称引用:
\AKA{Æthelred, II}{Æthelred}[the Unready]
在文本中放入“埃塞尔雷德,未准备好的人”和“埃塞尔雷德,未准备好的人看索引中的“埃塞尔雷德二世”。妥善处理罗马化的东方名字、中世纪和古代名字、皇室名字以及带有世代后缀的西方名字。
处理各种“特殊情况”,包括
a. 粒子:de、de la、d'、von、van、ten、Le、La 和 L' 等。
b. 连字符需求
c. NFSS、
xelatex
和“lualatex”下的 Unicode 重音符号。首次使用(或后续使用)的名称格式。
其他与名称有关的杂项(手册中说明了一切)。
如果时间允许,我希望更新我在 YouTube 上非常旧的教程视频。