Blame texlive-base-latex-papersize-py3.patch

17c6315
diff -up ./scripts/latex-papersize/latex-papersize.py.py3 ./scripts/latex-papersize/latex-papersize.py
17c6315
--- ./scripts/latex-papersize/latex-papersize.py.py3	2016-10-17 17:30:47.000000000 -0400
17c6315
+++ ./scripts/latex-papersize/latex-papersize.py	2019-12-14 03:02:45.000000000 -0500
17c6315
@@ -1,7 +1,7 @@
17c6315
 #!/usr/bin/env python
17c6315
 r"""
17c6315
 Calculate LaTeX paper and margin settings for arbitrary magnification
17c6315
-(C) Silas S. Brown, 2005-2009, 2016.  Version 1.62.
17c6315
+(C) Silas S. Brown, 2005-2009, 2016, 2019.  Version 1.63.
17c6315
 
17c6315
 Licensed under the Apache License, Version 2.0 (the "License");
17c6315
 you may not use this file except in compliance with the License.
17c6315
@@ -32,6 +32,7 @@ are often meant to be clearer.
17c6315
 
17c6315
 This is a Python script to calculate the necessary
17c6315
 settings for arbitrary font and page sizes.
17c6315
+Works in both Python 2 and Python 3.
17c6315
 
17c6315
 BASIC USAGE
17c6315
 
17c6315
@@ -151,11 +152,16 @@ To run dvips on the .dvi file (not neede
17c6315
 $(python latex-papersize.py 12 26 file.dvi)
17c6315
 """
17c6315
 
17c6315
-import os, sys, math, commands
17c6315
+import os, sys, math
17c6315
+try: from commands import getoutput # Python 2
17c6315
+except: from subprocess import getoutput # Python 3
17c6315
+def hasKey(a,b):
17c6315
+  try: return a.has_key(b) # old Python 2
17c6315
+  except: return b in a # newer Python 2 + Python 3
17c6315
 if len(sys.argv)==2 and sys.argv[1]=="--help":
17c6315
-  print __doc__.strip() ; raise SystemExit
17c6315
+  print(__doc__.strip()); raise SystemExit
17c6315
 if len(sys.argv)==2 and sys.argv[1]=="--version":
17c6315
-  print __doc__[:__doc__.find("\n\n")].strip() ; raise SystemExit
17c6315
+  print(__doc__[:__doc__.find("\n\n")].strip()); raise SystemExit
17c6315
 
17c6315
 base_pointsize = float(sys.argv[1])
17c6315
 desired_pointsize = float(sys.argv[2])
17c6315
@@ -167,13 +173,13 @@ else:
17c6315
   extra_bottom_margin_mm = 0
17c6315
   pageStyle = " \\pagestyle{empty}"
17c6315
 
17c6315
-if os.environ.has_key("paper_width"): paper_width=float(os.environ["paper_width"])
17c6315
+if hasKey(os.environ,"paper_width"): paper_width=float(os.environ["paper_width"])
17c6315
 else: paper_width=210
17c6315
-if os.environ.has_key("paper_height"): paper_height=float(os.environ["paper_height"])
17c6315
+if hasKey(os.environ,"paper_height"): paper_height=float(os.environ["paper_height"])
17c6315
 else: paper_height=297
17c6315
-if os.environ.has_key("margin_left"): margin_left=float(os.environ["margin_left"])
17c6315
+if hasKey(os.environ,"margin_left"): margin_left=float(os.environ["margin_left"])
17c6315
 else: margin_left=10
17c6315
-if os.environ.has_key("margin_top"): margin_top=float(os.environ["margin_top"])
17c6315
+if hasKey(os.environ,"margin_top"): margin_top=float(os.environ["margin_top"])
17c6315
 else: margin_top=10
17c6315
 
17c6315
 paper_magstep = 1.0*desired_pointsize/base_pointsize
17c6315
@@ -188,15 +194,16 @@ if sys.argv[3]=="tex" or sys.argv[3]=="p
17c6315
   s="\\textwidth=%.1fmm \\textheight=%.1fmm \\topmargin=%.1fmm \\marginparwidth=0mm \\oddsidemargin=%.1fmm \\evensidemargin=%.1fmm \\columnsep=%.1fmm%s" % (textwidth,textheight,margin_top_setting,margin_left_setting,margin_left_setting,margin_left_setting,pageStyle)
17c6315
   if sys.argv[3]=="pdftex":
17c6315
     s += "\\mag=%d \\pdfpagewidth=%d true mm \\pdfpageheight=%d true mm \\pdfhorigin=0 mm \\pdfvorigin=-12.95 mm \\paperwidth=%d true mm \\paperheight=%d true mm" % (1000*paper_magstep,paper_width,paper_height,paper_width,paper_height) # the -12.95mm seems to be a constant regardless of magnification (previous version had -14 but it sems -12.95 is more accurate - at least 12.9 is too small and 13 is too big).  Need \paperwidth and \paperheight in there as well in case using hyperref.
17c6315
-  print s
17c6315
+  print(s)
17c6315
 else:
17c6315
-  os.system("dvips -T %dmm,%dmm -x %d %s -o bbox_test.ps" % (paper_width*10,paper_height*10,1000*paper_magstep+0.5,sys.argv[3]))
17c6315
+  r = os.system("dvips -T %dmm,%dmm -x %d %s -o bbox_test.ps" % (paper_width*10,paper_height*10,1000*paper_magstep+0.5,sys.argv[3]))
17c6315
+  assert not r, "dvips failed"
17c6315
   # Now, that would have got the origin wrong.  I can't
17c6315
   # figure out how dvips origin and magstep is supposed to
17c6315
   # interoperate, so let's work it out on a case-by-case
17c6315
   # basis from the bounding box.
17c6315
   # (Note: multiplying paper_width and paper_height by 10 above, because if dealing with very small paper sizes then this may give a reading of 0 if the origin is off the page.  Increasing the paper size doesn't seem to affect the origin.)
17c6315
-  bbox=commands.getoutput("echo|gs -sDEVICE=bbox bbox_test.ps 2>&1|grep BoundingBox")
17c6315
+  bbox=getoutput("echo|gs -sDEVICE=bbox bbox_test.ps 2>&1|grep BoundingBox")
17c6315
   # (previous version used 'head -1' to take only the first page, but that can cause 'broken pipe' errors if the file contains too many pages, and will give an incorrect result if there is only one line per page and it is indented on the first page, so we'll look at ALL the pages and take the outermost bounds.  Will also look at high-resolution bounding boxes only, if available.)
17c6315
   if "HiResBoundingBox" in bbox: bbox=filter(lambda x:"HiRes" in x,bbox.split("\n"))
17c6315
   else: bbox=bbox.split("\n")
17c6315
@@ -206,4 +213,4 @@ else:
17c6315
   os.unlink("bbox_test.ps")
17c6315
   existing_left_margin_mm = min(map(lambda x:x[0],bbox))*25.4/72
17c6315
   existing_top_margin_mm = paper_height*10-max(map(lambda x:x[3],bbox))*25.4/72
17c6315
-  print "dvips -T %dmm,%dmm -O %.1fmm,%.1fmm -x %d %s" % (paper_width,paper_height,margin_left - existing_left_margin_mm,margin_top - existing_top_margin_mm,1000*paper_magstep+0.5,sys.argv[3])
17c6315
+  print("dvips -T %dmm,%dmm -O %.1fmm,%.1fmm -x %d %s" % (paper_width,paper_height,margin_left - existing_left_margin_mm,margin_top - existing_top_margin_mm,1000*paper_magstep+0.5,sys.argv[3]))