]> git.lyx.org Git - features.git/commitdiff
Fix some problems with lyx2lyx_tools.revert_languages().
authorGünter Milde <milde@lyx.org>
Mon, 3 Jun 2019 07:03:13 +0000 (09:03 +0200)
committerGünter Milde <milde@lyx.org>
Mon, 3 Jun 2019 14:58:10 +0000 (16:58 +0200)
Amends 7bb30286.

Tested cases are now handled fine.

(There are still many cases where the language support emulation
is too complex for lyx2lyx and manual fixes are required after
lyx2lyx conversion.)

development/autotests/invertedTests
lib/lyx2lyx/lyx2lyx_tools.py
lib/lyx2lyx/lyx_2_3.py

index d5df2ec8defaab06ff37da9cd366e2730ad31e7e..c9bd8269650cfd59e31dbcbcfdb1029ed73f6db8 100644 (file)
@@ -77,12 +77,6 @@ export/examples/ja/Graphics_and_Insets/XY-Pic.*_systemF
 # Document class js*.cls requires platex <-> Xe/LuaTeX,
 # fixed with "bxjs*.cls"
 
-# lyx2lyx: revert_language() compilation errors (cf. #9633)
-# ! LaTeX Error: \begin{otherlanguage} on input line 36 ended by \end{quote}.
-# with friulan, occitan, and piedmontese also:
-#   ! LaTeX Error: Can be used only in preamble.
-#   l.42 \AtEndPreamble  
-export/export/lyx2lyx/revert-languages-.*_lyx(16|2[012])
 
 # ================================================
 Sublabel: lyxbugs
index d59ec15175313010922e3ecd7b8c1d60062a733c..97745b1dfde1ef5dca34d32d7cc0b30e3d673d19 100644 (file)
@@ -657,7 +657,7 @@ def revert_language(document, lyxname, babelname="", polyglossianame=""):
             document.warning("Malformed document! Missing \\language_package")
         else:
             pack = get_value(document.header, "\\language_package", i)
-            if pack == "default" or pack == "auto":
+            if pack in ("default", "auto"):
                 use_polyglossia = True
 
     # Do we use this language with polyglossia?
@@ -704,6 +704,18 @@ def revert_language(document, lyxname, babelname="", polyglossianame=""):
             document.body.insert(i, " ")
             continue
         
+        # TODO: handle nesting issues with font attributes, e.g.
+        # \begin_layout Standard
+        # 
+        # \emph on
+        # \lang macedonian
+        # Македонски јазик
+        # \emph default
+        #  — јужнословенски јазик, дел од групата на словенски јазици од јазичното
+        #  семејство на индоевропски јазици.
+        #  Македонскиот е службен и национален јазик во Македонија.
+        # \end_layout
+        
         # Ensure correct handling of list labels
         if (parent[0] in ["Labeling", "Description"]
             and not " " in "\n".join(document.body[parent[3]:i])):
@@ -767,8 +779,11 @@ def revert_language(document, lyxname, babelname="", polyglossianame=""):
                 end_cmd = "\\end{otherlanguage}"
 
         if (not primary or texname == "english"):
-            document.body[i_e:i_e] = put_cmd_in_ert(end_cmd)
-            document.body[i+1:i+1] = put_cmd_in_ert(begin_cmd)
+            try:
+                document.body[i_e:i_e] = put_cmd_in_ert(end_cmd)
+                document.body[i+1:i+1] = put_cmd_in_ert(begin_cmd)
+            except UnboundLocalError:
+                pass
         del document.body[i]
 
     if not (primary or secondary):
@@ -794,6 +809,6 @@ def revert_language(document, lyxname, babelname="", polyglossianame=""):
             doc_lang_switch = "\\resetdefaultlanguage{%s}" % polyglossianame
 
     # Reset LaTeX main language if required and not already done
-    if doc_lang_switch and doc_lang_switch not in document.body[8:20] != doc_lang_switch:
+    if doc_lang_switch and doc_lang_switch[1:] not in document.body[8:20]:
         document.body[2:2] = put_cmd_in_ert(doc_lang_switch,
                                             is_open=True, as_paragraph=True)
index 48e0dab82e4d8fbf28d649754fe40d49da65d6b1..ff9f784c88c2ac7a2299b5ba988f56a4330df531 100644 (file)
@@ -221,12 +221,12 @@ def revert_new_babel_languages(document):
             # These are supported by babel and polyglossia
             revert_language(document, lang, lang, lang)
 
-
 # TODO:
 # def convert_new_babel_languages(document)
 # set to native support if get_value(document.header, "\\options") in
 # ["bosnian", "friulan", "macedonian", "piedmontese", "romansh"]
-# and "\\language_package babel".
+# and Babel is used.
+
 
 def revert_amharic(document):
     "Set the document language to English but assure Amharic output"