]> git.lyx.org Git - lyx.git/blobdiff - lib/lyx2lyx/lyx_1_6.py
Collapsable -> Collapsible (part 1)
[lyx.git] / lib / lyx2lyx / lyx_1_6.py
index 06738ba1be10e59aa53b4d38c98a98a72f324735..071280836b670f61213117e800e25e9764eedaaa 100644 (file)
@@ -14,7 +14,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
 """ Convert files to the file format generated by lyx 1.6"""
 
@@ -23,6 +23,7 @@ import unicodedata
 import sys, os
 
 from parser_tools import find_token, find_end_of, find_tokens, get_value
+from unicode_symbols import read_unicodesymbols
 
 ####################################################################
 # Private helper functions
@@ -94,7 +95,7 @@ def convert_len(len):
              "theight%":"\\backslash\ntextheight", "pheight%":"\\backslash\npageheight"}
 
     # Convert LyX units to LaTeX units
-    for unit in units.keys():
+    for unit in list(units.keys()):
         if len.find(unit) != -1:
             len = '%f' % (len2value(len) / 100)
             len = len.strip('0') + units[unit]
@@ -145,8 +146,18 @@ def set_option(document, m, option, value):
     return l
 
 
-def read_unicodesymbols():
+# FIXME: Remove this function if the version imported from unicode_symbols works.
+# This function was the predecessor from that function, that in the meanwhile got
+# new fixes.
+def read_unicodesymbols2():
     " Read the unicodesymbols list of unicode characters and corresponding commands."
+
+    # Provide support for both python 2 and 3
+    PY2 = sys.version_info[0] == 2
+    if not PY2:
+        unichr = chr
+    # End of code to support for both python 2 and 3
+
     pathname = os.path.abspath(os.path.dirname(sys.argv[0]))
     fp = open(os.path.join(pathname.strip('lyx2lyx'), 'unicodesymbols'))
     spec_chars = []
@@ -423,7 +434,7 @@ def lyx2latex(document, lines):
             continue
         inert = ert_end >= curline
         content += lyxline2latex(document, lines[curline], inert)
-      
+
     return content
 
 
@@ -438,6 +449,7 @@ def convert_ltcaption(document):
         j = find_end_of_inset(document.body, i + 1)
         if j == -1:
             document.warning("Malformed LyX document: Could not find end of tabular.")
+            i += 1
             continue
 
         nrows = int(document.body[i+1].split('"')[3])
@@ -529,6 +541,7 @@ def convert_tablines(document):
         j = find_end_of_inset(document.body, i + 1)
         if j == -1:
             document.warning("Malformed LyX document: Could not find end of tabular.")
+            i += 1
             continue
 
         m = i + 1
@@ -668,6 +681,7 @@ def fix_wrong_tables(document):
         j = find_end_of_inset(document.body, i + 1)
         if j == -1:
             document.warning("Malformed LyX document: Could not find end of tabular.")
+            i += 1
             continue
 
         m = i + 1
@@ -790,7 +804,7 @@ def convert_flex(document):
         document.body[i] = document.body[i].replace('\\begin_inset CharStyle', '\\begin_inset Flex')
 
 def revert_flex(document):
-    "Revert Flex to Charstyle"
+    "Revert Flex to CharStyle"
     i = 0
     while True:
         i = find_token(document.body, "\\begin_inset Flex", i)
@@ -962,7 +976,7 @@ def revert_pdf_options(document):
 def remove_inzip_options(document):
     "Remove inzipName and embed options from the Graphics inset"
     i = 0
-    while 1:
+    while True:
         i = find_token(document.body, "\\begin_inset Graphics", i)
         if i == -1:
             return
@@ -970,6 +984,8 @@ def remove_inzip_options(document):
         if j == -1:
             # should not happen
             document.warning("Malformed LyX document: Could not find end of graphics inset.")
+            i += 1
+            continue
         # If there's a inzip param, just remove that
         k = find_token(document.body, "\tinzipName", i + 1, j)
         if k != -1:
