Du musst
in
ändern, damit das \temp bei der \ifthenelse Abfrage auch jedesmal richtig definiert ist.
Etwas kürzer wäre übrigens folgende Variante:
Code:
\documentclass{article}
\makeatletter
\def\@authors{}
\renewcommand*\author[1]{\g@addto@macro\@authors{#1,}}
\newcommand*\PrintNames{%
\@for\next:=\@authors\do{%
\expandafter\if\expandafter\relax\expandafter\detokenize\expandafter{\next}\relax
\else
Name:~\next\par
\fi}}
\makeatother
\begin{document}
\author{Alice}\author{Bob}\author{}
\PrintNames
\end{document}
oder mit expl3:
Code:
\documentclass{article}
\usepackage{expl3,xparse}
\ExplSyntaxOn
\seq_new:N \l_my_authors_seq
\RenewDocumentCommand \author { m }
{\seq_put_right:Nn \l_my_authors_seq { #1 } }
\NewDocumentCommand \PrintNames {}
{
\seq_map_inline:Nn \l_my_authors_seq
{ \tl_if_blank:nF { ##1 } { Name:~##1\par } }
}
\ExplSyntaxOff
\begin{document}
\author{Alice}\author{Bob}\author{}
\PrintNames
\end{document}
Grüße
Lesezeichen