Skip to content
Prev 19167 / 63424 Next

par(mfg=) and postscript and pdf

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).