@@ -988,7 +1004,7 @@ def convert_inset_command(document):
             LatexCommand cmd
     """
     i = 0
-    while 1:
+    while True:
         i = find_token(document.body, "\\begin_inset LatexCommand", i)
         if i == -1:
             return
@@ -1027,7 +1043,7 @@ def revert_inset_command(document):
         will not be able to recognize. Not sure what to do about that.
     """
     i = 0
-    while 1:
+    while True:
         i = find_token(document.body, "\\begin_inset CommandInset", i)
         if i == -1:
             return
@@ -1097,7 +1113,7 @@ def revert_wrapfig_options(document):
 
 
 def convert_latexcommand_index(document):
-    "Convert from LatexCommand form to collapsable form."
+    "Convert from LatexCommand form to collapsible form."
     i = 0
     r1 = re.compile('name "(.*)"')
     while True:
@@ -1129,7 +1145,7 @@ def convert_latexcommand_index(document):
 
 
 def revert_latexcommand_index(document):
-    "Revert from collapsable form to LatexCommand form."
+    "Revert from collapsible form to LatexCommand form."
     i = 0
     while True:
         i = find_token(document.body, "\\begin_inset Index", i)
@@ -1250,7 +1266,7 @@ def revert_japanese_encoding(document):
 def revert_inset_info(document):
     'Replace info inset with its content'
     i = 0
-    while 1:
+    while True:
         i = find_token(document.body, '\\begin_inset Info', i)
         if i == -1:
             return
@@ -1258,6 +1274,8 @@ def revert_inset_info(document):
         if j == -1:
             # should not happen
             document.warning("Malformed LyX document: Could not find end of Info inset.")
+            i += 1
+            continue
         type = 'unknown'
         arg = ''
         for k in range(i, j+1):
@@ -1593,7 +1611,7 @@ def convert_macro_global(document):
     "Remove TeX code command \global when it is in front of a macro"
     # math macros are nowadays already defined \global, so that an additional
     # \global would make the document uncompilable, see
-    # http://bugzilla.lyx.org/show_bug.cgi?id=5371
+    # http://www.lyx.org/trac/ticket/5371
     # We're looking for something like this:
     # \begin_inset ERT
     # status collapsed
@@ -1729,7 +1747,7 @@ def convert_serbocroatian(document):
 def convert_framed_notes(document):
     "Convert framed notes to boxes. "
     i = 0
-    while 1:
+    while True:
         i = find_tokens(document.body, ["\\begin_inset Note Framed", "\\begin_inset Note Shaded"], i)
         if i == -1:
             return
@@ -1758,7 +1776,7 @@ def convert_module_names(document):
     return
   newmodlist = []
   for mod in modlist:
-    if modulemap.has_key(mod):
+    if mod in modulemap:
       newmodlist.append(modulemap[mod])
     else:
       document.warning("Can't find module %s in the module map!" % mod)
@@ -1806,7 +1824,7 @@ def revert_colsep(document):
 def revert_framed_notes(document):
     "Revert framed boxes to notes. "
     i = 0
-    while 1:
+    while True:
         i = find_tokens(document.body, ["\\begin_inset Box Framed", "\\begin_inset Box Shaded"], i)
 
         if i == -1:
@@ -1815,19 +1833,24 @@ def revert_framed_notes(document):
         if j == -1:
             # should not happen
             document.warning("Malformed LyX document: Could not find end of Box inset.")
+            i += 1
+            continue
         k = find_token(document.body, "status", i + 1, j)
         if k == -1:
             document.warning("Malformed LyX document: Missing `status' tag in Box inset.")
-            return
+            i = j
+            continue
         status = document.body[k]
         l = find_default_layout(document, i + 1, j)
         if l == -1:
             document.warning("Malformed LyX document: Missing `\\begin_layout' in Box inset.")
-            return
+            i = j
+            continue
         m = find_token(document.body, "\\end_layout", i + 1, j)
         if m == -1:
             document.warning("Malformed LyX document: Missing `\\end_layout' in Box inset.")
