In recent versions of TiddlyWiki, you can do this with the sortsub
operator, which sorts based on the results of applying a filter expression to the inputs. Note that when you use this operator (or any other operator that takes a subfilter), you have to define the subfilter using a macro, or there's no way for TiddlyWiki to tell which square brackets are part of the main filter and which are part of the subfilter.
Here's a minimal working version:
\define myfilt() [split[ ]last[]]
<$list filter="[tag[author]sortsub<myfilt>]">
...
</$list>
To get the display to show up as "Lastname, Firstname", as in your example, rather than just showing the title of the tiddler as is:
\define myfilt() [split[ ]last[]]
<$list filter="[tag[author]sortsub<myfilt>]">
<$set name=formattedName value={{{ [all[current]split[ ]last[]addsuffix[, ]] [all[current]split[ ]butlast[]] +[join[]] }}}>
<$link to=<<currentTiddler>>><<formattedName>></$link><br>
</$set>
</$list>
We calculate the new format using a filter in {{{ triple curly braces }}}
and assign it to a variable (note the use of butlast[]
rather than first[]
so that if someone has more than two names, the middle ones go on the end rather than disappearing). Then we create a link whose text is that new formatted version, and whose target is the original tiddler name.