On Fri, Oct 14, 2022 at 01:15:03PM +0200, Vincent Lefevre wrote:
> ----------------------------------------
> \input texinfo @c -*-texinfo-*-
>
> @macro ttie {}
> @end macro
>
> @deftypefun int f1 ()
> @math{@var{n}=-2}.
> @end deftypefun
>
> @deftypefun int f2 ()
> @math{@var{n}@ttie{}=@ttie{}-2}.
> @end deftypefun
>
> @bye
> ----------------------------------------
>
> I've tested this with texinfo.tex 2022-10-01.15 (current version).
> PDF generated with "texi2dvi --pdf test.texi".
>
> pdftotext shows
> * for f1: n = −2.
> * for f2: n = − 2.
>
> The incorrect spacing for f2 is also visible with a PDF viewer.
>
> I suspect that for f2, TeX regards the minus sign as a subtraction
> instead of the unary negation.
>
> FYI, the goal is to have @ttie{} equivalent to @tie{} except for
> PDF output (where @tie{} also gives incorrect spacing).
I see. As ever, using Texinfo commands inside @math is not advisable.
Even defining ttie as a simple \gdef had the same spacing problem.
It appears you are are right abut TeX treating the minus sign as a binary
operator. You can format it correctly using \mathord:
@deftypefun int f3 ()
@math{@var{n}@ttie{}=@ttie{}\mathord-2}
@end deftypefun
In your use case, you can avoid line breaks using the @w command:
@deftypefun int f4 ()
@w{@math{@var{n} = -2}}.
@end deftypefun