Why is there no whitespace between the punctuator `$` and the identifier after transforming by the macro?

We have been through this many times. It's a well-established principle. See eg. here. It's the whole raison d'être of the separation between Debug and Display.