[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Generalising @def*
From: |
Patrice Dumas |
Subject: |
Re: Generalising @def* |
Date: |
Fri, 10 Feb 2023 16:24:00 +0100 |
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.
>
>