diff options
| -rwxr-xr-x | texall | 30 |
1 files changed, 20 insertions, 10 deletions
@@ -6,6 +6,7 @@ import os import os.path import re import subprocess +import tempfile parser = OptionParser(usage="%prog [-v] DIR/FILE [...]", version="%prog $Id: $") parser.add_option("-n", "--dry-run", @@ -269,9 +270,10 @@ def processtexfiles(args): # support for pstricks/plain latex: tex = detecttextype(dirname, texname) - # detect usage of german/ngerman - rmligs = detectrmligs(dirname, texname) - realname = preparermligs(texname, dirname, tmplist) + # detect usage of german/ngerman and generate temporary files with rmlig + realname = texname + if detectrmligs(dirname, texname): + realname = preparermligs(texname, dirname, tmplist) runtex(tex, texname, realname, dirname) @@ -402,9 +404,9 @@ def run(arglist, dirname, reason="", stdin=None, stdout=None): if ret: error(dirname, "failed command: %s"%(" ".join(arglist))) +re_include = re.compile('\\\\include\\{([^}]*)\\}') def preparermligs(texname, dirname, tmplist): jobname=texname[:-4] - rmligsname=jobname+"-rmligs.tex" if options.progress: print " running rmligs on %s..."%texname try: @@ -415,10 +417,18 @@ def preparermligs(texname, dirname, tmplist): else: try: if options.act: - rmligsfile = open(os.path.join(dirname, rmligsname), "w") + (rmligsfd, rmligspath) = tempfile.mkstemp("-rmligs.tex", "%s-"%jobname, dirname) + realrmligspath = os.path.realpath(rmligspath) + realdirname = os.path.realpath(dirname) + if realrmligspath[:len(realdirname)] == realdirname: + rmligsname = realrmligspath[len(realdirname)+1:] + else: + rmligsname = rmligspath # should not happen + rmligsfile = os.fdopen(rmligsfd, "w") else: + rmligsname = jobname + "-rmligs-XXXXX.tex" rmligsfile = null - except exceptIOError, (errno, strerror): + except IOError, (errno, strerror): error(rmligsname, "could not be written: %s. Not using rmligs."%strerror) return texname else: @@ -426,16 +436,16 @@ def preparermligs(texname, dirname, tmplist): proc = subprocess.Popen([rmligs_name, "-f"], stdin=texfile, stdout=subprocess.PIPE, cwd=dirname) def rewriteinputrmligs(m): - name=m.group(2) + name=m.group(1) if not os.path.isfile(os.path.join(dirname,name)): name+=".tex" if os.path.isfile(os.path.join(dirname, name)): name = preparermligs(name, dirname, tmplist) else: - error(name, "File could not be located. Not using rmligs.", warning=True) - return "\\%s{%s}"%(m.group(1), name) + error(texname, "%s: File could not be located. Not using rmligs."%name, warning=True) + return "\\include{%s}"%name for line in proc.stdout: - rmligsfile.write(re_inputinclude.sub(rewriteinputrmligs, line)) + rmligsfile.write(re_include.sub(rewriteinputrmligs, line)) texfile.close() if rmligsfile is not null: rmligsfile.close() |
