[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: rethinking @def*

From: Gavin Smith
Subject: Re: rethinking @def*
Date: Fri, 29 Jul 2022 16:14:16 +0100

On Thu, Jul 28, 2022 at 03:52:21PM +0100, Gavin Smith wrote:
> On Thu, Jul 28, 2022 at 04:27:28PM +0200, pertusus@free.fr wrote:
> > I tested with Texinfo TeX @t{\f[}@r{@slanted{font}}@t{]} (which is the
> > fourth line deffn name) in the argument part of @deffn, and the brackets
> > remain in roman font.  I could not find any combination of @-command
> > that could format the bracket in anything else than roman font.
> > Which means that if you would have wanted to use typewriter brackets in
> > the argument, you wouldn't have been able to, as far as I can tell.
> > It works because it is in the name of the @deffn, but does not in the
> > argument of the @deffn.
> > 
> > This seems wrong to me, not to be able to specify the font of the
> > bracket in def* arguments.  Not sure what can be done, though,
> > except for removing completly the code that makes brackets upright
> > and letting the user do the formatting herself.
> I agree this should be possible.
> I expect we could fix texinfo.tex to turn off this code inside
> font commands on a @def* line, along with the code for ampersand that
> was causing a problem in your other message.

Here's the fix, on top of the earlier change for ampersand:

diff --git a/doc/texinfo.tex b/doc/texinfo.tex
index 23d56da1ad..eeedbb8342 100644
--- a/doc/texinfo.tex
+++ b/doc/texinfo.tex
@@ -2818,7 +2818,7 @@ end
 % Explicit font changes: @r, @sc, undocumented @ii.
-\def\r#1{{\stopmagicamp\rm #1}} % roman font, used for code comment
+\def\r#1{{\defcharsdefault\rm #1}} % roman font, used for code comment
 \def\sc#1{{\smallcaps#1}}       % smallcaps font
 \def\ii#1{{\it #1}}             % italic font
@@ -7881,13 +7881,15 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 % so TeX would otherwise complain about undefined control sequence.
-  \global\let(=\lparen \global\let)=\rparen
-  \global\let[=\lbrack \global\let]=\rbrack
-  \global\let& = \&
+  \gdef\defcharsdefault{%
+    \let(=\lparen \let)=\rparen
+    \let[=\lbrack \let]=\rbrack
+    \let& = \&%
+  }
+  \globaldefs=1 \defcharsdefault
-  \gdef\stopmagicamp{\let&=\&}

This is limited to @r, so your test case


would still have roman square brackets.  It would have to become


which is not what anybody wants to be writing.

It would be simple to add the \defcharsdefault control sequence to
the definition of @t too, and I think it makes sense to do this.
It would be an abuse of the semantics of @r as a metasyntactic
escape to use it for syntactic characters like [ or ].

reply via email to

[Prev in Thread] Current Thread [Next in Thread]