DTLinitials 可以访问 \fnames 吗?

DTLinitials 可以访问 \fnames 吗?

问题已更新平均能量损失

使用datatool将 CSV 文件读入 LaTeX,我能够使用 获取名字{\fnames=fnames},然后使用 打印\fnames

不过,有时我想显示首字母而不是名字。

正如手册所说,如果我写下\DTLinitials{Mary}给出的结果M.,我尝试打印\DTLinitials{\fnames}而不是\fnames但从 CSV 文件读取时不会产生首字母。

请问我该如何将 的值传递\fnames\DTLinitials?这真的可行吗?

我将非常感激您的建议或帮助。谢谢。

这里是 MWE、文件的内容folks.csv以及我尝试使用时出现的错误消息\DTLinitials{\fnames}

\documentclass{scrbook}
\usepackage[english]{babel}
\usepackage{datatool}

\DTLloaddb{members}{folks.csv}

\begin{document}
\mainmatter

\pagestyle{headings}


\DTLforeach{members}
{\fnames=fnames, \surname=surname}
{
\fnames\
\surname\

}

\end{document}

内容folks.csv

fnames,surname
Adam,Adamant
Diana,Duck
Flora,Flintstone
Walter,Mitty
Sally,Wallace

当第 16 行\fnames\被替换为\DTLinitials{\fnames}以下错误时,会产生:

错误:段落在 \dtl@initialsnext 完成之前结束。

--- TeX 说 --- \par l.19 }

答案1

从我的回答到您的交叉发布LaTeX 论坛

\fnames在应用之前先展开\DTLinitials。这可以通过使用 来实现\expandafter,它会暂时跳过下一个控制序列:

\expandafter\DTLinitials\expandafter{\fnames}

输出

相关内容