From ripley at stats.ox.ac.uk  Fri Jan 20 08:47:36 2006
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Fri, 20 Jan 2006 07:47:36 +0000 (GMT)
Subject: [Rd] par(mfg=) and postscript and pdf
Message-ID: <Pine.LNX.4.61.0601200727470.25948@gannet.stats>

This is related to the incorrect bug report PR#7820.  Marc Schwartz
pointed out in

https://stat.ethz.ch/pipermail/r-devel/2005-April/033016.html

an example of a real problem.  If you call par(mfg=) after par(mfrow) (or 
mfcol) and before you have done any plotting, NewPage is not called on the 
device at the start of the first page.  That causes the DSC comments to be 
incorrect on postscript() and much worse on pdf().

You would get the same effect by calling par(new=T) before plot.new() is 
called, except that is disallowed.  par(mfg=) does set new=T internally, 
and also sets the plot number to a valid one, both of which inhibit 
calling NewPage.  I've managed to overcome this by ensuring that
GNewPage always calls NewPage on an unused device (there is an internal 
'state' variable which records the latter).

This is safe in the sense that the worst it could do is to produce an 
unwanted new page.  I can't see how this could happen but the design of 
the internals of base graphics is very complicated and undocumented, so I 
am only putting the change in R-devel (along with fixes to the 
long-standing graphics bugs PR#1235 and PR#2630).

-- 
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] par(mfg=) and postscript and pdf
Prof Brian Ripley