On Fri, Feb 10, 2023 at 01:35:15PM +0000, Gavin Smith wrote: > On Thu, Feb 02, 2023 at 07:14:53PM +0000, Gavin Smith wrote: > > I imagine that there would be another type of block > > like @defblock ... @end defblock which could contain the @def lines, > > which would allow the same formatting without the use of @macro. > > I expect that I'll be able to implement this in texinfo.tex. > My current work is at the end of this mail. > > I've commented out the code to create the index entry in \printdefunline, > which until recently wasn't part of \printdefunline anyway, so it should > be straightforward to remove this once I reverse the changes to introduce > a @useindex command. Apart from this, adding a new block command for > a definition block, along with new line commands to print definition lines, > seems straightforward. With the patch below, the following input outputs > as you would expect.
I have understood that the use can use any index command, simply by adding it before the @deflinex, but I did not understand where the user definition comes in? > \input texinfo > > @defblock > @deflinex Functionoid bar (args) > @deflinex Monoid bar2 (args, nineyy) > hello > > @end defblock > > @bye > > I expect that once this is in texi2any, any @?index lines in > the @defblock should be handled along with recent/ongoing changes > for copiable anchor links for definition commands. > > User-defined definition commands could be limited to macros that use > @deflinex (or similar line commands that we will introduce). There > will be no definitions on the @defblock line itself. Thus we can avoid > or delay the question of allowing users to define their own block commands > with a corresponding "@end" line. > > I'll post more once this work is more complete. > > > diff --git a/doc/texinfo.tex b/doc/texinfo.tex > index 0f57611a5e..b1e3cb8cee 100644 > --- a/doc/texinfo.tex > +++ b/doc/texinfo.tex > @@ -7570,9 +7570,9 @@ might help (with 'rm \jobname.?? \jobname.??s')% > % call \deffooheader: > #1#2 \endheader > % create the index entry > - \defcharsdefault > - \edef\temp{\noexpand\doind{\the\defidx}{\the\deftext}}% > - \temp > + % \defcharsdefault > + % \edef\temp{\noexpand\doind{\the\defidx}{\the\deftext}}% > + % \temp > % common ending: > \interlinepenalty = 10000 > \advance\rightskip by 0pt plus 1fil\relax > @@ -7587,6 +7587,19 @@ might help (with 'rm \jobname.?? \jobname.??s')% > > \def\Edefun{\endgraf\medbreak} > > +\envdef\defblock{% > + \startdefun > +} > +\let\Edefblock\Edefun > + > +\def\deflineheader#1 #2 #3\endheader{% > + \defname{#1}{}{#2}\magicamp\defunargs{#3\unskip}% > +} > + > +\def\deflinex{% > + \parseargusing\activeparens{\printdefunline\deflineheader}% > +} > + > % \makedefun{deffoo} (\deffooheader parameters) { (\deffooheader expansion) } > % > % Define \deffoo, \deffoox \Edeffoo and \deffooheader. > >