continue
j = find_end_of_inset(document.body, i)
if j == -1:
- document.warning("Malformed lyx document: Missing '\\end_inset'.")
+ document.warning("Malformed lyx document: Missing '\\end_inset' in revert_rotfloat.")
i += 1
continue
addedLines = 0
continue
j = find_end_of_inset(document.body, i)
if j == -1:
- document.warning("Malformed lyx document: Missing '\\end_inset'.")
+ document.warning("Malformed lyx document: Missing '\\end_inset' in revert_widesideways.")
i += 1
continue
if get_value(document.body, 'sideways', i, j) == "false" or \
return
j = find_end_of_inset(document.body, i)
if j == -1:
- document.warning("Malformed lyx document: Missing '\\end_inset'.")
+ document.warning("Malformed lyx document: Missing '\\end_inset' in revert_inset_embedding.")
i = i + 1
continue
k = find_token(document.body, "\tembed", i, j)
return
endInset = find_end_of_inset(document.body, i)
if endInset == -1:
- document.warning("Malformed lyx document: Missing '\\end_inset'.")
+ document.warning("Malformed lyx document: Missing '\\end_inset' in convert_subfig.")
i += 1
continue
k = find_token(document.body, '\tsubcaption', i, endInset)
i = 0
while 1:
# whitespace intended (exclude \\begin_inset FloatList)
- i = find_token(document.body, '\\begin_inset Float ', i)
+ i = find_tokens(document.body, ['\\begin_inset Float ', '\\begin_inset Wrap'], i)
if i == -1:
return
- while 1:
+ j = 0
+ addedLines = 0
+ while j != -1:
j = find_end_of_inset(document.body, i)
if j == -1:
- document.warning("Malformed lyx document: Missing '\\end_inset' (float).")
- i = i + 1
- continue
+ document.warning("Malformed lyx document: Missing '\\end_inset' (float) at line " + str(i + len(document.header)) + ".\n\t" + document.body[i])
+ # document.warning(document.body[i-1] + "\n" + document.body[i+1])
+ i += 1
+ continue # this will get us back to the outer loop, since j == -1
# look for embedded float (= subfloat)
# whitespace intended (exclude \\begin_inset FloatList)
k = find_token(document.body, '\\begin_inset Float ', i + 1, j)
l = find_end_of_inset(document.body, k)
if l == -1:
document.warning("Malformed lyx document: Missing '\\end_inset' (embedded float).")
- i = i + 1
- continue
+ i += 1
+ j == -1
+ continue # escape to the outer loop
m = find_default_layout(document, k + 1, l)
# caption?
cap = find_token(document.body, '\\begin_inset Caption', k + 1, l)
caption = ''
shortcap = ''
+ capend = cap
if cap != -1:
capend = find_end_of_inset(document.body, cap)
if capend == -1:
caption += line.strip()
if len(label) > 0:
caption += "\\backslash\nlabel{" + label + "}"
- document.body[l] = '\\begin_layout Plain Layout\n\\begin_inset ERT\nstatus collapsed\n\n' \
- '\\begin_layout Plain Layout\n\n}\n\\end_layout\n\n\\end_inset\n\n\\end_layout\n\n\\begin_layout Plain Layout\n'
- del document.body[cap:capend+1]
+ subst = '\\begin_layout Plain Layout\n\\begin_inset ERT\nstatus collapsed\n\n' \
+ '\\begin_layout Plain Layout\n\n}\n\\end_layout\n\n\\end_inset\n\n' \
+ '\\end_layout\n\n\\begin_layout Plain Layout\n'
+ subst = subst.split('\n')
+ document.body[l : l+1] = subst
+ addedLines = len(subst) - 1
+ # this is before l and so is unchanged by the multiline insertion
+ if cap != capend:
+ del document.body[cap:capend+1]
+ addedLines -= (capend + 1 - cap)
del document.body[k+1:m-1]
+ addedLines -= (m - 1 - (k + 1))
insertion = '\\begin_inset ERT\nstatus collapsed\n\n' \
- '\\begin_layout Plain Layout\n\n\\backslash\n' \
- 'subfloat'
+ '\\begin_layout Plain Layout\n\n\\backslash\n' \
+ 'subfloat'
if len(shortcap) > 0:
insertion = insertion + "[" + shortcap + "]"
if len(caption) > 0:
insertion = insertion + "[" + caption + "]"
insertion = insertion + '{%\n\\end_layout\n\n\\end_inset\n\n\\end_layout\n'
- document.body[k] = insertion
+ insertion = insertion.split('\n')
+ document.body[k : k + 1] = insertion
+ addedLines += len(insertion) - 1
add_to_preamble(document,
['\\usepackage{subfig}\n'])
- i = i + 1
+ i += addedLines + 1
def revert_wrapplacement(document):
return
j = find_end_of_inset(document.body, i)
if j == -1:
- document.warning("Malformed lyx document: Missing '\\end_inset'.")
+ document.warning("Malformed lyx document: Missing '\\end_inset' in revert_pdfpages.")
i = i + 1
continue
if get_value(document.body, 'template', i, j) == "PDFPages":
return
j = find_end_of_inset(document.body, i)
if j == -1:
- document.warning("Malformed lyx document: Missing '\\end_inset'.")
+ document.warning("Malformed lyx document: Missing '\\end_inset' in revert_graphics_group.")
i = i + 1
continue
k = find_token(document.body, " groupId", i, j)
document.body[i] = document.body[i].replace('\\begin_inset space', '\\begin_inset Space')
+def convert_display_enum(document):
+ " Convert 'display foo' to 'display false/true'"
+ i = 0
+ while True:
+ i = find_token(document.body, "\tdisplay", i)
+ if i == -1:
+ return
+ val = get_value(document.body, 'display', i)
+ if val == "none":
+ document.body[i] = document.body[i].replace('none', 'false')
+ if val == "default":
+ document.body[i] = document.body[i].replace('default', 'true')
+ if val == "monochrome":
+ document.body[i] = document.body[i].replace('monochrome', 'true')
+ if val == "grayscale":
+ document.body[i] = document.body[i].replace('grayscale', 'true')
+ if val == "color":
+ document.body[i] = document.body[i].replace('color', 'true')
+ if val == "preview":
+ document.body[i] = document.body[i].replace('preview', 'true')
+ i += 1
+
+
+def revert_display_enum(document):
+ " Revert 'display false/true' to 'display none/color'"
+ i = 0
+ while True:
+ i = find_token(document.body, "\tdisplay", i)
+ if i == -1:
+ return
+ val = get_value(document.body, 'display', i)
+ if val == "false":
+ document.body[i] = document.body[i].replace('false', 'none')
+ if val == "true":
+ document.body[i] = document.body[i].replace('true', 'default')
+ i += 1
+
+
+def remove_fontsCJK(document):
+ ' Remove font_cjk param '
+ i = find_token(document.header, "\\font_cjk", 0)
+ if i != -1:
+ del document.header[i]
+
+
+def convert_plain_layout(document):
+ " Convert 'PlainLayout' to 'Plain Layout'"
+ i = 0
+ while True:
+ i = find_token(document.body, '\\begin_layout PlainLayout', i)
+ if i == -1:
+ return
+ document.body[i] = document.body[i].replace('\\begin_layout PlainLayout', \
+ '\\begin_layout Plain Layout')
+ i += 1
+
+
+def revert_plain_layout(document):
+ " Convert 'PlainLayout' to 'Plain Layout'"
+ i = 0
+ while True:
+ i = find_token(document.body, '\\begin_layout Plain Layout', i)
+ if i == -1:
+ return
+ document.body[i] = document.body[i].replace('\\begin_layout Plain Layout', \
+ '\\begin_layout PlainLayout')
+ i += 1
+
+
+def revert_plainlayout(document):
+ " Convert 'PlainLayout' to 'Plain Layout'"
+ i = 0
+ while True:
+ i = find_token(document.body, '\\begin_layout PlainLayout', i)
+ if i == -1:
+ return
+ # This will be incorrect for some document classes, since Standard is not always
+ # the default. But (a) it is probably the best we can do and (b) it will actually
+ # work, in fact, since an unknown layout will be converted to default.
+ document.body[i] = document.body[i].replace('\\begin_layout PlainLayout', \
+ '\\begin_layout Standard')
+ i += 1
+
+
+def revert_polytonicgreek(document):
+ "Set language polytonic Greek to Greek"
+ i = 0
+ if document.language == "polutonikogreek":
+ document.language = "greek"
+ i = find_token(document.header, "\\language", 0)
+ if i != -1:
+ document.header[i] = "\\language greek"
+ j = 0
+ while True:
+ j = find_token(document.body, "\\lang polutonikogreek", j)
+ if j == -1:
+ return
+ document.body[j] = document.body[j].replace("\\lang polutonikogreek", "\\lang greek")
+ j = j + 1
+
+
##
# Conversion hub
#
[319, [convert_spaceinset, convert_hfill]],
[320, []],
[321, [convert_tablines]],
- [322, []],
+ [322, [convert_plain_layout]],
[323, [convert_pagebreaks]],
[324, [convert_linebreaks]],
[325, [convert_japanese_plain]],
[333, [update_apa_styles]],
[334, [convert_paper_sizes]],
[335, [convert_InsetSpace]],
+ [336, []],
+ [337, [convert_display_enum]],
+ [338, []],
]
-revert = [[334, [revert_InsetSpace]],
+revert = [[337, [revert_polytonicgreek]],
+ [336, [revert_display_enum]],
+ [335, [remove_fontsCJK]],
+ [334, [revert_InsetSpace]],
[333, [revert_paper_sizes]],
[332, []],
[331, [revert_graphics_group]],
[324, []],
[323, [revert_linebreaks]],
[322, [revert_pagebreaks]],
- [321, [revert_local_layout]],
+ [321, [revert_local_layout, revert_plain_layout]],
[320, [revert_tablines]],
[319, [revert_protected_hfill]],
[318, [revert_spaceinset, revert_hfills, revert_hspace]],
[317, [remove_extra_embedded_files]],
[316, [revert_wrapplacement]],
[315, [revert_subfig]],
- [314, [revert_colsep]],
+ [314, [revert_colsep, revert_plainlayout]],
[313, []],
[312, [revert_module_names]],
[311, [revert_rotfloat, revert_widesideways]],