如何计算文章中作者名字的首字母,而不是参考书目中的首字母

如何计算文章中作者名字的首字母,而不是参考书目中的首字母

我正在为期刊编写一个新课程。

要介绍作者和所属机构的信息,作者只需将其插入到文章中即可

\author[1]{Name1 Surname1}
\author[2]{Name2 Surname2}
\author[2]{Name3 Surname3}
\author[3]{Name4 Surname4}
\author[4]{Name5 Surname5}

\affiliation[1]{Affiliation1}
\affiliation[2]{Affiliation2}
\affiliation[3]{Affiliation3}
\affiliation[4]{Affiliation4}

其中需要数字来将每个作者与其所属机构进行匹配。

现在课程已经基本准备好了,并且一切运行正常。

根据这些以及作者在其 tex 文件中填写的其他字段,文章的前言中将出现如下句子:

引用:名字1姓氏1,名字2姓氏2,名字3姓氏3...,标题,期刊名称,卷......

今天我被要求做一个“小”改动,就是把这个句子修改成这样;

引用:N1. 姓氏 1、N2. 姓氏 2、N3. 姓氏 3...、标题、期刊名称、卷......

也就是说,只排版名字的首字母,而在作者行中应保留全名。

现在,bibtex 和 biblatex 会自动从 bib 文件中计算首字母。但是,该文本应该根据 tex 文件中包含的信息“动态”地放入最终 pdf 的前言中,而无需 bibtex/biblatex 的任何干预。

因此问题是:给定 \author[]{} 命令的参数,其中包含特定作者的姓名,是否可以提取名字的首字母?而且,显然,对于双重/多个名字具有鲁棒性?

实际上,复制 bibtex 所做的操作,但是直接在我的 latex 类中?

PS:另一个选择是向作者提供第二个命令,比如说 \authorInitials{} 并要求作者填写它。

谢谢

Federico 有没有办法从作者名字中提取名字的首字母

答案1

看一眼这个答案. 改编的MWE:

\documentclass[]{article}

\def\justfirst#1#2 #3\relax{#1.\if\relax#3\else{}~\justfirst#3\relax\fi}
\def\firstinit#1{\justfirst#1 \relax\relax}

\newcommand{\abbrevname}[2]{\firstinit{#1}~{#2}}

\begin{document}
    My hero is \abbrevname{John Paul}{Jones}.
\end{document}

当然,您应该存储作者姓名,并分别向 提供名字和姓氏\abbrevname。原则上,您可以计算单词数,并缩写除最后一个单词之外的所有内容,但这需要额外检查助词(de、de la、von 等)、连字符和许多其他情况。因此,最好在宏中分别获取名字和姓氏,\author以避免名称超过两个单词时产生歧义。

名称验证包可能对定义\author宏和存储名称很有用。它可以处理各种情况(请参阅这个答案(查看详细列表)。

相关内容