-            return
+            i = j
+            continue
         ibox = find_token(document.body, "has_inner_box 1", i + 1, k)
         pbox = find_token(document.body, "use_parbox 1", i + 1, k)
         if ibox == -1 and pbox == -1:
@@ -1890,7 +1913,8 @@ def revert_nobreakdash(document):
             j = find_token(document.header, "\\use_amsmath", 0)
             if j == -1:
                 document.warning("Malformed LyX document: Missing '\\use_amsmath'.")
-                return
+                i += 1
+                continue
             document.header[j] = "\\use_amsmath 2"
         else:
             i = i + 1
@@ -1918,7 +1942,7 @@ def revert_nocite_key(body, start, end):
 def revert_nocite(document):
     "Revert LatexCommand nocite to ERT"
     i = 0
-    while 1:
+    while True:
         i = find_token(document.body, "\\begin_inset CommandInset citation", i)
         if i == -1:
             return
@@ -2036,7 +2060,7 @@ def revert_serbianlatin(document):
 def revert_rotfloat(document):
     " Revert sideways custom floats. "
     i = 0
-    while 1:
+    while True:
         # whitespace intended (exclude \\begin_inset FloatList)
         i = find_token(document.body, "\\begin_inset Float ", i)
         if i == -1:
@@ -2064,7 +2088,8 @@ def revert_rotfloat(document):
         l = find_default_layout(document, i + 1, j)
         if l == -1:
             document.warning("Malformed LyX document: Missing `\\begin_layout' in Float inset.")
