<div dir="ltr"><div><div><div><div><div><br></div>The recent discussion of page sizes caused me to look again at the papersize special and whether latex ought to be adding it in more places.<br><br></div>The special was originally implemented in dvips and the dvips manual says it hopes that other drivers support it. It seems like that has happened except that all other drivers support it in an incompatible way..<br><br></div>Consider this plain tex document<br><br>\ifx\pdfvariable\undefined\else<br>\let\pdfoutput\outputmode<br>\let\pdfpagewidth\pagewidth<br>\let\pdfpageheight\pageheight<br>\fi<br><br>\ifx\XeTeXversion\undefined\else<br>\chardef\pdfoutput=0<br>\fi<br><br>\ifnum\pdfoutput=0<br>  \special{papersize=200bp,200bp}<br>  \special{papersize=400bp,100bp}<br>\else<br>  \pdfpagewidth=200bp  \pdfpageheight=200bp<br>  \pdfpagewidth=400bp  \pdfpageheight=100bp<br>\fi<br><br>hello<br><br>\bye<br><br><br><br><br><br></div>dvips reports a page size of 200x200 (first special wins)<br><br>etex pagesize;dvips pagesize;ps2pdf <a href="http://pagesize.ps">pagesize.ps</a>; pdfinfo pagesize.pdf| grep 'Page size'<br>Page size:      200 x 200 pts<br><br><br></div>However all these variants using dvipdfm(x) or xdvi drivers report a page size of  400 x 100 (last special on first page wins)<br><br><br><div><br>etex pagesize;dvipdfm pagesize; <a href="http://pagesize.ps">pagesize.ps</a>; pdfinfo pagesize.pdf| grep 'Page size'<br><br>etex pagesize;dvipdfmx pagesize; <a href="http://pagesize.ps">pagesize.ps</a>; pdfinfo pagesize.pdf| grep 'Page size'<br><br>etex pagesize;xdvipdfmx pagesize; <a href="http://pagesize.ps">pagesize.ps</a>; pdfinfo pagesize.pdf| grep 'Page size'<br><br><br>xetex pagesize; pdfinfo pagesize.pdf| grep 'Page size'<br><br><br>etex pagesize; xdvi pagesize&<br><br></div><div>That of course matches the use of \pdfpagewidth in pdftex where the register is reset until used as the first page is shipped out, these also report 400x100<br><br><br>pdftex pagesize; pdfinfo pagesize.pdf| grep 'Page size'<br><br>luatex pagesize; pdfinfo pagesize.pdf| grep 'Page size'<br><br><br></div><div>the only combination I could find other than dvips not to report 400x100 was dvisvgm but I didn't understand its size at all:<br><br>etex pagesize; dvisvgm pagesize<br>pre-processing DVI file (format 2)<br>processing page 1<br>  page size: 217.359pt x 664.121pt (76.3929mm x 233.412mm)<br><br>???<br><br><br></div><div>in latex at least the specials can be inserted in reverse order using<br></div><div><br>  \AtBeginDVI{\special{papersize=200bp,200bp}}<br>   \AtBeginDVI{\\special{papersize=400bp,100bp}}<br><br></div><div>(the AtBeginDVI hook was added for more or less exactly that)<br></div><div>but all packages would have to agree to use the same hook, and <br></div><div>it would still mean that the tex code and resulting dvi file had<br></div><div>to target either dvips or xdvi/dvipdfm the same dvi couldn't be used for both.<br><br><br></div><div>So... I was wondering if dvi drivers that support special{papersize= could agree on how to treat multiple instances?<br><br></div><div>Changing (say) dvips would of course affect the behaviour of any document that has this set twice (eg has hyperref and geometry both loaded) so it's not necessarily a good idea, but I'm not sure the current situation is that easy to maintain either....<br><br></div><div>Something to think about after TL2016 out....<br><br></div><div>David<br> <br></div><div><br></div><div><br><br></div></div>