名称排列宏

名称排列宏

我正在尝试编写简历宏。我有名字、中间名和姓氏,我想将它们排列为“名中间名姓氏”,如果中间名未知,则排列为“名姓氏”

我目前拥有的代码如下(有效):

\def\@normalname{
 \@ifundefined{@middlename}
 {
  \@firstname\ \@lastname
 }{
 \@firstname\ \@middlename\ \@lastname
}}

还有一个较短的版本,没有

\def\@normalname{
 \@firstname\
 \@ifundefined{@middlename}{}{\@middlename\ }
 \@lastname
}

在第二种情况下代码会失败的原因是什么?

(如果有帮助的话使用 pdfLatex)

答案1

正如 @Gonzalo 所说,如果你的问题是多余的空格,那么

\def\@normalname{%
 \@firstname\ %(not strictly necessary)
 \@ifundefined{@middlename}{}{\@middlename\ }%
 \@lastname
}

就是你所需要的(其他版本中也有多余的空格)。较短的版本是

\let\@middlename\@gobble
\def\@normalname{\@firstname\ \@middlename\  \@lastname}

因为如果您不定义中间名,则默认定义会占用多余的空间,但如果您将其定义为名称,则以下内容\将会产生空格。

相关内容