document.body[i + 1] = "LatexCommand index"
# clean up multiline stuff
content = ""
+ ert_end = 0
for k in range(i + 3, j - 2):
line = document.body[k]
if line.startswith("\\begin_inset ERT"):
- line = line[16:]
+ ert_end = find_end_of_inset(document.body, k + 1)
+ line = line[16:]
if line.startswith("\\begin_inset Formula"):
line = line[20:]
if line.startswith("\\begin_layout Standard"):
line = line[22:]
- if line.startswith("\\begin_layout Plain"):
- line = line[22:]
+ if line.startswith("\\begin_layout Plain Layout"):
+ line = line[26:]
if line.startswith("\\end_layout"):
line = line[11:]
if line.startswith("\\end_inset"):
line = line[10:]
if line.startswith("status collapsed"):
line = line[16:]
- line = line.replace(u'ä', r'\\\"a').replace(u'ö', r'\\\"o').replace(u'ü', r'\\\"u')
+ if line.startswith("status open"):
+ line = line[11:]
+ # a lossless reversion is not possible
+ # try at least to handle some common insets and settings
+ # do not replace inside ERTs
+ if ert_end < k:
+ line = line.replace(u'ä', r'\\\"a').replace(u'ö', r'\\\"o').replace(u'ü', r'\\\"u')
+ line = line.replace(r'\\backslash', r'\\textbackslash{}')
+ line = line.replace(r'\\series bold', r'\\bfseries{}').replace(r'\\series default', r'\\mdseries{}')
+ line = line.replace(r'\\shape italic', r'\\itshape{}').replace(r'\\shape smallcaps', r'\\scshape{}')
+ line = line.replace(r'\\shape slanted', r'\\slshape{}').replace(r'\\shape default', r'\\upshape{}')
+ line = line.replace(r'\\emph on', r'\\em{}').replace(r'\\emph default', r'\\em{}')
+ line = line.replace(r'\\noun on', r'\\scshape{}').replace(r'\\noun default', r'\\upshape{}')
+ line = line.replace(r'\\bar under', r'\\underbar{').replace(r'\\bar default', r'}')
+ line = line.replace(r'\\family sans', r'\\sffamily{}').replace(r'\\family default', r'\\normalfont{}')
+ line = line.replace(r'\\family typewriter', r'\\ttfamily{}').replace(r'\\family roman', r'\\rmfamily{}')
+ line = line.replace(r'\\InsetSpace ', r'').replace(r'\\SpecialChar ', r'')
+ else:
+ line = line.replace(r'\\backslash', r'\\')
content = content + line;
document.body[i + 3] = "name " + '"' + content + '"'
for k in range(i + 4, j - 2):
def convert_spaceinset(document):
- " Convert '\\InsetSpace foo' to '\\begin_inset Space foo\n\\end_inset' "
- for i in range(len(document.body)):
- if re.search(r'\InsetSpace', document.body[i]):
- document.body[i] = document.body[i].replace('\\InsetSpace', '\n\\begin_inset Space')
- document.body[i] = document.body[i] + "\n\\end_inset"
+ " Convert '\\InsetSpace foo' to '\\begin_inset Space foo\n\\end_inset' "
+ for i in range(len(document.body)):
+ m = re.match(r'(.*)\\InsetSpace (.*)', document.body[i])
+ if m:
+ before = m.group(1)
+ after = m.group(2)
+ subst = [before, "\\begin_inset Space " + after, "\\end_inset"]
+ document.body[i: i+1] = subst
def revert_spaceinset(document):
def update_apa_styles(document):
- ' Replace obsolete styles'
+ ' Replace obsolete styles '
if document.textclass != "apa":
return
i += 1
+
+def convert_paper_sizes(document):
+ ' exchange size options legalpaper and executivepaper to correct order '
+ # routine is needed to fix http://bugzilla.lyx.org/show_bug.cgi?id=4868
+ i = 0
+ j = 0
+ i = find_token(document.header, "\\papersize executivepaper", 0)
+ if i != -1:
+ document.header[i] = "\\papersize legalpaper"
+ return
+ j = find_token(document.header, "\\papersize legalpaper", 0)
+ if j != -1:
+ document.header[j] = "\\papersize executivepaper"
+
+
+def revert_paper_sizes(document):
+ ' exchange size options legalpaper and executivepaper to correct order '
+ i = 0
+ j = 0
+ i = find_token(document.header, "\\papersize executivepaper", 0)
+ if i != -1:
+ document.header[i] = "\\papersize legalpaper"
+ return
+ j = find_token(document.header, "\\papersize legalpaper", 0)
+ if j != -1:
+ document.header[j] = "\\papersize executivepaper"
+
+
+def convert_InsetSpace(document):
+ " Convert '\\begin_inset Space foo' to '\\begin_inset space foo'"
+ i = 0
+ while True:
+ i = find_token(document.body, "\\begin_inset Space", i)
+ if i == -1:
+ return
+ document.body[i] = document.body[i].replace('\\begin_inset Space', '\\begin_inset space')
+
+
+def revert_InsetSpace(document):
+ " Revert '\\begin_inset space foo' to '\\begin_inset Space foo'"
+ i = 0
+ while True:
+ i = find_token(document.body, "\\begin_inset space", i)
+ if i == -1:
+ return
+ document.body[i] = document.body[i].replace('\\begin_inset space', '\\begin_inset Space')
+
+
##
# Conversion hub
#
[331, [convert_ltcaption]],
[332, []],
[333, [update_apa_styles]],
+ [334, [convert_paper_sizes]],
+ [335, [convert_InsetSpace]],
]
-revert = [[332, []],
+revert = [[334, [revert_InsetSpace]],
+ [333, [revert_paper_sizes]],
+ [332, []],
[331, [revert_graphics_group]],
[330, [revert_ltcaption]],
[329, [revert_leftarrowfill, revert_rightarrowfill, revert_upbracefill, revert_downbracefill]],