Could you consider upgrading to LilyPond 2.24? That's the current
stable version (and my code was written for it). If that's
impossible, I can sidestep the use of \after, but frankly, it's
easier to help you if you provide a working example yourself.
I am fairly certain David K. wrote \after back in the 2.19 era, so
there should be no particular need to run 2.24. I found this version
on an old thread:
%%%%
after =
#(define-music-function (t e m) (ly:duration? ly:music? ly:music?)
#{
\context Bottom <<
#m
{ \skip $t <> -\tweak extra-spacing-width #empty-interval $e }
>>
#})
%%%%
When I researched variants of \after while working on getting it into
standard LilyPond (which happened somewhere in the 2.23 line), the
earliest incarnation I could find was
https://lists.gnu.org/archive/html/lilypond-devel/2012-09/msg00342.html
- so that's 2.16 era.
Of course you're right that I might just as well have provided the OP
with a simple implementation of \after. (But upgrading is a good idea
anyway, I think - there has been marvelous progress during 2.23.xx I
think, all due to the work done by Jean, Dan and others.)
Lukas