# 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
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
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:
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:
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
#
[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]],