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