自动获取姓名首字母

自动获取姓名首字母

这听起来像是一些基本的东西,但我却无法找到解决方案,无论是打包的还是本地的。

我手头上有 2 到 4 个名字的人的文件(典型的丹麦名字可能是 Søren Jens Sørensen Hjortshøj)。

有人能建议一个命令来提取每个单词的首字母吗?我知道 xstring 包可以提取第一个字母。问题在于循环单词,因为我事先不知道数字。

因此命令 \initials 的作用如下:

\NewDocumentCommand{\initials}{m} {
Some code
}
...
\ingenior{Søren Jens Sørensen Hjortshøj}

....

\initials{\ingenior} is SJSH.

答案1

这是我的答案的修改版本https://tex.stackexchange.com/a/705530/。其思想是创建一个递归函数,打印第一个字符,在第一个空格处拆分字符串,如果其余部分不为空,则在其余部分调用自身。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xstring}

\NewDocumentCommand{\initials}{m}{%
    \StrLeft{#1}{1}%           % print first character
    \StrBehind{#1}{ }[\rest]%  % copy everything after first space into \rest
    \IfStrEq{\rest}{}{}{%      % if rest is empty (first {}) do nothing (second {}),
                               % which will stop the recursive loop.
    \initials{\rest}%          % else: call the function again on the rest
    }%
}

\def\ingenior{Søren Jens Sørensen Hjortshøj}

\begin{document}

The initials of \ingenior\ are \initials{\ingenior}.

\end{document}

结果:

在此处输入图片描述

相关内容