commit c6c70649af2b26adc68111b41face0a4628c77a0
Author: Juergen Spitzmueller <[email protected]>
Date: Sat Jun 22 13:56:12 2019 +0200
Linguistics: Support for subexamples optional arg
---
lib/layouts/linguistics.module | 6 +++
lib/lyx2lyx/lyx_2_4.py | 86 ++++++++++++++++++++++++++++++++++++++-
2 files changed, 89 insertions(+), 3 deletions(-)
diff --git a/lib/layouts/linguistics.module b/lib/layouts/linguistics.module
index 1716f72..7d4f77b 100644
--- a/lib/layouts/linguistics.module
+++ b/lib/layouts/linguistics.module
@@ -89,6 +89,12 @@ Style Subexample
LabelCounter "subexample"
StepMasterCounter true
Requires covington
+ Argument 1
+ LabelString "Subexamples options"
+ MenuString "Subexamples options|s"
+ Tooltip "Add subexamples options here"
+ PassThru 1
+ EndArgument
End
diff --git a/lib/lyx2lyx/lyx_2_4.py b/lib/lyx2lyx/lyx_2_4.py
index de47d2e..29e08ae 100644
--- a/lib/lyx2lyx/lyx_2_4.py
+++ b/lib/lyx2lyx/lyx_2_4.py
@@ -36,9 +36,9 @@ from parser_tools import (count_pars_in_inset, del_token,
find_end_of_inset,
# is_in_inset, set_bool_value
# find_tokens, find_token_exact, check_token
-from lyx2lyx_tools import (put_cmd_in_ert, add_to_preamble, revert_language,
revert_flex_inset)
+from lyx2lyx_tools import (put_cmd_in_ert, add_to_preamble, lyx2latex,
revert_language, revert_flex_inset)
# revert_font_attrs, insert_to_preamble, latex_length
-# get_ert, lyx2latex, lyx2verbatim, length_in_bp, convert_info_insets
+# get_ert, lyx2verbatim, length_in_bp, convert_info_insets
# revert_flex_inset, hex2ratio, str2bool
####################################################################
@@ -1952,6 +1952,86 @@ def revert_linggloss(document):
i = beginPlain + 1
+def revert_subexarg(document):
+ " Revert linguistic subexamples with argument to ERT "
+
+ if not "linguistics" in document.get_module_list():
+ return
+
+ cov_req = False
+ i = 0
+ while True:
+ i = find_token(document.body, "\\begin_layout Subexample", 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
Subexample layout")
+ i += 1
+ continue
+ while True:
+ # check for consecutive layouts
+ k = find_token(document.body, "\\begin_layout", j)
+ if k == -1 or document.body[k] != "\\begin_layout Subexample":
+ break
+ j = find_end_of_layout(document.body, k)
+ if j == -1:
+ document.warning("Malformed LyX document: Can't find end of
Subexample layout")
+ i += 1
+ continue
+
+ arg = find_token(document.body, "\\begin_inset Argument 1", i, j)
+ if arg == -1:
+ i += 1
+ continue
+
+ 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")
+ i += 1
+ continue
+ argendPlain = find_end_of_inset(document.body, argbeginPlain)
+ optargcontent = lyx2latex(document, 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 = put_cmd_in_ert("\\begin{subexamples}[" + 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")
+ i += 1
+ continue
+ while True:
+ # check for consecutive layouts
+ k = find_token(document.body, "\\begin_layout", j)
+ if k == -1 or document.body[k] != "\\begin_layout Subexample":
+ break
+ document.body[k : k + 1] = ["\\begin_layout Standard"] +
put_cmd_in_ert("\\item ")
+ j = find_end_of_layout(document.body, k)
+ if j == -1:
+ document.warning("Malformed LyX document: Can't find end of
Subexample layout")
+ i += 1
+ continue
+
+ endev = put_cmd_in_ert("\\end{subexamples}")
+
+ document.body[j : j] = ["\\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 ")
+ if not cov_req:
+ document.append_local_layout("Requires covington")
+ cov_req = True
+ i += 1
+
+
##
# Conversion hub
#
@@ -1993,7 +2073,7 @@ convert = [
[577, [convert_linggloss]]
]
-revert = [[576, [revert_linggloss]],
+revert = [[576, [revert_linggloss, revert_subexarg]],
[575, [revert_new_languages]],
[574, [revert_lineno]],
[573, [revert_ruby_module, revert_utf8_japanese]],