A cursory look suggests that it could except for two concerns: (1) StorageForShortName uses a fixed-size buffer, so the text might be cut off. (2) PrefaceByArticle needs to be reentrant. (That bug causes problems for your code too—a second inner PSN__ call will believe it is actually printing, even if it is in fact part of an outer PSN__ call to determine an article. Combine your changes with this patch, and you should be okay.)
Of course, in most stories names will never overflow the buffer, nor will PrefaceByArticle calls nest, so these are really only edge cases.
Double edit: My brain is not working today; please ignore what I had written before.