That's a bigger problem: first, I used a definition as shown in the LSR
and played a bit with the
values for base-skip, font-size and raise. Here is my first attempt:
tabClefIV = \markup {
\raise #0.7 {
\override #'(font-family . sans)
\bold\fontsize #-1.0
\override #'(baseline-skip . 1.44)
\column { "T" "A" "B" }
}
}
I found out that the base-line for 4 ... 7 strings follows a quadratic
equation:
base-skip = ( 0.2 * num-strings + 0.4 )**2
but inserting this into the definition of customTabClef didn't work, and
neither
Carl nor I could nail down the problem, so finally, I hard-coded the values.
If you can help me with that, it would be great.

The raise-value calculation has gone, because I use #:vcenter, but I had
to comment
out the font-family line, because I got an error saying "unbound
variable: font-family"

if it is in the source. What's going wrong here?

Imagine a user doesn't like the default staff-space setting for
TabStaff (1.5). If they change it, none of these empirical values
will work properly.

Here Neil points out the thing he's most concerned about. It's not a
concern about the magic numbers per se, it's that they don't change with
staff-spacing. In my earlier email (let me know if you didn't get it), I
asked for his help with that problem.

With the definition above, I inserted #(set-global-staff-size <num>)
and tried values from 10 to 100, and it worked as expected.
So the quadratic equation seems to be the right way.
Marc

On a general note, I'd prefer to keep the string tunings separate from
setting the clef. To set the traditional tab clef, we have the
command \clef tab, so it would be nice to be able to set the modern
style using e.g. \clef moderntab without having to use a new function.

Yes, that would be better, but I didn't manage to get the information about
the number of strings internally, so I used the tuning as an argument.
Then, to avoid setting it twice, I wrote the wrappers.
On the other hand, I would have to set the tuning before setting \clef
moderntab,
but this could be easily mentioned in the docs.
As said above, any help for the base-skip problem and finding a way to
get the number of strings
without explicitly using the tuning as an argument are appreciated.
Thank you!
Marc