X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Flyx2lyx%2Flyx_2_1.py;h=91666ba4e2746048586fa8c82c80dc21b5d3d248;hb=a84a98b54561044b5902dfce39bc31082877fec1;hp=470414336586d246b0471a5e9485ffca9c68b4a4;hpb=f626cfb7a302f08dc828dfc3156838e26b0bbd3e;p=lyx.git diff --git a/lib/lyx2lyx/lyx_2_1.py b/lib/lyx2lyx/lyx_2_1.py index 4704143365..91666ba4e2 100644 --- a/lib/lyx2lyx/lyx_2_1.py +++ b/lib/lyx2lyx/lyx_2_1.py @@ -25,19 +25,18 @@ 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, \ - find_end_of_layout, find_re, get_option_value, get_value, get_quoted_value, \ - set_option_value +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_containing_layout, \ + 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, get_value, get_quoted_value, \ - #del_token, check_token + #is_in_inset, del_token, check_token -from lyx2lyx_tools import add_to_preamble, put_cmd_in_ert +from lyx2lyx_tools import add_to_preamble, put_cmd_in_ert, get_ert #from lyx2lyx_tools import insert_to_preamble, \ -# put_cmd_in_ert, lyx2latex, latex_length, revert_flex_inset, \ +# lyx2latex, latex_length, revert_flex_inset, \ # revert_font_attrs, hex2ratio, str2bool #################################################################### @@ -215,15 +214,14 @@ def revert_australian(document): "Set English language variants Australian and Newzealand to English" if document.language == "australian" or document.language == "newzealand": - document.language = "english" + document.language = "english" i = find_token(document.header, "\\language", 0) if i != -1: document.header[i] = "\\language english" - j = 0 while True: j = find_token(document.body, "\\lang australian", j) - if j == -1: + if j == -1: j = find_token(document.body, "\\lang newzealand", 0) if j == -1: return @@ -348,27 +346,26 @@ def convert_use_packages(document): "use_xxx yyy => use_package xxx yyy" packages = ["amsmath", "esint", "mathdots", "mhchem", "undertilde"] for p in packages: - i = find_token(document.header, "\\use_%s" % p , 0) + i = find_token(document.header, "\\use_%s" % p, 0) if i != -1: - value = get_value(document.header, "\\use_%s" % p , i) + value = get_value(document.header, "\\use_%s" % p, i) document.header[i] = "\\use_package %s %s" % (p, value) def revert_use_packages(document): "use_package xxx yyy => use_xxx yyy" - packages = {"amsmath":"1", "esint":"1", "mathdots":"1", "mhchem":"1", "undertilde":"1"} + packages = ["amsmath", "esint", "mathdots", "mhchem", "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 = -1 - for p in packages.keys(): + j = 0 + for p in packages: regexp = re.compile(r'(\\use_package\s+%s)' % p) - i = find_re(document.header, regexp, 0) + i = find_re(document.header, regexp, j) if i != -1: - value = get_value(document.header, "\\use_package" , i).split()[1] + value = get_value(document.header, "\\use_package %s" % p, i).split()[1] del document.header[i] j = i - for (p, v) in packages.items(): - document.header.insert(j, "\\use_%s %s" % (p, value)) + document.header.insert(j, "\\use_%s %s" % (p, value)) j = j + 1 @@ -445,7 +442,7 @@ def revert_cite_engine_type(document): del document.header[i] # We are looking for the natbib citation engine - i = find_token(document.header, "\\cite_engine natbib", i) + i = find_token(document.header, "\\cite_engine natbib", 0) if i == -1: return document.header[i] = "\\cite_engine natbib_" + engine_type @@ -573,6 +570,1262 @@ def revert_tipa(document): i = j +def revert_cell_rotation(document): + "Revert cell rotations to TeX-code" + + load_rotating = False + i = 0 + try: + while True: + # first, let's find out if we need to do anything + i = find_token(document.body, '', j) + k = document.body[i].find('"', j + 8) + value = document.body[i][j + 8 : k] + if value == "0": + rgx = re.compile(r' rotate="[^"]+?"') + # remove rotate option + document.body[i] = rgx.sub('', document.body[i]) + elif value == "90": + rgx = re.compile(r'rotate="[^"]+?"') + document.body[i] = rgx.sub('rotate="true"', document.body[i]) + else: + rgx = re.compile(r' rotate="[^"]+?"') + load_rotating = True + # remove rotate option + document.body[i] = rgx.sub('', document.body[i]) + # write ERT + document.body[end_table + 3 : end_table + 3] = \ + put_cmd_in_ert("\\end{turn}") + document.body[i - 2 : i - 2] = \ + put_cmd_in_ert("\\begin{turn}{" + value + "}") + + i += 1 + + finally: + if load_rotating: + add_to_preamble(document, ["\\@ifundefined{turnbox}{\usepackage{rotating}}{}"]) + + +def convert_table_rotation(document): + 'Convert table rotation statements from "true" to "90"' + + i = 0 + while True: + # first, let's find out if we need to do anything + i = find_token(document.body, ' 0: + # We know for now that this must be the initials module with the Initial layout + # If we get more such modules, we need some automating. + if parent[0] == "Initial": + # Layout has 1 opt and 1 req arg. + # Count the actual arguments + actualargs = 0 + for p in range(parbeg, parend): + if document.body[p] == "\\begin_inset Argument": + actualargs += 1 + if actualargs == 1: + allowed_opts = 0 + first_req = 2 + # Collect all arguments in this paragraph + argnr = 0 + for p in range(parbeg, parend): + if document.body[p] == "\\begin_inset Argument": + argnr += 1 + if allowed_opts != -1: + # We have less arguments than opt + required. + # required must take precedence. + if argnr > allowed_opts and argnr < first_req: + argnr = first_req + document.body[p] = "\\begin_inset Argument %d" % argnr + i = i + 1 + + +def revert_latexargs(document): + " Revert InsetArgument to old syntax " + + i = 0 + rx = re.compile(r'^\\begin_inset Argument (\d+)$') + args = dict() + while True: + # Search for Argument insets + i = find_token(document.body, "\\begin_inset Argument", i) + if i == -1: + return + m = rx.match(document.body[i]) + if not m: + # No ID: inset already reverted + i = i + 1 + continue + # Find containing paragraph layout + parent = get_containing_layout(document.body, i) + if parent == False: + document.warning("Malformed lyx document: Can't find parent paragraph layout") + i = i + 1 + continue + parbeg = parent[1] + parend = parent[2] + # Collect all arguments in this paragraph + realparend = parend + for p in range(parbeg, parend): + m = rx.match(document.body[p]) + if m: + val = int(m.group(1)) + j = find_end_of_inset(document.body, p) + # Revert to old syntax + document.body[p] = "\\begin_inset Argument" + if j == -1: + document.warning("Malformed lyx document: Can't find end of Argument inset") + continue + if val > 0: + args[val] = document.body[p : j + 1] + # Adjust range end + realparend = realparend - len(document.body[p : j + 1]) + # Remove arg inset at this position + del document.body[p : j + 1] + if p >= realparend: + break + # Now sort the arg insets + subst = [""] + for f in sorted(args): + subst += args[f] + del args[f] + # Insert the sorted arg insets at paragraph begin + document.body[parbeg + 1:parbeg + 1] = subst + + i = parbeg + 1 + len(subst) + + +def revert_Argument_to_TeX_brace(document, line, n, nmax, environment): + ''' + Reverts an InsetArgument to TeX-code + usage: + revert_Argument_to_TeX_brace(document, LineOfBeginLayout, StartArgument, EndArgument, isEnvironment) + LineOfBeginLayout is the line of the \begin_layout statement + StartArgument is the number of the first argument that needs to be converted + EndArgument is the number of the last argument that needs to be converted or the last defined one + isEnvironment must be true, if the layout id for a LaTeX environment + ''' + lineArg = 0 + while lineArg != -1 and n < nmax + 1: + lineArg = find_token(document.body, "\\begin_inset Argument " + str(n), line) + if lineArg != -1: + beginPlain = find_token(document.body, "\\begin_layout Plain Layout", lineArg) + # 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[endInset - 2 : endInset + 1] = put_cmd_in_ert("}{") + del(document.body[lineArg : beginPlain + 1]) + else: + document.body[endInset - 2 : endInset + 1] = put_cmd_in_ert("}") + document.body[lineArg : beginPlain + 1] = put_cmd_in_ert("{") + n = n + 1 + + +def revert_IEEEtran(document): + ''' + Reverts InsetArgument of + Page headings + Biography + Biography without photo + to TeX-code + ''' + if document.textclass == "IEEEtran": + i = 0 + j = 0 + k = 0 + while True: + if i != -1: + i = find_token(document.body, "\\begin_layout Page headings", 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 Biography without photo", j) + if j != -1: + revert_Argument_to_TeX_brace(document, j, 1, 1, True) + j = j + 1 + if k != -1: + k = find_token(document.body, "\\begin_layout Biography", k) + kA = find_token(document.body, "\\begin_layout Biography without photo", k) + if k == kA and k != -1: + k = k + 1 + continue + if k != -1: + # start with the second argument, therefore 2 + revert_Argument_to_TeX_brace(document, k, 2, 2, True) + k = k + 1 + if i == -1 and j == -1 and k == -1: + return + + +def convert_TeX_brace_to_Argument(document, line, n, nmax, inset, environment): + ''' + Converts TeX code for mandatory arguments to an InsetArgument + The conversion of TeX code for optional arguments must be done with another routine + !!! Be careful if the braces are different in your case as expected here: + - "}{" separates mandatory arguments of commands + - "}" + "{" separates mandatory arguments of commands + - "}" + " " + "{" separates mandatory arguments of commands + - { and } surround a mandatory argument of an environment + usage: + convert_TeX_brace_to_Argument(document, LineOfBeginLayout/Inset, StartArgument, EndArgument, isInset, isEnvironment) + LineOfBeginLayout/Inset is the line of the \begin_layout or \begin_inset statement + StartArgument is the number of the first ERT that needs to be converted + EndArgument is the number of the last ERT that needs to be converted + isInset must be true, if braces inside an InsetLayout needs to be converted + isEnvironment must be true, if the layout is for a LaTeX environment + + Todo: this routine can currently handle only one mandatory argument of environments + ''' + lineERT = line + endn = line + loop = 1 + while lineERT != -1 and n < nmax + 1: + lineERT = find_token(document.body, "\\begin_inset ERT", lineERT) + if environment == False and lineERT != -1: + bracePair = find_token(document.body, "}{", lineERT) + # assure that the "}{" is in this ERT + if bracePair == lineERT + 5: + end = find_token(document.body, "\\end_inset", bracePair) + document.body[lineERT : end + 1] = ["\\end_layout", "", "\\end_inset"] + if loop == 1: + # in the case that n > 1 we have optional arguments before + # therefore detect them if any + if n > 1: + # first check if there is an argument + lineArg = find_token(document.body, "\\begin_inset Argument", line) + if lineArg < lineERT and lineArg != -1: + # we have an argument, so now search backwards for its end + # we must now assure that we don't find other insets like e.g. a newline + endInsetArg = lineERT + endLayoutArg = endInsetArg + while endInsetArg != endLayoutArg + 2 and endInsetArg != -1: + endInsetArg = endInsetArg - 1 + endLayoutArg = endInsetArg + endInsetArg = find_token_backwards(document.body, "\\end_inset", endInsetArg) + endLayoutArg = find_token_backwards(document.body, "\\end_layout", endLayoutArg) + line = endInsetArg + 1 + if inset == False: + document.body[line + 1 : line + 1] = ["\\begin_inset Argument " + str(n), "status open", "", "\\begin_layout Plain Layout"] + else: + document.body[line + 4 : line + 4] = ["\\begin_inset Argument " + str(n), "status open", "", "\\begin_layout Plain Layout"] + else: + document.body[endn : endn] = ["\\begin_inset Argument " + str(n), "status open", "", "\\begin_layout Plain Layout"] + n = n + 1 + endn = end + loop = loop + 1 + # now check the case that we have "}" + "{" in two ERTs + else: + endBrace = find_token(document.body, "}", lineERT) + if endBrace == lineERT + 5: + beginBrace = find_token(document.body, "{", endBrace) + # assure that the ERTs are consecutive (11 or 12 depending if there is a space between the ERTs or not) + if beginBrace == endBrace + 11 or beginBrace == endBrace + 12: + end = find_token(document.body, "\\end_inset", beginBrace) + document.body[lineERT : end + 1] = ["\\end_layout", "", "\\end_inset"] + if loop == 1: + # in the case that n > 1 we have optional arguments before + # therefore detect them if any + if n > 1: + # first check if there is an argument + lineArg = find_token(document.body, "\\begin_inset Argument", line) + if lineArg < lineERT and lineArg != -1: + # we have an argument, so now search backwards for its end + # we must now assure that we don't find other insets like e.g. a newline + endInsetArg = lineERT + endLayoutArg = endInsetArg + while endInsetArg != endLayoutArg + 2 and endInsetArg != -1: + endInsetArg = endInsetArg - 1 + endLayoutArg = endInsetArg + endInsetArg = find_token_backwards(document.body, "\\end_inset", endInsetArg) + endLayoutArg = find_token_backwards(document.body, "\\end_layout", endLayoutArg) + line = endInsetArg + 1 + if inset == False: + document.body[line + 1 : line + 1] = ["\\begin_inset Argument " + str(n), "status open", "", "\\begin_layout Plain Layout"] + else: + document.body[line + 4 : line + 4] = ["\\begin_inset Argument " + str(n), "status open", "", "\\begin_layout Plain Layout"] + else: + document.body[endn : endn] = ["\\begin_inset Argument " + str(n), "status open", "", "\\begin_layout Plain Layout"] + n = n + 1 + loop = loop + 1 + # set the line where the next argument will be inserted + if beginBrace == endBrace + 11: + endn = end - 11 + else: + endn = end - 12 + else: + lineERT = lineERT + 1 + if environment == True and lineERT != -1: + opening = find_token(document.body, "{", lineERT) + if opening == lineERT + 5: # assure that the "{" is in this ERT + end = find_token(document.body, "\\end_inset", opening) + document.body[lineERT : end + 1] = ["\\begin_inset Argument " + str(n), "status open", "", "\\begin_layout Plain Layout"] + n = n + 1 + lineERT2 = find_token(document.body, "\\begin_inset ERT", lineERT) + closing = find_token(document.body, "}", lineERT2) + if closing == lineERT2 + 5: # assure that the "}" is in this ERT + end2 = find_token(document.body, "\\end_inset", closing) + document.body[lineERT2 : end2 + 1] = ["\\end_layout", "", "\\end_inset"] + else: + lineERT = lineERT + 1 + + +def convert_IEEEtran(document): + ''' + Converts ERT of + Page headings + Biography + Biography without photo + to InsetArgument + ''' + if document.textclass == "IEEEtran": + i = 0 + j = 0 + k = 0 + while True: + if i != -1: + i = find_token(document.body, "\\begin_layout Page headings", i) + if i != -1: + convert_TeX_brace_to_Argument(document, i, 1, 1, False, False) + i = i + 1 + if j != -1: + j = find_token(document.body, "\\begin_layout Biography without photo", j) + if j != -1: + convert_TeX_brace_to_Argument(document, j, 1, 1, False, True) + j = j + 1 + if k != -1: + # assure that we don't handle Biography Biography without photo + k = find_token(document.body, "\\begin_layout Biography", k) + kA = find_token(document.body, "\\begin_layout Biography without photo", k - 1) + if k == kA and k != -1: + k = k + 1 + continue + if k != -1: + # the argument we want to convert is the second one + convert_TeX_brace_to_Argument(document, k, 2, 2, False, True) + k = k + 1 + if i == -1 and j == -1 and k == -1: + return + + +def revert_AASTeX(document): + " Reverts InsetArgument of Altaffilation to TeX-code " + if document.textclass == "aastex": + i = 0 + while True: + if i != -1: + i = find_token(document.body, "\\begin_layout Altaffilation", i) + if i != -1: + revert_Argument_to_TeX_brace(document, i, 1, 1, False) + i = i + 1 + if i == -1: + return + + +def convert_AASTeX(document): + " Converts ERT of Altaffilation to InsetArgument " + if document.textclass == "aastex": + i = 0 + while True: + if i != -1: + i = find_token(document.body, "\\begin_layout Altaffilation", i) + if i != -1: + convert_TeX_brace_to_Argument(document, i, 1, 1, False, False) + i = i + 1 + if i == -1: + return + + +def revert_AGUTeX(document): + " Reverts InsetArgument of Author affiliation to TeX-code " + if document.textclass == "agutex": + i = 0 + while True: + if i != -1: + i = find_token(document.body, "\\begin_layout Author affiliation", i) + if i != -1: + revert_Argument_to_TeX_brace(document, i, 1, 1, False) + i = i + 1 + if i == -1: + return + + +def convert_AGUTeX(document): + " Converts ERT of Author affiliation to InsetArgument " + if document.textclass == "agutex": + i = 0 + while True: + if i != -1: + i = find_token(document.body, "\\begin_layout Author affiliation", i) + if i != -1: + convert_TeX_brace_to_Argument(document, i, 1, 1, False, False) + i = i + 1 + if i == -1: + return + + +def revert_IJMP(document): + " Reverts InsetArgument of MarkBoth to TeX-code " + if document.textclass == "ijmpc" or document.textclass == "ijmpd": + i = 0 + while True: + if i != -1: + i = find_token(document.body, "\\begin_layout MarkBoth", i) + if i != -1: + revert_Argument_to_TeX_brace(document, i, 1, 1, False) + i = i + 1 + if i == -1: + return + + +def convert_IJMP(document): + " Converts ERT of MarkBoth to InsetArgument " + if document.textclass == "ijmpc" or document.textclass == "ijmpd": + i = 0 + while True: + if i != -1: + i = find_token(document.body, "\\begin_layout MarkBoth", i) + if i != -1: + convert_TeX_brace_to_Argument(document, i, 1, 1, False, False) + i = i + 1 + if i == -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_TeX_brace_to_Argument(document, i, 1, 1, False, False) + i = i + 1 + if j != -1: + j = find_token(document.body, "\\begin_layout Author", j) + if j != -1: + convert_TeX_brace_to_Argument(document, j, 1, 2, False, False) + j = j + 1 + if i == -1 and j == -1: + return + + +def revert_SIGGRAPH(document): + " Reverts InsetArgument of Flex CRcat to TeX-code " + if document.textclass == "acmsiggraph": + i = 0 + while True: + if i != -1: + i = find_token(document.body, "\\begin_inset Flex CRcat", i) + if i != -1: + revert_Argument_to_TeX_brace(document, i, 1, 3, False) + i = i + 1 + if i == -1: + return + + +def convert_SIGGRAPH(document): + " Converts ERT of Flex CRcat to InsetArgument " + if document.textclass == "acmsiggraph": + i = 0 + while True: + if i != -1: + i = find_token(document.body, "\\begin_inset Flex CRcat", i) + if i != -1: + convert_TeX_brace_to_Argument(document, i, 1, 3, True, False) + i = i + 1 + if i == -1: + return + + +def revert_EuropeCV(document): + " Reverts InsetArgument of Flex CRcat to TeX-code " + if document.textclass == "europecv": + i = 0 + j = 0 + k = 0 + m = 0 + while True: + if i != -1: + i = find_token(document.body, "\\begin_layout Item", i) + if i != -1: + revert_Argument_to_TeX_brace(document, i, 2, 2, False) + i = i + 1 + if j != -1: + j = find_token(document.body, "\\begin_layout BulletedItem", j) + if j != -1: + revert_Argument_to_TeX_brace(document, j, 2, 2, False) + j = j + 1 + if k != -1: + k = find_token(document.body, "\\begin_layout Language", k) + if k != -1: + revert_Argument_to_TeX_brace(document, k, 2, 6, False) + k = k + 1 + if m != -1: + m = find_token(document.body, "\\begin_layout LastLanguage", m) + if m != -1: + revert_Argument_to_TeX_brace(document, m, 2, 6, False) + m = m + 1 + if i == -1 and j == -1 and k == -1 and m == -1: + return + + +def convert_EuropeCV(document): + " Converts ERT of Flex CRcat to InsetArgument " + if document.textclass == "europecv": + i = 0 + j = 0 + k = 0 + m = 0 + while True: + if i != -1: + i = find_token(document.body, "\\begin_layout Item", i) + if i != -1: + convert_TeX_brace_to_Argument(document, i, 2, 2, False, False) + i = i + 1 + if j != -1: + j = find_token(document.body, "\\begin_layout BulletedItem", j) + if j != -1: + convert_TeX_brace_to_Argument(document, j, 2, 2, False, False) + j = j + 1 + if k != -1: + k = find_token(document.body, "\\begin_layout Language", k) + if k != -1: + convert_TeX_brace_to_Argument(document, k, 2, 6, False, False) + k = k + 1 + if m != -1: + m = find_token(document.body, "\\begin_layout LastLanguage", m) + if m != -1: + convert_TeX_brace_to_Argument(document, m, 2, 6, False, False) + m = m + 1 + if i == -1 and j == -1 and k == -1 and m == -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 " + i = 0 + while True: + i = find_token(document.body, "\\begin_inset Argument item:", i) + if i == -1: + return + j = find_end_of_inset(document.body, i) + # Find containing paragraph layout + parent = get_containing_layout(document.body, i) + if parent == False: + document.warning("Malformed lyx document: Can't find parent paragraph layout") + i = i + 1 + continue + parbeg = parent[1] + beginPlain = find_token(document.body, "\\begin_layout Plain Layout", i) + endPlain = find_end_of_layout(document.body, beginPlain) + content = document.body[beginPlain + 1 : endPlain] + del document.body[i:j+1] + subst = put_cmd_in_ert("[") + content + put_cmd_in_ert("]") + document.body[parbeg + 1:parbeg + 1] = subst + i = i + 1 + + +def revert_garamondx_newtxmath(document): + " Revert native garamond newtxmath definition to LaTeX " + + i = find_token(document.header, "\\font_math", 0) + if i == -1: + return + if find_token(document.header, "\\use_non_tex_fonts false", 0) != -1: + val = get_value(document.header, "\\font_math", i) + if val == "garamondx-ntxm": + add_to_preamble(document, "\\usepackage[garamondx]{newtxmath}") + document.header[i] = "\\font_math auto" + + +def revert_garamondx(document): + " Revert native garamond font definition to LaTeX " + + if find_token(document.header, "\\use_non_tex_fonts false", 0) != -1: + i = find_token(document.header, "\\font_roman garamondx", 0) + if i != -1: + osf = False + j = find_token(document.header, "\\font_osf true", 0) + if j != -1: + osf = True + preamble = "\\usepackage" + if osf: + preamble += "[osfI]" + preamble += "{garamondx}" + add_to_preamble(document, [preamble]) + document.header[i] = "\\font_roman default" + + ## # Conversion hub # @@ -592,10 +1845,56 @@ convert = [ [424, [convert_cite_engine_type]], [425, []], [426, []], - [427, []] + [427, []], + [428, [convert_cell_rotation]], + [429, [convert_table_rotation]], + [430, [convert_listoflistings]], + [431, [convert_use_amssymb]], + [432, []], + [433, [convert_armenian]], + [434, []], + [435, []], + [436, []], + [437, []], + [438, []], + [439, []], + [440, []], + [441, [convert_mdnomath]], + [442, []], + [443, []], + [444, []], + [445, []], + [446, [convert_latexargs]], + [447, [convert_IEEEtran, convert_AASTeX, convert_AGUTeX, convert_IJMP, convert_SIGPLAN, convert_SIGGRAPH, convert_EuropeCV]], + [448, [convert_literate]], + [449, []], + [450, []] ] revert = [ + [449, [revert_garamondx, revert_garamondx_newtxmath]], + [448, [revert_itemargs]], + [447, [revert_literate]], + [446, [revert_IEEEtran, revert_AASTeX, revert_AGUTeX, revert_IJMP, revert_SIGPLAN, revert_SIGGRAPH, revert_EuropeCV]], + [445, [revert_latexargs]], + [444, [revert_uop]], + [443, [revert_biolinum]], + [442, []], + [441, [revert_newtxmath]], + [440, [revert_mdnomath]], + [439, [revert_mathfonts]], + [438, [revert_minionpro]], + [437, [revert_ipadeco, revert_ipachar]], + [436, [revert_texgyre]], + [435, [revert_mathdesign]], + [434, [revert_txtt]], + [433, [revert_libertine]], + [432, [revert_armenian]], + [431, [revert_languages, revert_ancientgreek]], + [430, [revert_use_amssymb]], + [429, [revert_listoflistings]], + [428, [revert_table_rotation]], + [427, [revert_cell_rotation]], [426, [revert_tipa]], [425, [revert_verbatim]], [424, [revert_cancel]],