将作者姓名在文本中第一次出现时设置为小写

将作者姓名在文本中第一次出现时设置为小写

我想在作者姓名第一次出现在文本中时将其设置为小写字母。

\documentclass{article}
\usepackage[T1]{fontenc}
\newcommand{\authorname}{?}

\begin{document}
When the name \authorname{Newton} appears in the text for the first time,
it should be set in small caps. Should the name \authorname{Newton} appear
again, it should look like normal text.
\end{document}

当文本中第一次出现 NEWTON 这个名字时,应将其设置为小写。如果再次出现 Newton 这个名字,它应该看起来像普通文本。

有什么想法我可以实现这种行为吗?

答案1

\documentclass{article}
\usepackage[T1]{fontenc}
\makeatletter
\newcommand\authorname[1]{\if\relax\@nameuse{#1}\textsc{#1}%
  \@namedef{#1}{#1}\else\@nameuse{#1}\fi}
\makeatother

\begin{document}
When the name \authorname{Newton} appears in the text for the first time,
it should be set in small caps. Should the name \authorname{Newton} appear
again, it should look like normal text. \authorname{Hilbert} and 
again \authorname{Hilbert}.
\end{document}

在此处输入图片描述

答案2

你可以为每一个作者定义一个命令,例如,

\newcommand{\HarrySmith}{%
  \textsc{Harry Smith}%
  \renewcommand{\HarrySmith}{\textnormal{Harry Smith}}%
  }

一旦使用过一次,它就会简单地替换小型大写版本。

答案3

CTAN 上有一个包可以满足您的要求(甚至更多)。请查看名称验证由 Charles P. Schaum 包装。

此软件包的一大优点是,您可以移动文本,而不必不断更改名称的格式,以防移动意味着该位置不再是名称出现的第一个位置。软件包将自动将格式更改为您第二次配置的格式。并且反之亦然。您还可以进行配置,例如第一次写出全名,第二次只写姓氏等等。

相关内容