"Revert optional options for wrap floats (wrapfig)."
i = 0
while True:
- i = find_token(document.body, "lines", i)
+ i = find_token(document.body, "\\begin_inset Wrap figure", i)
if i == -1:
return
- j = find_token(document.body, "overhang", i+1)
- if j != i + 2 and j != -1:
- document.warning("Malformed LyX document: Couldn't find overhang parameter of wrap float.")
+ j = find_end_of_inset(document.body, i)
if j == -1:
- return
- del document.body[i]
- del document.body[j-1]
- i = i + 1
+ document.warning("Can't find end of Wrap inset at line " + str(i))
+ i += 1
+ continue
+ k = find_default_layout(document, i, j)
+ if k == -1:
+ document.warning("Can't find default layout for Wrap figure!")
+ i = j
+ continue
+ # Options should be between i and k now
+ l = find_token(document.body, "lines", i, k)
+ if l == -1:
+ document.warning("Can't find lines option for Wrap figure!")
+ i = k
+ continue
+ m = find_token(document.body, "overhang", i + 1, k)
+ if m == -1:
+ document.warning("Malformed LyX document: Couldn't find overhang parameter of wrap float!")
+ i = k
+ continue
+ # Do these in reverse order
+ del document.body[m]
+ del document.body[l]
+ i = k
# To convert and revert indices, we need to convert between LaTeX
r0 = re.compile('preview.*')
r1 = re.compile('LatexCommand (.+)')
r2 = re.compile('filename (.+)')
- r3 = re.compile('options (.*)')
+ r3 = re.compile('lstparams "(.*)"')
while True:
i = find_token(document.body, "\\begin_inset CommandInset include", i)
if i == -1:
revert_inset_embedding(document, 'External')
-# FIXME This code can still be cleaned up a fair bit.
def convert_subfig(document):
" Convert subfigures to subfloats. "
i = 0
continue
k = find_token(document.body, '\tsubcaption', i, endInset)
if k == -1:
- i += 1
+ i = endInset
continue
l = find_token(document.body, '\tsubcaptionText', i, endInset)
+ if l == -1:
+ document.warning("Malformed lyx document: Can't find subcaptionText!")
+ i = endInset
+ continue
caption = document.body[l][16:].strip('"')
- savestr = document.body[i]
- laststr = document.body[endInset]
del document.body[l]
del document.body[k]
addedLines = -2
- # savestr should no longer be needed here.
subst = ['\\begin_inset Float figure', 'wide false', 'sideways false',
'status open', '', '\\begin_layout Plain Layout', '\\begin_inset Caption',
'', '\\begin_layout Plain Layout',
caption, '\\end_layout', '', '\\end_inset', '',
- '\\end_layout', '', '\\begin_layout Plain Layout', savestr]
- document.body[i : i+1] = subst
- addedLines += len(subst) - 1
+ '\\end_layout', '', '\\begin_layout Plain Layout']
+ document.body[i : i] = subst
+ addedLines += len(subst)
endInset += addedLines
- # There should be an easier way to do this.
- subst = ['', '\\end_inset', '', '\\end_layout', laststr]
- document.body[endInset : endInset+1] = subst
- addedLines += len(subst) - 1
+ subst = ['', '\\end_inset', '', '\\end_layout']
+ document.body[endInset : endInset] = subst
+ addedLines += len(subst)
i += addedLines + 1
" Revert placement options wrap floats (wrapfig). "
i = 0
while True:
- i = find_token(document.body, "lines", i)
+ i = find_token(document.body, "\\begin_inset Wrap figure", i)
if i == -1:
return
- j = find_token(document.body, "placement", i+1)
- if j != i + 1:
+ e = find_end_of_inset(document.body, i)
+ j = find_token(document.body, "placement", i + 1, e)
+ if j == -1:
document.warning("Malformed LyX document: Couldn't find placement parameter of wrap float.")
- return
- document.body[j] = document.body[j].replace("placement O", "placement o")
- document.body[j] = document.body[j].replace("placement I", "placement i")
- document.body[j] = document.body[j].replace("placement L", "placement l")
- document.body[j] = document.body[j].replace("placement R", "placement r")
- i = i + 1
+ i += 1
+ continue
+ r = re.compile("placement (o|i|l|r)")
+ m = r.match(document.body[j])
+ if m == None:
+ document.warning("Malformed LyX document: Placement option isn't O|I|R|L!")
+ document.body[j] = "placement " + m.group(1).lower()
+ i = j
def remove_extra_embedded_files(document):