# Pre-compiled regular expressions.
re_lyxfile = re.compile("\.lyx$")
-re_input = re.compile(r'^(.*)\\(input|include){(\s*)(\S+)(\s*)}.*$')
-re_ertinput = re.compile(r'^(input|include)({)(\s*)(\S+)(\s*)}.*$')
-re_package = re.compile(r'^(.*)\\(usepackage){(\s*)(\S+)(\s*)}.*$')
-re_class = re.compile(r'^(\\)(textclass)(\s+)(\S+)$')
-re_norecur = re.compile(r'^(.*)\\(verbatiminput|lstinputlisting|includegraphics\[*.*\]*){(\s*)(\S+)(\s*)}.*$')
-re_ertnorecur = re.compile(r'^(verbatiminput|lstinputlisting|includegraphics\[*.*\]*)({)(\s*)(\S+)(\s*)}.*$')
-re_filename = re.compile(r'^(\s*)(filename)(\s+)(\S+)$')
-re_options = re.compile(r'^(\s*)options(\s+)(\S+)$')
-re_bibfiles = re.compile(r'^(\s*)bibfiles(\s+)(\S+)$')
+re_input = re.compile(r'^(.*)\\(input|include){(\s*)(.+)(\s*)}.*$')
+re_ertinput = re.compile(r'^(input|include)({)(\s*)(.+)(\s*)}.*$')
+re_package = re.compile(r'^(.*)\\(usepackage){(\s*)(.+)(\s*)}.*$')
+re_class = re.compile(r'^(\\)(textclass)(\s+)(.+)\s*$')
+re_norecur = re.compile(r'^(.*)\\(verbatiminput|lstinputlisting|includegraphics\[*.*\]*){(\s*)(.+)(\s*)}.*$')
+re_ertnorecur = re.compile(r'^(verbatiminput|lstinputlisting|includegraphics\[*.*\]*)({)(\s*)(.+)(\s*)}.*$')
+re_filename = re.compile(r'^(\s*)(filename)(\s+)(.+)\s*$')
+re_options = re.compile(r'^(\s*)options(\s+)(.+)\s*$')
+re_bibfiles = re.compile(r'^(\s*)bibfiles(\s+)(.+)\s*$')
def usage(prog_name):
j = 0
while j < len(bibfiles):
if os.path.isabs(bibfiles[j]):
- file = bibfiles[j]
+ file = bibfiles[j] + '.bib'
else:
file = os.path.join(curdir, bibfiles[j] + '.bib')
if os.path.exists(file):
return 0
-def find_lyx2lyx(progloc):
+def find_lyx2lyx(progloc, path):
" Find a usable version of the lyx2lyx script. "
# first we will see if the script is roughly where we are
# i.e., we will assume we are in $SOMEDIR/scripts and look
path = string.split(os.environ["PATH"], os.pathsep)
if lyx2lyx == None:
- lyx2lyx = find_lyx2lyx(ourprog)
+ lyx2lyx = find_lyx2lyx(ourprog, path)
# Initialize the list with the specified LyX file and recursively
# gather all required files (also from child documents).
# Find the topmost dir common to all files
if len(incfiles) > 1:
topdir = os.path.commonprefix(incfiles)
+ # Check whether topdir is valid, as os.path.commonprefix() works on
+ # a character by character basis, rather than on path elements.
+ if not os.path.exists(topdir):
+ topdir = os.path.dirname(topdir) + os.path.sep
else:
topdir = os.path.dirname(incfiles[0]) + os.path.sep