# replacement in ~/.lyx/scripts
# converts an image $2 (format $1) to $4 (format $3)
+from __future__ import print_function
import os, re, sys
+PY2 = sys.version_info[0] == 2
+
# We may need some extra options only supported by recent convert versions
re_version = re.compile(r'^Version:.*ImageMagick\s*(\d*)\.(\d*)\.(\d*).*$')
# imagemagick 7
fout = os.popen('convert -version 2>&1')
output = fout.readline()
fout.close()
+if not PY2:
+ output = output.decode()
+
version = re_version.match(output)
# Imagemagick by default
if sys.argv[3] == 'ppm' and (im and version >= 0x060305 or gm):
opts = opts + ' -flatten'
-# print >> sys.stdout, command, sys.argv[2], sys.argv[4]
+# print (command, sys.argv[2], sys.argv[4], file= sys.stdout)
if (im or gm) and os.system(r'%s %s "%s" "%s"' % (command, opts, sys.argv[2], sys.argv[3] + ':' + sys.argv[4])) != 0:
- print >> sys.stderr, sys.argv[0], 'ERROR'
- print >> sys.stderr, ('Execution of "%s" failed.' % command)
+ print (sys.argv[0], 'ERROR', file= sys.stderr)
+ print ('Execution of "%s" failed.' % command, file= sys.stderr)
sys.exit(1)
elif not im and not gm and sys.platform == 'darwin' and os.system(r'%s "%s" "%s"' % (command, sys.argv[2], sys.argv[4])) != 0:
- print >> sys.stderr, sys.argv[0], 'ERROR'
- print >> sys.stderr, ('Execution of "%s" failed.' % command)
+ print (sys.argv[0], 'ERROR', file= sys.stderr)
+ print ('Execution of "%s" failed.' % command, file= sys.stderr)
sys.exit(1)
# This script will convert a chess position in the FEN
# format to an ascii representation of the position.
+from __future__ import print_function
import sys,string,os
os.close(0)
cont=1
margin= " "*6
-print margin+' +'+"-"*15+'+'
+print (margin+' +'+"-"*15+'+')
for i in range(8):
cont = cont + 1
tmp=""
cont = cont + 1
row = 8 - i
- print margin, row, tmp+"|"
+ print (margin, row, tmp+"|")
-print margin+' +'+"-"*15+'+'
-print margin+' a b c d e f g h '
+print (margin+' +'+"-"*15+'+')
+print (margin+' a b c d e f g h ')
# the real pdf file will be overwritten by a tex file named file.pdf.
#
-
+from __future__ import print_function
import os, sys, re
run a command, quit if fails
'''
if os.system(cmd) != 0:
- print "Command '%s' fails." % cmd
+ print("Command '%s' fails." % cmd)
sys.exit(1)
# with tetex.
epsfile = outbase + '.pstex'
tmp = mkstemp()
- boundingboxline = re.compile('%%BoundingBox:\s+(\d*)\s+(\d*)\s+(\d*)\s+(\d*)')
- for line in open(epsfile).xreadlines():
- if line[:13] == '%%BoundingBox':
- (llx, lly, urx, ury) = map(int, boundingboxline.search(line).groups())
+ boundingboxline = re.compile(b'%%BoundingBox:\s+(\d*)\s+(\d*)\s+(\d*)\s+(\d*)')
+ for line in open(epsfile, 'rb'):
+ if line[:13] == b'%%BoundingBox':
+ (llx, lly, urx, ury) = list(map(int, boundingboxline.search(line).groups()))
width = urx - llx
height = ury - lly
xoffset = - llx
yoffset = - lly
- tmp.write('''%%%%BoundingBox: 0 0 %d %d
+ tmp.write(b'''%%%%BoundingBox: 0 0 %d %d
<< /PageSize [%d %d] >> setpagedevice
gsave %d %d translate
''' % (width, height, width, height, xoffset, yoffset))
# the real eps file will be overwritten by a tex file named file.eps.
#
+from __future__ import print_function
import os, sys
# We expect two args, the names of the input and output files.
# Generate the PSTEX_T file
if os.system('fig2dev -Lpstex %s %s.eps' % (input, outbase)) != 0 or \
os.system('fig2dev -Lpstex_t -p%s %s %s' % (outbase, input, output)) != 0:
- print 'fig2dev fails'
+ print ('fig2dev fails')
sys.exit(1)
# picture files that are stored as relative paths are replaced
# with the absolute path.
+from __future__ import print_function
import os, sys
if len(sys.argv) != 3:
- print >> sys.stderr, "Usage: fig_copy.py <from file> <to file>"
+ print ("Usage: fig_copy.py <from file> <to file>", file=sys.stderr)
sys.exit(1)
if not os.path.isfile(sys.argv[1]):
- print >> sys.stderr, "Unable to read", sys.argv[1]
+ print ("Unable to read", sys.argv[1], file=sys.stderr)
sys.exit(1)
from_dir = os.path.split(os.path.realpath(sys.argv[1]))[0]
# We're looking for a line of text that defines an entry of
# type '2' (a polyline), subtype '5' (an external picture file).
# The line has 14 other data fields.
-patternline = re.compile(r'^\s*2\s+5(\s+[0-9.+-]+){14}\s*$')
-emptyline = re.compile(r'^\s*$')
-commentline = re.compile(r'^\s*#.*$')
+patternline = re.compile(br'^\s*2\s+5(\s+[0-9.+-]+){14}\s*$')
+emptyline = re.compile(br'^\s*$')
+commentline = re.compile(br'^\s*#.*$')
# we allow space in path name
-figureline = re.compile(r'^(\s*[01]\s*)(\S[\S ]*)(\s*)$')
+figureline = re.compile(br'^(\s*[01]\s*)(\S[\S ]*)(\s*)$')
-input = open(sys.argv[1], 'r')
-output = open(sys.argv[2], 'w')
+input = open(sys.argv[1], 'rb')
+output = open(sys.argv[2], 'wb')
# path in the fig is relative to this path
os.chdir(from_dir)
found = False
elif patternline.match(line):
found = True
- print >> output, line,
+ output.write(line)
input.close()
output.close()
# Full author contact details are available in file CREDITS
-# This script is intended to include a BibTeX-generated biblography
+# This script is intended to include a BibTeX-generated biblography
# in a LaTeX file, as publishers often want. It can be run manually
# on an exported LaTeX file, though it needs to be compiled first,
# so the bbl file will exist.
#
# It should also be possible to create a LyX converter to run this
-# automatically. To set it up, create a format "ltxbbl"; make sure to
-# check it as a document format. Then create a LaTeX-->ltxbbl converter,
+# automatically. To set it up, create a format "ltxbbl"; make sure to
+# check it as a document format. Then create a LaTeX-->ltxbbl converter,
# with the command:
# python -tt $$s/scripts/include_bib.py $$i $$o
# and give it the flags:
# needaux,nice
# You'll then have it in the export menu.
-#
+#
# We do not activate this converter by default, because there are problems
# when one tries to use multiple bibliographies.
#
# Please report any problems on the devel list.
+from __future__ import print_function
import sys, os
class secbib:
return self.msg
-def InsertBib(fil, out):
+def InsertBib(fil, out):
''' Inserts the contents of the .bbl file instead of the bibliography in a new .tex file '''
texlist = open(fil, 'r').readlines()
# multiple bibliographies
biblist = []
stylist = []
-
+
for i, line in enumerate(texlist):
if "\\bibliographystyle" in line:
stylist.append(i)
biblist.append(i)
elif "\\begin{btSect}" in line:
raise BibError("Cannot export sectioned bibliographies")
-
+
if len(biblist) > 1:
raise BibError("Cannot export multiple bibliographies.")
if not biblist:
bbllist = open(bblfile, 'r').readlines()
newlist += bbllist
newlist += texlist[bibpos + 1:]
-
+
outfile = open(out, 'w')
outfile.write("".join(newlist))
outfile.close()
return out
-
+
def usage():
- print r'''
+ print (r'''
Usage: python include_bib.py file.tex [outfile.tex]
Includes the contents of file.bbl, which must exist in the
same directory as file.tex, in place of the \bibliography
command, and creates the new file outfile.tex. If no name
for that file is given, we create: file-bbl.tex.
-'''
+''')
if __name__ == "__main__":
args = len(sys.argv)
# we might should make sure this is a tex file....
infile = sys.argv[1]
if infile[-4:] != ".tex":
- print "Error: " + infile + " is not a TeX file"
+ print ("Error: " + infile + " is not a TeX file")
usage()
sys.exit(1)
outfile = infile[:-4] + "-bbl.tex"
newfile = InsertBib(infile, outfile)
- print "Wrote " + outfile
+ print ("Wrote " + outfile)
modifications to original listerrors."""
__copyright__ = "Copyright 2002 - Kayvan A. Sylvan."
+from __future__ import print_function
import sys, string
def write_error(msg, tool = "noweb", line_number = 1):
"""Write out the given message in TeX error style.
called like: write_error(msg, tool, line_number)."""
- print "! Build Error: ==> %s ==>\n" % (tool),
- print " ...\n\nl.%d ...\n" % (line_number),
+ print ("! Build Error: ==> %s ==>" % tool)
+ print (" ...\n\nl.%d ..." % line_number)
if type(msg) == type("str"): # simple string
- print msg
+ print (msg)
else: # some kind of list (sequence or tuple)
for m in msg:
- if m != "": print m,
- print
+ if m != "": print (m, end=" ")
+ print ()
__lines = [] # lines pushed back
Reads stdin and writes to stdout. Filter errors"""
- while 1:
+ while True:
line = getline()
if line == "": break
try_patterns_dispatch = [ noweb_try, gcc_try, xlc_try ]
for predicate in try_patterns_dispatch:
if predicate(line): break
+
def noweb_try(line):
"""see if line is a noweb error.
latex_file = argv[3]
latex_base, latex_ext = os.path.splitext(latex_file)
+ # convert strings to bytes since we are using binary files
+ from_base = from_base.encode()
+ latex_base = latex_base.encode()
+
# Read the input file and write the output file
if(not os.path.isfile(abs_from_file)):
error("%s is not a valid file.\n" % abs_from_file)