我正在尝试编写简历宏。我有名字、中间名和姓氏,我想将它们排列为“名中间名姓氏”,如果中间名未知,则排列为“名姓氏”
我目前拥有的代码如下(有效):
\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}
因为如果您不定义中间名,则默认定义会占用多余的空间,但如果您将其定义为名称,则以下内容\
将会产生空格。