Re: Generalising @def*

Patrice Dumas <[email protected]>
Newsgroups gmane.comp.tex.texinfo.general
Message-ID <[email protected]>
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.
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.