[Rd] Wishlist: Sweave: allow line breaks after forward slashes (PR#9444)
Duncan Murdoch
murdoch at stats.uwo.ca
Tue Jan 16 12:46:51 CET 2007
On 1/16/2007 5:26 AM, Arne Henningsen wrote:
> On Tuesday 16 January 2007 05:22, Duncan Murdoch wrote:
>> On 1/15/2007 5:43 PM, Arne Henningsen wrote:
>>> On Monday, 15. January 2007 18:44, Duncan Murdoch wrote:
>>>> On 1/15/2007 11:23 AM, Arne Henningsen wrote:
>>>>> [...]
>>>>> I prefer to use "keep.source=FALSE", because I generally like that
>>>>> Sweave takes the job to format the code chunks. Therefore, it would be
>>>>> great if Sweave is allowed to introduce line breaks after forward
>>>>> slashes, e.g. if deparse() adds a blank after a forward slash.
>>>>> Please move this wish from "wishlst-fulfilled" to "wishlst".
>>>> I don't think so. If I thought it was a reasonable request, I'd do
>>>> that, but it's not. You have a perfectly general solution to your
>>>> problem.
>>> However, setting "keep.source = FALSE" has (IMHO) one major advantage:
>>> I can easily (and globally) change the width of the code chunks by
>>> "options( width = XXX )", e.g. if I change the paper size, the margins or
>>> the font size. With "keep.source = TRUE", I would have to reformat all
>>> code chunks by hand and I generally prefer that my software (LaTeX,
>>> Sweave) does this task for me. Hence, "keep.source = TRUE" is not a
>>> "perfectly general solution" (at least) for me.
>> No, you would only have to reformat the one code chunk where you set
>> keep.source = TRUE. It doesn't need to be a global option.
>
> Okay, that's true, but I have more than one code chunk that is not nicely
> formatted because of "/" signs. (And I generally don't like manual
> formatting ;-)).
>
> Is there any reason for deparse() to add spaces around "+", "-", and "*"
> operators but not around "/" operators?
> R> deparse(parse( text = "a+b-c*d/e" ))
> [1] "expression(a + b - c * d/e)"
I don't know, but it has been like that for the complete history of the
source code in the repository (almost 10 years). I suppose someone thought
a + b - c * d /
e
would look ugly (even though they were happy to put one of the other
operators at the end of the line). This makes me quite reluctant to
change it: people get upset about changes to the look of their old
scripts, because they trigger spurious check errors.
Duncan Murdoch
>
>>>> The fact that it isn't the one you want doesn't mean it needs
>>>> to be listed as an outstanding issue in the bug reporting system.
>>> Okay. Where can I list "minor" wishes?
>> On your to-do list?
>
> Yes, that's a good idea!
> This is my patch of /src/main/names.c:
>
> --- names.c.orig 2007-01-16 11:03:24.000000000 +0100
> +++ names.c 2007-01-16 10:30:43.000000000 +0100
> @@ -149,7 +149,7 @@
> {"+", do_arith, PLUSOP, 1, 2, {PP_BINARY, PREC_SUM, 0}},
> {"-", do_arith, MINUSOP,1, 2, {PP_BINARY, PREC_SUM, 0}},
> {"*", do_arith, TIMESOP,1, 2, {PP_BINARY, PREC_PROD, 0}},
> -{"/", do_arith, DIVOP, 1, 2, {PP_BINARY2, PREC_PROD, 0}},
> +{"/", do_arith, DIVOP, 1, 2, {PP_BINARY, PREC_PROD, 0}},
> {"^", do_arith, POWOP, 1, 2, {PP_BINARY2, PREC_POWER, 1}},
> {"%%", do_arith, MODOP, 1, 2, {PP_BINARY2, PREC_PERCENT,0}},
> {"%/%", do_arith, IDIVOP, 1, 2, {PP_BINARY2, PREC_PERCENT,0}},
>
> (I have removed some blanks so that each line fits in a single line)
>
> Now I get:
> R> deparse(parse( text = "a+b-c*d/e" ))
> [1] "expression(a + b - c * d / e)"
>
> Does this patch has any negative side effects?
>
> "make check" fails, but AFAIK this is just because of different positions of
> line breaks:
> [...]
> running code in 'reg-tests-2.R' ... OK
> comparing 'reg-tests-2.Rout'
> to './reg-tests-2.Rout.save' ...3639,3640c3639,3640
> < aov(formula = dep.variable ~ f1 * f2 + Error(subject / (f1 +
> < f2)), data = sample.df)
> ---
>> aov(formula = dep.variable ~ f1 * f2 + Error(subject/(f1 + f2)),
>> data = sample.df)
> 3693,3694c3693,3694
> < aov(formula = dep.variable ~ f1 * f2 + Error(subject / (f2 +
> < f1)), data = sample.df)
> ---
>> aov(formula = dep.variable ~ f1 * f2 + Error(subject/(f2 + f1)),
>> data = sample.df)
> make[3]: *** [reg-tests-2.Rout] Fehler 1
> [...]
>
>> Duncan Murdoch
>
> Thank you for all your hints,
> Arne
>
More information about the R-devel
mailing list