这听起来像是一些基本的东西,但我却无法找到解决方案,无论是打包的还是本地的。
我手头上有 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}
结果: