]> git.lyx.org Git - lyx.git/blobdiff - lib/lyx2lyx/lyx_2_1.py
sigplanconf: complete revision of layout and templates/ACM-sigplan.lyx
[lyx.git] / lib / lyx2lyx / lyx_2_1.py
index 26e2131f85dd76097615a91dad1d62562a22aaeb..110b6339b0530505b4cbc98e21c6337fae9e0b33 100644 (file)
@@ -25,13 +25,13 @@ import sys, os
 
 # Uncomment only what you need to import, please.
 
-from parser_tools import del_token, find_token, find_end_of, find_end_of_inset, \
+from parser_tools import del_token, find_token, find_token_backwards, find_end_of, find_end_of_inset, \
     find_end_of_layout, find_re, get_option_value, get_value, get_quoted_value, \
     set_option_value
 
 #from parser_tools import find_token, find_end_of, find_tokens, \
   #find_token_exact, find_end_of_inset, find_end_of_layout, \
-  #find_token_backwards, is_in_inset, del_token, check_token
+  #is_in_inset, del_token, check_token
 
 from lyx2lyx_tools import add_to_preamble, put_cmd_in_ert, get_ert
 
@@ -1181,13 +1181,21 @@ def revert_Argument_to_TeX_brace(document, line, n, nmax, environment):
       lineArg = find_token(document.body, "\\begin_inset Argument " + str(n), line)
       if lineArg != -1:
         beginPlain = find_token(document.body, "\\begin_layout Plain Layout", lineArg)
-        endLayout = find_token(document.body, "\\end_layout", beginPlain)
-        endInset = find_token(document.body, "\\end_inset", endLayout)
+        # we have to assure that no other inset is in the Argument
+        beginInset = find_token(document.body, "\\begin_inset", beginPlain)
+        endInset = find_token(document.body, "\\end_inset", beginPlain)
+        k = beginPlain + 1
+        l = k
+        while beginInset < endInset and beginInset != -1:
+          beginInset = find_token(document.body, "\\begin_inset", k)
+          endInset = find_token(document.body, "\\end_inset", l)
+          k = beginInset + 1
+          l = endInset + 1
         if environment == False:
-          document.body[endLayout : endInset + 1] = put_cmd_in_ert("}{")
+          document.body[endInset - 2 : endInset + 1] = put_cmd_in_ert("}{")
           del(document.body[lineArg : beginPlain + 1])
         else:
-          document.body[endLayout : endInset + 1] = put_cmd_in_ert("}")
+          document.body[endInset - 2 : endInset + 1] = put_cmd_in_ert("}")
           document.body[lineArg : beginPlain + 1] = put_cmd_in_ert("{")
         n = n + 1
 
