我正在为期刊编写一个新课程。
要介绍作者和所属机构的信息,作者只需将其插入到文章中即可
\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
以避免名称超过两个单词时产生歧义。