kosmikus/lhs2tex

`%format pref a = "pref"a` without space in --newcode

Opened this issue · 2 comments

lhs2TeX is a joy to use, as always, but I'm currently struggling with the following macro:

%if style == newcode
%format (hat (a)) = "__hat" a
%else
%format (hat(a)) = "\widehat{" a "}"

I'm intentionally using hat on identifiers and would have hoped that my newcode definition above makes it so that hat d is emitted as __hatd. Alas, it's actually __hat d. Can I convince lhs2TeX not to emit two separate tokens, or omit the space after "__hat"?

This is somewhat related to #46 and #38, where a quote macro is suggested, which also introduces an additional space. (I'm wondering why that is accepted by the GHC lexer or if I'm doing something wrong.)

Perhaps this is a bug, as %format suff a = a "__suff"/%format (hat (a)) = a "__hat" works.

I have to look at the code again, but I think the problem is the way the lexer assigns spaces to the contents of the variable. The space is part of the expansion of a, not part of the macro itself. I believe the workaround is to write hat(d) instead of hat d at the call site.