@@ -1232,7 +1240,7 @@ def revert_IEEEtran(document):
 def convert_Argument_to_TeX_brace(document, line, n, nmax, environment):
     '''
     Converts TeX code to an InsetArgument
-    !!! Be careful if the braces are different in your case as exppected here:
+    !!! Be careful if the braces are different in your case as expected here:
     - }{ separates mandatory arguments of commands
     - { and } surround a mandatory argument of an environment
     usage:
@@ -1257,8 +1265,12 @@ def convert_Argument_to_TeX_brace(document, line, n, nmax, environment):
         if bracePair == lineArg + 5 or bracePair == lineArg + 4:
           end = find_token(document.body, "\\end_inset", bracePair)
           document.body[lineArg : end + 1] = ["\\end_layout", "", "\\end_inset"]
-          document.body[line + 1 : line + 1] = ["\\begin_inset Argument " + str(n), "status open", "", "\\begin_layout Plain Layout"]
+          if n == 1:
+            document.body[line + 1 : line + 1] = ["\\begin_inset Argument " + str(n), "status open", "", "\\begin_layout Plain Layout"]
+          else:
+            document.body[endn + 1 : endn + 1] = ["\\begin_inset Argument " + str(n), "status open", "", "\\begin_layout Plain Layout"]
           n = n + 1
+          endn = end
         else:
           lineArg = lineArg + 1
       if environment == True and lineArg != -1:
@@ -1398,6 +1410,98 @@ def convert_IJMP(document):
         return
 
 
+def revert_SIGPLAN(document):
+  " Reverts InsetArgument of MarkBoth to TeX-code "
+  if document.textclass == "sigplanconf":
+    i = 0
+    j = 0
+    while True:
+      if i != -1:
+        i = find_token(document.body, "\\begin_layout Conference", i)
+      if i != -1:
+        revert_Argument_to_TeX_brace(document, i, 1, 1, False)
+        i = i + 1
+      if j != -1:
+        j = find_token(document.body, "\\begin_layout Author", j)
+      if j != -1:
+        revert_Argument_to_TeX_brace(document, j, 1, 2, False)
+        j = j + 1
+      if i == -1 and j == -1:
+        return
+
+
+def convert_SIGPLAN(document):
+  " Converts ERT of MarkBoth to InsetArgument "
+  if document.textclass == "sigplanconf":
+    i = 0
+    j = 0
+    while True:
+      if i != -1:
+        i = find_token(document.body, "\\begin_layout Conference", i)
+      if i != -1:
+        convert_Argument_to_TeX_brace(document, i, 1, 1, False)
+        i = i + 1
+      if j != -1:
+        j = find_token(document.body, "\\begin_layout Author", j)
+      if j != -1:
+        convert_Argument_to_TeX_brace(document, j, 1, 2, False)
+        j = j + 1
+      if i == -1 and j == -1:
+        return
+
+
+def revert_literate(document):
+    " Revert Literate document to old format "
+    if del_token(document.header, "noweb", 0):
+      document.textclass = "literate-" + document.textclass
+      i = 0
+      while True:
+        i = find_token(document.body, "\\begin_layout Chunk", i)
+        if i == -1:
+          break
+        document.body[i] = "\\begin_layout Scrap"
+        i = i + 1
+
+
+def convert_literate(document):
+    " Convert Literate document to new format"
+    i = find_token(document.header, "\\textclass", 0)    
+    if (i != -1) and "literate-" in document.header[i]:
+      document.textclass = document.header[i].replace("\\textclass literate-", "")
+      j = find_token(document.header, "\\begin_modules", 0)
+      if (j != -1):
+        document.header.insert(j + 1, "noweb")
+      else:
+        document.header.insert(i + 1, "\\end_modules")
+        document.header.insert(i + 1, "noweb")
+        document.header.insert(i + 1, "\\begin_modules")
+      i = 0
+      while True:
+        i = find_token(document.body, "\\begin_layout Scrap", i)
+        if i == -1:
+          break
+        document.body[i] = "\\begin_layout Chunk"
+        i = i + 1
+
+
+def revert_itemargs(document):
+    " Reverts \\item arguments to TeX-code "
+    while True:
+        i = find_token(document.body, "\\begin_inset Argument item:", 0)
+        j = find_end_of_inset(document.body, i)
+        if i == -1:
+            break
+        lastlay = find_token_backwards(document.body, "\\begin_layout", i)
+        beginPlain = find_token(document.body, "\\begin_layout Plain Layout", i)
+        endLayout = find_token(document.body, "\\end_layout", beginPlain)
+        endInset = find_token(document.body, "\\end_inset", endLayout)
+        content = document.body[beginPlain + 1 : endLayout]
+        del document.body[i:j+1]
+        subst = put_cmd_in_ert("[") + content + put_cmd_in_ert("]")
+        document.body[lastlay + 1:lastlay + 1] = subst
+        i = i + 1
+
+
 ##
 # Conversion hub
 #
@@ -1437,11 +1541,15 @@ convert = [
            [444, []],
            [445, []],
            [446, [convert_latexargs]],
-           [447, [convert_IEEEtran, convert_AASTeX, convert_AGUTeX, convert_IJMP]]
+           [447, [convert_IEEEtran, convert_AASTeX, convert_AGUTeX, convert_IJMP, convert_SIGPLAN]],
+           [448, [convert_literate]],
+           [449, []]
           ]
 
 revert =  [
-           [446, [revert_IEEEtran, revert_AASTeX, revert_AGUTeX, revert_IJMP]],
+           [448, [revert_itemargs]],
+           [447, [revert_literate]],
+           [446, [revert_IEEEtran, revert_AASTeX, revert_AGUTeX, revert_IJMP, revert_SIGPLAN]],
            [445, [revert_latexargs]],
            [444, [revert_uop]],
            [443, [revert_biolinum]],