l = document.body[m].find(option)
if l != -1:
val = document.body[m][l:].split('"')[1]
- document.body[m] = document.body[m][:l-1] + document.body[m][l+len(option + '="' + val + '"'):]
+ document.body[m] = document.body[m][:l - 1] + document.body[m][l+len(option + '="' + val + '"'):]
return l
def find_end_of_inset(lines, i):
return find_end_of(lines, i, "\\begin_inset", "\\end_inset")
+# Note that text can be either a list of lines or a single line.
def add_to_preamble(document, text):
""" Add text to the preamble if it is not already there.
Only the first line is checked!"""
+ if not type(text) is list:
+ # split on \n just in case
+ # it'll give us the one element list we want
+ # if there's no \n, too
+ text = text.split('\n')
+
if find_token(document.preamble, text[0], 0) != -1:
return
return string
-# This routine wraps some content in an ERT inset. It returns a
-# LIST of strings. This is how lyx2lyx works: with a list of strings,
-# each representing a line of a LyX file. Embedded newlines confuse
+# This routine wraps some content in an ERT inset.
+#
+# NOTE: The function accepts either a single string or a LIST of strings as
+# argument. But it returns a LIST of strings, split on \n, so that it does
+# not have embedded newlines.
+#
+# This is how lyx2lyx represents a LyX document: as a list of strings,
+# each representing a line of a LyX file. Embedded newlines confuse
# lyx2lyx very much.
-# For this same reason, we expect as input a LIST of strings, not
-# something with embedded newlines. That said, if any of your strings
-# do have embedded newlines, the string will eventually get split on
-# them and you'll get a list back.
#
# A call to this routine will often go something like this:
# i = find_token('\\begin_inset FunkyInset', ...)
# ...
# j = find_end_of_inset(document.body, i)
# content = ...extract content from insets
+# # that could be as simple as:
+# # content = lyx2latex(document[i:j + 1])
# ert = put_cmd_in_ert(content)
# document.body[i:j] = ert
# Now, before we continue, we need to reset i appropriately. Normally,
# this would be:
# i += len(ert)
# That puts us right after the ERT we just inserted.
-def put_cmd_in_ert(strlist):
+#
+def put_cmd_in_ert(arg):
ret = ["\\begin_inset ERT", "status collapsed", "\\begin_layout Plain Layout", ""]
# Despite the warnings just given, it will be faster for us to work
# with a single string internally. That way, we only go through the
# unicode_reps loop once.
- s = "\n".join(strlist)
+ if type(arg) is list:
+ s = "\n".join(arg)
+ else:
+ s = arg
for rep in unicode_reps:
- s = s.replace(rep[1], rep[0].replace('\\\\', '\\'))
+ s = s.replace(rep[1], rep[0].replace('\\\\', '\\'))
s = s.replace('\\', "\\backslash\n")
ret += s.splitlines()
ret += ["\\end_layout", "\\end_inset"]
# clean up multiline stuff
content = ""
ert_end = 0
+ note_end = 0
+ hspace = ""
for curline in range(len(lines)):
line = lines[curline]
- if line.startswith("\\begin_inset ERT"):
+ if line.startswith("\\begin_inset Note Note"):
+ # We want to skip LyX notes, so remember where the inset ends
+ note_end = find_end_of_inset(lines, curline + 1)
+ continue
+ elif note_end >= curline:
+ # Skip LyX notes
+ continue
+ elif line.startswith("\\begin_inset ERT"):
# We don't want to replace things inside ERT, so figure out
# where the end of the inset is.
ert_end = find_end_of_inset(lines, curline + 1)
line = "''"
else:
line = "'"
+ elif line.startswith("\\begin_inset space"):
+ line = line[18:].strip()
+ if line.startswith("\\hspace"):
+ # Account for both \hspace and \hspace*
+ hspace = line[:-2]
+ continue
+ elif line == "\\space{}":
+ line = "\\ "
+ elif line == "\\thinspace{}":
+ line = "\\,"
+ elif hspace != "":
+ # The LyX length is in line[8:], after the \length keyword
+ # latex_length returns "bool,length"
+ length = latex_length(line[8:]).split(",")[1]
+ line = hspace + "{" + length + "}"
+ hspace = ""
elif line.isspace() or \
line.startswith("\\begin_layout") or \
line.startswith("\\end_layout") or \
# a lossless reversion is not possible
# try at least to handle some common insets and settings
if ert_end >= curline:
- line = line.replace(r'\backslash', r'\\')
+ line = line.replace(r'\backslash', '\\')
else:
- line = line.replace('&', '\\&{}')
- line = line.replace('#', '\\#{}')
- line = line.replace('^', '\\^{}')
- line = line.replace('%', '\\%{}')
- line = line.replace('_', '\\_{}')
- line = line.replace('$', '\\${}')
+ # No need to add "{}" after single-nonletter macros
+ line = line.replace('&', '\\&')
+ line = line.replace('#', '\\#')
+ line = line.replace('^', '\\textasciicircum{}')
+ line = line.replace('%', '\\%')
+ line = line.replace('_', '\\_')
+ line = line.replace('$', '\\$')
# Do the LyX text --> LaTeX conversion
for rep in unicode_reps:
end = string[i + len(unit):]
string = value + latex_unit + end
if plus > minus:
- value = string[plus+1:i]
+ value = string[plus + 1:i]
value = str(float(value)/100)
- begin = string[:plus+1]
+ begin = string[:plus + 1]
end = string[i+len(unit):]
string = begin + value + latex_unit + end
if plus < minus:
- value = string[minus+1:i]
+ value = string[minus + 1:i]
value = str(float(value)/100)
- begin = string[:minus+1]
+ begin = string[:minus + 1]
string = begin + value + latex_unit
# replace + and -, but only if the - is not the first character
def revert_flex_inset(document, name, LaTeXname, position):
" Convert flex insets to TeX code "
- i = 0
- z = 0
+ i = position
while True:
- i = find_token(document.body, '\\begin_inset Flex ' + name, position)
+ i = find_token(document.body, '\\begin_inset Flex ' + name, i)
if i == -1:
return
z = find_end_of_inset(document.body, i)
s = find_token(document.body, '\\uwave on', i)
t = find_token(document.body, '\\strikeout on', i)
if j != -1 and j < z:
- document.body.insert(z-2, "\\emph default")
+ document.body.insert(z - 2, "\\emph default")
if k != -1 and k < z:
- document.body.insert(z-2, "\\noun default")
+ document.body.insert(z - 2, "\\noun default")
if l != -1 and l < z:
- document.body.insert(z-2, "\\series default")
+ document.body.insert(z - 2, "\\series default")
if m != -1 and m < z:
- document.body.insert(z-2, "\\family default")
+ document.body.insert(z - 2, "\\family default")
if n != -1 and n < z:
- document.body.insert(z-2, "\\shape default")
+ document.body.insert(z - 2, "\\shape default")
if o != -1 and o < z:
- document.body.insert(z-2, "\\color inherit")
+ document.body.insert(z - 2, "\\color inherit")
if p != -1 and p < z:
- document.body.insert(z-2, "\\size default")
+ document.body.insert(z - 2, "\\size default")
if q != -1 and q < z:
- document.body.insert(z-2, "\\bar default")
+ document.body.insert(z - 2, "\\bar default")
if r != -1 and r < z:
- document.body.insert(z-2, "\\uuline default")
+ document.body.insert(z - 2, "\\uuline default")
if s != -1 and s < z:
- document.body.insert(z-2, "\\uwave default")
+ document.body.insert(z - 2, "\\uwave default")
if t != -1 and t < z:
- document.body.insert(z-2, "\\strikeout default")
- document.body[i:i+4] = put_cmd_in_ert(LaTeXname + "{")
+ document.body.insert(z - 2, "\\strikeout default")
+ document.body[i:i + 4] = put_cmd_in_ert(LaTeXname + "{")
i += 1
i = find_token(document.body, name + ' on', i)
if i == -1:
return changed
+ j = find_token(document.body, name + ' default', i)
+ k = find_token(document.body, name + ' on', i + 1)
+ # if there is no default set, the style ends with the layout
+ # assure hereby that we found the correct layout end
+ if j != -1 and (j < k or k == -1):
+ document.body[j:j + 1] = put_cmd_in_ert("}")
else:
- j = find_token(document.body, name + ' default', i)
- k = find_token(document.body, name + ' on', i + 1)
- # if there is no default set, the style ends with the layout
- # assure hereby that we found the correct layout end
- if j != -1 and (j < k or k ==-1):
- document.body[j:j+1] = put_cmd_in_ert("}")
+ j = find_token(document.body, '\\end_layout', i)
+ document.body[j:j] = put_cmd_in_ert("}")
+ document.body[i:i + 1] = put_cmd_in_ert(LaTeXname + "{")
+ changed = True
+ i += 1
+
+
+def revert_layout_command(document, name, LaTeXname, position):
+ " Reverts a command from a layout to TeX code "
+ i = position
+ while True:
+ i = find_token(document.body, '\\begin_layout ' + name, i)
+ if i == -1:
+ return
+ k = -1
+ # find the next layout
+ j = i + 1
+ while k == -1:
+ j = find_token(document.body, '\\begin_layout', j)
+ l = len(document.body)
+ # if nothing was found it was the last layout of the document
+ if j == -1:
+ document.body[l - 4:l - 4] = put_cmd_in_ert("}")
+ k = 0
+ # exclude plain layout because this can be TeX code or another inset
+ elif document.body[j] != '\\begin_layout Plain Layout':
+ document.body[j - 2:j - 2] = put_cmd_in_ert("}")
+ k = 0
else:
- j = find_token(document.body, '\\end_layout', i)
- document.body[j:j] = put_cmd_in_ert("}")
- document.body[i:i+1] = put_cmd_in_ert(LaTeXname + "{")
- changed = True
+ j += 1
+ document.body[i] = '\\begin_layout Standard'
+ document.body[i + 1:i + 1] = put_cmd_in_ert(LaTeXname + "{")
i += 1
continue
# don't set a box for longtables, only delete tabularvalignment
# the alignment is 2 lines below \\begin_inset Tabular
- p = document.body[i+2].find("islongtable")
+ p = document.body[i + 2].find("islongtable")
if p > -1:
- q = document.body[i+2].find("tabularvalignment")
+ q = document.body[i + 2].find("tabularvalignment")
if q > -1:
- document.body[i+2] = document.body[i+2][:q-1]
- document.body[i+2] = document.body[i+2] + '>'
+ document.body[i + 2] = document.body[i + 2][:q - 1]
+ document.body[i + 2] = document.body[i + 2] + '>'
i = i + 1
# when no longtable
if p == -1:
tabularvalignment = 'c'
# which valignment is specified?
- m = document.body[i+2].find('tabularvalignment="top"')
+ m = document.body[i + 2].find('tabularvalignment="top"')
if m > -1:
tabularvalignment = 't'
- m = document.body[i+2].find('tabularvalignment="bottom"')
+ m = document.body[ i+ 2].find('tabularvalignment="bottom"')
if m > -1:
tabularvalignment = 'b'
# delete tabularvalignment
- q = document.body[i+2].find("tabularvalignment")
+ q = document.body[i + 2].find("tabularvalignment")
if q > -1:
- document.body[i+2] = document.body[i+2][:q-1]
- document.body[i+2] = document.body[i+2] + '>'
+ document.body[i + 2] = document.body[i + 2][:q - 1]
+ document.body[i + 2] = document.body[i + 2] + '>'
# don't add a box when centered
if tabularvalignment == 'c':
'\\begin_layout Plain Layout\n\n\n\\backslash\n' \
'phantom{\n\\end_layout\n\n\\end_inset\n')
substi = substi.split('\n')
- document.body[i : i+4] = substi
+ document.body[i:i + 4] = substi
i += len(substi)
j = find_token(document.body, "\\end_layout", i)
if j == -1:
'\\begin_layout Plain Layout\n\n' \
'}\n\\end_layout\n\n\\end_inset\n')
substj = substj.split('\n')
- document.body[j : j+4] = substj
+ document.body[j:j + 4] = substj
i += len(substj)
'\\begin_layout Plain Layout\n\n\n\\backslash\n' \
'hphantom{\n\\end_layout\n\n\\end_inset\n')
substi = substi.split('\n')
- document.body[i : i+4] = substi
+ document.body[i:i + 4] = substi
i += len(substi)
j = find_token(document.body, "\\end_layout", i)
if j == -1:
'\\begin_layout Plain Layout\n\n' \
'}\n\\end_layout\n\n\\end_inset\n')
substj = substj.split('\n')
- document.body[j : j+4] = substj
+ document.body[j:j + 4] = substj
i += len(substj)
'\\begin_layout Plain Layout\n\n\n\\backslash\n' \
'vphantom{\n\\end_layout\n\n\\end_inset\n')
substi = substi.split('\n')
- document.body[i : i+4] = substi
+ document.body[i:i + 4] = substi
i += len(substi)
j = find_token(document.body, "\\end_layout", i)
if j == -1:
'\\begin_layout Plain Layout\n\n' \
'}\n\\end_layout\n\n\\end_inset\n')
substj = substj.split('\n')
- document.body[j : j+4] = substj
+ document.body[j:j + 4] = substj
i += len(substj)
ishortcut = get_value(document.header, '\\shortcut', i, k)
if ishortcut != "" and indices == "true":
preamble += "\\newindex[" + iname + "]{" + ishortcut + "}\n"
- del document.header[i:k+1]
+ del document.header[i:k + 1]
i = 0
if preamble != "":
insert_to_preamble(0, document, preamble)
# escape quotes
content = content.replace('"', r'\"')
subst = [old_put_cmd_in_ert("\\sindex[" + itype + "]{" + content + "}")]
- document.body[i:k+1] = subst
+ document.body[i:k + 1] = subst
i = i + 1
i = 0
while True:
j = find_token(document.body, "type", i, k)
del document.body[j]
elif indices == "false":
- del document.body[i:k+1]
+ del document.body[i:k + 1]
else:
subst = [old_put_cmd_in_ert("\\printindex[" + ptype + "]{}")]
- document.body[i:k+1] = subst
+ document.body[i:k + 1] = subst
i = i + 1
continue
ptype = get_value(document.body, 'type', i, k).strip('"')
if indices == "false":
- del document.body[i:k+1]
+ del document.body[i:k + 1]
else:
subst = [old_put_cmd_in_ert("\\printsubindex[" + ptype + "]{}")]
- document.body[i:k+1] = subst
+ document.body[i:k + 1] = subst
i = i + 1
i = i + 1
continue
if indices == "false":
- del document.body[i:k+1]
+ del document.body[i:k + 1]
else:
subst = [old_put_cmd_in_ert("\\" + ctype + "{}")]
- document.body[i:k+1] = subst
+ document.body[i:k + 1] = subst
i = i + 1
if i == -1:
break
# the alignment is 2 lines below \\begin_inset Tabular
- j = document.body[i+2].find("longtabularalignment")
+ j = document.body[i + 2].find("longtabularalignment")
if j == -1:
break
- document.body[i+2] = document.body[i+2][:j-1]
- document.body[i+2] = document.body[i+2] + '>'
+ document.body[i + 2] = document.body[i + 2][:j - 1]
+ document.body[i + 2] = document.body[i + 2] + '>'
i = i + 1
subst = [old_put_cmd_in_ert("\\vspace*{" + length + "}")]
else:
subst = [old_put_cmd_in_ert("\\vspace{" + length + "}")]
- document.body[i:i+2] = subst
+ document.body[i:i + 2] = subst
i = i + 1
protected = (document.body[i].find("\\hspace*{}") != -1)
# only revert if a custom length was set and if
# it used a percent length
- length = get_value(document.body, '\\length', i+1)
+ length = get_value(document.body, '\\length', i + 1)
if length == '':
document.warning("Malformed lyx document: Missing '\\length' in Space inset.")
return
subst = [old_put_cmd_in_ert("\\hspace*{" + length + "}")]
else:
subst = [old_put_cmd_in_ert("\\hspace{" + length + "}")]
- document.body[i:i+3] = subst
+ document.body[i:i + 3] = subst
i = i + 2
if i == -1:
break
protected = (document.body[i].find("\\hspace*{}") != -1)
- length = get_value(document.body, '\\length', i+1)
+ length = get_value(document.body, '\\length', i + 1)
if length == '':
document.warning("Malformed lyx document: Missing '\\length' in Space inset.")
return
subst = [old_put_cmd_in_ert("\\hspace*{" + length + "}")]
else:
subst = [old_put_cmd_in_ert("\\hspace{" + length + "}")]
- document.body[i:i+3] = subst
+ document.body[i:i + 3] = subst
i = i + 2
def convert_author_id(document):
#If the layout is Standard we need to remove it, otherwise there
#will be paragraph breaks that shouldn't be there.
k = find_token(document.body, "\\begin_layout Standard", i)
- if k == i+2:
- del document.body[i : i+3]
- del document.body[j-5 : j-2]
+ if k == i + 2:
+ del document.body[i:i + 3]
+ del document.body[j - 5:j - 2]
i -= 6
else:
del document.body[i]
- del document.body[j-1]
+ del document.body[j - 1]
i -= 2
if found != -1:
has_equal_spacing = True
content = [document.body[i][21:]]
- content += document.body[i+1:j]
+ content += document.body[i + 1:j]
subst = put_cmd_in_ert(content)
- document.body[i:j+1] = subst
+ document.body[i:j + 1] = subst
i += len(subst)
else:
for curline in range(i,j):
if document.body[k].startswith("type"):
typ = document.body[k][4:].strip().strip('"')
if arg != "version" or typ != "lyxinfo":
- i = j+1
+ i = j + 1
continue
# We do not actually know the version of LyX used to produce the document.
s = [version]
# Now we want to check if the line after "\end_inset" is empty. It normally
# is, so we want to remove it, too.
- lastline = j+1
- if document.body[j+1].strip() == "":
- lastline = j+2
+ lastline = j + 1
+ if document.body[j + 1].strip() == "":
+ lastline = j + 2
document.body[i: lastline] = s
- i = i+1
+ i = i + 1
def revert_math_scale(document):
del document.header[i]
+def revert_DIN_C_pagesizes(document):
+ i = 0
+ " Revert DIN C page sizes to default "
+ i = find_token(document.header, '\\papersize', 0)
+ if i != -1:
+ size = document.header[i][11:]
+ if size == "c0paper" or size == "c1paper" or size == "c2paper" \
+ or size == "c3paper" or size == "c4paper" or size == "c5paper" \
+ or size == "c6paper":
+ del document.header[i]
+
+
def convert_html_quotes(document):
" Remove quotes around html_latex_start and html_latex_end "
# only revert frameless boxes without an inner box
i = find_token(document.body, '\\begin_inset Box Frameless', i)
if i == -1:
+ # remove the option use_makebox
+ revert_use_makebox(document)
return
- else:
- z = find_end_of_inset(document.body, i)
- if z == -1:
- document.warning("Malformed LyX document: Can't find end of box inset.")
+ z = find_end_of_inset(document.body, i)
+ if z == -1:
+ document.warning("Malformed LyX document: Can't find end of box inset.")
+ return
+ j = find_token(document.body, 'use_makebox 1', i)
+ # assure we found the makebox of the current box
+ if j < z and j != -1:
+ y = find_token(document.body, "\\begin_layout", i)
+ if y > z or y == -1:
+ document.warning("Malformed LyX document: Can't find layout in box.")
return
- j = find_token(document.body, 'use_makebox 1', i)
- # assure we found the makebox of the current box
- if j > i + 7 or j == -1:
- return
- else:
- # remove the \end_inset
- document.body[z - 2:z + 1] = put_cmd_in_ert("}")
- # determine the alignment
- k = find_token(document.body, 'hor_pos', j - 4)
- align = document.body[k][9]
- # determine the width
- l = find_token(document.body, 'width "', j + 1)
- length = document.body[l][7:]
- # remove trailing '"'
- length = length[:-1]
- # latex_length returns "bool,length"
- length = latex_length(length).split(",")[1]
- subst = "\\makebox[" + length + "][" \
- + align + "]{"
- document.body[i:i+13] = put_cmd_in_ert(subst)
+ # remove the \end_layout \end_inset pair
+ document.body[z - 2:z + 1] = put_cmd_in_ert("}")
+ # determine the alignment
+ k = find_token(document.body, 'hor_pos', j - 4)
+ align = document.body[k][9]
+ # determine the width
+ l = find_token(document.body, 'width "', j + 1)
+ length = document.body[l][7:]
+ # remove trailing '"'
+ length = length[:-1]
+ # latex_length returns "bool,length"
+ length = latex_length(length).split(",")[1]
+ subst = "\\makebox[" + length + "][" \
+ + align + "]{"
+ document.body[i:y + 1] = put_cmd_in_ert(subst)
i += 1
+def revert_use_makebox(document):
+ " Deletes use_makebox option of boxes "
+ h = 0
+ while 1:
+ # remove the option use_makebox
+ h = find_token(document.body, 'use_makebox', 0)
+ if h == -1:
+ return
+ del document.body[h]
+ h += 1
+
+
+def convert_use_makebox(document):
+ " Adds use_makebox option for boxes "
+ i = 0
+ while 1:
+ # remove the option use_makebox
+ i = find_token(document.body, '\\begin_inset Box', i)
+ if i == -1:
+ return
+ k = find_token(document.body, 'use_parbox', i)
+ if k == -1:
+ document.warning("Malformed LyX document: Can't find use_parbox statement in box.")
+ return
+ document.body.insert(k + 1, "use_makebox 0")
+ i = k + 1
+
+
def revert_IEEEtran(document):
" Convert IEEEtran layouts and styles to TeX code "
+ if document.textclass != "IEEEtran":
+ return
revert_flex_inset(document, "IEEE membership", "\\IEEEmembership", 0)
revert_flex_inset(document, "Lowercase", "\\MakeLowercase", 0)
+ layouts = ("Special Paper Notice", "After Title Text", "Publication ID",
+ "Page headings", "Biography without photo")
+ latexcmd = {"Special Paper Notice": "\\IEEEspecialpapernotice",
+ "After Title Text": "\\IEEEaftertitletext",
+ "Publication ID": "\\IEEEpubid"}
+ obsoletedby = {"Page headings": "MarkBoth",
+ "Biography without photo": "BiographyNoPhoto"}
+ for layout in layouts:
+ i = 0
+ while True:
+ i = find_token(document.body, '\\begin_layout ' + layout, i)
+ if i == -1:
+ break
+ j = find_end_of(document.body, i, '\\begin_layout', '\\end_layout')
+ if j == -1:
+ document.warning("Malformed LyX document: Can't find end of " + layout + " layout.")
+ i += 1
+ continue
+ if layout in obsoletedby:
+ document.body[i] = "\\begin_layout " + obsoletedby[layout]
+ i = j
+ else:
+ content = lyx2latex(document, document.body[i:j + 1])
+ add_to_preamble(document, [latexcmd[layout] + "{" + content + "}"])
+ del document.body[i:j + 1]
+
+
+def revert_nameref(document):
+ " Convert namerefs to regular references "
+ cmds = ["Nameref", "nameref"]
+ foundone = False
+ rx = re.compile(r'reference "(.*)"')
+ for cmd in cmds:
+ i = 0
+ oldcmd = "LatexCommand " + cmd
+ while 1:
+ # It seems better to look for this, as most of the reference
+ # insets won't be ones we care about.
+ i = find_token(document.body, oldcmd, i)
+ if i == -1:
+ break
+ cmdloc = i
+ i += 1
+ # Make sure it is actually in an inset!
+ # We could just check document.lines[i-1], but that relies
+ # upon something that might easily change.
+ # We'll look back a few lines.
+ stins = cmdloc - 10
+ if stins < 0:
+ stins = 0
+ stins = find_token(document.body, "\\begin_inset CommandInset ref", stins)
+ if stins == -1 or stins > cmdloc:
+ continue
+ endins = find_end_of_inset(document.body, stins)
+ if endins == -1:
+ document.warning("Can't find end of inset at line " + stins + "!!")
+ continue
+ if endins < cmdloc:
+ continue
+ refline = find_token(document.body, "reference", stins)
+ if refline == -1 or refline > endins:
+ document.warning("Can't find reference for inset at line " + stinst + "!!")
+ continue
+ m = rx.match(document.body[refline])
+ if not m:
+ document.warning("Can't match reference line: " + document.body[ref])
+ continue
+ foundone = True
+ ref = m.group(1)
+ newcontent = ['\\begin_inset ERT', 'status collapsed', '', \
+ '\\begin_layout Plain Layout', '', '\\backslash', \
+ cmd + '{' + ref + '}', '\\end_layout', '', '\\end_inset']
+ document.body[stins:endins + 1] = newcontent
+ if foundone:
+ add_to_preamble(document, "\usepackage{nameref}")
+
+
+def remove_Nameref(document):
+ " Convert Nameref commands to nameref commands "
+ i = 0
+ while 1:
+ # It seems better to look for this, as most of the reference
+ # insets won't be ones we care about.
+ i = find_token(document.body, "LatexCommand Nameref" , i)
+ if i == -1:
+ break
+ cmdloc = i
+ i += 1
+
+ # Make sure it is actually in an inset!
+ # We could just check document.lines[i-1], but that relies
+ # upon something that might easily change.
+ # We'll look back a few lines.
+ stins = cmdloc - 10
+ if stins < 0:
+ stins = 0
+ stins = find_token(document.body, "\\begin_inset CommandInset ref", stins)
+ if stins == -1 or stins > cmdloc:
+ continue
+ endins = find_end_of_inset(document.body, stins)
+ if endins == -1:
+ document.warning("Can't find end of inset at line " + stins + "!!")
+ continue
+ if endins < cmdloc:
+ continue
+ document.body[cmdloc] = "LatexCommand nameref"
+
+
+def revert_mathrsfs(document):
+ " Load mathrsfs if \mathrsfs us use in the document "
+ i = 0
+ end = len(document.body) - 1
+ while True:
+ j = document.body[i].find("\\mathscr{")
+ if j != -1:
+ add_to_preamble(document, ["% this command was inserted by lyx2lyx"])
+ add_to_preamble(document, ["\\usepackage{mathrsfs}"])
+ break
+ if i == end:
+ break
+ i += 1
##
[391, []],
[392, [convert_beamer_args]],
[393, [convert_optarg]],
- [394, []]
+ [394, [convert_use_makebox]],
+ [395, []],
+ [396, []],
+ [397, [remove_Nameref]],
+ [398, []]
]
-revert = [[393, [revert_makebox]],
+revert = [[397, [revert_mathrsfs]],
+ [396, []],
+ [395, [revert_nameref]],
+ [394, [revert_DIN_C_pagesizes]],
+ [393, [revert_makebox]],
[392, [revert_argument]],
[391, [revert_beamer_args]],
[390, [revert_align_decimal, revert_IEEEtran]],