-            return
+            i = j
+            continue
         subst = ['\\begin_layout Standard',
                   '\\begin_inset ERT',
                   'status collapsed', '',
@@ -2098,7 +2123,7 @@ def revert_rotfloat(document):
 def revert_widesideways(document):
     " Revert wide sideways floats. "
     i = 0
-    while 1:
+    while True:
         # whitespace intended (exclude \\begin_inset FloatList)
         i = find_token(document.body, '\\begin_inset Float ', i)
         if i == -1:
@@ -2126,7 +2151,8 @@ def revert_widesideways(document):
         l = find_default_layout(document, i + 1, j)
         if l == -1:
             document.warning("Malformed LyX document: Missing `\\begin_layout' in Float inset.")
-            return
+            i = j
+            continue
         subst = ['\\begin_layout Standard', '\\begin_inset ERT',
                   'status collapsed', '',
                   '\\begin_layout Standard', '', '', '\\backslash',
@@ -2149,7 +2175,7 @@ def revert_widesideways(document):
 def revert_inset_embedding(document, type):
     ' Remove embed tag from certain type of insets'
     i = 0
-    while 1:
+    while True:
         i = find_token(document.body, "\\begin_inset %s" % type, i)
         if i == -1:
             return
@@ -2174,7 +2200,7 @@ def revert_external_embedding(document):
 def convert_subfig(document):
     " Convert subfigures to subfloats. "
     i = 0
-    while 1:
+    while True:
         addedLines = 0
         i = find_token(document.body, '\\begin_inset Graphics', i)
         if i == -1:
@@ -2214,7 +2240,7 @@ def convert_subfig(document):
 def revert_subfig(document):
     " Revert subfloats. "
     i = 0
-    while 1:
+    while True:
         # whitespace intended (exclude \\begin_inset FloatList)
         i = find_tokens(document.body, ['\\begin_inset Float ', '\\begin_inset Wrap'], i)
         if i == -1:
@@ -2285,7 +2311,7 @@ def revert_subfig(document):
                 if opt != -1:
                     optend = find_end_of_inset(document.body, opt)
                     if optend == -1:
-                        document.warning("Malformed lyx document: Missing '\\end_inset' (OptArg).")
+                        document.warning("Malformed LyX document: Missing '\\end_inset' (OptArg).")
                         return
                     optc = find_default_layout(document, opt, optend)
                     if optc == -1:
@@ -2395,6 +2421,7 @@ def revert_spaceinset(document):
         j = find_end_of_inset(document.body, i)
         if j == -1:
             document.warning("Malformed LyX document: Could not find end of space inset.")
+            i += 1
             continue
         document.body[i] = document.body[i].replace('\\begin_inset Space', '\\InsetSpace')
         del document.body[j]
@@ -2497,6 +2524,7 @@ def revert_protected_hfill(document):
         j = find_end_of_inset(document.body, i)
         if j == -1:
             document.warning("Malformed LyX document: Could not find end of space inset.")
+            i += 1
             continue
         del document.body[j]
         subst = document.body[i].replace('\\begin_inset Space \\hspace*{\\fill}', \
@@ -2518,6 +2546,7 @@ def revert_leftarrowfill(document):
         j = find_end_of_inset(document.body, i)
         if j == -1:
             document.warning("Malformed LyX document: Could not find end of space inset.")
+            i += 1
             continue
         del document.body[j]
         subst = document.body[i].replace('\\begin_inset Space \\leftarrowfill{}', \
@@ -2539,6 +2568,7 @@ def revert_rightarrowfill(document):
         j = find_end_of_inset(document.body, i)
         if j == -1:
             document.warning("Malformed LyX document: Could not find end of space inset.")
+            i += 1
             continue
         del document.body[j]
         subst = document.body[i].replace('\\begin_inset Space \\rightarrowfill{}', \
@@ -2560,6 +2590,7 @@ def revert_upbracefill(document):
         j = find_end_of_inset(document.body, i)
         if j == -1:
             document.warning("Malformed LyX document: Could not find end of space inset.")
+            i += 1
             continue
         del document.body[j]
         subst = document.body[i].replace('\\begin_inset Space \\upbracefill{}', \
@@ -2581,6 +2612,7 @@ def revert_downbracefill(document):
         j = find_end_of_inset(document.body, i)
         if j == -1:
             document.warning("Malformed LyX document: Could not find end of space inset.")
+            i += 1
             continue
         del document.body[j]
         subst = document.body[i].replace('\\begin_inset Space \\downbracefill{}', \
@@ -2648,6 +2680,7 @@ def revert_pagebreaks(document):
         j = find_end_of_inset(document.body, i)
         if j == -1:
             document.warning("Malformed LyX document: Could not find end of Newpage inset.")
+            i += 1
             continue
         del document.body[j]
         document.body[i] = document.body[i].replace('\\begin_inset Newpage newpage', '\\newpage')
@@ -2684,6 +2717,7 @@ def revert_linebreaks(document):
         j = find_end_of_inset(document.body, i)
         if j == -1:
             document.warning("Malformed LyX document: Could not find end of Newline inset.")
+            i += 1
             continue
         del document.body[j]
         document.body[i] = document.body[i].replace('\\begin_inset Newline newline', '\\newline')
@@ -2710,7 +2744,7 @@ def convert_japanese_plain(document):
 def revert_pdfpages(document):
     ' Revert pdfpages external inset to ERT '
     i = 0
-    while 1:
+    while True:
         i = find_token(document.body, "\\begin_inset External", i)
         if i == -1:
             return
@@ -2812,7 +2846,7 @@ def revert_master(document):
 def revert_graphics_group(document):
     ' Revert group information from graphics insets '
     i = 0
-    while 1:
+    while True:
         i = find_token(document.body, "\\begin_inset Graphics", i)
         if i == -1:
             return
@@ -2842,7 +2876,7 @@ def update_apa_styles(document):
                     "Paragraph*":      "Paragraph",
                     "Subparagraph*":   "Subparagraph"}
     i = 0
-    while 1:
+    while True:
         i = find_token(document.body, "\\begin_layout", i)
         if i == -1:
             return
@@ -2856,7 +2890,7 @@ def update_apa_styles(document):
 
 def convert_paper_sizes(document):
     ' exchange size options legalpaper and executivepaper to correct order '
-    # routine is needed to fix http://bugzilla.lyx.org/show_bug.cgi?id=4868
+    # routine is needed to fix http://www.lyx.org/trac/ticket/4868
     i = 0
     j = 0
     i = find_token(document.header, "\\papersize executivepaper", 0)