From ripley at stats.ox.ac.uk  Thu Apr 20 19:48:34 2006
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Thu, 20 Apr 2006 18:48:34 +0100 (BST)
Subject: [Rd] R_PAPERSIZE and LC_PAPER
In-Reply-To: <1145548335.4876.17.camel@localhost.localdomain>
References: <Pine.LNX.4.64.0604200758440.14307@gannet.stats.ox.ac.uk>
	<1145548335.4876.17.camel@localhost.localdomain>
Message-ID: <Pine.LNX.4.64.0604201811480.28018@gannet.stats.ox.ac.uk>

Marc,

Thanks for the comments.  The 2.3.x series is in feature freeze, and 
although a few features do break though for patch releases, they had 
better be `badly needed' see 
http://developer.r-project.org/devel-guidelines.txt).

So I was thinking of 2.4.0.

My suggestion was going to be along the lines of

local({
papersize <- as.vector(Sys.getenv("R_PAPERSIZE"))
if(!nchar(papersize)) {
     lcpaper <- Sys.getlocale("LC_PAPER")
     if(nchar(lcpaper))
         papersize <- if(length(grep(, lcpaper)) > 0) "letter" else "a4"
     else papersize <- as.vector(Sys.getenv("R_PAPERSIZE_DEFAULT"))
}
options(papersize = papersize)
})

This is unchanged if LC_PAPER is unset.  For those with LC_PAPER set,
its value takes precedence over the compile-time default.  That's almost 
exactly equivalent to what happens on Windows (which sets LC_MONETARY for 
this purpose, as LC_PAPER is not a locale category there).

Now, one could argue that if LC_PAPER is unset it should default to 
LC_ALL, but I think is less desirable.

Of course, at present Sys.getlocale("LC_PAPER") is not supported, so 
that's part of the TODO.

Brian


On Thu, 20 Apr 2006, Marc Schwartz (via MN) wrote:

> On Thu, 2006-04-20 at 08:09 +0100, Prof Brian Ripley wrote:
>> R uses the environment variable R_PAPERSIZE to set its papersize, e.g. for
>> postscript.
>>
>> It seems the modern way is to via LC_PAPER, e.g.
>>
>> http://mail.nl.linux.org/linux-utf8/2002-05/msg00010.html
>>
>> and Googling will show that people expect this to work.
>>
>> However, that is not set on my FC3 system, and it would affect people who
>> use en_US as their locale in, say, Austria.
>>
>> Should we be making use of LC_PAPER, or would it just cause further
>> complications?  (On Windows, the locale name is used to set the default
>> papersize, but there it is unlikely to be set inappropriately.)
>
>
> Here's my 0.0162 Euros (at current conversion rates):
>
> For R 2.4.0, announce that LC_PAPER will become the default environment
> variable used to set the default R papersize and then not set
> R_PAPERSIZE by default (ie. in build scripts, etc.)
>
> However, If someone sets R_PAPERSIZE in their site or local profile,
> this will supercede the LC_PAPER setting. This would allow for a R
> setting that may need to be different than the system default.
>
> Doing this for 2.4.0 (as opposed to 2.3.x) would give folks notice and
> time to consider the impact on their local installations and code, while
> enabling future users to take advantage of the standard.
>
> I think that in general, R should abide by published standards unless
> there are very compelling reasons not to.
>
> HTH,
>
> Marc Schwartz
>
>
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



[Rd] R_PAPERSIZE and LC_PAPER
Prof Brian Ripley