]> git.lyx.org Git - features.git/commitdiff
Fix math package conversion to 2.0 format
authorGeorg Baum <baum@lyx.org>
Sun, 27 Apr 2014 16:08:24 +0000 (18:08 +0200)
committerGeorg Baum <baum@lyx.org>
Sun, 27 Apr 2014 16:08:24 +0000 (18:08 +0200)
When doing the lyx2lyx round trip of the 2.0.8 user guide from format
413 -> 474 -> 413 you get an invalid document, because the math packages
mhchem and undertilde are incorrectly converted.
It turned out that the old reversion code did only work for particular
package oderings. The new one works for abitrary sorted packages.

lib/lyx2lyx/lyx_2_1.py
status.21x

index 6436ec18481526b4bc9a7375649aa10c5e728500..9ecd00ae1760250f51ab3a38c309197f9c9118b7 100644 (file)
@@ -546,18 +546,26 @@ def convert_use_packages(document):
 
 def revert_use_packages(document):
     "use_package xxx yyy => use_xxx yyy"
-    packages = ["amsmath", "esint", "mathdots", "mhchem", "undertilde"]
+    packages = ["amsmath", "esint", "mhchem", "mathdots", "undertilde"]
     # the order is arbitrary for the use_package version, and not all packages need to be given.
     # Ensure a complete list and correct order (important for older LyX versions and especially lyx2lyx)
-    j = 0
+    # first loop: find line with first package
+    j = -1
     for p in packages:
         regexp = re.compile(r'(\\use_package\s+%s)' % p)
-        i = find_re(document.header, regexp, j)
+        i = find_re(document.header, regexp, 0)
+        if i != -1 and (j < 0 or i < j):
+            j = i
+    # second loop: replace or insert packages in front of all existing ones
+    for p in packages:
+        regexp = re.compile(r'(\\use_package\s+%s)' % p)
+        i = find_re(document.header, regexp, 0)
         if i != -1:
             value = get_value(document.header, "\\use_package %s" % p, i).split()[1]
             del document.header[i]
-            j = i
-            document.header.insert(j, "\\use_%s %s"  % (p, value))
+            document.header.insert(j, "\\use_%s %s" % (p, value))
+        else:
+            document.header.insert(j, "\\use_%s 1" % p)
         j += 1
 
 
index c3d375ef5720749ab3cf7195559a9f45165dc0ea..6c73323e4aa0f54e30f8fbe5b4eeb342c2596dcd 100644 (file)
@@ -67,7 +67,9 @@ What's new
 - Add \justification parameter when converting to 2.1 format (avoids when
   converting back to 2.0 format).
 
-- Fix conversion of argument insets fromn 2.1 to 2.0 format.
+- Fix conversion of argument insets from 2.1 to 2.0 format.
+
+- Fix use math package settings conversion from 2.1 to 2.0 format.
 
 
 * USER INTERFACE