end = rest
# If we wanted to put labels into an InsetLabel, for example, then we
# would just need to test here for cmd == "label" and then take some
- # appropriate action, i.e., to use arg to get the content and then
+ # appropriate action, i.e., to use arg to get the content and then
# wrap it appropriately.
cmd = put_cmd_in_ert(cmd)
retval += "\n" + cmd + "\n"
def latex2lyx(data):
- '''Takes a string, possibly multi-line, and returns the result of
+ '''Takes a string, possibly multi-line, and returns the result of
converting LaTeX constructs into LyX constructs. Returns a list of
lines, suitable for insertion into document.body.'''
content = ""
ert_end = 0
reps = read_unicodesymbols()
-
+
for curline in range(len(lines)):
line = lines[curline]
if line.startswith("\\begin_inset ERT"):
line.strip() == "status open":
#skip all that stuff
continue
-
+
# a lossless reversion is not possible
# try at least to handle some common insets and settings
# do not replace inside ERTs
i = find_token(document.body, "\\begin_inset CharStyle", i)
if i == -1:
return
- document.body[i] = document.body[i].replace("CharStyle CharStyle:", "CharStyle")
+ document.body[i] = document.body[i].replace("CharStyle CharStyle:", "CharStyle ")
i += 1
return
if document.body[i + 1] != "LatexCommand index": # Might also be index_print
return
+ j = find_end_of_inset(document.body, i + 2)
+ if j == -1:
+ document.warning("Unable to find end of index inset at line " + i + "!")
+ i += 2
+ continue
m = r1.match(document.body[i + 2])
if m == None:
document.warning("Unable to match: " + document.body[i+2])
i += 1
continue
fullcontent = m.group(1)
- #document.warning(fullcontent)
- document.body[i:i + 3] = ["\\begin_inset Index",
- "status collapsed",
- "\\begin_layout Standard"]
- i += 3
- # We are now on the blank line preceding "\end_inset"
- # We will write the content here, into the inset.
-
linelist = latex2lyx(fullcontent)
- document.body[i+1:i+1] = linelist
- i += len(linelist)
+ #document.warning(fullcontent)
- document.body.insert(i + 1, "\\end_layout")
- i += 1
+ linelist = ["\\begin_inset Index", "status collapsed", "\\begin_layout Standard", ""] + \
+ linelist + ["\\end_layout"]
+ document.body[i : j] = linelist
+ i += len(linelist) - (j - i)
def revert_latexcommand_index(document):
return
m = r.match(document.body[i])
if m == None:
- document.warning("Weirdly formed \\begin_layout at line %d of body!" % i)
+ # This is an empty layout
+ # document.warning("Weirdly formed \\begin_layout at line %d of body!" % i)
i += 1
continue
m = m.group(1)
'position "t"',
'hor_pos "c"',
'has_inner_box 0',
- 'inner_pos "t"',
+ 'inner_pos "t"',
'use_parbox 0',
'width "100col%"',
'special "none"',
#Returns number of lines added/removed
def revert_nocite_key(body, start, end):
- 'key "..." -> \nocite{...}'
+ 'key "..." -> \nocite{...}'
r = re.compile(r'^key "(.*)"')
i = start
j = end
subst = ['\\begin_layout Standard',
'\\begin_inset ERT',
'status collapsed', '',
- '\\begin_layout Standard', '', '',
+ '\\begin_layout Standard', '', '',
'\\backslash', '',
'end{sideways' + floattype + '}',
'\\end_layout', '', '\\end_inset']
document.body[j : j+1] = subst
addedLines = len(subst) - 1
del document.body[i+1 : l]
- addedLines -= (l-1) - (i+1)
+ addedLines -= (l-1) - (i+1)
subst = ['\\begin_inset ERT', 'status collapsed', '',
- '\\begin_layout Standard', '', '', '\\backslash',
- 'begin{sideways' + floattype + '}',
+ '\\begin_layout Standard', '', '', '\\backslash',
+ 'begin{sideways' + floattype + '}',
'\\end_layout', '', '\\end_inset', '',
'\\end_layout', '']
document.body[i : i+1] = subst
if l == -1:
document.warning("Malformed LyX document: Missing `\\begin_layout' in Float inset.")
return
- subst = ['\\begin_layout Standard', '\\begin_inset ERT',
- 'status collapsed', '',
+ subst = ['\\begin_layout Standard', '\\begin_inset ERT',
+ 'status collapsed', '',
'\\begin_layout Standard', '', '', '\\backslash',
- 'end{sideways' + floattype + '*}',
+ 'end{sideways' + floattype + '*}',
'\\end_layout', '', '\\end_inset']
document.body[j : j+1] = subst
addedLines = len(subst) - 1
del document.body[l]
del document.body[k]
addedLines = -2
- subst = ['\\begin_inset Float figure', 'wide false', 'sideways false',
- 'status open', '', '\\begin_layout Plain Layout', '\\begin_inset Caption',
+ subst = ['\\begin_inset Float figure', 'wide false', 'sideways false',
+ 'status open', '', '\\begin_layout Plain Layout', '\\begin_inset Caption',
'', '\\begin_layout Plain Layout'] + latex2lyx(caption) + \
- [ '\\end_layout', '', '\\end_inset', '',
+ [ '\\end_layout', '', '\\end_inset', '',
'\\end_layout', '', '\\begin_layout Plain Layout']
document.body[i : i] = subst
addedLines += len(subst)
def convert_plain_layout(document):
- " Convert 'PlainLayout' to 'Plain Layout'"
+ " Convert 'PlainLayout' to 'Plain Layout'"
i = 0
while True:
i = find_token(document.body, '\\begin_layout PlainLayout', i)
def revert_plain_layout(document):
- " Convert 'PlainLayout' to 'Plain Layout'"
+ " Convert 'PlainLayout' to 'Plain Layout'"
i = 0
while True:
i = find_token(document.body, '\\begin_layout Plain Layout', i)
def revert_plainlayout(document):
- " Convert 'PlainLayout' to 'Plain Layout'"
+ " Convert 'PlainLayout' to 'Plain Layout'"
i = 0
while True:
i = find_token(document.body, '\\begin_layout PlainLayout', i)
j = j + 1
+def revert_removed_modules(document):
+ i = 0
+ while True:
+ i = find_token(document.header, "\\begin_remove_modules", i)
+ if i == -1:
+ return
+ j = find_end_of(document.header, i, "\\begin_remove_modules", "\\end_remove_modules")
+ if j == -1:
+ # this should not happen
+ break
+ document.header[i : j + 1] = []
+
+
+def add_plain_layout(document):
+ i = 0
+ while True:
+ i = find_token(document.body, "\\begin_layout", i)
+ if i == -1:
+ return
+ if len(document.body[i].split()) == 1:
+ document.body[i] = "\\begin_layout Plain Layout"
+ i += 1
+
##
# Conversion hub
#
[336, []],
[337, [convert_display_enum]],
[338, []],
+ [339, []],
+ [340, [add_plain_layout]]
]
-revert = [[337, [revert_polytonicgreek]],
+revert = [[339, []],
+ [338, [revert_removed_modules]],
+ [337, [revert_polytonicgreek]],
[336, [revert_display_enum]],
[335, [remove_fontsCJK]],
[334, [revert_InsetSpace]],