I have a document which (after updating all packages) now gives me the error "! You can't use `\spacefactor' in vertical mode. \@->\spacefactor \@m {} l.10 \maketitle"
@Sverre but basically you have \@makeatletter which is a single token a if @ is a letter but otherwise is \@ makeatletter and gives the error you show,
I'm also not the first to be unable to understand an error message thrown back at me by LaTeX ... I hope making error messages more human friendly is part of the latex3 process?
@Sverre yes and no that one though doesn't come from latex really it's just a low level tex parse error. Actually the specific case of \@ we could define it to add a "have you forgotten makeatletter hint" but that is really just catching one minor case, if the command had been \maketitke@ it would have executed \maketitle again or if it and loop forever had it been \foo@bar you'd get an undefined command \foo, really you can not catch these things.
@Sverre but the most common reason for getting that error is using the code in the preamble without using \makeatletter how many permutations can we hint about?
@Sverre \makeatletter is harmless, you must have had \makeatother
@DavidCarlisle Well in that case I guess any hint along the lines of "this could be due to using \makeatletter \makeatother incorrectly" would help a lot.
@Sverre still against it really as it only catches the case of commands that begin with @ and then what will you do about having the same error with \ExplSyntaxOn and try to catch commands with _ or :
@Sverre you have to assume something and when writing tex code you have to assume a correct catcode regime, otherwise you can't assume anything, even \def\foo{} might not work.
Hmm ... no idea. I will leave it to you wizards to figure it out. But the downside to being a wizard is that error messages that make sense to you, make no sense to ordinary folks. This being a case where a more informative message probably would have made me realize what I had done wrong. Exactly what that message should say ... not sure.
@DavidCarlisle -- It's really important to learn how to read error messages in a .log file. A hangup on an undefined control sequence always has a continuation line, so if that starts with @, it's a \makeatletter condition. L3 can't reasonably detect that, but a person can.
@UlrikeFischer -- On my laptop keyboard (a Macbook Pro, 2009 model) it's on the right in the middle row: ... L ;/: '/" where the / separates lowercase/uppercase. I'm pretty sure this is the same as what I had at the office, since I can still touch type without having to hunt, so letters, digits, specials are probably pretty standard. Function keys are not necessarily uniform.
@UlrikeFischer just cloned psnfss, won't ctan want a README (rather than 00rreadme these days?) or perhaps they don't enforce that. Changing the name is a bit of a pain as it's mentioned in the doc though
@DavidCarlisle ok, I will write about both questions. On the other side, there are only 4 places with the readme, so probably not too problematic to change it.
@UlrikeFischer yes agreed for the tagging. probably true for the rest too. although usually I like to have a shell script or l3build or something (as I don't trust myself to type the build commands directly:-)