Answer : Bubble sorter, which I adapt from my modification to David's answer to my question at Trying to eliminate stack overflow during recursion. The \sortlist macro is the bubble sorter (from the referenced answer, but with and rather than , as the list seperator). However, it leaves the result in the form of Last Name, First and ... . I had to add the \rework macro to make it First Last Name and employ \whichsep to choose whether a , or and should be inserted between names, depending on their placement in the list. No packages required! \documentclass[10pt]{article} \newcommand\alphabubblesort[1]{\def\sortedlist{}% \expandafter\sortlist#1 and \cr and \relax \expandafter\rework\sortedlist and \relax} \def\sortlist#1and #2and #3\relax{% \let\next\relax \ifx\cr#2\relax% \edef\sortedlist{\sortedlist#1}% \else \picknext#1!and #2!\relax% \if F\flipflop% \edef\sortedlist{\sortedlist#1and }% \def\next{\sortlist#2and #3\relax}% \else