]> git.lyx.org Git - features.git/commitdiff
Handle LaTeX layout, and collapse consecutive ERT insets
authorDekel Tsur <dekelts@tau.ac.il>
Fri, 2 Aug 2002 20:34:20 +0000 (20:34 +0000)
committerDekel Tsur <dekelts@tau.ac.il>
Fri, 2 Aug 2002 20:34:20 +0000 (20:34 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@4851 a592a061-630c-0410-9148-cb99ea01b6c8

lib/ChangeLog
lib/lyx2lyx/lyxconvert_218.py
lib/lyx2lyx/parser_tools.py

index 5f322309035a976504b17a83f216ac09a810c73a..e99ae2f90170ff87cf9a24745e026370ce105ec3 100644 (file)
@@ -1,3 +1,7 @@
+2002-08-02  Dekel Tsur  <dekelts@tau.ac.il>
+
+       * lyx2lyx/lyxconvert_218.py: Convert ERT and figinsets.
+
 2002-07-30  André Pönitz <poenitz@gmx.net>
        
        * configure.m4:
index 117ec6db4f255dee22f23b9fde7c466c590a86d5..42f9161a45593f0fcb8cd3bea4d35fce7e2493df 100644 (file)
@@ -155,24 +155,20 @@ def remove_oldminipage(lines):
        i = i+1
 
 def is_empty(lines):
-    for line in lines:
-       line = line[:-1]
-       if line != " "*len(line):
-           return 0
-    return 1
+    return filter(is_nonempty_line, lines) == []
 
 font_rexp =  re.compile(r"\\(family|series|shape|size|emph|numeric|bar|noun)")
 ert_rexp = re.compile(r"\\begin_inset|.*\\SpecialChar")
 spchar_rexp = re.compile(r"(.*)(\\SpecialChar.*)")
+ert_begin = ["\\begin_inset ERT",
+            "status Collapsed",
+            "",
+            "\\layout Standard"]
 
 def remove_oldert(lines):
-    ert_begin = ["\\begin_inset ERT",
-                "status Collapsed",
-                "",
-                "\\layout Standard"]
     i = 0
     while 1:
-       i = find_token(lines, "\\latex latex", i)
+       i = find_tokens(lines, ["\\latex latex", "\\layout LaTeX"], i)
        if i == -1:
            break
        j = find_tokens(lines, ["\\latex default", "\\layout", "\\end_float"],
@@ -186,6 +182,10 @@ def remove_oldert(lines):
        # We need to remove insets, special chars & font commands from ERT text
        new = []
        new2 = []
+       if check_token(lines[i], "\\layout LaTeX"):
+           new = ["\layout Standard", "", ""]
+           # We have a problem with classes in which Standard is not the default layout!
+
        k = i+1
        while 1:
            k2 = find_re(lines, ert_rexp, k, j)
@@ -229,7 +229,38 @@ def remove_oldert(lines):
        lines[i:j+1] = new
        i = i+1
 
+def is_ert_paragraph(lines, i):
+    i = find_nonempty_line(lines, i+1)
+    if not check_token(lines[i], "\\begin_inset ERT"):
+       return 0
+    j = find_token(lines, "\\end_inset", i)
+    k = find_nonempty_line(lines, j+1)
+    return check_token(lines[k], "\\layout")
+
+def combine_ert(lines):
+    i = 0
+    while 1:
+       i = find_token(lines, "\\begin_inset ERT", i)
+       if i == -1:
+           break
+       j = find_token_backwards(lines,"\\layout", i-1)
+       count = 0
+       text = []
+       while is_ert_paragraph(lines, j):
+
+           count = count+1
+           i2 = find_token(lines, "\\layout", j+1)
+           k = find_token(lines, "\\end_inset", i2+1)
+           text = text+lines[i2:k]
+           j = find_token(lines, "\\layout", k+1)
+           if j == -1:
+               break
 
+       if count >= 2:
+           lines[i+1:k] = text
+
+       i = i+1
+       
 oldunits = ["pt", "cm", "in", "text%", "col%"]
 
 def get_length(lines, name, start, end):
@@ -316,6 +347,7 @@ def convert(header, body):
 
     change_preamble(header)
     remove_oldert(body)
+    combine_ert(body)
     remove_oldminipage(body)
     remove_oldfloat(body, language)
     remove_figinset(body)
index 62455364da2929786f0326a12276bad6bb67aafa..f75eeac204cd6f584affb942721e037986b3eaee 100644 (file)
@@ -64,7 +64,19 @@ def get_value(lines, token, start, end = 0):
     if i == -1:
        return ""
     return string.split(lines[i])[1]
-    
+
+def is_nonempty_line(line):
+    line = line[:-1]
+    return line != " "*len(line)
+
+def find_nonempty_line(lines, start, end = 0):
+    if end == 0:
+       end = len(lines)
+    for i in xrange(start, end):
+       if is_nonempty_line(lines[i]):
+           return i
+    return -1
+
 def set_format(lines, number):
     i = find_token(lines, "\\lyxformat", 0)
     lines[i] = "\\lyxformat %s" % number