From: Juergen Spitzmueller Date: Thu, 20 Jul 2023 13:09:47 +0000 (+0200) Subject: Update covington support in linguistics module (file format change) X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=2841a1c06315edb7dd3a264746c093ee4c1a7c9f;p=features.git Update covington support in linguistics module (file format change) --- diff --git a/development/FORMAT b/development/FORMAT index 48ee9243f2..11acdfc99f 100644 --- a/development/FORMAT +++ b/development/FORMAT @@ -7,6 +7,15 @@ changes happened in particular if possible. A good example would be ----------------------- +2023-07-20 Jürgen Spitzmüller + * Format incremented to 617: Update covington support in linguistics module: + - Support enviroment option of example and examples + - Support angular item argument of examples and subexamples (this shifts item + argument structure) + - Support new optional arguments of \digloss and \trigloss (this shifts argument + structure) + - Support \expreamble and \subexpreamble macros + 2022-12-25 Richard Kimberly Heck * Format incremented to 614: New "Other" type for hyperlinks diff --git a/lib/layouts/linguistics.module b/lib/layouts/linguistics.module index 8bfb213d98..4c04255662 100644 --- a/lib/layouts/linguistics.module +++ b/lib/layouts/linguistics.module @@ -81,6 +81,12 @@ Style Numbered_Example_(multiline) Color textlabel1 EndFont Requires covington + Argument 1 + LabelString "Example options" + MenuString "Examples options|s" + Tooltip "Add examples options here" + PassThru 1 + EndArgument Category Linguistics DocBookWrapperTag informalexample DocBookWrapperAttr role='numbered' @@ -108,6 +114,12 @@ Style Numbered_Examples_(consecutive) EndFont EndArgument Argument item:1 + LabelString "Judgment|J" + Tooltip "Grammaticality judgment marker" + LeftDelim < + RightDelim > + EndArgument + Argument item:2 LabelString "Custom Numbering|s" Tooltip "Customize the numeration" EndArgument @@ -135,6 +147,21 @@ Style Subexample HTMLClass SubExample End +InsetLayout Flex:Example_Preamble + LyXType custom + Decoration classic + LatexType command + LatexName expreamble + LabelString "Ex. Preamble" + ResetsFont true +End + +InsetLayout Flex:Subexample_Preamble + CopyStyle Flex:Example_Preamble + LatexName subexpreamble + LabelString "Subex. Preamble" +End + # # Interlinear Glosses @@ -164,6 +191,11 @@ InsetLayout Flex:Interlinear_Gloss_(2_Lines) Tooltip "Add digloss options here" EndArgument Argument post:1 + LabelString "Sentence Comment" + MenuString "Sentence Comment" + Tooltip "Add an optional sentence comment here" + EndArgument + Argument post:2 Decoration conglomerate LabelString "Interlinear Gloss" MenuString "Interlinear Gloss" @@ -173,7 +205,12 @@ InsetLayout Flex:Interlinear_Gloss_(2_Lines) FreeSpacing true InsertOnNewline true EndArgument - Argument post:2 + Argument post:3 + LabelString "Gloss Comment" + MenuString "Gloss Comment" + Tooltip "Add an optional gloss comment here" + EndArgument + Argument post:4 Decoration conglomerate LabelString "Translation" MenuString "Gloss Translation" @@ -210,6 +247,11 @@ InsetLayout Flex:Interlinear_Gloss_(3_Lines) Tooltip "Add trigloss options here" EndArgument Argument post:1 + LabelString "Sentence Comment" + MenuString "Sentence Comment" + Tooltip "Add an optional sentence comment here" + EndArgument + Argument post:2 Decoration conglomerate LabelString "Interlinear Gloss (1)" MenuString "Interlinear Gloss (Line 1)|1" @@ -219,17 +261,27 @@ InsetLayout Flex:Interlinear_Gloss_(3_Lines) FreeSpacing true InsertOnNewline true EndArgument - Argument post:2 + Argument post:3 + LabelString "Gloss Comment (1)" + MenuString "Gloss Comment (Line 1)" + Tooltip "Add an optional gloss comment here" + EndArgument + Argument post:4 Decoration conglomerate LabelString "Interlinear Gloss (2)" MenuString "Interlinear Gloss (Line 2)|2" - Tooltip "Add the first inter-linear gloss line here" + Tooltip "Add the second inter-linear gloss line here" Mandatory true AutoInsert true FreeSpacing true InsertOnNewline true EndArgument - Argument post:3 + Argument post:5 + LabelString "Gloss Comment (2)" + MenuString "Gloss Comment (Line 2)" + Tooltip "Add an optional gloss comment here" + EndArgument + Argument post:6 Decoration conglomerate LabelString "Translation" MenuString "Gloss Translation" diff --git a/lib/lyx2lyx/lyx_2_4.py b/lib/lyx2lyx/lyx_2_4.py index 8c0b9c3039..dd092e9778 100644 --- a/lib/lyx2lyx/lyx_2_4.py +++ b/lib/lyx2lyx/lyx_2_4.py @@ -5007,6 +5007,521 @@ def convert_empty_macro(document): i += 1 +def convert_cov_options(document): + """Update examples item argument structure""" + + if "linguistics" not in document.get_module_list(): + return + + layouts = ["Numbered Examples (consecutive)", "Subexample"] + + for layout in layouts: + i = 0 + while True: + i = find_token(document.body, "\\begin_layout %s" % layout, i) + if i == -1: + break + j = find_end_of_layout(document.body, i) + if j == -1: + document.warning("Malformed LyX document: Can't find end of example layout at line %d" % i) + i += 1 + continue + k = find_token(document.body, '\\begin_inset Argument item:1', i, j) + if k != -1: + document.body[k] = '\\begin_inset Argument item:2' + i += 1 + # Shift gloss arguments + i = 0 + while True: + i = find_token(document.body, "\\begin_inset Flex Interlinear Gloss (2 Lines)", i) + if i == -1: + break + j = find_end_of_inset(document.body, i) + if j == -1: + document.warning("Malformed LyX document: Can't find end of gloss inset at line %d" % i) + i += 1 + continue + k = find_token(document.body, '\\begin_inset Argument post:2', i, j) + if k != -1: + document.body[k] = '\\begin_inset Argument post:4' + k = find_token(document.body, '\\begin_inset Argument post:1', i, j) + if k != -1: + document.body[k] = '\\begin_inset Argument post:2' + i += 1 + + i = 0 + while True: + i = find_token(document.body, "\\begin_inset Flex Interlinear Gloss (3 Lines)", i) + if i == -1: + break + j = find_end_of_inset(document.body, i) + if j == -1: + document.warning("Malformed LyX document: Can't find end of gloss inset at line %d" % i) + i += 1 + continue + k = find_token(document.body, '\\begin_inset Argument post:3', i, j) + if k != -1: + document.body[k] = '\\begin_inset Argument post:6' + k = find_token(document.body, '\\begin_inset Argument post:2', i, j) + if k != -1: + document.body[k] = '\\begin_inset Argument post:4' + k = find_token(document.body, '\\begin_inset Argument post:1', i, j) + if k != -1: + document.body[k] = '\\begin_inset Argument post:2' + i += 1 + + +def revert_linggloss2(document): + " Revert gloss with new args to ERT " + + if not "linguistics" in document.get_module_list(): + return + + cov_req = False + glosses = ["\\begin_inset Flex Interlinear Gloss (2 Lines)", "\\begin_inset Flex Interlinear Gloss (3 Lines)"] + for glosse in glosses: + i = 0 + while True: + i = find_token(document.body, glosse, i+1) + if i == -1: + break + j = find_end_of_inset(document.body, i) + if j == -1: + document.warning("Malformed LyX document: Can't find end of Gloss inset") + continue + + # Check if we have new options + arg = find_token(document.body, "\\begin_inset Argument post:1", i, j) + if arg == -1: + arg = find_token(document.body, "\\begin_inset Argument post:3", i, j) + if arg == -1: + arg = find_token(document.body, "\\begin_inset Argument post:5", i, j) + if arg == -1: + # nothing to do + continue + + arg = find_token(document.body, "\\begin_inset Argument 1", i, j) + endarg = find_end_of_inset(document.body, arg) + optargcontent = [] + if arg != -1: + argbeginPlain = find_token(document.body, "\\begin_layout Plain Layout", arg, endarg) + if argbeginPlain == -1: + document.warning("Malformed LyX document: Can't find optarg plain Layout") + continue + argendPlain = find_end_of_inset(document.body, argbeginPlain) + optargcontent = document.body[argbeginPlain + 1 : argendPlain - 2] + + # remove Arg insets and paragraph, if it only contains this inset + if document.body[arg - 1] == "\\begin_layout Plain Layout" and find_end_of_layout(document.body, arg - 1) == endarg + 3: + del document.body[arg - 1 : endarg + 4] + else: + del document.body[arg : endarg + 1] + + arg = find_token(document.body, "\\begin_inset Argument post:1", i, j) + endarg = find_end_of_inset(document.body, arg) + marg1content = [] + if arg != -1: + argbeginPlain = find_token(document.body, "\\begin_layout Plain Layout", arg, endarg) + if argbeginPlain == -1: + document.warning("Malformed LyX document: Can't find arg 1 plain Layout") + continue + argendPlain = find_end_of_inset(document.body, argbeginPlain) + marg1content = document.body[argbeginPlain + 1 : argendPlain - 2] + + # remove Arg insets and paragraph, if it only contains this inset + if document.body[arg - 1] == "\\begin_layout Plain Layout" and find_end_of_layout(document.body, arg - 1) == endarg + 3: + del document.body[arg - 1 : endarg + 4] + else: + del document.body[arg : endarg + 1] + + arg = find_token(document.body, "\\begin_inset Argument post:2", i, j) + endarg = find_end_of_inset(document.body, arg) + marg2content = [] + if arg != -1: + argbeginPlain = find_token(document.body, "\\begin_layout Plain Layout", arg, endarg) + if argbeginPlain == -1: + document.warning("Malformed LyX document: Can't find arg 2 plain Layout") + continue + argendPlain = find_end_of_inset(document.body, argbeginPlain) + marg2content = document.body[argbeginPlain + 1 : argendPlain - 2] + + # remove Arg insets and paragraph, if it only contains this inset + if document.body[arg - 1] == "\\begin_layout Plain Layout" and find_end_of_layout(document.body, arg - 1) == endarg + 3: + del document.body[arg - 1 : endarg + 4] + else: + del document.body[arg : endarg + 1] + + arg = find_token(document.body, "\\begin_inset Argument post:3", i, j) + endarg = find_end_of_inset(document.body, arg) + marg3content = [] + if arg != -1: + argbeginPlain = find_token(document.body, "\\begin_layout Plain Layout", arg, endarg) + if argbeginPlain == -1: + document.warning("Malformed LyX document: Can't find arg 3 plain Layout") + continue + argendPlain = find_end_of_inset(document.body, argbeginPlain) + marg3content = document.body[argbeginPlain + 1 : argendPlain - 2] + + # remove Arg insets and paragraph, if it only contains this inset + if document.body[arg - 1] == "\\begin_layout Plain Layout" and find_end_of_layout(document.body, arg - 1) == endarg + 3: + del document.body[arg - 1 : endarg + 4] + else: + del document.body[arg : endarg + 1] + + arg = find_token(document.body, "\\begin_inset Argument post:4", i, j) + endarg = find_end_of_inset(document.body, arg) + marg4content = [] + if arg != -1: + argbeginPlain = find_token(document.body, "\\begin_layout Plain Layout", arg, endarg) + if argbeginPlain == -1: + document.warning("Malformed LyX document: Can't find arg 4 plain Layout") + continue + argendPlain = find_end_of_inset(document.body, argbeginPlain) + marg4content = document.body[argbeginPlain + 1 : argendPlain - 2] + + # remove Arg insets and paragraph, if it only contains this inset + if document.body[arg - 1] == "\\begin_layout Plain Layout" and find_end_of_layout(document.body, arg - 1) == endarg + 3: + del document.body[arg - 1 : endarg + 4] + else: + del document.body[arg : endarg + 1] + + arg = find_token(document.body, "\\begin_inset Argument post:5", i, j) + endarg = find_end_of_inset(document.body, arg) + marg5content = [] + if arg != -1: + argbeginPlain = find_token(document.body, "\\begin_layout Plain Layout", arg, endarg) + if argbeginPlain == -1: + document.warning("Malformed LyX document: Can't find arg 5 plain Layout") + continue + argendPlain = find_end_of_inset(document.body, argbeginPlain) + marg5content = document.body[argbeginPlain + 1 : argendPlain - 2] + + # remove Arg insets and paragraph, if it only contains this inset + if document.body[arg - 1] == "\\begin_layout Plain Layout" and find_end_of_layout(document.body, arg - 1) == endarg + 3: + del document.body[arg - 1 : endarg + 4] + else: + del document.body[arg : endarg + 1] + + arg = find_token(document.body, "\\begin_inset Argument post:6", i, j) + endarg = find_end_of_inset(document.body, arg) + marg6content = [] + if arg != -1: + argbeginPlain = find_token(document.body, "\\begin_layout Plain Layout", arg, endarg) + if argbeginPlain == -1: + document.warning("Malformed LyX document: Can't find arg 6 plain Layout") + continue + argendPlain = find_end_of_inset(document.body, argbeginPlain) + marg6content = document.body[argbeginPlain + 1 : argendPlain - 2] + + # remove Arg insets and paragraph, if it only contains this inset + if document.body[arg - 1] == "\\begin_layout Plain Layout" and find_end_of_layout(document.body, arg - 1) == endarg + 3: + del document.body[arg - 1 : endarg + 4] + else: + del document.body[arg : endarg + 1] + + cmd = "\\digloss" + if glosse == "\\begin_inset Flex Interlinear Gloss (3 Lines)": + cmd = "\\trigloss" + + beginPlain = find_token(document.body, "\\begin_layout Plain Layout", i) + endInset = find_end_of_inset(document.body, i) + endPlain = find_end_of_layout(document.body, beginPlain) + precontent = put_cmd_in_ert(cmd) + if len(optargcontent) > 0: + precontent += put_cmd_in_ert("[") + optargcontent + put_cmd_in_ert("]") + precontent += put_cmd_in_ert("{") + + postcontent = put_cmd_in_ert("}") + if len(marg1content) > 0: + postcontent += put_cmd_in_ert("[") + marg1content + put_cmd_in_ert("]") + postcontent += put_cmd_in_ert("{") + marg2content + put_cmd_in_ert("}") + if len(marg3content) > 0: + postcontent += put_cmd_in_ert("[") + marg3content + put_cmd_in_ert("]") + postcontent += put_cmd_in_ert("{") + marg4content + put_cmd_in_ert("}") + if cmd == "\\trigloss": + if len(marg5content) > 0: + postcontent += put_cmd_in_ert("[") + marg5content + put_cmd_in_ert("]") + postcontent += put_cmd_in_ert("{") + marg6content + put_cmd_in_ert("}") + + document.body[endPlain:endInset + 1] = postcontent + document.body[beginPlain + 1:beginPlain] = precontent + del document.body[i : beginPlain + 1] + if not cov_req: + document.append_local_layout("Requires covington") + cov_req = True + i = beginPlain + + +def revert_exarg2(document): + " Revert linguistic examples with new arguments to ERT " + + if not "linguistics" in document.get_module_list(): + return + + cov_req = False + + layouts = ["Numbered Example", "Subexample"] + + for layout in layouts: + i = 0 + while True: + i = find_token(document.body, "\\begin_layout %s" % layout, i+1) + if i == -1: + break + j = find_end_of_layout(document.body, i) + if j == -1: + document.warning("Malformed LyX document: Can't find end of example layout") + continue + consecex = document.body[i] == "\\begin_layout Numbered Examples (consecutive)" + subexpl = document.body[i] == "\\begin_layout Subexample" + singleex = document.body[i] == "\\begin_layout Numbered Examples (multiline)" + layouttype = "\\begin_layout Numbered Examples (multiline)" + if consecex: + layouttype = "\\begin_layout Numbered Examples (consecutive)" + elif subexpl: + layouttype = "\\begin_layout Subexample" + k = i + l = j + while True: + if singleex: + break + m = find_end_of_layout(document.body, k) + # check for consecutive layouts + k = find_token(document.body, "\\begin_layout", m) + if k == -1 or document.body[k] != layouttype: + break + l = find_end_of_layout(document.body, k) + if l == -1: + document.warning("Malformed LyX document: Can't find end of example layout") + continue + + arg = find_token(document.body, "\\begin_inset Argument 1", i, l) + if subexpl or arg == -1: + iarg = find_token(document.body, "\\begin_inset Argument item:1", i, l) + if iarg == -1: + continue + + if arg != -1: + endarg = find_end_of_inset(document.body, arg) + optargcontent = "" + argbeginPlain = find_token(document.body, "\\begin_layout Plain Layout", arg, endarg) + if argbeginPlain == -1: + document.warning("Malformed LyX document: Can't find optarg plain Layout") + continue + argendPlain = find_end_of_inset(document.body, argbeginPlain) + optargcontent = lyx2latex(document, document.body[argbeginPlain + 1 : argendPlain - 2]) + # This is a verbatim argument + optargcontent = re.sub(r'textbackslash{}', r'', optargcontent) + + itemarg = "" + iarg = find_token(document.body, "\\begin_inset Argument item:1", i, j) + if iarg != -1: + endiarg = find_end_of_inset(document.body, iarg) + iargcontent = "" + iargbeginPlain = find_token(document.body, "\\begin_layout Plain Layout", iarg, endiarg) + if iargbeginPlain == -1: + document.warning("Malformed LyX document: Can't find optarg plain Layout") + continue + iargendPlain = find_end_of_inset(document.body, iargbeginPlain) + itemarg = "<" + lyx2latex(document, document.body[iargbeginPlain : iargendPlain]) + ">" + + iarg2 = find_token(document.body, "\\begin_inset Argument item:2", i, j) + if iarg2 != -1: + endiarg2 = find_end_of_inset(document.body, iarg2) + iarg2content = "" + iarg2beginPlain = find_token(document.body, "\\begin_layout Plain Layout", iarg2, endiarg2) + if iarg2beginPlain == -1: + document.warning("Malformed LyX document: Can't find optarg plain Layout") + continue + iarg2endPlain = find_end_of_inset(document.body, iarg2beginPlain) + itemarg += "[" + lyx2latex(document, document.body[iarg2beginPlain : iarg2endPlain]) + "]" + + if itemarg == "": + itemarg = " " + + # remove Arg insets and paragraph, if it only contains this inset + if arg != -1: + if document.body[arg - 1] == "\\begin_layout Plain Layout" and find_end_of_layout(document.body, arg - 1) == endarg + 3: + del document.body[arg - 1 : endarg + 4] + else: + del document.body[arg : endarg + 1] + if iarg != -1: + iarg = find_token(document.body, "\\begin_inset Argument item:1", i, j) + if iarg == -1: + document.warning("Unable to re-find item:1 Argument") + else: + endiarg = find_end_of_inset(document.body, iarg) + if document.body[iarg - 1] == "\\begin_layout Plain Layout" and find_end_of_layout(document.body, iarg - 1) == endiarg + 3: + del document.body[iarg - 1 : endiarg + 4] + else: + del document.body[iarg : endiarg + 1] + if iarg2 != -1: + iarg2 = find_token(document.body, "\\begin_inset Argument item:2", i, j) + if iarg2 == -1: + document.warning("Unable to re-find item:2 Argument") + else: + endiarg2 = find_end_of_inset(document.body, iarg2) + if document.body[iarg2 - 1] == "\\begin_layout Plain Layout" and find_end_of_layout(document.body, iarg2 - 1) == endiarg2 + 3: + del document.body[iarg2 - 1 : endiarg2 + 4] + else: + del document.body[iarg2 : endiarg2 + 1] + + envname = "example" + if consecex: + envname = "examples" + elif subexpl: + envname = "subexamples" + + cmd = put_cmd_in_ert("\\begin{" + envname + "}[" + optargcontent + "]") + + # re-find end of layout + j = find_end_of_layout(document.body, i) + if j == -1: + document.warning("Malformed LyX document: Can't find end of Subexample layout") + continue + l = j + while True: + # check for consecutive layouts + k = find_token(document.body, "\\begin_layout", l) + if k == -1 or document.body[k] != layouttype: + break + if not singleex: + subitemarg = "" + m = find_end_of_layout(document.body, k) + iarg = find_token(document.body, "\\begin_inset Argument item:1", k, m) + if iarg != -1: + endiarg = find_end_of_inset(document.body, iarg) + iargcontent = "" + iargbeginPlain = find_token(document.body, "\\begin_layout Plain Layout", iarg, endiarg) + if iargbeginPlain == -1: + document.warning("Malformed LyX document: Can't find optarg plain Layout") + continue + iargendPlain = find_end_of_inset(document.body, iargbeginPlain) + subitemarg = "<" + lyx2latex(document, document.body[iargbeginPlain : iargendPlain]) + ">" + + iarg2 = find_token(document.body, "\\begin_inset Argument item:2", k, m) + if iarg2 != -1: + endiarg2 = find_end_of_inset(document.body, iarg2) + iarg2content = "" + iarg2beginPlain = find_token(document.body, "\\begin_layout Plain Layout", iarg2, endiarg2) + if iarg2beginPlain == -1: + document.warning("Malformed LyX document: Can't find optarg plain Layout") + continue + iarg2endPlain = find_end_of_inset(document.body, iarg2beginPlain) + subitemarg += "[" + lyx2latex(document, document.body[iarg2beginPlain : iarg2endPlain]) + "]" + + if subitemarg == "": + subitemarg = " " + document.body[k : k + 1] = ["\\begin_layout Standard"] + put_cmd_in_ert("\\item" + subitemarg) + # Refind and remove arg insets + if iarg != -1: + iarg = find_token(document.body, "\\begin_inset Argument item:1", k, m) + if iarg == -1: + document.warning("Unable to re-find item:1 Argument") + else: + endiarg = find_end_of_inset(document.body, iarg) + if document.body[iarg - 1] == "\\begin_layout Plain Layout" and find_end_of_layout(document.body, iarg - 1) == endiarg + 3: + del document.body[iarg - 1 : endiarg + 4] + else: + del document.body[iarg : endiarg + 1] + if iarg2 != -1: + iarg2 = find_token(document.body, "\\begin_inset Argument item:2", k, m) + if iarg2 == -1: + document.warning("Unable to re-find item:2 Argument") + else: + endiarg2 = find_end_of_inset(document.body, iarg2) + if document.body[iarg2 - 1] == "\\begin_layout Plain Layout" and find_end_of_layout(document.body, iarg2 - 1) == endiarg2 + 3: + del document.body[iarg2 - 1 : endiarg2 + 4] + else: + del document.body[iarg2 : endiarg2 + 1] + else: + document.body[k : k + 1] = ["\\begin_layout Standard"] + l = find_end_of_layout(document.body, k) + if l == -1: + document.warning("Malformed LyX document: Can't find end of example layout") + continue + + endev = put_cmd_in_ert("\\end{" + envname + "}") + + document.body[l : l] = ["\\end_layout", "", "\\begin_layout Standard"] + endev + document.body[i : i + 1] = ["\\begin_layout Standard"] + cmd \ + + ["\\end_layout", "", "\\begin_layout Standard"] + put_cmd_in_ert("\\item" + itemarg) + if not cov_req: + document.append_local_layout("Requires covington") + cov_req = True + + +def revert_cov_options(document): + """Revert examples item argument structure""" + + if "linguistics" not in document.get_module_list(): + return + + layouts = ["Numbered Examples (consecutive)", "Subexample"] + + for layout in layouts: + i = 0 + while True: + i = find_token(document.body, "\\begin_layout %s" % layout, i) + if i == -1: + break + j = find_end_of_layout(document.body, i) + if j == -1: + document.warning("Malformed LyX document: Can't find end of example layout at line %d" % i) + i += 1 + continue + k = find_token(document.body, '\\begin_inset Argument item:2', i, j) + if k != -1: + document.body[k] = '\\begin_inset Argument item:1' + i += 1 + # Shift gloss arguments + i = 0 + while True: + i = find_token(document.body, "\\begin_inset Flex Interlinear Gloss (2 Lines)", i) + if i == -1: + break + j = find_end_of_inset(document.body, i) + if j == -1: + document.warning("Malformed LyX document: Can't find end of gloss inset at line %d" % i) + i += 1 + continue + k = find_token(document.body, '\\begin_inset Argument post:2', i, j) + if k != -1: + document.body[k] = '\\begin_inset Argument post:1' + k = find_token(document.body, '\\begin_inset Argument post:4', i, j) + if k != -1: + document.body[k] = '\\begin_inset Argument post:2' + i += 1 + + i = 0 + while True: + i = find_token(document.body, "\\begin_inset Flex Interlinear Gloss (3 Lines)", i) + if i == -1: + break + j = find_end_of_inset(document.body, i) + if j == -1: + document.warning("Malformed LyX document: Can't find end of gloss inset at line %d" % i) + i += 1 + continue + k = find_token(document.body, '\\begin_inset Argument post:2', i, j) + if k != -1: + document.body[k] = '\\begin_inset Argument post:1' + k = find_token(document.body, '\\begin_inset Argument post:4', i, j) + if k != -1: + document.body[k] = '\\begin_inset Argument post:2' + k = find_token(document.body, '\\begin_inset Argument post:6', i, j) + if k != -1: + document.body[k] = '\\begin_inset Argument post:3' + i += 1 + + +def revert_expreambles(document): + """Revert covington example preamble flex insets to ERT""" + + revert_flex_inset(document.body, "Example Preamble", "\\expreamble") + revert_flex_inset(document.body, "Subexample Preamble", "\\subexpreamble") + + ## # Conversion hub # @@ -5084,10 +5599,12 @@ convert = [ [613, []], [614, [convert_hyper_other]], [615, [convert_acknowledgment,convert_ack_theorems]], - [616, [convert_empty_macro]] + [616, [convert_empty_macro]], + [617, [convert_cov_options]] ] -revert = [[615, [revert_empty_macro]], +revert = [[616, [revert_expreambles,revert_exarg2,revert_linggloss2,revert_cov_options]], + [615, [revert_empty_macro]], [614, [revert_ack_theorems,revert_acknowledgment]], [613, [revert_hyper_other]], [612, [revert_familydefault]], diff --git a/src/version.h b/src/version.h index c17c3d9c67..df53604d51 100644 --- a/src/version.h +++ b/src/version.h @@ -32,8 +32,8 @@ extern char const * const lyx_version_info; // Do not remove the comment below, so we get merge conflict in // independent branches. Instead add your own. -#define LYX_FORMAT_LYX 616 // forenr: empty macros -#define LYX_FORMAT_TEX2LYX 616 +#define LYX_FORMAT_LYX 617 // spitz: linguistics module enhancements +#define LYX_FORMAT_TEX2LYX 617 #if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX #ifndef _MSC_VER