Re: [Rd] problem with \eqn (PR#8322)

From: Hin-Tak Leung <hin-tak.leung_at_cimr.cam.ac.uk>
Date: Mon 21 Nov 2005 - 10:18:25 GMT

Kurt Hornik wrote:

>>>>>>Duncan Murdoch writes:

>
>
>>On 11/18/2005 12:40 PM, Hin-Tak Leung wrote:
>>
>>>Martin Maechler wrote:
>>>
>>>
>>>>>>>>>"Hin-Tak" == Hin-Tak Leung <hin-tak.leung@cimr.cam.ac.uk>
>>>>>>>>>on Fri, 18 Nov 2005 16:38:28 +0000 writes:
>>>>
>>>>

> Hin-Tak> Your own fault. See below. It is basic LaTeX and any LaTeX person
> Hin-Tak> can tell you the answer...(most probably haven't bothered...)
>
>>>>No.  Whereas I partly agree that it's Ross ``fault'' trying to
>>>>use too smart LaTex (and using outdated \bf instead of \mathbf), 
>>>>;-)
>>>>
>>>>The bug is really there, since we are talking about the Rd "language",
>>>>not LaTeX, an in Rd,  \eqn and \deqn are defined to have either
>>>>one or two arguments -- where Ross used the 2-argument version
>>>>correctly (in principle at least) --> See the manual "Writing R
>>>>Extensions".
>>>
>>>
>>>Forgive me for not reading R-ext carefully, but Ross's Rd code is
>>>still "obviously" wrong in the lights of the two-argument \eqn:
>>>(really doesn't differ from the 1-arg interpretaion of \eqn)
>>>
>>>\eqn{{\bf\beta}_j}{\bf\beta}_jnormal-bracket5bracket-normal{b(j)}
>>>
>>>In other words,
>>>\eqn{...}{...}_...
>>>
>>>and the "_" is still outside of any maths environment, which is most
>>>probably not Ross's intention.

>
>
>>But that is Latex code produced by R, not Rd code produced by Ross.
>>The bug is in the Latex production (which I think is done by
>>share/perl/R/Rdconv.pm, but I don't know Perl well enough to attempt
>>to fix it).

>
>
> Definitely a problem in Rdconv.
>
> E.g.,
>
> $ cat foo.Rd
> \description{
> \eqn{{A}}{B}
> }
> hornik@mithrandir:~/tmp$ R-d CMD Rdconv -t latex foo.Rd | grep eqn
> \eqn{{A}}{A}{{B}
>
> shows what is going on.
>
> My reading of R-exts would suggest that it is not necessary to escape
> braces inside \eqn (and in fact these are not unescaped by Rdconv).
>
> Btw, the conversions of the above example are wrong for at least HTML
> and text as well, giving
>
> <i>A</i>{{B}
>
> and
>
> A{{B}
>
> respectively.

Apologies - the problem is with this section of "share/perl/R/Rdconv.pm" around line 400 - it basically doesn't try very hard dealing with nested brackets.



## Get the arguments of a command.
sub get_arguments {
     my ($command, $text, $nargs) = @_;
     ## Arguments of get_arguments:
     ##  1, command: next occurence of 'command' is searched
     ##  2, text:    'text' is the text containing the command
     ##  3, nargs:   the optional number of arguments to be extracted;
     ##              default 1
     my @retval;
     ## Returns a list with the id of the last closing bracket and the
     ## arguments.

     if($text =~ /\\($command)(\[[^\]]+\])?($ID)/){
         $id = $3;
         $text =~ /$id(.*)$id/s;
         $retval[1] = $1;
         my $k=2;
         while(($k<=$nargs) && ($text =~ /$id($ID)/)){
             $id = $1;
             $text =~ /$id\s*(.*)$id/s;
             $retval[$k++] = $1;
         }
     }
     $retval[0] = $id;
     @retval;

}

HT



R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Mon Nov 21 21:30:38 2005

This archive was generated by hypermail 2.1.8 : Mon 21 Nov 2005 - 11:23:10 GMT